Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2009-06-10 23:15:27 +0400
committerJoseph Eagar <joeedh@gmail.com>2009-06-10 23:15:27 +0400
commitfc79b456fdb505740495626f7d97145712c6723f (patch)
treed24697814ca59309f796d99b553b292b50847e7a
parent994a8bd80f67910791a3ffd2b92755fefe94eaf1 (diff)
parentfba6a9931c81e8cc6a3ea5d3cbd466f2d759c514 (diff)
merge with 2.5 at r20783
-rw-r--r--CMake/macros.cmake19
-rw-r--r--CMakeLists.txt29
-rw-r--r--SConstruct1
-rw-r--r--config/darwin-config.py2
-rw-r--r--config/irix6-config.py7
-rw-r--r--config/linux2-config.py20
-rw-r--r--config/linuxcross-config.py2
-rw-r--r--config/openbsd3-config.py2
-rw-r--r--config/sunos5-config.py2
-rw-r--r--config/win32-mingw-config.py2
-rw-r--r--config/win32-vc-config.py2
-rw-r--r--config/win64-vc-config.py6
-rw-r--r--extern/CMakeLists.txt11
-rw-r--r--extern/Makefile7
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp60
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h29
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h2
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp216
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h43
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp18
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp76
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h11
-rw-r--r--extern/bullet2/src/CMakeLists.txt5
-rw-r--r--extern/bullet2/src/LinearMath/btScalar.h4
-rw-r--r--extern/libopenjpeg/jp2.c1
-rw-r--r--intern/CMakeLists.txt16
-rw-r--r--intern/SoundSystem/fmod/Makefile43
-rw-r--r--intern/SoundSystem/fmod/SND_FmodDevice.cpp574
-rw-r--r--intern/SoundSystem/fmod/SND_FmodDevice.h103
-rw-r--r--intern/SoundSystem/openal/SND_OpenALDevice.cpp290
-rw-r--r--intern/SoundSystem/sdl/SND_SDLCDDevice.cpp2
-rw-r--r--intern/ghost/intern/GHOST_SystemCarbon.cpp24
-rw-r--r--intern/ghost/intern/GHOST_SystemCarbon.h8
-rw-r--r--intern/ghost/intern/GHOST_WindowWin32.cpp86
-rw-r--r--intern/guardedalloc/intern/mmap_win.c1
-rw-r--r--projectfiles_vc9/blender/blender.sln17
-rw-r--r--projectfiles_vc9/blender/editors/ED_editors.vcproj16
-rw-r--r--projectfiles_vc9/gameengine/converter/KX_converter.vcproj16
-rw-r--r--projectfiles_vc9/gameengine/expression/EXP_expressions.vcproj13
-rw-r--r--projectfiles_vc9/gameengine/gamelogic/SCA_GameLogic.vcproj13
-rw-r--r--projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj3
-rw-r--r--projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj8
-rw-r--r--projectfiles_vc9/gameengine/ketsji/network/KX_network.vcproj13
-rw-r--r--projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj12
-rw-r--r--projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj13
-rw-r--r--projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj12
-rw-r--r--projectfiles_vc9/gameengine/scenegraph/SG_SceneGraph.vcproj9
-rw-r--r--projectfiles_vc9/gameengine/videotexture/TEX_Video.vcproj1
-rw-r--r--release/Makefile2
-rw-r--r--release/datafiles/blenderbuttonsbin146052 -> 177005 bytes
-rw-r--r--release/datafiles/preview.blendbin446288 -> 567892 bytes
-rw-r--r--release/datafiles/splash.jpgbin288981 -> 196913 bytes
-rw-r--r--release/scripts/3ds_export.py12
-rw-r--r--release/scripts/3ds_import.py14
-rw-r--r--release/scripts/DirectX8Exporter.py3
-rw-r--r--release/scripts/add_mesh_torus.py8
-rw-r--r--release/scripts/animation_clean.py192
-rw-r--r--release/scripts/bpymodules/BPyMathutils.py3
-rw-r--r--release/scripts/bpymodules/BPyMesh.py6
-rw-r--r--release/scripts/bpymodules/BPyMesh_octree.py332
-rw-r--r--release/scripts/bpymodules/BPyMesh_redux.py5
-rw-r--r--release/scripts/bpymodules/BPyWindow.py2
-rw-r--r--release/scripts/bpymodules/dxfLibrary.py64
-rw-r--r--release/scripts/bpymodules/mesh_gradient.py6
-rw-r--r--release/scripts/bpymodules/paths_svg2obj.py41
-rw-r--r--release/scripts/c3d_import.py7
-rw-r--r--release/scripts/console.py75
-rw-r--r--release/scripts/envelope_symmetry.py2
-rw-r--r--release/scripts/export_dxf.py2822
-rw-r--r--release/scripts/export_fbx.py271
-rw-r--r--release/scripts/export_obj.py106
-rw-r--r--release/scripts/help_bpy_api.py12
-rw-r--r--release/scripts/help_getting_started.py12
-rw-r--r--release/scripts/help_manual.py12
-rw-r--r--release/scripts/help_release_notes.py10
-rw-r--r--release/scripts/help_tutorials.py10
-rw-r--r--release/scripts/help_web_blender.py10
-rw-r--r--release/scripts/help_web_devcomm.py10
-rw-r--r--release/scripts/help_web_eshop.py10
-rw-r--r--release/scripts/help_web_usercomm.py10
-rw-r--r--release/scripts/image_2d_cutout.py559
-rw-r--r--release/scripts/import_dxf.py87
-rw-r--r--release/scripts/import_obj.py70
-rw-r--r--release/scripts/import_web3d.py2
-rw-r--r--release/scripts/lightwave_export.py61
-rw-r--r--release/scripts/md2_export.py103
-rw-r--r--release/scripts/mesh_mirror_tool.py8
-rw-r--r--release/scripts/mesh_poly_reduce_grid.py4
-rw-r--r--release/scripts/mesh_skin.py8
-rw-r--r--release/scripts/mesh_unfolder.py6
-rw-r--r--release/scripts/object_active_to_other.py58
-rw-r--r--release/scripts/object_cookie_cutter.py24
-rw-r--r--release/scripts/object_drop.py64
-rw-r--r--release/scripts/ply_import.py2
-rw-r--r--release/scripts/rvk1_torvk2.py394
-rw-r--r--release/scripts/scripttemplate_gamelogic.py52
-rw-r--r--release/scripts/scripttemplate_gamelogic_basic.py14
-rw-r--r--release/scripts/scripttemplate_gamelogic_module.py45
-rw-r--r--release/scripts/textplugin_convert_ge.py863
-rw-r--r--release/scripts/uvcalc_quad_clickproj.py4
-rw-r--r--release/scripts/uvcalc_smart_project.py18
-rw-r--r--release/scripts/vertexpaint_selfshadow_ao.py7
-rw-r--r--release/scripts/wizard_bolt_factory.py2804
-rw-r--r--release/scripts/wizard_curve2tree.py34
-rw-r--r--release/scripts/wizard_landscape_ant.py2148
-rw-r--r--release/scripts/xfig_export.py234
-rw-r--r--release/ui/buttons_data_armature.py73
-rw-r--r--release/ui/buttons_data_bone.py27
-rw-r--r--release/ui/buttons_data_camera.py101
-rw-r--r--release/ui/buttons_data_curve.py201
-rw-r--r--release/ui/buttons_data_empty.py7
-rw-r--r--release/ui/buttons_data_lamp.py148
-rw-r--r--release/ui/buttons_data_lattice.py52
-rw-r--r--release/ui/buttons_data_modifier.py413
-rw-r--r--release/ui/buttons_data_text.py71
-rw-r--r--release/ui/buttons_material.py183
-rw-r--r--release/ui/buttons_objects.py66
-rw-r--r--release/ui/buttons_scene.py198
-rw-r--r--release/ui/buttons_world.py122
-rw-r--r--release/ui/space_sequencer.py526
-rw-r--r--release/ui/space_text.py2
-rw-r--r--release/windows/installer/00.blender.nsi450
-rw-r--r--release/windows/installer/00.checked.bmpbin2610 -> 0 bytes
-rw-r--r--release/windows/installer/00.header.bmpbin25818 -> 0 bytes
-rw-r--r--release/windows/installer/00.installer.adx314
-rw-r--r--release/windows/installer/00.installer.icobin25214 -> 0 bytes
-rw-r--r--release/windows/installer/00.sconsblender.nsi425
-rw-r--r--release/windows/installer/00.unchecked.bmpbin358 -> 0 bytes
-rw-r--r--release/windows/installer/01.installer.bmpbin154542 -> 0 bytes
-rw-r--r--release/windows/installer/01.welcome.rtfbin471 -> 0 bytes
-rw-r--r--release/windows/installer/02.copyright.txt56
-rw-r--r--release/windows/installer/03.readme.txt54
-rw-r--r--release/windows/installer/04.folder.rtfbin416 -> 0 bytes
-rw-r--r--release/windows/installer/05.progress.rtfbin214 -> 0 bytes
-rw-r--r--release/windows/installer/06.complete.rtfbin361 -> 0 bytes
-rw-r--r--release/windows/installer/data.ini34
-rw-r--r--release/windows/installer/input/24bits-image.bmpbin2786 -> 0 bytes
-rw-r--r--release/windows/publ_installer/00.installer.adx308
-rw-r--r--release/windows/publ_installer/00.installer.icobin1078 -> 0 bytes
-rw-r--r--release/windows/publ_installer/01.installer.bmpbin612 -> 0 bytes
-rw-r--r--release/windows/publ_installer/01.welcome.rtfbin624 -> 0 bytes
-rw-r--r--release/windows/publ_installer/02.copyright.txt56
-rw-r--r--release/windows/publ_installer/03.readme.txt54
-rw-r--r--release/windows/publ_installer/04.folder.rtfbin418 -> 0 bytes
-rw-r--r--release/windows/publ_installer/05.progress.rtfbin216 -> 0 bytes
-rw-r--r--release/windows/publ_installer/06.complete.rtfbin431 -> 0 bytes
-rw-r--r--source/CMakeLists.txt7
-rw-r--r--source/Makefile13
-rw-r--r--source/blender/CMakeLists.txt29
-rw-r--r--source/blender/Makefile2
-rw-r--r--source/blender/SConscript3
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h3
-rw-r--r--source/blender/blenkernel/BKE_context.h22
-rw-r--r--source/blender/blenkernel/BKE_library.h1
-rw-r--r--source/blender/blenkernel/BKE_modifier.h3
-rw-r--r--source/blender/blenkernel/BKE_multires.h9
-rw-r--r--source/blender/blenkernel/BKE_object.h1
-rw-r--r--source/blender/blenkernel/BKE_particle.h2
-rw-r--r--source/blender/blenkernel/BKE_scene.h1
-rw-r--r--source/blender/blenkernel/BKE_sequence.h8
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c31
-rw-r--r--source/blender/blenkernel/intern/Makefile2
-rw-r--r--source/blender/blenkernel/intern/blender.c15
-rw-r--r--source/blender/blenkernel/intern/bmfont.c2
-rw-r--r--source/blender/blenkernel/intern/bullet.c1
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c18
-rw-r--r--source/blender/blenkernel/intern/cloth.c11
-rw-r--r--source/blender/blenkernel/intern/constraint.c2
-rw-r--r--source/blender/blenkernel/intern/context.c87
-rw-r--r--source/blender/blenkernel/intern/customdata.c22
-rw-r--r--source/blender/blenkernel/intern/displist.c8
-rw-r--r--source/blender/blenkernel/intern/effect.c10
-rw-r--r--source/blender/blenkernel/intern/exotic.c18
-rw-r--r--source/blender/blenkernel/intern/fcurve.c58
-rw-r--r--source/blender/blenkernel/intern/font.c6
-rw-r--r--source/blender/blenkernel/intern/image.c9
-rw-r--r--source/blender/blenkernel/intern/ipo.c3
-rw-r--r--source/blender/blenkernel/intern/lattice.c2
-rw-r--r--source/blender/blenkernel/intern/library.c6
-rw-r--r--source/blender/blenkernel/intern/mball.c5
-rw-r--r--source/blender/blenkernel/intern/modifier.c154
-rw-r--r--source/blender/blenkernel/intern/multires.c31
-rw-r--r--source/blender/blenkernel/intern/node.c17
-rw-r--r--source/blender/blenkernel/intern/object.c17
-rw-r--r--source/blender/blenkernel/intern/particle.c57
-rw-r--r--source/blender/blenkernel/intern/particle_system.c47
-rw-r--r--source/blender/blenkernel/intern/pointcache.c2
-rw-r--r--source/blender/blenkernel/intern/sca.c11
-rw-r--r--source/blender/blenkernel/intern/scene.c20
-rw-r--r--source/blender/blenkernel/intern/sequence.c284
-rw-r--r--source/blender/blenkernel/intern/shrinkwrap.c2
-rw-r--r--source/blender/blenkernel/intern/softbody.c8
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c13
-rw-r--r--source/blender/blenkernel/intern/world.c4
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c3
-rw-r--r--source/blender/blenlib/BLI_arithb.h2
-rw-r--r--source/blender/blenlib/BLI_string.h1
-rw-r--r--source/blender/blenlib/BLI_threads.h4
-rw-r--r--source/blender/blenlib/BLI_vfontdata.h2
-rw-r--r--source/blender/blenlib/intern/arithb.c16
-rw-r--r--source/blender/blenlib/intern/rct.c41
-rw-r--r--source/blender/blenlib/intern/storage.c7
-rw-r--r--source/blender/blenlib/intern/string.c48
-rw-r--r--source/blender/blenlib/intern/threads.c4
-rw-r--r--source/blender/blenlib/intern/util.c3
-rw-r--r--source/blender/blenloader/intern/readfile.c162
-rw-r--r--source/blender/bmesh/intern/bmesh_opdefines.c2
-rw-r--r--source/blender/editors/animation/anim_draw.c53
-rw-r--r--source/blender/editors/animation/anim_ipo_utils.c1
-rw-r--r--source/blender/editors/animation/keyframing.c24
-rw-r--r--source/blender/editors/armature/editarmature.c1
-rw-r--r--source/blender/editors/armature/editarmature_sketch.c2
-rw-r--r--source/blender/editors/armature/poselib.c4
-rw-r--r--source/blender/editors/armature/poseobject.c27
-rw-r--r--source/blender/editors/armature/reeb.c2
-rw-r--r--source/blender/editors/curve/editfont.c4
-rw-r--r--source/blender/editors/datafiles/B.blend.c5471
-rw-r--r--source/blender/editors/datafiles/blenderbuttons.c10099
-rw-r--r--source/blender/editors/datafiles/preview.blend.c24948
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c12
-rw-r--r--source/blender/editors/include/ED_fileselect.h5
-rw-r--r--source/blender/editors/include/ED_object.h29
-rw-r--r--source/blender/editors/include/ED_previewrender.h1
-rw-r--r--source/blender/editors/include/ED_screen.h2
-rw-r--r--source/blender/editors/include/ED_screen_types.h34
-rw-r--r--source/blender/editors/include/UI_interface.h105
-rw-r--r--source/blender/editors/include/UI_resources.h231
-rw-r--r--source/blender/editors/include/UI_view2d.h5
-rw-r--r--source/blender/editors/interface/interface.c105
-rw-r--r--source/blender/editors/interface/interface_api.c49
-rw-r--r--source/blender/editors/interface/interface_draw.c10
-rw-r--r--source/blender/editors/interface/interface_handlers.c480
-rw-r--r--source/blender/editors/interface/interface_icons.c4
-rw-r--r--source/blender/editors/interface/interface_intern.h30
-rw-r--r--source/blender/editors/interface/interface_layout.c433
-rw-r--r--source/blender/editors/interface/interface_panel.c4
-rw-r--r--source/blender/editors/interface/interface_regions.c445
-rw-r--r--source/blender/editors/interface/interface_style.c6
-rw-r--r--source/blender/editors/interface/interface_templates.c1207
-rw-r--r--source/blender/editors/interface/interface_utils.c444
-rw-r--r--source/blender/editors/interface/interface_widgets.c458
-rw-r--r--source/blender/editors/interface/view2d.c96
-rw-r--r--source/blender/editors/mesh/editdeform.c61
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c81
-rw-r--r--source/blender/editors/mesh/meshtools.c12
-rw-r--r--source/blender/editors/object/editconstraint.c293
-rw-r--r--source/blender/editors/object/object_edit.c23
-rw-r--r--source/blender/editors/object/object_intern.h5
-rw-r--r--source/blender/editors/object/object_modifier.c538
-rw-r--r--source/blender/editors/object/object_ops.c4
-rw-r--r--source/blender/editors/physics/editparticle.c15
-rw-r--r--source/blender/editors/preview/previewrender.c140
-rw-r--r--source/blender/editors/preview/previewrender_intern.h32
-rw-r--r--source/blender/editors/screen/area.c238
-rw-r--r--source/blender/editors/screen/screen_edit.c82
-rw-r--r--source/blender/editors/screen/screen_ops.c439
-rw-r--r--source/blender/editors/screen/screendump.c2
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c197
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c2
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c7
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c695
-rw-r--r--source/blender/editors/space_buttons/buttons_header.c99
-rw-r--r--source/blender/editors/space_buttons/buttons_intern.h31
-rw-r--r--source/blender/editors/space_buttons/buttons_ops.c194
-rw-r--r--source/blender/editors/space_buttons/space_buttons.c131
-rw-r--r--source/blender/editors/space_file/file_draw.c12
-rw-r--r--source/blender/editors/space_file/file_header.c39
-rw-r--r--source/blender/editors/space_file/file_ops.c55
-rw-r--r--source/blender/editors/space_file/filelist.c105
-rw-r--r--source/blender/editors/space_file/filelist.h3
-rw-r--r--source/blender/editors/space_file/filesel.c31
-rw-r--r--source/blender/editors/space_file/space_file.c2
-rw-r--r--source/blender/editors/space_graph/graph_draw.c2
-rw-r--r--source/blender/editors/space_image/image_header.c23
-rw-r--r--source/blender/editors/space_image/image_ops.c7
-rw-r--r--source/blender/editors/space_info/info_header.c64
-rw-r--r--source/blender/editors/space_info/space_info.c3
-rw-r--r--source/blender/editors/space_node/node_edit.c52
-rw-r--r--source/blender/editors/space_outliner/outliner.c28
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c10
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c36
-rw-r--r--source/blender/editors/space_sequencer/sequencer_buttons.c136
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c96
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c82
-rw-r--r--source/blender/editors/space_sequencer/sequencer_header.c454
-rw-r--r--source/blender/editors/space_sequencer/sequencer_intern.h13
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c4
-rw-r--r--source/blender/editors/space_sequencer/space_sequencer.c98
-rw-r--r--source/blender/editors/space_text/text_draw.c4
-rw-r--r--source/blender/editors/space_text/text_ops.c2
-rw-r--r--source/blender/editors/space_time/space_time.c4
-rw-r--r--source/blender/editors/space_time/time_header.c58
-rw-r--r--source/blender/editors/space_view3d/drawobject.c7
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c5
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c104
-rw-r--r--source/blender/editors/space_view3d/view3d_toolbar.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c1
-rw-r--r--source/blender/editors/uvedit/uvedit_parametrizer.c8
-rw-r--r--source/blender/gpu/GPU_material.h1
-rw-r--r--source/blender/gpu/intern/gpu_draw.c21
-rw-r--r--source/blender/gpu/intern/gpu_material.c10
-rw-r--r--source/blender/imbuf/IMB_imbuf.h1
-rw-r--r--source/blender/imbuf/intern/anim.c5
-rw-r--r--source/blender/imbuf/intern/imageprocess.c77
-rw-r--r--source/blender/imbuf/intern/openexr/openexr_api.cpp19
-rw-r--r--source/blender/imbuf/intern/rotate.c6
-rw-r--r--source/blender/imbuf/intern/scaling.c67
-rw-r--r--source/blender/makesdna/CMakeLists.txt2
-rw-r--r--source/blender/makesdna/DNA_actuator_types.h9
-rw-r--r--source/blender/makesdna/DNA_anim_types.h4
-rw-r--r--source/blender/makesdna/DNA_controller_types.h7
-rw-r--r--source/blender/makesdna/DNA_object_force.h5
-rw-r--r--source/blender/makesdna/DNA_object_types.h4
-rw-r--r--source/blender/makesdna/DNA_particle_types.h23
-rw-r--r--source/blender/makesdna/DNA_scene_types.h8
-rw-r--r--source/blender/makesdna/DNA_sensor_types.h3
-rw-r--r--source/blender/makesdna/DNA_sequence_types.h3
-rw-r--r--source/blender/makesdna/DNA_space_types.h38
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h1
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h3
-rw-r--r--source/blender/makesdna/DNA_windowmanager_types.h2
-rw-r--r--source/blender/makesdna/DNA_world_types.h1
-rw-r--r--source/blender/makesrna/CMakeLists.txt2
-rw-r--r--source/blender/makesrna/RNA_access.h190
-rw-r--r--source/blender/makesrna/RNA_define.h6
-rw-r--r--source/blender/makesrna/RNA_enum_types.h1
-rw-r--r--source/blender/makesrna/RNA_types.h10
-rw-r--r--source/blender/makesrna/intern/CMakeLists.txt20
-rw-r--r--source/blender/makesrna/intern/Makefile20
-rw-r--r--source/blender/makesrna/intern/SConscript19
-rw-r--r--source/blender/makesrna/intern/makesrna.c48
-rw-r--r--source/blender/makesrna/intern/rna_ID.c49
-rw-r--r--source/blender/makesrna/intern/rna_access.c158
-rw-r--r--source/blender/makesrna/intern/rna_action.c1
-rw-r--r--source/blender/makesrna/intern/rna_armature.c2
-rw-r--r--source/blender/makesrna/intern/rna_brush.c5
-rw-r--r--source/blender/makesrna/intern/rna_camera.c6
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c636
-rw-r--r--source/blender/makesrna/intern/rna_context.c18
-rw-r--r--source/blender/makesrna/intern/rna_controller.c1
-rw-r--r--source/blender/makesrna/intern/rna_curve.c75
-rw-r--r--source/blender/makesrna/intern/rna_define.c29
-rw-r--r--source/blender/makesrna/intern/rna_fcurve.c1
-rw-r--r--source/blender/makesrna/intern/rna_group.c1
-rw-r--r--source/blender/makesrna/intern/rna_image.c1
-rw-r--r--source/blender/makesrna/intern/rna_internal.h2
-rw-r--r--source/blender/makesrna/intern/rna_internal_types.h6
-rw-r--r--source/blender/makesrna/intern/rna_key.c4
-rw-r--r--source/blender/makesrna/intern/rna_lamp.c26
-rw-r--r--source/blender/makesrna/intern/rna_lattice.c1
-rw-r--r--source/blender/makesrna/intern/rna_main.c3
-rw-r--r--source/blender/makesrna/intern/rna_material.c123
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c32
-rw-r--r--source/blender/makesrna/intern/rna_meta.c4
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c284
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c1095
-rw-r--r--source/blender/makesrna/intern/rna_nodetree_types.h215
-rw-r--r--source/blender/makesrna/intern/rna_object.c232
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c234
-rw-r--r--source/blender/makesrna/intern/rna_particle.c423
-rw-r--r--source/blender/makesrna/intern/rna_pose.c1
-rw-r--r--source/blender/makesrna/intern/rna_rna.c21
-rw-r--r--source/blender/makesrna/intern/rna_scene.c203
-rw-r--r--source/blender/makesrna/intern/rna_screen.c1
-rw-r--r--source/blender/makesrna/intern/rna_scriptlink.c1
-rw-r--r--source/blender/makesrna/intern/rna_sensor.c1
-rw-r--r--source/blender/makesrna/intern/rna_sequence.c81
-rw-r--r--source/blender/makesrna/intern/rna_sound.c17
-rw-r--r--source/blender/makesrna/intern/rna_space.c383
-rw-r--r--source/blender/makesrna/intern/rna_text.c2
-rw-r--r--source/blender/makesrna/intern/rna_texture.c222
-rw-r--r--source/blender/makesrna/intern/rna_ui.c145
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c20
-rw-r--r--source/blender/makesrna/intern/rna_vfont.c1
-rw-r--r--source/blender/makesrna/intern/rna_wm.c20
-rw-r--r--source/blender/makesrna/intern/rna_world.c22
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_normalize.c19
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_scale.c4
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c11
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_material.c2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_math.c2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_bricks.c18
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_translate.c2
-rw-r--r--source/blender/python/intern/bpy_interface.c7
-rw-r--r--source/blender/python/intern/bpy_operator.c71
-rw-r--r--source/blender/python/intern/bpy_operator.h3
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c12
-rw-r--r--source/blender/python/intern/bpy_rna.c154
-rw-r--r--source/blender/python/intern/bpy_rna.h1
-rw-r--r--source/blender/python/intern/bpy_ui.c31
-rw-r--r--source/blender/python/intern/bpy_util.c9
-rw-r--r--source/blender/python/intern/bpy_util.h4
-rw-r--r--source/blender/render/CMakeLists.txt7
-rw-r--r--source/blender/render/SConscript5
-rw-r--r--source/blender/render/extern/include/RE_shader_ext.h1
-rw-r--r--source/blender/render/intern/source/Makefile1
-rw-r--r--source/blender/render/intern/source/convertblender.c44
-rw-r--r--source/blender/render/intern/source/occlusion.c2
-rw-r--r--source/blender/render/intern/source/pipeline.c171
-rw-r--r--source/blender/render/intern/source/rayshade.c35
-rw-r--r--source/blender/render/intern/source/rendercore.c8
-rw-r--r--source/blender/render/intern/source/shadeoutput.c5
-rw-r--r--source/blender/render/intern/source/texture.c4
-rw-r--r--source/blender/windowmanager/WM_api.h2
-rw-r--r--source/blender/windowmanager/WM_types.h9
-rw-r--r--source/blender/windowmanager/intern/wm.c24
-rw-r--r--source/blender/windowmanager/intern/wm_cursors.c7
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c41
-rw-r--r--source/blender/windowmanager/intern/wm_files.c1
-rw-r--r--source/blender/windowmanager/intern/wm_jobs.c60
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c153
-rw-r--r--source/blender/windowmanager/intern/wm_subwindow.c10
-rw-r--r--source/blender/windowmanager/intern/wm_window.c8
-rw-r--r--source/blender/windowmanager/wm.h1
-rw-r--r--source/blender/windowmanager/wm_event_types.h5
-rw-r--r--source/blender/yafray/CMakeLists.txt35
-rw-r--r--source/blender/yafray/Makefile31
-rw-r--r--source/blender/yafray/SConscript9
-rw-r--r--source/blender/yafray/YafRay_Api.h15
-rw-r--r--source/blender/yafray/intern/Makefile43
-rw-r--r--source/blender/yafray/intern/api.cpp14
-rw-r--r--source/blender/yafray/intern/export_File.cpp2060
-rw-r--r--source/blender/yafray/intern/export_File.h34
-rw-r--r--source/blender/yafray/intern/export_Plugin.cpp1990
-rw-r--r--source/blender/yafray/intern/export_Plugin.h78
-rw-r--r--source/blender/yafray/intern/yafexternal.cpp155
-rw-r--r--source/blender/yafray/intern/yafexternal.h186
-rw-r--r--source/blender/yafray/intern/yafray_Render.cpp239
-rw-r--r--source/blender/yafray/intern/yafray_Render.h110
-rw-r--r--source/creator/CMakeLists.txt8
-rw-r--r--source/creator/buildinfo.c10
-rw-r--r--source/creator/creator.c37
-rw-r--r--source/darwin/blender.app/Contents/Resources/blender file icon.icnsbin48363 -> 145836 bytes
-rw-r--r--source/darwin/blender.app/Contents/Resources/blender icon.icnsbin43688 -> 189097 bytes
-rw-r--r--source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icnsbin43688 -> 189097 bytes
-rw-r--r--source/darwin/blendercreator.app/Contents/Resources/blender file icon.icnsbin48363 -> 145836 bytes
-rw-r--r--source/darwin/blenderplayer.app/Contents/Resources/blender file icon.icnsbin48363 -> 145836 bytes
-rw-r--r--source/darwin/blenderplayer.app/Contents/Resources/blender player icon.icnsbin43688 -> 189097 bytes
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp21
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp4
-rw-r--r--source/gameengine/CMakeLists.txt36
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.cpp55
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.h1
-rw-r--r--source/gameengine/Converter/BL_ArmatureObject.cpp15
-rw-r--r--source/gameengine/Converter/BL_ArmatureObject.h2
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp244
-rw-r--r--source/gameengine/Converter/BL_DeformableGameObject.cpp31
-rw-r--r--source/gameengine/Converter/BL_DeformableGameObject.h7
-rw-r--r--source/gameengine/Converter/BL_MeshDeformer.cpp19
-rw-r--r--source/gameengine/Converter/BL_MeshDeformer.h4
-rw-r--r--source/gameengine/Converter/BL_ModifierDeformer.cpp183
-rw-r--r--source/gameengine/Converter/BL_ModifierDeformer.h107
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.cpp48
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.h1
-rw-r--r--source/gameengine/Converter/BL_ShapeDeformer.cpp20
-rw-r--r--source/gameengine/Converter/BL_ShapeDeformer.h5
-rw-r--r--source/gameengine/Converter/BL_SkinDeformer.cpp71
-rw-r--r--source/gameengine/Converter/BL_SkinDeformer.h16
-rw-r--r--source/gameengine/Converter/BL_SkinMeshObject.cpp2
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.cpp294
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.h2
-rw-r--r--source/gameengine/Converter/KX_ConvertActuators.cpp36
-rw-r--r--source/gameengine/Converter/KX_ConvertActuators.h1
-rw-r--r--source/gameengine/Converter/KX_ConvertControllers.cpp78
-rw-r--r--source/gameengine/Converter/KX_ConvertControllers.h1
-rw-r--r--source/gameengine/Converter/KX_ConvertProperties.cpp16
-rw-r--r--source/gameengine/Converter/KX_ConvertSensors.cpp321
-rw-r--r--source/gameengine/Converter/KX_ConvertSensors.h1
-rw-r--r--source/gameengine/Expressions/BoolValue.cpp10
-rw-r--r--source/gameengine/Expressions/BoolValue.h5
-rw-r--r--source/gameengine/Expressions/CMakeLists.txt1
-rw-r--r--source/gameengine/Expressions/EmptyValue.cpp2
-rw-r--r--source/gameengine/Expressions/ErrorValue.cpp6
-rw-r--r--source/gameengine/Expressions/ErrorValue.h2
-rw-r--r--source/gameengine/Expressions/FloatValue.cpp6
-rw-r--r--source/gameengine/Expressions/FloatValue.h2
-rw-r--r--source/gameengine/Expressions/IfExpr.cpp7
-rw-r--r--source/gameengine/Expressions/InputParser.cpp45
-rw-r--r--source/gameengine/Expressions/InputParser.h10
-rw-r--r--source/gameengine/Expressions/IntValue.cpp4
-rw-r--r--source/gameengine/Expressions/IntValue.h2
-rw-r--r--source/gameengine/Expressions/ListValue.cpp274
-rw-r--r--source/gameengine/Expressions/ListValue.h4
-rw-r--r--source/gameengine/Expressions/Makefile1
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.cpp239
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.h204
-rw-r--r--source/gameengine/Expressions/SConscript2
-rw-r--r--source/gameengine/Expressions/StringValue.cpp4
-rw-r--r--source/gameengine/Expressions/StringValue.h2
-rw-r--r--source/gameengine/Expressions/Value.cpp239
-rw-r--r--source/gameengine/Expressions/Value.h103
-rw-r--r--source/gameengine/Expressions/VectorValue.cpp4
-rw-r--r--source/gameengine/Expressions/VectorValue.h2
-rw-r--r--source/gameengine/GameLogic/CMakeLists.txt1
-rw-r--r--source/gameengine/GameLogic/Joystick/Makefile2
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp63
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.h55
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h2
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp50
-rw-r--r--source/gameengine/GameLogic/Makefile1
-rw-r--r--source/gameengine/GameLogic/SCA_2DFilterActuator.cpp21
-rw-r--r--source/gameengine/GameLogic/SCA_2DFilterActuator.h3
-rw-r--r--source/gameengine/GameLogic/SCA_ANDController.cpp28
-rw-r--r--source/gameengine/GameLogic/SCA_ANDController.h1
-rw-r--r--source/gameengine/GameLogic/SCA_ActuatorEventManager.cpp10
-rw-r--r--source/gameengine/GameLogic/SCA_ActuatorSensor.cpp17
-rw-r--r--source/gameengine/GameLogic/SCA_ActuatorSensor.h3
-rw-r--r--source/gameengine/GameLogic/SCA_AlwaysEventManager.cpp5
-rw-r--r--source/gameengine/GameLogic/SCA_AlwaysSensor.cpp17
-rw-r--r--source/gameengine/GameLogic/SCA_AlwaysSensor.h4
-rw-r--r--source/gameengine/GameLogic/SCA_DelaySensor.cpp17
-rw-r--r--source/gameengine/GameLogic/SCA_DelaySensor.h3
-rw-r--r--source/gameengine/GameLogic/SCA_EventManager.cpp7
-rw-r--r--source/gameengine/GameLogic/SCA_EventManager.h5
-rw-r--r--source/gameengine/GameLogic/SCA_ExpressionController.cpp29
-rw-r--r--source/gameengine/GameLogic/SCA_ExpressionController.h1
-rw-r--r--source/gameengine/GameLogic/SCA_IActuator.cpp106
-rw-r--r--source/gameengine/GameLogic/SCA_IActuator.h47
-rw-r--r--source/gameengine/GameLogic/SCA_IController.cpp249
-rw-r--r--source/gameengine/GameLogic/SCA_IController.h63
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.cpp66
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.h56
-rw-r--r--source/gameengine/GameLogic/SCA_IObject.cpp81
-rw-r--r--source/gameengine/GameLogic/SCA_IObject.h69
-rw-r--r--source/gameengine/GameLogic/SCA_IScene.cpp2
-rw-r--r--source/gameengine/GameLogic/SCA_IScene.h2
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.cpp176
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.h59
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickManager.cpp11
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickSensor.cpp75
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickSensor.h20
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardManager.cpp7
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardSensor.cpp25
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardSensor.h3
-rw-r--r--source/gameengine/GameLogic/SCA_LogicManager.cpp305
-rw-r--r--source/gameengine/GameLogic/SCA_LogicManager.h58
-rw-r--r--source/gameengine/GameLogic/SCA_MouseManager.cpp6
-rw-r--r--source/gameengine/GameLogic/SCA_MouseSensor.cpp17
-rw-r--r--source/gameengine/GameLogic/SCA_MouseSensor.h3
-rw-r--r--source/gameengine/GameLogic/SCA_NANDController.cpp28
-rw-r--r--source/gameengine/GameLogic/SCA_NANDController.h1
-rw-r--r--source/gameengine/GameLogic/SCA_NORController.cpp28
-rw-r--r--source/gameengine/GameLogic/SCA_NORController.h1
-rw-r--r--source/gameengine/GameLogic/SCA_ORController.cpp26
-rw-r--r--source/gameengine/GameLogic/SCA_ORController.h1
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyActuator.cpp25
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyActuator.h1
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyEventManager.cpp5
-rw-r--r--source/gameengine/GameLogic/SCA_PropertySensor.cpp48
-rw-r--r--source/gameengine/GameLogic/SCA_PropertySensor.h3
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.cpp380
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.h35
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.cpp35
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.h2
-rw-r--r--source/gameengine/GameLogic/SCA_RandomEventManager.cpp5
-rw-r--r--source/gameengine/GameLogic/SCA_RandomNumberGenerator.cpp1
-rw-r--r--source/gameengine/GameLogic/SCA_RandomNumberGenerator.h13
-rw-r--r--source/gameengine/GameLogic/SCA_RandomSensor.cpp33
-rw-r--r--source/gameengine/GameLogic/SCA_RandomSensor.h4
-rw-r--r--source/gameengine/GameLogic/SCA_TimeEventManager.cpp6
-rw-r--r--source/gameengine/GameLogic/SCA_XNORController.cpp28
-rw-r--r--source/gameengine/GameLogic/SCA_XNORController.h1
-rw-r--r--source/gameengine/GameLogic/SCA_XORController.cpp28
-rw-r--r--source/gameengine/GameLogic/SCA_XORController.h1
-rw-r--r--source/gameengine/GameLogic/SConscript2
-rw-r--r--source/gameengine/GamePlayer/CMakeLists.txt5
-rw-r--r--source/gameengine/GamePlayer/common/GPC_RenderTools.cpp5
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_Application.cpp3
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp2
-rw-r--r--source/gameengine/Ketsji/BL_BlenderShader.cpp32
-rw-r--r--source/gameengine/Ketsji/BL_BlenderShader.h13
-rw-r--r--source/gameengine/Ketsji/BL_Material.cpp7
-rw-r--r--source/gameengine/Ketsji/BL_Material.h4
-rw-r--r--source/gameengine/Ketsji/BL_Shader.cpp13
-rw-r--r--source/gameengine/Ketsji/BL_Shader.h1
-rw-r--r--source/gameengine/Ketsji/CMakeLists.txt3
-rw-r--r--source/gameengine/Ketsji/KXNetwork/CMakeLists.txt2
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkEventManager.cpp8
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp18
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h1
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp27
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h3
-rw-r--r--source/gameengine/Ketsji/KXNetwork/Makefile2
-rw-r--r--source/gameengine/Ketsji/KXNetwork/SConscript4
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp119
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.h16
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.cpp58
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.h5
-rw-r--r--source/gameengine/Ketsji/KX_CDActuator.cpp18
-rw-r--r--source/gameengine/Ketsji/KX_CDActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_Camera.cpp453
-rw-r--r--source/gameengine/Ketsji/KX_Camera.h30
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.cpp25
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_ClientObjectInfo.h6
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintActuator.cpp21
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintActuator.h3
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.cpp82
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.h6
-rw-r--r--source/gameengine/Ketsji/KX_ConvertPhysicsObject.h6
-rw-r--r--source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp182
-rw-r--r--source/gameengine/Ketsji/KX_Dome.cpp417
-rw-r--r--source/gameengine/Ketsji/KX_Dome.h29
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.cpp27
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.cpp556
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.h50
-rw-r--r--source/gameengine/Ketsji/KX_IPO_SGController.cpp17
-rw-r--r--source/gameengine/Ketsji/KX_IPhysicsController.cpp3
-rw-r--r--source/gameengine/Ketsji/KX_IPhysicsController.h12
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.cpp42
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.h3
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp202
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.h21
-rw-r--r--source/gameengine/Ketsji/KX_Light.cpp276
-rw-r--r--source/gameengine/Ketsji/KX_Light.h8
-rw-r--r--source/gameengine/Ketsji/KX_MeshProxy.cpp59
-rw-r--r--source/gameengine/Ketsji/KX_MeshProxy.h8
-rw-r--r--source/gameengine/Ketsji/KX_MotionState.cpp5
-rw-r--r--source/gameengine/Ketsji/KX_MotionState.h1
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.cpp36
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.h7
-rw-r--r--source/gameengine/Ketsji/KX_NearSensor.cpp93
-rw-r--r--source/gameengine/Ketsji/KX_NearSensor.h8
-rw-r--r--source/gameengine/Ketsji/KX_ObjectActuator.cpp337
-rw-r--r--source/gameengine/Ketsji/KX_ObjectActuator.h92
-rw-r--r--source/gameengine/Ketsji/KX_OdePhysicsController.h1
-rw-r--r--source/gameengine/Ketsji/KX_ParentActuator.cpp30
-rw-r--r--source/gameengine/Ketsji/KX_ParentActuator.h7
-rw-r--r--source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp14
-rw-r--r--source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h1
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.cpp24
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.h8
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.cpp108
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.h15
-rw-r--r--source/gameengine/Ketsji/KX_PyConstraintBinding.cpp65
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.cpp3
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.h14
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp426
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.h2
-rw-r--r--source/gameengine/Ketsji/KX_PythonInitTypes.cpp7
-rw-r--r--source/gameengine/Ketsji/KX_PythonSeq.cpp382
-rw-r--r--source/gameengine/Ketsji/KX_PythonSeq.h60
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.cpp68
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.h2
-rw-r--r--source/gameengine/Ketsji/KX_RayEventManager.cpp5
-rw-r--r--source/gameengine/Ketsji/KX_RaySensor.cpp38
-rw-r--r--source/gameengine/Ketsji/KX_RaySensor.h3
-rw-r--r--source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp44
-rw-r--r--source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp23
-rw-r--r--source/gameengine/Ketsji/KX_SCA_DynamicActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp15
-rw-r--r--source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp20
-rw-r--r--source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp4
-rw-r--r--source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp10
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp288
-rw-r--r--source/gameengine/Ketsji/KX_Scene.h63
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.cpp119
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.h3
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.cpp82
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.h2
-rw-r--r--source/gameengine/Ketsji/KX_StateActuator.cpp50
-rw-r--r--source/gameengine/Ketsji/KX_StateActuator.h16
-rw-r--r--source/gameengine/Ketsji/KX_SumoPhysicsController.h3
-rw-r--r--source/gameengine/Ketsji/KX_TouchEventManager.cpp60
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.cpp105
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.h7
-rw-r--r--source/gameengine/Ketsji/KX_TrackToActuator.cpp34
-rw-r--r--source/gameengine/Ketsji/KX_TrackToActuator.h3
-rw-r--r--source/gameengine/Ketsji/KX_VehicleWrapper.cpp40
-rw-r--r--source/gameengine/Ketsji/KX_VehicleWrapper.h1
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.cpp31
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.h8
-rw-r--r--source/gameengine/Ketsji/KX_VisibilityActuator.cpp19
-rw-r--r--source/gameengine/Ketsji/KX_VisibilityActuator.h1
-rw-r--r--source/gameengine/Ketsji/SConscript41
-rw-r--r--source/gameengine/Network/NG_NetworkScene.cpp4
-rw-r--r--source/gameengine/Physics/BlOde/OdePhysicsController.cpp5
-rw-r--r--source/gameengine/Physics/BlOde/OdePhysicsController.h1
-rw-r--r--source/gameengine/Physics/BlOde/OdePhysicsEnvironment.cpp2
-rw-r--r--source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h6
-rw-r--r--source/gameengine/Physics/Bullet/CMakeLists.txt3
-rw-r--r--source/gameengine/Physics/Bullet/CcdGraphicController.cpp28
-rw-r--r--source/gameengine/Physics/Bullet/CcdGraphicController.h6
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.cpp512
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.h39
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp352
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h9
-rw-r--r--source/gameengine/Physics/Bullet/Makefile2
-rw-r--r--source/gameengine/Physics/Bullet/SConscript3
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp2
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h11
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsController.cpp5
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsController.h1
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp9
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h10
-rw-r--r--source/gameengine/Physics/common/PHY_IGraphicController.h3
-rw-r--r--source/gameengine/Physics/common/PHY_IMotionState.h2
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsController.h3
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h7
-rw-r--r--source/gameengine/PyDoc/API_intro.py103
-rw-r--r--source/gameengine/PyDoc/BL_ActionActuator.py230
-rw-r--r--source/gameengine/PyDoc/BL_Shader.py228
-rw-r--r--source/gameengine/PyDoc/BL_ShapeActionActuator.py199
-rw-r--r--source/gameengine/PyDoc/CListValue.py59
-rw-r--r--source/gameengine/PyDoc/GameKeys.py239
-rw-r--r--source/gameengine/PyDoc/GameLogic.py316
-rw-r--r--source/gameengine/PyDoc/GameTypes.py5863
-rw-r--r--source/gameengine/PyDoc/KX_BlenderMaterial.py38
-rw-r--r--source/gameengine/PyDoc/KX_CDActuator.py55
-rw-r--r--source/gameengine/PyDoc/KX_Camera.py209
-rw-r--r--source/gameengine/PyDoc/KX_CameraActuator.py98
-rw-r--r--source/gameengine/PyDoc/KX_ConstraintActuator.py249
-rw-r--r--source/gameengine/PyDoc/KX_ConstraintWrapper.py28
-rw-r--r--source/gameengine/PyDoc/KX_GameActuator.py29
-rw-r--r--source/gameengine/PyDoc/KX_GameObject.py504
-rw-r--r--source/gameengine/PyDoc/KX_IpoActuator.py124
-rw-r--r--source/gameengine/PyDoc/KX_LightObject.py45
-rw-r--r--source/gameengine/PyDoc/KX_MeshProxy.py132
-rw-r--r--source/gameengine/PyDoc/KX_MouseFocusSensor.py67
-rw-r--r--source/gameengine/PyDoc/KX_NearSensor.py14
-rw-r--r--source/gameengine/PyDoc/KX_NetworkMessageActuator.py49
-rw-r--r--source/gameengine/PyDoc/KX_NetworkMessageSensor.py60
-rw-r--r--source/gameengine/PyDoc/KX_ObjectActuator.py250
-rw-r--r--source/gameengine/PyDoc/KX_ParentActuator.py27
-rw-r--r--source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py47
-rw-r--r--source/gameengine/PyDoc/KX_PolyProxy.py100
-rw-r--r--source/gameengine/PyDoc/KX_PolygonMaterial.py281
-rw-r--r--source/gameengine/PyDoc/KX_RadarSensor.py49
-rw-r--r--source/gameengine/PyDoc/KX_RaySensor.py58
-rw-r--r--source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py118
-rw-r--r--source/gameengine/PyDoc/KX_SCA_DynamicActuator.py30
-rw-r--r--source/gameengine/PyDoc/KX_SCA_EndObjectActuator.py11
-rw-r--r--source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py84
-rw-r--r--source/gameengine/PyDoc/KX_Scene.py85
-rw-r--r--source/gameengine/PyDoc/KX_SceneActuator.py67
-rw-r--r--source/gameengine/PyDoc/KX_SoundActuator.py195
-rw-r--r--source/gameengine/PyDoc/KX_StateActuator.py44
-rw-r--r--source/gameengine/PyDoc/KX_TouchSensor.py63
-rw-r--r--source/gameengine/PyDoc/KX_TrackToActuator.py70
-rw-r--r--source/gameengine/PyDoc/KX_VehicleWrapper.py166
-rw-r--r--source/gameengine/PyDoc/KX_VertexProxy.py148
-rw-r--r--source/gameengine/PyDoc/KX_VisibilityActuator.py22
-rw-r--r--source/gameengine/PyDoc/Rasterizer.py27
-rw-r--r--source/gameengine/PyDoc/SCA_2DFilterActuator.py44
-rw-r--r--source/gameengine/PyDoc/SCA_ANDController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_ActuatorSensor.py33
-rw-r--r--source/gameengine/PyDoc/SCA_AlwaysSensor.py9
-rw-r--r--source/gameengine/PyDoc/SCA_DelaySensor.py72
-rw-r--r--source/gameengine/PyDoc/SCA_IActuator.py9
-rw-r--r--source/gameengine/PyDoc/SCA_IController.py9
-rw-r--r--source/gameengine/PyDoc/SCA_ILogicBrick.py45
-rw-r--r--source/gameengine/PyDoc/SCA_ISensor.py111
-rw-r--r--source/gameengine/PyDoc/SCA_JoystickSensor.py169
-rw-r--r--source/gameengine/PyDoc/SCA_KeyboardSensor.py116
-rw-r--r--source/gameengine/PyDoc/SCA_MouseSensor.py44
-rw-r--r--source/gameengine/PyDoc/SCA_NANDController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_NORController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_ORController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_PropertyActuator.py49
-rw-r--r--source/gameengine/PyDoc/SCA_PropertySensor.py74
-rw-r--r--source/gameengine/PyDoc/SCA_PythonController.py77
-rw-r--r--source/gameengine/PyDoc/SCA_RandomActuator.py175
-rw-r--r--source/gameengine/PyDoc/SCA_RandomSensor.py35
-rw-r--r--source/gameengine/PyDoc/SCA_XNORController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_XORController.py11
-rw-r--r--source/gameengine/PyDoc/WhatsNew.py34
-rw-r--r--source/gameengine/PyDoc/bge_api_validate_py.txt68
-rwxr-xr-xsource/gameengine/PyDoc/epy_docgen.sh9
-rw-r--r--source/gameengine/Rasterizer/CMakeLists.txt2
-rw-r--r--source/gameengine/Rasterizer/Makefile2
-rw-r--r--source/gameengine/Rasterizer/RAS_2DFilterManager.cpp4
-rw-r--r--source/gameengine/Rasterizer/RAS_BucketManager.cpp60
-rw-r--r--source/gameengine/Rasterizer/RAS_BucketManager.h1
-rw-r--r--source/gameengine/Rasterizer/RAS_CameraData.h4
-rw-r--r--source/gameengine/Rasterizer/RAS_Deformer.h28
-rw-r--r--source/gameengine/Rasterizer/RAS_FramingManager.cpp101
-rw-r--r--source/gameengine/Rasterizer/RAS_FramingManager.h22
-rw-r--r--source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp98
-rw-r--r--source/gameengine/Rasterizer/RAS_IPolygonMaterial.h29
-rw-r--r--source/gameengine/Rasterizer/RAS_IRasterizer.h27
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.cpp73
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.h28
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.cpp63
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.h12
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt6
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile6
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp68
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h13
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp130
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h18
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp12
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript2
-rw-r--r--source/gameengine/Rasterizer/RAS_TexVert.cpp19
-rw-r--r--source/gameengine/Rasterizer/SConscript2
-rw-r--r--source/gameengine/SceneGraph/SG_DList.h161
-rw-r--r--source/gameengine/SceneGraph/SG_IObject.cpp92
-rw-r--r--source/gameengine/SceneGraph/SG_IObject.h136
-rw-r--r--source/gameengine/SceneGraph/SG_Node.cpp66
-rw-r--r--source/gameengine/SceneGraph/SG_Node.h113
-rw-r--r--source/gameengine/SceneGraph/SG_QList.h157
-rw-r--r--source/gameengine/SceneGraph/SG_Spatial.cpp151
-rw-r--r--source/gameengine/SceneGraph/SG_Spatial.h191
-rw-r--r--source/gameengine/VideoTexture/BlendType.h6
-rw-r--r--source/gameengine/VideoTexture/FilterBlueScreen.cpp7
-rw-r--r--source/gameengine/VideoTexture/FilterColor.cpp21
-rw-r--r--source/gameengine/VideoTexture/FilterNormal.cpp7
-rw-r--r--source/gameengine/VideoTexture/FilterSource.cpp21
-rw-r--r--source/gameengine/VideoTexture/ImageBase.cpp8
-rw-r--r--source/gameengine/VideoTexture/ImageBuff.cpp10
-rw-r--r--source/gameengine/VideoTexture/ImageMix.cpp15
-rw-r--r--source/gameengine/VideoTexture/ImageRender.cpp71
-rw-r--r--source/gameengine/VideoTexture/ImageViewport.cpp7
-rw-r--r--source/gameengine/VideoTexture/PyTypeList.cpp1
-rw-r--r--source/gameengine/VideoTexture/Texture.cpp16
-rw-r--r--source/gameengine/VideoTexture/VideoBase.cpp7
-rw-r--r--source/gameengine/VideoTexture/VideoBase.h13
-rw-r--r--source/gameengine/VideoTexture/VideoFFmpeg.cpp86
-rw-r--r--source/gameengine/VideoTexture/VideoFFmpeg.h5
-rw-r--r--source/gameengine/VideoTexture/blendVideoTex.cpp46
-rw-r--r--source/kernel/gen_system/GEN_HashedPtr.cpp9
-rw-r--r--source/nan_compile.mk2
-rw-r--r--source/nan_definitions.mk8
-rw-r--r--tools/Blender.py4
-rwxr-xr-xtools/btools.py6
831 files changed, 64527 insertions, 42286 deletions
diff --git a/CMake/macros.cmake b/CMake/macros.cmake
index df8e7515e67..bc8892e4b99 100644
--- a/CMake/macros.cmake
+++ b/CMake/macros.cmake
@@ -59,7 +59,24 @@ ENDMACRO(SETUP_LIBDIRS)
MACRO(SETUP_LIBLINKS
target)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS} ")
- TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LIB} ${PYTHON_LINKFLAGS} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB} ${SDL_LIB} ${LLIBS})
+ #TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LIB} ${PYTHON_LINKFLAGS} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB} ${SDL_LIB} ${LLIBS})
+
+ TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LINKFLAGS} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB} ${SDL_LIB} ${LLIBS})
+
+ # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions
+
+ IF(WIN32)
+
+ TARGET_LINK_LIBRARIES(${target} debug ${PYTHON_LIB}_d)
+
+ TARGET_LINK_LIBRARIES(${target} optimized ${PYTHON_LIB})
+
+ ELSE(WIN32)
+
+ TARGET_LINK_LIBRARIES(${target} ${PYTHON_LIB})
+
+ ENDIF(WIN32)
+
TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LINKFLAGS} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB} ${SDL_LIB} ${LLIBS})
TARGET_LINK_LIBRARIES(${target} ${FREETYPE_LIB})
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f2bf65dfb57..9c7ee34cc14 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,7 +67,6 @@ OPTION(WITH_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org/)" OFF)
OPTION(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
OPTION(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" OFF)
OPTION(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF)
-OPTION(WITH_YAFRAY "Enable Yafray (Renderer)" OFF)
IF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE")
@@ -100,20 +99,6 @@ IF(UNIX)
ENDIF(OPENAL_FOUND)
ENDIF(WITH_OPENAL)
- FIND_LIBRARY(ALUT_LIBRARY
- NAMES alut
- PATHS
- /usr/local/lib
- /usr/lib
- /sw/lib
- /opt/local/lib
- /opt/csw/lib
- /opt/lib
- )
- IF(ALUT_LIBRARY)
- SET(OPENAL_LIB ${OPENAL_LIB} ${ALUT_LIBRARY})
- ENDIF(ALUT_LIBRARY)
-
FIND_LIBRARY(INTL_LIBRARY
NAMES intl
PATHS
@@ -289,7 +274,7 @@ IF(WIN32)
SET(FFMPEG ${LIBDIR}/ffmpeg)
SET(FFMPEG_INC ${FFMPEG}/include)
- SET(FFMPEG_LIB avcodec-51 avformat-52 avdevice-52 avutil-49 swscale-0)
+ SET(FFMPEG_LIB avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0)
SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
IF(CMAKE_CL_64)
@@ -469,20 +454,18 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS} ")
#-----------------------------------------------------------------------------
# Libraries
FILE(WRITE ${CMAKE_BINARY_DIR}/cmake_blender_libs.txt "")
-SUBDIRS(
- intern
- extern
- source
-)
+ADD_SUBDIRECTORY(intern)
+ADD_SUBDIRECTORY(extern)
+ADD_SUBDIRECTORY(source)
#-----------------------------------------------------------------------------
# Blender Application
-SUBDIRS(source/creator)
+ADD_SUBDIRECTORY(source/creator)
#-----------------------------------------------------------------------------
# Blender Player
IF(WITH_PLAYER)
- SUBDIRS(blenderplayer)
+ ADD_SUBDIRECTORY(blenderplayer)
ENDIF(WITH_PLAYER)
diff --git a/SConstruct b/SConstruct
index 9053efbf474..ac043f06e7a 100644
--- a/SConstruct
+++ b/SConstruct
@@ -279,7 +279,6 @@ if 'blenderlite' in B.targets:
target_env_defs['WITH_BF_OPENJPEG'] = False
target_env_defs['WITH_BF_FFMPEG'] = False
target_env_defs['WITH_BF_QUICKTIME'] = False
- target_env_defs['WITH_BF_YAFRAY'] = False
target_env_defs['WITH_BF_REDCODE'] = False
target_env_defs['WITH_BF_DDS'] = False
target_env_defs['WITH_BF_ZLIB'] = False
diff --git a/config/darwin-config.py b/config/darwin-config.py
index 78a8c71b7dd..080820f885a 100644
--- a/config/darwin-config.py
+++ b/config/darwin-config.py
@@ -155,8 +155,6 @@ BF_SOLID = '#extern/solid'
BF_SOLID_INC = '${BF_SOLID}'
BF_SOLID_LIB = 'extern_solid'
-WITH_BF_YAFRAY = True
-
#WITH_BF_NSPR = True
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
diff --git a/config/irix6-config.py b/config/irix6-config.py
index 1ef271b5074..3c8fd0dece4 100644
--- a/config/irix6-config.py
+++ b/config/irix6-config.py
@@ -20,11 +20,6 @@ BF_OPENAL_LIB = 'openal'
BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
BF_OPENAL_LIBPATH = LIBDIR + '/lib'
-# some distros have a separate libalut
-# if you get linker complaints, you need to uncomment the line below
-# BF_OPENAL_LIB = 'openal alut'
-# BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a ${BF_OPENAL}/lib/libalut.a'
-
BF_CXX = '/usr'
WITH_BF_STATICCXX = 'false'
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
@@ -93,8 +88,6 @@ BF_SOLID = '#extern/solid'
BF_SOLID_INC = '${BF_SOLID}'
BF_SOLID_LIB = 'extern_solid'
-WITH_BF_YAFRAY = 'true'
-
#WITH_BF_NSPR = 'true'
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
diff --git a/config/linux2-config.py b/config/linux2-config.py
index eb93d8084f1..4cea4bb8e05 100644
--- a/config/linux2-config.py
+++ b/config/linux2-config.py
@@ -1,9 +1,17 @@
LCGDIR = '../lib/linux2'
LIBDIR = "${LCGDIR}"
+def py_version_string():
+ '''
+ returns py version - "2.5", "2.6" etc
+ '''
+ import platform
+ ver = platform.python_version_tuple()
+ return '%d.%d' % (int(ver[0]), int(ver[1])) # py2.5 uses strings, 2.6 ints
+
BF_PYTHON = '/usr'
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
-BF_PYTHON_VERSION = '2.5'
+BF_PYTHON_VERSION = py_version_string()
WITH_BF_STATICPYTHON = False
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
@@ -18,11 +26,6 @@ BF_OPENAL_INC = '${BF_OPENAL}/include'
BF_OPENAL_LIB = 'openal'
BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
-# some distros have a separate libalut
-# if you get linker complaints, you need to uncomment the line below
-# BF_OPENAL_LIB = 'openal alut'
-# BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a ${BF_OPENAL}/lib/libalut.a'
-
BF_CXX = '/usr'
WITH_BF_STATICCXX = False
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
@@ -71,7 +74,8 @@ BF_GETTEXT_INC = '${BF_GETTEXT}/include'
BF_GETTEXT_LIB = 'gettextlib'
BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib'
-WITH_BF_GAMEENGINE=False
+WITH_BF_GAMEENGINE = True
+WITH_BF_PLAYER = True
WITH_BF_ODE = False
BF_ODE = LIBDIR + '/ode'
@@ -87,8 +91,6 @@ BF_SOLID = '#extern/solid'
BF_SOLID_INC = '${BF_SOLID}'
BF_SOLID_LIB = 'extern_solid'
-WITH_BF_YAFRAY = True
-
#WITH_BF_NSPR = True
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
diff --git a/config/linuxcross-config.py b/config/linuxcross-config.py
index 4b17224eacc..2f15ef67e6c 100644
--- a/config/linuxcross-config.py
+++ b/config/linuxcross-config.py
@@ -1,8 +1,6 @@
LCGDIR = '#../lib/windows'
LIBDIR = '${LCGDIR}'
-WITH_BF_YAFRAY = True
-
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '2.5'
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
diff --git a/config/openbsd3-config.py b/config/openbsd3-config.py
index 6a7518a7928..f27066b43f7 100644
--- a/config/openbsd3-config.py
+++ b/config/openbsd3-config.py
@@ -75,8 +75,6 @@ BF_SOLID = '#extern/solid'
BF_SOLID_INC = '${BF_SOLID}'
BF_SOLID_LIB = 'extern_solid'
-WITH_BF_YAFRAY = True
-
#WITH_BF_NSPR = True
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
diff --git a/config/sunos5-config.py b/config/sunos5-config.py
index 25f200fe346..e050a5950aa 100644
--- a/config/sunos5-config.py
+++ b/config/sunos5-config.py
@@ -83,8 +83,6 @@ BF_SOLID = '#extern/solid'
BF_SOLID_INC = '${BF_SOLID}'
BF_SOLID_LIB = 'extern_solid'
-WITH_BF_YAFRAY = True
-
#WITH_BF_NSPR = True
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py
index a579d21a544..5b9b2f9b9dc 100644
--- a/config/win32-mingw-config.py
+++ b/config/win32-mingw-config.py
@@ -94,8 +94,6 @@ BF_SOLID_LIB = 'extern_solid'
BF_WINTAB = LIBDIR + '/wintab'
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
-WITH_BF_YAFRAY = True
-
#WITH_BF_NSPR = True
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py
index 0717cdb6c8f..b8886569aa8 100644
--- a/config/win32-vc-config.py
+++ b/config/win32-vc-config.py
@@ -107,8 +107,6 @@ BF_SOLID_LIB = 'extern_solid'
BF_WINTAB = LIBDIR + '/wintab'
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
-WITH_BF_YAFRAY = True
-
WITH_BF_BINRELOC = False
#WITH_BF_NSPR = True
diff --git a/config/win64-vc-config.py b/config/win64-vc-config.py
index 945efecdc3c..fcc6f1ab846 100644
--- a/config/win64-vc-config.py
+++ b/config/win64-vc-config.py
@@ -110,8 +110,6 @@ BF_SOLID_LIB = 'extern_solid'
BF_WINTAB = LIBDIR + '/wintab'
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
-WITH_BF_YAFRAY = True
-
WITH_BF_BINRELOC = False
#WITH_BF_NSPR = True
@@ -184,7 +182,7 @@ WITH_BF_DOCS=False
BF_DEBUG=False
BF_BSC=False
CFLAGS = []
-CCFLAGS = ['/nologo', '/Ob1', '/J', '/W3', '/Gd', '/MT', '/openmp']
+CCFLAGS = ['/nologo', '/Ob1', '/J', '/W3', '/Gd', '/MT']
CXXFLAGS = ['/EHsc']
if BF_DEBUG:
@@ -192,7 +190,7 @@ if BF_DEBUG:
else:
BF_NUMJOBS=6
-PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/ENTRY:mainCRTStartup','/INCREMENTAL:NO','/NODEFAULTLIB:"msvcprt.lib"','/NODEFAULTLIB:"glut32.lib"','/NODEFAULTLIB:"libc.lib"','/NODEFAULTLIB:"libcd.lib"','/NODEFAULTLIB:"libcpd.lib"','/NODEFAULTLIB:"libcp.lib"','/LARGEADDRESSAWARE']
+PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/ENTRY:mainCRTStartup','/INCREMENTAL:NO','/NODEFAULTLIB:"msvcprt.lib"','/NODEFAULTLIB:"glut32.lib"','/NODEFAULTLIB:"libc.lib"','/NODEFAULTLIB:"libcd.lib"','/NODEFAULTLIB:"libcpd.lib"','/NODEFAULTLIB:"libcp.lib"']
BF_BUILDDIR = '..\\build\\blender25-win64-vc'
BF_INSTALLDIR='..\\install\\blender25-win64-vc'
diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
index 45778e235cd..8dcace11e7d 100644
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@ -25,19 +25,20 @@
# ***** END GPL LICENSE BLOCK *****
IF(WITH_GAMEENGINE)
- SUBDIRS(qhull solid)
+ ADD_SUBDIRECTORY(qhull)
+ ADD_SUBDIRECTORY(solid)
ENDIF(WITH_GAMEENGINE)
IF(WITH_BULLET)
- SUBDIRS(bullet2)
+ ADD_SUBDIRECTORY(bullet2)
ENDIF(WITH_BULLET)
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
- SUBDIRS(binreloc)
+ ADD_SUBDIRECTORY(binreloc)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
-SUBDIRS(glew)
+ADD_SUBDIRECTORY(glew)
IF(WITH_OPENJPEG)
- SUBDIRS(libopenjpeg)
+ ADD_SUBDIRECTORY(libopenjpeg)
ENDIF(WITH_OPENJPEG)
diff --git a/extern/Makefile b/extern/Makefile
index 582d158b66f..8311006444f 100644
--- a/extern/Makefile
+++ b/extern/Makefile
@@ -41,9 +41,10 @@ ifeq ($(NAN_FFMPEG), $(LCGDIR)/gcc/ffmpeg)
endif
endif
-ifneq ($(NAN_NO_KETSJI), true)
- DIRS += bullet2
-endif
+# Cloth requires it
+#ifneq ($(NAN_NO_KETSJI), true)
+DIRS += bullet2
+#endif
ifeq ($(WITH_BINRELOC), true)
DIRS += binreloc
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp
index 29c8496c36f..50a79451f5d 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp
@@ -22,12 +22,13 @@ Written by: Marcus Hennix
#include "LinearMath/btMinMax.h"
#include <new>
-//-----------------------------------------------------------------------------
+
+//#define CONETWIST_USE_OBSOLETE_SOLVER true
#define CONETWIST_USE_OBSOLETE_SOLVER false
#define CONETWIST_DEF_FIX_THRESH btScalar(.05f)
-//-----------------------------------------------------------------------------
+
btConeTwistConstraint::btConeTwistConstraint()
:btTypedConstraint(CONETWIST_CONSTRAINT_TYPE),
@@ -63,13 +64,13 @@ void btConeTwistConstraint::init()
m_bMotorEnabled = false;
m_maxMotorImpulse = btScalar(-1);
- setLimit(btScalar(1e30), btScalar(1e30), btScalar(1e30));
+ setLimit(btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT));
m_damping = btScalar(0.01);
m_fixThresh = CONETWIST_DEF_FIX_THRESH;
}
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::getInfo1 (btConstraintInfo1* info)
{
@@ -99,9 +100,9 @@ void btConeTwistConstraint::getInfo1 (btConstraintInfo1* info)
info->nub--;
}
}
-} // btConeTwistConstraint::getInfo1()
+}
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::getInfo2 (btConstraintInfo2* info)
{
@@ -230,7 +231,7 @@ void btConeTwistConstraint::getInfo2 (btConstraintInfo2* info)
}
}
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::buildJacobian()
{
@@ -239,6 +240,7 @@ void btConeTwistConstraint::buildJacobian()
m_appliedImpulse = btScalar(0.);
m_accTwistLimitImpulse = btScalar(0.);
m_accSwingLimitImpulse = btScalar(0.);
+ m_accMotorImpulse = btVector3(0.,0.,0.);
if (!m_angularOnly)
{
@@ -277,7 +279,7 @@ void btConeTwistConstraint::buildJacobian()
}
}
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolverBody& bodyB,btScalar timeStep)
{
@@ -406,10 +408,10 @@ void btConeTwistConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolver
}
}
- else // no motor: do a little damping
+ else if (m_damping > SIMD_EPSILON) // no motor: do a little damping
{
- const btVector3& angVelA = getRigidBodyA().getAngularVelocity();
- const btVector3& angVelB = getRigidBodyB().getAngularVelocity();
+ btVector3 angVelA; bodyA.getAngularVelocity(angVelA);
+ btVector3 angVelB; bodyB.getAngularVelocity(angVelB);
btVector3 relVel = angVelB - angVelA;
if (relVel.length2() > SIMD_EPSILON)
{
@@ -490,7 +492,7 @@ void btConeTwistConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolver
}
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::updateRHS(btScalar timeStep)
{
@@ -498,7 +500,7 @@ void btConeTwistConstraint::updateRHS(btScalar timeStep)
}
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::calcAngleInfo()
{
@@ -584,12 +586,12 @@ void btConeTwistConstraint::calcAngleInfo()
m_twistAxis.normalize();
}
}
-} // btConeTwistConstraint::calcAngleInfo()
+}
static btVector3 vTwist(1,0,0); // twist axis in constraint's space
-//-----------------------------------------------------------------------------
+
void btConeTwistConstraint::calcAngleInfo2()
{
@@ -597,13 +599,34 @@ void btConeTwistConstraint::calcAngleInfo2()
m_twistLimitSign = btScalar(0.);
m_solveTwistLimit = false;
m_solveSwingLimit = false;
+ // compute rotation of A wrt B (in constraint space)
+ if (m_bMotorEnabled && (!m_useSolveConstraintObsolete))
+ { // it is assumed that setMotorTarget() was alredy called
+ // and motor target m_qTarget is within constraint limits
+ // TODO : split rotation to pure swing and pure twist
+ // compute desired transforms in world
+ btTransform trPose(m_qTarget);
+ btTransform trA = getRigidBodyA().getCenterOfMassTransform() * m_rbAFrame;
+ btTransform trB = getRigidBodyB().getCenterOfMassTransform() * m_rbBFrame;
+ btTransform trDeltaAB = trB * trPose * trA.inverse();
+ btQuaternion qDeltaAB = trDeltaAB.getRotation();
+ btVector3 swingAxis = btVector3(qDeltaAB.x(), qDeltaAB.y(), qDeltaAB.z());
+ m_swingAxis = swingAxis;
+ m_swingAxis.normalize();
+ m_swingCorrection = qDeltaAB.getAngle();
+ if(!btFuzzyZero(m_swingCorrection))
+ {
+ m_solveSwingLimit = true;
+ }
+ return;
+ }
+
{
// compute rotation of A wrt B (in constraint space)
btQuaternion qA = getRigidBodyA().getCenterOfMassTransform().getRotation() * m_rbAFrame.getRotation();
btQuaternion qB = getRigidBodyB().getCenterOfMassTransform().getRotation() * m_rbBFrame.getRotation();
btQuaternion qAB = qB.inverse() * qA;
-
// split rotation into cone and twist
// (all this is done from B's perspective. Maybe I should be averaging axes...)
btVector3 vConeNoTwist = quatRotate(qAB, vTwist); vConeNoTwist.normalize();
@@ -756,7 +779,7 @@ void btConeTwistConstraint::calcAngleInfo2()
m_twistAngle = btScalar(0.f);
}
}
-} // btConeTwistConstraint::calcAngleInfo2()
+}
@@ -982,8 +1005,5 @@ void btConeTwistConstraint::setMotorTargetInConstraintSpace(const btQuaternion &
}
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h
index 84ea9e04095..8a893d4fb8c 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h
@@ -17,6 +17,22 @@ Written by: Marcus Hennix
+/*
+Overview:
+
+btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc).
+It is a fixed translation, 3 degree-of-freedom (DOF) rotational "joint".
+It divides the 3 rotational DOFs into swing (movement within a cone) and twist.
+Swing is divided into swing1 and swing2 which can have different limits, giving an elliptical shape.
+(Note: the cone's base isn't flat, so this ellipse is "embedded" on the surface of a sphere.)
+
+In the contraint's frame of reference:
+twist is along the x-axis,
+and swing 1 and 2 are along the z and y axes respectively.
+*/
+
+
+
#ifndef CONETWISTCONSTRAINT_H
#define CONETWISTCONSTRAINT_H
@@ -141,7 +157,18 @@ public:
};
}
- void setLimit(btScalar _swingSpan1,btScalar _swingSpan2,btScalar _twistSpan, btScalar _softness = 1.f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f)
+ // setLimit(), a few notes:
+ // _softness:
+ // 0->1, recommend ~0.8->1.
+ // describes % of limits where movement is free.
+ // beyond this softness %, the limit is gradually enforced until the "hard" (1.0) limit is reached.
+ // _biasFactor:
+ // 0->1?, recommend 0.3 +/-0.3 or so.
+ // strength with which constraint resists zeroth order (angular, not angular velocity) limit violation.
+ // __relaxationFactor:
+ // 0->1, recommend to stay near 1.
+ // the lower the value, the less the constraint will fight velocities which violate the angular limits.
+ void setLimit(btScalar _swingSpan1,btScalar _swingSpan2,btScalar _twistSpan, btScalar _softness = 1.f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f)
{
m_swingSpan1 = _swingSpan1;
m_swingSpan2 = _swingSpan2;
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
index e99430c00de..a11fc94ea11 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
@@ -77,7 +77,7 @@ struct btContactSolverInfo : public btContactSolverInfoData
m_splitImpulsePenetrationThreshold = -0.02f;
m_linearSlop = btScalar(0.0);
m_warmstartingFactor=btScalar(0.85);
- m_solverMode = SOLVER_USE_WARMSTARTING | SOLVER_SIMD ;//SOLVER_RANDMIZE_ORDER
+ m_solverMode = SOLVER_USE_WARMSTARTING | SOLVER_USE_2_FRICTION_DIRECTIONS |SOLVER_SIMD | SOLVER_RANDMIZE_ORDER;
m_restingContactRestitutionThreshold = 2;//resting contact lifetime threshold to disable restitution
}
};
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
index 6cbfe61f700..38e81688f02 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
@@ -22,11 +22,13 @@ http://gimpact.sf.net
#include "btGeneric6DofConstraint.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
#include "LinearMath/btTransformUtil.h"
+#include "LinearMath/btTransformUtil.h"
#include <new>
+
#define D6_USE_OBSOLETE_METHOD false
-//-----------------------------------------------------------------------------
+
btGeneric6DofConstraint::btGeneric6DofConstraint()
:btTypedConstraint(D6_CONSTRAINT_TYPE),
@@ -35,7 +37,7 @@ m_useSolveConstraintObsolete(D6_USE_OBSOLETE_METHOD)
{
}
-//-----------------------------------------------------------------------------
+
btGeneric6DofConstraint::btGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA)
: btTypedConstraint(D6_CONSTRAINT_TYPE, rbA, rbB)
@@ -46,12 +48,12 @@ m_useSolveConstraintObsolete(D6_USE_OBSOLETE_METHOD)
{
}
-//-----------------------------------------------------------------------------
+
#define GENERIC_D6_DISABLE_WARMSTARTING 1
-//-----------------------------------------------------------------------------
+
btScalar btGetMatrixElem(const btMatrix3x3& mat, int index);
btScalar btGetMatrixElem(const btMatrix3x3& mat, int index)
@@ -61,7 +63,7 @@ btScalar btGetMatrixElem(const btMatrix3x3& mat, int index)
return mat[i][j];
}
-//-----------------------------------------------------------------------------
+
///MatrixToEulerXYZ from http://www.geometrictools.com/LibFoundation/Mathematics/Wm4Matrix3.inl.html
bool matrixToEulerXYZ(const btMatrix3x3& mat,btVector3& xyz);
@@ -129,7 +131,7 @@ int btRotationalLimitMotor::testLimitValue(btScalar test_value)
}
-//-----------------------------------------------------------------------------
+
btScalar btRotationalLimitMotor::solveAngularLimits(
btScalar timeStep,btVector3& axis,btScalar jacDiagABInv,
@@ -191,8 +193,8 @@ btScalar btRotationalLimitMotor::solveAngularLimits(
// sort with accumulated impulses
- btScalar lo = btScalar(-1e30);
- btScalar hi = btScalar(1e30);
+ btScalar lo = btScalar(-BT_LARGE_FLOAT);
+ btScalar hi = btScalar(BT_LARGE_FLOAT);
btScalar oldaccumImpulse = m_accumulatedImpulse;
btScalar sum = oldaccumImpulse + clippedMotorImpulse;
@@ -249,9 +251,9 @@ int btTranslationalLimitMotor::testLimitValue(int limitIndex, btScalar test_valu
m_currentLimit[limitIndex] = 0;//Free from violation
m_currentLimitError[limitIndex] = btScalar(0.f);
return 0;
-} // btTranslationalLimitMotor::testLimitValue()
+}
+
-//-----------------------------------------------------------------------------
btScalar btTranslationalLimitMotor::solveLinearAxis(
btScalar timeStep,
@@ -283,8 +285,8 @@ btScalar btTranslationalLimitMotor::solveLinearAxis(
//positional error (zeroth order error)
btScalar depth = -(pointInA - pointInB).dot(axis_normal_on_a);
- btScalar lo = btScalar(-1e30);
- btScalar hi = btScalar(1e30);
+ btScalar lo = btScalar(-BT_LARGE_FLOAT);
+ btScalar hi = btScalar(BT_LARGE_FLOAT);
btScalar minLimit = m_lowerLimit[limit_index];
btScalar maxLimit = m_upperLimit[limit_index];
@@ -372,7 +374,7 @@ void btGeneric6DofConstraint::calculateAngleInfo()
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::calculateTransforms()
{
@@ -382,7 +384,7 @@ void btGeneric6DofConstraint::calculateTransforms()
calculateAngleInfo();
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::buildLinearJacobian(
btJacobianEntry & jacLinear,const btVector3 & normalWorld,
@@ -400,7 +402,7 @@ void btGeneric6DofConstraint::buildLinearJacobian(
m_rbB.getInvMass());
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::buildAngularJacobian(
btJacobianEntry & jacAngular,const btVector3 & jointAxisW)
@@ -413,17 +415,18 @@ void btGeneric6DofConstraint::buildAngularJacobian(
}
-//-----------------------------------------------------------------------------
+
bool btGeneric6DofConstraint::testAngularLimitMotor(int axis_index)
{
btScalar angle = m_calculatedAxisAngleDiff[axis_index];
+ m_angularLimits[axis_index].m_currentPosition = angle;
//test limits
m_angularLimits[axis_index].testLimitValue(angle);
return m_angularLimits[axis_index].needApplyTorques();
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::buildJacobian()
{
@@ -483,7 +486,7 @@ void btGeneric6DofConstraint::buildJacobian()
}
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::getInfo1 (btConstraintInfo1* info)
{
@@ -519,7 +522,7 @@ void btGeneric6DofConstraint::getInfo1 (btConstraintInfo1* info)
}
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::getInfo2 (btConstraintInfo2* info)
{
@@ -528,7 +531,7 @@ void btGeneric6DofConstraint::getInfo2 (btConstraintInfo2* info)
setAngularLimits(info, row);
}
-//-----------------------------------------------------------------------------
+
int btGeneric6DofConstraint::setLinearLimits(btConstraintInfo2* info)
{
@@ -542,6 +545,7 @@ int btGeneric6DofConstraint::setLinearLimits(btConstraintInfo2* info)
{ // re-use rotational motor code
limot.m_bounce = btScalar(0.f);
limot.m_currentLimit = m_linearLimits.m_currentLimit[i];
+ limot.m_currentPosition = m_linearLimits.m_currentLinearDiff[i];
limot.m_currentLimitError = m_linearLimits.m_currentLimitError[i];
limot.m_damping = m_linearLimits.m_damping;
limot.m_enableMotor = m_linearLimits.m_enableMotor[i];
@@ -559,7 +563,7 @@ int btGeneric6DofConstraint::setLinearLimits(btConstraintInfo2* info)
return row;
}
-//-----------------------------------------------------------------------------
+
int btGeneric6DofConstraint::setAngularLimits(btConstraintInfo2 *info, int row_offset)
{
@@ -582,7 +586,7 @@ int btGeneric6DofConstraint::setAngularLimits(btConstraintInfo2 *info, int row_o
return row;
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolverBody& bodyB,btScalar timeStep)
{
@@ -643,7 +647,7 @@ void btGeneric6DofConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolv
}
}
-//-----------------------------------------------------------------------------
+
void btGeneric6DofConstraint::updateRHS(btScalar timeStep)
{
@@ -651,21 +655,26 @@ void btGeneric6DofConstraint::updateRHS(btScalar timeStep)
}
-//-----------------------------------------------------------------------------
+
btVector3 btGeneric6DofConstraint::getAxis(int axis_index) const
{
return m_calculatedAxis[axis_index];
}
-//-----------------------------------------------------------------------------
-btScalar btGeneric6DofConstraint::getAngle(int axis_index) const
+btScalar btGeneric6DofConstraint::getRelativePivotPosition(int axisIndex) const
{
- return m_calculatedAxisAngleDiff[axis_index];
+ return m_calculatedLinearDiff[axisIndex];
}
-//-----------------------------------------------------------------------------
+
+btScalar btGeneric6DofConstraint::getAngle(int axisIndex) const
+{
+ return m_calculatedAxisAngleDiff[axisIndex];
+}
+
+
void btGeneric6DofConstraint::calcAnchorPos(void)
{
@@ -684,9 +693,9 @@ void btGeneric6DofConstraint::calcAnchorPos(void)
const btVector3& pB = m_calculatedTransformB.getOrigin();
m_AnchorPos = pA * weight + pB * (btScalar(1.0) - weight);
return;
-} // btGeneric6DofConstraint::calcAnchorPos()
+}
+
-//-----------------------------------------------------------------------------
void btGeneric6DofConstraint::calculateLinearInfo()
{
@@ -694,11 +703,12 @@ void btGeneric6DofConstraint::calculateLinearInfo()
m_calculatedLinearDiff = m_calculatedTransformA.getBasis().inverse() * m_calculatedLinearDiff;
for(int i = 0; i < 3; i++)
{
+ m_linearLimits.m_currentLinearDiff[i] = m_calculatedLinearDiff[i];
m_linearLimits.testLimitValue(i, m_calculatedLinearDiff[i]);
}
-} // btGeneric6DofConstraint::calculateLinearInfo()
+}
+
-//-----------------------------------------------------------------------------
int btGeneric6DofConstraint::get_limit_motor_info2(
btRotationalLimitMotor * limot,
@@ -721,7 +731,7 @@ int btGeneric6DofConstraint::get_limit_motor_info2(
J2[srow+1] = -ax1[1];
J2[srow+2] = -ax1[2];
}
- if((!rotational) && limit)
+ if((!rotational))
{
btVector3 ltd; // Linear Torque Decoupling vector
btVector3 c = m_calculatedTransformB.getOrigin() - body0->getCenterOfMassPosition();
@@ -745,7 +755,14 @@ int btGeneric6DofConstraint::get_limit_motor_info2(
info->cfm[srow] = 0.0f;
if(!limit)
{
- info->m_constraintError[srow] += limot->m_targetVelocity;
+ btScalar tag_vel = rotational ? limot->m_targetVelocity : -limot->m_targetVelocity;
+
+ btScalar mot_fact = getMotorFactor( limot->m_currentPosition,
+ limot->m_loLimit,
+ limot->m_hiLimit,
+ tag_vel,
+ info->fps * info->erp);
+ info->m_constraintError[srow] += mot_fact * limot->m_targetVelocity;
info->m_lowerLimit[srow] = -limot->m_maxMotorForce;
info->m_upperLimit[srow] = limot->m_maxMotorForce;
}
@@ -824,6 +841,131 @@ int btGeneric6DofConstraint::get_limit_motor_info2(
else return 0;
}
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
+
+
+
+btGeneric6DofSpringConstraint::btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA)
+ : btGeneric6DofConstraint(rbA, rbB, frameInA, frameInB, useLinearReferenceFrameA)
+{
+ for(int i = 0; i < 6; i++)
+ {
+ m_springEnabled[i] = false;
+ m_equilibriumPoint[i] = btScalar(0.f);
+ m_springStiffness[i] = btScalar(0.f);
+ m_springDamping[i] = btScalar(1.f);
+ }
+}
+
+
+void btGeneric6DofSpringConstraint::enableSpring(int index, bool onOff)
+{
+ btAssert((index >= 0) && (index < 6));
+ m_springEnabled[index] = onOff;
+ if(index < 3)
+ {
+ m_linearLimits.m_enableMotor[index] = onOff;
+ }
+ else
+ {
+ m_angularLimits[index - 3].m_enableMotor = onOff;
+ }
+}
+
+
+
+void btGeneric6DofSpringConstraint::setStiffness(int index, btScalar stiffness)
+{
+ btAssert((index >= 0) && (index < 6));
+ m_springStiffness[index] = stiffness;
+}
+
+
+void btGeneric6DofSpringConstraint::setDamping(int index, btScalar damping)
+{
+ btAssert((index >= 0) && (index < 6));
+ m_springDamping[index] = damping;
+}
+
+
+void btGeneric6DofSpringConstraint::setEquilibriumPoint()
+{
+ calculateTransforms();
+ for(int i = 0; i < 3; i++)
+ {
+ m_equilibriumPoint[i] = m_calculatedLinearDiff[i];
+ }
+ for(int i = 0; i < 3; i++)
+ {
+ m_equilibriumPoint[i + 3] = m_calculatedAxisAngleDiff[i];
+ }
+}
+
+
+
+void btGeneric6DofSpringConstraint::setEquilibriumPoint(int index)
+{
+ btAssert((index >= 0) && (index < 6));
+ calculateTransforms();
+ if(index < 3)
+ {
+ m_equilibriumPoint[index] = m_calculatedLinearDiff[index];
+ }
+ else
+ {
+ m_equilibriumPoint[index + 3] = m_calculatedAxisAngleDiff[index];
+ }
+}
+
+
+
+void btGeneric6DofSpringConstraint::internalUpdateSprings(btConstraintInfo2* info)
+{
+ calculateTransforms();
+ // it is assumed that calculateTransforms() have been called before this call
+ int i;
+ btVector3 relVel = m_rbB.getLinearVelocity() - m_rbA.getLinearVelocity();
+ for(i = 0; i < 3; i++)
+ {
+ if(m_springEnabled[i])
+ {
+ // get current position of constraint
+ btScalar currPos = m_calculatedLinearDiff[i];
+ // calculate difference
+ btScalar delta = currPos - m_equilibriumPoint[i];
+ // spring force is (delta * m_stiffness) according to Hooke's Law
+ btScalar force = delta * m_springStiffness[i];
+ btScalar velFactor = info->fps * m_springDamping[i];
+ m_linearLimits.m_targetVelocity[i] = velFactor * force;
+ m_linearLimits.m_maxMotorForce[i] = btFabs(force) / info->fps;
+ }
+ }
+ for(i = 0; i < 3; i++)
+ {
+ if(m_springEnabled[i + 3])
+ {
+ // get current position of constraint
+ btScalar currPos = m_calculatedAxisAngleDiff[i];
+ // calculate difference
+ btScalar delta = currPos - m_equilibriumPoint[i+3];
+ // spring force is (-delta * m_stiffness) according to Hooke's Law
+ btScalar force = -delta * m_springStiffness[i+3];
+ btScalar velFactor = info->fps * m_springDamping[i+3];
+ m_angularLimits[i].m_targetVelocity = velFactor * force;
+ m_angularLimits[i].m_maxMotorForce = btFabs(force) / info->fps;
+ }
+ }
+}
+
+
+void btGeneric6DofSpringConstraint::getInfo2(btConstraintInfo2* info)
+{
+ // this will be called by constraint solver at the constraint setup stage
+ // set current motor parameters
+ internalUpdateSprings(info);
+ // do the rest of job for constraint setup
+ btGeneric6DofConstraint::getInfo2(info);
+}
+
+
+
+
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
index 0ae161d5bdf..8082eb1f132 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
@@ -54,6 +54,7 @@ public:
//! temp_variables
//!@{
btScalar m_currentLimitError;//! How much is violated this limit
+ btScalar m_currentPosition; //! current value of angle
int m_currentLimit;//!< 0=free, 1=at lo limit, 2=at hi limit
btScalar m_accumulatedImpulse;
//!@}
@@ -134,6 +135,7 @@ public:
btVector3 m_targetVelocity;//!< target motor velocity
btVector3 m_maxMotorForce;//!< max force on motor
btVector3 m_currentLimitError;//! How much is violated this limit
+ btVector3 m_currentLinearDiff;//! Current relative offset of constraint frames
int m_currentLimit[3];//!< 0=free, 1=at lower limit, 2=at upper limit
btTranslationalLimitMotor()
@@ -380,14 +382,21 @@ public:
//! Get the relative Euler angle
/*!
- \pre btGeneric6DofConstraint.buildJacobian must be called previously.
+ \pre btGeneric6DofConstraint::calculateTransforms() must be called previously.
*/
btScalar getAngle(int axis_index) const;
+ //! Get the relative position of the constraint pivot
+ /*!
+ \pre btGeneric6DofConstraint::calculateTransforms() must be called previously.
+ */
+ btScalar getRelativePivotPosition(int axis_index) const;
+
+
//! Test angular limit.
/*!
Calculates angular correction and returns true if limit needs to be corrected.
- \pre btGeneric6DofConstraint.buildJacobian must be called previously.
+ \pre btGeneric6DofConstraint::calculateTransforms() must be called previously.
*/
bool testAngularLimitMotor(int axis_index);
@@ -477,4 +486,34 @@ public:
};
+
+/// Generic 6 DOF constraint that allows to set spring motors to any translational and rotational DOF
+
+/// DOF index used in enableSpring() and setStiffness() means:
+/// 0 : translation X
+/// 1 : translation Y
+/// 2 : translation Z
+/// 3 : rotation X (3rd Euler rotational around new position of X axis, range [-PI+epsilon, PI-epsilon] )
+/// 4 : rotation Y (2nd Euler rotational around new position of Y axis, range [-PI/2+epsilon, PI/2-epsilon] )
+/// 5 : rotation Z (1st Euler rotational around Z axis, range [-PI+epsilon, PI-epsilon] )
+
+class btGeneric6DofSpringConstraint : public btGeneric6DofConstraint
+{
+protected:
+ bool m_springEnabled[6];
+ btScalar m_equilibriumPoint[6];
+ btScalar m_springStiffness[6];
+ btScalar m_springDamping[6]; // between 0 and 1 (1 == no damping)
+ void internalUpdateSprings(btConstraintInfo2* info);
+public:
+ btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);
+ void enableSpring(int index, bool onOff);
+ void setStiffness(int index, btScalar stiffness);
+ void setDamping(int index, btScalar damping);
+ void setEquilibriumPoint(); // set the current constraint position/orientation as an equilibrium point for all DOF
+ void setEquilibriumPoint(int index); // set the current constraint position/orientation as an equilibrium point for given DOF
+ virtual void getInfo2 (btConstraintInfo2* info);
+};
+
+
#endif //GENERIC_6DOF_CONSTRAINT_H
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
index 685a812d427..dbd09b39238 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
@@ -490,7 +490,7 @@ void btSequentialImpulseConstraintSolver::convertContact(btPersistentManifold* m
///warm starting (or zero if disabled)
- if (0)//infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING)
+ if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING)
{
solverConstraint.m_appliedImpulse = cp.m_appliedImpulse * infoGlobal.m_warmstartingFactor;
if (rb0)
@@ -539,9 +539,6 @@ void btSequentialImpulseConstraintSolver::convertContact(btPersistentManifold* m
if (!(infoGlobal.m_solverMode & SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION) && lat_rel_vel > SIMD_EPSILON)
{
cp.m_lateralFrictionDir1 /= btSqrt(lat_rel_vel);
- applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
- applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
- addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation);
if((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS))
{
cp.m_lateralFrictionDir2 = cp.m_lateralFrictionDir1.cross(cp.m_normalWorldOnB);
@@ -550,21 +547,26 @@ void btSequentialImpulseConstraintSolver::convertContact(btPersistentManifold* m
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2);
addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation);
}
+
+ applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
+ applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
+ addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation);
cp.m_lateralFrictionInitialized = true;
} else
{
//re-calculate friction direction every frame, todo: check if this is really needed
btPlaneSpace1(cp.m_normalWorldOnB,cp.m_lateralFrictionDir1,cp.m_lateralFrictionDir2);
- applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
- applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
-
- addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation);
if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS))
{
applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir2);
applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2);
addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation);
}
+
+ applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1);
+ applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1);
+ addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyIdA,solverBodyIdB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation);
+
cp.m_lateralFrictionInitialized = true;
}
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
index 50d06960379..133aed7271b 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
@@ -18,14 +18,14 @@ Added by Roman Ponomarev (rponom@gmail.com)
April 04, 2008
*/
-//-----------------------------------------------------------------------------
+
#include "btSliderConstraint.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
#include "LinearMath/btTransformUtil.h"
#include <new>
-//-----------------------------------------------------------------------------
+
void btSliderConstraint::initParams()
{
@@ -62,9 +62,9 @@ void btSliderConstraint::initParams()
m_maxAngMotorForce = btScalar(0.);
m_accumulatedAngMotorImpulse = btScalar(0.0);
-} // btSliderConstraint::initParams()
+}
+
-//-----------------------------------------------------------------------------
btSliderConstraint::btSliderConstraint()
:btTypedConstraint(SLIDER_CONSTRAINT_TYPE),
@@ -73,9 +73,9 @@ btSliderConstraint::btSliderConstraint()
// m_useSolveConstraintObsolete(true)
{
initParams();
-} // btSliderConstraint::btSliderConstraint()
+}
+
-//-----------------------------------------------------------------------------
btSliderConstraint::btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA)
: btTypedConstraint(SLIDER_CONSTRAINT_TYPE, rbA, rbB)
@@ -86,9 +86,25 @@ btSliderConstraint::btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const
// m_useSolveConstraintObsolete(true)
{
initParams();
-} // btSliderConstraint::btSliderConstraint()
+}
+
+
+static btRigidBody s_fixed(0, 0, 0);
+btSliderConstraint::btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB)
+ : btTypedConstraint(SLIDER_CONSTRAINT_TYPE, s_fixed, rbB)
+ ,
+ m_frameInB(frameInB),
+ m_useLinearReferenceFrameA(useLinearReferenceFrameB),
+ m_useSolveConstraintObsolete(false)
+// m_useSolveConstraintObsolete(true)
+{
+ ///not providing rigidbody B means implicitly using worldspace for body B
+// m_frameInA.getOrigin() = m_rbA.getCenterOfMassTransform()(m_frameInA.getOrigin());
+
+ initParams();
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::buildJacobian()
{
@@ -104,9 +120,9 @@ void btSliderConstraint::buildJacobian()
{
buildJacobianInt(m_rbB, m_rbA, m_frameInB, m_frameInA);
}
-} // btSliderConstraint::buildJacobian()
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::buildJacobianInt(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB)
{
@@ -159,9 +175,9 @@ void btSliderConstraint::buildJacobianInt(btRigidBody& rbA, btRigidBody& rbB, co
// clear accumulator for motors
m_accumulatedLinMotorImpulse = btScalar(0.0);
m_accumulatedAngMotorImpulse = btScalar(0.0);
-} // btSliderConstraint::buildJacobianInt()
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::getInfo1(btConstraintInfo1* info)
{
@@ -189,9 +205,9 @@ void btSliderConstraint::getInfo1(btConstraintInfo1* info)
info->nub--;
}
}
-} // btSliderConstraint::getInfo1()
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::getInfo2(btConstraintInfo2* info)
{
@@ -499,9 +515,9 @@ void btSliderConstraint::getInfo2(btConstraintInfo2* info)
info->m_constraintError[srow] *= getSoftnessLimAng();
} // if(limit)
} // if angular limit or powered
-} // btSliderConstraint::getInfo2()
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolverBody& bodyB,btScalar timeStep)
{
@@ -517,9 +533,9 @@ void btSliderConstraint::solveConstraintObsolete(btSolverBody& bodyA,btSolverBod
solveConstraintInt(m_rbB,bodyB, m_rbA,bodyA);
}
}
-} // btSliderConstraint::solveConstraint()
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::solveConstraintInt(btRigidBody& rbA, btSolverBody& bodyA,btRigidBody& rbB, btSolverBody& bodyB)
{
@@ -703,11 +719,11 @@ void btSliderConstraint::solveConstraintInt(btRigidBody& rbA, btSolverBody& body
bodyB.applyImpulse(btVector3(0,0,0), rbB.getInvInertiaTensorWorld()*axisA,-angImpulse);
}
}
-} // btSliderConstraint::solveConstraint()
+}
+
+
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
void btSliderConstraint::calculateTransforms(void){
if(m_useLinearReferenceFrameA || (!m_useSolveConstraintObsolete))
@@ -740,9 +756,9 @@ void btSliderConstraint::calculateTransforms(void){
normalWorld = m_calculatedTransformA.getBasis().getColumn(i);
m_depth[i] = m_delta.dot(normalWorld);
}
-} // btSliderConstraint::calculateTransforms()
+}
-//-----------------------------------------------------------------------------
+
void btSliderConstraint::testLinLimits(void)
{
@@ -769,9 +785,9 @@ void btSliderConstraint::testLinLimits(void)
{
m_depth[0] = btScalar(0.);
}
-} // btSliderConstraint::testLinLimits()
+}
+
-//-----------------------------------------------------------------------------
void btSliderConstraint::testAngLimits(void)
{
@@ -795,9 +811,9 @@ void btSliderConstraint::testAngLimits(void)
m_solveAngLim = true;
}
}
-} // btSliderConstraint::testAngLimits()
+}
-//-----------------------------------------------------------------------------
+
btVector3 btSliderConstraint::getAncorInA(void)
{
@@ -805,13 +821,13 @@ btVector3 btSliderConstraint::getAncorInA(void)
ancorInA = m_realPivotAInW + (m_lowerLinLimit + m_upperLinLimit) * btScalar(0.5) * m_sliderAxis;
ancorInA = m_rbA.getCenterOfMassTransform().inverse() * ancorInA;
return ancorInA;
-} // btSliderConstraint::getAncorInA()
+}
+
-//-----------------------------------------------------------------------------
btVector3 btSliderConstraint::getAncorInB(void)
{
btVector3 ancorInB;
ancorInB = m_frameInB.getOrigin();
return ancorInB;
-} // btSliderConstraint::getAncorInB();
+}
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
index 70fbce5d9b2..01cef59ed31 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
@@ -25,23 +25,23 @@ TODO:
#ifndef SLIDER_CONSTRAINT_H
#define SLIDER_CONSTRAINT_H
-//-----------------------------------------------------------------------------
+
#include "LinearMath/btVector3.h"
#include "btJacobianEntry.h"
#include "btTypedConstraint.h"
-//-----------------------------------------------------------------------------
+
class btRigidBody;
-//-----------------------------------------------------------------------------
+
#define SLIDER_CONSTRAINT_DEF_SOFTNESS (btScalar(1.0))
#define SLIDER_CONSTRAINT_DEF_DAMPING (btScalar(1.0))
#define SLIDER_CONSTRAINT_DEF_RESTITUTION (btScalar(0.7))
-//-----------------------------------------------------------------------------
+
class btSliderConstraint : public btTypedConstraint
{
@@ -126,6 +126,7 @@ protected:
public:
// constructors
btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);
+ btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB);
btSliderConstraint();
// overrides
virtual void buildJacobian();
@@ -223,7 +224,7 @@ public:
btVector3 getAncorInB(void);
};
-//-----------------------------------------------------------------------------
+
#endif //SLIDER_CONSTRAINT_H
diff --git a/extern/bullet2/src/CMakeLists.txt b/extern/bullet2/src/CMakeLists.txt
index 043fd3f6e7f..9b8a5a7e00e 100644
--- a/extern/bullet2/src/CMakeLists.txt
+++ b/extern/bullet2/src/CMakeLists.txt
@@ -1 +1,4 @@
-SUBDIRS( BulletCollision BulletDynamics LinearMath BulletSoftBody )
+ADD_SUBDIRECTORY(BulletCollision)
+ADD_SUBDIRECTORY(BulletDynamics)
+ADD_SUBDIRECTORY(LinearMath)
+ADD_SUBDIRECTORY(BulletSoftBody )
diff --git a/extern/bullet2/src/LinearMath/btScalar.h b/extern/bullet2/src/LinearMath/btScalar.h
index 822296164c1..08b2dee8af3 100644
--- a/extern/bullet2/src/LinearMath/btScalar.h
+++ b/extern/bullet2/src/LinearMath/btScalar.h
@@ -168,8 +168,12 @@ inline int btGetVersion()
///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision.
#if defined(BT_USE_DOUBLE_PRECISION)
typedef double btScalar;
+//this number could be bigger in double precision
+#define BT_LARGE_FLOAT 1e30
#else
typedef float btScalar;
+//keep BT_LARGE_FLOAT*BT_LARGE_FLOAT < FLT_MAX
+#define BT_LARGE_FLOAT 1e18f
#endif
diff --git a/extern/libopenjpeg/jp2.c b/extern/libopenjpeg/jp2.c
index 14f9493c401..b2831cfb0b5 100644
--- a/extern/libopenjpeg/jp2.c
+++ b/extern/libopenjpeg/jp2.c
@@ -561,6 +561,7 @@ opj_image_t* jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio, opj_codestream_info_t *c
image = j2k_decode(jp2->j2k, cio, cstr_info);
if(!image) {
opj_event_msg(cinfo, EVT_ERROR, "Failed to decode J2K image\n");
+ return NULL;
}
/* Set Image Color Space */
diff --git a/intern/CMakeLists.txt b/intern/CMakeLists.txt
index 1c0d795448c..697d0b6b575 100644
--- a/intern/CMakeLists.txt
+++ b/intern/CMakeLists.txt
@@ -24,10 +24,20 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(SoundSystem string ghost guardedalloc moto container memutil decimation iksolver boolop opennl)
+ADD_SUBDIRECTORY(SoundSystem)
+ADD_SUBDIRECTORY(string)
+ADD_SUBDIRECTORY(ghost)
+ADD_SUBDIRECTORY(guardedalloc)
+ADD_SUBDIRECTORY(moto)
+ADD_SUBDIRECTORY(container)
+ADD_SUBDIRECTORY(memutil)
+ADD_SUBDIRECTORY(decimation)
+ADD_SUBDIRECTORY(iksolver)
+ADD_SUBDIRECTORY(boolop)
+ADD_SUBDIRECTORY(opennl)
IF(WITH_ELBEEM)
- SUBDIRS(elbeem)
+ ADD_SUBDIRECTORY(elbeem)
ENDIF(WITH_ELBEEM)
-SUBDIRS(bsp)
+ADD_SUBDIRECTORY(bsp)
diff --git a/intern/SoundSystem/fmod/Makefile b/intern/SoundSystem/fmod/Makefile
deleted file mode 100644
index 47bc0348fe2..00000000000
--- a/intern/SoundSystem/fmod/Makefile
+++ /dev/null
@@ -1,43 +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): none yet.
-#
-# ***** END GPL LICENSE BLOCK *****
-#
-#
-
-LIBNAME = FmodSoundSystem
-DIR = $(OCGDIR)/intern/$(LIBNAME)
-
-include nan_compile.mk
-
-CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
-
-CPPFLAGS += -I$(NAN_FMOD)/include
-CPPFLAGS += -I$(NAN_STRING)/include
-CPPFLAGS += -I$(NAN_MOTO)/include
-CPPFLAGS += -I../intern
-CPPFLAGS += -I..
-CPPFLAGS += -I.
diff --git a/intern/SoundSystem/fmod/SND_FmodDevice.cpp b/intern/SoundSystem/fmod/SND_FmodDevice.cpp
deleted file mode 100644
index 3ba0802a5b0..00000000000
--- a/intern/SoundSystem/fmod/SND_FmodDevice.cpp
+++ /dev/null
@@ -1,574 +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- * SND_FmodDevice derived from SND_IAudioDevice
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef WIN32
-#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
-#endif //WIN32
-
-#include "SND_FmodDevice.h"
-#include "SoundDefines.h"
-#include "SND_Utils.h"
-
-SND_FmodDevice::SND_FmodDevice()
-{
- /* Removed the functionality for checking if noaudio was provided on */
- /* the commandline. */
- m_dspunit = NULL;
-
- m_audio = true;
-
- // let's check if we can get fmod to initialize...
- if (m_audio)
- {
- signed char MinHardwareChannels = FSOUND_SetMinHardwareChannels(NUM_FMOD_MIN_HW_CHANNELS);
- signed char MaxHardwareChannels = FSOUND_SetMaxHardwareChannels(NUM_FMOD_MAX_HW_CHANNELS);
-
- if (FSOUND_Init(MIXRATE, NUM_SOURCES, 0))
- {
- m_max_channels = FSOUND_GetMaxChannels();
- m_num_hardware_channels = FSOUND_GetNumHardwareChannels();
- m_num_software_channels = NUM_SOURCES;
-
- // let's get us a wavecache
- m_wavecache = new SND_WaveCache();
-
- int i;
- for (i = 0; i < NUM_BUFFERS; i++)
- m_buffers[i] = NULL;
-
- for (i = 0; i < NUM_SOURCES; i++)
- {
- m_sources[i] = NULL;
- m_frequencies[i] = 0;
- m_channels[i] = 0;
- }
- }
- else
- {
- m_audio = false;
- }
- }
-
-#ifdef ONTKEVER
- int numdrivers = FSOUND_GetNumDrivers();
- int output = FSOUND_GetOutput();
- int oputputrate = FSOUND_GetOutputRate();
- int mixer = FSOUND_GetMixer();
-
- printf("maxchannels is: %d\n", m_max_channels);
- printf("num hw channels is: %d\n", m_num_hardware_channels);
- printf("num sw channels is: %d\n", m_num_software_channels);
- printf("numdrivers is: %d\n", numdrivers);
- printf("output is: %d\n", output);
- printf("oputputrate is: %d\n", oputputrate);
- printf("mixer is: %d\n", mixer);
-#endif
-}
-
-
-
-SND_FmodDevice::~SND_FmodDevice()
-{
- // let's see if we used the cd. if not, just leave it alone
- SND_CDObject* pCD = SND_CDObject::Instance();
-
- if (pCD)
- {
- this->StopCD();
- SND_CDObject::DisposeSystem();
- }
-
- StopUsingDSP();
-
- FSOUND_Close();
-}
-
-
-
-void SND_FmodDevice::UseCD() const
-{
- // only fmod has CD support, so only create it here
- SND_CDObject::CreateSystem();
-}
-
-
-
-void SND_FmodDevice::MakeCurrent() const
-{
- // empty
-}
-
-
-
-SND_WaveSlot* SND_FmodDevice::LoadSample(const STR_String& name,
- void* memlocation,
- int size)
-{
- SND_WaveSlot* waveslot = NULL;
- STR_String samplename = name;
-
- if (m_audio)
- {
- /* first check if the sample is supported */
- if (SND_IsSampleValid(name, memlocation))
- {
- /* create the waveslot */
- waveslot = m_wavecache->GetWaveSlot(samplename);
-
- if (waveslot)
- {
- int buffer = waveslot->GetBuffer();
-
- /* load the sample from memory? */
- if (size && memlocation)
- {
- m_buffers[buffer] = FSOUND_Sample_Load(buffer, (char*)memlocation, FSOUND_LOADMEMORY, size);
-
- /* if the loading succeeded, fill the waveslot with info */
- if (m_buffers[buffer])
- {
- int sampleformat = SND_GetSampleFormat(memlocation);
- int numberofchannels = SND_GetNumberOfChannels(memlocation);
- int samplerate = SND_GetSampleRate(memlocation);
- int bitrate = SND_GetBitRate(memlocation);
- int numberofsamples = SND_GetNumberOfSamples(memlocation, size);
-
- waveslot->SetFileSize(size);
- waveslot->SetData(memlocation);
- waveslot->SetSampleFormat(sampleformat);
- waveslot->SetNumberOfChannels(numberofchannels);
- waveslot->SetSampleRate(samplerate);
- waveslot->SetBitRate(bitrate);
- waveslot->SetNumberOfSamples(numberofsamples);
- }
- }
- /* or from file? */
- else
- {
- m_buffers[buffer] = FSOUND_Sample_Load(buffer, samplename.Ptr(), FSOUND_LOOP_NORMAL, NULL);
- }
-
-#ifdef ONTKEVER
- int error = FSOUND_GetError();
- printf("sample load: errornumber is: %d\n", error);
-#endif
-
- /* if the loading succeeded, mark the waveslot */
- if (m_buffers[buffer])
- {
- waveslot->SetLoaded(true);
- }
- /* or when it failed, free the waveslot */
- else
- {
- m_wavecache->RemoveSample(waveslot->GetSampleName(), waveslot->GetBuffer());
- waveslot = NULL;
- }
- }
- }
- }
-
- return waveslot;
-}
-
-
-
-
-// listener's and general stuff //////////////////////////////////////////////////////
-
-
-
-/* sets the global dopplervelocity */
-void SND_FmodDevice::SetDopplerVelocity(MT_Scalar dopplervelocity) const
-{
- /* not supported by fmod */
- FSOUND_3D_Listener_SetDopplerFactor(dopplervelocity);
-}
-
-
-
-/* sets the global dopplerfactor */
-void SND_FmodDevice::SetDopplerFactor(MT_Scalar dopplerfactor) const
-{
- FSOUND_3D_Listener_SetDopplerFactor(dopplerfactor);
-}
-
-
-
-/* sets the global rolloff factor */
-void SND_FmodDevice::SetListenerRollOffFactor(MT_Scalar rollofffactor) const
-{
- // not implemented in openal
-}
-
-
-
-void SND_FmodDevice::NextFrame() const
-{
- FSOUND_3D_Update();
-}
-
-
-
-// set the gain for the listener
-void SND_FmodDevice::SetListenerGain(float gain) const
-{
- int fmod_gain = (int)(gain * 255);
- FSOUND_SetSFXMasterVolume(fmod_gain);
-}
-
-
-
-void SND_FmodDevice::InitListener()
-{
- // initialize the listener with these values that won't change
- // (as long as we can have only one listener)
- // now we can superimpose all listeners on each other (for they
- // have the same settings)
- float lispos[3] = {0,0,0};
- float lisvel[3] = {0,0,0};
-
- FSOUND_3D_Listener_SetAttributes(lispos, lisvel, 0, -1, 0, 0, 0, 1);
-}
-
-
-
-// source playstate stuff ////////////////////////////////////////////////////////////
-
-
-
-// check if the sound's still playing
-int SND_FmodDevice::GetPlayState(int id)
-{
- int result = SND_STOPPED;
-
- // klopt niet, fixen
- signed char isplaying = FSOUND_IsPlaying(id);
-
- if (isplaying)
- {
- result = SND_PLAYING;
- }
-
-/* hi reevan, just swap // of these 2 lines */
-// return result;
- return 0;
-}
-
-
-
-/* sets the buffer */
-void SND_FmodDevice::SetObjectBuffer(int id, unsigned int buffer)
-{
- m_sources[id] = m_buffers[buffer];
-}
-
-
-
-// make the source play
-void SND_FmodDevice::PlayObject(int id)
-{
- m_channels[id] = FSOUND_PlaySound(FSOUND_FREE, m_sources[id]);
- m_frequencies[id] = FSOUND_GetFrequency(m_channels[id]);
-// printf("fmod: play \n");
-}
-
-
-
-// make the source stop
-void SND_FmodDevice::StopObject(int id) const
-{
- FSOUND_StopSound(m_channels[id]);
-// printf("fmod: stop \n");
-}
-
-
-
-// stop all sources
-void SND_FmodDevice::StopAllObjects()
-{
- FSOUND_StopSound(FSOUND_ALL);
-}
-
-
-
-// pause the source
-void SND_FmodDevice::PauseObject(int id) const
-{
- FSOUND_StopSound(m_channels[id]);
-}
-
-
-
-// source properties stuff ////////////////////////////////////////////////////////////
-
-
-
-// give openal the object's pitch
-void SND_FmodDevice::SetObjectPitch(int id, MT_Scalar pitch) const
-{
- pitch = pitch * m_frequencies[id];
- char result = FSOUND_SetFrequency(m_channels[id], (int)pitch);
-}
-
-
-
-// give openal the object's gain
-void SND_FmodDevice::SetObjectGain(int id, MT_Scalar gain) const
-{
- int vol = (int)(gain * 255);
- FSOUND_SetVolume(m_channels[id], vol);
-}
-
-
-
-// give openal the object's looping
-void SND_FmodDevice::SetObjectLoop(int id, unsigned int loopmode) const
-{
-// printf("loopmode: %d\n", loopmode);
- switch (loopmode)
- {
- case SND_LOOP_OFF:
- {
-#ifndef __APPLE__
- char result = FSOUND_Sample_SetLoopMode(m_sources[id], FSOUND_LOOP_OFF);
-#else
- char result = FSOUND_SetLoopMode(m_sources[id], FSOUND_LOOP_OFF);
-#endif
-// char result = FSOUND_SetLoopMode(m_channels[id], FSOUND_LOOP_OFF);
- break;
- }
- case SND_LOOP_NORMAL:
- {
-#ifndef __APPLE__
- char result = FSOUND_Sample_SetLoopMode(m_sources[id], FSOUND_LOOP_NORMAL);
-#else
- char result = FSOUND_SetLoopMode(m_sources[id], FSOUND_LOOP_NORMAL);
-#endif
-// char result = FSOUND_SetLoopMode(m_channels[id], FSOUND_LOOP_NORMAL);
- break;
- }
- case SND_LOOP_BIDIRECTIONAL:
- {
-#ifndef __APPLE__
- char result = FSOUND_Sample_SetLoopMode(m_sources[id], FSOUND_LOOP_BIDI);
-#else
- char result = FSOUND_SetLoopMode(m_sources[id], FSOUND_LOOP_BIDI);
-#endif
-// char result = FSOUND_SetLoopMode(m_channels[id], FSOUND_LOOP_NORMAL);
- break;
- }
- default:
- break;
- }
-}
-
-
-
-void SND_FmodDevice::SetObjectLoopPoints(int id, unsigned int loopstart, unsigned int loopend) const
-{
- FSOUND_Sample_SetLoopPoints(m_sources[id], loopstart, loopend);
-}
-
-
-
-void SND_FmodDevice::SetObjectMinGain(int id, MT_Scalar mingain) const
-{
- /* not supported by fmod */
-}
-
-
-
-void SND_FmodDevice::SetObjectMaxGain(int id, MT_Scalar maxgain) const
-{
- /* not supported by fmod */
-}
-
-
-
-void SND_FmodDevice::SetObjectRollOffFactor(int id, MT_Scalar rollofffactor) const
-{
- /* not supported by fmod */
-}
-
-
-
-void SND_FmodDevice::SetObjectReferenceDistance(int id, MT_Scalar referencedistance) const
-{
- /* not supported by fmod */
-}
-
-
-
-// give openal the object's position
-void SND_FmodDevice::ObjectIs2D(int id) const
-{
- float obpos[3] = {0,0,0};
- float obvel[3] = {0,0,0};
-
- FSOUND_3D_SetAttributes(m_channels[id], obpos, obvel);
-}
-
-
-
-void SND_FmodDevice::SetObjectTransform(int id,
- const MT_Vector3& position,
- const MT_Vector3& velocity,
- const MT_Matrix3x3& orientation,
- const MT_Vector3& lisposition,
- const MT_Scalar& rollofffactor) const
-{
- float obpos[3];
- float obvel[3];
-
- obpos[0] = (float)position[0] * (float)rollofffactor; //x (l/r)
- obpos[1] = (float)position[1] * (float)rollofffactor;
- obpos[2] = (float)position[2] * (float)rollofffactor;
-
- velocity.getValue(obvel);
- FSOUND_3D_SetAttributes(m_channels[id], obpos, obvel);
-}
-
-
-
-// cd support stuff ////////////////////////////////////////////////////////////
-
-
-void SND_FmodDevice::PlayCD(int track) const
-{
-#ifndef __APPLE__
- signed char result = FSOUND_CD_Play(track);
-#else
- signed char result = FSOUND_CD_Play(0, track);
-#endif
-
-#ifdef ONTKEVER
- printf("SND_FmodDevice::PlayCD(): track=%d, result=%d\n", track, (int)result);
-#endif
-}
-
-
-
-void SND_FmodDevice::PauseCD(bool pause) const
-{
-#ifndef __APPLE__
- signed char result = FSOUND_CD_SetPaused(pause);
-#else
- signed char result = FSOUND_CD_SetPaused(0, pause);
-#endif
-
-#ifdef ONTKEVER
- printf("SND_FmodDevice::PauseCD(): pause=%d, result=%d\n", pause, (int)result);
-#endif
-}
-
-
-
-void SND_FmodDevice::StopCD() const
-{
- SND_CDObject* pCD = SND_CDObject::Instance();
-
- if (pCD)
- {
- if (pCD->GetUsed())
- {
-#ifndef __APPLE__
- signed char result = FSOUND_CD_Stop();
-#else
- signed char result = FSOUND_CD_Stop(0);
-#endif
-
-#ifdef ONTKEVER
- printf("SND_FmodDevice::StopCD(): result=%d\n", (int)result);
-#endif
- }
- }
-}
-
-
-
-void SND_FmodDevice::SetCDPlaymode(int playmode) const
-{
-#ifndef __APPLE__
- FSOUND_CD_SetPlayMode(playmode);
-#else
- FSOUND_CD_SetPlayMode(0, playmode);
-#endif
-
-#ifdef ONTKEVER
- printf("SND_FmodDevice::SetCDPlaymode(): playmode=%d,\n", playmode);
-#endif
-}
-
-
-
-void SND_FmodDevice::SetCDGain(MT_Scalar gain) const
-{
- int volume = gain * 255;
-#ifndef __APPLE__
- signed char result = FSOUND_CD_SetVolume(volume);
-#else
- signed char result = FSOUND_CD_SetVolume(0, volume);
-#endif
-
-#ifdef ONTKEVER
- printf("SND_FmodDevice::SetCDGain(): gain=%f, volume=%d, result=%d\n", gain, volume, (int)result);
-#endif
-}
-
-
-
-void SND_FmodDevice::StartUsingDSP()
-{
- m_dspunit = FSOUND_DSP_GetFFTUnit();
-
- FSOUND_DSP_SetActive(m_dspunit, true);
-}
-
-
-
-float* SND_FmodDevice::GetSpectrum()
-{
- m_spectrum = FSOUND_DSP_GetSpectrum();
-
- return m_spectrum;
-}
-
-
-
-void SND_FmodDevice::StopUsingDSP()
-{
- if (m_dspunit)
- FSOUND_DSP_SetActive(m_dspunit, false);
-}
diff --git a/intern/SoundSystem/fmod/SND_FmodDevice.h b/intern/SoundSystem/fmod/SND_FmodDevice.h
deleted file mode 100644
index 294ee4e3a72..00000000000
--- a/intern/SoundSystem/fmod/SND_FmodDevice.h
+++ /dev/null
@@ -1,103 +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-#ifndef SND_FMODDEVICE
-#define SND_FMODDEVICE
-
-#include "fmod.h"
-#include "SND_AudioDevice.h"
-#include "SoundDefines.h"
-
-class SND_FmodDevice : public SND_AudioDevice
-{
-public:
- SND_FmodDevice();
- ~SND_FmodDevice();
-
- SND_WaveSlot* LoadSample(const STR_String& samplename,
- void* memlocation,
- int size);
-
- void InitListener();
- void SetListenerGain(float gain) const;
- void SetDopplerVelocity(MT_Scalar dopplervelocity) const;
- void SetDopplerFactor(MT_Scalar dopplerfactor) const;
- void SetListenerRollOffFactor(MT_Scalar rollofffactor) const;
-
- void MakeCurrent() const;
- void NextFrame() const;
- void UseCD() const;
-
- void SetObjectBuffer(int id, unsigned int buffer);
- int GetPlayState(int id);
- void PlayObject(int id);
- void StopObject(int id) const;
- void StopAllObjects();
- void PauseObject(int id) const;
-
- void SetObjectLoop(int id, unsigned int loopmode) const;
- void SetObjectLoopPoints(int id, unsigned int loopstart, unsigned int loopend) const;
- void SetObjectPitch(int id, MT_Scalar pitch) const;
- void SetObjectGain(int id, MT_Scalar gain) const;
- void SetObjectMinGain(int id, MT_Scalar mingain) const;
- void SetObjectMaxGain(int id, MT_Scalar maxgain) const;
- void SetObjectRollOffFactor(int id, MT_Scalar rolloff) const;
- void SetObjectReferenceDistance(int id, MT_Scalar distance) const;
-
- void SetObjectTransform(int id,
- const MT_Vector3& position,
- const MT_Vector3& velocity,
- const MT_Matrix3x3& orientation,
- const MT_Vector3& lisposition,
- const MT_Scalar& rollofffactor) const;
- void ObjectIs2D(int id) const;
-
- void PlayCD(int track) const;
- void PauseCD(bool pause) const;
- void StopCD() const;
- void SetCDPlaymode(int playmode) const;
- void SetCDGain(MT_Scalar gain) const;
-
- void StartUsingDSP();
- float* GetSpectrum();
- void StopUsingDSP();
-
-private:
- FSOUND_SAMPLE* m_buffers[NUM_BUFFERS];
- FSOUND_SAMPLE* m_sources[NUM_SOURCES];
- FSOUND_DSPUNIT* m_dspunit;
- int m_frequencies[NUM_SOURCES];
- int m_max_channels;
- int m_num_hardware_channels;
- int m_num_software_channels;
- int m_channels[NUM_SOURCES];
- float* m_spectrum;
-};
-
-#endif //SND_FMODDEVICE
-
diff --git a/intern/SoundSystem/openal/SND_OpenALDevice.cpp b/intern/SoundSystem/openal/SND_OpenALDevice.cpp
index 3649cf6de5a..424a05246ac 100644
--- a/intern/SoundSystem/openal/SND_OpenALDevice.cpp
+++ b/intern/SoundSystem/openal/SND_OpenALDevice.cpp
@@ -43,11 +43,9 @@
#ifdef APPLE_FRAMEWORK_FIX
#include <al.h>
#include <alc.h>
-#include <alut.h>
#else
#include <AL/al.h>
#include <AL/alc.h>
-#include <AL/alut.h>
#endif
#include <stdio.h>
@@ -61,13 +59,12 @@
#include <signal.h>
-/* untill openal gets unified we need this hack for non-windows systems */
-#if !defined(WIN32) && !defined(ALC_MAJOR_VERSION)
+/*************************** ALUT replacement *****************************/
-#include <malloc.h>
+/* instead of relying on alut, we just implement our own
+ * WAV loading functions, hopefully more reliable */
-ALvoid alutLoadWAVMemory(ALbyte *memory,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop);
-ALvoid alutUnloadWAV(ALenum format,ALvoid *data,ALsizei size,ALsizei freq);
+#include <stdlib.h>
typedef struct /* WAV File-header */
{
@@ -120,93 +117,189 @@ typedef struct /* WAV Chunk-header */
ALuint Size;
} WAVChunkHdr_Struct;
-ALvoid alutLoadWAVMemory(ALbyte *memory,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop)
+static void *SND_loadFileIntoMemory(const char *filename, int *len_r)
+{
+ FILE *fp= fopen(filename, "rb");
+ void *data;
+
+ if (!fp) {
+ *len_r= -1;
+ return NULL;
+ }
+
+ fseek(fp, 0L, SEEK_END);
+ *len_r= ftell(fp);
+ fseek(fp, 0L, SEEK_SET);
+
+ data= malloc(*len_r);
+ if (!data) {
+ *len_r= -1;
+ return NULL;
+ }
+
+ if (fread(data, *len_r, 1, fp)!=1) {
+ *len_r= -1;
+ free(data);
+ return NULL;
+ }
+
+ return data;
+}
+
+#define TEST_SWITCH_INT(a) if(big_endian) { \
+ char s_i, *p_i; \
+ p_i= (char *)&(a); \
+ s_i=p_i[0]; p_i[0]=p_i[3]; p_i[3]=s_i; \
+ s_i=p_i[1]; p_i[1]=p_i[2]; p_i[2]=s_i; }
+
+#define TEST_SWITCH_SHORT(a) if(big_endian) { \
+ char s_i, *p_i; \
+ p_i= (char *)&(a); \
+ s_i=p_i[0]; p_i[0]=p_i[1]; p_i[1]=s_i; }
+
+static int stream_read(void *out, ALbyte **stream, ALsizei size, ALsizei *memsize)
+{
+ if(size <= *memsize) {
+ memcpy(out, *stream, size);
+ return 1;
+ }
+ else {
+ memset(out, 0, size);
+ return 0;
+ }
+}
+
+static int stream_skip(ALbyte **stream, ALsizei size, ALsizei *memsize)
+{
+ if(size <= *memsize) {
+ *stream += size;
+ *memsize -= size;
+ return 1;
+ }
+ else
+ return 0;
+}
+
+ALvoid SND_alutLoadWAVMemory(ALbyte *memory,ALsizei memsize,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop)
{
WAVChunkHdr_Struct ChunkHdr;
WAVFmtExHdr_Struct FmtExHdr;
WAVFileHdr_Struct FileHdr;
WAVSmplHdr_Struct SmplHdr;
WAVFmtHdr_Struct FmtHdr;
- ALbyte *Stream;
+ ALbyte *Stream= memory;
+ int test_endian= 1;
+ int big_endian= !((char*)&test_endian)[0];
*format=AL_FORMAT_MONO16;
*data=NULL;
*size=0;
*freq=22050;
*loop=AL_FALSE;
- if (memory)
+
+ if(!Stream)
+ return;
+
+ stream_read(&FileHdr,&Stream,sizeof(WAVFileHdr_Struct),&memsize);
+ stream_skip(&Stream,sizeof(WAVFileHdr_Struct),&memsize);
+
+ TEST_SWITCH_INT(FileHdr.Size);
+ FileHdr.Size=((FileHdr.Size+1)&~1)-4;
+
+ while((FileHdr.Size!=0) && stream_read(&ChunkHdr,&Stream,sizeof(WAVChunkHdr_Struct),&memsize))
{
- Stream=memory;
- if (Stream)
+ TEST_SWITCH_INT(ChunkHdr.Size);
+ stream_skip(&Stream,sizeof(WAVChunkHdr_Struct),&memsize);
+
+ if (!memcmp(ChunkHdr.Id,"fmt ",4))
{
- memcpy(&FileHdr,Stream,sizeof(WAVFileHdr_Struct));
- Stream+=sizeof(WAVFileHdr_Struct);
- FileHdr.Size=((FileHdr.Size+1)&~1)-4;
- while ((FileHdr.Size!=0)&&(memcpy(&ChunkHdr,Stream,sizeof(WAVChunkHdr_Struct))))
+ stream_read(&FmtHdr,&Stream,sizeof(WAVFmtHdr_Struct),&memsize);
+
+ TEST_SWITCH_SHORT(FmtHdr.Format);
+ TEST_SWITCH_SHORT(FmtHdr.Channels);
+ TEST_SWITCH_INT(FmtHdr.SamplesPerSec);
+ TEST_SWITCH_INT(FmtHdr.BytesPerSec);
+ TEST_SWITCH_SHORT(FmtHdr.BlockAlign);
+ TEST_SWITCH_SHORT(FmtHdr.BitsPerSample);
+
+ if (FmtHdr.Format==0x0001)
{
- Stream+=sizeof(WAVChunkHdr_Struct);
- if (!memcmp(ChunkHdr.Id,"fmt ",4))
- {
- memcpy(&FmtHdr,Stream,sizeof(WAVFmtHdr_Struct));
- if (FmtHdr.Format==0x0001)
- {
- *format=(FmtHdr.Channels==1?
- (FmtHdr.BitsPerSample==8?AL_FORMAT_MONO8:AL_FORMAT_MONO16):
- (FmtHdr.BitsPerSample==8?AL_FORMAT_STEREO8:AL_FORMAT_STEREO16));
- *freq=FmtHdr.SamplesPerSec;
- Stream+=ChunkHdr.Size;
- }
- else
- {
- memcpy(&FmtExHdr,Stream,sizeof(WAVFmtExHdr_Struct));
- Stream+=ChunkHdr.Size;
- }
- }
- else if (!memcmp(ChunkHdr.Id,"data",4))
+ *format=(FmtHdr.Channels==1?
+ (FmtHdr.BitsPerSample==8?AL_FORMAT_MONO8:AL_FORMAT_MONO16):
+ (FmtHdr.BitsPerSample==8?AL_FORMAT_STEREO8:AL_FORMAT_STEREO16));
+ *freq=FmtHdr.SamplesPerSec;
+ }
+ else
+ {
+ stream_read(&FmtExHdr,&Stream,sizeof(WAVFmtExHdr_Struct),&memsize);
+ TEST_SWITCH_SHORT(FmtExHdr.Size);
+ TEST_SWITCH_SHORT(FmtExHdr.SamplesPerBlock);
+ }
+ }
+ else if (!memcmp(ChunkHdr.Id,"data",4))
+ {
+ if (FmtHdr.Format==0x0001)
+ {
+ if((ALsizei)ChunkHdr.Size <= memsize)
{
- if (FmtHdr.Format==0x0001)
- {
- *size=ChunkHdr.Size;
- *data=malloc(ChunkHdr.Size+31);
- if (*data) memcpy(*data,Stream,ChunkHdr.Size);
+ *size=ChunkHdr.Size;
+ *data=malloc(ChunkHdr.Size+31);
+
+ if (*data) {
+ stream_read(*data,&Stream,ChunkHdr.Size,&memsize);
memset(((char *)*data)+ChunkHdr.Size,0,31);
- Stream+=ChunkHdr.Size;
- }
- else if (FmtHdr.Format==0x0011)
- {
- //IMA ADPCM
- }
- else if (FmtHdr.Format==0x0055)
- {
- //MP3 WAVE
+
+ if(FmtHdr.BitsPerSample == 16 && big_endian) {
+ int a, len= *size/2;
+ short *samples= (short*)*data;
+
+ for(a=0; a<len; a++) {
+ TEST_SWITCH_SHORT(samples[a])
+ }
+ }
}
}
- else if (!memcmp(ChunkHdr.Id,"smpl",4))
- {
- memcpy(&SmplHdr,Stream,sizeof(WAVSmplHdr_Struct));
- *loop = (SmplHdr.Loops ? AL_TRUE : AL_FALSE);
- Stream+=ChunkHdr.Size;
- }
- else Stream+=ChunkHdr.Size;
- Stream+=ChunkHdr.Size&1;
- FileHdr.Size-=(((ChunkHdr.Size+1)&~1)+8);
+ }
+ else if (FmtHdr.Format==0x0011)
+ {
+ //IMA ADPCM
+ }
+ else if (FmtHdr.Format==0x0055)
+ {
+ //MP3 WAVE
}
}
+ else if (!memcmp(ChunkHdr.Id,"smpl",4))
+ {
+ stream_read(&SmplHdr,&Stream,sizeof(WAVSmplHdr_Struct),&memsize);
+
+ TEST_SWITCH_INT(SmplHdr.Manufacturer);
+ TEST_SWITCH_INT(SmplHdr.Product);
+ TEST_SWITCH_INT(SmplHdr.SamplePeriod);
+ TEST_SWITCH_INT(SmplHdr.Note);
+ TEST_SWITCH_INT(SmplHdr.FineTune);
+ TEST_SWITCH_INT(SmplHdr.SMPTEFormat);
+ TEST_SWITCH_INT(SmplHdr.SMPTEOffest);
+ TEST_SWITCH_INT(SmplHdr.Loops);
+ TEST_SWITCH_INT(SmplHdr.SamplerData);
+
+ *loop = (SmplHdr.Loops ? AL_TRUE : AL_FALSE);
+ }
+
+ if(!stream_skip(&Stream, ChunkHdr.Size + (ChunkHdr.Size&1), &memsize))
+ break;
+
+ FileHdr.Size-=(((ChunkHdr.Size+1)&~1)+8);
}
}
-ALvoid alutUnloadWAV(ALenum format,ALvoid *data,ALsizei size,ALsizei freq)
+ALvoid SND_alutUnloadWAV(ALenum format,ALvoid *data,ALsizei size,ALsizei freq)
{
if (data)
free(data);
}
-#endif /* WIN32 */
-
-#ifdef __APPLE__
-#define OUDE_OPENAL 1
-#endif
-
+/************************ Device Implementation ****************************/
SND_OpenALDevice::SND_OpenALDevice()
: SND_AudioDevice(),
@@ -223,10 +316,6 @@ SND_OpenALDevice::SND_OpenALDevice()
// let's check if we can get openal to initialize...
if (m_audio)
{
-#ifdef OUDE_OPENAL
- m_audio = true; // openal_2.12
- alutInit(NULL, NULL); // openal_2.12
-#else
m_audio = false;
ALCdevice *dev = alcOpenDevice(NULL);
@@ -236,7 +325,6 @@ SND_OpenALDevice::SND_OpenALDevice()
if (m_context) {
#ifdef AL_VERSION_1_1
alcMakeContextCurrent((ALCcontext*)m_context);
- alutInitWithoutContext(NULL, NULL); /* in this case we dont want alut to initialize the context, see above */
#else
alcMakeContextCurrent(m_context);
#endif
@@ -259,7 +347,6 @@ SND_OpenALDevice::SND_OpenALDevice()
}
}
-#endif
}
// then try to generate some buffers
@@ -283,7 +370,7 @@ SND_OpenALDevice::SND_OpenALDevice()
// next: the sources
if (m_audio)
{
-#ifdef OUDE_OPENAL
+#ifdef __APPLE__
ALenum alc_error = ALC_NO_ERROR; // openal_2.12
#elif defined(_WIN32)
// alcGetError has no arguments on windows
@@ -375,20 +462,11 @@ SND_OpenALDevice::~SND_OpenALDevice()
if (m_cdrom)
delete m_cdrom;
#endif
-#ifdef OUDE_OPENAL
- if (m_audio)
- alutExit();
-#else
if (m_device)
alcCloseDevice((ALCdevice*) m_device);
-#ifdef AL_VERSION_1_1
- alutExit();
-#endif
-#endif
}
-
SND_WaveSlot* SND_OpenALDevice::LoadSample(const STR_String& name,
void* memlocation,
int size)
@@ -406,23 +484,22 @@ SND_WaveSlot* SND_OpenALDevice::LoadSample(const STR_String& name,
{
if (waveslot)
{
+ bool freemem = false;
int buffer = waveslot->GetBuffer();
void* data = NULL;
-#ifndef __APPLE__
char loop = 'a';
-#endif
int sampleformat, bitrate, numberofchannels;
ALenum al_error = alGetError();
-
-#ifdef OUDE_OPENAL
- ALsizei samplerate, numberofsamples; // openal_2.12
-#else
- int samplerate, numberofsamples; // openal_2.14+
-#endif
+ ALsizei samplerate, numberofsamples; // openal_2.14+
/* Give them some safe defaults just incase */
bitrate = numberofchannels = 0;
+ if (!(size && memlocation)) {
+ memlocation = SND_loadFileIntoMemory(samplename.Ptr(), &size);
+ freemem = true;
+ }
+
/* load the sample from memory? */
if (size && memlocation)
{
@@ -437,33 +514,14 @@ SND_WaveSlot* SND_OpenALDevice::LoadSample(const STR_String& name,
bitrate = SND_GetBitRate(memlocation);
/* load the sample into openal */
-#if defined(OUDE_OPENAL) || defined (__APPLE__)
- alutLoadWAVMemory((char*)memlocation, &sampleformat, &data, &numberofsamples, &samplerate); // openal_2.12
-#else
-#ifdef AL_VERSION_1_1
- float frequency = 0.0f;
- data = alutLoadMemoryFromFileImage(memlocation, size, &sampleformat, &numberofsamples, &frequency);
- samplerate = (int)frequency;
-#else
- alutLoadWAVMemory((signed char*)memlocation, &sampleformat, &data, &numberofsamples, &samplerate, &loop);// openal_2.14+
-
-#endif
-#endif
- /* put it in the buffer */
- alBufferData(m_buffers[buffer], sampleformat, data, numberofsamples, samplerate);
- }
- /* or from file? */
- else
- {
-#ifdef __APPLE__
- alutLoadWAVFile((ALbyte *)samplename.Ptr(), &sampleformat, &data, &numberofsamples, &samplerate);
-#else
- alutLoadWAVFile((ALbyte *)samplename.Ptr(), &sampleformat, &data, &numberofsamples, &samplerate, &loop);
-#endif
+ SND_alutLoadWAVMemory((ALbyte*)memlocation, size, &sampleformat, &data, &numberofsamples, &samplerate, &loop);
/* put it in the buffer */
alBufferData(m_buffers[buffer], sampleformat, data, numberofsamples, samplerate);
}
+ if(freemem)
+ free(memlocation);
+
/* fill the waveslot with info */
al_error = alGetError();
if (al_error == AL_NO_ERROR && m_buffers[buffer])
@@ -486,11 +544,7 @@ SND_WaveSlot* SND_OpenALDevice::LoadSample(const STR_String& name,
}
/* and free the original stuff (copy was made in openal) */
-#if defined(OUDE_OPENAL) || defined (__APPLE__) || !defined(AL_VERSION_1_1)
- alutUnloadWAV(sampleformat, data, numberofsamples, samplerate);
-#else
- free(data);
-#endif
+ SND_alutUnloadWAV(sampleformat, data, numberofsamples, samplerate);
}
}
else
@@ -594,7 +648,7 @@ int SND_OpenALDevice::GetPlayState(int id)
#ifdef __APPLE__
alGetSourcei(m_sources[id], AL_SOURCE_STATE, &alstate);
#else
- alGetSourceiv(m_sources[id], AL_SOURCE_STATE, &alstate);
+ alGetSourceiv(m_sources[id], AL_SOURCE_STATE, &alstate);
#endif
switch(alstate)
diff --git a/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp b/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp
index b1bac964c61..5054c39e8a1 100644
--- a/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp
+++ b/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp
@@ -43,6 +43,8 @@
#ifndef DISABLE_SDL
#include <SDL.h>
+#else
+#include <stdio.h>
#endif
SND_SDLCDDevice::SND_SDLCDDevice() :
diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp
index 1043d0938b4..fb1b96fcbc7 100644
--- a/intern/ghost/intern/GHOST_SystemCarbon.cpp
+++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp
@@ -34,7 +34,6 @@
* @date May 7, 2001
*/
-
#include <Carbon/Carbon.h>
#include <ApplicationServices/ApplicationServices.h>
#include "GHOST_SystemCarbon.h"
@@ -430,6 +429,29 @@ GHOST_IWindow* GHOST_SystemCarbon::createWindow(
return window;
}
+GHOST_TSuccess GHOST_SystemCarbon::beginFullScreen(const GHOST_DisplaySetting& setting, GHOST_IWindow** window, const bool stereoVisual)
+{
+ GHOST_TSuccess success = GHOST_kFailure;
+
+ // need yo make this Carbon all on 10.5 for fullscreen to work correctly
+ CGCaptureAllDisplays();
+
+ success = GHOST_System::beginFullScreen( setting, window, stereoVisual);
+
+ if( success != GHOST_kSuccess ) {
+ // fullscreen failed for other reasons, release
+ CGReleaseAllDisplays();
+ }
+
+ return success;
+}
+
+GHOST_TSuccess GHOST_SystemCarbon::endFullScreen(void)
+{
+ CGReleaseAllDisplays();
+ return GHOST_System::endFullScreen();
+}
+
/* this is an old style low level event queue.
As we want to handle our own timers, this is ok.
the full screen hack should be removed */
diff --git a/intern/ghost/intern/GHOST_SystemCarbon.h b/intern/ghost/intern/GHOST_SystemCarbon.h
index 62d45ee769d..5b3b786a5ac 100644
--- a/intern/ghost/intern/GHOST_SystemCarbon.h
+++ b/intern/ghost/intern/GHOST_SystemCarbon.h
@@ -118,6 +118,14 @@ public:
const GHOST_TEmbedderWindowID parentWindow = 0
);
+ virtual GHOST_TSuccess beginFullScreen(
+ const GHOST_DisplaySetting& setting,
+ GHOST_IWindow** window,
+ const bool stereoVisual
+ );
+
+ virtual GHOST_TSuccess endFullScreen( void );
+
/***************************************************************************************
** Event management functionality
***************************************************************************************/
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp
index ce1a42176bd..759951802af 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.cpp
+++ b/intern/ghost/intern/GHOST_WindowWin32.cpp
@@ -117,16 +117,18 @@ GHOST_WindowWin32::GHOST_WindowWin32(
m_maxPressure(0)
{
if (state != GHOST_kWindowStateFullScreen) {
- /* Convert client size into window size */
- width += GetSystemMetrics(SM_CXSIZEFRAME)*2;
- height += GetSystemMetrics(SM_CYSIZEFRAME)*2 + GetSystemMetrics(SM_CYCAPTION);
+ // take taskbar into account
+ RECT rect;
+ SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
+ height = rect.bottom - rect.top;
+ width = rect.right - rect.left;
m_hWnd = ::CreateWindow(
s_windowClassName, // pointer to registered class name
title, // pointer to window name
WS_OVERLAPPEDWINDOW, // window style
- left, // horizontal position of window
- top, // vertical position of window
+ rect.left, // horizontal position of window
+ rect.top, // vertical position of window
width, // window width
height, // window height
0, // handle to parent or owner window
@@ -239,7 +241,7 @@ GHOST_WindowWin32::~GHOST_WindowWin32()
if (m_wintab) {
GHOST_WIN32_WTClose fpWTClose = ( GHOST_WIN32_WTClose ) ::GetProcAddress( m_wintab, "WTClose" );
if (fpWTClose) {
- if (m_tablet)
+ if (m_tablet)
fpWTClose(m_tablet);
if (m_tabletData)
delete m_tabletData;
@@ -297,15 +299,17 @@ void GHOST_WindowWin32::getWindowBounds(GHOST_Rect& bounds) const
void GHOST_WindowWin32::getClientBounds(GHOST_Rect& bounds) const
{
RECT rect;
- ::GetWindowRect(m_hWnd, &rect);
LONG_PTR result = ::GetWindowLongPtr(m_hWnd, GWL_STYLE);
+ ::GetWindowRect(m_hWnd, &rect);
+
if((result & (WS_POPUP | WS_MAXIMIZE)) != (WS_POPUP | WS_MAXIMIZE)) {
bounds.m_b = rect.bottom-GetSystemMetrics(SM_CYCAPTION)-GetSystemMetrics(SM_CYSIZEFRAME)*2;
bounds.m_l = rect.left;
bounds.m_r = rect.right-GetSystemMetrics(SM_CYSIZEFRAME)*2;
bounds.m_t = rect.top;
} else {
+ ::GetWindowRect(m_hWnd, &rect);
bounds.m_b = rect.bottom;
bounds.m_l = rect.left;
bounds.m_r = rect.right;
@@ -415,12 +419,12 @@ GHOST_TSuccess GHOST_WindowWin32::setState(GHOST_TWindowState state)
wp.length = sizeof(WINDOWPLACEMENT);
::GetWindowPlacement(m_hWnd, &wp);
switch (state) {
- case GHOST_kWindowStateMinimized:
- wp.showCmd = SW_SHOWMINIMIZED;
+ case GHOST_kWindowStateMinimized:
+ wp.showCmd = SW_SHOWMINIMIZED;
break;
- case GHOST_kWindowStateMaximized:
+ case GHOST_kWindowStateMaximized:
ShowWindow(m_hWnd, SW_HIDE);
- wp.showCmd = SW_SHOWMAXIMIZED;
+ wp.showCmd = SW_SHOWMAXIMIZED;
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);
break;
case GHOST_kWindowStateFullScreen:
@@ -429,10 +433,10 @@ GHOST_TSuccess GHOST_WindowWin32::setState(GHOST_TWindowState state)
wp.ptMaxPosition.y = 0;
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_POPUP | WS_MAXIMIZE);
break;
- case GHOST_kWindowStateNormal:
- default:
+ case GHOST_kWindowStateNormal:
+ default:
ShowWindow(m_hWnd, SW_HIDE);
- wp.showCmd = SW_SHOWNORMAL;
+ wp.showCmd = SW_SHOWNORMAL;
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);
break;
}
@@ -490,7 +494,7 @@ GHOST_TSuccess GHOST_WindowWin32::installDrawingContext(GHOST_TDrawingContextTyp
switch (type) {
case GHOST_kDrawingContextTypeOpenGL:
{
- if(m_stereoVisual)
+ if(m_stereoVisual)
sPreferredFormat.dwFlags |= PFD_STEREO;
// Attempt to match device context pixel format to the preferred format
@@ -627,7 +631,7 @@ void GHOST_WindowWin32::loadCursor(bool visible, GHOST_TStandardCursor cursor) c
default:
success = false;
}
-
+
if (success) {
::SetCursor(::LoadCursor(0, id));
}
@@ -660,7 +664,7 @@ void GHOST_WindowWin32::processWin32TabletInitEvent()
{
if (m_wintab) {
GHOST_WIN32_WTInfo fpWTInfo = ( GHOST_WIN32_WTInfo ) ::GetProcAddress( m_wintab, "WTInfoA" );
-
+
// let's see if we can initialize tablet here
/* check if WinTab available. */
if (fpWTInfo) {
@@ -671,7 +675,7 @@ void GHOST_WindowWin32::processWin32TabletInitEvent()
m_maxPressure = Pressure.axMax;
else
m_maxPressure = 0;
-
+
BOOL tiltSupport = fpWTInfo (WTI_DEVICES, DVC_ORIENTATION, &Orientation);
if (tiltSupport) {
/* does the tablet support azimuth ([0]) and altitude ([1]) */
@@ -737,7 +741,7 @@ void GHOST_WindowWin32::processWin32TabletEvent(WPARAM wParam, LPARAM lParam)
WACOM uses negative altitude values to show that the pen is inverted;
therefore we cast .orAltitude as an (int) and then use the absolute value.
*/
-
+
/* convert raw fixed point data to radians */
altRad = (float)((fabs((float)ort.orAltitude)/(float)m_maxAltitude) * M_PI/2.0);
azmRad = (float)(((float)ort.orAzimuth/(float)m_maxAzimuth) * M_PI*2.0);
@@ -777,25 +781,25 @@ static GHOST_TUns16 uns16ReverseBits(GHOST_TUns16 shrt)
shrt= ((shrt>>8)&0x00FF) | ((shrt<<8)&0xFF00);
return shrt;
}
-GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(GHOST_TUns8 bitmap[16][2],
+GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(GHOST_TUns8 bitmap[16][2],
GHOST_TUns8 mask[16][2], int hotX, int hotY)
{
- return setWindowCustomCursorShape((GHOST_TUns8*)bitmap, (GHOST_TUns8*)mask,
+ return setWindowCustomCursorShape((GHOST_TUns8*)bitmap, (GHOST_TUns8*)mask,
16, 16, hotX, hotY, 0, 1);
}
-GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(GHOST_TUns8 *bitmap,
- GHOST_TUns8 *mask, int sizeX, int sizeY, int hotX, int hotY,
+GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(GHOST_TUns8 *bitmap,
+ GHOST_TUns8 *mask, int sizeX, int sizeY, int hotX, int hotY,
int fg_color, int bg_color)
{
GHOST_TUns32 andData[32];
GHOST_TUns32 xorData[32];
GHOST_TUns32 fullBitRow, fullMaskRow;
int x, y, cols;
-
+
cols=sizeX/8; /* Num of whole bytes per row (width of bm/mask) */
if (sizeX%8) cols++;
-
+
if (m_customCursor) {
DestroyCursor(m_customCursor);
m_customCursor = NULL;
@@ -835,9 +839,9 @@ GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(GHOST_TUns8 *bitmap
static int WeightPixelFormat(PIXELFORMATDESCRIPTOR& pfd) {
int weight = 0;
-
+
/* assume desktop color depth is 32 bits per pixel */
-
+
/* cull unusable pixel formats */
/* if no formats can be found, can we determine why it was rejected? */
if( !(pfd.dwFlags & PFD_SUPPORT_OPENGL) ||
@@ -846,45 +850,45 @@ static int WeightPixelFormat(PIXELFORMATDESCRIPTOR& pfd) {
( pfd.cDepthBits <= 8 ) ||
!(pfd.iPixelType == PFD_TYPE_RGBA) )
return 0;
-
+
weight = 1; /* it's usable */
-
+
/* the bigger the depth buffer the better */
/* give no weight to a 16-bit depth buffer, because those are crap */
weight += pfd.cDepthBits - 16;
-
+
weight += pfd.cColorBits - 8;
-
+
/* want swap copy capability -- it matters a lot */
if(pfd.dwFlags & PFD_SWAP_COPY) weight += 16;
-
+
/* but if it's a generic (not accelerated) view, it's really bad */
if(pfd.dwFlags & PFD_GENERIC_FORMAT) weight /= 10;
-
+
return weight;
}
-/* A modification of Ron Fosner's replacement for ChoosePixelFormat */
+/* A modification of Ron Fosner's replacement for ChoosePixelFormat */
/* returns 0 on error, else returns the pixel format number to be used */
static int EnumPixelFormats(HDC hdc) {
int iPixelFormat;
int i, n, w, weight = 0;
PIXELFORMATDESCRIPTOR pfd;
-
+
/* we need a device context to do anything */
if(!hdc) return 0;
iPixelFormat = 1; /* careful! PFD numbers are 1 based, not zero based */
-
- /* obtain detailed information about
+
+ /* obtain detailed information about
the device context's first pixel format */
- n = 1+::DescribePixelFormat(hdc, iPixelFormat,
+ n = 1+::DescribePixelFormat(hdc, iPixelFormat,
sizeof(PIXELFORMATDESCRIPTOR), &pfd);
-
+
/* choose a pixel format using the useless Windows function in case
we come up empty handed */
iPixelFormat = ::ChoosePixelFormat( hdc, &sPreferredFormat );
-
+
if(!iPixelFormat) return 0; /* couldn't find one to use */
for(i=1; i<=n; i++) { /* not the idiom, but it's right */
@@ -899,7 +903,7 @@ static int EnumPixelFormats(HDC hdc) {
}
}
if (weight == 0) {
- // we could find the correct stereo setting, just find any suitable format
+ // we could find the correct stereo setting, just find any suitable format
for(i=1; i<=n; i++) { /* not the idiom, but it's right */
::DescribePixelFormat( hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd );
w = WeightPixelFormat(pfd);
diff --git a/intern/guardedalloc/intern/mmap_win.c b/intern/guardedalloc/intern/mmap_win.c
index 642cc16296e..824dfa62f2a 100644
--- a/intern/guardedalloc/intern/mmap_win.c
+++ b/intern/guardedalloc/intern/mmap_win.c
@@ -162,6 +162,7 @@ intptr_t munmap(void *ptr, intptr_t size)
CloseHandle( mm->maphandle );
CloseHandle( mm->fhandle);
mmap_remlink(mmapbase, mm);
+ free(mm);
return 0;
}
diff --git a/projectfiles_vc9/blender/blender.sln b/projectfiles_vc9/blender/blender.sln
index b3f43f69c0a..970a8bd736e 100644
--- a/projectfiles_vc9/blender/blender.sln
+++ b/projectfiles_vc9/blender/blender.sln
@@ -38,7 +38,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blender", "blender.vcproj",
{BAC615B0-F1AF-418B-8D23-A10FD8870D6A} = {BAC615B0-F1AF-418B-8D23-A10FD8870D6A}
{E90C7BC2-CF30-4A60-A8F2-0050D592E358} = {E90C7BC2-CF30-4A60-A8F2-0050D592E358}
{8B8D4FC3-3234-4E54-8376-5AB83D00D164} = {8B8D4FC3-3234-4E54-8376-5AB83D00D164}
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879} = {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}
{4B6AFCC5-968C-424A-8F20-76E41B3BEF74} = {4B6AFCC5-968C-424A-8F20-76E41B3BEF74}
{0112CAD5-3584-412A-A2E5-1315A00437B4} = {0112CAD5-3584-412A-A2E5-1315A00437B4}
{EB75F4D6-2970-4A3A-8D99-2BAD7201C0E9} = {EB75F4D6-2970-4A3A-8D99-2BAD7201C0E9}
@@ -209,8 +208,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gen_messaging", "..\kernel\
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PHY_Sumo", "..\gameengine\physics\PHY_Physics\PHY_Sumo\PHY_Sumo.vcproj", "{9625642D-6F20-4FB6-A089-BE7441B223E3}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BRE_yafray", "yafray\BRE_yafray.vcproj", "{9991A3C3-83FE-4AFE-9E18-9D01CB57E879}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PHY_Bullet", "..\gameengine\physics\PHY_Physics\PHY_Bullet\PHY_Bullet.vcproj", "{E90C7BC2-CF30-4A60-A8F2-0050D592E358}"
ProjectSection(ProjectDependencies) = postProject
{FFD3C64A-30E2-4BC7-BC8F-51818C320400} = {FFD3C64A-30E2-4BC7-BC8F-51818C320400}
@@ -864,20 +861,6 @@ Global
{9625642D-6F20-4FB6-A089-BE7441B223E3}.Debug|Win32.Build.0 = 3D Plugin Debug|Win32
{9625642D-6F20-4FB6-A089-BE7441B223E3}.Release|Win32.ActiveCfg = BlenderPlayer Release|Win32
{9625642D-6F20-4FB6-A089-BE7441B223E3}.Release|Win32.Build.0 = BlenderPlayer Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Debug|Win32.ActiveCfg = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Debug|Win32.Build.0 = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Release|Win32.ActiveCfg = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Release|Win32.Build.0 = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Debug|Win32.ActiveCfg = Blender Debug|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Release|Win32.Build.0 = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Debug|Win32.ActiveCfg = Blender Debug|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Debug|Win32.Build.0 = Blender Debug|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Release|Win32.ActiveCfg = Blender Release|Win32
- {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Release|Win32.Build.0 = Blender Release|Win32
{E90C7BC2-CF30-4A60-A8F2-0050D592E358}.3D Plugin Debug|Win32.ActiveCfg = 3D Plugin Debug|Win32
{E90C7BC2-CF30-4A60-A8F2-0050D592E358}.3D Plugin Debug|Win32.Build.0 = 3D Plugin Debug|Win32
{E90C7BC2-CF30-4A60-A8F2-0050D592E358}.3D Plugin Release|Win32.ActiveCfg = 3D Plugin Release|Win32
diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj
index 59c1a1e7cd8..7d8d70e43b5 100644
--- a/projectfiles_vc9/blender/editors/ED_editors.vcproj
+++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj
@@ -407,6 +407,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\interface\interface_templates.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\interface\interface_utils.c"
>
</File>
@@ -603,6 +607,10 @@
Name="space_image"
>
<File
+ RelativePath="..\..\..\source\blender\editors\space_image\image_buttons.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\space_image\image_draw.c"
>
</File>
@@ -619,10 +627,6 @@
>
</File>
<File
- RelativePath="..\..\..\source\blender\editors\space_image\image_panels.c"
- >
- </File>
- <File
RelativePath="..\..\..\source\blender\editors\space_image\image_render.c"
>
</File>
@@ -675,6 +679,10 @@
Name="space_buttons"
>
<File
+ RelativePath="..\..\..\source\blender\editors\space_buttons\buttons_context.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\space_buttons\buttons_header.c"
>
</File>
diff --git a/projectfiles_vc9/gameengine/converter/KX_converter.vcproj b/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
index b759aae1c9e..a085a7eac2a 100644
--- a/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
+++ b/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
@@ -480,10 +480,6 @@
>
</File>
<File
- RelativePath="..\..\..\source\gameengine\Converter\BL_ArmatureObject.cpp"
- >
- </File>
- <File
RelativePath="..\..\..\source\gameengine\Converter\BL_BlenderDataConversion.cpp"
>
</File>
@@ -496,6 +492,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Converter\BL_ModifierDeformer.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Converter\BL_ShapeActionActuator.cpp"
>
</File>
@@ -553,6 +553,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Converter\BL_ArmatureObject.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Converter\BL_ArmatureObject.h"
>
</File>
@@ -569,6 +573,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Converter\BL_ModifierDeformer.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Converter\BL_ShapeActionActuator.h"
>
</File>
diff --git a/projectfiles_vc9/gameengine/expression/EXP_expressions.vcproj b/projectfiles_vc9/gameengine/expression/EXP_expressions.vcproj
index 436a007dffb..a8b94c3f4a0 100644
--- a/projectfiles_vc9/gameengine/expression/EXP_expressions.vcproj
+++ b/projectfiles_vc9/gameengine/expression/EXP_expressions.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="EXP_expressions"
ProjectGUID="{EADC3C5A-6C51-4F03-8038-1553E7D7F740}"
+ RootNamespace="EXP_expressions"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -42,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph"
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -117,7 +118,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph"
PreprocessorDefinitions="WIN32,_LIB,EXP_PYTHON_EMBEDDING,_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -192,7 +193,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
StringPooling="true"
RuntimeLibrary="2"
@@ -267,7 +268,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
StringPooling="true"
RuntimeLibrary="0"
@@ -342,7 +343,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph"
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -417,7 +418,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/gameengine/gamelogic/SCA_GameLogic.vcproj b/projectfiles_vc9/gameengine/gamelogic/SCA_GameLogic.vcproj
index e350db5dad8..e4d41824fb1 100644
--- a/projectfiles_vc9/gameengine/gamelogic/SCA_GameLogic.vcproj
+++ b/projectfiles_vc9/gameengine/gamelogic/SCA_GameLogic.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="SCA_GameLogic"
ProjectGUID="{32CC75E2-EE85-45E6-8E3D-513F58464F43}"
+ RootNamespace="SCA_GameLogic"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -42,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -117,7 +118,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
StringPooling="true"
RuntimeLibrary="0"
@@ -192,7 +193,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
StringPooling="true"
RuntimeLibrary="2"
@@ -267,7 +268,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="WIN32,_LIB,EXP_PYTHON_EMBEDDING,_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -342,7 +343,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -417,7 +418,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj b/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj
index 01ccd916edb..5cd8a9c469b 100644
--- a/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj
+++ b/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj
@@ -166,12 +166,13 @@
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="odelib.lib fmodvc.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python25.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
+ AdditionalDependencies="odelib.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python25.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
OutputFile="..\..\..\..\bin\blenderplayer.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib\lib25_vs2008;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
IgnoreDefaultLibraryNames="libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib"
+ GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\libs\blenderplayer.pdb"
SubSystem="1"
RandomizedBaseAddress="1"
diff --git a/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj b/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj
index 80c34bef223..fb812c02f44 100644
--- a/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj
+++ b/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj
@@ -582,6 +582,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Ketsji\KX_PythonSeq.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Ketsji\KX_RayCast.cpp"
>
</File>
@@ -891,6 +895,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Ketsji\KX_PythonSeq.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Ketsji\KX_RayCast.h"
>
</File>
diff --git a/projectfiles_vc9/gameengine/ketsji/network/KX_network.vcproj b/projectfiles_vc9/gameengine/ketsji/network/KX_network.vcproj
index a3f43b01763..fc197d0d1f4 100644
--- a/projectfiles_vc9/gameengine/ketsji/network/KX_network.vcproj
+++ b/projectfiles_vc9/gameengine/ketsji/network/KX_network.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="KX_network"
ProjectGUID="{6E24BF09-9653-4166-A871-F65CC9E98A9B}"
+ RootNamespace="KX_network"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -42,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
StringPooling="true"
RuntimeLibrary="0"
@@ -117,7 +118,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -192,7 +193,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
StringPooling="true"
RuntimeLibrary="2"
@@ -267,7 +268,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -342,7 +343,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -417,7 +418,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj b/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj
index e6991592d40..9f16283e1cd 100644
--- a/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj
+++ b/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj
@@ -42,7 +42,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="false"
BasicRuntimeChecks="3"
@@ -110,7 +110,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
@@ -176,7 +176,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
@@ -243,7 +243,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="false"
BasicRuntimeChecks="3"
@@ -312,7 +312,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="false"
BasicRuntimeChecks="3"
@@ -380,7 +380,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
diff --git a/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj b/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
index 924babfbd21..dde8714507a 100644
--- a/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
+++ b/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="RAS_rasterizer"
ProjectGUID="{51FB3D48-2467-4BFA-A321-D848252B437E}"
+ RootNamespace="RAS_rasterizer"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -42,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\..\lib\windows\python\include\python2.5"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -117,7 +118,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
StringPooling="true"
RuntimeLibrary="2"
@@ -192,7 +193,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\..\lib\windows\python\include\python2.5"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
StringPooling="true"
RuntimeLibrary="0"
@@ -267,7 +268,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -342,7 +343,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\..\lib\windows\python\include\python2.5"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -417,7 +418,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\..\lib\windows\python\include\python2.5"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj b/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj
index d4cb1e465e6..09b87f41ddf 100644
--- a/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj
+++ b/projectfiles_vc9/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj
@@ -43,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\blender\gpu"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -118,7 +118,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\blender\gpu"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -193,7 +193,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\blender\gpu"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
StringPooling="true"
RuntimeLibrary="2"
@@ -268,7 +268,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\blender\gpu"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
StringPooling="true"
RuntimeLibrary="0"
@@ -343,7 +343,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\blender\gpu"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -418,7 +418,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\blender\gpu"
+ AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/gameengine/scenegraph/SG_SceneGraph.vcproj b/projectfiles_vc9/gameengine/scenegraph/SG_SceneGraph.vcproj
index 9c63f625820..95e61cc4af8 100644
--- a/projectfiles_vc9/gameengine/scenegraph/SG_SceneGraph.vcproj
+++ b/projectfiles_vc9/gameengine/scenegraph/SG_SceneGraph.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="SG_SceneGraph"
ProjectGUID="{09222F5E-1625-4FF3-A89A-384D16875EE5}"
+ RootNamespace="SG_SceneGraph"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -510,6 +511,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\SceneGraph\SG_DList.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\SceneGraph\SG_IObject.h"
>
</File>
@@ -522,6 +527,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\SceneGraph\SG_QList.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\SceneGraph\SG_Spatial.h"
>
</File>
diff --git a/projectfiles_vc9/gameengine/videotexture/TEX_Video.vcproj b/projectfiles_vc9/gameengine/videotexture/TEX_Video.vcproj
index 2982f4ab820..16ef3a4cc52 100644
--- a/projectfiles_vc9/gameengine/videotexture/TEX_Video.vcproj
+++ b/projectfiles_vc9/gameengine/videotexture/TEX_Video.vcproj
@@ -126,7 +126,6 @@
ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\gameengine\videotexture\"
WarningLevel="2"
Detect64BitPortabilityProblems="false"
- DebugInformationFormat="0"
CompileAs="0"
ShowIncludes="false"
/>
diff --git a/release/Makefile b/release/Makefile
index b2066d0e8d6..2d688211b9c 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -180,7 +180,7 @@ endif
else
@strip -x $(DISTDIR)/blender$(EXT0)
@if [ -f $(DISTDIR)/blenderplayer$(EXTO) ]; then \
- strip -x $(DISTDIR)/blender$(EXT0) ; \
+ strip -x $(DISTDIR)/blenderplayer$(EXT0) ; \
fi
endif
endif
diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons
index 219dacd8870..467e79f024a 100644
--- a/release/datafiles/blenderbuttons
+++ b/release/datafiles/blenderbuttons
Binary files differ
diff --git a/release/datafiles/preview.blend b/release/datafiles/preview.blend
index 78ced06bba9..e6b5b30dbc4 100644
--- a/release/datafiles/preview.blend
+++ b/release/datafiles/preview.blend
Binary files differ
diff --git a/release/datafiles/splash.jpg b/release/datafiles/splash.jpg
index c65b2f37e87..deae8155ff4 100644
--- a/release/datafiles/splash.jpg
+++ b/release/datafiles/splash.jpg
Binary files differ
diff --git a/release/scripts/3ds_export.py b/release/scripts/3ds_export.py
index 54e1ea3db33..87680bce1b0 100644
--- a/release/scripts/3ds_export.py
+++ b/release/scripts/3ds_export.py
@@ -7,7 +7,7 @@ Group: 'Export'
Tooltip: 'Export to 3DS file format (.3ds).'
"""
-__author__ = ["Campbell Barton", "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Mark Stijnman"]
+__author__ = ["Campbell Barton", "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Mark Stijnman"]
__url__ = ("blenderartists.org", "www.blender.org", "www.gametutorials.com", "lib3ds.sourceforge.net/")
__version__ = "0.90a"
__bpydoc__ = """\
@@ -50,7 +50,10 @@ import Blender
import bpy
from BPyMesh import getMeshFromObject
from BPyObject import getDerivedObjects
-import struct
+try:
+ import struct
+except:
+ struct = None
# So 3ds max can open files, limit names to 12 in length
# this is verry annoying for filenames!
@@ -1009,5 +1012,8 @@ def save_3ds(filename):
if __name__=='__main__':
- Blender.Window.FileSelector(save_3ds, "Export 3DS", Blender.sys.makename(ext='.3ds'))
+ if struct:
+ Blender.Window.FileSelector(save_3ds, "Export 3DS", Blender.sys.makename(ext='.3ds'))
+ else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
# save_3ds('/test_b.3ds')
diff --git a/release/scripts/3ds_import.py b/release/scripts/3ds_import.py
index 1963d2e7433..bcde82c4869 100644
--- a/release/scripts/3ds_import.py
+++ b/release/scripts/3ds_import.py
@@ -133,10 +133,12 @@ import BPyImage
import BPyMessages
-import struct
-from struct import calcsize, unpack
+try:
+ from struct import calcsize, unpack
+except:
+ calcsize= unpack= None
+
-import os
# If python version is less than 2.4, try to get set stuff from module
try:
@@ -958,7 +960,10 @@ def load_3ds(filename, PREF_UI= True):
DEBUG= False
if __name__=='__main__' and not DEBUG:
- Blender.Window.FileSelector(load_3ds, 'Import 3DS', '*.3ds')
+ if calcsize==None:
+ Blender.Draw.PupMenu('Error%t|a full python installation not found')
+ else:
+ Blender.Window.FileSelector(load_3ds, 'Import 3DS', '*.3ds')
# For testing compatibility
#load_3ds('/metavr/convert/vehicle/truck_002/TruckTanker1.3DS', False)
@@ -966,6 +971,7 @@ if __name__=='__main__' and not DEBUG:
'''
else:
+ import os
# DEBUG ONLY
TIME= Blender.sys.time()
import os
diff --git a/release/scripts/DirectX8Exporter.py b/release/scripts/DirectX8Exporter.py
index b8bdae4de2b..8a0ecaf0eb7 100644
--- a/release/scripts/DirectX8Exporter.py
+++ b/release/scripts/DirectX8Exporter.py
@@ -45,7 +45,8 @@ from Blender import Types, Object, NMesh, Material,Armature,Mesh
from Blender.Mathutils import *
from Blender import Draw, BGL
from Blender.BGL import *
-import math
+try: import math
+except: math = None
global mat_flip,index_list,space,bone_list,mat_dict
global anim,flip_norm,swap_zy,flip_z,speed,ticks,no_light,recalc_norm,Bl_norm
diff --git a/release/scripts/add_mesh_torus.py b/release/scripts/add_mesh_torus.py
index 4f759256497..2941c56420e 100644
--- a/release/scripts/add_mesh_torus.py
+++ b/release/scripts/add_mesh_torus.py
@@ -6,7 +6,8 @@ Group: 'AddMesh'
"""
import BPyAddMesh
import Blender
-from math import cos, sin, pi
+try: from math import cos, sin, pi
+except: math = None
def add_torus(PREF_MAJOR_RAD, PREF_MINOR_RAD, PREF_MAJOR_SEG, PREF_MINOR_SEG):
Vector = Blender.Mathutils.Vector
@@ -61,5 +62,8 @@ def main():
BPyAddMesh.add_mesh_simple('Torus', verts, [], faces)
-main()
+if cos and sin and pi:
+ main()
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/animation_clean.py b/release/scripts/animation_clean.py
new file mode 100644
index 00000000000..fc44f264ac1
--- /dev/null
+++ b/release/scripts/animation_clean.py
@@ -0,0 +1,192 @@
+#!BPY
+
+"""
+Name: 'Clean Animation Curves'
+Blender: 249
+Group: 'Animation'
+Tooltip: 'Remove unused keyframes for ipo curves'
+"""
+
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# Copyright (C) 2008-2009: Blender Foundation
+#
+# 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,
+# --------------------------------------------------------------------------
+
+import bpy
+from Blender import IpoCurve, Draw, Window
+
+def clean_ipos(ipos):
+ eul = 0.001
+
+ def isflat(vec):
+ prev_y = vec[0][1]
+ mid_y = vec[1][1]
+ next_y = vec[2][1]
+
+ # flat status for prev and next
+ return abs(mid_y-prev_y) < eul, abs(mid_y-next_y) < eul
+
+
+
+ X=0
+ Y=1
+ PREV=0
+ MID=1
+ NEXT=2
+
+ LEFT = 0
+ RIGHT = 1
+
+ TOT = 0
+ TOTBEZ = 0
+ # for ipo in bpy.data.ipos:
+ for ipo in ipos:
+ if ipo.lib:
+ continue
+ # print ipo
+ for icu in ipo:
+ interp = icu.interpolation
+ extend = icu.extend
+
+ bezierPoints = icu.bezierPoints
+ bezierVecs = [bez.vec for bez in bezierPoints]
+
+ l = len(bezierPoints)
+
+ TOTBEZ += l
+
+ # our aim is to simplify this ipo as much as possible!
+ if interp == IpoCurve.InterpTypes.BEZIER or interp == interp == IpoCurve.InterpTypes.LINEAR:
+ #print "Not yet supported"
+
+ if interp == IpoCurve.InterpTypes.BEZIER:
+ flats = [isflat(bez) for bez in bezierVecs]
+ else:
+ # A bit of a waste but fake the locations for these so they will always be flats
+ # IS better then too much duplicate code.
+ flats = [(True, True)] * l
+ for v in bezierVecs:
+ v[PREV][Y] = v[NEXT][Y] = v[MID][Y]
+
+
+ # remove middle points
+ if l>2:
+ done_nothing = False
+
+ while not done_nothing and len(bezierVecs) > 2:
+ done_nothing = True
+ i = l-2
+
+ while i > 0:
+ #print i
+ #print i, len(bezierVecs)
+ if flats[i]==(True,True) and flats[i-1][RIGHT] and flats[i+1][LEFT]:
+
+ if abs(bezierVecs[i][MID][Y] - bezierVecs[i-1][MID][Y]) < eul and abs(bezierVecs[i][MID][Y] - bezierVecs[i+1][MID][Y]) < eul:
+ done_nothing = False
+
+ del flats[i]
+ del bezierVecs[i]
+ icu.delBezier(i)
+ TOT += 1
+ l-=1
+ i-=1
+
+ # remove endpoints
+ if extend == IpoCurve.ExtendTypes.CONST and len(bezierVecs) > 1:
+ #print l, len(bezierVecs)
+ # start
+
+ while l > 2 and (flats[0][RIGHT] and flats[1][LEFT] and (abs(bezierVecs[0][MID][Y] - bezierVecs[1][MID][Y]) < eul)):
+ print "\tremoving 1 point from start of the curve"
+ del flats[0]
+ del bezierVecs[0]
+ icu.delBezier(0)
+ TOT += 1
+ l-=1
+
+
+ # End
+ while l > 2 and flats[-2][RIGHT] and flats[-1][LEFT] and (abs(bezierVecs[-2][MID][Y] - bezierVecs[-1][MID][Y]) < eul):
+ print "\tremoving 1 point from end of the curve", l
+ del flats[l-1]
+ del bezierVecs[l-1]
+ icu.delBezier(l-1)
+ TOT += 1
+ l-=1
+
+
+
+ if l==2:
+ if isflat( bezierVecs[0] )[RIGHT] and isflat( bezierVecs[1] )[LEFT] and abs(bezierVecs[0][MID][Y] - bezierVecs[1][MID][Y]) < eul:
+ # remove the second point
+ print "\tremoving 1 point from 2 point bez curve"
+ # remove the second point
+ del flats[1]
+ del bezierVecs[1]
+ icu.delBezier(1)
+ TOT+=1
+ l-=1
+
+ # Change to linear for faster evaluation
+ '''
+ if l==1:
+ print 'Linear'
+ icu.interpolation = IpoCurve.InterpTypes.LINEAR
+ '''
+
+
+
+
+ if interp== IpoCurve.InterpTypes.CONST:
+ print "Not yet supported"
+
+ print 'total', TOT, TOTBEZ
+ return TOT, TOTBEZ
+
+def main():
+ ret = Draw.PupMenu('Clean Selected Objects Ipos%t|Object IPO%x1|Object Action%x2|%l|All IPOs (be careful!)%x3')
+
+ sce = bpy.data.scenes.active
+ ipos = []
+
+ if ret == 3:
+ ipos.extend(list(bpy.data.ipos))
+ else:
+ for ob in sce.objects.context:
+ if ret == 1:
+ ipo = ob.ipo
+ if ipo:
+ ipos.append(ipo)
+
+ elif ret == 2:
+ action = ob.action
+ if action:
+ ipos.extend([ipo for ipo in action.getAllChannelIpos().values() if ipo])
+
+
+
+ if not ipos:
+ Draw.PupMenu('Error%t|No ipos found')
+ else:
+ total_removed, total = clean_ipos(ipos)
+ Draw.PupMenu('Done!%t|Removed ' + str(total_removed) + ' of ' + str(total) + ' points')
+
+ Window.RedrawAll()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/release/scripts/bpymodules/BPyMathutils.py b/release/scripts/bpymodules/BPyMathutils.py
index bfa1dcc3c61..4882e9aaf21 100644
--- a/release/scripts/bpymodules/BPyMathutils.py
+++ b/release/scripts/bpymodules/BPyMathutils.py
@@ -132,7 +132,6 @@ modified for Blender/Mathutils by Campell Barton
######################################################################
# Public interface
######################################################################
-from Blender.Mathutils import DotVecs
def convexHull(point_list_2d):
"""Calculate the convex hull of a set of vectors
The vectors can be 3 or 4d but only the Xand Y are used.
@@ -197,7 +196,7 @@ def plane2mat(plane, normalize= False):
up= cent - ((plane[0]+plane[1])/2.0)
right= cent - ((plane[1]+plane[2])/2.0)
- z= CrossVecs(up, right)
+ z= up.cross(right)
if normalize:
up.normalize()
diff --git a/release/scripts/bpymodules/BPyMesh.py b/release/scripts/bpymodules/BPyMesh.py
index 6bbfaa463d0..292f7a4b91e 100644
--- a/release/scripts/bpymodules/BPyMesh.py
+++ b/release/scripts/bpymodules/BPyMesh.py
@@ -569,12 +569,11 @@ def face_edges(me):
def facesPlanerIslands(me):
- DotVecs= Blender.Mathutils.DotVecs
def roundvec(v):
return round(v[0], 4), round(v[1], 4), round(v[2], 4)
- face_props= [(cent, no, roundvec(no), DotVecs(cent, no)) for f in me.faces for no, cent in ((f.no, f.cent),)]
+ face_props= [(cent, no, roundvec(no), cent.dot(no)) for f in me.faces for no, cent in ((f.no, f.cent),)]
face_edge_users= face_edges(me)
islands= []
@@ -607,7 +606,7 @@ def facesPlanerIslands(me):
face_prop2= face_props[fidx2]
# normals are the same?
if face_prop1[2]==face_prop2[2]:
- if abs(face_prop1[3] - DotVecs(face_prop1[1], face_prop2[0])) < 0.000001:
+ if abs(face_prop1[3] - face_prop1[1].dot(face_prop2[0])) < 0.000001:
used_faces[fidx2]= 1
island.append(fidx2)
islands.append([me.faces[i] for i in island])
@@ -616,7 +615,6 @@ def facesPlanerIslands(me):
def facesUvIslands(me, PREF_IMAGE_DELIMIT=True):
- DotVecs= Blender.Mathutils.DotVecs
def roundvec(v):
return round(v[0], 4), round(v[1], 4)
diff --git a/release/scripts/bpymodules/BPyMesh_octree.py b/release/scripts/bpymodules/BPyMesh_octree.py
deleted file mode 100644
index 368a33496eb..00000000000
--- a/release/scripts/bpymodules/BPyMesh_octree.py
+++ /dev/null
@@ -1,332 +0,0 @@
-from Blender import *
-
-try:
- import psyco
- psyco.full()
-except:
- print 'no psyco for you!'
-
-DotVecs= Mathutils.DotVecs
-#========================================================
-# SPACIAL TREE - Seperate Class - use if you want to
-# USed for getting vert is a proximity
-LEAF_SIZE = 128
-class octreeNode:
- def __init__(self, verts, parent):
-
- # Assunme we are a leaf node, until split is run.
- self.verts = verts
- self.children = []
-
- if parent == None: # ROOT NODE, else set bounds when making children,
- # BOUNDS
- v= verts[0]
- maxx,maxy,maxz= v.co
- minx,miny,minz= maxx,maxy,maxz
-
- for v in verts:
- x,y,z= v.co
- if x>maxx: maxx= x
- if y>maxy: maxy= y
- if z>maxz: maxz= z
-
- if x<minx: minx= x
- if y<miny: miny= y
- if z<minz: minz= z
-
- self.minx= minx
- self.miny= miny
- self.minz= minz
-
- self.maxx= maxx
- self.maxy= maxy
- self.maxz= maxz
-
- # We have no parent to split us so split ourselves.
- #self.setCornerPoints()
- self.splitNode()
-
- def splitNode(self):
- if len(self.verts) > LEAF_SIZE:
- self.makeChildren() # 8 new children,
- self.verts = None
- # Alredy assumed a leaf not so dont do anything here.
-
- def makeChildren(self):
- verts= self.verts
- # Devide into 8 children.
- axisDividedVerts = [[],[],[],[],[],[],[],[]] # Verts Only
-
-
- divx = (self.maxx + self.minx) / 2
- divy = (self.maxy + self.miny) / 2
- divz = (self.maxz + self.minz) / 2
-
- # Sort into 8
- for v in verts:
- x,y,z = v.co
-
- if x > divx:
- if y > divy:
- if z > divz:
- axisDividedVerts[0].append(v)
- else:
- axisDividedVerts[1].append(v)
- else:
- if z > divz:
- axisDividedVerts[2].append(v)
- else:
- axisDividedVerts[3].append(v)
- else:
- if y > divy:
- if z > divz:
- axisDividedVerts[4].append(v)
- else:
- axisDividedVerts[5].append(v)
- else:
- if z > divz:
- axisDividedVerts[6].append(v)
- else:
- axisDividedVerts[7].append(v)
-
- # populate self.children
- for i in xrange(8):
- octNode = octreeNode(axisDividedVerts[i], self)
- # Set bounds manually
- if i == 0:
- octNode.minx = divx
- octNode.maxx = self.maxx
- octNode.miny = divy
- octNode.maxy = self.maxy
- octNode.minz = divz
- octNode.maxz = self.maxz
- elif i == 1:
- octNode.minx = divx
- octNode.maxx = self.maxx
- octNode.miny = divy
- octNode.maxy = self.maxy
- octNode.minz = self.minz #
- octNode.maxz = divz #
- elif i == 2:
- octNode.minx = divx
- octNode.maxx = self.maxx
- octNode.miny = self.miny #
- octNode.maxy = divy #
- octNode.minz = divz
- octNode.maxz = self.maxz
- elif i == 3:
- octNode.minx = divx
- octNode.maxx = self.maxx
- octNode.miny = self.miny #
- octNode.maxy = divy #
- octNode.minz = self.minz #
- octNode.maxz = divz #
- elif i == 4:
- octNode.minx = self.minx #
- octNode.maxx = divx #
- octNode.miny = divy
- octNode.maxy = self.maxy
- octNode.minz = divz
- octNode.maxz = self.maxz
- elif i == 5:
- octNode.minx = self.minx #
- octNode.maxx = divx #
- octNode.miny = divy
- octNode.maxy = self.maxy
- octNode.minz = self.minz #
- octNode.maxz = divz #
- elif i == 6:
- octNode.minx = self.minx #
- octNode.maxx = divx #
- octNode.miny = self.miny #
- octNode.maxy = divy #
- octNode.minz = divz
- octNode.maxz = self.maxz
- elif i == 7:
- octNode.minx = self.minx #
- octNode.maxx = divx #
- octNode.miny = self.miny #
- octNode.maxy = divy #
- octNode.minz = self.minz #
- octNode.maxz = divz #
- #octNode.setCornerPoints()
- octNode.splitNode() # Splits the node if it can.
- self.children.append(octNode)
-
- # GETS VERTS IN A Distance RANGE-
- def getVertsInRange(self, loc, normal, range_val, vertList):
- #loc= Mathutils.Vector(loc) # MUST BE VECTORS
- #normal= Mathutils.Vector(normal)
-
- '''
- loc: Vector of the location to search from
- normal: None or Vector - if a vector- will only get verts on this side of the vector
- range_val: maximum distance. A negative value will fill the list with teh closest vert only.
- vertList: starts as an empty list
- list that this function fills with verts that match
- '''
- xloc,yloc,zloc= loc
-
- if range_val<0:
- range_val= -range_val
- FIND_CLOSEST= True
- vertList.append(None) # just update the 1 vertex
- else:
- FIND_CLOSEST= False
-
- if self.children:
- # Check if the bounds are in range_val,
- for childNode in self.children:
- # First test if we are surrounding the point.
- if\
- childNode.minx - range_val < xloc and\
- childNode.maxx + range_val > xloc and\
- childNode.miny - range_val < yloc and\
- childNode.maxy + range_val > yloc and\
- childNode.minz - range_val < zloc and\
- childNode.maxz + range_val > zloc:
- # Recurse down or get virts.
- childNode.getVertsInRange(loc, normal, range_val, vertList)
- #continue # Next please
-
- else: # we are a leaf node. Test vert locations.
- if not normal:
- # Length only check
- for v in self.verts:
- length = (loc - v.co).length
- if length < range_val:
- if FIND_CLOSEST:
- # Just update the 1 vert
- vertList[0]= (v, length)
- range_val= length # Shink the length so we only get verts from their.
- else:
- vertList.append((v, length))
- else:
- # Lengh and am I infront of the vert.
- for v in self.verts:
- length = (loc - v.co).length
- if length < range_val:
- # Check if the points in front
- dot= DotVecs(normal, loc) - DotVecs(normal, v.co)
- if dot<0:
- vertList.append((v, length))
-
-# END TREE
-
-
-
-
-# EXAMPLE RADIO IN PYTHON USING THE ABOVE FUNCTION
-"""
-import BPyMesh
-# Radio bake
-def bake():
-
- _AngleBetweenVecs_= Mathutils.AngleBetweenVecs
- def AngleBetweenVecs(a1,a2):
- try:
- return _AngleBetweenVecs_(a1,a2)
- except:
- return 180
-
-
-
- scn = Scene.GetCurrent()
- ob = scn.getActiveObject()
- me = ob.getData(mesh=1)
-
- dist= Draw.PupFloatInput('MaxDist:', 2.0, 0.1, 20.0, 0.1, 3)
- if dist==None:
- return
-
- # Make nice normals
- BPyMesh.meshCalcNormals(me)
-
-
- len_verts= len(me.verts)
- #me.sel= False
- meshOctTree = octreeNode(me.verts, None)
-
-
-
- # Store face areas
- vertex_areas= [0.0] * len_verts
-
- # Get vertex areas - all areas of face users
- for f in me.faces:
- a= f.area
- for v in f.v:
- vertex_areas[v.index] += a
-
-
-
- bias= 0.001
-
- t= sys.time()
-
- # Tone for the verts
- vert_tones= [0.0] * len_verts
- maxtone= 0.0
- mintone= 100000000
- for i, v in enumerate(me.verts):
- if not i%10:
- print 'verts to go', len_verts-i
- v_co= v.co
- v_no= v.no
- verts_in_range= []
- meshOctTree.getVertsInRange(v_co, v_no, dist, verts_in_range)
-
- tone= 0.0
- # These are verts in our range
- for test_v, length in verts_in_range:
- if bias<length:
- try:
- # Make sure this isnt a back facing vert
- normal_diff= AngleBetweenVecs(test_v.no, v_no)
- except:
- continue
-
- if normal_diff > 90: # were facing this vert
- #if 1:
- # Current value us between zz90 and 180
- # make between 0 and 90
- # so 0 is right angles and 90 is direct opposite vertex normal
- normal_diff= (normal_diff-90)
-
- # Vertex area needs to be taken into account so we dont have small faces over influencing.
- vertex_area= vertex_areas[test_v.index]
-
- # Get the angle the vertex is in location from the location and normal of the vert.
- above_diff= AngleBetweenVecs(test_v.co-v.co, v_no)
- ## Result will be between 0 :above and 90: horizon.. invert this so horizon has littel effect
- above_diff= 90-above_diff
- # dist-length or 1.0/length both work well
- tone= (dist-length) * vertex_area * above_diff * normal_diff
- vert_tones[i] += tone
-
- if maxtone<vert_tones[i]:
- maxtone= vert_tones[i]
- if mintone>vert_tones[i]:
- mintone= vert_tones[i]
-
-
- if not maxtone:
- Draw.PupMenu('No verts in range, use a larger range')
- return
-
- # Apply tones
- for f in me.faces:
- f_col= f.col
- for i, v in enumerate(f.v):
- c= f_col[i]
- v_index= v.index
- tone= int(((maxtone - vert_tones[v.index]) / maxtone) * 255 )
- #print tone
- c.r= c.g= c.b= tone
-
- print 'time', sys.time()-t
-
-
-if __name__=="__main__":
- bake()
-""" \ No newline at end of file
diff --git a/release/scripts/bpymodules/BPyMesh_redux.py b/release/scripts/bpymodules/BPyMesh_redux.py
index 1bcc6e9f7c8..5955d696fbd 100644
--- a/release/scripts/bpymodules/BPyMesh_redux.py
+++ b/release/scripts/bpymodules/BPyMesh_redux.py
@@ -25,7 +25,6 @@ import Blender
import bpy
Vector= Blender.Mathutils.Vector
Ang= Blender.Mathutils.AngleBetweenVecs
-CrossVecs= Blender.Mathutils.CrossVecs
MidpointVecs= Blender.Mathutils.MidpointVecs
import BPyMesh
@@ -198,8 +197,8 @@ def redux(ob, REDUX=0.5, BOUNDRY_WEIGHT=2.0, REMOVE_DOUBLES=False, FACE_AREA_WEI
# the point of collapsing.
# Enlarge so we know they intersect: self.length*2
- cv1= CrossVecs(v1no, CrossVecs(v1no, v1co-v2co))
- cv2= CrossVecs(v2no, CrossVecs(v2no, v2co-v1co))
+ cv1= v1no.cross(v1no.cross(v1co-v2co))
+ cv2= v2no.cross(v2no.cross(v2co-v1co))
# Scale to be less then the edge lengths.
cv2.length = cv1.length = 1
diff --git a/release/scripts/bpymodules/BPyWindow.py b/release/scripts/bpymodules/BPyWindow.py
index f48f5dfc0ad..d3fd4fa88b5 100644
--- a/release/scripts/bpymodules/BPyWindow.py
+++ b/release/scripts/bpymodules/BPyWindow.py
@@ -1,6 +1,6 @@
import Blender
from Blender import Mathutils, Window, Scene, Draw, Mesh
-from Blender.Mathutils import CrossVecs, Matrix, Vector, Intersect
+from Blender.Mathutils import Matrix, Vector, Intersect
# DESCRIPTION:
# screen_x, screen_y the origin point of the pick ray
diff --git a/release/scripts/bpymodules/dxfLibrary.py b/release/scripts/bpymodules/dxfLibrary.py
index 5390be084ee..67528f778e0 100644
--- a/release/scripts/bpymodules/dxfLibrary.py
+++ b/release/scripts/bpymodules/dxfLibrary.py
@@ -1,6 +1,6 @@
#dxfLibrary.py : provides functions for generating DXF files
# --------------------------------------------------------------------------
-__version__ = "v1.29beta - 2008.12.28"
+__version__ = "v1.32 - 2009.06.06"
__author__ = "Stani Michiels(Stani), Remigiusz Fiedler(migius)"
__license__ = "GPL"
__url__ = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
@@ -18,31 +18,39 @@ IDEAs:
-
TODO:
-- add support for SPLINEs, (bad idea, cause DXF r14 object :(
+- add support for DXFr14 (needs extended file header)
+- add support for SPLINEs (possible first in DXFr14 version)
History
+v1.32 - 2009.06.06 by migius
+ - modif Style class: changed defaults to widthFactor=1.0, obliqueAngle=0.0
+ - modif Text class: alignment parameter reactivated
+v1.31 - 2009.06.02 by migius
+ - modif _Entity class: added paperspace,elevation
+v1.30 - 2009.05.28 by migius
+ - bugfix 3dPOLYLINE/POLYFACE: VERTEX needs x,y,z coordinates, index starts with 1 not 0
v1.29 - 2008.12.28 by Yorik
-- modif POLYLINE to support bulge segments
+ - modif POLYLINE to support bulge segments
v1.28 - 2008.12.13 by Steeve/BlenderArtists
-- bugfix for EXTMIN/EXTMAX to suit Cycas-CAD
+ - bugfix for EXTMIN/EXTMAX to suit Cycas-CAD
v1.27 - 2008.10.07 by migius
-- beautifying output code: keys whitespace prefix
-- refactoring DXF-strings format: NewLine moved to the end of
+ - beautifying output code: keys whitespace prefix
+ - refactoring DXF-strings format: NewLine moved to the end of
v1.26 - 2008.10.05 by migius
-- modif POLYLINE to support POLYFACE
+ - modif POLYLINE to support POLYFACE
v1.25 - 2008.09.28 by migius
-- modif FACE class for r12
+ - modif FACE class for r12
v1.24 - 2008.09.27 by migius
-- modif POLYLINE class for r12
-- changing output format from r9 to r12(AC1009)
+ - modif POLYLINE class for r12
+ - changing output format from r9 to r12(AC1009)
v1.1 (20/6/2005) by www.stani.be/python/sdxf
-- Python library to generate dxf drawings
+ - Python library to generate dxf drawings
______________________________________________________________
""" % (__author__,__version__,__license__,__url__)
# --------------------------------------------------------------------------
# DXF Library: copyright (C) 2005 by Stani Michiels (AKA Stani)
-# 2008 modif by Remigiusz Fiedler (AKA migius)
+# 2008/2009 modif by Remigiusz Fiedler (AKA migius)
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
@@ -85,7 +93,6 @@ def _point(x,index=0):
def _points(plist):
"""Convert a list of tuples to dxf points"""
out = '\n'.join([_point(plist[i],i)for i in range(len(plist))])
- #print 'deb: points=\n', out #-------------------
return out
#---base classes----------------------------------------
@@ -104,17 +111,21 @@ class _Call:
#-------------------------------------------------------
class _Entity(_Call):
"""Base class for _common group codes for entities."""
- def __init__(self,color=None,extrusion=None,layer='0',
+ def __init__(self,paperspace=None,color=None,layer='0',
lineType=None,lineTypeScale=None,lineWeight=None,
- thickness=None,parent=None):
+ extrusion=None,elevation=None,thickness=None,
+ parent=None):
"""None values will be omitted."""
+ self.paperspace = paperspace
self.color = color
- self.extrusion = extrusion
self.layer = layer
self.lineType = lineType
self.lineTypeScale = lineTypeScale
self.lineWeight = lineWeight
+ self.extrusion = extrusion
+ self.elevation = elevation
self.thickness = thickness
+ #self.visible = visible
self.parent = parent
def _common(self):
@@ -122,13 +133,16 @@ class _Entity(_Call):
if self.parent:parent=self.parent
else:parent=self
result =''
+ if parent.paperspace==1: result+=' 67\n1\n'
if parent.layer!=None: result+=' 8\n%s\n'%parent.layer
if parent.color!=None: result+=' 62\n%s\n'%parent.color
- if parent.extrusion!=None: result+='%s\n'%_point(parent.extrusion,200)
if parent.lineType!=None: result+=' 6\n%s\n'%parent.lineType
#TODO: if parent.lineWeight!=None: result+='370\n%s\n'%parent.lineWeight
+ #TODO: if parent.visible!=None: result+='60\n%s\n'%parent.visible
if parent.lineTypeScale!=None: result+=' 48\n%s\n'%parent.lineTypeScale
+ if parent.elevation!=None: result+=' 38\n%s\n'%parent.elevation
if parent.thickness!=None: result+=' 39\n%s\n'%parent.thickness
+ if parent.extrusion!=None: result+='%s\n'%_point(parent.extrusion,200)
return result
#--------------------------
@@ -307,6 +321,10 @@ class PolyLine(_Entity):
self.points=points
self.org_point=org_point
self.flag=flag
+ self.polyface = False
+ self.polyline2d = False
+ self.faces = [] # dummy value
+ self.width= None # dummy value
if self.flag & POLYFACE_MESH:
self.polyface=True
self.points=points[0]
@@ -322,21 +340,21 @@ class PolyLine(_Entity):
def __str__(self):
result= ' 0\nPOLYLINE\n%s 70\n%s\n' %(self._common(),self.flag)
- #print 'deb: self._common()', self._common() #----------
result+=' 66\n1\n'
result+='%s\n' %_point(self.org_point)
if self.polyface:
result+=' 71\n%s\n' %self.p_count
result+=' 72\n%s\n' %self.f_count
elif self.polyline2d:
- if self.width: result+=' 40\n%s\n 41\n%s\n' %(self.width[0],self.width[1])
+ if self.width!=None: result+=' 40\n%s\n 41\n%s\n' %(self.width[0],self.width[1])
for point in self.points:
result+=' 0\nVERTEX\n'
result+=' 8\n%s\n' %self.layer
- result+='%s\n' %_point(point[0:2])
if self.polyface:
+ result+='%s\n' %_point(point[0:3])
result+=' 70\n192\n'
elif self.polyline2d:
+ result+='%s\n' %_point(point[0:2])
if len(point)>4:
width1, width2 = point[3], point[4]
if width1!=None: result+=' 40\n%s\n' %width1
@@ -344,6 +362,8 @@ class PolyLine(_Entity):
if len(point)==6:
bulge = point[5]
if bulge: result+=' 42\n%s\n' %bulge
+ else:
+ result+='%s\n' %_point(point[0:3])
for face in self.faces:
result+=' 0\nVERTEX\n'
result+=' 8\n%s\n' %self.layer
@@ -407,7 +427,7 @@ class Text(_Entity):
if self.style: result+=' 7\n%s\n'%self.style
if self.flag: result+=' 71\n%s\n'%self.flag
if self.justifyhor: result+=' 72\n%s\n'%self.justifyhor
- #TODO: if self.alignment: result+='%s\n'%_point(self.alignment,1)
+ if self.alignment: result+='%s\n'%_point(self.alignment,1)
if self.justifyver: result+=' 73\n%s\n'%self.justifyver
return result
@@ -528,7 +548,7 @@ class LineType(_Call):
#-----------------------------------------------
class Style(_Call):
"""Text style"""
- def __init__(self,name='standard',flag=0,height=0,widthFactor=40,obliqueAngle=50,
+ def __init__(self,name='standard',flag=0,height=0,widthFactor=1.0,obliqueAngle=0.0,
mirror=0,lastHeight=1,font='arial.ttf',bigFont=''):
self.name=name
self.flag=flag
diff --git a/release/scripts/bpymodules/mesh_gradient.py b/release/scripts/bpymodules/mesh_gradient.py
index 936f4958467..e582a30152b 100644
--- a/release/scripts/bpymodules/mesh_gradient.py
+++ b/release/scripts/bpymodules/mesh_gradient.py
@@ -6,7 +6,7 @@ import BPyWindow
mouseViewRay= BPyWindow.mouseViewRay
from Blender import Mathutils, Window, Scene, Draw, sys
-from Blender.Mathutils import CrossVecs, Vector, Intersect, LineIntersect, AngleBetweenVecs
+from Blender.Mathutils import Vector, Intersect, LineIntersect, AngleBetweenVecs
LMB= Window.MButs['L']
def mouseup():
@@ -101,11 +101,11 @@ def vertexGradientPick(ob, MODE):
# make a line 90d to the grad in screenspace.
if (OriginA-OriginB).length <= eps: # Persp view. same origin different direction
- cross_grad= CrossVecs(DirectionA, DirectionB)
+ cross_grad= DirectionA.cross(DirectionB)
ORTHO= False
else: # Ortho - Same direction, different origin
- cross_grad= CrossVecs(DirectionA, OriginA-OriginB)
+ cross_grad= DirectionA.cross(OriginA-OriginB)
ORTHO= True
cross_grad.normalize()
diff --git a/release/scripts/bpymodules/paths_svg2obj.py b/release/scripts/bpymodules/paths_svg2obj.py
index d51fe74190d..6bab6dcbfd8 100644
--- a/release/scripts/bpymodules/paths_svg2obj.py
+++ b/release/scripts/bpymodules/paths_svg2obj.py
@@ -1,7 +1,7 @@
# -*- coding: latin-1 -*-
"""
-SVG 2 OBJ translater, 0.5.9n
-Copyright (c) jm soler juillet/novembre 2004-february 2009,
+SVG 2 OBJ translater, 0.5.9o
+Copyright (c) jm soler juillet/novembre 2004-april 2009,
# ---------------------------------------------------------------
released under GNU Licence
for the Blender 2.42 Python Scripts Bundle.
@@ -255,7 +255,7 @@ Changelog:
- removed all debug statements
- correction of a zero division error in the calc_arc function.
- 0.5.9f: - 2007/15/7
+ 0.5.9f: - 2007/15/7
- Correction de plusieurs bugs sur l'attributions des couleurs et le nommage
des courbes
@@ -266,6 +266,8 @@ Changelog:
0.5.9k : - 14/01/2009
0.5.9l : - 31/01/2009
0.5.9n : - 01/02/2009
+ 0.5.9o : - 04/04/2009, remove pattern if it made with path.
+
==================================================================================
=================================================================================="""
@@ -280,6 +282,7 @@ LAST_ID=''
LAST_COLOR=[0.0,0.0,0.0,0.0]
SEPARATE_CURVES=0
USE_COLORS=0
+PATTERN=0
SVGCOLORNAMELIST={ 'aliceblue':[240, 248, 255] ,'antiquewhite':[250, 235, 215]
,'aqua':[ 0, 255, 255], 'aquamarine':[127, 255, 212]
@@ -787,6 +790,7 @@ def polygon(prp):
D.append('Z')
return D
+
#--------------------
# 0.5.8, to remove exec
#--------------------
@@ -1462,13 +1466,13 @@ def collect_ATTRIBUTS(data):
# --------------------------------------------
def build_HIERARCHY(t):
global CP, curves, SCALE, DEBUG, BOUNDINGBOX, scale_, tagTRANSFORM
- global LAST_ID
+ global LAST_ID, PATTERN
TRANSFORM=0
t=t.replace('\t',' ')
while t.find(' ')!=-1: t=t.replace(' ',' ')
n0=0
t0=t1=0
- baliste=[]
+ #baliste=[]
balisetype=['?','?','/','/','!','!']
BALISES=['D', #DECL_TEXTE',
'D', #DECL_TEXTE',
@@ -1490,26 +1494,37 @@ def build_HIERARCHY(t):
if t0>-1 and t1>-1:
if t[t0+1] in balisetype:
b=balisetype.index(t[t0+1])
+
if t[t0+2]=='-':
b=balisetype.index(t[t0+1])+1
+
balise=BALISES[b]
+
if b==2:
parent=STACK.pop(-1)
if parent!=None and TRANSFORM>0:
TRANSFORM-=1
+
elif t[t1-1] in balisetype:
balise=BALISES[balisetype.index(t[t1-1])+1]
+
else:
t2=t.find(' ',t0)
if t2>t1: t2=t1
ouvrante=1
NOM=t[t0+1:t2]
+
+
if '</'+NOM in t: #.find('</'+NOM)>-1:
balise=BALISES[-1]
+ if NOM=='pattern' and not PATTERN:
+ t1=t.find('</'+NOM+'>',t0)+len('</'+NOM+'>')
+ balise=BALISES[-3]
else:
balise=BALISES[-2]
if balise=='E' or balise=='O':
+
proprietes=collect_ATTRIBUTS(t[t0:t1+ouvrante])
if 'id' in proprietes:
@@ -1532,6 +1547,11 @@ def build_HIERARCHY(t):
# 0.5.8, to remove exec
#--------------------
D=OTHERSSHAPES[proprietes['TYPE']](proprietes)
+
+ #elif proprietes['TYPE'] in ['pattern']:
+ # print 'pattern'
+ # D=''
+
CP=[0.0,0.0]
if len(D)>0:
cursor=0
@@ -1567,7 +1587,7 @@ def build_HIERARCHY(t):
def scan_FILE(nom):
global CP, curves, SCALE, DEBUG, BOUNDINGBOX, scale_, tagTRANSFORM
- global SEPARATE_CURVES, USE_COLORS
+ global SEPARATE_CURVES, USE_COLORS, PATTERN
dir,name=split(nom)
name=name.split('.')
@@ -1583,13 +1603,14 @@ def scan_FILE(nom):
togAS = Blender.Draw.Create(0)
togSP = Blender.Draw.Create(0)
togCOL = Blender.Draw.Create(0)
+ Pattern= Blender.Draw.Create(0)
block=[\
("Clamp Width 1", togW, "Rescale the import with a Width of one unit"),\
("Clamp Height 1", togH, "Rescale the import with a Heightof one unit"),\
("No Rescaling", togAS, "No rescaling, the result can be very large"),\
("Separate Curves", togSP, "Create an object for each curve, Slower. May manage colors"),\
- ("Import Colors", togCOL, "try to import color if the path is set as 'fill'. Only With separate option")]
-
+ ("Import Colors", togCOL, "try to import color if the path is set as 'fill'. Only With separate option"),\
+ ("Import Patterns", Pattern, "import pattern content if it is made with paths.")]
retval = Blender.Draw.PupBlock("Import Options", block)
if togW.val: scale_=1
elif togH.val: scale_=2
@@ -1598,6 +1619,8 @@ def scan_FILE(nom):
if togSP.val: SEPARATE_CURVES=1
if togCOL.val and SEPARATE_CURVES : USE_COLORS=1
+
+ if Pattern.val : PATTERN =1
t1=Blender.sys.time()
# 0.4.1 : to avoid to use sax and the xml
@@ -1625,4 +1648,4 @@ def functionSELECT(nom):
if __name__=='__main__':
- Blender.Window.FileSelector (functionSELECT, 'SELECT an .SVG FILE', '*.svg')
+ Blender.Window.FileSelector (functionSELECT, 'SELECT an .SVG FILE', '*.svg') \ No newline at end of file
diff --git a/release/scripts/c3d_import.py b/release/scripts/c3d_import.py
index bfe691c394c..98f643cbab9 100644
--- a/release/scripts/c3d_import.py
+++ b/release/scripts/c3d_import.py
@@ -527,9 +527,10 @@ def setupAnim(StartFrame, EndFrame, VideoFrameRate):
if VideoFrameRate>120: VideoFrameRate=120
# set up anim panel for them
context=scn.getRenderingContext()
- context.startFrame(StartFrame)
- context.endFrame(EndFrame)
- context.framesPerSec(int(VideoFrameRate))
+ context.sFrame=StartFrame
+ context.eFrame=EndFrame
+ context.fps=int(VideoFrameRate)
+
Blender.Set("curframe",StartFrame)
Blender.Redraw()
return
diff --git a/release/scripts/console.py b/release/scripts/console.py
index 0e46f41f581..c6ae22a86f5 100644
--- a/release/scripts/console.py
+++ b/release/scripts/console.py
@@ -708,20 +708,23 @@ def draw_gui():
# Fixed margin. use a margin since 0 margin can be hard to seewhen close to a crt's edge.
margin = 4
+ # Convenience
+ FNT_NAME, FNT_HEIGHT = __FONT_SIZES__[__FONT_SIZE__]
+
# Draw cursor location colour
if __CONSOLE_LINE_OFFSET__ == 0:
- cmd2curWidth = Draw.GetStringWidth(cmdBuffer[-1].cmd[:cursor], __FONT_SIZES__[__FONT_SIZE__][0])
+ cmd2curWidth = Draw.GetStringWidth(cmdBuffer[-1].cmd[:cursor], FNT_NAME)
BGL.glColor3f(0.8, 0.2, 0.2)
if cmd2curWidth == 0:
- BGL.glRecti(margin,2,margin+2, __FONT_SIZES__[__FONT_SIZE__][1]+2)
+ BGL.glRecti(margin,2,margin+2, FNT_HEIGHT+2)
else:
- BGL.glRecti(margin + cmd2curWidth-2,2, margin+cmd2curWidth, __FONT_SIZES__[__FONT_SIZE__][1]+2)
+ BGL.glRecti(margin + cmd2curWidth-2,2, margin+cmd2curWidth, FNT_HEIGHT+2)
BGL.glColor3f(1,1,1)
# Draw the set of cammands to the buffer
consoleLineIdx = __CONSOLE_LINE_OFFSET__ + 1
wrapLineIndex = 0
- while consoleLineIdx < len(cmdBuffer) and __CONSOLE_RECT__[3] > (consoleLineIdx - __CONSOLE_LINE_OFFSET__) * __FONT_SIZES__[__FONT_SIZE__][1]:
+ while consoleLineIdx < len(cmdBuffer) and __CONSOLE_RECT__[3] > (consoleLineIdx - __CONSOLE_LINE_OFFSET__) * FNT_HEIGHT:
if cmdBuffer[-consoleLineIdx].type == 0:
BGL.glColor3f(1, 1, 1)
elif cmdBuffer[-consoleLineIdx].type == 1:
@@ -734,53 +737,41 @@ def draw_gui():
BGL.glColor3f(1, 1, 0)
if consoleLineIdx == 1: # user input
- BGL.glRasterPos2i(margin, (__FONT_SIZES__[__FONT_SIZE__][1] * (consoleLineIdx-__CONSOLE_LINE_OFFSET__)) - 8)
- Draw.Text(cmdBuffer[-consoleLineIdx].cmd, __FONT_SIZES__[__FONT_SIZE__][0])
- else:
- BGL.glRasterPos2i(margin, (__FONT_SIZES__[__FONT_SIZE__][1] * ((consoleLineIdx-__CONSOLE_LINE_OFFSET__)+wrapLineIndex)) - 8)
- Draw.Text(cmdBuffer[-consoleLineIdx].cmd, __FONT_SIZES__[__FONT_SIZE__][0])
-
- # Wrapping is totally slow, can even hang blender - dont do it!
- '''
- if consoleLineIdx == 1: # NEVER WRAP THE USER INPUT
- BGL.glRasterPos2i(margin, (__FONT_SIZES__[__FONT_SIZE__][1] * (consoleLineIdx-__CONSOLE_LINE_OFFSET__)) - 8)
- # BUG, LARGE TEXT DOSENT DISPLAY
- Draw.Text(cmdBuffer[-consoleLineIdx].cmd, __FONT_SIZES__[__FONT_SIZE__][0])
-
-
- else: # WRAP?
- # LINE WRAP
- if Draw.GetStringWidth(cmdBuffer[-consoleLineIdx].cmd, __FONT_SIZES__[__FONT_SIZE__][0]) > __CONSOLE_RECT__[2]:
+ BGL.glRasterPos2i(margin, (FNT_HEIGHT * (consoleLineIdx-__CONSOLE_LINE_OFFSET__)) - 8)
+ Draw.Text(cmdBuffer[-consoleLineIdx].cmd, FNT_NAME)
+ else: # WRAP
+ lwid = Draw.GetStringWidth(cmdBuffer[-consoleLineIdx].cmd, FNT_NAME)
+ if margin + lwid > __CONSOLE_RECT__[2]:
wrapLineList = []
- copyCmd = [cmdBuffer[-consoleLineIdx].cmd, '']
- while copyCmd != ['','']:
- while margin + Draw.GetStringWidth(copyCmd[0], __FONT_SIZES__[__FONT_SIZE__][0]) > __CONSOLE_RECT__[2]:
- #print copyCmd
- copyCmd[1] = '%s%s'% (copyCmd[0][-1], copyCmd[1]) # Add the char on the end
- copyCmd[0] = copyCmd[0][:-1]# remove last chat
-
- # Now we have copyCmd[0] at a good length we can print it.
- if copyCmd[0] != '':
- wrapLineList.append(copyCmd[0])
-
- copyCmd[0]=''
- copyCmd = [copyCmd[1], copyCmd[0]]
-
+ wtext = cmdBuffer[-consoleLineIdx].cmd
+ wlimit = len(wtext)
+ chunksz = int(( __CONSOLE_RECT__[2] - margin ) / (lwid / len(wtext)))
+ lstart = 0
+ fsize = FNT_NAME
+ while lstart < wlimit:
+ lend = min(lstart+chunksz,wlimit)
+ ttext = wtext[lstart:lend]
+ while lend < wlimit and Draw.GetStringWidth(ttext, fsize) + margin < __CONSOLE_RECT__[2]:
+ lend += 1
+ ttext = wtext[lstart:lend]
+ while lend > lstart+1 and Draw.GetStringWidth(ttext, fsize) + margin > __CONSOLE_RECT__[2]:
+ lend -= 1
+ ttext = wtext[lstart:lend]
+ wrapLineList.append(ttext)
+ lstart = lend
# Now we have a list of lines, draw them (OpenGLs reverse ordering requires this odd change)
wrapLineList.reverse()
for wline in wrapLineList:
- BGL.glRasterPos2i(margin, (__FONT_SIZES__[__FONT_SIZE__][1]*((consoleLineIdx-__CONSOLE_LINE_OFFSET__) + wrapLineIndex)) - 8)
- Draw.Text(wline, __FONT_SIZES__[__FONT_SIZE__][0])
+ BGL.glRasterPos2i(margin, (FNT_HEIGHT*((consoleLineIdx-__CONSOLE_LINE_OFFSET__) + wrapLineIndex)) - 8)
+ Draw.Text(wline, FNT_NAME)
wrapLineIndex += 1
- wrapLineIndex-=1 # otherwise we get a silly extra line.
+ wrapLineIndex-=1 # otherwise we get a silly extra line.
else: # no wrapping.
- BGL.glRasterPos2i(margin, (__FONT_SIZES__[__FONT_SIZE__][1] * ((consoleLineIdx-__CONSOLE_LINE_OFFSET__)+wrapLineIndex)) - 8)
- Draw.Text(cmdBuffer[-consoleLineIdx].cmd, __FONT_SIZES__[__FONT_SIZE__][0])
- '''
+ BGL.glRasterPos2i(margin, (FNT_HEIGHT * ((consoleLineIdx-__CONSOLE_LINE_OFFSET__)+wrapLineIndex)) - 8)
+ Draw.Text(cmdBuffer[-consoleLineIdx].cmd, FNT_NAME)
consoleLineIdx += 1
-
# This recieves the event index, call a function from here depending on the event.
def handle_button_event(evt):
diff --git a/release/scripts/envelope_symmetry.py b/release/scripts/envelope_symmetry.py
index a52e622a65b..a72e8c060b4 100644
--- a/release/scripts/envelope_symmetry.py
+++ b/release/scripts/envelope_symmetry.py
@@ -4,7 +4,7 @@
Name: 'Envelope Symmetry'
Blender: 234
Group: 'Animation'
-Tooltip: 'Make envelope symetrical'
+Tooltip: 'Make envelope symmetrical'
"""
__author__ = "Jonas Petersen"
diff --git a/release/scripts/export_dxf.py b/release/scripts/export_dxf.py
index 99c6acaceab..b32962241cc 100644
--- a/release/scripts/export_dxf.py
+++ b/release/scripts/export_dxf.py
@@ -1,47 +1,89 @@
#!BPY
"""
- Name: 'Autodesk (.dxf .dwg)'
- Blender: 247
+ Name: 'Autodesk DXF (.dxf)'
+ Blender: 249
Group: 'Export'
- Tooltip: 'Export geometry to Autocad DXF/DWG-r12 (Drawing eXchange Format).'
+ Tooltip: 'Export geometry to DXF/DWG-r12 (Drawing eXchange Format).'
"""
-__version__ = "v1.29 - 2009.04.11"
-__author__ = "Remigiusz Fiedler (AKA migius), Alexandros Sigalas (AKA alxarch), Stani Michiels"
+__version__ = "1.34 - 2009.06.08"
+__author__ = "Remigiusz Fiedler (AKA migius)"
__license__ = "GPL"
-__url__ = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
+__url__ = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
__bpydoc__ ="""The script exports Blender geometry to DXF format r12 version.
Version %s
Copyright %s
License %s
-extern dependances: dxfLibrary.py
+extern dependances: dxfLibrary.py, dxfColorMap.py (optionaly: DConvertCon.exe)
+
+CONTRIBUTORS:
+Remigiusz Fiedler (AKA migius)
+Alexandros Sigalas (AKA alxarch)
+Stani Michiels (AKA stani)
See the homepage for documentation.
url: %s
IDEAs:
- - correct normals for POLYLINE-POLYFACE via proper point-order
- - HPGL output for 2d and flattened 3d content
-
+- HPGL output, usefull for correct scaled printing of 2d drawings
+
TODO:
-- export dupligroups and dupliverts as blocks ( option for the user to decide )
-- optimize back-faces removal (probably needs matrix transform)
+- export dupligroups and dupliverts as blocks (option for the user to decide)
- optimize POLYFACE routine: remove double-vertices
-- optimize POLYFACE routine: remove unused vertices
+- more stable support for X,Y-rotated curves(to POLYLINEs): fix blender negative-matrix.invert()
- support hierarchies: groups, instances, parented structures
-- support 210-code (3d orientation vector)
-- presets for architectural scales
-- write drawing extends for automatic view positioning in CAD
+- support n/f-gons as POLYFACEs with invisible edges
+- mapping materials to DXF-styles
+- ProgressBar
+- wip: write drawing extends for automatic view positioning in CAD
+- wip: correct text-objects in persp-projection
+- wip: translate Camera to VPORT/VIEW
+- wip: translate current 3D-View to *ACTIVE-VPORT
History
-v1.29 - 2009.04.11 by migius
+v1.34 - 2009.06.08 by migius
+- export Lamps and Cameras as POINTs
+- export passepartout for perspective projection
+- added option for export objects only from visible layers
+- optimized POLYFACE output: remove loose vertices in back-faces-mode
+- cleaning code
+- fix nasty bug in getExtrusion()
+- support text-objects, also in ortho/persp-projection
+- support XYmirrored 2d-curves to 2dPOLYLINEs
+- support thickness and elevation for curve-objects
+- fix extrusion 210-code (3d orientation vector)
+- fix POLYFACE export, synchronized with dxfLibrary.py
+- changed to the new 2.49 method Vector.cross()
+- output style manager (first try)
+v1.33 - 2009.05.25 by migius
+- bugfix flipping normals in mirrored mesh-objects
+- added UI-Button for future Shadow Generator
+- support curve objects in projection-2d mode
+- UI stuff: camera selector/manager
+v1.32 - 2009.05.22 by migius
+- debug mode for curve-objects: output redirect to Blender
+- wip support 210-code(extrusion) calculation
+- default settings for 2D and 3D export
+v1.31 - 2009.05.18 by migius
+- globals translated to GUI_A/B dictionary
+- optimizing back-faces removal for "hidden-lines" mode
+- presets for global location and scale (architecture)
+- UI layout: scrollbars, pan with MMB/WHEEL, dynamic width
+- new GUI with Draw.Register() from DXF-importer.py
+v1.30 - 2008.12.14 by migius
+- started work on GUI with Draw.Register()
+v1.29 - 2009.04.11 by stani
- added DWG support, Stani Michiels idea for binding an extern DXF-DWG-converter
-v1.28 - 2009.02.05 by alxarch
+v1.28 - 2009.02.05 by Alexandros Sigalas (alxarch)
- added option to apply modifiers on exported meshes
- added option to also export duplicates (from dupliverts etc)
+v1.28 - 2008.10.22 by migius
+- workaround for PVert-bug on ubuntu (reported by Yorik)
+- add support for FGons - ignore invisible_tagged edges
+- add support for camera: ortho and perspective
v1.27 - 2008.10.07 by migius
- exclude Stani's DXF-Library to extern module
v1.26 - 2008.10.05 by migius
@@ -92,17 +134,79 @@ ______________________________________________________________
import Blender
-from Blender import Mathutils, Window, Scene, sys, Draw, Mesh
-import BPyMessages
+from Blender import Mathutils, Window, Scene, Draw, Camera, BezTriple
+from Blender import Registry, Object, Mesh, Curve
import os
import subprocess
-#print os.sys.platform
-#print dir(os.sys.version)
-
-#import dxfLibrary
+import dxfLibrary as DXF
+#reload(DXF)
#reload(dxfLibrary)
-from dxfLibrary import *
+#from dxfLibrary import *
+
+import math
+from math import atan, atan2, log10, sin, cos
+
+#pi = math.pi
+#pi = 3.14159265359
+r2d = 180.0 / math.pi
+d2r = math.pi / 180.0
+#note: d2r * angle == math.radians(angle)
+
+print '\n\n\n'
+print 'DXF-Exporter v%s *** start ***' %(__version__) #---------------------
+
+#DEBUG = True #activates debug mode
+
+
+#----globals------------------------------------------
+ONLYSELECTED = 1 # 0/1 = False/True
+ONLYVISIBLE = 1 # ignore objects on invisible layers
+POLYLINES = 1 # prefer POLYLINEs not LINEs
+POLYFACES = 1 # prefer POLYFACEs not 3DFACEs
+PROJECTION = 0 # output geometry will be projected to XYplane with Z=0.0
+HIDDEN_LINES = 0 #filter out hidden geometry
+SHADOWS = 0 # sun/shadows simulation
+CAMERA = 1 # selected camera index
+PERSPECTIVE = 0 # projection (camera) type: perspective, opposite to orthographic
+CAMERAVIEW = 0 # use camera for projection, opposite is 3d-view
+APPLY_MODIFIERS = 1
+INCLUDE_DUPLIS = 0
+OUTPUT_DWG = 0 #optional save to DWG with extern converter
+
+G_SCALE = 1.0 #(0.0001-1000) global scaling factor for output dxf data
+G_ORIGIN = [0.0,0.0,0.0] #global translation-vector (x,y,z) in Blender units
+ELEVATION = 0.0 #standard elevation = coordinate Z value in Blender units
+
+BYBLOCK = 0 #DXF-attribute: assign property to BLOCK defaults
+BYLAYER = None #256 #DXF-attribute: assign property to LAYER defaults
+PREFIX = 'BF_' #used as prefix for DXF names
+LAYERNAME_DEF = '' #default layer name
+LAYERCOLOR_DEF = 7 #default layer color index
+LAYERLTYPE_DEF = 0 #'CONTINUOUS' - default layer lineType
+ENTITYLAYER_DEF = LAYERNAME_DEF #default entity color index
+ENTITYCOLOR_DEF = BYLAYER #default entity color index
+ENTITYLTYPE_DEF = BYLAYER #default entity lineType
+E_M = 0
+LAB = "scroll MMB/WHEEL . wip .. todo" #"*) parts under construction"
+M_OBJ = 0
+
+FILENAME_MAX = 180 #max length of path+file_name string (FILE_MAXDIR + FILE_MAXFILE)
+NAMELENGTH_MAX = 80 #max_obnamelength in DXF, (limited to 256? )
+INIFILE_DEFAULT_NAME = 'exportDXF'
+INIFILE_EXTENSION = '.ini'
+INIFILE_HEADER = '#ExportDXF.py ver.1.0 config data'
+INFFILE_HEADER = '#ExportDXF.py ver.1.0 analyze of DXF-data'
+
+SCENE = None
+WORLDX = Mathutils.Vector((1,0,0))
+WORLDY = Mathutils.Vector((0,1,0))
+WORLDZ = Mathutils.Vector((0,0,1))
+
+AUTO = BezTriple.HandleTypes.AUTO
+FREE = BezTriple.HandleTypes.FREE
+VECT = BezTriple.HandleTypes.VECT
+ALIGN = BezTriple.HandleTypes.ALIGN
#-------- DWG support ------------------------------------------
@@ -127,8 +231,59 @@ More details in online Help.' %extCONV
#print 'extCONV_PATH = ', extCONV_PATH
+#----------------------------------------------
+def updateMenuCAMERA():
+ global CAMERAS
+ global MenuCAMERA
+ global MenuLIGHT
-#-----------------------------------------------------
+ scn = Scene.GetCurrent()
+ objs = scn.getChildren()
+ currcam = scn.getCurrentCamera()
+ if currcam: currcam = currcam.getName()
+ maincams = []
+ MenuCAMERA = "Select Camera%t"
+ for cam in objs:
+ if cam.getType() == 'Camera':
+ if cam.getName()[0:4] != "Temp":
+ maincams.append(cam.getName())
+ maincams.sort()
+ maincams.reverse()
+ CAMERAS = maincams
+ for i, cam in enumerate(CAMERAS):
+ if cam==currcam:
+ MenuCAMERA += "|* " + cam
+ else: MenuCAMERA += "| " + cam
+ MenuCAMERA += "|current 3d-View"
+ MenuLIGHT = "Select Sun%t| *todo"
+
+
+#----------------------------------------------
+def updateCAMERA():
+ global CAMERA, GUI_A
+ #CAMERA = 1
+ scn = Scene.GetCurrent()
+ currcam = scn.getCurrentCamera()
+ if currcam: currcam = currcam.getName()
+ if currcam in CAMERAS:
+ CAMERA = CAMERAS.index(currcam)+1
+ GUI_A['camera_selected'].val = CAMERA
+
+#----------------------------------------------
+def gotoCAMERA():
+ cam = Object.Get(CAMERAS[CAMERA-1])
+ #print 'deb: CAMERA, cam',CAMERA, cam
+ if cam.getType() != 'Camera':
+ sure = Draw.PupMenu("Info: %t| It is not a Camera Object.")
+ else:
+ scn = Scene.getCurrent()
+ scn.setCurrentCamera(cam)
+ Window.CameraView(0)
+ Window.Redraw()
+ updateMenuCAMERA()
+
+
+#------- Duplicates support ----------------------------------------------
def dupTest(object):
"""
Checks objects for duplicates enabled (any type)
@@ -146,8 +301,8 @@ def getObjectsAndDuplis(oblist,MATRICES=False,HACK=False):
"""
Return a list of real objects and duplicates and optionally their matrices
oblist: List of Blender Objects
- MATRICES: Boolean - Check to also get the objects matrices default=False
- HACK: Boolean - See note default=False
+ MATRICES: Boolean - Check to also get the objects matrices, default=False
+ HACK: Boolean - See note, default=False
Returns: List of objects or
List of tuples of the form:(ob,matrix) if MATRICES is set to True
NOTE: There is an ugly hack here that excludes all objects whose name
@@ -157,7 +312,7 @@ def getObjectsAndDuplis(oblist,MATRICES=False,HACK=False):
result = []
for ob in oblist:
- if dupTest(ob):
+ if INCLUDE_DUPLIS and dupTest(ob):
dup_obs=ob.DupObjects
if len(dup_obs):
for dup_ob, dup_mx in dup_obs:
@@ -182,231 +337,990 @@ def getObjectsAndDuplis(oblist,MATRICES=False,HACK=False):
return result
#-----------------------------------------------------
-def hidden_status(faces, mx_n):
- #print 'HIDDEN_MODE: caution! not full implemented yet'
- ok_faces = []
- ok_edges = []
- #sort out back-faces = with normals pointed away from camera
+def hidden_status(faces, mx, mx_n):
+ # sort out back-faces = with normals pointed away from camera
+ #print 'HIDDEN_LINES: caution! not full implemented yet'
+ front_faces = []
+ front_edges = []
for f in faces:
#print 'deb: face=', f #---------
+ #print 'deb: dir(face)=', dir(f) #---------
# get its normal-vector in localCS
vec_normal = f.no.copy()
#print 'deb: vec_normal=', vec_normal #------------------
- #must be transfered to camera/view-CS
+ # must be transfered to camera/view-CS
vec_normal *= mx_n
#vec_normal *= mb.rotationPart()
#print 'deb:2vec_normal=', vec_normal #------------------
#vec_normal *= mw0.rotationPart()
#print 'deb:3vec_normal=', vec_normal, '\n' #------------------
- # normal must point the Z direction-hemisphere
- if vec_normal[2] > 0.0 :
- ok_faces.append(f.index)
+
+ frontFace = False
+ if not PERSPECTIVE: #for ortho mode ----------
+ # normal must point the Z direction-hemisphere
+ if vec_normal[2] > 0.00001:
+ frontFace = True
+ else:
+ v = f.verts[0]
+ vert = Mathutils.Vector(v.co) * mx
+ if Mathutils.DotVecs(vert, vec_normal) < 0.00001:
+ frontFace = True
+
+ if frontFace:
+ front_faces.append(f.index)
for key in f.edge_keys:
#this test can be done faster with set()
- if key not in ok_edges:
- ok_edges.append(key)
- #print 'deb: amount of visible faces=', len(ok_faces) #---------
- #print 'deb: visible faces=', ok_faces #---------
- #print 'deb: amount of visible edges=', len(ok_edges) #---------
- #print 'deb: visible edges=', ok_edges #---------
- return ok_faces, ok_edges
+ if key not in front_edges:
+ front_edges.append(key)
+ #print 'deb: amount of visible faces=', len(front_faces) #---------
+ #print 'deb: visible faces=', front_faces #---------
+ #print 'deb: amount of visible edges=', len(front_edges) #---------
+ #print 'deb: visible edges=', front_edges #---------
+ return front_faces, front_edges
+
+
+#---- migration to 2.49-------------------------------------------------
+if 'cross' in dir(Mathutils.Vector()):
+ #Draw.PupMenu('DXF exporter: Abort%t|This script version works for Blender up 2.49 only!')
+ def M_CrossVecs(v1,v2):
+ return v1.cross(v2) #for up2.49
+ def M_DotVecs(v1,v2):
+ return v1.dot(v2) #for up2.49
+else:
+ def M_CrossVecs(v1,v2):
+ return Mathutils.CrossVecs(v1,v2) #for pre2.49
+ def M_DotVecs(v1,v2):
+ return Mathutils.DotVecs(v1,v2) #for pre2.49
+
#-----------------------------------------------------
-def projected_co(vec, mw):
- # convert the world coordinates of vector to screen coordinates
- #co = vec.co.copy().resize4D()
- co = vec.copy().resize4D()
- co[3] = 1.0
- sc = co * mw
- #print 'deb: viewprojection=', sc #---------
- return [sc[0],sc[1],0.0]
-
-
-#--------not used---------------------------------------------
-def flatten(points, mw):
- for i,v in enumerate(points):
- v = projected_co(v, mw)
- points[i]=v
- #print 'deb: flatten points=', points #---------
- return points
+def getExtrusion(matrix):
+ """calculates DXF-Extrusion = Arbitrary Xaxis and Zaxis vectors
+
+ """
+ AZaxis = matrix[2].copy().resize3D().normalize() # = ArbitraryZvector
+ Extrusion = [AZaxis[0],AZaxis[1],AZaxis[2]]
+ if AZaxis[2]==1.0:
+ Extrusion = None
+ AXaxis = matrix[0].copy().resize3D() # = ArbitraryXvector
+ else:
+ threshold = 1.0 / 64.0
+ if abs(AZaxis[0]) < threshold and abs(AZaxis[1]) < threshold:
+ # AXaxis is the intersection WorldPlane and ExtrusionPlane
+ AXaxis = M_CrossVecs(WORLDY,AZaxis)
+ else:
+ AXaxis = M_CrossVecs(WORLDZ,AZaxis)
+ #print 'deb:\n' #-------------
+ #print 'deb:getExtrusion() Extrusion=', Extrusion #---------
+ return Extrusion, AXaxis.normalize()
+
+
+#-----------------------------------------------------
+def getZRotation(AXaxis, rot_matrix_invert):
+ """calculates ZRotation = angle between ArbitraryXvector and obj.matrix.Xaxis
+
+ """
+ # this works: Xaxis is the obj.matrix-Xaxis vector
+ # but not correct for all orientations
+ #Xaxis = matrix[0].copy().resize3D() # = ArbitraryXvector
+ ##Xaxis.normalize() # = ArbitraryXvector
+ #ZRotation = - Mathutils.AngleBetweenVecs(Xaxis,AXaxis) #output in radians
+
+ # this works for all orientations, maybe a bit faster
+ # transform AXaxis into OCS:Object-Coord-System
+ #rot_matrix = normalizeMat(matrix.rotationPart())
+ #rot_matrix_invert = rot_matrix.invert()
+ vec = AXaxis * rot_matrix_invert
+ ##vec = AXaxis * matrix.copy().invert()
+ ##vec.normalize() # not needed for atan2()
+ #print '\ndeb:getExtrusion() vec=', vec #---------
+ ZRotation = - atan2(vec[1],vec[0]) #output in radians
+
+ #print 'deb:ZRotation() ZRotation=', ZRotation*r2d #---------
+ return ZRotation
+
+
+#------------------------------------------
+def normalizeMat(matrix):
+ mat12 = matrix.copy()
+ mat12 = [Mathutils.Vector(v).normalize() for v in mat12]
+ if len(mat12)>3:
+ matr12 = Mathutils.Matrix(mat12[0],mat12[1],mat12[2],mat12[3])
+ else:
+ matr12 = Mathutils.Matrix(mat12[0],mat12[1],mat12[2])
+ return matr12
+
+
+#-----------------------------------------------------
+def projected_co(verts, matrix):
+ """ converts coordinates of points from OCS to WCS->ScreenCS
+ needs matrix: a projection matrix
+ needs verts: a list of vectors[x,y,z]
+ returns a list of [x,y,z]
+ """
+ #print 'deb:projected_co() verts=', verts #---------
+ temp_verts = [Mathutils.Vector(v)*matrix for v in verts]
+ #print 'deb:projected_co() temp_verts=', temp_verts #---------
+
+ if GUI_A['Z_force_on'].val: locZ = GUI_A['Z_elev'].val
+ else: locZ = 0.0
+
+ if PROJECTION:
+ if PERSPECTIVE:
+ clipStart = 10.0
+ for v in temp_verts:
+ coef = - clipStart / v[2]
+ v[0] *= coef
+ v[1] *= coef
+ v[2] = locZ
+ for v in temp_verts:
+ v[2] = locZ
+ temp_verts = [v[:3] for v in temp_verts]
+ #print 'deb:projected_co() out_verts=', temp_verts #---------
+ return temp_verts
+
#-----------------------------------------------------
-def exportMesh(ob, mx, mx_n,me=None):
+def isLeftHand(matrix):
+ #Is the matrix a left-hand-system, or not?
+ ma = matrix.rotationPart()
+ crossXY = M_CrossVecs(ma[0], ma[1])
+ check = M_DotVecs(ma[2], crossXY)
+ if check < 0.00001: return 1
+ return 0
+
+
+#-----------------------------------------------------
+def exportMesh(ob, mx, mx_n, me=None, **common):
+ """converts Mesh-Object to desired projection and representation(DXF-Entity type)
+ """
entities = []
- global APPLY_MODIFIERS
- if me is None:
+ #print 'deb:exportMesh() common=', common #---------
+ if me==None:
me = ob.getData(mesh=1)
else:
me.getFromObject(ob)
- #me.transform(mx)
- # above is eventualy faster, but bad, cause
- # directly transforms origin geometry and write back rounding errors
- me_verts = me.verts[:] #we dont want manipulate origin data
- #print 'deb: me_verts=', me_verts #---------
- #me.transform(mx_inv) #counterpart to - back to the origin state
- for v in me_verts:
- v.co *= mx
- faces=[]
- edges=[]
- if HIDDEN_MODE:
- ok_faces, ok_edges = hidden_status(me.faces, mx_n)
-
- #if (not FLATTEN) and len(me.faces)>0 and ONLYFACES:
- if ONLYFACES:
- if POLYFACES: #export 3D as POLYFACEs
- allpoints = []
- allfaces = []
- allpoints = [v.co[:3] for v in me_verts]
- for f in me.faces:
- #print 'deb: face=', f #---------
- if not HIDDEN_MODE or \
- (HIDDEN_MODE and f.index in ok_faces):
- if 1:
- points = f.verts
- face = [p.index+1 for p in points]
- #print 'deb: face=', face #---------
- allfaces.append(face)
- else: #bad, cause create multiple vertex instances
- points = f.verts
- points = [ me_verts[p.index].co[:3] for p in points]
- #points = [p.co[:3] for p in points]
- #print 'deb: points=', points #---------
- index = len(allpoints)+1
- face = [index+i for i in range(len(points))]
- allpoints.extend(points)
- allfaces.append(face)
- if allpoints and allfaces:
- #print 'deb: allpoints=', allpoints #---------
- #print 'deb: allfaces=', allfaces #---------
- dxfPOLYFACE = PolyLine([allpoints, allfaces], flag=64)
- entities.append(dxfPOLYFACE)
- else: #export 3D as 3DFACEs
- for f in me.faces:
- #print 'deb: face=', f #---------
- if not HIDDEN_MODE or \
- (HIDDEN_MODE and f.index in ok_faces):
- points = f.verts
- points = [ me_verts[p.index].co[:3] for p in points]
+ # me.transform(mx); get verts data; me.transform(mx_inv)= back to the origin state
+ # above .transform method is faster, but bad, cause invasive:
+ # it manipulates original geometry and by retransformation lefts back rounding-errors
+ # we dont want to manipulate original data!
+ #temp_verts = me.verts[:] #doesn't work on ubuntu(Yorik), bug?
+ if me.verts:
+ #print 'deb:exportMesh() started' #---------
+ allpoints = [v.co for v in me.verts]
+ allpoints = projected_co(allpoints, mx)
+ allpoints = toNewOrigin(allpoints)
+ faces=[]
+ edges=[]
+ if me.faces and PROJECTION and HIDDEN_LINES:
+ #if DEBUG: print 'deb:exportMesh HIDDEN_LINES mode' #---------
+ faces, edges = hidden_status(me.faces, mx, mx_n)
+ faces = [[v.index for v in me.faces[f_nr].verts] for f_nr in faces]
+ else:
+ #if DEBUG: print 'deb:exportMesh STANDARD mode' #---------
+ for e in me.edges: edges.append(e.key)
+ #faces = [f.index for f in me.faces]
+ faces = [[v.index for v in f.verts] for f in me.faces]
+ #faces = [[allpoints[v.index] for v in f.verts] for f in me.faces]
+ #print 'deb: allpoints=\n', allpoints #---------
+ #print 'deb: edges=\n', edges #---------
+ #print 'deb: faces=\n', faces #---------
+ if isLeftHand(mx): # then change vertex-order in every face
+ for f in faces:
+ f.reverse()
+ #f = [f[-1]] + f[:-1] #TODO: might be needed
+ #print 'deb: faces=\n', faces #---------
+
+ c = mesh_as_list[GUI_A['mesh_as'].val]
+ if 'POINTs'==c: # export Mesh as multiple POINTs
+ for p in allpoints:
+ dxfPOINT = DXF.Point(points=[p],**common)
+ entities.append(dxfPOINT)
+ elif 'LINEs'==c or (not faces):
+ if edges and allpoints:
+ if DEBUG: mesh_drawBlender(allpoints, edges, None) #deb: draw to blender scene
+ for e in edges:
+ points = [allpoints[e[0]], allpoints[e[1]]]
+ dxfLINE = DXF.Line(points, **common)
+ entities.append(dxfLINE)
+ elif faces:
+ if c in ('POLYFACE','POLYLINE'):
+ if allpoints:
+ #TODO: purge allpoints: left only vertices used by faces
+ if DEBUG: mesh_drawBlender(allpoints, None, faces) #deb: draw to scene
+ if not (PROJECTION and HIDDEN_LINES):
+ faces = [[v+1 for v in f] for f in faces]
+ else:
+ # for back-Faces-mode remove face-free verts
+ map=verts_state= [0]*len(allpoints)
+ for f in faces:
+ for v in f:
+ verts_state[v]=1
+ if 0 in verts_state: # if dirty state
+ i,newverts=0,[]
+ for used_i,used in enumerate(verts_state):
+ if used:
+ newverts.append(allpoints[used_i])
+ map[used_i]=i
+ i+=1
+ allpoints = newverts
+ faces = [[map[v]+1 for v in f] for f in faces]
+ dxfPOLYFACE = DXF.PolyLine([allpoints, faces], flag=64, **common)
+ #print '\n deb: dxfPOLYFACE=',dxfPOLYFACE #-------------
+ entities.append(dxfPOLYFACE)
+ elif '3DFACEs'==c:
+ if DEBUG: mesh_drawBlender(allpoints, None, faces) #deb: draw to scene
+ for f in faces:
+ #print 'deb: face=', f #---------
+ points = [allpoints[key] for key in f]
#points = [p.co[:3] for p in points]
- #print 'deb: points=', points #---------
- dxfFACE = Face(points)
+ #print 'deb: pointsXX=\n', points #---------
+ dxfFACE = DXF.Face(points, **common)
entities.append(dxfFACE)
+
+ return entities
- else: #export 3D as LINEs
- if HIDDEN_MODE and len(me.faces)!=0:
- for e in ok_edges:
- points = [ me_verts[key].co[:3] for key in e]
- dxfLINE = Line(points)
- entities.append(dxfLINE)
+#-----------------------------------------------------
+def mesh_drawBlender(vertList, edgeList, faceList, name="dxfMesh", flatten=False, AT_CUR=True, link=True):
+ #print 'deb:mesh_drawBlender started XXXXXXXXXXXXXXXXXX' #---------
+ ob = Object.New("Mesh",name)
+ me = Mesh.New(name)
+ #print 'deb: vertList=\n', vertList #---------
+ #print 'deb: edgeList=\n', edgeList #---------
+ #print 'deb: faceList=\n', faceList #---------
+ me.verts.extend(vertList)
+ if edgeList: me.edges.extend(edgeList)
+ if faceList: me.faces.extend(faceList)
+ if flatten:
+ for v in me.verts: v.co.z = 0.0
+ ob.link(me)
+ if link:
+ sce = Scene.getCurrent()
+ sce.objects.link(ob)
+ #me.triangleToQuad()
+ if AT_CUR:
+ cur_loc = Window.GetCursorPos()
+ ob.setLocation(cur_loc)
+ Blender.Redraw()
+ #return ob
- else:
- for e in me.edges:
- #print 'deb: edge=', e #---------
- points=[]
- #points = [e.v1.co*mx, e.v2.co*mx]
- points = [ me_verts[key].co[:3] for key in e.key]
- #print 'deb: points=', points #---------
- dxfLINE = Line(points)
- entities.append(dxfLINE)
+#-----------------------------------------------------
+def curve_drawBlender(vertList, org_point=[0.0,0.0,0.0], closed=0, name="dxfCurve", flatten=False, AT_CUR=True, link=True):
+ #print 'deb:curve_drawBlender started XXXXXXXXXXXXXXXXXX' #---------
+ ob = Object.New("Curve",name)
+ cu = Curve.New(name)
+ #print 'deb: vertList=\n', vertList #---------
+ curve = cu.appendNurb(BezTriple.New(vertList[0]))
+ for p in vertList[1:]:
+ curve.append(BezTriple.New(p))
+ for point in curve:
+ #point.handleTypes = [VECT, VECT]
+ point.handleTypes = [FREE, FREE]
+ point.radius = 1.0
+ curve.flagU = closed # 0 sets the curve not cyclic=open
+ cu.setResolu(6)
+ cu.update() #important for handles calculation
+ if flatten:
+ for v in cu.verts: v.co.z = 0.0
+ ob.link(cu)
+ if link:
+ sce = Scene.getCurrent()
+ sce.objects.link(ob)
+ #me.triangleToQuad()
+ if AT_CUR:
+ cur_loc = Window.GetCursorPos()
+ ob.setLocation(cur_loc)
+ elif org_point:
+ cur_loc=org_point
+ ob.setLocation(cur_loc)
+ Blender.Redraw()
+ #return ob
+
+
+#-----------------------------------------------------
+def toNewOrigin(points):
+ """relocates points to the new location
+ needs a list of points [x,y,z]
+ """
+ if GUI_A['g_origin_on'].val:
+ for p in points:
+ p[0] += G_ORIGIN[0]
+ p[1] += G_ORIGIN[1]
+ p[2] += G_ORIGIN[2]
+ return points
+
+
+#-----------------------------------------------------
+def exportEmpty(ob, mx, mw, **common):
+ """converts Empty-Object to desired projection and representation(DXF-Entity type)
+ """
+ p = Mathutils.Vector(ob.loc)
+ [p] = projected_co([p], mx)
+ [p] = toNewOrigin([p])
+
+ entities = []
+ c = empty_as_list[GUI_A['empty_as'].val]
+ if c=="POINT": # export Empty as POINT
+ dxfPOINT = DXF.Point(points=[p],**common)
+ entities.append(dxfPOINT)
+ return entities
+
+#-----------------------------------------------------
+def exportCamera(ob, mx, mw, **common):
+ """converts Camera-Object to desired projection and representation(DXF-Entity type)
+ """
+ p = Mathutils.Vector(ob.loc)
+ [p] = projected_co([p], mx)
+ [p] = toNewOrigin([p])
+
+ entities = []
+ c = camera_as_list[GUI_A['camera_as'].val]
+ if c=="POINT": # export as POINT
+ dxfPOINT = DXF.Point(points=[p],**common)
+ entities.append(dxfPOINT)
+ return entities
+
+#-----------------------------------------------------
+def exportLamp(ob, mx, mw, **common):
+ """converts Lamp-Object to desired projection and representation(DXF-Entity type)
+ """
+ p = Mathutils.Vector(ob.loc)
+ [p] = projected_co([p], mx)
+ [p] = toNewOrigin([p])
+
+ entities = []
+ c = lamp_as_list[GUI_A['lamp_as'].val]
+ if c=="POINT": # export as POINT
+ dxfPOINT = DXF.Point(points=[p],**common)
+ entities.append(dxfPOINT)
+ return entities
+
+#-----------------------------------------------------
+def exportText(ob, mx, mw, **common):
+ """converts Text-Object to desired projection and representation(DXF-Entity type)
+ """
+ text3d = ob.getData()
+ textstr = text3d.getText()
+ WCS_loc = ob.loc # WCS_loc is object location in WorldCoordSystem
+ sizeX = ob.SizeX
+ sizeY = ob.SizeY
+ sizeZ = ob.SizeZ
+ rotX = ob.RotX
+ rotY = ob.RotY
+ rotZ = ob.RotZ
+ #print 'deb: sizeX=%s, sizeY=%s' %(sizeX, sizeY) #---------
+
+ Thickness,Extrusion,ZRotation,Elevation = None,None,None,None
+
+ AXaxis = mx[0].copy().resize3D() # = ArbitraryXvector
+ if not PROJECTION:
+ #Extrusion, ZRotation, Elevation = getExtrusion(mx)
+ Extrusion, AXaxis = getExtrusion(mx)
+
+ # no thickness/width for TEXTs converted into ScreenCS
+ if text3d.getExtrudeDepth():
+ Thickness = text3d.getExtrudeDepth() * sizeZ
+
+ #Horizontal text justification type, code 72, (optional, default = 0)
+ # integer codes (not bit-coded)
+ #0=left, 1=center, 2=right
+ #3=aligned, 4=middle, 5=fit
+ Alignment = None
+ alignment = text3d.getAlignment().value
+ if alignment in (1,2): Alignment = alignment
+
+ textHeight = text3d.getSize() / 1.7
+ textFlag = 0
+ if sizeX < 0.0: textFlag |= 2 # set flag for horizontal mirrored
+ if sizeZ < 0.0: textFlag |= 4 # vertical mirrored
+
+ entities = []
+ c = text_as_list[GUI_A['text_as'].val]
+
+ if c=="TEXT": # export text as TEXT
+ if not PROJECTION:
+ ZRotation,Zrotmatrix,OCS_origin,ECS_origin = getTargetOrientation(mx,Extrusion,\
+ AXaxis,WCS_loc,sizeX,sizeY,sizeZ,rotX,rotY,rotZ)
+ ZRotation *= r2d
+ point = ECS_origin
+ else: #TODO: fails correct location
+ point1 = Mathutils.Vector(ob.loc)
+ [point] = projected_co([point1], mx)
+ if PERSPECTIVE:
+ clipStart = 10.0
+ coef = -clipStart / (point1*mx)[2]
+ textHeight *= coef
+ #print 'deb: coef=', coef #--------------
+
+ #print 'deb: point=', point #--------------
+ [point] = toNewOrigin([point])
+ point2 = point
+
+ #if DEBUG: text_drawBlender(textstr,points,OCS_origin) #deb: draw to scene
+ common['extrusion']= Extrusion
+ #common['elevation']= Elevation
+ common['thickness']= Thickness
+ #print 'deb: common=', common #------------------
+ if 0: #DEBUG
+ #linepoints = [[0,0,0], [AXaxis[0],AXaxis[1],AXaxis[2]]]
+ linepoints = [[0,0,0], point]
+ dxfLINE = DXF.Line(linepoints,**common)
+ entities.append(dxfLINE)
+
+ dxfTEXT = DXF.Text(text=textstr,point=point,alignment=point2,rotation=ZRotation,\
+ flag=textFlag,height=textHeight,justifyhor=Alignment,**common)
+ entities.append(dxfTEXT)
+ if Thickness:
+ common['thickness']= -Thickness
+ dxfTEXT = DXF.Text(text=textstr,point=point,alignment=point2,rotation=ZRotation,\
+ flag=textFlag,height=textHeight,justifyhor=Alignment,**common)
+ entities.append(dxfTEXT)
return entities
+#-------------------------------------------
+def euler2matrix(rx, ry, rz):
+ """creates full 3D rotation matrix (optimized)
+ needs rx, ry, rz angles in radians
+ """
+ #print 'rx, ry, rz: ', rx, ry, rz
+ A, B = sin(rx), cos(rx)
+ C, D = sin(ry), cos(ry)
+ E, F = sin(rz), cos(rz)
+ AC, BC = A*C, B*C
+ return Mathutils.Matrix([D*F, D*E, -C],
+ [AC*F-B*E, AC*E+B*F, A*D],
+ [BC*F+A*E, BC*E-A*F, B*D])
+
+
+#-----------------------------------------------------
+def getTargetOrientation(mx,Extrusion,AXaxis,WCS_loc,sizeX,sizeY,sizeZ,rotX,rotY,rotZ):
+ """given
+ """
+ if 1:
+ rot_matrix = normalizeMat(mx.rotationPart())
+ #TODO: workaround for blender negative-matrix.invert()
+ # partially done: works only for rotX,rotY==0.0
+ if sizeX<0.0: rot_matrix[0] *= -1
+ if sizeY<0.0: rot_matrix[1] *= -1
+ #if sizeZ<0.0: rot_matrix[2] *= -1
+ rot_matrix_invert = rot_matrix.invert()
+ else: #TODO: to check, why below rot_matrix_invert is not equal above one
+ rot_euler_matrix = euler2matrix(rotX,rotY,rotZ)
+ rot_matrix_invert = euler2matrix(-rotX,-rotY,-rotZ)
+
+ # OCS_origin is Global_Origin in ObjectCoordSystem
+ OCS_origin = Mathutils.Vector(WCS_loc) * rot_matrix_invert
+ #print 'deb: OCS_origin=', OCS_origin #---------
+
+ ZRotation = rotZ
+ if Extrusion!=None:
+ ZRotation = getZRotation(AXaxis,rot_matrix_invert)
+ #Zrotmatrix = Mathutils.RotationMatrix(-ZRotation, 3, "Z")
+ rs, rc = sin(ZRotation), cos(ZRotation)
+ Zrotmatrix = Mathutils.Matrix([rc, rs,0.0],[-rs,rc,0.0],[0.0,0.0,1.0])
+ #print 'deb: Zrotmatrix=\n', Zrotmatrix #--------------
+
+ # ECS_origin is Global_Origin in EntityCoordSystem
+ ECS_origin = OCS_origin * Zrotmatrix
+ #print 'deb: ECS_origin=', ECS_origin #---------
+ #TODO: it doesnt work yet for negative scaled curve-objects!
+ return ZRotation,Zrotmatrix,OCS_origin,ECS_origin
+
+
#-----------------------------------------------------
-def exportCurve(ob, mx):
+def exportCurve(ob, mx, mw, **common):
+ """converts Curve-Object to desired projection and representation(DXF-Entity type)
+ """
entities = []
curve = ob.getData()
+ WCS_loc = ob.loc # WCS_loc is object location in WorldCoordSystem
+ #WCS_loc = [0.0,0.0,0.0]
+ #print 'deb: WCS_loc=', WCS_loc #---------
+ sizeX = ob.SizeX
+ sizeY = ob.SizeY
+ sizeZ = ob.SizeZ
+ rotX = ob.RotX
+ rotY = ob.RotY
+ rotZ = ob.RotZ
+ #print 'deb: sizeX=%s, sizeY=%s' %(sizeX, sizeY) #---------
+
+ Thickness,Extrusion,ZRotation,Elevation = None,None,None,None
+ AXaxis = mx[0].copy().resize3D() # = ArbitraryXvector
+ OCS_origin = [0,0,0]
+ if not PROJECTION:
+ #Extrusion, ZRotation, Elevation = getExtrusion(mx)
+ Extrusion, AXaxis = getExtrusion(mx)
+
+ # no thickness/width for POLYLINEs converted into ScreenCS
+ #print 'deb: curve.ext1=', curve.ext1 #---------
+ if curve.ext1: Thickness = curve.ext1 * sizeZ
+ if curve.ext2 and sizeX==sizeY:
+ Width = curve.ext2 * sizeX
+ if "POLYLINE"==curve_as_list[GUI_A['curve_as'].val]: # export as POLYLINE
+ ZRotation,Zrotmatrix,OCS_origin,ECS_origin = getTargetOrientation(mx,Extrusion,\
+ AXaxis,WCS_loc,sizeX,sizeY,sizeZ,rotX,rotY,rotZ)
+
for cur in curve:
#print 'deb: START cur=', cur #--------------
- if 1: #not cur.isNurb():
- #print 'deb: START points' #--------------
- points = []
- org_point = [0.0,0.0,0.0]
+ points = []
+ if cur.isNurb():
for point in cur:
- #print 'deb: point=', point #---------
- if cur.isNurb():
- vec = point[0:3]
- else:
- point = point.getTriple()
- #print 'deb: point=', point #---------
- vec = point[1]
+ #print 'deb:isNurb point=', point #---------
+ vec = point[0:3]
+ #print 'deb: vec=', vec #---------
+ pkt = Mathutils.Vector(vec)
+ #print 'deb: pkt=', pkt #---------
+ points.append(pkt)
+ else:
+ for point in cur:
+ #print 'deb:isBezier point=', point.getTriple() #---------
+ vec = point.getTriple()[1]
#print 'deb: vec=', vec #---------
- pkt = Mathutils.Vector(vec) * mx
+ pkt = Mathutils.Vector(vec)
#print 'deb: pkt=', pkt #---------
- #pkt *= SCALE_FACTOR
- if 0: #FLATTEN:
- pkt = projected_co(pkt, mw)
points.append(pkt)
- if cur.isCyclic(): closed = 1
- else: closed = 0
- if len(points)>1:
+
+ #print 'deb: points', points #--------------
+ if len(points)>1:
+ c = curve_as_list[GUI_A['curve_as'].val]
+
+ if c=="POLYLINE": # export Curve as POLYLINE
+ if not PROJECTION:
+ # recalculate points(2d=X,Y) into Entity-Coords-System
+ for p in points: # list of vectors
+ p[0] *= sizeX
+ p[1] *= sizeY
+ p2 = p * Zrotmatrix
+ p2[0] += ECS_origin[0]
+ p2[1] += ECS_origin[1]
+ p[0],p[1] = p2[0],p2[1]
+ else:
+ points = projected_co(points, mx)
#print 'deb: points', points #--------------
- if POLYLINES: dxfPLINE = PolyLine(points,org_point,closed)
- else: dxfPLINE = LineList(points,org_point,closed)
+
+ if cur.isCyclic(): closed = 1
+ else: closed = 0
+ points = toNewOrigin(points)
+
+ if DEBUG: curve_drawBlender(points,OCS_origin,closed) #deb: draw to scene
+ common['extrusion']= Extrusion
+ ##common['rotation']= ZRotation
+ ##common['elevation']= Elevation
+ common['thickness']= Thickness
+ #print 'deb: common=', common #------------------
+
+ if 0: #DEBUG
+ p=AXaxis[:3]
+ entities.append(DXF.Line([[0,0,0], p],**common))
+ p=ECS_origin[:3]
+ entities.append(DXF.Line([[0,0,0], p],**common))
+ common['color']= 5
+ p=OCS_origin[:3]
+ entities.append(DXF.Line([[0,0,0], p],**common))
+ #OCS_origin=[0,0,0] #only debug----------------
+ dxfPLINE = DXF.PolyLine(points,OCS_origin,closed,**common)
+ entities.append(dxfPLINE)
+
+ dxfPLINE = DXF.PolyLine(points,OCS_origin,closed,**common)
entities.append(dxfPLINE)
+ if Thickness:
+ common['thickness']= -Thickness
+ dxfPLINE = DXF.PolyLine(points,OCS_origin,closed,**common)
+ entities.append(dxfPLINE)
+
+ elif c=="LINEs": # export Curve as multiple LINEs
+ points = projected_co(points, mx)
+ if cur.isCyclic(): points.append(points[0])
+ #print 'deb: points', points #--------------
+ points = toNewOrigin(points)
+
+ if DEBUG: curve_drawBlender(points,WCS_loc,closed) #deb: draw to scene
+ common['extrusion']= Extrusion
+ common['elevation']= Elevation
+ common['thickness']= Thickness
+ #print 'deb: common=', common #------------------
+ for i in range(len(points)-1):
+ linepoints = [points[i], points[i+1]]
+ dxfLINE = DXF.Line(linepoints,**common)
+ entities.append(dxfLINE)
+ if Thickness:
+ common['thickness']= -Thickness
+ for i in range(len(points)-1):
+ linepoints = [points[i], points[i+1]]
+ dxfLINE = DXF.Line(linepoints,**common)
+ entities.append(dxfLINE)
+
+ elif c=="POINTs": # export Curve as multiple POINTs
+ points = projected_co(points, mx)
+ for p in points:
+ dxfPOINT = DXF.Point(points=[p],**common)
+ entities.append(dxfPOINT)
+
return entities
#-----------------------------------------------------
+def getClipBox(camera):
+ """calculates Field-of-View-Clipping-Box of given Camera
+ returns clip_box: a list of vertices
+ returns matr: translation matrix
+ """
+ sce = Scene.GetCurrent()
+ context = sce.getRenderingContext()
+ #print 'deb: context=\n', context #------------------
+ sizeX = context.sizeX
+ sizeY = context.sizeY
+ ratioXY = sizeX/float(sizeY)
+ #print 'deb: size X,Y, ratio=', sizeX, sizeY, ratioXY #------------------
+
+ clip1_Z = - camera.clipStart
+ clip2_Z = - camera.clipEnd
+ #print 'deb: clip Start=', camera.clipStart #------------------
+ #print 'deb: clip End=', camera.clipEnd #------------------
+
+ if camera.type=='ortho':
+ scale = camera.scale
+ #print 'deb: camscale=', scale #------------------
+ clip1shiftX = clip2shiftX = camera.shiftX * scale
+ clip1shiftY = clip2shiftY = camera.shiftY * scale
+ clip1_X = scale * 0.5
+ clip1_Y = scale * 0.5
+ if ratioXY > 1.0: clip1_Y /= ratioXY
+ else: clip1_X *= ratioXY
+ clip2_X = clip1_X
+ clip2_Y = clip1_Y
+
+ near = clip1_Z
+ far = clip2_Z
+ right, left = clip1_X, -clip1_X
+ top, bottom = clip1_Y, -clip1_Y
+
+ scaleX = 2.0/float(right - left)
+ x3 = -float(right + left)/float(right - left)
+ scaleY = 2.0/float(top - bottom)
+ y3 = -float(top + bottom)/float(top - bottom)
+ scaleZ = 1.0/float(far - near)
+ z3 = -float(near)/float(far - near)
+
+ matrix = Mathutils.Matrix( [scaleX, 0.0, 0.0, x3],
+ [0.0, scaleY, 0.0, y3],
+ [0.0, 0.0, scaleZ, z3],
+ [0.0, 0.0, 0.0, 1.0])
+
+ elif camera.type=='persp':
+ #viewpoint = [0.0, 0.0, 0.0] #camera's coordinate system, hehe
+ #lens = camera.lens
+ angle = camera.angle
+ #print 'deb: cam angle=', angle #------------------
+ shiftX = camera.shiftX
+ shiftY = camera.shiftY
+ fov_coef = atan(angle * d2r)
+ fov_coef *= 1.3 #incl. passpartou
+ clip1_k = clip1_Z * fov_coef
+ clip2_k = clip2_Z * fov_coef
+ clip1shiftX = - camera.shiftX * clip1_k
+ clip2shiftX = - camera.shiftX * clip2_k
+ clip1shiftY = - camera.shiftY * clip1_k
+ clip2shiftY = - camera.shiftY * clip2_k
+ clip1_X = clip1_Y = clip1_k * 0.5
+ clip2_X = clip2_Y = clip2_k * 0.5
+ if ratioXY > 1.0:
+ clip1_Y /= ratioXY
+ clip2_Y /= ratioXY
+ else:
+ clip1_X *= ratioXY
+ clip2_X *= ratioXY
+
+ near = clip1_Z
+ far = clip2_Z
+ right, left = clip1_X, -clip1_X
+ top, bottom = clip1_Y, -clip1_Y
+ #return Matrix( [scaleX, 0.0, x2, 0.0],
+ #[0.0, scaleY, y2, 0.0],
+ #[0.0, 0.0, scaleZ, wZ],
+ #[0.0, 0.0, -1.0, 0.0])
+ matrix = Mathutils.Matrix( [(2.0 * near)/float(right - left), 0.0, float(right + left)/float(right - left), 0.0],
+ [0.0, (2.0 * near)/float(top - bottom), float(top + bottom)/float(top - bottom), 0.0],
+ [0.0, 0.0, -float(far + near)/float(far - near), -(2.0 * far * near)/float(far - near)],
+ [0.0, 0.0, -1.0, 0.0])
+
+
+ clip_box = [
+ -clip1_X + clip1shiftX, clip1_X + clip1shiftX,
+ -clip1_Y + clip1shiftY, clip1_Y + clip1shiftY,
+ -clip2_X + clip2shiftX, clip2_X + clip2shiftX,
+ -clip2_Y + clip2shiftY, clip2_Y + clip2shiftY,
+ clip1_Z, clip2_Z]
+ #print 'deb: clip_box=\n', clip_box #------------------
+ #drawClipBox(clip_box)
+ return clip_box, matrix
+
+
+#-----------------------------------------------------
+def drawClipBox(clip_box):
+ """debug tool: draws Clipping-Box of a Camera View
+ """
+ min_X1, max_X1, min_Y1, max_Y1,\
+ min_X2, max_X2, min_Y2, max_Y2,\
+ min_Z, max_Z = clip_box
+ verts = []
+ verts.append([min_X1, min_Y1, min_Z])
+ verts.append([max_X1, min_Y1, min_Z])
+ verts.append([max_X1, max_Y1, min_Z])
+ verts.append([min_X1, max_Y1, min_Z])
+ verts.append([min_X2, min_Y2, max_Z])
+ verts.append([max_X2, min_Y2, max_Z])
+ verts.append([max_X2, max_Y2, max_Z])
+ verts.append([min_X2, max_Y2, max_Z])
+ faces = [[0,1,2,3],[4,5,6,7]]
+ nme = Mesh.New()
+ nme.verts.extend(verts)
+ nme.faces.extend(faces)
+
+ plan = Object.New('Mesh','clip_box')
+ plan.link(nme)
+ sce = Scene.GetCurrent()
+ sce.objects.link(plan)
+ plan.setMatrix(sce.objects.camera.matrix)
+
+
+#-------------------------------------------------
+def getCommons(ob):
+ """set up common attributes for output style:
+ color=None
+ extrusion=None
+ layer='0',
+ lineType=None
+ lineTypeScale=None
+ lineWeight=None
+ thickness=None
+ parent=None
+ """
+
+ layers = ob.layers #gives a list e.g.[1,5,19]
+ if layers: ob_layer_nr = layers[0]
+ #print 'ob_layer_nr=', ob_layer_nr #--------------
+
+ materials = ob.getMaterials()
+ if materials:
+ ob_material = materials[0]
+ ob_mat_color = ob_material.rgbCol
+ else: ob_mat_color, ob_material = None, None
+ #print 'ob_mat_color, ob_material=', ob_mat_color, ob_material #--------------
+
+ data = ob.getData()
+ data_materials = ob.getMaterials()
+ if data_materials:
+ data_material = data_materials[0]
+ data_mat_color = data_material.rgbCol
+ else: data_mat_color, data_material = None, None
+ #print 'data_mat_color, data_material=', data_mat_color, data_material #--------------
+
+ entitylayer = ENTITYLAYER_DEF
+ c = entitylayer_from_list[GUI_A['entitylayer_from'].val]
+ #["default_LAYER","obj.name","obj.layer","obj.material","obj.data.name","obj.data.material","..vertexgroup","..group","..map_table"]
+ if c=="default_LAYER":
+ entitylayer = LAYERNAME_DEF
+ elif c=="obj.layer" and ob_layer_nr:
+ entitylayer = 'LAYER'+ str(ob_layer_nr)
+ elif c=="obj.material" and ob_material:
+ entitylayer = ob_material.name
+ elif c=="obj.name":
+ entitylayer = ob.name
+ elif c=="obj.data.material" and ob_material:
+ entitylayer = data_material.name
+ elif c=="obj.data.name":
+ entitylayer = data.name
+ entitylayer = validDXFr12name(PREFIX+entitylayer)
+ if entitylayer=="": entitylayer = "BF_0"
+
+ entitycolor = ENTITYCOLOR_DEF
+ c = entitycolor_from_list[GUI_A['entitycolor_from'].val]
+ if c=="default_COLOR":
+ entitycolor = LAYERCOLOR_DEF
+ elif c=="BYLAYER":
+ entitycolor = BYLAYER
+ elif c=="BYBLOCK":
+ entitycolor = BYBLOCK
+ elif c=="obj.layer" and ob_layer_nr:
+ entitycolor = ob_layer_nr
+ elif c=="obj.color" and ob.color:
+ entitycolor = col2DXF(ob.color)
+ elif c=="obj.material" and ob_mat_color:
+ entitycolor = col2DXF(ob_mat_color)
+ elif c=="obj.data.material" and data_mat_color:
+ entitycolor = col2DXF(data_mat_color)
+ #if entitycolor!=None: layercolor = entitycolor
+
+ entityltype = ENTITYLTYPE_DEF
+ c = entityltype_from_list[GUI_A['entityltype_from'].val]
+ if c=="default_LTYPE":
+ entityltype = LAYERLTYPE_DEF
+ elif c=="BYLAYER":
+ entityltype = BYLAYER
+ elif c=="BYBLOCK":
+ entityltype = BYBLOCK
+ elif c:
+ entityltype = c
+
+ return entitylayer,entitycolor,entityltype
+
+
+#-----------------------------------------------------
def do_export(export_list, filepath):
+ global PERSPECTIVE, CAMERAVIEW
Window.WaitCursor(1)
- t = sys.time()
-
- #init Drawing ---------------------
- d=Drawing()
- #add Tables -----------------
- #d.blocks.append(b) #table blocks
- d.styles.append(Style()) #table styles
- d.views.append(View('Normal')) #table view
- d.views.append(ViewByWindow('Window',leftBottom=(1,0),rightTop=(2,1))) #idem
-
- #add Entities --------------------
- something_ready = False
- #ViewVector = Mathutils.Vector(Window.GetViewVector())
- #print 'deb: ViewVector=', ViewVector #------------------
- mw0 = Window.GetViewMatrix()
- #mw0 = Window.GetPerspMatrix() #TODO: how get it working?
- mw = mw0.copy()
- if FLATTEN:
- m0 = Mathutils.Matrix()
- m0[2][2]=0.0
- mw *= m0 #flatten ViewMatrix
-
- if APPLY_MODIFIERS:
- tmp_me = Mesh.New('tmp')
- else:
- tmp_me = None
+ t = Blender.sys.time()
+ # init Drawing ---------------------
+ d=DXF.Drawing()
+ # add Tables -----------------
+ #d.blocks.append(b) #table blocks
+ #goes automatic: d.styles.append(DXF.Style()) #table styles
+ #d.views.append(DXF.View('Normal')) #table view
+ d.views.append(DXF.ViewByWindow('BF_TOPVIEW',leftBottom=(-100,-60),rightTop=(100,60))) #idem
+
+ # add Entities --------------------
+ something_ready = 0
+ selected_len = len(export_list)
+ sce = Scene.GetCurrent()
+
+ mw = Mathutils.Matrix( [1.0, 0.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0, 0.0],
+ [0.0, 0.0, 1.0, 0.0],
+ [0.0, 0.0, 0.0, 1.0])
+ if PROJECTION:
+ if CAMERA<len(CAMERAS)+1: # the biggest number is the current 3d-view
+ act_camera = Object.Get(CAMERAS[CAMERA-1])
+ #context = sce.getRenderingContext()
+ #print 'deb: context=\n', context #------------------
+ #print 'deb: context=\n', dir(context) #------------------
+ #act_camera = sce.objects.camera
+ #print 'deb: act_camera=', act_camera #------------------
+ if act_camera:
+ CAMERAVIEW = 1
+ mc0 = act_camera.matrix.copy()
+ #print 'deb: camera.Matrix=\n', mc0 #------------------
+ camera = Camera.Get(act_camera.getData(name_only=True))
+ #print 'deb: camera=', dir(camera) #------------------
+ if camera.type=='persp': PERSPECTIVE = 1
+ elif camera.type=='ortho': PERSPECTIVE = 0
+ # mcp is matrix.camera.perspective
+ clip_box, mcp = getClipBox(camera)
+ if PERSPECTIVE:
+ # get border
+ # lens = camera.lens
+ min_X1, max_X1, min_Y1, max_Y1,\
+ min_X2, max_X2, min_Y2, max_Y2,\
+ min_Z, max_Z = clip_box
+ verts = []
+ verts.append([min_X1, min_Y1, min_Z])
+ verts.append([max_X1, min_Y1, min_Z])
+ verts.append([max_X1, max_Y1, min_Z])
+ verts.append([min_X1, max_Y1, min_Z])
+ border=verts
+ mw = mc0.copy().invert()
+
+ else: # get 3D-View instead of camera-view
+ #ViewVector = Mathutils.Vector(Window.GetViewVector())
+ #print 'deb: ViewVector=\n', ViewVector #------------------
+ #TODO: what is Window.GetViewOffset() for?
+ #print 'deb: Window.GetViewOffset():', Window.GetViewOffset() #---------
+ #Window.SetViewOffset([0,0,0])
+ mw0 = Window.GetViewMatrix()
+ #print 'deb: mwOrtho =\n', mw0 #---------
+ mwp = Window.GetPerspMatrix() #TODO: how to get it working?
+ #print 'deb: mwPersp =\n', mwp #---------
+ mw = mw0.copy()
+
+ #print 'deb: ViewMatrix=\n', mw #------------------
+
+ if APPLY_MODIFIERS: tmp_me = Mesh.New('tmp')
+ else: tmp_me = None
+
+ if GUI_A['paper_space_on'].val==1: espace=1
+ else: espace=None
+
+ layernames = []
for ob,mx in export_list:
entities = []
#mx = ob.matrix.copy()
- mb = mx.copy()
- #print 'deb: mb =\n', mb #---------
- #print 'deb: mw0 =\n', mw0 #---------
- mx_n = mx.rotationPart() * mw0.rotationPart() #trans-matrix for normal_vectors
- if SCALE_FACTOR!=1.0: mx *= SCALE_FACTOR
- if FLATTEN: mx *= mw
-
+ #print 'deb: ob =', ob #---------
+ print 'deb: ob.type =', ob.type #---------
+ #print 'deb: mx =\n', mx #---------
+ #print 'deb: mw0 =\n', mw0 #---------
+ #mx_n is trans-matrix for normal_vectors for front-side faces
+ mx_n = mx.rotationPart() * mw.rotationPart()
+ if G_SCALE!=1.0: mx *= G_SCALE
+ mx *= mw
+
#mx_inv = mx.copy().invert()
- #print 'deb: mx =\n', mx #---------
+ #print 'deb: mx =\n', mx #---------
#print 'deb: mx_inv=\n', mx_inv #---------
- if (ob.type == 'Mesh'):
- entities = exportMesh(ob, mx, mx_n,tmp_me)
- elif (ob.type == 'Curve'):
- entities = exportCurve(ob, mx)
+ if ob.type in ('Mesh','Curve','Empty','Text','Camera','Lamp'):
+ elayer,ecolor,eltype = getCommons(ob)
+ #print 'deb: elayer,ecolor,eltype =', elayer,ecolor,eltype #--------------
+
+ #TODO: use ob.boundBox for drawing extends
- for e in entities:
- d.append(e)
- something_ready = True
+ if elayer!=None:
+ if elayer not in layernames:
+ layernames.append(elayer)
+ if ecolor!=None: tempcolor = ecolor
+ else: tempcolor = LAYERCOLOR_DEF
+ d.layers.append(DXF.Layer(color=tempcolor, name=elayer))
+ if (ob.type == 'Mesh') and GUI_B['bmesh'].val:
+ entities = exportMesh(ob, mx, mx_n, tmp_me,\
+ paperspace=espace, color=ecolor, layer=elayer, lineType=eltype)
+ elif (ob.type == 'Curve') and GUI_B['bcurve'].val:
+ entities = exportCurve(ob, mx, mw, \
+ paperspace=espace, color=ecolor, layer=elayer, lineType=eltype)
+ elif (ob.type == 'Empty') and GUI_B['empty'].val:
+ entities = exportEmpty(ob, mx, mw, \
+ paperspace=espace, color=ecolor, layer=elayer, lineType=eltype)
+ elif (ob.type == 'Text') and GUI_B['text'].val:
+ entities = exportText(ob, mx, mw, \
+ paperspace=espace, color=ecolor, layer=elayer, lineType=eltype)
+ elif (ob.type == 'Camera') and GUI_B['camera'].val:
+ entities = exportCamera(ob, mx, mw, \
+ paperspace=espace, color=ecolor, layer=elayer, lineType=eltype)
+ elif (ob.type == 'Lamp') and GUI_B['lamp'].val:
+ entities = exportLamp(ob, mx, mw, \
+ paperspace=espace, color=ecolor, layer=elayer, lineType=eltype)
+
+ if entities:
+ something_ready += 1
+ for e in entities:
+ d.append(e)
+
if something_ready:
- if not OUTPUT_DWG:
- print 'exporting to %s' % filepath
- d.saveas(filepath)
- Window.WaitCursor(0)
- #Draw.PupMenu('DXF Exporter: job finished')
- print ' finished in %.2f seconds. -----DONE-----' % (sys.time()-t)
+ if PERSPECTIVE: # draw view border
+ mw2 = Mathutils.Matrix().identity()
+ points = projected_co(border, mw2)
+ closed = 1
+ points = toNewOrigin(points)
+
+ dxfPLINE = DXF.PolyLine(points,points[0],closed,\
+ paperspace=espace, color=LAYERCOLOR_DEF)
+ d.append(dxfPLINE)
+
+
+ if not GUI_A['outputDWG_on'].val:
+ print 'writing to %s' % filepath
+ try:
+ d.saveas(filepath)
+ Window.WaitCursor(0)
+ #print '%s objects exported to %s' %(something_ready,filepath)
+ print '%s/%s objects exported in %.2f seconds. -----DONE-----' %(something_ready,selected_len,(Blender.sys.time()-t))
+ Draw.PupMenu('DXF Exporter: job finished!| %s/%s objects exported in %.2f sek.' %(something_ready,selected_len, (Blender.sys.time()-t)))
+ except IOError:
+ Window.WaitCursor(0)
+ Draw.PupMenu('DXF Exporter: Write Error: Permission denied:| %s' %filepath)
+
else:
if not extCONV_OK:
Draw.PupMenu(extCONV_TEXT)
@@ -416,117 +1330,1443 @@ def do_export(export_list, filepath):
d.saveas(filepath)
#Draw.PupMenu('DXF Exporter: job finished')
#print 'exported to %s' % filepath
- #print 'finished in %.2f seconds' % (sys.time()-t)
+ #print 'finished in %.2f seconds' % (Blender.sys.time()-t)
filedwg = filepath[:-3]+'dwg'
print 'exporting to %s' % filedwg
os.system('%s %s -acad13 -dwg' %(extCONV_PATH,filepath))
#os.chdir(cwd)
os.remove(filepath)
Window.WaitCursor(0)
- print ' finished in %.2f seconds. -----DONE-----' % (sys.time()-t)
-
+ print ' finished in %.2f seconds. -----DONE-----' % (Blender.sys.time()-t)
+ Draw.PupMenu('DWG Exporter: job finished!| %s/%s objects exported in %.2f sek.' %(something_ready,selected_len, (Blender.sys.time()-t)))
else:
Window.WaitCursor(0)
- print "Abort: selected objects dont mach choosen export option, nothing exported!"
- Draw.PupMenu('DXF Exporter: nothing exported!|selected objects dont mach choosen export option!')
+ print "Abort: selected objects dont match choosen export option, nothing exported!"
+ Draw.PupMenu('DXF Exporter: nothing exported!|selected objects dont match choosen export option!')
-#----globals------------------------------------------
-ONLYSELECTED = True
-POLYLINES = True
-ONLYFACES = False
-POLYFACES = 1
-FLATTEN = 0
-HIDDEN_MODE = False #filter out hidden lines
-SCALE_FACTOR = 1.0 #optional, can be done later in CAD too
-APPLY_MODIFIERS = True
-INCLUDE_DUPLIS = False
-OUTPUT_DWG = False #optional save to DWG with extern converter
-#-----------------------------------------------------
-def dxf_export_ui(filepath):
- global ONLYSELECTED,\
- POLYLINES,\
- ONLYFACES,\
- POLYFACES,\
- FLATTEN,\
- HIDDEN_MODE,\
- SCALE_FACTOR,\
- APPLY_MODIFIERS,\
- OUTPUT_DWG,\
- INCLUDE_DUPLIS
-
- print '\n\nDXF-Export %s -----------START-----------' %__version__
- #filepath = 'blend_test.dxf'
- # Dont overwrite
- if not BPyMessages.Warning_SaveOver(filepath):
- print 'Aborted by user: nothing exported'
- return
- #test():return
-
-
- PREF_ONLYSELECTED= Draw.Create(ONLYSELECTED)
- PREF_POLYLINES= Draw.Create(POLYLINES)
- PREF_ONLYFACES= Draw.Create(ONLYFACES)
- PREF_POLYFACES= Draw.Create(POLYFACES)
- PREF_FLATTEN= Draw.Create(FLATTEN)
- PREF_HIDDEN_MODE= Draw.Create(HIDDEN_MODE)
- PREF_SCALE_FACTOR= Draw.Create(SCALE_FACTOR)
- PREF_APPLY_MODIFIERS= Draw.Create(APPLY_MODIFIERS)
- PREF_INCLUDE_DUPLIS= Draw.Create(INCLUDE_DUPLIS)
- PREF_HELP= Draw.Create(0)
- PREF_DWG= Draw.Create(OUTPUT_DWG)
- block = [\
- ("only selected", PREF_ONLYSELECTED, "export only selected geometry"),\
- ("Apply Modifiers", PREF_APPLY_MODIFIERS, "Apply modifier stack to mesh objects before export"),\
- ("Include Duplis", PREF_INCLUDE_DUPLIS, "Export also Duplicates (dupliverts, dupliframes etc)"),\
- ("global Scale:", PREF_SCALE_FACTOR, 0.001, 1000, "set global Scale factor for exporting geometry"),\
- (''),\
- ("export to 3DFaces", PREF_ONLYFACES, "from mesh-objects export only faces, otherwise only edges"),\
- ("mesh to POLYFACE", PREF_POLYFACES, "export mesh to POLYFACE, otherwise to 3DFACEs"),\
- ("curves to POLYLINEs", PREF_POLYLINES, "export curve to POLYLINE, otherwise to LINEs"),\
- ("3D-View to Flat", PREF_FLATTEN, "flatten geometry according current 3d-View"),\
- ("Hidden Mode", PREF_HIDDEN_MODE, "filter out hidden lines"),\
- ("online Help", PREF_HELP, "calls DXF-Exporter Manual Page on Wiki.Blender.org"),\
- (''),\
- ("DXF->DWG", PREF_DWG, "writes DWG with extern converter"),\
- ]
-
- if not Draw.PupBlock("DXF-Exporter %s" %__version__[:10], block): return
-
- if PREF_HELP.val!=0:
+#------------------------------------------------------
+"""
+v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,\
+28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,\
+123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,\
+151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,\
+171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,\
+191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,\
+211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,\
+231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254]
+invalid = ''.join([chr(i) for i in v])
+del v, i
+"""
+#TODO: validDXFr14 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.'
+validDXFr12 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'
+
+#------------------------------------------------------
+def cleanName(name,valid):
+ validname = ''
+ for ch in name:
+ if ch not in valid: ch = '_'
+ validname += ch
+ return validname
+
+#------------------------------------------------------
+def validDXFr12name(str_name):
+ dxfname = str(str_name)
+ dxfname = dxfname[:NAMELENGTH_MAX].upper()
+ dxfname = cleanName(dxfname,validDXFr12)
+ return dxfname
+
+#print cleanName('dumka',validDXFr12)
+#print validDXFr12name('dum 15%ka')
+
+#------------------------------------------------------
+def col2RGB(color):
+ return [int(floor(255*color[0])),
+ int(floor(255*color[1])),
+ int(floor(255*color[2]))]
+
+global dxfColors
+dxfColors=None
+
+#------------------------------------------------------
+def col2DXF(rgbcolor):
+ global dxfColors
+ if dxfColors is None:
+ from dxfColorMap import color_map
+ dxfColors = [(tuple(color),idx) for idx, color in color_map.iteritems()]
+ dxfColors.sort()
+ entry = (tuple(rgbcolor), -1)
+ dxfColors.append(entry)
+ dxfColors.sort()
+ i = dxfColors.index(entry)
+ dxfColors.pop(i)
+ return dxfColors[i-1][1]
+
+
+
+# NEW UI -----#################################################-----------------
+# ------------#################################################-----------------
+
+class Settings: #-----------------------------------------------------------------
+ """A container for all the export settings and objects.
+
+ This is like a collection of globally accessable persistant properties and functions.
+ """
+ # Optimization constants
+ MIN = 0
+ MID = 1
+ PRO = 2
+ MAX = 3
+
+ def __init__(self, keywords, drawTypes):
+ """initialize all the important settings used by the export functions.
+ """
+ self.obj_number = 1 #global object_number for progress_bar
+
+ self.var = dict(keywords) #a dictionary of (key_variable:Value) control parameter
+ self.drawTypes = dict(drawTypes) #a dictionary of (entity_type:True/False) = import on/off for this entity_type
+
+ self.var['colorFilter_on'] = False #deb:remi------------
+ self.acceptedColors = [0,2,3,4,5,6,7,8,9,
+ 10 ]
+
+ self.var['materialFilter_on'] = False #deb:remi------------
+ self.acceptedLayers = ['3',
+ '0'
+ ]
+
+ self.var['groupFilter_on'] = False #deb:remi------------
+ self.acceptedLayers = ['3',
+ '0'
+ ]
+
+ #self.var['objectFilter_on'] = 0 #deb:remi------------
+ self.acceptedBlocks = ['WALL_1871',
+ 'BOX02'
+ ]
+ self.unwantedBlocks = ['BOX05',
+ 'BOX04'
+ ]
+
+
+ def update(self, keywords, drawTypes):
+ """update all the important settings used by the draw functions.
+ mostly used after loading parameters from INI-file
+ """
+
+ for k, v in keywords.iteritems():
+ self.var[k] = v
+ #print 'deb:settings_update var %s= %s' %(k, self.var[k]) #--------------
+ for t, v in drawTypes.iteritems():
+ self.drawTypes[t] = v
+ #print 'deb:settings_update drawType %s= %s' %(t, self.drawTypes[t]) #--------------
+
+ self.drawTypes['arc'] = self.drawTypes['surface']
+ self.drawTypes['circle'] = self.drawTypes['surface']
+ self.drawTypes['ellipse'] = self.drawTypes['surface']
+ self.drawTypes['trace'] = self.drawTypes['solid']
+ self.drawTypes['insert'] = self.drawTypes['group']
+ #self.drawTypes['vport'] = self.drawTypes['view']
+
+ #print 'deb:self.drawTypes', self.drawTypes #---------------
+
+
+ def validate(self, drawing):
+ """Given the drawing, build dictionaries of Layers, Colors and Blocks.
+ """
+ global oblist
+ #adjust the distance parameter to globalScale
+ if self.var['g_scale'] != 1.0:
+ self.var['dist_min'] = self.var['dist_min'] / self.var['g_scale']
+ self.g_origin = Mathutils.Vector(self.var['g_originX'], self.var['g_originY'], self.var['g_originZ'])
+
+
+ def write(self, text, newline=True):
+ """Wraps the built-in print command in a optimization check.
+ """
+ if self.var['optimization'] <= self.MID:
+ if newline:
+ print text
+ else:
+ print text,
+
+
+ def redraw(self):
+ """Update Blender if optimization level is low enough.
+ """
+ if self.var['optimization'] <= self.MIN:
+ Blender.Redraw()
+
+
+ def progress(self, done, text):
+ """Wrapper for Blender.Window.DrawProgressBar.
+ """
+ if self.var['optimization'] <= self.PRO:
+ progressbar = done * self.obj_number
+ Window.DrawProgressBar(progressbar, text)
+ #print 'deb:drawer done, progressbar: ', done, progressbar #-----------------------
+
+
+
+# GUI STUFF -----#################################################-----------------
+from Blender.BGL import *
+
+EVENT_NONE = 1
+EVENT_START = 2
+EVENT_REDRAW = 3
+EVENT_LOAD_INI = 4
+EVENT_SAVE_INI = 5
+EVENT_RESET = 6
+EVENT_CHOOSE_INI = 7
+EVENT_CHOOSE_DXF = 8
+EVENT_HELP = 9
+EVENT_CAMERA = 10
+EVENT_LIGHT =11
+EVENT_DXF_DIR = 12
+EVENT_setCAMERA = 13
+# = 14
+EVENT_ORIGIN = 15
+EVENT_SCALE = 16
+EVENT_PRESET2D = 20
+EVENT_PRESET3D = 21
+EVENT_PRESETPLINE = 22
+EVENT_PRESETS = 23
+EVENT_EXIT = 100
+
+GUI_A = {} # GUI-buttons dictionary for parameter
+GUI_B = {} # GUI-buttons dictionary for drawingTypes
+
+# settings default, initialize ------------------------
+
+#-----------------------------------------------
+def prepareMenu(title,list):
+ menu = title
+ for i, item in enumerate(list):
+ menu += '|'+ item + ' %x' + str(i)
+ return menu
+
+#-----------------------------------------------
+mesh_as_list = ["3DFACEs","POLYFACE","POLYLINE","LINEs","POINTs"]
+mesh_as_menu = prepareMenu("export to: %t", mesh_as_list)
+
+curve_as_list = ["LINEs","POLYLINE","..LWPOLYLINE r14","..SPLINE r14","POINTs"]
+curve_as_menu = prepareMenu("export to: %t", curve_as_list)
+
+surface_as_list = ["..3DFACEs","..POLYFACE","..POINTs","..NURBS"]
+surface_as_menu = prepareMenu("export to: %t", surface_as_list)
+
+meta_as_list = ["..3DFACEs","..POLYFACE","..3DSOLID"]
+meta_as_menu = prepareMenu("export to: %t", meta_as_list)
+
+text_as_list = ["TEXT","..MTEXT","..ATTRIBUT"]
+text_as_menu = prepareMenu("export to: %t", text_as_list)
+
+empty_as_list = ["POINT","..INSERT","..XREF"]
+empty_as_menu = prepareMenu("export to: %t|", empty_as_list)
+
+group_as_list = ["..GROUP","..BLOCK","..ungroup"]
+group_as_menu = prepareMenu("export to: %t", group_as_list)
+
+parent_as_list = ["..BLOCK","..ungroup"]
+parent_as_menu = prepareMenu("export to: %t", parent_as_list)
+
+proxy_as_list = ["..BLOCK","..XREF","..ungroup","..POINT"]
+proxy_as_menu = prepareMenu("export to: %t", proxy_as_list)
+
+camera_as_list = ["..BLOCK","..A_CAMERA","..VPORT","..VIEW","POINT"]
+camera_as_menu = prepareMenu("export to: %t", camera_as_list)
+
+lamp_as_list = ["..BLOCK","..A_LAMP","POINT"]
+lamp_as_menu = prepareMenu("export to: %t", lamp_as_list)
+
+material_to_list= ["COLOR","LAYER","..LINESTYLE","..BLOCK","..XDATA","..INI-File"]
+material_to_menu = prepareMenu("export to: %t", material_to_list)
+
+ltype_map_list= ["object_rgb","material_rgb","..map_table"]
+ltype_map_menu = prepareMenu("export to: %t", ltype_map_list)
+
+
+
+layername_from_list = [LAYERNAME_DEF,"drawing_name","scene_name"]
+layername_from_menu = prepareMenu("defaultLAYER: %t", layername_from_list)
+
+layerltype_def_list = ["CONTINUOUS","DOT","DASHED","DASHDOT","BORDER","HIDDEN"]
+layerltype_def_menu = prepareMenu("LINETYPE set to: %t",layerltype_def_list)
+
+entitylayer_from_list = ["default_LAYER","obj.name","obj.layer","obj.material","obj.data.name","obj.data.material","..vertexgroup","..group","..map_table"]
+entitylayer_from_menu = prepareMenu("entityLAYER from: %t", entitylayer_from_list)
+#print 'deb: entitylayer_from_menu=', entitylayer_from_menu #--------------
+
+entitycolor_from_list = ["default_COLOR","BYLAYER","BYBLOCK","obj.layer","obj.color","obj.material","obj.data.material","..map_table"]
+entitycolor_from_menu = prepareMenu("entityCOLOR set to: %t",entitycolor_from_list)
+
+entityltype_from_list = ["default_LTYPE","BYLAYER","BYBLOCK","CONTINUOUS","DOT","DASHED","DASHDOT","BORDER","HIDDEN"]
+entityltype_from_menu = prepareMenu("entityCOLOR set to: %t",entityltype_from_list)
+
+#dxf-LINE,ARC,CIRCLE,ELLIPSE
+
+g_scale_list = ''.join((
+ 'scale factor: %t',
+ '|user def. %x12',
+ '|yard to m %x8',
+ '|feet to m %x7',
+ '|inch to m %x6',
+ '| x 100000 %x5',
+ '| x 10000 %x4',
+ '| x 1000 %x3',
+ '| x 100 %x2',
+ '| x 10 %x1',
+ '| x 1 %x0',
+ '| x 0.1 %x-1',
+ '| x 0.01 %x-2',
+ '| x 0.001 %x-3',
+ '| x 0.0001 %x-4',
+ '| x 0.00001 %x-5'))
+
+#print 'deb: g_scale_list', g_scale_list #-----------
+
+dxfFileName = Draw.Create("")
+iniFileName = Draw.Create(INIFILE_DEFAULT_NAME + INIFILE_EXTENSION)
+user_preset = 0
+config_UI = Draw.Create(0) #switch_on/off extended config_UI
+g_scale_as = Draw.Create(int(log10(G_SCALE)))
+
+
+keywords_org = {
+ 'optimization': 2,
+ 'dummy_on' : 0,
+
+ 'xref_on' : 1,
+ 'block_nn': 0,
+
+ 'paper_space_on': 0,
+ 'layFrozen_on': 0,
+ 'objectFilter_on': 0,
+ 'materialFilter_on': 0,
+ 'colorFilter_on': 0,
+ 'groupFilter_on': 0,
+
+ 'only_selected_on': ONLYSELECTED,
+ 'only_visible_on': ONLYVISIBLE,
+ 'projection_on' : PROJECTION,
+ 'hidden_lines_on': HIDDEN_LINES,
+ 'shadows_on' : SHADOWS,
+ 'light_on' : 1,
+ 'outputDWG_on' : OUTPUT_DWG,
+ 'to_polyline_on': POLYLINES,
+ 'to_polyface_on': POLYFACES,
+ 'apply_modifiers_on': APPLY_MODIFIERS,
+ 'include_duplis_on': INCLUDE_DUPLIS,
+ 'camera_selected': CAMERA,
+
+ 'g_originX' : G_ORIGIN[0],
+ 'g_originY' : G_ORIGIN[1],
+ 'g_originZ' : G_ORIGIN[2],
+ 'g_origin_on': 0,
+ 'g_scale' : float(G_SCALE),
+# 'g_scale_as': int(log10(G_SCALE)), # 0,
+ 'g_scale_on': 0,
+ 'Z_force_on': 0,
+ 'Z_elev': float(ELEVATION),
+
+
+ 'prefix_def' : PREFIX,
+ 'layername_def' : LAYERNAME_DEF,
+ 'layercolor_def': LAYERCOLOR_DEF,
+ 'layerltype_def': LAYERLTYPE_DEF,
+ 'entitylayer_from': 5,
+ 'entitycolor_from': 1,
+ 'entityltype_from' : 1,
+
+ 'material_on': 1,
+ 'material_to': 2,
+ 'fill_on' : 1,
+
+ 'mesh_as' : 1,
+ 'curve_as' : 1,
+ 'surface_as' : 1,
+ 'meta_as' : 1,
+ 'text_as' : 0,
+ 'empty_as' : 0,
+ 'group_as' : 0,
+ 'parent_as' : 0,
+ 'proxy_as' : 0,
+ 'camera_as': 4,
+ 'lamp_as' : 2,
+ }
+
+drawTypes_org = {
+ 'bmesh' : 1,
+ 'bcurve': 1,
+ 'surface': 0,
+ 'bmeta' : 0,
+ 'text' : 1,
+ 'empty' : 1,
+ 'group' : 1,
+ 'parent': 1,
+ 'proxy' : 0,
+ 'camera': 0,
+ 'lamp' : 0,
+
+# 'view' : 0,
+ }
+
+# creating of GUI-buttons
+# GUI_A - GUI-buttons dictionary for parameter
+# GUI_B - GUI-buttons dictionary for drawingTypes
+for k, v in keywords_org.iteritems():
+ GUI_A[k] = Draw.Create(v)
+for k, v in drawTypes_org.iteritems():
+ GUI_B[k] = Draw.Create(v)
+#print 'deb:init GUI_A: ', GUI_A #---------------
+#print 'deb:init GUI_B: ', GUI_B #---------------
+
+model_space_on = Draw.Create(1)
+
+# initialize settings-object controls how dxf entities are drawn
+settings = Settings(keywords_org, drawTypes_org)
+
+
+def update_RegistryKey(key, item): #
+ """updates key in Blender.Registry
+ """
+ cache = True # data is also saved to a file
+ rdict = Registry.GetKey('DXF_Exporter', cache)
+ if not rdict: rdict = {}
+ if item:
+ rdict[key] = item
+ Registry.SetKey('DXF_Exporter', rdict, cache)
+ #print 'deb:update_RegistryKey rdict', rdict #---------------
+
+
+def check_RegistryKey(key):
+ """ check if the key is already there (saved on a previous execution of this script)
+ """
+ cache = True # data is also saved to a file
+ rdict = Registry.GetKey('DXF_Exporter', cache)
+ #print 'deb:check_RegistryKey rdict:', rdict #----------------
+ if rdict: # if found, get the values saved there
+ try:
+ item = rdict[key]
+ return item
+ except:
+ #update_RegistryKey() # if data isn't valid rewrite it
+ pass
+
+def saveConfig(): #--todo-----------------------------------------------
+ """Save settings/config/materials from GUI to INI-file.
+
+ Write all config data to INI-file.
+ """
+ global iniFileName
+
+ iniFile = iniFileName.val
+ #print 'deb:saveConfig inifFile: ', inifFile #----------------------
+ if iniFile.lower().endswith(INIFILE_EXTENSION):
+
+ #--todo-- sort key.list for output
+ #key_list = GUI_A.keys().val
+ #key_list.sort()
+ #for key in key_list:
+ # l_name, l_data = key, GUI_A[key].val
+ # list_A
+
+ output_str = '[%s,%s]' %(GUI_A, GUI_B)
+ if output_str =='None':
+ Draw.PupMenu('DXF-Exporter: INI-file: Alert!%t|no config-data present to save!')
+ else:
+ if Blender.sys.exists(iniFile):
+ f = file(iniFile, 'r')
+ header_str = f.readline()
+ f.close()
+ if header_str.startswith(INIFILE_HEADER[0:13]):
+ if Draw.PupMenu(' OK ? %t|SAVE OVER: ' + '\'%s\'' %iniFile) == 1:
+ save_ok = True
+ else: save_ok = False
+ elif Draw.PupMenu(' OK ? %t|SAVE OVER: ' + '\'%s\'' %iniFile +
+ '|Alert: this file has no valid ImportDXF-header| ! it may belong to another aplication !') == 1:
+ save_ok = True
+ else: save_ok = False
+ else: save_ok = True
+
+ if save_ok:
+ # replace: ',' -> ',\n'
+ # replace: '{' -> '\n{\n'
+ # replace: '}' -> '\n}\n'
+ output_str = ',\n'.join(output_str.split(','))
+ output_str = '\n}'.join(output_str.split('}'))
+ output_str = '{\n'.join(output_str.split('{'))
+ try:
+ f = file(iniFile, 'w')
+ f.write(INIFILE_HEADER + '\n# this is a comment line\n')
+ f.write(output_str)
+ f.close()
+ #Draw.PupMenu('DXF-Exporter: INI-file: Done!%t|config-data saved in ' + '\'%s\'' %iniFile)
+ except:
+ Draw.PupMenu('DXF-Exporter: INI-file: Error!%t|failure by writing to ' + '\'%s\'|no config-data saved!' %iniFile)
+
+ else:
+ Draw.PupMenu('DXF-Exporter: INI-file: Alert!%t|no valid name/extension for INI-file selected!')
+ print "DXF-Exporter: Alert!: no valid INI-file selected."
+ if not iniFile:
+ if dxfFileName.val.lower().endswith('.dxf'):
+ iniFileName.val = dxfFileName.val[0:-4] + INIFILE_EXTENSION
+
+
+def loadConfig(): #remi--todo-----------------------------------------------
+ """Load settings/config/materials from INI-file.
+
+ TODO: Read material-assignements from config-file.
+ """
+ #20070724 buggy Window.FileSelector(loadConfigFile, 'Load config data from INI-file', inifilename)
+ global iniFileName, GUI_A, GUI_B
+
+ iniFile = iniFileName.val
+ update_RegistryKey('iniFileName', iniFile)
+ #print 'deb:loadConfig iniFile: ', iniFile #----------------------
+ if iniFile.lower().endswith(INIFILE_EXTENSION) and Blender.sys.exists(iniFile):
+ f = file(iniFile, 'r')
+ header_str = f.readline()
+ if header_str.startswith(INIFILE_HEADER):
+ data_str = f.read()
+ f.close()
+ #print 'deb:loadConfig data_str from %s: \n' %iniFile , data_str #-----------------
+ data = eval(data_str)
+ for k, v in data[0].iteritems():
+ try: GUI_A[k].val = v
+ except: GUI_A[k] = Draw.Create(v)
+ for k, v in data[1].iteritems():
+ try: GUI_B[k].val = v
+ except: GUI_B[k] = Draw.Create(v)
+ else:
+ f.close()
+ Draw.PupMenu('DXF-Exporter: INI-file: Alert!%t|no valid header in INI-file: ' + '\'%s\'' %iniFile)
+ else:
+ Draw.PupMenu('DXF-Exporter: INI-file: Alert!%t|no valid INI-file selected!')
+ print "DXF-Exporter: Alert!: no valid INI-file selected."
+ if not iniFileName:
+ if dxfFileName.val.lower().endswith('.dxf'):
+ iniFileName.val = dxfFileName.val[0:-4] + INIFILE_EXTENSION
+
+
+
+def updateConfig(keywords, drawTypes): #-----------------------------------------------
+ """updates GUI_settings with given dictionaries
+
+ """
+ global GUI_A, GUI_B
+ #print 'deb:lresetDefaultConfig keywords_org: \n', keywords_org #---------
+ for k, v in keywords.iteritems():
+ GUI_A[k].val = v
+ for k, v in drawTypes.iteritems():
+ GUI_B[k].val = v
+
+def resetDefaultConfig(): #-----------------------------------------------
+ """Resets settings/config/materials to defaults.
+
+ """
+ #print 'deb:lresetDefaultConfig keywords_org: \n', keywords_org #---------
+ updateConfig(keywords_org, drawTypes_org)
+
+
+def presetConfig_polyline(activate): #-----------------------------------------------
+ """Sets settings/config for polygon representation: POLYLINE(FACE) or LINEs/3DFACEs.
+
+ """
+ global GUI_A
+ if activate:
+ GUI_A['to_polyline_on'].val = 1
+ GUI_A['mesh_as'].val = 1
+ GUI_A['curve_as'].val = 1
+ else:
+ GUI_A['to_polyline_on'].val = 0
+ GUI_A['mesh_as'].val = 0
+ GUI_A['curve_as'].val = 0
+
+def resetDefaultConfig_2D(): #-----------------------------------------------
+ """Sets settings/config/materials to defaults 2D.
+
+ """
+ keywords2d = {
+ 'projection_on' : 1,
+ 'fill_on' : 1,
+ 'text_as' : 0,
+ 'group_as' : 0,
+ }
+
+ drawTypes2d = {
+ 'bmesh' : 1,
+ 'bcurve': 1,
+ 'surface':0,
+ 'bmeta' : 0,
+ 'text' : 1,
+ 'empty' : 1,
+ 'group' : 1,
+ 'parent' : 1,
+ #'proxy' : 0,
+ #'camera': 0,
+ #'lamp' : 0,
+
+ }
+ presetConfig_polyline(1)
+ updateConfig(keywords2d, drawTypes2d)
+
+def resetDefaultConfig_3D(): #-----------------------------------------------
+ """Sets settings/config/materials to defaults 3D.
+
+ """
+ keywords3d = {
+ 'projection_on' : 0,
+ 'fill_on' : 0,
+ 'text_as' : 0,
+ 'group_as' : 0,
+ }
+
+ drawTypes3d = {
+ 'bmesh' : 1,
+ 'bcurve': 1,
+ 'surface':0,
+ 'bmeta' : 0,
+ 'text' : 0,
+ 'empty' : 1,
+ 'group' : 1,
+ 'parent' : 1,
+ #'proxy' : 0,
+ #'camera': 1,
+ #'lamp' : 1,
+ }
+ presetConfig_polyline(1)
+ updateConfig(keywords3d, drawTypes3d)
+
+
+def inputGlobalScale():
+ """Pop-up UI-Block for global scale factor
+ """
+ global GUI_A
+ #print 'deb:inputGlobalScale ##########' #------------
+ x_scale = Draw.Create(GUI_A['g_scale'].val)
+ block = []
+ #block.append("global translation vector:")
+ block.append(("", x_scale, 0.0, 10000000.0))
+
+ retval = Draw.PupBlock("set global scale factor:", block)
+
+ GUI_A['g_scale'].val = float(x_scale.val)
+
+
+def inputOriginVector():
+ """Pop-up UI-Block for global translation vector
+ """
+ global GUI_A
+ #print 'deb:inputOriginVector ##########' #------------
+ x_origin = Draw.Create(GUI_A['g_originX'].val)
+ y_origin = Draw.Create(GUI_A['g_originY'].val)
+ z_origin = Draw.Create(GUI_A['g_originZ'].val)
+ block = []
+ #block.append("global translation vector:")
+ block.append(("X: ", x_origin, -100000000.0, 100000000.0))
+ block.append(("Y: ", y_origin, -100000000.0, 100000000.0))
+ block.append(("Z: ", z_origin, -100000000.0, 100000000.0))
+
+ retval = Draw.PupBlock("set global translation vector:", block)
+
+ GUI_A['g_originX'].val = x_origin.val
+ GUI_A['g_originY'].val = y_origin.val
+ GUI_A['g_originZ'].val = z_origin.val
+
+
+def update_globals(): #-----------------------------------------------------------------
+ """ update globals if GUI_A changed
+ """
+ global ONLYSELECTED,ONLYVISIBLE, DEBUG,\
+ PROJECTION, HIDDEN_LINES, CAMERA, \
+ G_SCALE, G_ORIGIN,\
+ PREFIX, LAYERNAME_DEF, LAYERCOLOR_DEF, LAYERLTYPE_DEF,\
+ APPLY_MODIFIERS, INCLUDE_DUPLIS,\
+ OUTPUT_DWG
+ #global POLYLINES
+
+ ONLYSELECTED = GUI_A['only_selected_on'].val
+ ONLYVISIBLE = GUI_A['only_visible_on'].val
+ """
+ POLYLINES = GUI_A['to_polyline_on'].val
+ if GUI_A['curve_as'].val==1: POLYLINES=1
+ else: POLYLINES=0
+ """
+
+ if GUI_A['optimization'].val==0: DEBUG = 1
+ else: DEBUG = 0
+ PROJECTION = GUI_A['projection_on'].val
+ HIDDEN_LINES = GUI_A['hidden_lines_on'].val
+ CAMERA = GUI_A['camera_selected'].val
+ G_SCALE = GUI_A['g_scale'].val
+ if GUI_A['g_origin_on'].val:
+ G_ORIGIN[0] = GUI_A['g_originX'].val
+ G_ORIGIN[1] = GUI_A['g_originY'].val
+ G_ORIGIN[2] = GUI_A['g_originZ'].val
+ if GUI_A['g_scale_on'].val:
+ G_ORIGIN[0] *= G_SCALE
+ G_ORIGIN[1] *= G_SCALE
+ G_ORIGIN[2] *= G_SCALE
+
+ PREFIX = GUI_A['prefix_def'].val
+ LAYERNAME_DEF = GUI_A['layername_def'].val
+ LAYERCOLOR_DEF = GUI_A['layercolor_def'].val
+ LAYERLTYPE_DEF = layerltype_def_list[GUI_A['layerltype_def'].val]
+
+ APPLY_MODIFIERS = GUI_A['apply_modifiers_on'].val
+ INCLUDE_DUPLIS = GUI_A['include_duplis_on'].val
+ OUTPUT_DWG = GUI_A['outputDWG_on'].val
+ #print 'deb: GUI HIDDEN_LINES=', HIDDEN_LINES #---------
+ #print 'deb: GUI GUI_A: ', GUI_A['hidden_lines_on'].val #---------------
+ #print 'deb: GUI GUI_B: ', GUI_B #---------------
+
+
+def draw_UI(): #-----------------------------------------------------------------
+ """ Draw startUI and setup Settings.
+ """
+ global GUI_A, GUI_B #__version__
+ global user_preset, iniFileName, dxfFileName, config_UI, g_scale_as
+ global model_space_on
+ global SCROLL
+
+ global mPAN_X, menu_orgX, mPAN_Xmax
+ global mPAN_Y, menu_orgY, mPAN_Ymax
+ global menu__Area, headerArea, screenArea, scrollArea
+
+ size=Buffer(GL_FLOAT, 4)
+ glGetFloatv(GL_SCISSOR_BOX, size) #window X,Y,sizeX,sizeY
+ size= size.list
+ #print '-------------size:', size #--------------------------
+ for s in [0,1,2,3]: size[s]=int(size[s])
+ window_Area = [0,0,size[2],size[3]-2]
+ scrollXArea = [0,0,window_Area[2],15]
+ scrollYArea = [0,0,15,window_Area[3]]
+
+ menu_orgX = -mPAN_X
+ #menu_orgX = 0 #scrollW
+ #if menu_pan: menu_orgX -= mPAN_X
+ if menu_orgX < -mPAN_Xmax: menu_orgX, mPAN_X = -mPAN_Xmax,mPAN_Xmax
+ if menu_orgX > 0: menu_orgX, mPAN_X = 0,0
+
+ menu_orgY = -mPAN_Y
+ #if menu_pan: menu_orgY -= mPAN_Y
+ if menu_orgY < -mPAN_Ymax: menu_orgY, mPAN_Y = -mPAN_Ymax,mPAN_Ymax
+ if menu_orgY > 0: menu_orgY, mPAN_Y = 0,0
+
+
+ menu_margin = 10
+ butt_margin = 10
+ common_column = int((window_Area[2] - (3 * butt_margin) - (2 * menu_margin)-30) / 4.0)
+ common_column = 70
+ # This is for easy layout changes
+ but_0c = common_column #button 1.column width
+ but_1c = common_column #button 1.column width
+ but_2c = common_column #button 2.column
+ but_3c = common_column #button 3.column
+ menu_w = (3 * butt_margin) + but_0c + but_1c + but_2c + but_3c #menu width
+
+ simple_menu_h = 240
+ extend_menu_h = 345
+ menu_h = simple_menu_h # y is menu upper.y
+ if config_UI.val:
+ menu_h += extend_menu_h
+
+ mPAN_Xmax = menu_w-window_Area[2]+50
+ mPAN_Ymax = menu_h-window_Area[3]+30
+
+ y = menu_h
+ x = 0 #menu left.x
+ x +=menu_orgX+20
+ y +=menu_orgY+20
+
+
+ but0c = x + menu_margin #buttons 0.column position.x
+ but1c = but0c + but_0c + butt_margin
+ but2c = but1c + but_1c + butt_margin
+ but3c = but2c + but_2c + butt_margin
+ but4c = but3c + but_3c
+
+ # Here starts menu -----------------------------------------------------
+ #glClear(GL_COLOR_BUFFER_BIT)
+ #glRasterPos2d(8, 125)
+
+
+ ui_box(x, y, x+menu_w+menu_margin*2, y-menu_h)
+ y -= 20
+ Draw.Label("DXF(r12)-Exporter v" + __version__, but0c, y, menu_w, 20)
+
+ if config_UI.val:
+ b0, b0_ = but0c, but_0c-20 + butt_margin
+ b1, b1_ = but1c-20, but_1c+20
+ y_top = y
+
+ y -= 10
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['bmesh'] = Draw.Toggle('Mesh', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['bmesh'].val, "Export Mesh-Objects on/off")
+ if GUI_B['bmesh'].val:
+ GUI_A['mesh_as'] = Draw.Menu(mesh_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['mesh_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['bcurve'] = Draw.Toggle('Curve', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['bcurve'].val, "Export Curve-Objects on/off")
+ if GUI_B['bcurve'].val:
+ GUI_A['curve_as'] = Draw.Menu(curve_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['curve_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['surface'] = Draw.Toggle('..Surface', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['surface'].val, "(*todo) Export Surface-Objects on/off")
+ if GUI_B['surface'].val:
+ GUI_A['surface_as'] = Draw.Menu(surface_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['surface_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['bmeta'] = Draw.Toggle('..Meta', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['bmeta'].val, "(*todo) Export Meta-Objects on/off")
+ if GUI_B['bmeta'].val:
+ GUI_A['meta_as'] = Draw.Menu(meta_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['meta_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['text'] = Draw.Toggle('Text', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['text'].val, "Export Text-Objects on/off")
+ if GUI_B['text'].val:
+ GUI_A['text_as'] = Draw.Menu(text_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['text_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['empty'] = Draw.Toggle('Empty', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['empty'].val, "Export Empty-Objects on/off")
+ if GUI_B['empty'].val:
+ GUI_A['empty_as'] = Draw.Menu(empty_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['empty_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y_down = y
+ # -----------------------------------------------
+
+ y = y_top
+ b0, b0_ = but2c, but_2c-20 + butt_margin
+ b1, b1_ = but3c-20, but_3c+20
+
+ y -= 10
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['group'] = Draw.Toggle('..Group', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['group'].val, "(*todo) Export Group-Relationships on/off")
+ if GUI_B['group'].val:
+ GUI_A['group_as'] = Draw.Menu(group_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['group_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['parent'] = Draw.Toggle('..Parent', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['parent'].val, "(*todo) Export Parent-Relationships on/off")
+ if GUI_B['parent'].val:
+ GUI_A['parent_as'] = Draw.Menu(parent_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['parent_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['proxy'] = Draw.Toggle('..Proxy', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['proxy'].val, "(*todo) Export Proxy-Objects on/off")
+ if GUI_B['proxy'].val:
+ GUI_A['proxy_as'] = Draw.Menu(proxy_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['proxy_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['camera'] = Draw.Toggle('Camera', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['camera'].val, "(*wip) Export Camera-Objects on/off")
+ if GUI_B['camera'].val:
+ GUI_A['camera_as'] = Draw.Menu(camera_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['camera_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_B['lamp'] = Draw.Toggle('Lamp', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['lamp'].val, "(*wip) Export Lamp-Objects on/off")
+ if GUI_B['lamp'].val:
+ GUI_A['lamp_as'] = Draw.Menu(lamp_as_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['lamp_as'].val, "Select target DXF-object")
+ Draw.EndAlign()
+
+
+ if y < y_down: y_down = y
+ # -----end supported objects--------------------------------------
+
+ y_top = y_down
+ y = y_top
+ y -= 10
+ y -= 20
+ but_ = menu_w / 6
+ b0 = but0c + (menu_w - but_*6)/2
+ Draw.BeginAlign()
+ #GUI_A['dummy_on'] = Draw.Toggle('-', EVENT_NONE, b0+but_*0, y, but_, 20, GUI_A['dummy_on'].val, "placeholder only on/off")
+ GUI_A['paper_space_on'] = Draw.Toggle('Paper', EVENT_NONE, b0+but_*0, y, but_, 20, GUI_A['paper_space_on'].val, "Export to Paper-Space, otherwise to Model-Space on/off")
+ GUI_A['layFrozen_on'] = Draw.Toggle ('..frozen', EVENT_NONE, b0+but_*1, y, but_, 20, GUI_A['layFrozen_on'].val, "(*todo) Support LAYER.frozen status on/off")
+ GUI_A['materialFilter_on'] = Draw.Toggle('..material', EVENT_NONE, b0+but_*2, y, but_, 20, GUI_A['materialFilter_on'].val, "(*todo) Material filtering on/off")
+ GUI_A['colorFilter_on'] = Draw.Toggle('..color', EVENT_NONE, b0+but_*3, y, but_, 20, GUI_A['colorFilter_on'].val, "(*todo) Color filtering on/off")
+ GUI_A['groupFilter_on'] = Draw.Toggle('..group', EVENT_NONE, b0+but_*4, y, but_, 20, GUI_A['groupFilter_on'].val, "(*todo) Group filtering on/off")
+ GUI_A['objectFilter_on'] = Draw.Toggle('..object', EVENT_NONE, b0+but_*5, y, but_, 20, GUI_A['objectFilter_on'].val, "(*todo) Object filtering on/off")
+ Draw.EndAlign()
+
+ # -----end filters--------------------------------------
+
+ b0, b0_ = but0c, but_0c + butt_margin
+ b1, b1_ = but1c, but_1c
+
+ y -= 10
+ y -= 20
+ Draw.BeginAlign()
+ GUI_A['g_origin_on'] = Draw.Toggle('Location', EVENT_REDRAW, b0, y, b0_, 20, GUI_A['g_origin_on'].val, "Global relocate all objects on/off")
+ if GUI_A['g_origin_on'].val:
+ tmp = Draw.PushButton('=', EVENT_ORIGIN, b1, y, 20, 20, "Edit relocation-vector (x,y,z in DXF units)")
+ origin_str = '(%.4f, %.4f, %.4f)' % (
+ GUI_A['g_originX'].val,
+ GUI_A['g_originY'].val,
+ GUI_A['g_originZ'].val
+ )
+ tmp = Draw.Label(origin_str, b1+20, y, 300, 20)
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_A['g_scale_on'] = Draw.Toggle('Scale', EVENT_REDRAW, b0, y, b0_, 20, GUI_A['g_scale_on'].val, "Global scale all objects on/off")
+ if GUI_A['g_scale_on'].val:
+ g_scale_as = Draw.Menu(g_scale_list, EVENT_SCALE, b1, y, 45, 20, g_scale_as.val, "Factor for scaling the DXFdata")
+ if g_scale_as.val == 12:
+ pass
+ else:
+ if g_scale_as.val == 6: #scale inches to meters
+ GUI_A['g_scale'].val = 0.0254000
+ elif g_scale_as.val == 7: #scale feets to meters
+ GUI_A['g_scale'].val = 0.3048000
+ elif g_scale_as.val == 8: #scale yards to meters
+ GUI_A['g_scale'].val = 0.9144000
+ else:
+ GUI_A['g_scale'].val = 10.0 ** int(g_scale_as.val)
+ scale_float = GUI_A['g_scale'].val
+ if scale_float < 0.000001 or scale_float > 1000000:
+ scale_str = ' = %s' % GUI_A['g_scale'].val
+ else:
+ scale_str = ' = %.6f' % GUI_A['g_scale'].val
+ Draw.Label(scale_str, b1+45, y, 200, 20)
+ Draw.EndAlign()
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_A['Z_force_on'] = Draw.Toggle('Elevation', EVENT_REDRAW, b0, y, b0_, 20, GUI_A['Z_force_on'].val, "Overwrite Z-coordinates (flatten geometry) on/off")
+ if GUI_A['Z_force_on'].val:
+ GUI_A['Z_elev'] = Draw.Number('', EVENT_NONE, b1, y, b1_, 20, GUI_A['Z_elev'].val, -1000, 1000, "Set value for default Z-coordinate (in DXF units)")
+ Draw.EndAlign()
+
+ """
+ y -= 30
+ Draw.BeginAlign()
+ GUI_A['material_on'] = Draw.Toggle('.material', EVENT_REDRAW, b0, y, b0_-20, 20, GUI_A['material_on'].val, "Support for material assignment on/off")
+ if GUI_A['material_on'].val:
+ GUI_A['material_to'] = Draw.Menu(material_to_menu, EVENT_NONE, b1-20, y, b1_+20, 20, GUI_A['material_to'].val, "Material assigned to?")
+ Draw.EndAlign()
+ """
+
+ #b0, b0_ = but0c, but_0c + butt_margin
+ b0, b0_ = but0c, 50
+ b1, b1_ = b0+b0_, but_0c-b0_+ but_1c + butt_margin
+ b2, b2_ = but2c, but_2c
+ b3, b3_ = but3c, but_3c
+
+ y -= 30
+ Draw.Label('Output:', b0, y, b0_, 20)
+ Draw.Label('LAYER:', b1, y, b1_, 20)
+ Draw.Label('COLOR:', b2, y, b2_, 20)
+ Draw.Label('LINETYPE:', b3, y, b3_, 20)
+ #Draw.Label('LINESIZE:', b4, y, b4_, 20)
+
+ y -= 20
+ Draw.BeginAlign()
+ GUI_A['prefix_def'] = Draw.String('', EVENT_NONE, b0, y, b0_, 20, GUI_A['prefix_def'].val, 10, "Type Prefix for LAYERs")
+ GUI_A['layername_def'] = Draw.String('', EVENT_NONE, b1, y, b1_, 20, GUI_A['layername_def'].val, 10, "Type default LAYER name")
+ GUI_A['layercolor_def'] = Draw.Number('', EVENT_NONE, b2, y, b2_, 20, GUI_A['layercolor_def'].val, 1, 255, "Set default COLOR. (0=BYBLOCK,256=BYLAYER)")
+ GUI_A['layerltype_def'] = Draw.Menu(layerltype_def_menu, EVENT_NONE, b3, y, b3_, 20, GUI_A['layerltype_def'].val, "Set default LINETYPE")
+ Draw.EndAlign()
+
+ y -= 25
+ Draw.Label('Style:', b0, y, b0_, 20)
+ Draw.BeginAlign()
+ GUI_A['entitylayer_from'] = Draw.Menu(entitylayer_from_menu, EVENT_NONE, b1, y, b1_, 20, GUI_A['entitylayer_from'].val, "entity LAYER assigned to?")
+ GUI_A['entitycolor_from'] = Draw.Menu(entitycolor_from_menu, EVENT_NONE, b2, y, b2_, 20, GUI_A['entitycolor_from'].val, "entity COLOR assigned to?")
+ GUI_A['entityltype_from'] = Draw.Menu(entityltype_from_menu, EVENT_NONE, b3, y, b3_, 20, GUI_A['entityltype_from'].val, "Set entity LINETYPE")
+ Draw.EndAlign()
+
+ y -= 10
+
+ y_down = y
+ # -----end material,translate,scale------------------------------------------
+
+
+ #--------------------------------------
+ y_top = y_down
+ y = y_top
+
+ y -= 30
+ Draw.BeginAlign()
+ Draw.PushButton('INI file >', EVENT_CHOOSE_INI, but0c, y, but_0c, 20, 'Select INI-file with file selector')
+ iniFileName = Draw.String(' :', EVENT_NONE, but1c, y, menu_w-but_1c-60, 20, iniFileName.val, FILENAME_MAX, "Write here the name of the INI-file")
+ but = but4c-60
+ Draw.PushButton('#', EVENT_PRESETS, but, y, 20, 20, "Toggle Preset-INI-files")
+ Draw.PushButton('L', EVENT_LOAD_INI, but+20, y, 20, 20, 'Loads configuration from selected ini-file: %s' % iniFileName.val)
+ Draw.PushButton('S', EVENT_SAVE_INI, but+40, y, 20, 20, 'Saves configuration to selected ini-file: %s' % iniFileName.val)
+ Draw.EndAlign()
+
+ bm = butt_margin/2
+
+ y -= 10
+ y -= 20
+ Draw.BeginAlign()
+ Draw.PushButton('DXFfile >', EVENT_CHOOSE_DXF, but0c, y, but_0c, 20, 'Select DXF-file with file selector')
+ dxfFileName = Draw.String(' :', EVENT_NONE, but1c, y, menu_w-but_0c-menu_margin, 20, dxfFileName.val, FILENAME_MAX, "Type path/name of output DXF-file")
+ Draw.EndAlign()
+
+ y -= 30
+ config_UI = Draw.Toggle('CONFIG', EVENT_REDRAW, but0c, y, but_0c+bm, 20, config_UI.val, 'Advanced configuration on/off' )
+ Draw.BeginAlign()
+ but, but_ = but1c, but_1c+bm
+ but_ /= 3
+ Draw.PushButton('X', EVENT_RESET, but, y, 15, 20, "Reset configuration to defaults")
+ Draw.PushButton('2D', EVENT_PRESET2D, but+but_, y, but_, 20, 'Set to standard configuration for 2D export')
+ Draw.PushButton('3D', EVENT_PRESET3D, but+(but_*2), y, but_, 20, 'Set to standard configuration for 3D import')
+ Draw.EndAlign()
+
+
+ y -= 30
+ b0, b0_ = but0c, but_0c + butt_margin +but_1c
+ GUI_A['only_selected_on'] = Draw.Toggle('Export Selection', EVENT_NONE, b0, y, b0_, 20, GUI_A['only_selected_on'].val, "Export only selected geometry on/off")
+ b0, b0_ = but2c, but_2c + butt_margin + but_3c
+ Draw.BeginAlign()
+ GUI_A['projection_on'] = Draw.Toggle('2d Projection', EVENT_REDRAW, b0, y, b0_, 20, GUI_A['projection_on'].val, "Export a 2d Projection according 3d-View or Camera-View on/off")
+ if GUI_A['projection_on'].val:
+ GUI_A['camera_selected'] = Draw.Menu(MenuCAMERA, EVENT_CAMERA, b0, y-20, b0_-20, 20, GUI_A['camera_selected'].val, 'Choose the camera to be rendered')
+ Draw.PushButton('>', EVENT_setCAMERA, b0+b0_-20, y-20, 20, 20, 'switch to selected Camera - make it active')
+ GUI_A['hidden_lines_on'] = Draw.Toggle('Remove backFaces', EVENT_NONE, b0, y-40, b0_, 20, GUI_A['hidden_lines_on'].val, "Filter out backFaces on/off")
+ #GUI_A['shadows_on'] = Draw.Toggle('..Shadows', EVENT_REDRAW, b0, y-60, but_2c, 20, GUI_A['shadows_on'].val, "(*todo) Shadow tracing on/off")
+ #GUI_A['light_on'] = Draw.Menu(MenuLIGHT, EVENT_LIGHT, but3c, y-60, but_3c, 20, GUI_A['light_on'].val, '(*todo) Choose the light source(sun) to be rendered')
+ Draw.EndAlign()
+
+ y -= 20
+ b0, b0_ = but0c, but_0c + butt_margin +but_1c
+ GUI_A['only_visible_on'] = Draw.Toggle('Visible only', EVENT_PRESETPLINE, b0, y, b0_, 20, GUI_A['only_visible_on'].val, "Export only from visible layers on/off")
+ #b0, b0_ = but2c, but_2c + butt_margin + but_3c
+
+ y -= 20
+ b0, b0_ = but0c, but_0c + butt_margin +but_1c
+ GUI_A['to_polyline_on'] = Draw.Toggle('POLYLINE-Mode', EVENT_PRESETPLINE, b0, y, b0_, 20, GUI_A['to_polyline_on'].val, "Export to POLYLINE/POLYFACEs, otherwise to LINEs/3DFACEs on/off")
+ #b0, b0_ = but2c, but_2c + butt_margin + but_3c
+
+ y -= 20
+ b0, b0_ = but0c, but_0c + butt_margin +but_1c
+ GUI_A['apply_modifiers_on'] = Draw.Toggle('Apply Modifiers', EVENT_NONE, b0, y, b0_, 20, GUI_A['apply_modifiers_on'].val, "Apply modifier stack to mesh objects before export on/off")
+ #b0, b0_ = but2c, but_2c + butt_margin + but_3c
+
+ y -= 20
+ b0, b0_ = but0c, but_0c + butt_margin +but_1c
+ GUI_A['include_duplis_on'] = Draw.Toggle('Include Duplis', EVENT_NONE, b0, y, b0_, 20, GUI_A['include_duplis_on'].val, "Export Duplicates (dupliverts, dupliframes, dupligroups) on/off")
+ #b0, b0_ = but2c, but_2c + butt_margin + but_3c
+
+
+
+ y -= 30
+ Draw.PushButton('EXIT', EVENT_EXIT, but0c, y, but_0c+bm, 20, '' )
+ Draw.PushButton('HELP', EVENT_HELP, but1c, y, but_1c+bm, 20, 'goes to online-Manual on wiki.blender.org')
+ GUI_A['optimization'] = Draw.Number('', EVENT_NONE, but2c, y, 40, 20, GUI_A['optimization'].val, 0, 3, "Optimization Level: 0=Debug/Draw-in, 1=Verbose, 2=ProgressBar, 3=SilentMode")
+ GUI_A['outputDWG_on'] = Draw.Toggle('DWG*', EVENT_NONE, but2c, y+20, 40, 20, GUI_A['outputDWG_on'].val, "converts DXF to DWG (needs external converter) on/off")
+
+ Draw.BeginAlign()
+ Draw.PushButton('START EXPORT', EVENT_START, but2c+40, y, but_2c-40+but_3c+butt_margin, 40, 'Start the export process. For Cancel go to console and hit Ctrl-C')
+ Draw.EndAlign()
+
+ y -= 20
+ #Draw.BeginAlign()
+ #Draw.Label(' ', but0c-menu_margin, y, menu_margin, 20)
+ #Draw.Label(LAB, but0c, y, menu_w, 20)
+ Draw.Label(LAB, 30, y, menu_w, 20)
+ #Draw.Label(' ', but0c+menu_w, y, menu_margin, 20)
+ #Draw.EndAlign()
+
+ ui_scrollbarX(menu_orgX, menu_w+50, scrollXArea, c_fg, c_bg)
+ ui_scrollbarY(menu_orgY, menu_h+30, scrollYArea, c_fg, c_bg)
+
+
+
+
+#-- END GUI Stuf-----------------------------------------------------
+
+c0=[0.2,0.2,0.2,0.0]
+c1=[0.7,0.7,0.9,0.0]
+c2=[0.71,0.71,0.71,0.0]
+c3=[0.4,0.4,0.4,0.0]
+c4=[0.95,0.95,0.9,0.0]
+c5=[0.64,0.64,0.64,0]
+c6=[0.75,0.75,0.75,0]
+c7=[0.6,0.6,0.6,0]
+c8=[1.0,0.0,0.0,0]
+c9=[0.7,0.0,0.0,0]
+c10=[0.64,0.81,0.81,0]
+c11=[0.57,0.71,0.71,0]
+c_nor= c5[:3]
+c_act= c10[:3]
+c_sel= c11[:3]
+c_tx = c0[:3]
+c_fg = c2[:3]
+c_bg = c5[:3]
+
+def ui_rect(coords,color):
+ [X1,Y1,X2,Y2],[r,g,b] = coords,color
+ glColor3f(r,g,b)
+ glRecti(X1,Y1,X2,Y2)
+def ui_rectA(coords,color):
+ [X1,Y1,X2,Y2],[r,g,b,a] = coords,color
+ glColor4f(r,g,b,a)
+ glRecti(X1,Y1,X2,Y2) #integer coords
+ #glRectf(X1,Y1,X2,Y2) #floating coords
+def ui_line(coords,color):
+ [X1,Y1,X2,Y2],[r,g,b] = coords,color
+ glColor3f(r,g,b)
+ glBegin(GL_LINES)
+ glVertex2i(X1,Y1)
+ glVertex2i(X2,Y2)
+ glEnd()
+def ui_panel(posX,posY,L,H,color):
+ [r,g,b] = color
+ ui_rect([posX+4,posY-4,posX+L+4,posY-H-4],[.55,.55,.55]) #1st shadow
+ ui_rect([posX+3,posY-3,posX+L+3,posY-H-3],[.45,.45,.45])
+ ui_rect([posX+3,posY-3,posX+L+2,posY-H-2],[.30,.30,.30]) #2nd shadow
+ ui_rect([posX,posY-H,posX+L,posY],[r,g,b]) #Main
+ ui_rect([posX+3,posY-19,posX+L-3,posY-2],[.75*r,.75*g,.75*b]) #Titlebar
+ ui_line([posX+3,posY-19,posX+3,posY-2],[.25,.25,.25])
+ ui_line([posX+4,posY-19,posX+4,posY-2],[(r+.75)/4,(g+.75)/4,(b+.75)/4])
+ ui_line([posX+4,posY-2,posX+L-3,posY-2],[(r+.75)/4,(g+.75)/4,(b+.75)/4])
+def ui_box(x,y,xright,bottom):
+ color = [0.75, 0.75, 0.75]
+ coords = x+1,y+1,xright-1,bottom-1
+ ui_rect(coords,color)
+
+def ui_scrollbarX(Focus,PanelH,Area, color_fg, color_bg):
+ # Area = ScrollBarArea
+ # point1=down/left, point2=top/right
+ P1X,P1Y,P2X,P2Y = Area
+ AreaH = P2X-P1X
+ if PanelH > AreaH:
+ Slider = int(AreaH * (AreaH / float(PanelH)))
+ if Slider<3: Slider = 3 #minimal slider heigh
+ posX = -int(AreaH * (Focus / float(PanelH)))
+ ui_rect([P1X,P1Y,P2X,P2Y], color_bg)
+ ui_rect([P1X+posX,P1Y+3,P1X+posX+Slider,P2Y-3], color_fg)
+
+def ui_scrollbarY(Focus,PanelH,Area, color_fg, color_bg):
+ # Area = ScrollBarArea
+ # point1=down/left, point2=top/right
+ P1X,P1Y,P2X,P2Y = Area
+ AreaH = P2Y-P1Y
+ if PanelH > AreaH:
+ Slider = int(AreaH * (AreaH / float(PanelH)))
+ if Slider<3: Slider = 3 #minimal slider heigh
+ posY = -int(AreaH * (Focus / float(PanelH)))
+ ui_rect([P1X,P1Y,P2X-1,P2Y], color_bg)
+ #ui_rect([P1X+3,P2Y-posY,P2X-4,P2Y-posY-Slider], color_fg)
+ ui_rect([P1X+3,P1Y+posY,P2X-4,P1Y+posY+Slider], color_fg)
+
+
+#------------------------------------------------------------
+def dxf_callback(input_filename):
+ global dxfFileName
+ dxfFileName.val=input_filename
+# dirname == Blender.sys.dirname(Blender.Get('filename'))
+# update_RegistryKey('DirName', dirname)
+# update_RegistryKey('dxfFileName', input_filename)
+
+def ini_callback(input_filename):
+ global iniFileName
+ iniFileName.val=input_filename
+
+#------------------------------------------------------------
+def getSpaceRect():
+ __UI_RECT__ = Buffer(GL_FLOAT, 4)
+ glGetFloatv(GL_SCISSOR_BOX, __UI_RECT__)
+ __UI_RECT__ = __UI_RECT__.list
+ return (int(__UI_RECT__[0]), int(__UI_RECT__[1]), int(__UI_RECT__[2]), int(__UI_RECT__[3]))
+
+def getRelMousePos(mco, winRect):
+ # mco = Blender.Window.GetMouseCoords()
+ if pointInRect(mco, winRect):
+ return (mco[0] - winRect[0], mco[1] - winRect[1])
+ return None
+
+
+def pointInRect(pt, rect):
+ if rect[0] < pt[0] < rect[0]+rect[2] and\
+ rect[1] < pt[1] < rect[1]+rect[3]:
+ return True
+ else:
+ return False
+
+
+
+#--- variables UI menu ---------------------------
+mco = [0,0] # mouse coordinaten
+mbX, mbY = 0,0 # mouse buffer coordinaten
+scrollW = 20 # width of scrollbar
+rowH = 20 # height of menu raw
+menu__H = 2 * rowH +5 # height of menu bar
+headerH = 1 * rowH # height of column header bar
+scroll_left = True # position of scrollbar
+menu_bottom = False # position of menu
+edit_mode = False # indicator/activator
+iconlib_mode = False # indicator/activator
+icon_maps = [] #[['blenderbuttons.png',12,25,20,21],
+#['referenceicons.png',12,25,20,21]]
+help_text = False # indicator/activator
+menu_pan = False # indicator/activator
+compact_DESIGN = True # toggle UI
+showLINK = True # toggle Links
+filterList=[-1,-1,-1,-1,-1]
+dubbleclik_delay = 0.25
+
+PAN_X,PAN_Y = 0,0 # pan coordinates in characters
+mPAN_X,mPAN_Y = 0,0 # manu pan coordinates in characters
+menu_orgX = 0
+menu_orgY = 0
+mPAN_Xmax = 800
+mPAN_Ymax = 800
+
+
+#------------------------------------------------------------
+def event(evt, val):
+ global mbX, mbY, UP, UP0, scroll_pan, FOCUS_fix
+ global menu_bottom, scroll_left, mco
+ global PAN_X, PAN_Y, PAN_X0, PAN_Y0
+ global mPAN_X, mPAN_Y, mPAN_X0, mPAN_Y0, menu_pan
+
+ #if Blender.event:
+ # print 'Blender.event:%s, evt:%s' %(Blender.event, evt) #------------
+
+ if evt in (Draw.QKEY, Draw.ESCKEY) and not val:
+ print 'DXF-Exporter *** end ***' #---------------------
+ Draw.Exit()
+
+ elif val:
+ if evt==Draw.MIDDLEMOUSE:
+ mco2 = Window.GetMouseCoords()
+ relativeMouseCo = getRelMousePos(mco2, getSpaceRect())
+ if relativeMouseCo != None:
+ #rect = [menu__X1,menu__Y1,menu__X2,menu__Y2]
+ if 1: #pointInRect(relativeMouseCo, menu__Area):
+ menu_pan = True
+ mPAN_X0 = mPAN_X
+ mPAN_Y0 = mPAN_Y
+ mco = mco2
+ elif evt == Draw.MOUSEY or evt == Draw.MOUSEX:
+ if menu_pan:
+ mco2 = Window.GetMouseCoords()
+ mbX = mco2[0]-mco[0]
+ mbY = mco2[1]-mco[1]
+ mPAN_X = mPAN_X0 - mbX
+ mPAN_Y = mPAN_Y0 - mbY
+ #print mbX, mbY #--------------------
+ Draw.Redraw()
+ elif evt == Draw.WHEELDOWNMOUSE:
+ mPAN_Y -= 80
+ Draw.Redraw()
+ elif evt == Draw.WHEELUPMOUSE:
+ mPAN_Y += 80
+ Draw.Redraw()
+ else: # = if val==False:
+ if evt==Draw.LEFTMOUSE:
+ scroll_pan = False
+ elif evt==Draw.MIDDLEMOUSE:
+ menu_pan = False
+
+def bevent(evt):
+ global config_UI, user_preset
+ global CAMERA, GUI_A
+
+ ######### Manages GUI events
+ if (evt==EVENT_EXIT):
+ Draw.Exit()
+ print 'DXF-Exporter *** end ***' #---------------------
+ elif (evt==EVENT_CHOOSE_INI):
+ Window.FileSelector(ini_callback, "INI-file Selection", '*.ini')
+ elif (evt==EVENT_REDRAW):
+ Draw.Redraw()
+ elif (evt==EVENT_RESET):
+ resetDefaultConfig()
+ Draw.Redraw()
+ elif (evt==EVENT_PRESET2D):
+ resetDefaultConfig_2D()
+ Draw.Redraw()
+ elif (evt==EVENT_PRESET3D):
+ resetDefaultConfig_3D()
+ Draw.Redraw()
+ elif evt in (EVENT_CAMERA,EVENT_LIGHT):
+ CAMERA = GUI_A['camera_selected'].val
+ if CAMERA==len(CAMERAS)+1:
+ doAllCameras = True
+ else:
+ pass #print 'deb: CAMERAS=',CAMERAS #----------------
+ Draw.Redraw()
+ elif (evt==EVENT_setCAMERA):
+ if CAMERA<len(CAMERAS)+1:
+ gotoCAMERA()
+
+ elif (evt==EVENT_SCALE):
+ if g_scale_as.val == 12:
+ inputGlobalScale()
+ if GUI_A['g_scale'].val < 0.00000001:
+ GUI_A['g_scale'].val = 0.00000001
+ Draw.Redraw()
+ elif (evt==EVENT_ORIGIN):
+ inputOriginVector()
+ Draw.Redraw()
+ elif (evt==EVENT_PRESETPLINE):
+ presetConfig_polyline(GUI_A['to_polyline_on'].val)
+ Draw.Redraw()
+ elif (evt==EVENT_PRESETS):
+ user_preset += 1
+ index = str(user_preset)
+ if user_preset > 5: user_preset = 0; index = ''
+ iniFileName.val = INIFILE_DEFAULT_NAME + index + INIFILE_EXTENSION
+ Draw.Redraw()
+ elif (evt==EVENT_HELP):
try:
import webbrowser
webbrowser.open('http://wiki.blender.org/index.php?title=Scripts/Manual/Export/autodesk_dxf')
except:
- Draw.PupMenu('DXF Exporter: %t|no connection to manual-page on Blender-Wiki! try:|\
+ Draw.PupMenu('DXF-Exporter: HELP Alert!%t|no connection to manual-page on Blender-Wiki! try:|\
http://wiki.blender.org/index.php?title=Scripts/Manual/Export/autodesk_dxf')
- return
+ Draw.Redraw()
+ elif (evt==EVENT_LOAD_INI):
+ loadConfig()
+ Draw.Redraw()
+ elif (evt==EVENT_SAVE_INI):
+ saveConfig()
+ Draw.Redraw()
+ elif (evt==EVENT_DXF_DIR):
+ dxfFile = dxfFileName.val
+ dxfPathName = ''
+ if '/' in dxfFile:
+ dxfPathName = '/'.join(dxfFile.split('/')[:-1]) + '/'
+ elif '\\' in dxfFile:
+ dxfPathName = '\\'.join(dxfFile.split('\\')[:-1]) + '\\'
+ dxfFileName.val = dxfPathName + '*.dxf'
+# dirname == Blender.sys.dirname(Blender.Get('filename'))
+# update_RegistryKey('DirName', dirname)
+# update_RegistryKey('dxfFileName', dxfFileName.val)
+ GUI_A['only_selected_on'].val = 1
+ Draw.Redraw()
+ elif (evt==EVENT_CHOOSE_DXF):
+ filename = '' # '*.dxf'
+ if dxfFileName.val: filename = dxfFileName.val
+ Window.FileSelector(dxf_callback, "DXF-file Selection", filename)
+ elif (evt==EVENT_START):
+ dxfFile = dxfFileName.val
+ #print 'deb: dxfFile file: ', dxfFile #----------------------
+ if E_M: dxfFileName.val, dxfFile = e_mode(dxfFile) #evaluation mode
+ update_RegistryKey('dxfFileName', dxfFileName.val)
+ update_globals()
+ if dxfFile.lower().endswith('*.dxf'):
+ if Draw.PupMenu('DXF-Exporter: OK?|will write multiple DXF-files, one for each Scene, in:|%s' % dxfFile) == 1:
+ global UI_MODE
+ UI_MODE = False
+ #TODO: multi_export(dxfFile[:-5]) # cut last 5 characters '*.dxf'
+ Draw.Redraw()
+ UI_MODE = True
+ else:
+ Draw.Redraw()
+ elif dxfFile.lower()[-4:] in ('.dxf','.dwg'): # and Blender.sys.exists(dxfFile):
+ print 'preparing for export ---' #Standard Mode: activated
+ filepath = dxfFile
+ sce = Scene.GetCurrent()
+ if ONLYSELECTED: sel_group = sce.objects.selected
+ else: sel_group = sce.objects
+
+ if ONLYVISIBLE:
+ sel_group_temp = []
+ layerlist = sce.getLayers()
+ for ob in sel_group:
+ for lay in ob.layers:
+ if lay in layerlist:
+ sel_group_temp.append(ob)
+ break
+ sel_group = sel_group_temp
+
+ export_list = getObjectsAndDuplis(sel_group,MATRICES=True)
+
+ if export_list: do_export(export_list, filepath)
+ else:
+ print "Abort: selection was empty, no object to export!"
+ Draw.PupMenu('DXF Exporter: nothing exported!|empty selection!')
+ else:
+ Draw.PupMenu('DXF-Exporter: Alert!%t|no valid DXF-file selected!')
+ print "DXF-Exporter: error, no valid DXF-file selected! try again"
+ Draw.Redraw()
- ONLYSELECTED = PREF_ONLYSELECTED.val
- POLYLINES = PREF_POLYLINES.val
- ONLYFACES = PREF_ONLYFACES.val
- POLYFACES = PREF_POLYFACES.val
- FLATTEN = PREF_FLATTEN.val
- HIDDEN_MODE = PREF_HIDDEN_MODE.val
- SCALE_FACTOR = PREF_SCALE_FACTOR.val
- OUTPUT_DWG = PREF_DWG.val
-
- sce = Scene.GetCurrent()
- if ONLYSELECTED: sel_group = sce.objects.selected
- else: sel_group = sce.objects
- export_list = getObjectsAndDuplis(sel_group,MATRICES=True)
- if export_list: do_export(export_list, filepath)
- else:
- print "Abort: selection was empty, no object to export!"
- Draw.PupMenu('DXF Exporter: nothing exported!|empty selection!')
- # Timing the script is a good way to be aware on any speed hits when scripting
+def multi_export(DIR): #TODO:
+ """Imports all DXF-files from directory DIR.
+
+ """
+ global SCENE
+ batchTIME = Blender.sys.time()
+ #if #DIR == "": DIR = os.path.curdir
+ if DIR == "": DIR = Blender.sys.dirname(Blender.Get('filename'))
+ print 'Multifiles Import from %s' %DIR
+ files = \
+ [Blender.sys.join(DIR, f) for f in os.listdir(DIR) if f.lower().endswith('.dxf')]
+ if not files:
+ print '...None DXF-files found. Abort!'
+ return
+
+ i = 0
+ for dxfFile in files:
+ i += 1
+ print '\nDXF-file', i, 'of', len(files) #,'\nImporting', dxfFile
+ if ONLYSELECTED:
+ _dxf_file = dxfFile.split('/')[-1].split('\\')[-1]
+ _dxf_file = _dxf_file[:-4] # cut last char:'.dxf'
+ _dxf_file = _dxf_file[:NAMELENGTH_MAX] #? [-NAMELENGTH_MAX:])
+ SCENE = Blender.Scene.New(_dxf_file)
+ SCENE.makeCurrent()
+ #or so? Blender.Scene.makeCurrent(_dxf_file)
+ #sce = bpy.data.scenes.new(_dxf_file)
+ #bpy.data.scenes.active = sce
+ else:
+ SCENE = Blender.Scene.GetCurrent()
+ SCENE.objects.selected = [] # deselect all
+ main(dxfFile)
+ #Blender.Redraw()
+
+ print 'TOTAL TIME: %.6f' % (Blender.sys.time() - batchTIME)
+ print '\a\r', # beep when done
+
#-----------------------------------------------------
if __name__=='__main__':
- #main()
- if not copy:
- Draw.PupMenu('Error%t|This script requires a full python install')
- else: Window.FileSelector(dxf_export_ui, 'EXPORT DXF', sys.makename(ext='.dxf')) \ No newline at end of file
+
+ if not DXF.copy:
+ Draw.PupMenu('Error%t|The dxfLibrary.py script requires a full python install')
+ #Window.FileSelector(dxf_export_ui, 'EXPORT DXF', Blender.sys.makename(ext='.dxf'))
+ # recall last used DXF-file and INI-file names
+ dxffilename = check_RegistryKey('dxfFileName')
+ #print 'deb:start dxffilename:', dxffilename #----------------
+ if dxffilename: dxfFileName.val = dxffilename
+ else:
+ dirname = Blender.sys.dirname(Blender.Get('filename'))
+ #print 'deb:start dirname:', dirname #----------------
+ dxfFileName.val = Blender.sys.join(dirname, '')
+ inifilename = check_RegistryKey('iniFileName')
+ if inifilename: iniFileName.val = inifilename
+
+ updateMenuCAMERA()
+ updateCAMERA()
+
+ Draw.Register(draw_UI, event, bevent)
+
+ \ No newline at end of file
diff --git a/release/scripts/export_fbx.py b/release/scripts/export_fbx.py
index 730776bf1b8..4115140a852 100644
--- a/release/scripts/export_fbx.py
+++ b/release/scripts/export_fbx.py
@@ -1,13 +1,13 @@
#!BPY
"""
Name: 'Autodesk FBX (.fbx)...'
-Blender: 244
+Blender: 249
Group: 'Export'
Tooltip: 'Selection to an ASCII Autodesk FBX '
"""
__author__ = "Campbell Barton"
__url__ = ['www.blender.org', 'blenderartists.org']
-__version__ = "1.1"
+__version__ = "1.2"
__bpydoc__ = """\
This script is an exporter to the FBX file format.
@@ -93,8 +93,8 @@ def copy_images(dest_dir, textures):
dest_dir += Blender.sys.sep
image_paths = set()
- for img in textures:
- image_paths.add(Blender.sys.expandpath(img.filename))
+ for tex in textures:
+ image_paths.add(Blender.sys.expandpath(tex.filename))
# Now copy images
copyCount = 0
@@ -157,14 +157,29 @@ def increment_string(t):
# todo - Disallow the name 'Scene' and 'blend_root' - it will bugger things up.
def sane_name(data, dct):
#if not data: return None
- name = data.name
+
+ if type(data)==tuple: # materials are paired up with images
+ data, other = data
+ use_other = True
+ else:
+ other = None
+ use_other = False
+
+ if data: name = data.name
+ else: name = None
+ orig_name = name
+
+ if other:
+ orig_name_other = other.name
+ name = '%s #%s' % (name, orig_name_other)
+ else:
+ orig_name_other = None
# dont cache, only ever call once for each data type now,
# so as to avoid namespace collision between types - like with objects <-> bones
#try: return dct[name]
#except: pass
- orig_name = name
if not name:
name = 'unnamed' # blank string, ASKING FOR TROUBLE!
else:
@@ -173,7 +188,11 @@ def sane_name(data, dct):
while name in dct.itervalues(): name = increment_string(name)
- dct[orig_name] = name
+ if use_other: # even if other is None - orig_name_other will be a string or None
+ dct[orig_name, orig_name_other] = name
+ else:
+ dct[orig_name] = name
+
return name
def sane_obname(data): return sane_name(data, sane_name_mapping_ob)
@@ -511,7 +530,7 @@ def write(filename, batch_objects = None, \
if time:
curtime = time.localtime()[0:6]
else:
- curtime = [0,0,0,0,0,0]
+ curtime = (0,0,0,0,0,0)
#
file.write(\
'''FBXHeaderExtension: {
@@ -983,7 +1002,7 @@ def write(filename, batch_objects = None, \
#eDIRECTIONAL
#eSPOT
light_type = light.type
- if light_type > 3: light_type = 0
+ if light_type > 2: light_type = 1 # hemi and area lights become directional
mode = light.mode
if mode & Blender.Lamp.Modes.RayShadow or mode & Blender.Lamp.Modes.Shadows:
@@ -1333,17 +1352,20 @@ def write(filename, batch_objects = None, \
me = my_mesh.blenData
# if there are non NULL materials on this mesh
- if [mat for mat in my_mesh.blenMaterials if mat]: do_materials = True
- else: do_materials = False
+ if my_mesh.blenMaterials: do_materials = True
+ else: do_materials = False
if my_mesh.blenTextures: do_textures = True
- else: do_textures = False
+ else: do_textures = False
+
+ do_uvs = me.faceUV
file.write('\n\tModel: "Model::%s", "Mesh" {' % my_mesh.fbxName)
file.write('\n\t\tVersion: 232') # newline is added in write_object_props
- write_object_props(my_mesh.blenObject, None, my_mesh.parRelMatrix())
+ poseMatrix = write_object_props(my_mesh.blenObject, None, my_mesh.parRelMatrix())[3]
+ pose_items.append((my_mesh.fbxName, poseMatrix))
file.write('\n\t\t}')
file.write('\n\t\tMultiLayer: 0')
@@ -1385,22 +1407,18 @@ def write(filename, batch_objects = None, \
else: file.write(',%i,%i,%i,%i' % fi )
i+=1
- ed_val = [None, None]
- LOOSE = Blender.Mesh.EdgeFlags.LOOSE
+ file.write('\n\t\tEdges: ')
+ i=-1
for ed in me.edges:
- if ed.flag & LOOSE:
- ed_val[0] = ed.v1.index
- ed_val[1] = -(ed.v2.index+1)
if i==-1:
- file.write('%i,%i' % tuple(ed_val) )
+ file.write('%i,%i' % (ed.v1.index, ed.v2.index))
i=0
else:
if i==13:
file.write('\n\t\t')
i=0
- file.write(',%i,%i' % tuple(ed_val) )
+ file.write(',%i,%i' % (ed.v1.index, ed.v2.index))
i+=1
- del LOOSE
file.write('\n\t\tGeometryVersion: 124')
@@ -1423,6 +1441,51 @@ def write(filename, batch_objects = None, \
i+=1
file.write('\n\t\t}')
+ # Write Face Smoothing
+ file.write('''
+ LayerElementSmoothing: 0 {
+ Version: 102
+ Name: ""
+ MappingInformationType: "ByPolygon"
+ ReferenceInformationType: "Direct"
+ Smoothing: ''')
+
+ i=-1
+ for f in me.faces:
+ if i==-1:
+ file.write('%i' % f.smooth); i=0
+ else:
+ if i==54:
+ file.write('\n '); i=0
+ file.write(',%i' % f.smooth)
+ i+=1
+
+ file.write('\n\t\t}')
+
+ # Write Edge Smoothing
+ file.write('''
+ LayerElementSmoothing: 0 {
+ Version: 101
+ Name: ""
+ MappingInformationType: "ByEdge"
+ ReferenceInformationType: "Direct"
+ Smoothing: ''')
+
+ SHARP = Blender.Mesh.EdgeFlags.SHARP
+ i=-1
+ for ed in me.edges:
+ if i==-1:
+ file.write('%i' % ((ed.flag&SHARP)!=0)); i=0
+ else:
+ if i==54:
+ file.write('\n '); i=0
+ file.write(',%i' % ((ed.flag&SHARP)!=0))
+ i+=1
+
+ file.write('\n\t\t}')
+ del SHARP
+
+
# Write VertexColor Layers
# note, no programs seem to use this info :/
collayers = []
@@ -1475,7 +1538,7 @@ def write(filename, batch_objects = None, \
# Write UV and texture layers.
uvlayers = []
- if me.faceUV:
+ if do_uvs:
uvlayers = me.getUVLayerNames()
uvlayer_orig = me.activeUVLayer
for uvindex, uvlayer in enumerate(uvlayers):
@@ -1538,13 +1601,13 @@ def write(filename, batch_objects = None, \
if len(my_mesh.blenTextures) == 1:
file.write('0')
else:
- #texture_mapping_local = {None:0}
texture_mapping_local = {None:-1}
i = 0 # 1 for dummy
for tex in my_mesh.blenTextures:
- texture_mapping_local[tex] = i
- i+=1
+ if tex: # None is set above
+ texture_mapping_local[tex] = i
+ i+=1
i=-1
for f in me.faces:
@@ -1594,32 +1657,32 @@ def write(filename, batch_objects = None, \
file.write('0')
else:
# Build a material mapping for this
- #material_mapping_local = [0] * 16 # local-index : global index.
- material_mapping_local = [-1] * 16 # local-index : global index.
- i= 0 # 1
- for j, mat in enumerate(my_mesh.blenMaterials):
- if mat:
- material_mapping_local[j] = i
- i+=1
- # else leave as -1
+ material_mapping_local = {} # local-mat & tex : global index.
+
+ for j, mat_tex_pair in enumerate(my_mesh.blenMaterials):
+ material_mapping_local[mat_tex_pair] = j
len_material_mapping_local = len(material_mapping_local)
+ mats = my_mesh.blenMaterialList
+
i=-1
for f in me.faces:
- f_mat = f.mat
- if f_mat >= len_material_mapping_local:
- f_mat = 0
+ try: mat = mats[f.mat]
+ except:mat = None
+
+ if do_uvs: tex = f.image # WARNING - MULTI UV LAYER IMAGES NOT SUPPORTED :/
+ else: tex = None
if i==-1:
i=0
- file.write( '%s' % (material_mapping_local[f_mat]))
+ file.write( '%s' % (material_mapping_local[mat, tex])) # None for mat or tex is ok
else:
if i==55:
file.write('\n\t\t\t\t')
i=0
- file.write(',%s' % (material_mapping_local[f_mat]))
+ file.write(',%s' % (material_mapping_local[mat, tex]))
i+=1
file.write('\n\t\t}')
@@ -1654,7 +1717,7 @@ def write(filename, batch_objects = None, \
TypedIndex: 0
}''')
- if me.faceUV:
+ if do_uvs: # same as me.faceUV
file.write('''
LayerElement: {
Type: "LayerElementUV"
@@ -1736,8 +1799,8 @@ def write(filename, batch_objects = None, \
ob_all_typegroups = [ob_meshes, ob_lights, ob_cameras, ob_arms, ob_null]
groups = [] # blender groups, only add ones that have objects in the selections
- materials = {}
- textures = {}
+ materials = {} # (mat, image) keys, should be a set()
+ textures = {} # should be a set()
tmp_ob_type = ob_type = None # incase no objects are exported, so as not to raise an error
@@ -1837,30 +1900,34 @@ def write(filename, batch_objects = None, \
if EXP_MESH_HQ_NORMALS:
BPyMesh.meshCalcNormals(me) # high quality normals nice for realtime engines.
- for mat in mats:
- # 2.44 use mat.lib too for uniqueness
- if mat: materials[mat] = mat
-
texture_mapping_local = {}
+ material_mapping_local = {}
if me.faceUV:
uvlayer_orig = me.activeUVLayer
for uvlayer in me.getUVLayerNames():
me.activeUVLayer = uvlayer
for f in me.faces:
- img = f.image
- textures[img] = texture_mapping_local[img] = img
+ tex = f.image
+ textures[tex] = texture_mapping_local[tex] = None
+
+ try: mat = mats[f.mat]
+ except: mat = None
+
+ materials[mat, tex] = material_mapping_local[mat, tex] = None # should use sets, wait for blender 2.5
+
me.activeUVLayer = uvlayer_orig
+ else:
+ for mat in mats:
+ # 2.44 use mat.lib too for uniqueness
+ materials[mat, None] = material_mapping_local[mat, None] = None
+ else:
+ materials[None, None] = None
if EXP_ARMATURE:
armob = BPyObject.getObjectArmature(ob)
blenParentBoneName = None
- # Note - Fixed in BPyObject but for now just copy the function because testers wont have up to date modukes,
- # TODO - remove this for 2.45 release since getObjectArmature has been fixed
- if (not armob) and ob.parent and ob.parent.type == 'Armature' and ob.parentType == Blender.Object.ParentTypes.ARMATURE:
- armob = ob.parent
-
# parent bone - special case
if (not armob) and ob.parent and ob.parent.type == 'Armature' and ob.parentType == Blender.Object.ParentTypes.BONE:
armob = ob.parent
@@ -1876,8 +1943,9 @@ def write(filename, batch_objects = None, \
my_mesh = my_object_generic(ob, mtx)
my_mesh.blenData = me
my_mesh.origData = origData
- my_mesh.blenMaterials = mats
- my_mesh.blenTextures = texture_mapping_local.values()
+ my_mesh.blenMaterials = material_mapping_local.keys()
+ my_mesh.blenMaterialList = mats
+ my_mesh.blenTextures = texture_mapping_local.keys()
# if only 1 null texture then empty the list
if len(my_mesh.blenTextures) == 1 and my_mesh.blenTextures[0] == None:
@@ -1996,8 +2064,8 @@ def write(filename, batch_objects = None, \
# Finished finding groups we use
- materials = [(sane_matname(mat), mat) for mat in materials.itervalues() if mat]
- textures = [(sane_texname(img), img) for img in textures.itervalues() if img]
+ materials = [(sane_matname(mat_tex_pair), mat_tex_pair) for mat_tex_pair in materials.iterkeys()]
+ textures = [(sane_texname(tex), tex) for tex in textures.iterkeys() if tex]
materials.sort() # sort by name
textures.sort()
@@ -2126,8 +2194,8 @@ Objects: {''')
write_camera_default()
- for matname, mat in materials:
- write_material(matname, mat)
+ for matname, (mat, tex) in materials:
+ write_material(matname, mat) # We only need to have a material per image pair, but no need to write any image info into the material (dumb fbx standard)
# each texture uses a video, odd
for texname, tex in textures:
@@ -2247,7 +2315,7 @@ Relations: {''')
Model: "Model::Camera Switcher", "CameraSwitcher" {
}''')
- for matname, mat in materials:
+ for matname, (mat, tex) in materials:
file.write('\n\tMaterial: "Material::%s", "" {\n\t}' % matname)
if textures:
@@ -2299,9 +2367,14 @@ Connections: {''')
if materials:
for my_mesh in ob_meshes:
# Connect all materials to all objects, not good form but ok for now.
- for mat in my_mesh.blenMaterials:
- if mat:
- file.write('\n\tConnect: "OO", "Material::%s", "Model::%s"' % (sane_name_mapping_mat[mat.name], my_mesh.fbxName))
+ for mat, tex in my_mesh.blenMaterials:
+ if mat: mat_name = mat.name
+ else: mat_name = None
+
+ if tex: tex_name = tex.name
+ else: tex_name = None
+
+ file.write('\n\tConnect: "OO", "Material::%s", "Model::%s"' % (sane_name_mapping_mat[mat_name, tex_name], my_mesh.fbxName))
if textures:
for my_mesh in ob_meshes:
@@ -2519,8 +2592,18 @@ Takes: {''')
for TX_LAYER, TX_CHAN in enumerate('TRS'): # transform, rotate, scale
if TX_CHAN=='T': context_bone_anim_vecs = [mtx[0].translationPart() for mtx in context_bone_anim_mats]
- elif TX_CHAN=='R': context_bone_anim_vecs = [mtx[1].toEuler() for mtx in context_bone_anim_mats]
- else: context_bone_anim_vecs = [mtx[0].scalePart() for mtx in context_bone_anim_mats]
+ elif TX_CHAN=='S': context_bone_anim_vecs = [mtx[0].scalePart() for mtx in context_bone_anim_mats]
+ elif TX_CHAN=='R':
+ # Was....
+ # elif TX_CHAN=='R': context_bone_anim_vecs = [mtx[1].toEuler() for mtx in context_bone_anim_mats]
+ #
+ # ...but we need to use the previous euler for compatible conversion.
+ context_bone_anim_vecs = []
+ prev_eul = None
+ for mtx in context_bone_anim_mats:
+ if prev_eul: prev_eul = mtx[1].toEuler(prev_eul)
+ else: prev_eul = mtx[1].toEuler()
+ context_bone_anim_vecs.append(prev_eul)
file.write('\n\t\t\t\tChannel: "%s" {' % TX_CHAN) # translation
@@ -2539,10 +2622,9 @@ Takes: {''')
if frame!=act_start:
file.write(',')
- # Curve types are
+ # Curve types are 'C,n' for constant, 'L' for linear
# C,n is for bezier? - linear is best for now so we can do simple keyframe removal
- file.write('\n\t\t\t\t\t\t\t%i,%.15f,C,n' % (fbx_time(frame-1), context_bone_anim_vecs[frame-act_start][i] ))
- #file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame-1), context_bone_anim_vecs[frame-act_start][i] ))
+ file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame-1), context_bone_anim_vecs[frame-act_start][i] ))
frame+=1
else:
# remove unneeded keys, j is the frame, needed when some frames are removed.
@@ -2550,11 +2632,32 @@ Takes: {''')
# last frame to fisrt frame, missing 1 frame on either side.
# removeing in a backwards loop is faster
- for j in xrange( (act_end-act_start)-1, 0, -1 ):
- # Is this key reduenant?
- if abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j-1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT and\
- abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j+1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT:
+ #for j in xrange( (act_end-act_start)-1, 0, -1 ):
+ # j = (act_end-act_start)-1
+ j = len(context_bone_anim_keys)-2
+ while j > 0 and len(context_bone_anim_keys) > 2:
+ # print j, len(context_bone_anim_keys)
+ # Is this key the same as the ones next to it?
+
+ # co-linear horizontal...
+ if abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j-1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT and\
+ abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j+1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT:
+
del context_bone_anim_keys[j]
+
+ else:
+ frame_range = float(context_bone_anim_keys[j+1][1] - context_bone_anim_keys[j-1][1])
+ frame_range_fac1 = (context_bone_anim_keys[j+1][1] - context_bone_anim_keys[j][1]) / frame_range
+ frame_range_fac2 = 1.0 - frame_range_fac1
+
+ if abs(((context_bone_anim_keys[j-1][0]*frame_range_fac1 + context_bone_anim_keys[j+1][0]*frame_range_fac2)) - context_bone_anim_keys[j][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT:
+ del context_bone_anim_keys[j]
+ else:
+ j-=1
+
+ # keep the index below the list length
+ if j > len(context_bone_anim_keys)-2:
+ j = len(context_bone_anim_keys)-2
if len(context_bone_anim_keys) == 2 and context_bone_anim_keys[0][0] == context_bone_anim_keys[1][0]:
# This axis has no moton, its okay to skip KeyCount and Keys in this case
@@ -2567,8 +2670,7 @@ Takes: {''')
if frame != context_bone_anim_keys[0][1]: # not the first
file.write(',')
# frame is alredy one less then blenders frame
- file.write('\n\t\t\t\t\t\t\t%i,%.15f,C,n' % (fbx_time(frame), val ))
- #file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame), val ))
+ file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame), val ))
if i==0: file.write('\n\t\t\t\t\t\tColor: 1,0,0')
elif i==1: file.write('\n\t\t\t\t\t\tColor: 0,1,0')
@@ -2734,15 +2836,16 @@ def fbx_ui_exit(e,v):
GLOBALS['EVENT'] = e
def do_help(e,v):
- url = 'http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_fbx'
- print 'Trying to open web browser with documentation at this address...'
- print '\t' + url
-
- try:
- import webbrowser
- webbrowser.open(url)
- except:
- print '...could not open a browser window.'
+ url = 'http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_fbx'
+ print 'Trying to open web browser with documentation at this address...'
+ print '\t' + url
+
+ try:
+ import webbrowser
+ webbrowser.open(url)
+ except:
+ Blender.Draw.PupMenu("Error%t|Opening a webbrowser requires a full python installation")
+ print '...could not open a browser window.'
@@ -2846,7 +2949,7 @@ def fbx_ui():
Draw.BeginAlign()
GLOBALS['ANIM_OPTIMIZE'] = Draw.Toggle('Optimize Keyframes', EVENT_REDRAW, x+20, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE'].val, 'Remove double keyframes', do_redraw)
if GLOBALS['ANIM_OPTIMIZE'].val:
- GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Number('Precission: ', EVENT_NONE, x+180, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE_PRECISSION'].val, 3, 16, 'Tolerence for comparing double keyframes (higher for greater accuracy)')
+ GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Number('Precission: ', EVENT_NONE, x+180, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE_PRECISSION'].val, 1, 16, 'Tolerence for comparing double keyframes (higher for greater accuracy)')
Draw.EndAlign()
Draw.BeginAlign()
@@ -2924,7 +3027,7 @@ def write_ui():
# animation opts
GLOBALS['ANIM_ENABLE'] = Draw.Create(1)
GLOBALS['ANIM_OPTIMIZE'] = Draw.Create(1)
- GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Create(6) # decimal places
+ GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Create(4) # decimal places
GLOBALS['ANIM_ACTION_ALL'] = [Draw.Create(0), Draw.Create(1)] # not just the current action
# batch export options
diff --git a/release/scripts/export_obj.py b/release/scripts/export_obj.py
index 28e1443e953..0edc70a874b 100644
--- a/release/scripts/export_obj.py
+++ b/release/scripts/export_obj.py
@@ -7,9 +7,9 @@ Group: 'Export'
Tooltip: 'Save a Wavefront OBJ File'
"""
-__author__ = "Campbell Barton, Jiri Hnidek"
+__author__ = "Campbell Barton, Jiri Hnidek, Paolo Ciccone"
__url__ = ['http://wiki.blender.org/index.php/Scripts/Manual/Export/wavefront_obj', 'www.blender.org', 'blenderartists.org']
-__version__ = "1.2"
+__version__ = "1.21"
__bpydoc__ = """\
This script is an exporter to OBJ file format.
@@ -185,7 +185,8 @@ def write(filename, objects,\
EXPORT_TRI=False, EXPORT_EDGES=False, EXPORT_NORMALS=False, EXPORT_NORMALS_HQ=False,\
EXPORT_UV=True, EXPORT_MTL=True, EXPORT_COPY_IMAGES=False,\
EXPORT_APPLY_MODIFIERS=True, EXPORT_ROTX90=True, EXPORT_BLEN_OBS=True,\
-EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=False):
+EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=False,\
+EXPORT_POLYGROUPS=False):
'''
Basic write function. The context and options must be alredy set
This can be accessed externaly
@@ -199,6 +200,29 @@ EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=Fal
def veckey2d(v):
return round(v.x, 6), round(v.y, 6)
+ def findVertexGroupName(face, vWeightMap):
+ """
+ Searches the vertexDict to see what groups is assigned to a given face.
+ We use a frequency system in order to sort out the name because a given vetex can
+ belong to two or more groups at the same time. To find the right name for the face
+ we list all the possible vertex group names with their frequency and then sort by
+ frequency in descend order. The top element is the one shared by the highest number
+ of vertices is the face's group
+ """
+ weightDict = {}
+ for vert in face:
+ vWeights = vWeightMap[vert.index]
+ for vGroupName, weight in vWeights:
+ weightDict[vGroupName] = weightDict.get(vGroupName, 0) + weight
+
+ if weightDict:
+ alist = [(weight,vGroupName) for vGroupName, weight in weightDict.iteritems()] # sort least to greatest amount of weight
+ alist.sort()
+ return(alist[-1][1]) # highest value last
+ else:
+ return '(null)'
+
+
print 'OBJ Export path: "%s"' % filename
temp_mesh_name = '~tmp-mesh'
@@ -239,12 +263,12 @@ EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=Fal
globalNormals = {}
- # Get all meshs
+ # Get all meshes
for ob_main in objects:
for ob, ob_mat in BPyObject.getDerivedObjects(ob_main):
# Will work for non meshes now! :)
# getMeshFromObject(ob, container_mesh=None, apply_modifiers=True, vgroups=True, scn=None)
- me= BPyMesh.getMeshFromObject(ob, containerMesh, EXPORT_APPLY_MODIFIERS, False, scn)
+ me= BPyMesh.getMeshFromObject(ob, containerMesh, EXPORT_APPLY_MODIFIERS, EXPORT_POLYGROUPS, scn)
if not me:
continue
@@ -397,6 +421,17 @@ EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=Fal
if not faceuv:
f_image = None
+ if EXPORT_POLYGROUPS:
+ # Retrieve the list of vertex groups
+ vertGroupNames = me.getVertGroupNames()
+
+ currentVGroup = ''
+ # Create a dictionary keyed by face id and listing, for each vertex, the vertex groups it belongs to
+ vgroupsMap = [[] for _i in xrange(len(me.verts))]
+ for vertexGroupName in vertGroupNames:
+ for vIdx, vWeight in me.getVertsFromGroup(vertexGroupName, 1):
+ vgroupsMap[vIdx].append((vertexGroupName, vWeight))
+
for f_index, f in enumerate(faces):
f_v= f.v
f_smooth= f.smooth
@@ -411,9 +446,18 @@ EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=Fal
else:
key = materialNames[f_mat], None # No image, use None instead.
+ # Write the vertex group
+ if EXPORT_POLYGROUPS:
+ if vertGroupNames:
+ # find what vertext group the face belongs to
+ theVGroup = findVertexGroupName(f,vgroupsMap)
+ if theVGroup != currentVGroup:
+ currentVGroup = theVGroup
+ file.write('g %s\n' % theVGroup)
+
# CHECK FOR CONTEXT SWITCH
if key == contextMat:
- pass # Context alredy switched, dont do anythoing
+ pass # Context alredy switched, dont do anything
else:
if key[0] == None and key[1] == None:
# Write a null material, since we know the context has changed.
@@ -438,6 +482,7 @@ EXPORT_GROUP_BY_OB=False, EXPORT_GROUP_BY_MAT=False, EXPORT_KEEP_VERT_ORDER=Fal
if EXPORT_GROUP_BY_MAT:
file.write('g %s_%s_%s\n' % (fixName(ob.name), fixName(ob.getData(1)), mat_data[0]) ) # can be mat_image or (null)
+
file.write('usemtl %s\n' % mat_data[0]) # can be mat_image or (null)
contextMat = key
@@ -539,7 +584,8 @@ def write_ui(filename):
EXPORT_NORMALS, EXPORT_NORMALS_HQ, EXPORT_UV,\
EXPORT_MTL, EXPORT_SEL_ONLY, EXPORT_ALL_SCENES,\
EXPORT_ANIMATION, EXPORT_COPY_IMAGES, EXPORT_BLEN_OBS,\
- EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER
+ EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER,\
+ EXPORT_POLYGROUPS
EXPORT_APPLY_MODIFIERS = Draw.Create(0)
EXPORT_ROTX90 = Draw.Create(1)
@@ -557,6 +603,8 @@ def write_ui(filename):
EXPORT_GROUP_BY_OB = Draw.Create(0)
EXPORT_GROUP_BY_MAT = Draw.Create(0)
EXPORT_KEEP_VERT_ORDER = Draw.Create(1)
+ EXPORT_POLYGROUPS = Draw.Create(0)
+
# Old UI
'''
@@ -607,7 +655,7 @@ def write_ui(filename):
GLOBALS['EVENT'] = e
def do_split(e,v):
- global EXPORT_BLEN_OBS, EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_APPLY_MODIFIERS, KEEP_VERT_ORDER
+ global EXPORT_BLEN_OBS, EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_APPLY_MODIFIERS, KEEP_VERT_ORDER, EXPORT_POLYGROUPS
if EXPORT_BLEN_OBS.val or EXPORT_GROUP_BY_OB.val or EXPORT_GROUP_BY_MAT.val or EXPORT_APPLY_MODIFIERS.val:
EXPORT_KEEP_VERT_ORDER.val = 0
else:
@@ -621,6 +669,7 @@ def write_ui(filename):
if not (EXPORT_BLEN_OBS.val or EXPORT_GROUP_BY_OB.val or EXPORT_GROUP_BY_MAT.val or EXPORT_APPLY_MODIFIERS.val):
EXPORT_KEEP_VERT_ORDER.val = 1
+
def do_help(e,v):
url = __url__[0]
print 'Trying to open web browser with documentation at this address...'
@@ -637,43 +686,45 @@ def write_ui(filename):
# Center based on overall pup size
ui_x -= 165
- ui_y -= 110
+ ui_y -= 140
global EXPORT_APPLY_MODIFIERS, EXPORT_ROTX90, EXPORT_TRI, EXPORT_EDGES,\
EXPORT_NORMALS, EXPORT_NORMALS_HQ, EXPORT_UV,\
EXPORT_MTL, EXPORT_SEL_ONLY, EXPORT_ALL_SCENES,\
EXPORT_ANIMATION, EXPORT_COPY_IMAGES, EXPORT_BLEN_OBS,\
- EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER
+ EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER,\
+ EXPORT_POLYGROUPS
- Draw.Label('Context...', ui_x+9, ui_y+209, 220, 20)
+ Draw.Label('Context...', ui_x+9, ui_y+239, 220, 20)
Draw.BeginAlign()
- EXPORT_SEL_ONLY = Draw.Toggle('Selection Only', EVENT_NONE, ui_x+9, ui_y+189, 110, 20, EXPORT_SEL_ONLY.val, 'Only export objects in visible selection. Else export whole scene.')
- EXPORT_ALL_SCENES = Draw.Toggle('All Scenes', EVENT_NONE, ui_x+119, ui_y+189, 110, 20, EXPORT_ALL_SCENES.val, 'Each scene as a separate OBJ file.')
- EXPORT_ANIMATION = Draw.Toggle('Animation', EVENT_NONE, ui_x+229, ui_y+189, 110, 20, EXPORT_ANIMATION.val, 'Each frame as a numbered OBJ file.')
+ EXPORT_SEL_ONLY = Draw.Toggle('Selection Only', EVENT_NONE, ui_x+9, ui_y+219, 110, 20, EXPORT_SEL_ONLY.val, 'Only export objects in visible selection. Else export whole scene.')
+ EXPORT_ALL_SCENES = Draw.Toggle('All Scenes', EVENT_NONE, ui_x+119, ui_y+219, 110, 20, EXPORT_ALL_SCENES.val, 'Each scene as a separate OBJ file.')
+ EXPORT_ANIMATION = Draw.Toggle('Animation', EVENT_NONE, ui_x+229, ui_y+219, 110, 20, EXPORT_ANIMATION.val, 'Each frame as a numbered OBJ file.')
Draw.EndAlign()
- Draw.Label('Output Options...', ui_x+9, ui_y+159, 220, 20)
+ Draw.Label('Output Options...', ui_x+9, ui_y+189, 220, 20)
Draw.BeginAlign()
- EXPORT_APPLY_MODIFIERS = Draw.Toggle('Apply Modifiers', EVENT_REDRAW, ui_x+9, ui_y+140, 110, 20, EXPORT_APPLY_MODIFIERS.val, 'Use transformed mesh data from each object. May break vert order for morph targets.', do_split)
- EXPORT_ROTX90 = Draw.Toggle('Rotate X90', EVENT_NONE, ui_x+119, ui_y+140, 110, 20, EXPORT_ROTX90.val, 'Rotate on export so Blenders UP is translated into OBJs UP')
- EXPORT_COPY_IMAGES = Draw.Toggle('Copy Images', EVENT_NONE, ui_x+229, ui_y+140, 110, 20, EXPORT_COPY_IMAGES.val, 'Copy image files to the export directory, never overwrite.')
+ EXPORT_APPLY_MODIFIERS = Draw.Toggle('Apply Modifiers', EVENT_REDRAW, ui_x+9, ui_y+170, 110, 20, EXPORT_APPLY_MODIFIERS.val, 'Use transformed mesh data from each object. May break vert order for morph targets.', do_split)
+ EXPORT_ROTX90 = Draw.Toggle('Rotate X90', EVENT_NONE, ui_x+119, ui_y+170, 110, 20, EXPORT_ROTX90.val, 'Rotate on export so Blenders UP is translated into OBJs UP')
+ EXPORT_COPY_IMAGES = Draw.Toggle('Copy Images', EVENT_NONE, ui_x+229, ui_y+170, 110, 20, EXPORT_COPY_IMAGES.val, 'Copy image files to the export directory, never overwrite.')
Draw.EndAlign()
- Draw.Label('Export...', ui_x+9, ui_y+109, 220, 20)
+ Draw.Label('Export...', ui_x+9, ui_y+139, 220, 20)
Draw.BeginAlign()
- EXPORT_EDGES = Draw.Toggle('Edges', EVENT_NONE, ui_x+9, ui_y+90, 50, 20, EXPORT_EDGES.val, 'Edges not connected to faces.')
- EXPORT_TRI = Draw.Toggle('Triangulate', EVENT_NONE, ui_x+59, ui_y+90, 70, 20, EXPORT_TRI.val, 'Triangulate quads.')
+ EXPORT_EDGES = Draw.Toggle('Edges', EVENT_NONE, ui_x+9, ui_y+120, 50, 20, EXPORT_EDGES.val, 'Edges not connected to faces.')
+ EXPORT_TRI = Draw.Toggle('Triangulate', EVENT_NONE, ui_x+59, ui_y+120, 70, 20, EXPORT_TRI.val, 'Triangulate quads.')
Draw.EndAlign()
Draw.BeginAlign()
- EXPORT_MTL = Draw.Toggle('Materials', EVENT_NONE, ui_x+139, ui_y+90, 70, 20, EXPORT_MTL.val, 'Write a separate MTL file with the OBJ.')
- EXPORT_UV = Draw.Toggle('UVs', EVENT_NONE, ui_x+209, ui_y+90, 31, 20, EXPORT_UV.val, 'Export texface UV coords.')
+ EXPORT_MTL = Draw.Toggle('Materials', EVENT_NONE, ui_x+139, ui_y+120, 70, 20, EXPORT_MTL.val, 'Write a separate MTL file with the OBJ.')
+ EXPORT_UV = Draw.Toggle('UVs', EVENT_NONE, ui_x+209, ui_y+120, 31, 20, EXPORT_UV.val, 'Export texface UV coords.')
Draw.EndAlign()
Draw.BeginAlign()
- EXPORT_NORMALS = Draw.Toggle('Normals', EVENT_NONE, ui_x+250, ui_y+90, 59, 20, EXPORT_NORMALS.val, 'Export vertex normal data (Ignored on import).')
- EXPORT_NORMALS_HQ = Draw.Toggle('HQ', EVENT_NONE, ui_x+309, ui_y+90, 31, 20, EXPORT_NORMALS_HQ.val, 'Calculate high quality normals for rendering.')
+ EXPORT_NORMALS = Draw.Toggle('Normals', EVENT_NONE, ui_x+250, ui_y+120, 59, 20, EXPORT_NORMALS.val, 'Export vertex normal data (Ignored on import).')
+ EXPORT_NORMALS_HQ = Draw.Toggle('HQ', EVENT_NONE, ui_x+309, ui_y+120, 31, 20, EXPORT_NORMALS_HQ.val, 'Calculate high quality normals for rendering.')
Draw.EndAlign()
+ EXPORT_POLYGROUPS = Draw.Toggle('Polygroups', EVENT_REDRAW, ui_x+9, ui_y+95, 120, 20, EXPORT_POLYGROUPS.val, 'Export vertex groups as OBJ groups (one group per face approximation).')
Draw.Label('Blender Objects as OBJ:', ui_x+9, ui_y+59, 220, 20)
@@ -727,7 +778,7 @@ def write_ui(filename):
EXPORT_GROUP_BY_OB = EXPORT_GROUP_BY_OB.val
EXPORT_GROUP_BY_MAT = EXPORT_GROUP_BY_MAT.val
EXPORT_KEEP_VERT_ORDER = EXPORT_KEEP_VERT_ORDER.val
-
+ EXPORT_POLYGROUPS = EXPORT_POLYGROUPS.val
base_name, ext = splitExt(filename)
@@ -776,7 +827,8 @@ def write_ui(filename):
EXPORT_NORMALS_HQ, EXPORT_UV, EXPORT_MTL,\
EXPORT_COPY_IMAGES, EXPORT_APPLY_MODIFIERS,\
EXPORT_ROTX90, EXPORT_BLEN_OBS,\
- EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER)
+ EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER,\
+ EXPORT_POLYGROUPS)
Blender.Set('curframe', orig_frame)
diff --git a/release/scripts/help_bpy_api.py b/release/scripts/help_bpy_api.py
index 9c3a24af288..e8d77ed8452 100644
--- a/release/scripts/help_bpy_api.py
+++ b/release/scripts/help_bpy_api.py
@@ -36,6 +36,12 @@ This script opens the user's default web browser at http://www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
-version = str(int(Blender.Get('version')))
-webbrowser.open('http://www.blender.org/documentation/'+ version +'PythonDoc/')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ version = str(int(Blender.Get('version')))
+ webbrowser.open('http://www.blender.org/documentation/'+ version +'PythonDoc/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/help_getting_started.py b/release/scripts/help_getting_started.py
index a4f6da5cc55..77dda2cf88f 100644
--- a/release/scripts/help_getting_started.py
+++ b/release/scripts/help_getting_started.py
@@ -38,5 +38,13 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
-webbrowser.open('http://www.blender.org/education-help/tutorials/getting-started/')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender.org/education-help/tutorials/getting-started/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
+
+
diff --git a/release/scripts/help_manual.py b/release/scripts/help_manual.py
index b830975e593..27900040eb4 100644
--- a/release/scripts/help_manual.py
+++ b/release/scripts/help_manual.py
@@ -36,5 +36,13 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
-webbrowser.open('http://wiki.blender.org/index.php/Manual')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://wiki.blender.org/index.php/Manual')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
+
+
diff --git a/release/scripts/help_release_notes.py b/release/scripts/help_release_notes.py
index 919ec72da3c..870f2391487 100644
--- a/release/scripts/help_release_notes.py
+++ b/release/scripts/help_release_notes.py
@@ -36,6 +36,12 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender.org/development/release-logs/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
-webbrowser.open('http://www.blender.org/development/release-logs/')
diff --git a/release/scripts/help_tutorials.py b/release/scripts/help_tutorials.py
index 1fe466560f0..e0cef1abdbf 100644
--- a/release/scripts/help_tutorials.py
+++ b/release/scripts/help_tutorials.py
@@ -37,5 +37,11 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
-webbrowser.open('http://www.blender.org/education-help/tutorials/')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender.org/education-help/tutorials/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/help_web_blender.py b/release/scripts/help_web_blender.py
index db0a78d90f7..2a0f90844ae 100644
--- a/release/scripts/help_web_blender.py
+++ b/release/scripts/help_web_blender.py
@@ -38,5 +38,11 @@ www.blender.org.
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
-webbrowser.open('http://www.blender.org/')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender.org/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/help_web_devcomm.py b/release/scripts/help_web_devcomm.py
index e04a54501f7..46fa2487a89 100644
--- a/release/scripts/help_web_devcomm.py
+++ b/release/scripts/help_web_devcomm.py
@@ -37,5 +37,11 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import webbrowser
-webbrowser.open('http://www.blender.org/community/get-involved/')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender.org/community/get-involved/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/help_web_eshop.py b/release/scripts/help_web_eshop.py
index c33849ac419..e40795b3a0d 100644
--- a/release/scripts/help_web_eshop.py
+++ b/release/scripts/help_web_eshop.py
@@ -37,5 +37,11 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import Blender, webbrowser
-webbrowser.open('http://www.blender3d.org/e-shop')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender3d.org/e-shop')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/help_web_usercomm.py b/release/scripts/help_web_usercomm.py
index a77a2bb9fef..dda5e42f34e 100644
--- a/release/scripts/help_web_usercomm.py
+++ b/release/scripts/help_web_usercomm.py
@@ -37,5 +37,11 @@ This script opens the user's default web browser at www.blender.org's
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
-import webbrowser
-webbrowser.open('http://www.blender.org/community/user-community/')
+import Blender
+try: import webbrowser
+except: webbrowser = None
+
+if webbrowser:
+ webbrowser.open('http://www.blender.org/community/user-community/')
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/image_2d_cutout.py b/release/scripts/image_2d_cutout.py
new file mode 100644
index 00000000000..16d0805256b
--- /dev/null
+++ b/release/scripts/image_2d_cutout.py
@@ -0,0 +1,559 @@
+#!BPY
+
+"""
+Name: '2D Cutout Image Importer'
+Blender: 249
+Group: 'Image'
+Tooltip: 'Batch UV Map images to Planes'
+"""
+
+__author__ = "Kevin Morgan (forTe)"
+__url__ = ("Home page, http://gamulabs.freepgs.com")
+__version__ = "1.2.1"
+__bpydoc__ = """\
+This Script will take an image and
+UV map it to a plane sharing the same width to height ratio as the image.
+Import options allow for the image to be a still or sequence type image
+<br><br>
+Imports can be single images or whole directories of images depending on the chosen
+option.
+"""
+
+####################################################
+#Copyright (C) 2008: Kevin Morgan
+####################################################
+#-------------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 3 of the License, or
+#(at your option) any later version.
+#
+#This program is distributed in the hopes 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, see <http://www.gnu.org/licenses>.
+####################################################
+####################################################
+#V1.0
+#Basic Functionality
+#Published June 28, 2007
+####################################################
+#V1.1
+#Added Support for enabling viewport transparency
+#Added more options to the UI for materials
+#Added Proportionality code (Pixels per unit)
+#Added GPL License Block
+#Published June 29, 2007
+####################################################
+#V1.2
+#Added Support for Copying Existing Materials
+#Import Images as Sequences
+#Refreshed GUI - now with more clutter :(
+#Miscellaneous and Housekeeping
+#Published June 16, 2008
+####################################################
+#V1.2.1
+#Added Extend Texture Mode option at request of a user
+#Published September 24, 2008
+####################################################
+
+import Blender
+from Blender import BGL, Draw, Image, Mesh, Material, Texture, Window
+from Blender.Mathutils import *
+import bpy
+
+# Global Constants
+DIR = 0
+SINGLE = 1
+CUROFFS = 0
+
+# GUI CONSTANTS
+NO_EVT = 0
+SINGLE_IMG = 1
+DIRECTORY_IMG = 2
+CLR_PATH = 3
+CHG_EXT = 4
+EXIT = 5
+DO_SCRIPT = 6
+
+VERSIONSTRING = '1.2.1'
+
+# Note the two parameter dicts could be combined, I just, liked them seperate...
+# GUI Buttons Dict
+GUIPARAMS = {
+ 'Path': Draw.Create(''),
+ 'ImageExt': Draw.Create(''),
+ 'Seq': Draw.Create(0),
+ 'PackImage': Draw.Create(0),
+ 'PPU': Draw.Create(50),
+ 'VPTransp': Draw.Create(1),
+ 'XOff': Draw.Create(0.0),
+ 'YOff': Draw.Create(0.0),
+ 'ZOff': Draw.Create(0.0),
+ 'CopyMat': Draw.Create(0),
+ 'MatId': Draw.Create(0),
+ 'MatCol': Draw.Create(1.0, 0.0, 0.0),
+ 'Ref': Draw.Create(0.8),
+ 'Spec': Draw.Create(0.5),
+ 'Hard': Draw.Create(50),
+ 'Alpha': Draw.Create(1.0),
+ 'ZTransp': Draw.Create(1),
+ 'Shadeless': Draw.Create(0),
+ 'TexChan': Draw.Create(1),
+ 'MPTCol': Draw.Create(1),
+ 'MPTAlpha': Draw.Create(1),
+ 'UseAlpha': Draw.Create(1),
+ 'CalcAlpha': Draw.Create(0),
+ 'ExtendMode': Draw.Create(0),
+ 'AutoRefresh': Draw.Create(0),
+ 'Cyclic': Draw.Create(0),
+ 'Frames': Draw.Create(100),
+ 'Offs': Draw.Create(0),
+ 'StartFr': Draw.Create(1),
+ 'RedrawImp': Draw.Create(0)
+}
+
+# Script Execution Paramaters
+PARAMS = {
+ 'ImagePaths': [], # Path to images to import
+ 'ImportType': SINGLE, # Import a Directory or a Single Image?
+ 'ImageProp': Image.Sources.STILL, # What sources for the image, still or sequence
+ 'PackImage': 0, # Pack the Image(s)?
+ 'PPU': 20, # Pixels Per Blender Unit
+ 'MakeTransp': 1, # Make face transparent in viewport
+
+ 'NewMat': 1, # If true make a new material, otherwise duplicate an existing one, replacing appropriate attributes
+ 'MaterialId': 0, # ID to take from the Materials list upon copy
+ 'Materials': None, # Materials in Scene
+ 'MatProps': {'Col': [1.0, 0.0, 0.0], 'Shadeless': 1, 'Ref': 0.5, 'Spec': 0.5, 'Hard': 200, 'Alpha': 1.0, 'ZTransp': 1},
+
+ 'TexProps': {'UseAlpha': 1, 'CalcAlpha': 0, 'ExtendMode': 0}, # Texture Properties
+ 'TexChannel': 0, # Texture Channel
+ 'TexMapTo': {'Col': 1, 'Alpha': 1}, # Map to Col and/or Alpha
+ 'SeqProps': {'AutoRefresh': 0, 'Cyclic': 0, 'Frames': 100, 'Offs': 0, 'StartFr': 1},
+ 'ObOffset': Vector(1, 0, 0) # Offset by this vector upon creation for multifile import
+}
+
+# Get the Active Scene, of course
+scn = bpy.data.scenes.active
+
+##########################################
+# MAIN SCRIPT FUNCTIONS
+##########################################
+
+def imgImport(imgPath):
+ global CUROFFS, PARAMS
+ ######################################
+ # Load the image
+ ######################################
+ try:
+ img = Image.Load(imgPath)
+ imgDimensions = img.getSize() # do this to ensure the data is available
+ except:
+ Blender.Draw.PupMenu('Error%t|Unsupported image format for "'+ imgPath.split('\\')[-1].split('/')[-1] +'"')
+ return
+
+ if PARAMS['PackImage']:
+ img.pack()
+ name = Blender.sys.makename(imgPath, strip = 1)
+
+ ######################################
+ # Construct the mesh
+ ######################################
+
+ me = Mesh.New(name)
+
+ # Calculate Dimensions from Image Size
+ dim = [float(i)/PARAMS['PPU'] for i in imgDimensions]
+ v = [[dim[0], dim[1], 0], [-dim[0], dim[1], 0], [-dim[0], -dim[1], 0], [dim[0], -dim[1], 0]]
+ me.verts.extend(v)
+ me.faces.extend([0, 1, 2, 3])
+
+ me.faces[0].image = img
+ me.faces[0].uv = [Vector(1.0, 1.0), Vector(0.0, 1.0), Vector(0.0, 0.0), Vector(1.0, 0.0)]
+
+ if PARAMS['MakeTransp']:
+ me.faces[0].transp = Mesh.FaceTranspModes.ALPHA
+
+ ######################################
+ # Modify the Material
+ ######################################
+
+ mat = None
+ if not PARAMS['NewMat']:
+ mat = PARAMS['Materials'][PARAMS['MaterialId']].__copy__()
+ mat.setName(name)
+ else:
+ mat = Material.New(name)
+ properties = PARAMS['MatProps']
+ mat.setRGBCol(properties['Col'])
+ mat.setRef(properties['Ref'])
+ mat.setSpec(properties['Spec'])
+ mat.setHardness(properties['Hard'])
+ mat.setAlpha(properties['Alpha'])
+
+ if properties['Shadeless']:
+ mat.mode |= Material.Modes.SHADELESS
+ if properties['ZTransp']:
+ mat.mode |= Material.Modes.ZTRANSP
+
+ properties = PARAMS['TexProps']
+
+ tex = Texture.New(name)
+ tex.setType('Image')
+ tex.setImage(img)
+ if properties['UseAlpha']:
+ tex.useAlpha = Texture.ImageFlags.USEALPHA
+
+ if properties['CalcAlpha']:
+ tex.calcAlpha = Texture.ImageFlags.CALCALPHA
+
+ if properties['ExtendMode']:
+ tex.setExtend('Extend')
+
+ if PARAMS['ImageProp'] == Image.Sources.SEQUENCE:
+ properties = PARAMS['SeqProps']
+
+ img.source = PARAMS['ImageProp'] # Needs to be done here, otherwise an error with earlier getSize()
+
+ tex.animStart = properties['StartFr']
+ tex.animOffset = properties['Offs']
+ tex.animFrames = properties['Frames']
+ tex.autoRefresh = properties['AutoRefresh']
+ tex.cyclic = properties['Cyclic']
+
+ texMapSetters = Texture.TexCo.UV
+
+ # PARAMS['TexMapTo']['Col'] (and alpha) will either be 0 or 1 because its from a toggle, otherwise this line doesn't work
+ texChanSetters = Texture.MapTo.COL * PARAMS['TexMapTo']['Col'] | Texture.MapTo.ALPHA * PARAMS['TexMapTo']['Alpha']
+
+ mat.setTexture(PARAMS['TexChannel'], tex, texMapSetters, texChanSetters)
+ me.materials += [mat]
+
+ ######################################
+ # Object Construction
+ ######################################
+
+ ob = scn.objects.new(me, name)
+ p = Vector(ob.getLocation()) # Should be the origin, but just to be safe, get it
+ ob.setLocation((CUROFFS * PARAMS['ObOffset']) + p)
+
+ return
+
+def translateParams():
+ # Translates (or assigns for the most part) GUI values to those that can be read by the
+ # Import Function
+
+ global GUIPARAMS, PARAMS
+
+ if GUIPARAMS['Seq'].val and PARAMS['ImportType'] != DIR:
+ PARAMS['ImageProp'] = Image.Sources.SEQUENCE
+
+ PARAMS['PackImage'] = GUIPARAMS['PackImage'].val
+ PARAMS['PPU'] = GUIPARAMS['PPU'].val
+ PARAMS['MakeTransp'] = GUIPARAMS['VPTransp'].val
+ PARAMS['ObOffset'] = Vector(GUIPARAMS['XOff'].val, GUIPARAMS['YOff'].val, GUIPARAMS['ZOff'].val)
+
+ PARAMS['NewMat'] = not GUIPARAMS['CopyMat'].val
+ PARAMS['MaterialId'] = GUIPARAMS['MatId'].val
+ PARAMS['MatProps']['Col'] = list(GUIPARAMS['MatCol'].val)
+ PARAMS['MatProps']['Ref'] = GUIPARAMS['Ref'].val
+ PARAMS['MatProps']['Spec'] = GUIPARAMS['Spec'].val
+ PARAMS['MatProps']['Hard'] = GUIPARAMS['Hard'].val
+ PARAMS['MatProps']['Alpha'] = GUIPARAMS['Alpha'].val
+ PARAMS['MatProps']['ZTransp'] = GUIPARAMS['ZTransp'].val
+ PARAMS['MatProps']['Shadeless'] = GUIPARAMS['Shadeless'].val
+
+ PARAMS['TexChannel'] = GUIPARAMS['TexChan'].val - 1 #Channels are 0-9, but GUI shows 1-10
+ PARAMS['TexProps']['UseAlpha'] = GUIPARAMS['UseAlpha'].val
+ PARAMS['TexProps']['CalcAlpha'] = GUIPARAMS['CalcAlpha'].val
+ PARAMS['TexProps']['ExtendMode'] = GUIPARAMS['ExtendMode'].val
+ PARAMS['TexMapTo']['Col'] = GUIPARAMS['MPTCol'].val
+ PARAMS['TexMapTo']['Alpha'] = GUIPARAMS['MPTAlpha'].val
+
+ PARAMS['SeqProps']['AutoRefresh'] = GUIPARAMS['AutoRefresh'].val
+ PARAMS['SeqProps']['Cyclic'] = GUIPARAMS['Cyclic'].val
+ PARAMS['SeqProps']['Frames'] = GUIPARAMS['Frames'].val
+ PARAMS['SeqProps']['Offs'] = GUIPARAMS['Offs'].val
+ PARAMS['SeqProps']['StartFr'] = GUIPARAMS['StartFr'].val
+ return
+
+def doScript():
+ # Main script Function
+ # Consists of choosing between 2 loops, one with a redraw, one without, see comments for why
+
+ global CUROFFS
+
+ translateParams()
+
+ total = len(PARAMS['ImagePaths'])
+ broken = 0
+
+ if GUIPARAMS['RedrawImp'].val: # Reduces the need to compare on every go through the loop
+ for i, path in enumerate(PARAMS['ImagePaths']):
+ CUROFFS = i # Could be passed to the import Function, but I chose a global instead
+ Window.DrawProgressBar(float(i)/total, "Importing %i of %i Images..." %(i+1, total))
+ imgImport(path)
+ Blender.Redraw()
+ if Blender.Get('version') >= 246:
+ if Window.TestBreak():
+ broken = 1
+ break
+ else:
+ for i, path in enumerate(PARAMS['ImagePaths']):
+ CUROFFS = i
+ Window.DrawProgressBar(float(i)/total, "Importing %i of %i Images..." %(i+1, total))
+ imgImport(path)
+ if Blender.Get('version') >= 246:
+ if Window.TestBreak():
+ broken = 1
+ break
+
+ if broken:
+ Window.DrawProgressBar(1.0, "Script Execution Aborted")
+ else:
+ Window.DrawProgressBar(1.0, "Finished Importing")
+
+ Blender.Redraw() # Force a refresh, since the user may have chosen to not refresh as they go along
+
+ return
+
+##########################################
+# PATH SETTERS AND CHANGERS
+##########################################
+
+def setSinglePath(filename):
+ global GUIPARAMS, PARAMS
+ GUIPARAMS['Path'].val = filename
+ PARAMS['ImagePaths'] = [filename]
+ return
+
+def setDirPath(filename):
+ global GUIPARAMS, PARAMS
+
+ try:
+ import os
+ except:
+ Draw.PupMenu('Full install of python required to be able to set Directory Paths')
+ Draw.Exit()
+ return
+
+ path = os.path.dirname(filename) # Blender.sys.dirname fails on '/'
+ GUIPARAMS['Path'].val = path
+
+ ext_lower = GUIPARAMS['ImageExt'].val.lower()
+ for f in os.listdir(path):
+ if f.lower().endswith(ext_lower):
+ PARAMS['ImagePaths'].append(os.path.join(path, f))
+
+ return
+
+def changeExtension():
+ global GUIPARAMS, PARAMS
+
+ if PARAMS['ImportType'] == SINGLE:
+ return
+
+ try:
+ import os
+ except:
+ Draw.PupMenu('Full install of python required to be able to set Directory Paths')
+ Draw.Exit()
+ return
+
+ PARAMS['ImagePaths'] = []
+
+ ext_lower = GUIPARAMS['ImageExt'].val.lower()
+ for f in os.listdir(GUIPARAMS['Path'].val):
+ if f.lower().endswith(ext_lower):
+ PARAMS['ImagePaths'].append(os.path.join(GUIPARAMS['Path'].val, f))
+
+ return
+
+##########################################
+# INTERFACE FUNCTIONS
+##########################################
+def compileMaterialList():
+ # Pretty straight forward, just grabs the materials in the blend file and constructs
+ # an appropriate string for use as a menu
+
+ mats = [mat for mat in bpy.data.materials]
+ PARAMS['Materials'] = mats
+ title = 'Materials%t|'
+ menStrs = [mat.name + '%x' + str(i) + '|' for i, mat in enumerate(mats)]
+ return title + ''.join(menStrs)
+
+def event(evt, val):
+ # Disabled, since Esc is often used from the file browser
+ #if evt == Draw.ESCKEY:
+ # Draw.Exit()
+
+ return
+
+def bevent(evt):
+ global GUIPARAMS, PARAMS
+
+ if evt == NO_EVT:
+ Draw.Redraw()
+
+ elif evt == SINGLE_IMG:
+ Window.FileSelector(setSinglePath, 'Image', Blender.sys.expandpath('//'))
+ Draw.Redraw()
+ PARAMS['ImportType'] = SINGLE
+
+ elif evt == DIRECTORY_IMG:
+ Window.FileSelector(setDirPath, 'Directory', Blender.sys.expandpath('//'))
+ Draw.Redraw()
+ PARAMS['ImportType'] = DIR
+
+ elif evt == CLR_PATH:
+ GUIPARAMS['Path'].val = ''
+ PARAMS['ImagePaths'] = []
+ GUIPARAMS['ImageExt'].val = ''
+ Draw.Redraw()
+
+ elif evt == CHG_EXT:
+ changeExtension()
+ Draw.Redraw()
+
+ elif evt == EXIT:
+ Draw.Exit()
+
+ elif evt == DO_SCRIPT:
+ doScript()
+
+ else:
+ print "ERROR: UNEXPECTED BUTTON EVENT"
+
+ return
+
+# GUI Colors ######
+ScreenColor = [0.7, 0.7, 0.7]
+BackgroundColor = [0.8, 0.8, 0.8]
+TitleBG = [0.6, 0.6, 0.6]
+TitleCol = [1.0, 1.0, 1.0]
+ErrCol = [1.0, 0.0, 0.0]
+TextCol = [0.4, 0.4, 0.5]
+###################
+
+def GUI():
+ global GUIPARAMS, PARAMS
+
+ BGL.glClearColor(*(ScreenColor + [1.0]))
+ BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
+
+ minx = 5
+ maxx = 500
+ miny = 5
+ maxy = 450
+
+ lineheight = 24
+ buPad = 5 # Generic Button Padding, most buttons should have 24-19 (or 5) px space around them
+
+ lP = 5 # Left Padding
+ rP = 5 # Right Padding
+
+ # Draw Background Box
+ BGL.glColor3f(*BackgroundColor)
+ BGL.glRecti(minx, miny, maxx, maxy)
+
+ # Draw Title
+ BGL.glColor3f(*TitleBG)
+ BGL.glRecti(minx, maxy - (lineheight), maxx, maxy)
+ BGL.glColor3f(*TitleCol)
+
+ title = "2D Cutout Image Importer v" + VERSIONSTRING
+ BGL.glRasterPos2i(minx + lP, maxy - 15)
+ Draw.Text(title, 'large')
+
+ Draw.PushButton('Exit', EXIT, maxx-50-rP, maxy - lineheight + 2, 50, 19, "Exit Script")
+
+ # Path Buttons
+ if GUIPARAMS['Path'].val == '':
+ Draw.PushButton('Single Image', SINGLE_IMG, minx + lP, maxy - (2*lineheight), 150, 19, "Select a Single Image to Import")
+ Draw.PushButton('Directory', DIRECTORY_IMG, minx + lP + 150, maxy - (2*lineheight), 150, 19, "Select a Directory of Images to Import")
+
+ else:
+ Draw.PushButton('Clear', CLR_PATH, minx+lP, maxy - (2*lineheight), 50, 19, "Clear Path and Change Import Options")
+
+ GUIPARAMS['Path'] = Draw.String('Path: ', NO_EVT, minx + lP, maxy - (3*lineheight), (maxx-minx-lP-rP), 19, GUIPARAMS['Path'].val, 399, 'Path to Import From')
+ if PARAMS['ImportType'] == DIR:
+ GUIPARAMS['ImageExt'] = Draw.String('Image Ext: ', CHG_EXT, minx + lP, maxy - (4*lineheight), 110, 19, GUIPARAMS['ImageExt'].val, 6, 'Image extension for batch directory importing (case insensitive)')
+ GUIPARAMS['PackImage'] = Draw.Toggle('Pack', NO_EVT, maxx - rP - 50, maxy - (4*lineheight), 50, 19, GUIPARAMS['PackImage'].val, 'Pack Image(s) into .Blend File')
+
+ # Geometry and Viewport Options
+ BGL.glColor3f(*TextCol)
+ BGL.glRecti(minx+lP, maxy - (5*lineheight), maxx-rP, maxy - (5*lineheight) + 1)
+ BGL.glRasterPos2i(minx + lP, maxy-(5*lineheight) + 3)
+ Draw.Text('Geometry and Display Options', 'small')
+
+ GUIPARAMS['PPU'] = Draw.Slider('Pixels Per Unit: ', NO_EVT, minx + lP, maxy - (6*lineheight), (maxx-minx)/2 - lP, 19, GUIPARAMS['PPU'].val, 1, 5000, 0, 'Set the Number of Pixels Per Blender Unit to preserve Image Size Relations')
+ GUIPARAMS['VPTransp'] = Draw.Toggle('Viewport Transparency', NO_EVT, minx + lP, maxy - (8*lineheight), (maxx-minx)/2 - lP, 2*lineheight - buPad, GUIPARAMS['VPTransp'].val, 'Display Alpha Transparency in the Viewport')
+
+ GUIPARAMS['XOff'] = Draw.Slider('Offs X: ', NO_EVT, minx + lP + (maxx-minx)/2, maxy - (6*lineheight), (maxx-minx)/2 - lP - rP, 19, GUIPARAMS['XOff'].val, 0, 5.0, 0, 'Amount to Offset Each Imported in the X-Direction if Importing Multiple Images')
+ GUIPARAMS['YOff'] = Draw.Slider('Offs Y: ', NO_EVT, minx + lP + (maxx-minx)/2, maxy - (7*lineheight), (maxx-minx)/2 - lP - rP, 19, GUIPARAMS['YOff'].val, 0, 5.0, 0, 'Amount to Offset Each Imported in the Y-Direction if Importing Multiple Images')
+ GUIPARAMS['ZOff'] = Draw.Slider('Offs Z: ', NO_EVT, minx + lP + (maxx-minx)/2, maxy - (8*lineheight), (maxx-minx)/2 - lP - rP, 19, GUIPARAMS['ZOff'].val, 0, 5.0, 0, 'Amount to Offset Each Imported in the Z-Direction if Importing Multiple Images')
+
+ # Material and Texture Options
+ BGL.glColor3f(*TextCol)
+ BGL.glRecti(minx+lP, maxy - (9*lineheight), maxx-rP, maxy - (9*lineheight) + 1)
+ BGL.glRasterPos2i(minx + lP, maxy-(9*lineheight) + 3)
+ Draw.Text('Material and Texture Options', 'small')
+
+ half = (maxx-minx-lP-rP)/2
+ GUIPARAMS['CopyMat'] = Draw.Toggle('Copy Existing Material', NO_EVT, minx + lP, maxy-(10*lineheight), half, 19, GUIPARAMS['CopyMat'].val, 'Copy an Existing Material')
+ if GUIPARAMS['CopyMat'].val:
+ menStr = compileMaterialList()
+ GUIPARAMS['MatId'] = Draw.Menu(menStr, NO_EVT, minx + lP, maxy - (11*lineheight), half, 19, GUIPARAMS['MatId'].val, 'Material to Copy Settings From')
+ else:
+ GUIPARAMS['MatCol'] = Draw.ColorPicker(NO_EVT, minx+lP, maxy - (13*lineheight), 40, (3*lineheight) - buPad, GUIPARAMS['MatCol'].val, 'Color of Newly Created Material')
+ GUIPARAMS['Ref'] = Draw.Slider('Ref: ', NO_EVT, minx +lP+45, maxy - (11*lineheight), half-45, 19, GUIPARAMS['Ref'].val, 0.0, 1.0, 0, 'Set the Ref Value for Created Materials')
+ GUIPARAMS['Spec'] = Draw.Slider('Spec: ', NO_EVT, minx +lP+45, maxy - (12*lineheight), half-45, 19, GUIPARAMS['Spec'].val, 0.0, 2.0, 0, 'Set the Spec Value for Created Materials')
+ GUIPARAMS['Hard'] = Draw.Slider('Hard: ', NO_EVT, minx +lP+45, maxy - (13*lineheight), half-45, 19, GUIPARAMS['Hard'].val, 1, 500, 0, 'Set the Hardness Value for Created Materials')
+ GUIPARAMS['Alpha'] = Draw.Slider('A: ', NO_EVT, minx +lP, maxy - (14*lineheight), half, 19, GUIPARAMS['Alpha'].val, 0.0, 1.0, 0, 'Set the Alpha Value for Created Materials')
+
+ GUIPARAMS['ZTransp'] = Draw.Toggle('ZTransparency', NO_EVT, minx + lP, maxy - (15*lineheight), half, 19, GUIPARAMS['ZTransp'].val, 'Enable ZTransparency')
+ GUIPARAMS['Shadeless'] = Draw.Toggle('Shadeless', NO_EVT, minx + lP, maxy - (16*lineheight), half, 19, GUIPARAMS['Shadeless'].val, 'Enable Shadeless')
+
+ GUIPARAMS['TexChan'] = Draw.Number('Texture Channel: ', NO_EVT, minx + lP+ half + buPad, maxy - (10*lineheight), half-rP, 19, GUIPARAMS['TexChan'].val, 1, 10, 'Texture Channel for Image Texture')
+
+ GUIPARAMS['MPTCol'] = Draw.Toggle('Color', NO_EVT, minx + lP + half + buPad, maxy - (11*lineheight), half/2, 19, GUIPARAMS['MPTCol'].val, 'Map To Color Channel')
+ GUIPARAMS['MPTAlpha'] = Draw.Toggle('Alpha', NO_EVT, minx + lP + int((1.5)*half) + buPad, maxy - (11*lineheight), half/2 - rP, 19, GUIPARAMS['MPTAlpha'].val, 'Map To Alpha Channel')
+
+ third = int((maxx-minx-lP-rP)/6)
+ GUIPARAMS['UseAlpha'] = Draw.Toggle('Use Alpha', NO_EVT, minx + lP + half + buPad, maxy - (12*lineheight), third, 19, GUIPARAMS['UseAlpha'].val, "Use the Images' Alpha Values")
+ GUIPARAMS['CalcAlpha'] = Draw.Toggle('Calc Alpha', NO_EVT, minx + lP + half + third + buPad, maxy - (12*lineheight), third, 19, GUIPARAMS['CalcAlpha'].val, "Calculate Images' Alpha Values")
+ GUIPARAMS['ExtendMode'] = Draw.Toggle('Extend', NO_EVT, minx+lP+half+third+third+buPad, maxy - (12*lineheight), third-3, 19, GUIPARAMS['ExtendMode'].val, "Use Extend texture mode. If deselected, Repeat is used")
+ GUIPARAMS['Seq'] = Draw.Toggle('Sequence', NO_EVT, minx + lP + half + buPad, maxy - (13*lineheight), half-rP, 19, GUIPARAMS['Seq'].val, 'Set the Image(s) to use a Sequence instead of a Still')
+
+ if GUIPARAMS['Seq'].val and not PARAMS['ImportType'] == DIR:
+ GUIPARAMS['AutoRefresh'] = Draw.Toggle('Auto Refresh', NO_EVT, minx + lP + half + buPad, maxy - (14*lineheight), half/2, 19, GUIPARAMS['AutoRefresh'].val, 'Use Auto Refresh')
+ GUIPARAMS['Cyclic'] = Draw.Toggle('Cyclic', NO_EVT, minx + lP + half + buPad + half/2, maxy - (14*lineheight), half/2 - rP, 19, GUIPARAMS['Cyclic'].val, 'Repeat Frames Cyclically`')
+
+ GUIPARAMS['Frames'] = Draw.Number('Frames: ', NO_EVT, minx +lP + half + buPad, maxy - (15*lineheight), half - rP, 19, GUIPARAMS['Frames'].val, 1, 30000, 'Sets the Number of Images of a Movie to Use')
+ GUIPARAMS['Offs'] = Draw.Number('Offs: ', NO_EVT, minx +lP + half + buPad, maxy - (16*lineheight), half/2, 19, GUIPARAMS['Offs'].val, -30000, 30000, 'Offsets the Number of the Frame to use in the Animation')
+ GUIPARAMS['StartFr'] = Draw.Number('StartFr: ', NO_EVT, minx +lP + half + buPad + half/2, maxy - (16*lineheight), half/2 - rP, 19, GUIPARAMS['StartFr'].val, 1, 30000, 'Sets the Global Starting Frame of the Movie')
+ elif GUIPARAMS['Seq'].val and PARAMS['ImportType'] == DIR:
+ BGL.glColor3f(*ErrCol)
+ BGL.glRasterPos2i(minx + lP + half + buPad + 7, maxy-(14 * lineheight) + 5)
+ Draw.Text('Sequence only available for Single Image Import', 'small')
+
+ # Import Options
+ BGL.glColor3f(*TextCol)
+ BGL.glRecti(minx+lP, maxy - (17*lineheight), maxx-rP, maxy - (17*lineheight) + 1)
+ BGL.glRasterPos2i(minx + lP, maxy-(17*lineheight) + 3)
+ Draw.Text('Import', 'small')
+
+ if GUIPARAMS['Path'].val and GUIPARAMS['ImageExt'].val or GUIPARAMS['Path'].val and PARAMS['ImportType'] == SINGLE:
+ Draw.PushButton('Import', DO_SCRIPT, minx + lP, maxy - (18*lineheight), 75, 19, "Import Image(s)")
+ else:
+ BGL.glColor3f(*ErrCol)
+ BGL.glRasterPos2i(minx+lP, maxy - (18*lineheight) + 5)
+ Draw.Text('A path and image type must be specified to import images')
+
+ GUIPARAMS['RedrawImp'] = Draw.Toggle('Redraw During Import', NO_EVT, maxx - rP - 150, maxy - (18*lineheight), 150, 19, GUIPARAMS['RedrawImp'].val, 'Redraw the View as Images Import')
+
+Draw.Register(GUI, event, bevent) \ No newline at end of file
diff --git a/release/scripts/import_dxf.py b/release/scripts/import_dxf.py
index ceb4dd56722..36a1a048075 100644
--- a/release/scripts/import_dxf.py
+++ b/release/scripts/import_dxf.py
@@ -2,12 +2,12 @@
"""
Name: 'Autodesk DXF (.dxf .dwg)'
-Blender: 246
+Blender: 249
Group: 'Import'
Tooltip: 'Import for DWG/DXF geometry data.'
"""
__author__ = 'Kitsu(Ed Blake) & migius(Remigiusz Fiedler)'
-__version__ = '1.12 - 2009.04.11 by migius'
+__version__ = '1.12 - 2009.05.27 by migius'
__url__ = ["http://blenderartists.org/forum/showthread.php?t=84319",
"http://wiki.blender.org/index.php/Scripts/Manual/Import/DXF-3D"]
__email__ = ["migius(at)4d-vectors.de","Kitsune_e(at)yahoo.com"]
@@ -44,8 +44,8 @@ Supported DXF>r12 objects:
ELLIPSE,
LWPOLYLINE (LightWeight Polyline),
SPLINE,
-(wip v1.13) MLINE,
-(wip v1.13) MTEXT
+(todo v1.13) MLINE,
+(todo v1.13) MTEXT
Unsupported objects:
DXF r12: DIMENSION.
@@ -74,7 +74,7 @@ thickness,
width,
color,
layer,
-(wip v1.13: XDATA, grouped status)
+(todo v1.13: XDATA, grouped status)
It is recommended to use DXF-object properties for assign Blender materials.
Notes:
@@ -111,7 +111,11 @@ History:
-- support DXF-definitions of scene, lights and cameras
-- support ortho mode for VIEWs and VPORTs as cameras
-
+ v1.12 - 2009.05.27 by migius
+ d6 todo: bugfix negative scaled INSERTs - isLeftHand(Matrix) check
+ v1.12 - 2009.05.26 by migius
+ d5 changed to the new 2.49 method Vector.cross()
+ d5 bugfix WORLDY(1,1,0) to (0,1,0)
v1.12 - 2009.04.11 by migius
d4 added DWG support, Stani Michiels idea for binding an extern DXF-DWG-converter
v1.12 - 2009.03.14 by migius
@@ -309,7 +313,7 @@ History:
import Blender
from Blender import Mathutils, BezTriple, Draw, Registry, sys,\
-Text3d, Window, Mesh, Material, Group
+Text3d, Window, Mesh, Material, Group, Curve
#from Blender.Mathutils import Vector, Matrix
#import bpy #not used yet
#import BPyMessages
@@ -343,14 +347,12 @@ if os.name != 'mac':
except ImportError:
print 'psyco not imported'
-#try: Curve.orderU
-
print '\n\n\n'
print 'DXF/DWG-Importer v%s *** start ***' %(__version__) #---------------------
SCENE = None
WORLDX = Mathutils.Vector((1,0,0))
-WORLDY = Mathutils.Vector((1,1,0))
+WORLDY = Mathutils.Vector((0,1,0))
WORLDZ = Mathutils.Vector((0,0,1))
G_SCALE = 1.0 #(0.0001-1000) global scaling factor for all dxf data
@@ -375,7 +377,7 @@ GROUP_BYLAYER = 0 #(0/1) all entities from same layer import into one blender-
LAYER_DEF_NAME = 'AAAA' #default layer name
LAYER_DEF_COLOR = 4 #default layer color
E_M = 0
-LAB = "*) parts under construction"
+LAB = ". wip .. todo" #"*) parts under construction"
M_OBJ = 0
FILENAME_MAX = 180 #max length of path+file_name string (FILE_MAXDIR + FILE_MAXFILE)
@@ -392,7 +394,20 @@ ALIGN = BezTriple.HandleTypes.ALIGN
UI_MODE = True #activates UI-popup-print, if not multiple files imported
-
+#---- migration to 2.49-------------------------------------------------
+if 'cross' in dir(Mathutils.Vector()):
+ #Draw.PupMenu('DXF exporter: Abort%t|This script version works for Blender up 2.49 only!')
+ def M_CrossVecs(v1,v2):
+ return v1.cross(v2) #for up2.49
+ def M_DotVecs(v1,v2):
+ return v1.dot(v2) #for up2.49
+else:
+ def M_CrossVecs(v1,v2):
+ return Mathutils.CrossVecs(v1,v2) #for pre2.49
+ def M_DotVecs(v1,v2):
+ return Mathutils.DotVecs(v1,v2) #for pre2.49
+
+
#-------- DWG support ------------------------------------------
extCONV_OK = True
extCONV = 'DConvertCon.exe'
@@ -2237,7 +2252,6 @@ class LWpolyline(Polyline): #--------------------------------------------------
self.spline = False
self.curved = False
-
#print 'deb:LWpolyline.obj.data:\n', obj.data #------------------------
#print 'deb:LWpolyline.ENDinit:----------------' #------------------------
@@ -4419,11 +4433,11 @@ def getOCS(az): #--------------------------------------------------------------
cap = 0.015625 # square polar cap value (1/64.0)
if abs(az.x) < cap and abs(az.y) < cap:
- ax = Mathutils.CrossVecs(WORLDY, az)
+ ax = M_CrossVecs(WORLDY,az)
else:
- ax = Mathutils.CrossVecs(WORLDZ, az)
+ ax = M_CrossVecs(WORLDZ,az)
ax = ax.normalize()
- ay = Mathutils.CrossVecs(az, ax)
+ ay = M_CrossVecs(az, ax)
ay = ay.normalize()
return ax, ay, az
@@ -5166,17 +5180,17 @@ GUI_B = {} # GUI-buttons dictionary for drawingTypes
# settings default, initialize ------------------------
-points_as_menu = "convert to: %t|empty %x1|mesh.vertex %x2|thin sphere %x3|thin box %x4|*curve.vertex %x5"
-lines_as_menu = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|thin box %x4|Bezier-curve %x5|*NURBS-curve %x6"
-mlines_as_menu = "convert to: %t|*edge %x1|*mesh %x2|*thin cylinder %x3|*thin box %x|*curve %x5"
-plines_as_menu = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|*thin box %x4|Bezier-curve %x5|NURBS-curve %x6"
-splines_as_menu = "convert to: %t|mesh %x2|*thin cylinder %x3|*thin box %x4|*Bezier-curve %x5|NURBS-curve %x6"
-plines3_as_menu = "convert to: %t|*edge %x1|mesh %x2|*thin cylinder %x3|*thin box %x4|Bezier-curve %x5|NURBS-curve %x6"
-plmesh_as_menu = "convert to: %t|*edge %x1|mesh %x2|*NURBS-surface %x6"
-solids_as_menu = "convert to: %t|*edge %x1|mesh %x2"
-blocks_as_menu = "convert to: %t|dupliGroup %x1|*real.Group %x2|*exploded %x3"
-texts_as_menu = "convert to: %t|text %x1|*mesh %x2|*curve %x5"
-material_from_menu= "material from: %t|*LINESTYLE %x7|COLOR %x1|LAYER %x2|*LAYER+COLOR %x3|*BLOCK %x4|*XDATA %x5|*INI-File %x6"
+points_as_menu = "convert to: %t|empty %x1|mesh.vertex %x2|thin sphere %x3|thin box %x4|..curve.vertex %x5"
+lines_as_menu = "convert to: %t|..edge %x1|mesh %x2|..thin cylinder %x3|thin box %x4|Bezier-curve %x5|..NURBS-curve %x6"
+mlines_as_menu = "convert to: %t|..edge %x1|..mesh %x2|..thin cylinder %x3|..thin box %x|..curve %x5"
+plines_as_menu = "convert to: %t|..edge %x1|mesh %x2|..thin cylinder %x3|..thin box %x4|Bezier-curve %x5|NURBS-curve %x6"
+splines_as_menu = "convert to: %t|mesh %x2|..thin cylinder %x3|..thin box %x4|Bezier-curve %x5|NURBS-curve %x6"
+plines3_as_menu = "convert to: %t|..edge %x1|mesh %x2|..thin cylinder %x3|..thin box %x4|Bezier-curve %x5|NURBS-curve %x6"
+plmesh_as_menu = "convert to: %t|..edge %x1|mesh %x2|..NURBS-surface %x6"
+solids_as_menu = "convert to: %t|..edge %x1|mesh %x2"
+blocks_as_menu = "convert to: %t|dupliGroup %x1|..real.Group %x2|..exploded %x3"
+texts_as_menu = "convert to: %t|text %x1|..mesh %x2|..curve %x5"
+material_from_menu= "material from: %t|..LINESTYLE %x7|COLOR %x1|LAYER %x2|..LAYER+COLOR %x3|..BLOCK %x4|..XDATA %x5|..INI-File %x6"
g_scale_list = ''.join((
'scale factor: %t',
'|user def. %x12',
@@ -5662,7 +5676,7 @@ def draw_UI(): #---------------------------------------------------------------
y -= 20
Draw.BeginAlign()
- GUI_B['mline'] = Draw.Toggle('*MLINE', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['mline'].val, "(*wip)support dxf-MLINE on/off")
+ GUI_B['mline'] = Draw.Toggle('..MLINE', EVENT_REDRAW, b0, y, b0_, 20, GUI_B['mline'].val, "(*todo)support dxf-MLINE on/off")
if GUI_B['mline'].val:
GUI_A['mlines_as'] = Draw.Menu(mlines_as_menu, EVENT_NONE, but1c, y, but_1c, 20, GUI_A['mlines_as'].val, "select target Blender-object")
Draw.EndAlign()
@@ -5713,7 +5727,7 @@ def draw_UI(): #---------------------------------------------------------------
y -= 20
GUI_B['text'] = Draw.Toggle('TEXT', EVENT_NONE, b0, y, b0_, 20, GUI_B['text'].val, "support dxf-TEXT on/off")
- GUI_B['mtext'] = Draw.Toggle('*MTEXT', EVENT_NONE, b1, y, b1_, 20, GUI_B['mtext'].val, "(*wip)support dxf-MTEXT on/off")
+ GUI_B['mtext'] = Draw.Toggle('..MTEXT', EVENT_NONE, b1, y, b1_, 20, GUI_B['mtext'].val, "(*todo)support dxf-MTEXT on/off")
# GUI_A['texts_as'] = Draw.Menu(texts_as_menu, EVENT_NONE, but3c, y, but_3c, 20, GUI_A['texts_as'].val, "select target Blender-object")
y -= 20
@@ -5732,8 +5746,8 @@ def draw_UI(): #---------------------------------------------------------------
Draw.BeginAlign()
GUI_A['views_on'] = Draw.Toggle('views', EVENT_NONE, b0, y, b0_-25, 20, GUI_A['views_on'].val, "imports VIEWs and VIEWPORTs as cameras on/off")
- GUI_A['cams_on'] = Draw.Toggle('*cams', EVENT_NONE, b1-25, y, b1_-25, 20, GUI_A['cams_on'].val, "(*wip) support ASHADE cameras on/off")
- GUI_A['lights_on'] = Draw.Toggle('*lights', EVENT_NONE, b1+25, y, b1_-25, 20, GUI_A['lights_on'].val, "(*wip) support AVE_RENDER lights on/off")
+ GUI_A['cams_on'] = Draw.Toggle('..cams', EVENT_NONE, b1-25, y, b1_-25, 20, GUI_A['cams_on'].val, "(*todo) support ASHADE cameras on/off")
+ GUI_A['lights_on'] = Draw.Toggle('..lights', EVENT_NONE, b1+25, y, b1_-25, 20, GUI_A['lights_on'].val, "(*todo) support AVE_RENDER lights on/off")
Draw.EndAlign()
@@ -5749,10 +5763,10 @@ def draw_UI(): #---------------------------------------------------------------
Draw.BeginAlign()
GUI_A['paper_space_on'] = Draw.Toggle('paper', EVENT_NONE, b0+but_*0, y, but_, 20, GUI_A['paper_space_on'].val, "import only from Paper-Space on/off")
GUI_A['layFrozen_on'] = Draw.Toggle ('frozen', EVENT_NONE, b0+but_*1, y, but_, 20, GUI_A['layFrozen_on'].val, "import also from frozen LAYERs on/off")
- GUI_A['layerFilter_on'] = Draw.Toggle('layer', EVENT_NONE, b0+but_*2, y, but_, 20, GUI_A['layerFilter_on'].val, "(*wip) LAYER filtering on/off")
- GUI_A['colorFilter_on'] = Draw.Toggle('color', EVENT_NONE, b0+but_*3, y, but_, 20, GUI_A['colorFilter_on'].val, "(*wip) COLOR filtering on/off")
- GUI_A['groupFilter_on'] = Draw.Toggle('group', EVENT_NONE, b0+but_*4, y, but_, 20, GUI_A['groupFilter_on'].val, "(*wip) GROUP filtering on/off")
- GUI_A['blockFilter_on'] = Draw.Toggle('block', EVENT_NONE, b0+but_*5, y, but_, 20, GUI_A['blockFilter_on'].val, "(*wip) BLOCK filtering on/off")
+ GUI_A['layerFilter_on'] = Draw.Toggle('..layer', EVENT_NONE, b0+but_*2, y, but_, 20, GUI_A['layerFilter_on'].val, "(*todo) LAYER filtering on/off")
+ GUI_A['colorFilter_on'] = Draw.Toggle('..color', EVENT_NONE, b0+but_*3, y, but_, 20, GUI_A['colorFilter_on'].val, "(*todo) COLOR filtering on/off")
+ GUI_A['groupFilter_on'] = Draw.Toggle('..group', EVENT_NONE, b0+but_*4, y, but_, 20, GUI_A['groupFilter_on'].val, "(*todo) GROUP filtering on/off")
+ GUI_A['blockFilter_on'] = Draw.Toggle('..block', EVENT_NONE, b0+but_*5, y, but_, 20, GUI_A['blockFilter_on'].val, "(*todo) BLOCK filtering on/off")
#GUI_A['dummy_on'] = Draw.Toggle('-', EVENT_NONE, but3c, y, but_3c, 20, GUI_A['dummy_on'].val, "dummy on/off")
Draw.EndAlign()
@@ -5853,7 +5867,7 @@ def draw_UI(): #---------------------------------------------------------------
y -= 10
y -= 20
Draw.BeginAlign()
- GUI_A['Z_force_on'] = Draw.Toggle('*elevation', EVENT_REDRAW, b0, y, b0_, 20, GUI_A['Z_force_on'].val, "*set objects Z-coordinates to elevation on/off")
+ GUI_A['Z_force_on'] = Draw.Toggle('.elevation', EVENT_REDRAW, b0, y, b0_, 20, GUI_A['Z_force_on'].val, ".set objects Z-coordinates to elevation on/off")
if GUI_A['Z_force_on'].val:
GUI_A['Z_elev'] = Draw.Number('', EVENT_NONE, b1, y, b1_, 20, GUI_A['Z_elev'].val, -1000, 1000, "set default elevation(Z-coordinate)")
Draw.EndAlign()
@@ -6155,6 +6169,7 @@ def multi_import(DIR):
if __name__ == "__main__":
+ #Draw.PupMenu('DXF importer: Abort%t|This script version works for Blender up 2.49 only!')
UI_MODE = True
# recall last used DXF-file and INI-file names
dxffilename = check_RegistryKey('dxfFileName')
diff --git a/release/scripts/import_obj.py b/release/scripts/import_obj.py
index 493354601a6..31501173fda 100644
--- a/release/scripts/import_obj.py
+++ b/release/scripts/import_obj.py
@@ -7,9 +7,9 @@ Group: 'Import'
Tooltip: 'Load a Wavefront OBJ File, Shift: batch import all dir.'
"""
-__author__= "Campbell Barton", "Jiri Hnidek"
+__author__= "Campbell Barton", "Jiri Hnidek", "Paolo Ciccone"
__url__= ['http://wiki.blender.org/index.php/Scripts/Manual/Import/wavefront_obj', 'blender.org', 'blenderartists.org']
-__version__= "2.1"
+__version__= "2.11"
__bpydoc__= """\
This script imports a Wavefront OBJ files to Blender.
@@ -49,7 +49,6 @@ import BPyMessages
try: import os
except: os= False
-
# Generic path functions
def stripFile(path):
'''Return directory, where the file is'''
@@ -320,7 +319,7 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP,
return [(value[0], value[1], value[2], key_to_name(key)) for key, value in face_split_dict.iteritems()]
-def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, verts_tex, faces, unique_materials, unique_material_images, unique_smooth_groups, dataname):
+def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, verts_tex, faces, unique_materials, unique_material_images, unique_smooth_groups, vertex_groups, dataname):
'''
Takes all the data gathered and generates a mesh, adding the new object to new_objects
deals with fgons, sharp edges and assigning materials
@@ -530,6 +529,13 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
ob= scn.objects.new(me)
new_objects.append(ob)
+ # Create the vertex groups. No need to have the flag passed here since we test for the
+ # content of the vertex_groups. If the user selects to NOT have vertex groups saved then
+ # the following test will never run
+ for group_name, group_indicies in vertex_groups.iteritems():
+ me.addVertGroup(group_name)
+ me.assignVertsToGroup(group_name, group_indicies,1.00, Mesh.AssignModes.REPLACE)
+
def get_float_func(filepath):
'''
find the float function for this obj file
@@ -547,7 +553,16 @@ def get_float_func(filepath):
# incase all vert values were ints
return float
-def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS= True, CREATE_EDGES= True, SPLIT_OBJECTS= True, SPLIT_GROUPS= True, SPLIT_MATERIALS= True, IMAGE_SEARCH=True):
+def load_obj(filepath,
+ CLAMP_SIZE= 0.0,
+ CREATE_FGONS= True,
+ CREATE_SMOOTH_GROUPS= True,
+ CREATE_EDGES= True,
+ SPLIT_OBJECTS= True,
+ SPLIT_GROUPS= True,
+ SPLIT_MATERIALS= True,
+ IMAGE_SEARCH=True,
+ POLYGROUPS=False):
'''
Called by the user interface or another script.
load_obj(path) - should give acceptable results.
@@ -556,13 +571,16 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
'''
print '\nimporting obj "%s"' % filepath
+ if SPLIT_OBJECTS or SPLIT_GROUPS or SPLIT_MATERIALS:
+ POLYGROUPS = False
+
time_main= sys.time()
verts_loc= []
verts_tex= []
faces= [] # tuples of the faces
material_libs= [] # filanems to material libs this uses
-
+ vertex_groups = {} # when POLYGROUPS is true
# Get the string to float conversion func for this file- is 'float' for almost all files.
float_func= get_float_func(filepath)
@@ -571,7 +589,8 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
context_material= None
context_smooth_group= None
context_object= None
-
+ context_vgroup = None
+
has_ngons= False
# has_smoothgroups= False - is explicit with len(unique_smooth_groups) being > 0
@@ -587,8 +606,9 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
# so we need to know weather
multi_line_face= False
- print '\tpassing obj file "%s"...' % filepath,
+ print '\tparsing obj file "%s"...' % filepath,
time_sub= sys.time()
+
file= open(filepath, 'rU')
for line in file: #.xreadlines():
line = line.lstrip() # rare cases there is white space at the start of the line
@@ -641,6 +661,10 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
obj_vert= v.split('/')
vert_loc_index= int(obj_vert[0])-1
+ # Add the vertex to the current group
+ # *warning*, this wont work for files that have groups defined around verts
+ if POLYGROUPS and context_vgroup:
+ vertex_groups[context_vgroup].append(vert_loc_index)
# Make relative negative vert indicies absolute
if vert_loc_index < 0:
@@ -684,6 +708,12 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
context_object= line_value(line.split())
# print 'context_object', context_object
# unique_obects[context_object]= None
+ elif POLYGROUPS:
+ context_vgroup = line_value(line.split())
+ if context_vgroup and context_vgroup != '(null)':
+ vertex_groups.setdefault(context_vgroup, [])
+ else:
+ context_vgroup = None # dont assign a vgroup
elif line.startswith('usemtl'):
context_material= line_value(line.split())
@@ -721,8 +751,8 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
else: SPLIT_OB_OR_GROUP = False
for verts_loc_split, faces_split, unique_materials_split, dataname in split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS):
- # Create meshes from the data
- create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc_split, verts_tex, faces_split, unique_materials_split, unique_material_images, unique_smooth_groups, dataname)
+ # Create meshes from the data, warning 'vertex_groups' wont support splitting
+ create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc_split, verts_tex, faces_split, unique_materials_split, unique_material_images, unique_smooth_groups, vertex_groups, dataname)
axis_min= [ 1000000000]*3
axis_max= [-1000000000]*3
@@ -758,7 +788,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
if BPyMessages.Error_NoFile(filepath):
return
- global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, KEEP_VERT_ORDER
+ global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER
CREATE_SMOOTH_GROUPS= Draw.Create(0)
CREATE_FGONS= Draw.Create(1)
@@ -768,6 +798,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
SPLIT_MATERIALS= Draw.Create(0)
CLAMP_SIZE= Draw.Create(10.0)
IMAGE_SEARCH= Draw.Create(1)
+ POLYGROUPS= Draw.Create(0)
KEEP_VERT_ORDER= Draw.Create(1)
@@ -817,9 +848,10 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
GLOBALS['EVENT'] = e
def do_split(e,v):
- global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER
+ global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS
if SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val:
KEEP_VERT_ORDER.val = 0
+ POLYGROUPS.val = 0
else:
KEEP_VERT_ORDER.val = 1
@@ -831,6 +863,11 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
if not (SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val):
KEEP_VERT_ORDER.val = 1
+ def do_polygroups(e,v):
+ global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS
+ if POLYGROUPS.val:
+ SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0
+
def do_help(e,v):
url = __url__[0]
print 'Trying to open web browser with documentation at this address...'
@@ -849,7 +886,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
ui_x -= 165
ui_y -= 90
- global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, KEEP_VERT_ORDER
+ global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER
Draw.Label('Import...', ui_x+9, ui_y+159, 220, 21)
Draw.BeginAlign()
@@ -869,8 +906,9 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
KEEP_VERT_ORDER = Draw.Toggle('Keep Vert Order', EVENT_REDRAW, ui_x+229, ui_y+89, 110, 21, KEEP_VERT_ORDER.val, 'Keep vert and face order, disables split options, enable for morph targets', do_vertorder)
Draw.Label('Options...', ui_x+9, ui_y+60, 211, 20)
- CLAMP_SIZE = Draw.Number('Clamp Scale: ', EVENT_NONE, ui_x+9, ui_y+39, 211, 21, CLAMP_SIZE.val, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)')
- IMAGE_SEARCH = Draw.Toggle('Image Search', EVENT_NONE, ui_x+229, ui_y+39, 110, 21, IMAGE_SEARCH.val, 'Search subdirs for any assosiated images (Warning, may be slow)')
+ CLAMP_SIZE = Draw.Number('Clamp Scale: ', EVENT_NONE, ui_x+9, ui_y+39, 130, 21, CLAMP_SIZE.val, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)')
+ POLYGROUPS = Draw.Toggle('Poly Groups', EVENT_REDRAW, ui_x+144, ui_y+39, 90, 21, POLYGROUPS.val, 'Import OBJ groups as vertex groups.', do_polygroups)
+ IMAGE_SEARCH = Draw.Toggle('Image Search', EVENT_NONE, ui_x+239, ui_y+39, 100, 21, IMAGE_SEARCH.val, 'Search subdirs for any assosiated images (Warning, may be slow)')
Draw.BeginAlign()
Draw.PushButton('Online Help', EVENT_REDRAW, ui_x+9, ui_y+9, 110, 21, 'Load the wiki page for this script', do_help)
Draw.PushButton('Cancel', EVENT_EXIT, ui_x+119, ui_y+9, 110, 21, '', obj_ui_set_event)
@@ -921,6 +959,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
SPLIT_GROUPS.val,\
SPLIT_MATERIALS.val,\
IMAGE_SEARCH.val,\
+ POLYGROUPS.val
)
else: # Normal load
@@ -933,6 +972,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
SPLIT_GROUPS.val,\
SPLIT_MATERIALS.val,\
IMAGE_SEARCH.val,\
+ POLYGROUPS.val
)
Window.WaitCursor(0)
diff --git a/release/scripts/import_web3d.py b/release/scripts/import_web3d.py
index fc3b5262376..a5547506dc7 100644
--- a/release/scripts/import_web3d.py
+++ b/release/scripts/import_web3d.py
@@ -85,7 +85,7 @@ def imageConvertCompat(path):
def vrmlFormat(data):
'''
- Keep this as a valid vrml file, but format in a way we can pradict.
+ Keep this as a valid vrml file, but format in a way we can predict.
'''
# Strip all commends - # not in strings - warning multiline strings are ignored.
def strip_comment(l):
diff --git a/release/scripts/lightwave_export.py b/release/scripts/lightwave_export.py
index 458e61f3a28..bbfb9649c69 100644
--- a/release/scripts/lightwave_export.py
+++ b/release/scripts/lightwave_export.py
@@ -68,8 +68,13 @@ v5.5 format.
# ***** END GPL LICENCE BLOCK *****
import Blender
-import struct, cStringIO, operator
import BPyMesh
+try: import struct
+except: struct = None
+try: import cStringIO
+except: cStringIO = None
+try: import operator
+except: operator = None
VCOL_NAME = "\251 Per-Face Vertex Colors"
DEFAULT_NAME = "\251 Blender Default"
@@ -95,12 +100,16 @@ def write(filename):
icon = "" #generate_icon()
meshes = []
+ mesh_object_name_lookup = {} # for name lookups only
+
for obj in objects:
mesh = BPyMesh.getMeshFromObject(obj, None, True, False, scn)
if mesh:
mesh.transform(obj.matrixWorld)
meshes.append(mesh)
-
+ mesh_object_name_lookup[mesh] = obj.name
+ del obj
+
material_names = get_used_material_names(meshes)
tags = generate_tags(material_names)
surfs = generate_surfs(material_names)
@@ -111,7 +120,7 @@ def write(filename):
layer_index = 0
for mesh in meshes:
- layr = generate_layr(obj.name, layer_index)
+ layr = generate_layr(mesh_object_name_lookup[mesh], layer_index)
pnts = generate_pnts(mesh)
bbox = generate_bbox(mesh)
pols = generate_pols(mesh)
@@ -149,7 +158,9 @@ def write(filename):
layer_index += 1
mesh.verts = None # save some ram
-
+
+ del mesh_object_name_lookup
+
for surf in surfs:
chunks.append(surf)
@@ -345,23 +356,28 @@ def generate_vmad_vc(mesh):
# === Generate Per-Face UV Coords (VMAD Chunk) ===
# ================================================
def generate_vmad_uv(mesh):
- data = cStringIO.StringIO()
- data.write("TXUV") # type
- data.write(struct.pack(">H", 2)) # dimension
- data.write(generate_nstring("Blender's UV Coordinates")) # name
+ layers = mesh.getUVLayerNames()
+ org_uv = mesh.activeUVLayer
+ for l in layers:
+ mesh.activeUVLayer = l
+ data = cStringIO.StringIO()
+ data.write("TXUV") # type
+ data.write(struct.pack(">H", 2)) # dimension
+ data.write(generate_nstring(l)) # name
+ for i, f in enumerate(mesh.faces):
+ if not i%100:
+ Blender.Window.DrawProgressBar(float(i)/len(mesh.faces), "Writing UV Coordinates")
+
+ uv = f.uv
+ f_v = f.v
+ for j in xrange(len(f)-1, -1, -1): # Reverse order
+ U,V = uv[j]
+ v = f_v[j].index
+ data.write(struct.pack(">H", v)) # vertex index
+ data.write(struct.pack(">H", i)) # face index
+ data.write(struct.pack(">ff", U, V))
- for i, f in enumerate(mesh.faces):
- if not i%100:
- Blender.Window.DrawProgressBar(float(i)/len(mesh.faces), "Writing UV Coordinates")
-
- uv = f.uv
- f_v = f.v
- for j in xrange(len(f)-1, -1, -1): # Reverse order
- U,V = uv[j]
- v = f_v[j].index
- data.write(struct.pack(">H", v)) # vertex index
- data.write(struct.pack(">H", i)) # face index
- data.write(struct.pack(">ff", U, V))
+ mesh.activeUVLayer = org_uv
return data.getvalue()
# ======================================
@@ -685,4 +701,7 @@ def fs_callback(filename):
if not filename.lower().endswith('.lwo'): filename += '.lwo'
write(filename)
-Blender.Window.FileSelector(fs_callback, "Export LWO", Blender.sys.makename(ext='.lwo'))
+if struct and cStringIO and operator:
+ Blender.Window.FileSelector(fs_callback, "Export LWO", Blender.sys.makename(ext='.lwo'))
+else:
+ Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
diff --git a/release/scripts/md2_export.py b/release/scripts/md2_export.py
index 588336ed447..cf5752597da 100644
--- a/release/scripts/md2_export.py
+++ b/release/scripts/md2_export.py
@@ -612,29 +612,9 @@ class md2_obj:
######################################################
# Validation
######################################################
+
def validation(object):
global user_frame_list
-
- #move the object to the origin if it's not already there
- if object.getLocation('worldspace')!=(0.0, 0.0, 0.0):
- print "Model not centered at origin"
- result=Blender.Draw.PupMenu("Model not centered at origin%t|Center (will not work with animations!)|Do not center")
- if result==1:
- object.setLocation(0.0,0.0,0.0)
-
- #resize the object in case it is not the right size
- if object.getSize('worldspace')!=(1.0,1.0,1.0):
- print "Object is scaled-You should scale the mesh verts, not the object"
- result=Blender.Draw.PupMenu("Object is scaled-You should scale the mesh verts, not the object%t|Fix scale (will not work with animations!)|Do not scale")
- if result==1:
- object.setSize(1.0,1.0,1.0)
-
- if object.getEuler('worldspace')!=Blender.Mathutils.Euler(0.0,0.0,0.0):
- print "object.rot: ", object.getEuler('worldspace')
- print "Object is rotated-You should rotate the mesh verts, not the object"
- result=Blender.Draw.PupMenu("Object is rotated-You should rotate the mesh verts, not the object%t|Fix rotation (will not work with animations!)|Do not rotate")
- if result==1:
- object.setEuler([0.0,0.0,0.0])
#get access to the mesh data
mesh=object.getData(False, True) #get the object (not just name) and the Mesh, not NMesh
@@ -696,7 +676,8 @@ def validation(object):
result=Blender.Draw.PupMenu("Model has more than 1 texture map assigned%t|Quit")
#return False
if mesh_image:
- size=mesh_image.getSize()
+ try: size=mesh_image.getSize()
+ except: size= 256,256 # No image data
#is this really what the user wants
if (size[0]!=256 or size[1]!=256):
print "Texture map size is non-standard (not 256x256), it is: ",size[0],"x",size[1]
@@ -753,6 +734,8 @@ def fill_md2(md2, object):
#create the vertex list from the first frame
Blender.Set("curframe", 1)
+ has_uvs = mesh.faceUV
+
#header information
md2.ident=844121161
md2.version=8
@@ -761,9 +744,11 @@ def fill_md2(md2, object):
#get the skin information
#use the first faces' image for the texture information
- if mesh.faceUV:
+ if has_uvs:
mesh_image=mesh.faces[0].image
- size=mesh_image.getSize()
+ try: size=mesh_image.getSize()
+ except: size= 256,256
+
md2.skin_width=size[0]
md2.skin_height=size[1]
md2.num_skins=1
@@ -777,12 +762,14 @@ def fill_md2(md2, object):
#put texture information in the md2 structure
#build UV coord dictionary (prevents double entries-saves space)
+ if not has_uvs:
+ t=(0,0)
+
for face in mesh.faces:
for i in xrange(0,3):
- if mesh.faceUV:
+ if has_uvs:
t=(face.uv[i])
- else:
- t=(0,0)
+
tex_key=(t[0],t[1])
if not tex_list.has_key(tex_key):
tex_list[tex_key]=tex_count
@@ -798,16 +785,25 @@ def fill_md2(md2, object):
#put faces in the md2 structure
#for each face in the model
+
+ if not has_uvs:
+ uv_coords=[(0,0)]*3
+
for this_face in xrange(0, md2.num_faces):
md2.faces.append(md2_face())
+ mf = mesh.faces[this_face]
+ mf_v = mf.v
+ if has_uvs:
+ uv_coords = mf.uv
+
for i in xrange(0,3):
#blender uses indexed vertexes so this works very well
- md2.faces[this_face].vertex_index[i]=mesh.faces[this_face].verts[i].index
+ md2.faces[this_face].vertex_index[i] = mf_v[i].index
#lookup texture index in dictionary
- if mesh.faceUV:
- uv_coord=(mesh.faces[this_face].uv[i])
- else:
- uv_coord=(0,0)
+ if has_uvs:
+ uv_coord = uv_coords[i]
+ # otherwise we set it before
+
tex_key=(uv_coord[0],uv_coord[1])
tex_index=tex_list[tex_key]
md2.faces[this_face].texture_index[i]=tex_index
@@ -837,13 +833,18 @@ def fill_md2(md2, object):
for frame_counter in xrange(0,md2.num_frames):
progress+=progressIncrement
- Blender.Window.DrawProgressBar(progress, "Calculating Frame: "+str(frame_counter))
+ Blender.Window.DrawProgressBar(progress, "Calculating Frame: %d of %d" % (frame_counter, md2.num_frames))
#add a frame
md2.frames.append(md2_frame())
#update the mesh objects vertex positions for the animation
Blender.Set("curframe", frame_counter) #set blender to the correct frame
- mesh.getFromObject(object.name) #update the mesh to make verts current
+
+
+
+
+ mesh.getFromObject(object) #update the mesh to make verts current
+ mesh.transform(object.matrixWorld)
#each frame has a scale and transform value that gets the vertex value between 0-255
#since the scale and transform are the same for the all the verts in the frame, we only need
@@ -862,13 +863,14 @@ def fill_md2(md2, object):
frame_max_z=-100000.0
for face in mesh.faces:
- for vert in face.verts:
- if frame_min_x>vert.co[1]: frame_min_x=vert.co[1]
- if frame_max_x<vert.co[1]: frame_max_x=vert.co[1]
- if frame_min_y>vert.co[0]: frame_min_y=vert.co[0]
- if frame_max_y<vert.co[0]: frame_max_y=vert.co[0]
- if frame_min_z>vert.co[2]: frame_min_z=vert.co[2]
- if frame_max_z<vert.co[2]: frame_max_z=vert.co[2]
+ for vert in face:
+ co = vert.co
+ if frame_min_x>co[1]: frame_min_x=co[1]
+ if frame_max_x<co[1]: frame_max_x=co[1]
+ if frame_min_y>co[0]: frame_min_y=co[0]
+ if frame_max_y<co[0]: frame_max_y=co[0]
+ if frame_min_z>co[2]: frame_min_z=co[2]
+ if frame_max_z<co[2]: frame_max_z=co[2]
#the scale is the difference between the min and max (on that axis) / 255
frame_scale_x=(frame_max_x-frame_min_x)/255
@@ -896,9 +898,10 @@ def fill_md2(md2, object):
#then translates the point so it's not less than 0
#then scale it so it's between 0..255
#print "frame scale : ", frame_scale_x, " ", frame_scale_y, " ", frame_scale_z
- new_x=int((mesh.verts[vert_counter].co[1]-frame_trans_x)/frame_scale_x)
- new_y=int((mesh.verts[vert_counter].co[0]-frame_trans_y)/frame_scale_y)
- new_z=int((mesh.verts[vert_counter].co[2]-frame_trans_z)/frame_scale_z)
+ co = mesh.verts[vert_counter].co
+ new_x=int((co[1]-frame_trans_x)/frame_scale_x)
+ new_y=int((co[0]-frame_trans_y)/frame_scale_y)
+ new_z=int((co[2]-frame_trans_z)/frame_scale_z)
#put them in the structure
md2.frames[frame_counter].vertices[vert_counter].vertices=(new_x, new_y, new_z)
@@ -908,14 +911,14 @@ def fill_md2(md2, object):
#swap y and x for difference in axis orientation
- x1=-mesh.verts[vert_counter].no[1]
- y1=mesh.verts[vert_counter].no[0]
- z1=mesh.verts[vert_counter].no[2]
+ no = mesh.verts[vert_counter].no
+ x1= -no[1]
+ y1= no[0]
+ z1= no[2]
+
for j in xrange(0,162):
#dot = (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
- dot = (x1*MD2_NORMALS[j][0]+
- y1*MD2_NORMALS[j][1]+
- z1*MD2_NORMALS[j][2]);
+ dot = (x1*MD2_NORMALS[j][0] + y1*MD2_NORMALS[j][1]+ z1*MD2_NORMALS[j][2]);
if (dot > maxdot):
maxdot = dot;
maxdotindex = j;
diff --git a/release/scripts/mesh_mirror_tool.py b/release/scripts/mesh_mirror_tool.py
index 33ce6936c7f..8e22e26cd53 100644
--- a/release/scripts/mesh_mirror_tool.py
+++ b/release/scripts/mesh_mirror_tool.py
@@ -3,7 +3,7 @@
Name: 'Mirror Vertex Locations & Weight'
Blender: 241
Group: 'Mesh'
-Tooltip: 'Snap Verticies to X mirrord locations and weights.'
+Tooltip: 'Snap Verticies to X mirrored locations and weights.'
"""
__author__ = "Campbell Barton aka ideasman42"
@@ -11,11 +11,11 @@ __url__ = ["www.blender.org", "blenderartists.org", "www.python.org"]
__version__= '1.0'
__bpydoc__= '''\
This script is used to mirror vertex locations and weights
-It is usefull if you have a model that was made symetrical
+It is useful if you have a model that was made symmetrical
but has verts that have moved from their mirrored locations slightly,
-casuing blenders X-Mirror options not to work.
+causing blenders X-Mirror options not to work.
-Weights can be mirrored too, this is usefull if you want to model 1 side of a mesh, copy the mesh and flip it.
+Weights can be mirrored too, this is useful if you want to model 1 side of a mesh, copy the mesh and flip it.
You can then use this script to mirror to the copy, even creating new flipped vertex groups, renaming group name left to right or .L to .R
Vertex positions are mirrored by doing a locational lookup,
diff --git a/release/scripts/mesh_poly_reduce_grid.py b/release/scripts/mesh_poly_reduce_grid.py
index 3741a47723a..2903909027a 100644
--- a/release/scripts/mesh_poly_reduce_grid.py
+++ b/release/scripts/mesh_poly_reduce_grid.py
@@ -3,7 +3,7 @@
Name: 'Poly Reduce Selection (Unsubsurf)'
Blender: 245
Group: 'Mesh'
-Tooltip: 'pradictable mesh simplifaction maintaining face loops'
+Tooltip: 'predictable mesh simplifaction maintaining face loops'
"""
from Blender import Scene, Mesh, Window, sys
@@ -50,7 +50,7 @@ def my_mesh_util(me):
for edkey, count in edge_count.iteritems():
- # Ignore verts that connect to edges with more then 2 faces.
+ # Ignore verts that connect to edges with more than 2 faces.
if count != 2:
vert_faces[edkey[0]] = None
vert_faces[edkey[1]] = None
diff --git a/release/scripts/mesh_skin.py b/release/scripts/mesh_skin.py
index a554e128b41..4a330a516fb 100644
--- a/release/scripts/mesh_skin.py
+++ b/release/scripts/mesh_skin.py
@@ -52,7 +52,7 @@ A pop-up will provide further options, if the results of a method are not adequa
import Blender
import bpy
from Blender import Window
-from Blender.Mathutils import MidpointVecs, Vector, CrossVecs
+from Blender.Mathutils import MidpointVecs, Vector
from Blender.Mathutils import AngleBetweenVecs as _AngleBetweenVecs_
import BPyMessages
@@ -119,7 +119,7 @@ class edgeLoop(object):
# GENERATE AN AVERAGE NORMAL FOR THE WHOLE LOOP.
self.normal = Vector()
for e in self.edges:
- n = CrossVecs(self.centre-e.co1, self.centre-e.co2)
+ n = (self.centre-e.co1).cross(self.centre-e.co2)
# Do we realy need tot normalize?
n.normalize()
self.normal += n
@@ -149,7 +149,7 @@ class edgeLoop(object):
a = n1-n2
b = n1-n3
- normal1 = CrossVecs(a,b)
+ normal1 = a.cross(b)
normal1.normalize()
n1 = e.co2
@@ -159,7 +159,7 @@ class edgeLoop(object):
a = n1-n2
b = n1-n3
- normal2 = CrossVecs(a,b)
+ normal2 = a.cross(b)
normal2.normalize()
# Reuse normal1 var
diff --git a/release/scripts/mesh_unfolder.py b/release/scripts/mesh_unfolder.py
index 906e0f0a300..f5c19a92bd0 100644
--- a/release/scripts/mesh_unfolder.py
+++ b/release/scripts/mesh_unfolder.py
@@ -164,8 +164,8 @@ class Fold:
sangle = Mathutils.AngleBetweenVecs(self.refPolyNormal, self.polyNormal)
if(sangle!=sangle):
sangle=0.0
- ncp = Mathutils.CrossVecs(self.refPolyNormal, self.polyNormal)
- dp = Mathutils.DotVecs(ncp, self.edge.vector)
+ ncp = self.refPolyNormal.cross(self.polyNormal)
+ dp = ncp.dot(self.edge.vector)
if(dp>0.0):
return +sangle
else:
@@ -855,7 +855,7 @@ class Poly:
p.resize3D()
q = a-c
q.resize3D()
- return CrossVecs(p,q)
+ return p.cross(q)
def makeEdges(self):
self.edges = []
for i in xrange(self.nPoints()):
diff --git a/release/scripts/object_active_to_other.py b/release/scripts/object_active_to_other.py
new file mode 100644
index 00000000000..131d1f63d74
--- /dev/null
+++ b/release/scripts/object_active_to_other.py
@@ -0,0 +1,58 @@
+#!BPY
+"""
+Name: 'Copy Active to Selected'
+Blender: 249
+Group: 'Object'
+Tooltip: 'For every selected object, copy the active to their loc/size/rot'
+"""
+
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# Script copyright (C) Campbell Barton
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+# --------------------------------------------------------------------------
+
+
+from Blender import Window, sys, Draw
+import bpy
+
+def my_object_util(sce):
+ ob_act = sce.objects.active
+
+ if not ob_act:
+ Draw.PupMenu('Error%t|No active object selected')
+ return
+
+ mats = [ob.matrixWorld for ob in sce.objects.context if ob != ob_act]
+
+ for m in mats:
+ ob_copy = ob_act.copy()
+ sce.objects.link(ob_copy)
+ ob_copy.setMatrix(m)
+ ob_copy.Layers = ob.Layers
+
+
+def main():
+ sce = bpy.data.scenes.active
+
+ Window.WaitCursor(1)
+ my_object_util(sce)
+ Window.WaitCursor(0)
+
+if __name__ == '__main__':
+ main()
diff --git a/release/scripts/object_cookie_cutter.py b/release/scripts/object_cookie_cutter.py
index 2a6e0ad6b2e..4950c18c0f4 100644
--- a/release/scripts/object_cookie_cutter.py
+++ b/release/scripts/object_cookie_cutter.py
@@ -10,7 +10,7 @@ __url__= ["blender", "blenderartist"]
__version__= "1.0"
__bpydoc__= """\
-This script takes the selected mesh objects, devides them into 2 groups
+This script takes the selected mesh objects, divides them into 2 groups
Cutters and The objects to be cut.
Cutters are meshes with no faces, just edge loops. and any meshes with faces will be cut.
@@ -128,14 +128,14 @@ def sorted_indicies(i1, i2):
def fake_length2d(pt1, pt2):
'''
- Only used for comparison so dont sqrt
+ Only used for comparison so don't sqrt
'''
#return math.sqrt(abs(pow(x1-x2, 2)+ pow(y1-y2, 2)))
return pow(pt1[0]-pt2[0], 2) + pow(pt1[1]- pt2[1], 2)
def length2d(pt1, pt2):
'''
- Only used for comparison so dont sqrt
+ Only used for comparison so don't sqrt
'''
#return math.sqrt(abs(pow(x1-x2, 2)+ pow(y1-y2, 2)))
return sqrt(pow(pt1[0]-pt2[0], 2) + pow(pt1[1]- pt2[1], 2))
@@ -150,7 +150,7 @@ def tri_area_2d(v1, v2, v3):
return 0.25 * sqrt(abs(p*(p-2*e1)*(p-2*e2)*(p-2*e3)))
def tri_pt_find_z_2d(pt, tri):
- """ Takes a face and 3d vector and assigns teh vectors Z to its on the face"""
+ """ Takes a face and 3d vector and assigns the vectors Z to its on the face"""
l1= tri_area_2d(tri[1], tri[2], pt)
l2= tri_area_2d(tri[0], tri[2], pt)
@@ -170,7 +170,7 @@ def tri_pt_find_z_2d(pt, tri):
def tri_pt_find_uv_2d(pt, tri, uvs):
- """ Takes a face and 3d vector and assigns teh vectors Z to its on the face"""
+ """ Takes a face and 3d vector and assigns the vectors Z to its on the face"""
l1= tri_area_2d(tri[1], tri[2], pt)
l2= tri_area_2d(tri[0], tri[2], pt)
@@ -288,12 +288,12 @@ def terrain_cut_2d(t, c, PREF_Z_LOC):
# Loop through the cutter edges.
for ei_c, ed_c in enumerate(me_c.edges):
# If the cutter edge has 2 verts inside the same face then we can ignore it
- # Bothe are different faces or None
+ # Both are different faces or None
if cut_vert_terrain_faces[ed_c.v1.index] != cut_vert_terrain_faces[ed_c.v2.index] or\
cut_vert_terrain_faces[ed_c.v1.index] == cut_vert_terrain_faces[ed_c.v2.index] == None:
eb_c= c.edge_bounds[ei_c]
if bounds_intersect(eb_t, eb_c): # face/edge bounds intersect?
- # Now we know the 2 edges might intersect, we'll do a propper test
+ # Now we know the 2 edges might intersect, we'll do a proper test
x= LineIntersect2D(ed_t.v1.co, ed_t.v2.co, ed_c.v1.co, ed_c.v2.co)
if x:
@@ -340,7 +340,7 @@ def terrain_cut_2d(t, c, PREF_Z_LOC):
for f in faces:
faces_intersecting.setdefault(f.index, []).append(ed_isect)
- # this list is used to store edges that are totaly inside a face ( no intersections with terrain)
+ # this list is used to store edges that are totally inside a face ( no intersections with terrain)
# we can remove these as we
face_containing_edges= [[] for i in xrange(len(me_t.faces))]
for ed_c in me_c.edges:
@@ -412,8 +412,8 @@ def terrain_cut_2d(t, c, PREF_Z_LOC):
- # edges that dont have a vert in the face have to span between to intersection points
- # since we dont know the other point at any 1 time we need to remember edges that
+ # edges that don't have a vert in the face have to span between to intersection points
+ # since we don't know the other point at any 1 time we need to remember edges that
# span a face and add them once we'v collected both
# first add outline edges
edge_span_face= {}
@@ -507,7 +507,7 @@ def terrain_cut_2d(t, c, PREF_Z_LOC):
# 0,2,3
f_uv_mod= f_uv[0], f_uv[2], f_uv[3]
f_vco_mod= f_vco[0], f_vco[2], f_vco[3]
- # else - side of 0,1,2 - dont modify the quad
+ # else - side of 0,1,2 - don't modify the quad
uvs[i]= tri_pt_find_uv_2d(v_co, f_vco_mod, f_uv_mod)
@@ -579,7 +579,7 @@ def main():
for ob in obs:
if ob.type == 'Mesh':
me= ob.getData(mesh=1)
- elif ob.data.flag & 1: # Is the curve 3D? else dont use.
+ elif ob.data.flag & 1: # Is the curve 3D? else don't use.
me= BPyMesh.getMeshFromObject(ob) # get the curve
else:
continue
diff --git a/release/scripts/object_drop.py b/release/scripts/object_drop.py
index f4803e62d98..19cc1f8d15a 100644
--- a/release/scripts/object_drop.py
+++ b/release/scripts/object_drop.py
@@ -1,13 +1,13 @@
#!BPY
"""
Name: 'Drop Onto Ground'
-Blender: 245
+Blender: 249
Group: 'Object'
Tooltip: 'Drop the selected objects onto "ground" objects'
"""
__author__= "Campbell Barton"
__url__= ["blender.org", "blenderartists.org"]
-__version__= "1.0"
+__version__= "1.1"
__bpydoc__= """
"""
@@ -36,6 +36,7 @@ __bpydoc__= """
from Blender import Draw, Geometry, Mathutils, Window
+from Blender.Mathutils import Vector, AngleBetweenVecs, RotationMatrix
import bpy
@@ -44,6 +45,8 @@ GLOBALS['GROUND_SOURCE'] = [Draw.Create(1), Draw.Create(0)]
GLOBALS['GROUND_GROUP_NAME'] = Draw.Create('terrain')
GLOBALS['DROP_AXIS'] = [Draw.Create(1), Draw.Create(0)] # on what axis will we drop?
GLOBALS['DROP_OVERLAP_CHECK'] = Draw.Create(1) # is the terrain a single skin?
+GLOBALS['DROP_ORIENT'] = Draw.Create(1)
+GLOBALS['DROP_ORIENT_VALUE'] = Draw.Create(100.0)
GLOBALS['EVENT'] = 2
GLOBALS['MOUSE'] = None
@@ -52,19 +55,18 @@ def collect_terrain_triangles(obs_terrain):
me = bpy.data.meshes.new()
for ob in obs_terrain:
- # this matrix takes the object and drop matrix into account
- ob_mat = ob.matrixWorld # * drop_matrix
-
def blend_face_to_terrain_tris(f):
- cos = [v.co*ob_mat for v in f]
- if len(cos) == 4: return [(cos[0], cos[1], cos[2]), (cos[0], cos[2], cos[3])]
- else: return [(cos[0], cos[1], cos[2]), ]
+ no = f.no
+ cos = [v.co for v in f]
+ if len(cos) == 4: return [(cos[0], cos[1], cos[2], no), (cos[0], cos[2], cos[3], no)]
+ else: return [(cos[0], cos[1], cos[2], no), ]
# Clear
me.verts = None
try: me.getFromObject(ob)
except: pass
+ me.transform(ob.matrixWorld)
for f in me.faces: # may be [], thats ok
terrain_tris.extend( blend_face_to_terrain_tris(f) )
@@ -72,30 +74,34 @@ def collect_terrain_triangles(obs_terrain):
return terrain_tris
def calc_drop_loc(ob, terrain_tris, axis):
- pt = Mathutils.Vector(ob.loc)
+ pt = Vector(ob.loc)
isect = None
isect_best = None
+ isect_best_no = None
isect_best_len = 0.0
- for t1,t2,t3 in terrain_tris:
+ for t1,t2,t3, no in terrain_tris:
#if Geometry.PointInTriangle2D(pt, t1,t2,t3):
isect = Mathutils.Intersect(t1, t2, t3, axis, pt, 1) # 1==clip
if isect:
if not GLOBALS['DROP_OVERLAP_CHECK'].val:
# Find the first location
- return isect
+ return isect, no
else:
if isect_best:
isect_len = (pt-isect).length
if isect_len < isect_best_len:
isect_best_len = isect_len
isect_best = isect
+ isect_best_no = no
else:
isect_best_len = (pt-isect).length
isect_best = isect;
- return isect_best
+ isect_best_no = no
+
+ return isect_best, isect_best_no
def error_nogroup():
@@ -135,13 +141,28 @@ def terrain_clamp(event, value):
if GLOBALS['DROP_AXIS'][0].val:
- axis = Mathutils.Vector(0,0,-1)
+ axis = Vector(0,0,-1)
else:
- axis = Mathutils.Vector(Window.GetViewVector())
+ axis = Vector(Window.GetViewVector())
+
+ do_orient = GLOBALS['DROP_ORIENT'].val
+ do_orient_val = GLOBALS['DROP_ORIENT_VALUE'].val/100.0
+ if not do_orient_val: do_orient = False
for ob in obs_clamp:
- loc = calc_drop_loc(ob, terrain_tris, axis)
+ loc, no = calc_drop_loc(ob, terrain_tris, axis)
if loc:
+ if do_orient:
+ try: ang = AngleBetweenVecs(no, axis)
+ except:ang = 0.0
+ if ang > 90.0:
+ no = -no
+ ang = 180.0-ang
+
+ if ang > 0.0001:
+ ob_matrix = ob.matrixWorld * RotationMatrix(ang * do_orient_val, 4, 'r', axis.cross(no))
+ ob.setMatrix(ob_matrix)
+
ob.loc = loc
# to make the while loop exist
@@ -175,7 +196,8 @@ def do_ground_group_name(e,v):
if not g: error_nogroup()
GLOBALS['EVENT'] = e
-
+def do_dummy(e,v):
+ GLOBALS['EVENT'] = e
EVENT_NONE = 0
EVENT_EXIT = 1
@@ -185,7 +207,7 @@ def terain_clamp_ui():
# Only to center the UI
x,y = GLOBALS['MOUSE']
x-=40
- y-=60
+ y-=70
Draw.Label('Drop Axis', x-70,y+120, 60, 20)
Draw.BeginAlign()
@@ -204,7 +226,13 @@ def terain_clamp_ui():
GLOBALS['DROP_OVERLAP_CHECK'] = Draw.Toggle('Overlapping Terrain', EVENT_NONE, x-70, y+20, 190, 20, GLOBALS['DROP_OVERLAP_CHECK'].val, "Check all terrain triangles and use the top most (slow)")
- Draw.PushButton('Drop Objects', EVENT_EXIT, x+20, y-10, 100, 20, 'Drop the selected objects', terrain_clamp)
+ Draw.BeginAlign()
+ GLOBALS['DROP_ORIENT'] = Draw.Toggle('Orient Normal', EVENT_REDRAW, x-70, y-10, 110, 20, GLOBALS['DROP_ORIENT'].val, "Rotate objects to the face normal", do_dummy)
+ if GLOBALS['DROP_ORIENT'].val:
+ GLOBALS['DROP_ORIENT_VALUE'] = Draw.Number('', EVENT_NONE, x+40, y-10, 80, 20, GLOBALS['DROP_ORIENT_VALUE'].val, 0.0, 100.0, "Percentage to orient 0.0 - 100.0")
+ Draw.EndAlign()
+
+ Draw.PushButton('Drop Objects', EVENT_EXIT, x+20, y-40, 100, 20, 'Drop the selected objects', terrain_clamp)
# So moving the mouse outside the popup exits the while loop
GLOBALS['EVENT'] = EVENT_EXIT
diff --git a/release/scripts/ply_import.py b/release/scripts/ply_import.py
index 43129ec01e9..29e8ce48361 100644
--- a/release/scripts/ply_import.py
+++ b/release/scripts/ply_import.py
@@ -149,6 +149,7 @@ def read(filename):
'uint8': 'B',
'int16': 'h',
'uint16': 'H',
+ 'ushort': 'H',
'int': 'i',
'int32': 'i',
'uint': 'I',
@@ -156,6 +157,7 @@ def read(filename):
'float': 'f',
'float32': 'f',
'float64': 'd',
+ 'double': 'd',
'string': 's'}
obj_spec = object_spec()
diff --git a/release/scripts/rvk1_torvk2.py b/release/scripts/rvk1_torvk2.py
index a48d065813a..d013343c05c 100644
--- a/release/scripts/rvk1_torvk2.py
+++ b/release/scripts/rvk1_torvk2.py
@@ -2,7 +2,7 @@
# coding: utf-8
""" Registration info for Blender menus: <- these words are ignored
Name: 'Deformed mesh to Rvk'
-Blender: 243
+Blender: 248
Group: 'Mesh'
Tip: 'Copy deform data (not surf. subdiv) of active obj to rvk of the 2nd selected obj'
"""
@@ -11,21 +11,24 @@ __author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "blenderartists.org",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_rvk1versrvk2.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
-__version__ = "2007/04/27"
+__version__ = "2009/05/18"
__bpydoc__ = """\
-"DEFORM to RVK2" copies deform data (except EDGESPLIT,DECIMATE,SUBSURF,BOOLEAN,
-BUILD,MIRROR,ARRAY) of the active object to the RVK (relative vertex key) of
-the other selected object.
+"DEFORM to RVK2" copies deformed data (except all data with not exactly
+the same number of vertices like EDGESPLIT,DECIMATE,SUBSURF, BOOLEAN,
+BUILD, MIRROR, ARRAY) of the active object to the RVK (relative vertex
+key, now called Shapes key) of the other selected object.
It is presupposed that the second mesh object is built exactly like the first
one. In fact, it is better to use a true copy with at least one basic shape
-key.
+key. If there is no other object selected, the script can create a copy.
The new version of this scrit (Blender 2.43) manages the modifier changes.
There are a lot of modifiers but only the ones which just deforms the shape
-can be used : LATTICE, CURVE, WAVE, ARMATURE. You can unset these modifiers
-from the script.
+can be used : LATTICE, CURVE, WAVE, ARMATURE, CAST, DISPLACE, SMOOTH.
+SIMPLEDEFORM and SHRINKWRAP are not correctly seen before Blender 2.49, but
+they can be copied too. You can unset one or more of these modifiers from
+the script.
Usage:
@@ -37,9 +40,9 @@ the rvk it will also ask whether it should replace or add a new vertex group.
"""
-
#----------------------------------------------
-# jm soler (c) 2004-2007 : 'Deformed mesh to Rvk' released under GPL licence
+# jm soler (c) 2004-2009 : 'Deformed mesh to Rvk'
+# released under GPL licence
#----------------------------------------------
"""
Ce programme est libre, vous pouvez le redistribuer et/ou
@@ -72,11 +75,6 @@ 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 St, Fifth Floor, Boston, MA 02110-1301 USA
"""
-# Copy the rvk (1, or armature, lattice, or
-# any mesh deformation except surface
-# sbdivision) of the active object to rvk (2) of
-# the second selected object. Create rvk or modify
-# absolute key if needed.
#----------------------------------------------
# official Page :
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_rvk1versrvk2.htm
@@ -90,7 +88,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Communiquer les problemes et erreurs sur:
# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender
#---------------------------------------------
-#---------------------------------------------
import Blender
from Blender import NMesh,Draw,Object,Modifier
@@ -99,175 +96,246 @@ DEBUG=0
def Value(t):
exec "t=Modifier.Types.%s"%t
- return t
+ return t
-def deform2rvk():
+def copy_shapes(RVK1,RVK2):
POSSMOD_list=['EDGESPLIT',
- 'DECIMATE',
- 'SUBSURF',
- 'BOOLEAN',
- 'BUILD',
- 'MIRROR',
- 'ARRAY']
+ 'DECIMATE',
+ 'SUBSURF',
+ 'BOOLEAN',
+ 'BUILD',
+ 'MIRROR',
+ 'ARRAY',
+ 'BEVEL',
+ 'EXPLODE']
AUTHMOD_list=['LATTICE',
- 'CURVE',
- 'WAVE',
- 'ARMATURE']
-
- MODIFIERS=0
+ 'CURVE',
+ 'WAVE',
+ 'ARMATURE',
+ 'SMOOTH',
+ 'SIMPLEDEFORM',
+ 'SHRINKWRAP',
+ 'CAST',
+ 'DISPLACE',
+ 'MESHDEFORM']
+
BMOD=[['Possible Modifiers'],
- ['Allowed Modifiers']]
-
- # =================================================================
- # at leat 2 objects ===============================================
- # =================================================================
- if len(Object.GetSelected())>1 :
- RVK1=Object.GetSelected()[0]
- RVK2=Object.GetSelected()[1]
- # =============================================================
- # must be 2 meshes ============================================
- # =============================================================
- if RVK1.getType()=='Mesh' and RVK2.getType()=='Mesh':
- FRAME=Blender.Get('curframe')
+ ['Allowed Modifiers']]
+ # =============================================================
+ # must be 2 meshes ============================================
+ # =============================================================
+ if RVK1.getType()=='Mesh' and RVK2.getType()=='Mesh':
+ #MODIFIERS=0
+ FRAME=Blender.Get('curframe')
+ DATA2=RVK2.getData()
+ if DEBUG: print DATA2.getKey()
+ # ============================================================
+ # at least the second must have a shape key ==================
+ # ============================================================
+ def select_modifier(RVK1, RVK2, DATA2):
+ # ======================================================
+ # in case of modifiers, use =============================
+ # ======================================================
+ if RVK1.modifiers:
+ #MODIFIERS=1
+ POSSMOD=[Value(t) for t in POSSMOD_list]
+ AUTHMOD=[Value(t) for t in AUTHMOD_list]
+ if DEBUG: print 'POSSMOD:',POSSMOD,'\nAUTHMOD:', AUTHMOD
+ MODRVK1=RVK1.modifiers
+ block = []
+ # ===================================================
+ # === Bloc Menu Modifiers ===1 doc =================
+ # ===================================================
+ m=0
+ for mod in MODRVK1:
+ if DEBUG: print mod.type
+ if mod.type in POSSMOD:
+ BMOD[0].append([Draw.Create(0),mod.type,
+ m,
+ POSSMOD_list[POSSMOD.index(mod.type)],
+ mod[Modifier.Settings.RENDER]==1,
+ mod[Modifier.Settings.EDITMODE]==1
+ ])
+ elif mod.type in AUTHMOD:
+ BMOD[1].append([Draw.Create(1),
+ mod.type,
+ m,
+ AUTHMOD_list[AUTHMOD.index(mod.type)],
+ mod[Modifier.Settings.RENDER]==1,
+ mod[Modifier.Settings.EDITMODE]==1
+ ])
+ m+=1
+ # ===================================================
+ # === Bloc Menu Modifiers ===2 display =============
+ # ===================================================
+ block.append(BMOD[1][0])
+ for B in BMOD[1][1:]:
+ block.append((B[3],B[0],""))
+ block.append(BMOD[0][0])
+ block.append("not alredy implemented")
+ block.append("in this script.")
+ for B in BMOD[0][1:]:
+ block.append((B[3],B[0],""))
+ retval = Blender.Draw.PupBlock("MESH 2 RVK", block)
+ # ===================================================
+ # === unset Modifiers =============================
+ # ===================================================
+ for B in BMOD[0][1:]:
+ if DEBUG: print B[2]
+ MODRVK1[B[2]][Modifier.Settings.RENDER]=0
+ for B in BMOD[1]:
+ if not B[1]:
+ MODRVK1[B[2]][Modifier.Settings.RENDER]=0
+ # ===================================================
+ # === update Modifiers =============================
+ # ===================================================
+ #RVK1.makeDisplayList()
+ # =======================================================
+ # === get deformed mesh ================================
+ # =======================================================
+ RVK1NAME=Object.GetSelected()[0].getName()
+ meshrvk1=NMesh.GetRawFromObject(RVK1NAME)
+ if DEBUG: print len(meshrvk1.verts)
+ # =======================================================
+ # === get normal mesh for vertex group =================
+ # =======================================================
+ DATA1=RVK1.getData()
+ # =======================================================
+ # === get destination mesh ============================
+ # =======================================================
DATA2=RVK2.getData()
- if DEBUG: print DATA2.getKey()
- # ============================================================
- # at least the second must have a shape key ==================
- # ============================================================
- if DATA2.getKey():
- # ======================================================
- # in case of modifiers use =============================
- # ======================================================
+ if DEBUG: print len(meshrvk1.verts)
+ if DEBUG: print len(DATA2.verts)
+ # ========================================================
+ # ===== is there the same number of vertices =============
+ # ========================================================
+ if len(meshrvk1.verts)==len(DATA2.verts):
+ name = "Do you want to replace or add vertex groups ? %t| YES %x1| NO ? %x2 "
+ result = Draw.PupMenu(name)
+ if result==1:
+ # =====================================================
+ # ===== Do we save vertex groups ? ===================
+ # =====================================================
+ GROUPNAME2=DATA2.getVertGroupNames()
+ if len(GROUPNAME2)!=0:
+ for GROUP2 in GROUPNAME2:
+ DATA2.removeVertGroup(GROUP2)
+ GROUPNAME1=DATA1.getVertGroupNames()
+ if len(GROUPNAME1)!=0:
+ for GROUP1 in GROUPNAME1:
+ DATA2.addVertGroup(GROUP1)
+ DATA2.assignVertsToGroup(GROUP1,DATA1.getVertsFromGroup(GROUP1),1.0,'replace')
+ # ========================================================
+ # ===== now copy the vertices coords =====================
+ # ========================================================
+ for v in meshrvk1.verts:
+ i= meshrvk1.verts.index(v)
+ v1=DATA2.verts[i]
+ for n in [0,1,2]:
+ v1.co[n]=v.co[n]
+ DATA2.update()
+ DATA2.insertKey(FRAME,'relative')
+ DATA2.update()
+ RVK2.makeDisplayList()
+
if RVK1.modifiers:
- MODIFIERS=1
- POSSMOD=[Value(t) for t in POSSMOD_list]
- AUTHMOD=[Value(t) for t in AUTHMOD_list]
- if DEBUG: print 'POSSMOD:',POSSMOD,'\nAUTHMOD:', AUTHMOD
- MODRVK1=RVK1.modifiers
- block = []
- # ===================================================
- # === Bloc Menu Modifiers ===1 doc =================
- # ===================================================
- m=0
- for mod in MODRVK1:
- if DEBUG: print mod.type
- if mod.type in POSSMOD:
- BMOD[0].append([Draw.Create(0),mod.type,
- m,
- POSSMOD_list[POSSMOD.index(mod.type)],
- mod[Modifier.Settings.RENDER]==1,
- mod[Modifier.Settings.EDITMODE]==1
- ])
- elif mod.type in AUTHMOD:
- BMOD[1].append([Draw.Create(1),
- mod.type,
- m,
- AUTHMOD_list[AUTHMOD.index(mod.type)],
- mod[Modifier.Settings.RENDER]==1,
- mod[Modifier.Settings.EDITMODE]==1
- ])
- m+=1
- # ===================================================
- # === Bloc Menu Modifiers ===2 display =============
- # ===================================================
- block.append(BMOD[1][0])
- for B in BMOD[1][1:]:
- block.append((B[3],B[0],""))
- block.append(BMOD[0][0])
- block.append("not alredy implemented")
- block.append("in this script.")
- for B in BMOD[0][1:]:
- block.append((B[3],B[0],""))
- retval = Blender.Draw.PupBlock("MESH 2 RVK", block)
# ===================================================
# === unset Modifiers =============================
# ===================================================
for B in BMOD[0][1:]:
- if DEBUG: print B[2]
- MODRVK1[B[2]][Modifier.Settings.RENDER]=0
+ MODRVK1[B[2]][Modifier.Settings.RENDER]|=B[-2]
for B in BMOD[1]:
if not B[1]:
- MODRVK1[B[2]][Modifier.Settings.RENDER]=0
- # ===================================================
- # === update Modifiers =============================
- # ===================================================
- #RVK1.makeDisplayList()
- # =======================================================
- # === get deformed mesh ================================
- # =======================================================
- RVK1NAME=Object.GetSelected()[0].getName()
- meshrvk1=NMesh.GetRawFromObject(RVK1NAME)
- if DEBUG: print len(meshrvk1.verts)
- # =======================================================
- # === get normal mesh for vertex group =================
- # =======================================================
- DATA1=RVK1.getData()
- # =======================================================
- # === get destination mesh ============================
- # =======================================================
- DATA2=RVK2.getData()
- if DEBUG: print len(meshrvk1.verts)
- if DEBUG: print len(DATA2.verts)
- # ========================================================
- # ===== is there the same number of vertices =============
- # ========================================================
- if len(meshrvk1.verts)==len(DATA2.verts):
- name = "Do you want to replace or add vertex groups ? %t| YES %x1| NO ? %x2 "
- result = Draw.PupMenu(name)
- if result==1:
- # =====================================================
- # ===== Do we save vertex groups ? ===================
- # =====================================================
- GROUPNAME2=DATA2.getVertGroupNames()
- if len(GROUPNAME2)!=0:
- for GROUP2 in GROUPNAME2:
- DATA2.removeVertGroup(GROUP2)
- GROUPNAME1=DATA1.getVertGroupNames()
- if len(GROUPNAME1)!=0:
- for GROUP1 in GROUPNAME1:
- DATA2.addVertGroup(GROUP1)
- DATA2.assignVertsToGroup(GROUP1,DATA1.getVertsFromGroup(GROUP1),1.0,'replace')
- # ========================================================
- # ===== now copy the vertices coords =====================
- # ========================================================
- for v in meshrvk1.verts:
- i= meshrvk1.verts.index(v)
- v1=DATA2.verts[i]
- for n in [0,1,2]:
- v1.co[n]=v.co[n]
- DATA2.update()
- DATA2.insertKey(FRAME,'relative')
- DATA2.update()
- RVK2.makeDisplayList()
- if MODIFIERS:
- # ===================================================
- # === unset Modifiers =============================
- # ===================================================
- for B in BMOD[0][1:]:
MODRVK1[B[2]][Modifier.Settings.RENDER]|=B[-2]
- for B in BMOD[1]:
- if not B[1]:
- MODRVK1[B[2]][Modifier.Settings.RENDER]|=B[-2]
- else:
- name = "Meshes Objects must the same number of vertices %t| Ok. %x1"
- result = Draw.PupMenu(name)
- return
+
else:
- name = "Second Object must have at least a shape key %t| Ok. %x1"
+ name = "Meshes Objects must have the same number of vertices %t|Ok. %x1"
result = Draw.PupMenu(name)
- return
+ return
+ if DATA2.getKey():
+ select_modifier(RVK1, RVK2, DATA2)
else:
- name = "Object must be Meshes %t| Ok. %x1"
+ name = "Second Object must have at least a shape key %t| Ok. %x1| Add one ? %x2"
result = Draw.PupMenu(name)
+ if result :
+ RVK2.insertShapeKey()
+ DATA2=RVK2.getData()
+ select_modifier(RVK1, RVK2, DATA2)
+ else:
+ return
+ else:
+ name = "Object must be Meshes %t| Ok. %x1"
+ result = Draw.PupMenu(name)
+ return
+
+def deform2rvk():
+ scn = Blender.Scene.GetCurrent()
+ # =================================================================
+ # at leat 2 objects ===============================================
+ # =================================================================
+ if len(scn.objects.selected) >1 :
+ RVK1 = Object.GetSelected()[0]
+ RVK2=Object.GetSelected()[1]
+ if RVK2.getType()=='Mesh' :
+ copy_shapes(RVK1,RVK2)
+ # =================================================================
+ # ... but if only one...===========================================
+ # =================================================================
+ elif len(scn.objects.selected)==1:
+ name = "At least 2 Meshes must be selected %t| Ok. %x1| Add one ? %x2"
+ result = Draw.PupMenu(name)
+ RVK1 = Object.GetSelected()[0]
+ if result and RVK1.getType()=='Mesh' :
+ Blender.Object.Duplicate(mesh=1)
+ RVK2=scn.objects.active
+ mod = RVK2.modifiers
+ for m in mod :
+ RVK2.modifiers.remove(m)
+ RVK2.LocX+=2.0
+ copy_shapes(RVK1,RVK2)
+ scn.objects.selected=[]
+ RVK2.sel=1
+ RVK1.sel=1
+ # ================================================================
+ # ... and not a mesh...===========================================
+ # ================================================================
+ elif result:
+ name = "Selected object must be a mesh %t| Ok. %x1"
+ result = Draw.PupMenu(name)
+ return
+ else :
return
- else :
- name = "At least 2 Meshes as to be selected %t| Ok. %x1"
+ # ================================================================
+ # ... if not object at all. =====================================
+ # ================================================================
+ else:
+ name = "At least one Mesh object must be selected %t| Ok. %x1"
result = Draw.PupMenu(name)
return
+
Blender.Redraw()
+
EDITMODE=Blender.Window.EditMode()
Blender.Window.EditMode(0)
-deform2rvk()
-Blender.Window.EditMode(EDITMODE) \ No newline at end of file
+END = 0
+DEFAULT= Blender.Get('curframe')
+
+while not END:
+ deform2rvk()
+ name = "Do you want to copy at a new frame %t| Yes ? %x1| No ? %x2"
+ result = Draw.PupMenu(name)
+ if result == 1:
+ msg = "Frame :"
+ inputresult = Draw.PupIntInput(msg, DEFAULT , Blender.Get('staframe'), Blender.Get('endframe'))
+ print inputresult
+ if inputresult != None:
+ Blender.Set('curframe',inputresult)
+ Blender.Window.RedrawAll()
+ else:
+ END = 1
+ else:
+ END = 1
+
+Blender.Window.EditMode(EDITMODE)
diff --git a/release/scripts/scripttemplate_gamelogic.py b/release/scripts/scripttemplate_gamelogic.py
index 01348e86d0a..577847c0dda 100644
--- a/release/scripts/scripttemplate_gamelogic.py
+++ b/release/scripts/scripttemplate_gamelogic.py
@@ -1,7 +1,7 @@
#!BPY
"""
Name: 'GameLogic Example'
-Blender: 245
+Blender: 249
Group: 'ScriptTemplate'
Tooltip: 'Script template with examples of how to use game logic'
"""
@@ -29,63 +29,63 @@ def main():
cont = GameLogic.getCurrentController()
# The KX_GameObject that owns this controller.
- own = cont.getOwner()
+ own = cont.owner
# for scripts that deal with spacial logic
- own_pos = own.getPosition()
+ own_pos = own.worldPosition
# Some example functions, remove to write your own script.
# check for a positive sensor, will run on any object without errors.
- print 'Logic info for KX_GameObject', own.getName()
+ print 'Logic info for KX_GameObject', own.name
input = False
- for sens in cont.getSensors():
+ for sens in cont.sensors:
# The sensor can be on another object, we may want to use it
- own_sens = sens.getOwner()
- print ' sensor:', sens.getName(),
- if sens.isPositive():
+ own_sens = sens.owner
+ print ' sensor:', sens.name,
+ if sens.positive:
print '(true)'
input = True
else:
print '(false)'
- for actu in cont.getActuators():
+ for actu in cont.actuators:
# The actuator can be on another object, we may want to use it
- own_actu = actu.getOwner()
- print ' actuator:', actu.getName()
+ own_actu = actu.owner
+ print ' actuator:', actu.name
# This runs the actuator or turns it off
# note that actuators will continue to run unless explicitly turned off.
if input:
- GameLogic.addActiveActuator(actu, True)
+ cont.activate(actu)
else:
- GameLogic.addActiveActuator(actu, False)
+ cont.deactivate(actu)
- # Its also good practice to get sensors and actuators by names
- # so any changes to their order wont break the script.
+ # Its also good practice to get sensors and actuators by name
+ # rather then index so any changes to their order wont break the script.
- # sens_key = cont.getSensor('key_sensor')
- # actu_motion = cont.getActuator('motion')
+ # sens_key = cont.sensors['key_sensor']
+ # actu_motion = cont.actuators['motion']
# Loop through all other objects in the scene
sce = GameLogic.getCurrentScene()
- print 'Scene Objects:', sce.getName()
- for ob in sce.getObjectList():
- print ' ', ob.getName(), ob.getPosition()
+ print 'Scene Objects:', sce.name
+ for ob in sce.objects:
+ print ' ', ob.name, ob.worldPosition
# Example where collision objects are checked for their properties
# adding to our objects "life" property
"""
- actu_collide = cont.getSensor('collision_sens')
- for ob in actu_collide.getHitObjectList():
+ actu_collide = cont.sensors['collision_sens']
+ for ob in actu_collide.objectHitList:
# Check to see the object has this property
- if hasattr(ob, 'life'):
- own.life += ob.life
- ob.life = 0
- print own.life
+ if ob.has_key('life'):
+ own['life'] += ob['life']
+ ob['life'] = 0
+ print own['life']
"""
main()
diff --git a/release/scripts/scripttemplate_gamelogic_basic.py b/release/scripts/scripttemplate_gamelogic_basic.py
index 1584659d317..fd404d5c8a4 100644
--- a/release/scripts/scripttemplate_gamelogic_basic.py
+++ b/release/scripts/scripttemplate_gamelogic_basic.py
@@ -1,7 +1,7 @@
#!BPY
"""
Name: 'GameLogic Template'
-Blender: 245
+Blender: 249
Group: 'ScriptTemplate'
Tooltip: 'Basic template for new game logic scripts'
"""
@@ -14,15 +14,15 @@ script_data = \
def main():
cont = GameLogic.getCurrentController()
- own = cont.getOwner()
+ own = cont.owner
- sens = cont.getSensor('mySensor')
- actu = cont.getActuator('myActuator')
+ sens = cont.sensors['mySensor']
+ actu = cont.actuators['myActuator']
- if sens.isPositive():
- GameLogic.addActiveActuator(actu, True)
+ if sens.positive:
+ cont.activate(actu)
else:
- GameLogic.addActiveActuator(actu, False)
+ cont.deactivate(actu)
main()
'''
diff --git a/release/scripts/scripttemplate_gamelogic_module.py b/release/scripts/scripttemplate_gamelogic_module.py
new file mode 100644
index 00000000000..2ef4950917b
--- /dev/null
+++ b/release/scripts/scripttemplate_gamelogic_module.py
@@ -0,0 +1,45 @@
+#!BPY
+"""
+Name: 'GameLogic Module'
+Blender: 249
+Group: 'ScriptTemplate'
+Tooltip: 'Basic template for new game logic modules'
+"""
+
+from Blender import Window
+import bpy
+
+script_data = \
+'''
+# This module can be accessed by a python controller with
+# its execution method set to 'Module'
+# * Set the module string to "gamelogic_module.main" (without quotes)
+# * When renaming the script it MUST have a .py extension
+# * External text modules are supported as long as they are at
+# the same location as the blendfile or one of its libraries.
+
+import GameLogic
+
+# variables defined here will only be set once when the
+# module is first imported. Set object spesific vars
+# inside the function if you intend to use the module
+# with multiple objects.
+
+def main(cont):
+ own = cont.owner
+
+ sens = cont.sensors['mySensor']
+ actu = cont.actuators['myActuator']
+
+ if sens.positive:
+ cont.activate(actu)
+ else:
+ cont.deactivate(actu)
+
+# dont call main(GameLogic.getCurrentController()), the py controller will
+'''
+
+new_text = bpy.data.texts.new('gamelogic_module.py')
+new_text.write(script_data)
+bpy.data.texts.active = new_text
+Window.RedrawAll()
diff --git a/release/scripts/textplugin_convert_ge.py b/release/scripts/textplugin_convert_ge.py
new file mode 100644
index 00000000000..f3b44cdb14b
--- /dev/null
+++ b/release/scripts/textplugin_convert_ge.py
@@ -0,0 +1,863 @@
+#!BPY
+"""
+Name: 'Convert BGE 2.49'
+Blender: 246
+Group: 'TextPlugin'
+Shortcut: ''
+Tooltip: 'Attemps to update deprecated usage of game engine API.'
+"""
+
+#
+# Copyright 2009 Alex Fraser <alex@phatcore.com>
+#
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
+#
+# This script updates game engine scripts that were designed for pre-2.49
+# versions of Blender to run with the new API. Deprecated function calls are
+# listed in attributeRenameDict. This script searches for instances of the keys
+# in a target script and re-writes them.
+#
+# Some deprecated functions are complicated to re-write. The most common
+# conversions have been implemented, but some have not. Running this will reduce
+# the number of deprecation warnings in your scripts, but may not eliminate them
+# entirely.
+#
+# NOTE: The conversion is not guaranteed to be perfect. It is strongly
+# recommended that you review all changes after running this script.
+#
+# TODO: The following attributes are either ambiguous or need special processing
+# to handle parameters. Deprecated attributes that map to multiple target
+# attributes will require a refactor of the main conversion loop in the
+# convert248to249 function: currently, it doesn't allow any conversion to
+# advance the row index by more than one.
+#
+# getLinearVelocity (KX_SCA_AddObjectActuator, KX_ObjectActuator)
+# Conflicts with KX_GameObject.
+# Maps to multiple attributes.
+# setLinearVelocity (KX_SCA_AddObjectActuator, KX_ObjectActuator)
+# Conflicts with KX_GameObject.
+# Maps to multiple attributes.
+# getAngularVelocity (KX_SCA_AddObjectActuator, KX_ObjectActuator)
+# Conflicts with KX_GameObject.
+# Maps to multiple attributes.
+# setAngularVelocity (KX_SCA_AddObjectActuator, KX_ObjectActuator)
+# Conflicts with KX_GameObject.
+# Maps to multiple attributes.
+# setAction (BL_ShapeActionActuator, BL_ActionActuator)
+# `reset' argument has no conversion target.
+# set (KX_VisibilityActuator, KX_IpoActuator)
+# Different numbers of arguments.
+# Arguments map to multiple attributes.
+# getIndex (SCA_JoystickSensor)
+# Incompatible values: Old = 1-based index; new = 0-based.
+# getMesh (KX_SCA_ReplaceMeshActuator)
+# Return types differ. Need to call object.name.
+# getObject (KX_SCA_AddObjectActuator, KX_CameraActuator,
+# KX_TrackToActuator, KX_ParentActuator)
+# Default return type differs between classes.
+# setIndex (SCA_JoystickSensor)
+# Incompatible values: Old = 1-based index; new = 0-based.
+# setObject (KX_SCA_AddObjectActuator, KX_CameraActuator,
+# KX_TrackToActuator, KX_ParentActuator)
+# Incompatible types: Old = KX_GameObject or String; new =
+# KX_GameObject.
+# setOperation (KX_SCA_DynamicActuator, KX_StateActuator)
+# Ambiguous: different target names.
+# getDRot (KX_ObjectActuator)
+# Maps to multiple attributes.
+# setDRot (KX_ObjectActuator)
+# Arguments map to multiple attributes.
+# getDLoc (KX_ObjectActuator)
+# Maps to multiple attributes.
+# setDLoc (KX_ObjectActuator)
+# Arguments map to multiple attributes.
+# getTorque (KX_ObjectActuator)
+# Maps to multiple attributes.
+# setTorque (KX_ObjectActuator)
+# Arguments map to multiple attributes.
+# getForce (KX_ObjectActuator)
+# Maps to multiple attributes.
+# setForce (KX_ObjectActuator)
+# Arguments map to multiple attributes.
+# position (KX_GameObject)
+# Conflicts with KX_SoundActuator.
+# orientation (KX_GameObject)
+# Conflicts with KX_SoundActuator.
+#
+
+import string
+import re
+
+COMMENTCHAR = '#'
+
+class ParseError(Exception): pass
+class ConversionError(Exception): pass
+
+def findBalancedParens(lines, row, col, openChar = '(', closeChar = ')'):
+ """Finds a balanced pair of parentheses, searching from lines[row][col].
+ The opening parenthesis must be on the starting line.
+
+ Returns two tuples containing the row and column of the opening paren, and
+ the row and column of the matching paren.
+
+ Throws a ParseError if the first character is not openChar, or if a matching
+ paren cannot be found."""
+
+ #
+ # Find the opening coordinates.
+ #
+ oRow = row
+ oCol = col
+ line = lines[oRow]
+ while oCol < len(line):
+ if line[oCol] == openChar:
+ break
+ elif line[oCol] == COMMENTCHAR:
+ break
+ oCol = oCol + 1
+
+ if oCol >= len(line) or line[oCol] != openChar or not re.match(r'^\s*$', line[col:oCol]):
+ raise ParseError, "Can't find opening parenthesis. '%s'" % openChar
+
+ #
+ # Find the closing coordinates.
+ #
+ eRow = oRow
+ eCol = oCol + 1
+ level = 1
+ while eRow < len(lines) and level > 0:
+ line = lines[eRow]
+ while eCol < len(line) and level > 0:
+ c = line[eCol]
+ if c == openChar:
+ # Found a nested paren.
+ level = level + 1
+ elif c == closeChar:
+ # Exiting one level of nesting.
+ level = level - 1
+ if level == 0:
+ # Back to top level!
+ return (oRow, oCol), (eRow, eCol)
+ elif c == COMMENTCHAR:
+ # Comment. Skip the rest of the line.
+ break
+ eCol = eCol + 1
+ eRow = eRow + 1
+ eCol = 0
+ raise ParseError, "Couldn't find closing parenthesis."
+
+def findLastAssignment(lines, row, attrName):
+ """Finds the most recent assignment of `attrName' before `row'. Returns
+ everything after the '=' sign or None, if there was no match."""
+ contRegex = re.compile(r'[^#]*?' + # Don't search in comments.
+ attrName +
+ r'\s*=\s*(.*)') # Assignment
+
+ cRow = row - 1
+ while cRow >= 0:
+ match = contRegex.search(lines[cRow])
+ if match:
+ return match.group(1)
+ cRow = cRow - 1
+ return None
+
+def replaceSubstr(s, start, end, newSubStr):
+ """Replace the contents of `s' between `start' and `end' with
+ `newSubStr'."""
+ return s[:start] + newSubStr + s[end:]
+
+def replaceNextParens(lines, row, colStart, newOpenChar, newCloseChar,
+ oldOpenChar = '(', oldCloseChar = ')'):
+ """Replace the next set of parentheses with different characters. The
+ opening parenthesis must be located on line `row', and on or after
+ `colStart'. The closing parenthesis may be on the same line or any following
+ line. The strings are edited in-place.
+
+ Throws a ParseError if the set of parentheses can't be found. In this case,
+ the strings in `lines' will be untouched."""
+ try:
+ pOpen, pClose = findBalancedParens(lines, row, colStart, oldOpenChar,
+ oldCloseChar)
+ except ParseError:
+ raise
+
+ # Replacement may change string length. Replace closing paren first.
+ r, c = pClose
+ lines[r] = replaceSubstr(lines[r], c, c + 1, newCloseChar)
+ # Replace opening paren.
+ r, c = pOpen
+ lines[r] = replaceSubstr(lines[r], c, c + 1, newOpenChar)
+
+def replaceSimpleGetter(lines, row, colStart, colEnd, newName):
+ """Replace a call to a simple getter function with a reference to a
+ property, e.g. foo.getBar() -> foo.bar
+
+ The function identifier being replaced must be on line `row' and
+ between `colStart' and `colEnd'. The opening parenthesis must follow
+ immediately (whitespace is allowed). The closing parenthesis may be on the
+ same or following lines.
+
+ Throws a ConversionError if the parentheses can't be found. In this case
+ the content of `lines' will be untouched."""
+ try:
+ replaceNextParens(lines, row, colEnd, newOpenChar = '', newCloseChar = '')
+ except ParseError:
+ raise ConversionError, ("Deprecated function reference.")
+
+ lines[row] = replaceSubstr(lines[row], colStart, colEnd, newName)
+
+def replaceSimpleSetter(lines, row, colStart, colEnd, newName):
+ """Replace a call to a simple setter function with a reference to a
+ property, e.g. foo.setBar(baz) -> foo.bar = baz
+
+ The function identifier being replaced must be on line `row' and
+ between `colStart' and `colEnd'. The opening parenthesis must follow
+ immediately (whitespace is allowed). The closing parenthesis may be on the
+ same or following lines.
+
+ Throws a ConversionError if the parentheses can't be found. In this case
+ the content of `lines' will be untouched."""
+ try:
+ replaceNextParens(lines, row, colEnd, newOpenChar = '', newCloseChar = '')
+ except ParseError:
+ raise ConversionError, ("Deprecated function reference.")
+
+ lines[row] = replaceSubstr(lines[row], colStart, colEnd, newName + ' = ')
+
+def replaceArgsWithListSetter(lines, row, colStart, colEnd, newName):
+ """Replace a call to a multi-agument setter function with a reference to a
+ list property, e.g. foo.setBar(baz, bazZ) -> foo.bar = [baz, bazZ]
+
+ The function identifier being replaced must be on line `row' and
+ between `colStart' and `colEnd'. The opening parenthesis must follow
+ immediately (whitespace is allowed). The closing parenthesis may be on the
+ same or following lines.
+
+ Throws a ConversionError if the parentheses can't be found. In this case
+ the content of `lines' will be untouched."""
+ try:
+ replaceNextParens(lines, row, colEnd, newOpenChar = '[', newCloseChar = ']')
+ except ParseError:
+ raise ConversionError, ("Deprecated function reference.")
+
+ lines[row] = replaceSubstr(lines[row], colStart, colEnd, newName + ' = ')
+
+
+def replaceKeyedGetter(lines, row, colStart, colEnd, newName):
+ """Replace a call to a keyed getter function with a reference to a
+ property, e.g. foo.getBar(baz) -> foo.bar[baz]
+
+ The function identifier being replaced must be on line `row' and
+ between `colStart' and `colEnd'. The opening parenthesis must follow
+ immediately (whitespace is allowed). The closing parenthesis may be on the
+ same or following lines.
+
+ Throws a ConversionError if the parentheses can't be found. In this case
+ the content of `lines' will be untouched."""
+ try:
+ replaceNextParens(lines, row, colEnd, newOpenChar = '[', newCloseChar = ']')
+ except ParseError:
+ raise ConversionError, ("Deprecated function reference.")
+
+ lines[row] = replaceSubstr(lines[row], colStart, colEnd, newName)
+
+def replaceGetXYPosition(lines, row, colStart, colEnd, axis):
+ '''SCA_MouseSensor.getXPosition; SCA_MouseSensor.getYPosition.
+ This is like a keyed getter, but the key is embedded in the attribute
+ name.
+
+ Throws a ConversionError if the parentheses can't be found. In this case
+ the content of `lines' will be untouched.'''
+ try:
+ (openRow, openCol), (closeRow, closeCol) = findBalancedParens(lines,
+ row, colEnd)
+ except ParseError:
+ raise ConversionError, "Deprecated function reference."
+ if closeRow != row:
+ raise ConversionError, "Can't modify multiple lines."
+
+ lines[row] = replaceSubstr(lines[row], openCol, closeCol + 1,
+ "[%s]" % axis)
+
+ lines[row] = replaceSubstr(lines[row], colStart, colEnd, 'position')
+
+def replaceRename(lines, row, colStart, colEnd, newName):
+ """Replace an identifier with another, e.g.
+ foo.getBar() -> foo.getBaz()
+ foo.bar -> foo.baz
+
+ The identifier being replaced must be on line `row' and between `colStart'
+ and `colEnd'."""
+ lines[row] = replaceSubstr(lines[row], colStart, colEnd, newName)
+
+def replaceAddActiveActuator(lines, row, colStart, colEnd, closure):
+ '''Extra work needs to be done here to find out the name of the controller,
+ and whether the actuator should be activated or deactivated.
+
+ Throws a ConversionError if the actuator, controller or condition can't be
+ found. In this case the content of `lines' will be untouched.'''
+ try:
+ (openRow, openCol), (closeRow, closeCol) = findBalancedParens(lines, row, colEnd)
+ except ParseError:
+ ConversionError, "Can't find arguments."
+
+ if closeRow != openRow:
+ raise ConversionError, ("Can't perform conversion: arguments span multiple lines.")
+
+ args = lines[row][openCol + 1:closeCol]
+ match = re.search(r'([a-zA-Z_]\w*)' # Actuator identifier
+ r',\s*'
+ r'([0-9a-zA-Z_]\w*)', # Condition (boolean)
+ args)
+ if not match:
+ raise ConversionError, "Can't find arguments."
+
+ actuator = match.group(1)
+ condition = match.group(2)
+ controller = None
+
+ assn = findLastAssignment(lines, row, actuator)
+ if assn:
+ match = re.search(r'([a-zA-Z_]\w*)' # Controller identifier
+ r'\s*\.\s*' # Dot
+ r'(actuators\s*\[|getActuator\s*\()', # Dictionary/getter identifier
+ assn)
+ if match:
+ controller = match.group(1)
+
+ if not controller:
+ raise ConversionError, "Can't find actuator's controller."
+
+ gameLogicStart = lines[row].rfind("GameLogic", 0, colStart)
+ if gameLogicStart < 0:
+ raise ConversionError, "Can't find GameLogic identifier."
+
+ newExpr = None
+ if condition in ['1', 'True']:
+ newExpr = "%s.activate(%s)" % (controller, actuator)
+ elif condition in ['0', 'False']:
+ newExpr = "%s.deactivate(%s)" % (controller, actuator)
+ else:
+ newExpr = "(lambda: %s and (%s.activate(%s) or True) or %s.deactivate(%s))()" % (
+ condition, controller, actuator, controller, actuator)
+ lines[row] = replaceSubstr(lines[row], gameLogicStart, closeCol + 1, newExpr)
+
+def getObject(line, attributeStart):
+ '''Get the object that an attribute belongs to. `attributeStart' is the
+ index of the first character of the attribute name in the string `line'.
+ Returns: the identifier preceding `attributeStart', or None if one can't be
+ found.'''
+ match = re.search(r'([a-zA-Z_]\w*)\s*\.\s*$', line[0:attributeStart])
+ if not match:
+ return None
+ return match.group(1)
+
+def replaceGetActuator(lines, row, colStart, colEnd, closure):
+ '''getActuator is ambiguous: it could belong to SCA_IController or
+ SCA_ActuatorSensor. Try to resolve and then convert.
+
+ Raises a ConversionError if the parentheses can't be found, or if the
+ ambiguity can't be resolved.'''
+ # Get the name of the object this attribute is attached to.
+ obName = getObject(lines[row], colStart)
+ if obName:
+ # Try to find out whether the object is a controller.
+ assn = findLastAssignment(lines, row, obName)
+ if assn and re.search(r'GameLogic\s*\.\s*getCurrentController', assn):
+ # It is (probably) a controller!
+ replaceKeyedGetter(lines, row, colStart, colEnd, 'actuators')
+ return
+
+ raise ConversionError, "Ambiguous: addActiveActuator -> actuators[key] (SCA_IController) or actuator (SCA_ActuatorSensor)."
+
+def replaceSetOrientation(lines, row, colStart, colEnd, closure):
+ '''setOrientation is ambiguous: it could belong to KX_SoundActuator or
+ KX_GameObject. Try to resolve and then convert. If the type can't be
+ determined, it is assumed to be a KX_GameObject. Currently, only the
+ conversion for KX_GameObject is implemented.
+
+ Raises a ConversionError if the parentheses can't be found, or if the
+ object is found to be a KX_SoundActuator.'''
+ # Get the name of the object this attribute is attached to.
+ obName = getObject(lines[row], colStart)
+ if obName:
+ # Try to find out whether the object is an actuator.
+ assn = findLastAssignment(lines, row, obName)
+ if assn:
+ match = re.search(r'([a-zA-Z_]\w*)' # Controller identifier
+ r'\s*\.\s*' # Dot
+ r'(actuators\s*\[|getActuator\s*\()', # Dictionary/getter identifier
+ assn)
+ if match:
+ # It's probably a KX_SoundActuator.
+ raise ConversionError, "Not implemented: Can't convert arguments to matrix."
+
+ # It's probably a KX_GameObject.
+ replaceSimpleSetter(lines, row, colStart, colEnd, 'localOrientation')
+
+def replaceSetPosition(lines, row, colStart, colEnd, closure):
+ '''setPosition is ambiguous: it could belong to KX_SoundActuator or
+ KX_GameObject. Try to resolve and then convert. If the type can't be
+ determined, it is assumed to be a KX_GameObject.
+
+ Raises a ConversionError if the parentheses can't be found.'''
+ # Get the name of the object this attribute is attached to.
+ obName = getObject(lines[row], colStart)
+ if obName:
+ # Try to find out whether the object is an actuator.
+ assn = findLastAssignment(lines, row, obName)
+ if assn:
+ match = re.search(r'([a-zA-Z_]\w*)' # Controller identifier
+ r'\s*\.\s*' # Dot
+ r'(actuators\s*\[|getActuator\s*\()', # Dictionary/getter identifier
+ assn)
+ if match:
+ # It's probably a KX_SoundActuator.
+ replaceSimpleSetter(lines, row, colStart, colEnd, 'position')
+
+ # It's probably a KX_GameObject.
+ replaceSimpleSetter(lines, row, colStart, colEnd, 'localPosition')
+
+def replaceSplitProperty(lines, row, colStart, colEnd, (newGetter, newSetter)):
+ '''Some property attributes behave differently when being written to or read
+ from. Try to determine the operation, and replace accordingly. E.G.
+ o.position = foo -> o.localPosition = foo # set
+ foo = o.position -> foo = o.worldPosition # get
+
+ This implementation can not handle cases where the object is returned from
+ a function, e.g.
+ foo = bar.getObject().position # Error!
+
+ Raises a ConversionError if the operation can't be determined, or if the
+ object is returned from a function.'''
+ assnRegex = re.compile(r'(=\s*)?' # Getter
+ r'[a-zA-Z_]\w*' # Object identifier
+ r'\.([a-zA-Z_][a-zA-Z0-9_.]*)+' # Trailing attributes
+ r'(\s*=)?') # Setter
+ match = assnRegex.search(lines[row])
+
+ if not match:
+ raise ConversionError, "Can't determine operation (getting or setting)."
+
+ setting = False
+ getting = False
+ if match.group(1):
+ getting = True
+ if match.group(3):
+ setting = True
+ if (getting and setting) or ((not getting) and (not setting)):
+ raise ConversionError, "Can't determine operation (getting or setting)."
+
+ if getting:
+ replaceRename(lines, row, colStart, colEnd, newGetter)
+ else:
+ replaceRename(lines, row, colStart, colEnd, newSetter)
+
+def notImplemented(lines, row, colStart, colEnd, classNames):
+ message = "Conversion not implemented. See documentation for " +\
+ string.join(classNames, ', ')
+ raise ConversionError, message
+
+#
+# Deprecated attribute information. The format is:
+# deprecatedAttributeName: (conversionFunction, closure)
+# Usually the closure will be the name of the superceding attribute.
+#
+# Since each deprecated attribute can appear in this dictionary only once, it is
+# the conversion function's responsibility to resolve ambiguity.
+#
+attributeRenameDict = {
+ # Special cases
+ 'addActiveActuator': (replaceAddActiveActuator, None), #
+ 'getActuator': (replaceGetActuator, None), # SCA_IController, SCA_ActuatorSensor
+ 'getXPosition': (replaceGetXYPosition, '0'), # SCA_MouseSensor
+ 'getYPosition': (replaceGetXYPosition, '1'), # SCA_MouseSensor
+ 'setOrientation': (replaceSetOrientation, None), # KX_GameObject, KX_SoundActuator
+ 'setPosition': (replaceSetPosition, None), # KX_GameObject, KX_SoundActuator
+
+ # Keyed getters/setters
+ 'getSensor': (replaceKeyedGetter, 'sensors'), # SCA_IController
+
+ # Multi-arg -> List setter
+ 'setAxis': (replaceArgsWithListSetter, 'axis'), # SCA_JoystickSensor
+ 'setForceLimitX': (replaceArgsWithListSetter, 'forceLimitX'), # KX_ObjectActuator
+ 'setForceLimitY': (replaceArgsWithListSetter, 'forceLimitY'), # KX_ObjectActuator
+ 'setForceLimitZ': (replaceArgsWithListSetter, 'forceLimitZ'), # KX_ObjectActuator
+ 'setHat': (replaceArgsWithListSetter, 'hat'), # SCA_JoystickSensor
+ 'setPID': (replaceArgsWithListSetter, 'pid'), # KX_ObjectActuator
+ 'setVelocity': (replaceArgsWithListSetter, 'velocity'), # KX_SoundActuator
+
+ # Straight rename
+ 'getButtonValue': (replaceRename, 'getButtonActiveList'), # SCA_JoystickSensor
+
+ # Split properties
+ 'scaling': (replaceSplitProperty, ('worldScaling', 'localScaling')), # KX_GameObject
+
+ # Simple getters/setters
+ 'getSensors': (replaceSimpleGetter, 'sensors'), # SCA_IController
+ 'getActuators': (replaceSimpleGetter, 'actuators'), # SCA_IController
+ 'enableViewport': (replaceSimpleSetter, 'useViewport'), # KX_Camera
+ 'getAction': (replaceSimpleGetter, 'action'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'getAxis': (replaceSimpleGetter, 'axis'), # SCA_JoystickSensor
+ 'getAxisValue': (replaceSimpleGetter, 'axisValues'), # SCA_JoystickSensor
+ 'getBlendin': (replaceSimpleGetter, 'blendIn'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'getBodies': (replaceSimpleGetter, 'bodies'), # KX_NetworkMessageSensor
+ 'getButton': (replaceSimpleGetter, 'button'), # SCA_JoystickSensor
+ 'getCamera': (replaceSimpleGetter, 'camera'), # KX_SceneActuator
+ 'getConeOrigin': (replaceSimpleGetter, 'coneOrigin'), # KX_RadarSensor
+ 'getConeTarget': (replaceSimpleGetter, 'coneTarget'), # KX_RadarSensor
+ 'getContinue': (replaceSimpleGetter, 'useContinue'), # BL_ActionActuator
+ 'getCurrentlyPressedKeys': (replaceSimpleGetter, 'events'), # SCA_KeyboardSensor
+ 'getDamping': (replaceSimpleGetter, 'damping'), # KX_ObjectActuator
+ 'getDelay': (replaceSimpleGetter, 'delay'), # SCA_DelaySensor
+ 'getDistribution': (replaceSimpleGetter, 'distribution'), # SCA_RandomActuator
+ 'getDuration': (replaceSimpleGetter, 'duration'), # SCA_DelaySensor
+ 'getEnd': (replaceSimpleGetter, 'frameEnd'), # BL_ShapeActionActuator, KX_IpoActuator, BL_ActionActuator
+ 'getExecutePriority': (replaceSimpleGetter, 'executePriority'), # SCA_ILogicBrick
+ 'getFile': (replaceSimpleGetter, 'fileName'), # KX_GameActuator
+ 'getFilename': (replaceSimpleGetter, 'fileName'), # KX_SoundActuator
+ 'getForceIpoActsLocal': (replaceSimpleGetter, 'useIpoLocal'), # KX_IpoActuator
+ 'getForceLimitX': (replaceSimpleGetter, 'forceLimitX'), # KX_ObjectActuator
+ 'getForceLimitY': (replaceSimpleGetter, 'forceLimitY'), # KX_ObjectActuator
+ 'getForceLimitZ': (replaceSimpleGetter, 'forceLimitZ'), # KX_ObjectActuator
+ 'getFrame': (replaceSimpleGetter, 'frame'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'getFrameMessageCount': (replaceSimpleGetter, 'frameMessageCount'), # KX_NetworkMessageSensor
+ 'getFrameProperty': (replaceSimpleGetter, 'framePropName'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'getFrequency': (replaceSimpleGetter, 'frequency'), # SCA_ISensor
+ 'getGain': (replaceSimpleGetter, 'volume'), # KX_SoundActuator, KX_CDActuator
+ 'getHat': (replaceSimpleGetter, 'hat'), # SCA_JoystickSensor
+ 'getHeight': (replaceSimpleGetter, 'height'), # KX_CameraActuator
+ 'getHitNormal': (replaceSimpleGetter, 'hitNormal'), # KX_MouseFocusSensor, KX_RaySensor
+ 'getHitObject': (replaceSimpleGetter, 'hitObject'), # KX_MouseFocusSensor, KX_RaySensor, KX_TouchSensor
+ 'getHitObjectList': (replaceSimpleGetter, 'hitObjectList'), # KX_TouchSensor
+ 'getHitPosition': (replaceSimpleGetter, 'hitPosition'), # KX_MouseFocusSensor, KX_RaySensor
+ 'getHold1': (replaceSimpleGetter, 'hold1'), # SCA_KeyboardSensor
+ 'getHold2': (replaceSimpleGetter, 'hold2'), # SCA_KeyboardSensor
+ 'getInvert': (replaceSimpleGetter, 'invert'), # SCA_ISensor
+ 'getIpoAdd': (replaceSimpleGetter, 'useIpoAdd'), # KX_IpoActuator
+ 'getIpoAsForce': (replaceSimpleGetter, 'useIpoAsForce'), # KX_IpoActuator
+ 'getKey': (replaceSimpleGetter, 'key'), # SCA_KeyboardSensor
+ 'getLastCreatedObject': (replaceSimpleGetter, 'objectLastCreated'), # KX_SCA_AddObjectActuator
+ 'getLevel': (replaceSimpleGetter, 'level'), # SCA_ISensor
+ 'getLightList': (replaceSimpleGetter, 'lights'), # KX_Scene
+ 'getLooping': (replaceSimpleGetter, 'looping'), # KX_SoundActuator
+ 'getMass': (replaceSimpleGetter, 'mass'), # KX_GameObject
+ 'getMax': (replaceSimpleGetter, 'max'), # KX_CameraActuator
+ 'getMin': (replaceSimpleGetter, 'min'), # KX_CameraActuator
+ 'getName': (replaceSimpleGetter, 'name'), # KX_Scene
+ 'getNumAxes': (replaceSimpleGetter, 'numAxis'), # SCA_JoystickSensor
+ 'getNumButtons': (replaceSimpleGetter, 'numButtons'), # SCA_JoystickSensor
+ 'getNumHats': (replaceSimpleGetter, 'numHats'), # SCA_JoystickSensor
+ 'getObjectList': (replaceSimpleGetter, 'objects'), # KX_Scene
+ 'getOperation': (replaceSimpleGetter, 'mode'), # KX_SCA_DynamicActuator
+ 'getOrientation': (replaceSimpleGetter, 'worldOrientation'), # KX_GameObject
+ 'getOwner': (replaceSimpleGetter, 'owner'), # SCA_ILogicBrick
+ 'getPara1': (replaceSimpleGetter, 'para1'), # SCA_RandomActuator
+ 'getPara2': (replaceSimpleGetter, 'para2'), # SCA_RandomActuator
+ 'getParent': (replaceSimpleGetter, 'parent'), # KX_GameObject
+ 'getPID': (replaceSimpleGetter, 'pid'), # KX_ObjectActuator
+ 'getPitch': (replaceSimpleGetter, 'pitch'), # KX_SoundActuator
+ 'getPosition': (replaceSimpleGetter, 'worldPosition'), # KX_GameObject
+ 'getPressedKeys': (replaceSimpleGetter, 'events'), # SCA_KeyboardSensor
+ 'getPriority': (replaceSimpleGetter, 'priority'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'getProjectionMatrix': (replaceSimpleGetter, 'projection_matrix'), # KX_Camera
+ 'getProperty': (replaceSimpleGetter, 'propName'), # SCA_PropertySensor, SCA_RandomActuator, SCA_PropertyActuator
+ 'getRayDirection': (replaceSimpleGetter, 'rayDirection'), # KX_MouseFocusSensor, KX_RaySensor
+ 'getRaySource': (replaceSimpleGetter, 'raySource'), # KX_MouseFocusSensor
+ 'getRayTarget': (replaceSimpleGetter, 'rayTarget'), # KX_MouseFocusSensor
+ 'getRepeat': (replaceSimpleGetter, 'repeat'), # SCA_DelaySensor
+ 'getRollOffFactor': (replaceSimpleGetter, 'rollOffFactor'), # KX_SoundActuator
+ 'getScene': (replaceSimpleGetter, 'scene'), # KX_SceneActuator
+ 'getScript': (replaceSimpleGetter, 'script'), # SCA_PythonController
+ 'getSeed': (replaceSimpleGetter, 'seed'), # SCA_RandomActuator
+ 'getStart': (replaceSimpleGetter, 'frameStart'), # BL_ShapeActionActuator, KX_IpoActuator, BL_ActionActuator
+ 'getState': (replaceSimpleGetter, 'state'), # SCA_IController, KX_GameObject
+ 'getSubject': (replaceSimpleGetter, 'subject'), # KX_NetworkMessageSensor
+ 'getSubjects': (replaceSimpleGetter, 'subjects'), # KX_NetworkMessageSensor
+ 'getThreshold': (replaceSimpleGetter, 'threshold'), # SCA_JoystickSensor
+ 'getTime': (replaceSimpleGetter, 'time'), # KX_SCA_AddObjectActuator, KX_TrackToActuator
+ 'getTouchMaterial': (replaceSimpleGetter, 'useMaterial'), # KX_TouchSensor
+ 'getType': (replaceSimpleGetter, 'mode'), # SCA_PropertySensor
+ 'getUse3D': (replaceSimpleGetter, 'use3D'), # KX_TrackToActuator
+ 'getUseNegPulseMode': (replaceSimpleGetter, 'useNegPulseMode'), # SCA_ISensor
+ 'getUsePosPulseMode': (replaceSimpleGetter, 'usePosPulseMode'), # SCA_ISensor
+ 'getUseRestart': (replaceSimpleGetter, 'useRestart'), # KX_SceneActuator
+ 'getValue': (replaceSimpleGetter, 'value'), # SCA_PropertySensor, SCA_PropertyActuator
+ 'getVisible': (replaceSimpleGetter, 'visible'), # KX_GameObject
+ 'getXY': (replaceSimpleGetter, 'useXY'), # KX_CameraActuator
+ 'isConnected': (replaceSimpleGetter, 'connected'), # SCA_JoystickSensor
+ 'isPositive': (replaceSimpleGetter, 'positive'), # SCA_ISensor
+ 'isTriggered': (replaceSimpleGetter, 'triggered'), # SCA_ISensor
+ 'setActuator': (replaceSimpleSetter, 'actuator'), # SCA_ActuatorSensor
+ 'setBlendin': (replaceSimpleSetter, 'blendIn'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'setBlendtime': (replaceSimpleSetter, 'blendTime'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'setBodyType': (replaceSimpleSetter, 'usePropBody'), # KX_NetworkMessageActuator
+ 'setBody': (replaceSimpleSetter, 'body'), # KX_NetworkMessageActuator
+ 'setButton': (replaceSimpleSetter, 'button'), # SCA_JoystickSensor
+ 'setCamera': (replaceSimpleSetter, 'camera'), # KX_SceneActuator
+ 'setContinue': (replaceSimpleSetter, 'useContinue'), # BL_ActionActuator
+ 'setDamping': (replaceSimpleSetter, 'damping'), # KX_ObjectActuator
+ 'setDelay': (replaceSimpleSetter, 'delay'), # SCA_DelaySensor
+ 'setDuration': (replaceSimpleSetter, 'duration'), # SCA_DelaySensor
+ 'setEnd': (replaceSimpleSetter, 'frameEnd'), # BL_ShapeActionActuator, KX_IpoActuator, BL_ActionActuator
+ 'setExecutePriority': (replaceSimpleSetter, 'executePriority'), # SCA_ILogicBrick
+ 'setFile': (replaceSimpleSetter, 'fileName'), # KX_GameActuator
+ 'setFilename': (replaceSimpleSetter, 'fileName'), # KX_SoundActuator
+ 'setForceIpoActsLocal': (replaceSimpleSetter, 'useIpoLocal'), # KX_IpoActuator
+ 'setFrame': (replaceSimpleSetter, 'frame'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'setFrameProperty': (replaceSimpleSetter, 'framePropName'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'setFrequency': (replaceSimpleSetter, 'frequency'), # SCA_ISensor
+ 'setGain': (replaceSimpleSetter, 'volume'), # KX_SoundActuator, KX_CDActuator
+ 'setHeight': (replaceSimpleSetter, 'height'), # KX_CameraActuator
+ 'setHold1': (replaceSimpleSetter, 'hold1'), # SCA_KeyboardSensor
+ 'setHold2': (replaceSimpleSetter, 'hold2'), # SCA_KeyboardSensor
+ 'setInvert': (replaceSimpleSetter, 'invert'), # SCA_ISensor
+ 'setIpoAdd': (replaceSimpleSetter, 'useIpoAdd'), # KX_IpoActuator
+ 'setIpoAsForce': (replaceSimpleSetter, 'useIpoAsForce'), # KX_IpoActuator
+ 'setKey': (replaceSimpleSetter, 'key'), # SCA_KeyboardSensor
+ 'setLevel': (replaceSimpleSetter, 'level'), # SCA_ISensor
+ 'setLooping': (replaceSimpleSetter, 'looping'), # KX_SoundActuator
+ 'setMask': (replaceSimpleSetter, 'mask'), # KX_StateActuator
+ 'setMax': (replaceSimpleSetter, 'max'), # KX_CameraActuator
+ 'setMesh': (replaceSimpleSetter, 'mesh'), # KX_SCA_ReplaceMeshActuator
+ 'setMin': (replaceSimpleSetter, 'min'), # KX_CameraActuator
+ 'setPitch': (replaceSimpleSetter, 'pitch'), # KX_SoundActuator
+ 'setPriority': (replaceSimpleSetter, 'priority'), # BL_ShapeActionActuator, BL_ActionActuator
+ 'setProjectionMatrix': (replaceSimpleSetter, 'projection_matrix'), # KX_Camera
+ 'setProperty': (replaceSimpleSetter, 'propName'), # KX_IpoActuator, SCA_PropertySensor, SCA_RandomActuator, SCA_PropertyActuator
+ 'setRepeat': (replaceSimpleSetter, 'repeat'), # SCA_DelaySensor
+ 'setRollOffFactor': (replaceSimpleSetter, 'rollOffFactor'), # KX_SoundActuator
+ 'setScene': (replaceSimpleSetter, 'scene'), # KX_SceneActuator
+ 'setScript': (replaceSimpleSetter, 'script'), # SCA_PythonController
+ 'setSeed': (replaceSimpleSetter, 'seed'), # SCA_RandomActuator
+ 'setStart': (replaceSimpleSetter, 'frameStart'), # BL_ShapeActionActuator, KX_IpoActuator, BL_ActionActuator
+ 'setState': (replaceSimpleSetter, 'state'), # KX_GameObject
+ 'setSubject': (replaceSimpleSetter, 'subject'), # KX_NetworkMessageActuator
+ 'setSubjectFilterText': (replaceSimpleSetter, 'subject'), # KX_NetworkMessageSensor
+ 'setThreshold': (replaceSimpleSetter, 'threshold'), # SCA_JoystickSensor
+ 'setTime': (replaceSimpleSetter, 'time'), # KX_SCA_AddObjectActuator, KX_TrackToActuator
+ 'setToPropName': (replaceSimpleSetter, 'propName'), # KX_NetworkMessageActuator
+ 'setType': (replaceSimpleSetter, 'mode'), # SCA_PropertySensor
+ 'setUse3D': (replaceSimpleSetter, 'use3D'), # KX_TrackToActuator
+ 'setUseNegPulseMode': (replaceSimpleSetter, 'useNegPulseMode'), # SCA_ISensor
+ 'setUsePosPulseMode': (replaceSimpleSetter, 'usePosPulseMode'), # SCA_ISensor
+ 'setUseRestart': (replaceSimpleSetter, 'useRestart'), # KX_SceneActuator
+ 'setValue': (replaceSimpleSetter, 'value'), # SCA_PropertySensor, SCA_PropertyActuator
+ 'setXY': (replaceSimpleSetter, 'useXY'), # KX_CameraActuator
+
+ # Unimplemented!
+ 'getLinearVelocity': (notImplemented, ['KX_SCA_AddObjectActuator', 'KX_GameObject']),
+ 'setLinearVelocity': (notImplemented, ['KX_SCA_AddObjectActuator', 'KX_GameObject']),
+ 'getAngularVelocity': (notImplemented, ['KX_SCA_AddObjectActuator', 'KX_GameObject']),
+ 'setAngularVelocity': (notImplemented, ['KX_SCA_AddObjectActuator', 'KX_GameObject']),
+ 'setAction': (notImplemented, ['BL_ShapeActionActuator', 'BL_ActionActuator']),
+ 'set': (notImplemented, ['KX_VisibilityActuator', 'KX_IpoActuator']),
+ 'getIndex': (notImplemented, ['SCA_JoystickSensor']),
+ 'getMesh': (notImplemented, ['KX_SCA_ReplaceMeshActuator']),
+ 'getObject': (notImplemented, ['KX_SCA_AddObjectActuator', 'KX_CameraActuator', 'KX_TrackToActuator', 'KX_ParentActuator']),
+ 'setIndex': (notImplemented, ['SCA_JoystickSensor']),
+ 'setObject': (notImplemented, ['KX_SCA_AddObjectActuator', 'KX_CameraActuator', 'KX_TrackToActuator', 'KX_ParentActuator']),
+ 'setOperation': (notImplemented, ['KX_SCA_DynamicActuator', 'KX_StateActuator']),
+ 'position': (notImplemented, ['KX_GameObject', 'KX_SoundActuator']),
+ 'orientation': (notImplemented, ['KX_GameObject', 'KX_SoundActuator']),
+ 'getDRot': (notImplemented, ['KX_ObjectActuator']),
+ 'setDRot': (notImplemented, ['KX_ObjectActuator']),
+ 'getDLoc': (notImplemented, ['KX_ObjectActuator']),
+ 'setDLoc': (notImplemented, ['KX_ObjectActuator']),
+ 'getTorque': (notImplemented, ['KX_ObjectActuator']),
+ 'getTorque': (notImplemented, ['KX_ObjectActuator']),
+ 'getForce': (notImplemented, ['KX_ObjectActuator']),
+ 'setForce': (notImplemented, ['KX_ObjectActuator']),
+}
+
+def convert248to249(lines, log = True, logErrors = True, fileName = None):
+ # Regular expression for finding attributes. For the string 'a.b', this
+ # returns three groups: ['a.b', 'a.', 'b']. The last is the attribute name.
+ attrRegex = re.compile(r'\.\s*' # Dot
+ r'([a-zA-Z_]\w*)') # Identifier
+
+ fileIdStr = ""
+ if fileName:
+ fileIdStr = fileName + ": "
+ row = 0
+ col = 0
+ nconverted = 0
+ nerrors = 0
+ while row < len(lines):
+ originalLine = lines[row]
+ changed = False
+ while col < len(lines[row]):
+ # Don't search past comment. We have to check each iteration
+ # because the line contents may have changed.
+ commentStart = lines[row].find('#', col)
+ if commentStart < 0:
+ commentStart = len(lines[row])
+
+ # Search for an attribute identifier.
+ match = attrRegex.search(lines[row], col, commentStart)
+ if not match:
+ break
+
+ attrName = match.group(1)
+ if attributeRenameDict.has_key(attrName):
+ # name is deprecated.
+ func, closure = attributeRenameDict[attrName]
+ try:
+ # Convert!
+ func(lines, row, match.start(1), match.end(1), closure)
+ except ConversionError as e:
+ # Insert a comment saying the conversion failed.
+ print "ERROR: %sline %d, %s: %s\n" % (
+ fileIdStr, row + 1, attrName, e)
+ if logErrors:
+ lines.insert(row,
+ "##248## ERROR: %s: %s\n" %
+ (attrName, e))
+ row = row + 1
+ nerrors = nerrors + 1
+ else:
+ changed = True
+ nconverted = nconverted + 1
+ # Search the rest of this line.
+ col = match.start(1)
+
+ if changed and log:
+ # Insert a comment to showing difference in lines.
+ if originalLine[-1] != '\n':
+ originalLine = originalLine + '\n'
+ lines.insert(row, "##248##%s" % originalLine)
+ row = row + 1
+
+ row = row + 1
+ col = 0
+ return nconverted, nerrors
+
+def usage():
+ print "Usage: blender248to249.py [options] <infile> [outfile]"
+ print "Options:"
+ print "\t--nolog Don't include old lines as comments."
+ print "\t--quieterrors Don't insert errors as comments."
+
+def runAsConsoleScript():
+ '''Called when being run as a console script.'''
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "", ["nolog", "quieterrors"])
+ except getopt.GetoptError, err:
+ # print help information and exit:
+ print str(err)
+ usage()
+ sys.exit(2)
+
+ log = True
+ logErrors = True
+ for o, a in opts:
+ if o == "--nolog":
+ log = False
+ elif o == "--quieterrors":
+ logErrors = False
+
+ try:
+ inpath = args.pop(0)
+ except IndexError:
+ usage()
+ sys.exit(2)
+ try:
+ outpath = args.pop(0)
+ except IndexError:
+ outpath = inpath
+
+ infile = io.FileIO(inpath, 'r')
+ # arbitrary file size of around 100kB
+ lines = infile.readlines(100000)
+ infile.close()
+
+ nconverted, nerrors = convert248to249(lines, log, logErrors)
+
+ outfile = io.FileIO(outpath, 'w')
+ outfile.writelines(lines)
+ outfile.close()
+ print "Conversion finished. Modified %d attributes." % nconverted
+ print "There were %d errors." % nerrors
+ print "Please review all the changes."
+
+def runAsTextPlugin():
+ '''Called when run as a text plugin.'''
+
+ import Blender
+ from Blender import Window, sys, Draw
+ import BPyTextPlugin, bpy
+
+ message = ("Convert Game Engine script from 4.48 API to 2.49 API%t|"
+ "Run on active script only%x1|"
+ "Run on ALL text buffers%x2")
+ convertAllBuffers = Draw.PupMenu(message) == 2
+
+ Window.WaitCursor(1)
+ try:
+ nconverted = 0
+ nerrors = 0
+
+ if convertAllBuffers:
+ texts = bpy.data.texts
+ else:
+ if not bpy.data.texts.active:
+ Draw.PupMenu("No active buffer.")
+ return
+ texts = [bpy.data.texts.active]
+
+ Blender.SaveUndoState('Convert BGE 2.49')
+
+ for txt in texts:
+ bufName = txt.name
+ if txt.lib:
+ bufName = txt.lib + '/' + bufName
+ lines = txt.asLines()
+ for i in range(0, len(lines)):
+ if not lines[i].endswith('\n'):
+ lines[i] = lines[i] + '\n'
+
+ nc, ne = convert248to249(lines, fileName = bufName)
+ nconverted = nconverted + nc
+ nerrors = nerrors + ne
+ txt.clear()
+ for line in lines:
+ txt.write(line)
+
+ finally:
+ Window.WaitCursor(0)
+
+ message = "Converted %d attributes." % nconverted
+ if nerrors == 1:
+ message = message + " There was 1 error (see console)."
+ if nerrors > 1:
+ message = message + " There were %d errors (see console)." % nerrors
+ message = message + "|Please review all the changes."
+ Draw.PupMenu(message)
+
+def main():
+ try:
+ import Blender
+ except ImportError:
+ runAsConsoleScript()
+ else:
+ runAsTextPlugin()
+
+# This lets you import the script without running it
+if __name__ == "__main__":
+ import sys
+ import getopt
+ import io
+ main()
diff --git a/release/scripts/uvcalc_quad_clickproj.py b/release/scripts/uvcalc_quad_clickproj.py
index 130a7e5af77..298103e4d5f 100644
--- a/release/scripts/uvcalc_quad_clickproj.py
+++ b/release/scripts/uvcalc_quad_clickproj.py
@@ -46,7 +46,7 @@ import BPyWindow
mouseViewRay= BPyWindow.mouseViewRay
from Blender import Mathutils, Window, Scene, Draw, sys
-from Blender.Mathutils import CrossVecs, Vector, Matrix, LineIntersect, Intersect #, AngleBetweenVecs, Intersect
+from Blender.Mathutils import Vector, Matrix, LineIntersect, Intersect #, AngleBetweenVecs, Intersect
LMB= Window.MButs.L
RMB= Window.MButs.R
@@ -229,7 +229,7 @@ def main():
y_axis_length = line_a_len
x_axis_length = (line_isect_b_pair[1]-face_corner_main).length
- proj_y_component = CrossVecs(proj_x_component, proj_z_component)
+ proj_y_component = proj_x_component.cross(proj_z_component)
proj_y_component.length = 1/y_axis_length
proj_x_component.length = 1/x_axis_length
diff --git a/release/scripts/uvcalc_smart_project.py b/release/scripts/uvcalc_smart_project.py
index 55d6ebfaa6f..9d9bd2aaefd 100644
--- a/release/scripts/uvcalc_smart_project.py
+++ b/release/scripts/uvcalc_smart_project.py
@@ -43,7 +43,7 @@ selected faces, or all faces.
from Blender import Object, Draw, Window, sys, Mesh, Geometry
-from Blender.Mathutils import CrossVecs, Matrix, Vector, RotationMatrix, DotVecs
+from Blender.Mathutils import Matrix, Vector, RotationMatrix
import bpy
from math import cos
@@ -96,7 +96,7 @@ def pointInTri2D(v, v1, v2, v3):
side1 = v2 - v1
side2 = v3 - v1
- nor = CrossVecs(side1, side2)
+ nor = side1.cross(side2)
l1 = [side1[0], side1[1], side1[2]]
l2 = [side2[0], side2[1], side2[2]]
@@ -804,11 +804,11 @@ def VectoMat(vec):
a3 = vec.__copy__().normalize()
up = Vector(0,0,1)
- if abs(DotVecs(a3, up)) == 1.0:
+ if abs(a3.dot(up)) == 1.0:
up = Vector(0,1,0)
- a1 = CrossVecs(a3, up).normalize()
- a2 = CrossVecs(a3, a1)
+ a1 = a3.cross(up).normalize()
+ a2 = a3.cross(a1)
return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]])
@@ -1001,7 +1001,7 @@ def main():
for fIdx in xrange(len(tempMeshFaces)-1, -1, -1):
# Use half the angle limit so we dont overweight faces towards this
# normal and hog all the faces.
- if DotVecs(newProjectVec, tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED:
+ if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED:
newProjectMeshFaces.append(tempMeshFaces.pop(fIdx))
# Add the average of all these faces normals as a projectionVec
@@ -1027,7 +1027,7 @@ def main():
# Get the closest vec angle we are to.
for p in projectVecs:
- temp_angle_diff= DotVecs(p, tempMeshFaces[fIdx].no)
+ temp_angle_diff= p.dot(tempMeshFaces[fIdx].no)
if angleDifference < temp_angle_diff:
angleDifference= temp_angle_diff
@@ -1066,14 +1066,14 @@ def main():
i = len(projectVecs)
# Initialize first
- bestAng = DotVecs(fvec, projectVecs[0])
+ bestAng = fvec.dot(projectVecs[0])
bestAngIdx = 0
# Cycle through the remaining, first alredy done
while i-1:
i-=1
- newAng = DotVecs(fvec, projectVecs[i])
+ newAng = fvec.dot(projectVecs[i])
if newAng > bestAng: # Reverse logic for dotvecs
bestAng = newAng
bestAngIdx = i
diff --git a/release/scripts/vertexpaint_selfshadow_ao.py b/release/scripts/vertexpaint_selfshadow_ao.py
index 95ba7d2fb23..54c67fd27e2 100644
--- a/release/scripts/vertexpaint_selfshadow_ao.py
+++ b/release/scripts/vertexpaint_selfshadow_ao.py
@@ -45,7 +45,6 @@ import BPyMesh
def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_MIN_EDLEN, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY):
Window.WaitCursor(1)
- DotVecs = Mathutils.DotVecs
Ang= Mathutils.AngleBetweenVecs
BPyMesh.meshCalcNormals(me)
@@ -63,7 +62,7 @@ def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_MIN_EDLEN, PRE
for v in f.v:
vno=v.no # get a scaled down normal.
- dot= DotVecs(vno, v.co) - DotVecs(vno, fc)
+ dot= vno.dot(v.co) - vno.dot(fc)
vert_tone_count[v.index]+=1
try:
a= Ang(vno, fno)
@@ -180,6 +179,10 @@ def main():
t= sys.time()
vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_MIN_EDLEN, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY)
+
+ if ob.modifiers:
+ me.update()
+
print 'done in %.6f' % (sys.time()-t)
if __name__=='__main__':
main()
diff --git a/release/scripts/wizard_bolt_factory.py b/release/scripts/wizard_bolt_factory.py
new file mode 100644
index 00000000000..6a280eccc58
--- /dev/null
+++ b/release/scripts/wizard_bolt_factory.py
@@ -0,0 +1,2804 @@
+#!BPY
+# -*- coding: latin-1 -*-
+"""
+Name: 'Bolt Factory'
+Blender: 248
+Group: 'Wizards'
+Tooltip: 'Create models of various types of screw fasteners.'
+"""
+
+__author__ = " Aaron Keith (Spudmn) "
+__version__ = "2.00 2009/05/22"
+__url__ = ["Author's site,http://sourceforge.net/projects/boltfactory/", "Blender,http://wiki.blender.org/index.php/Extensions:Py/Scripts/Manual/Misc/Bolt_Factory"]
+__bpydoc__ = """\
+Bolt_Factory.py
+
+Bolt Factory is a Python script for Blender 3D.
+
+The script allows the user to create models of various types of screw fasteners.
+
+For best results set the material to smooth and apply a Edge Split modifier
+with default settings.
+
+
+History:
+
+V2.00 22/05/09 by Aaron Keith
+
+- Better error checking.
+- Lock Nut and Hex Nut meshes added.
+- Pre-sets for common metric bolts and nuts.
+- Improved GUI.
+- Meshes scaled to a smaller size
+- Fixed bug when using crest and root percent other than 10%
+- Can now create meshes in Edit Mode. This will add to the
+ current mesh and align with the current view.
+
+V1.00 01/04/08 by Aaron Keith
+
+- This version is very much a work in progress.
+- This is my first attempt to program in Python. This version is
+ unpolished and doesn't do much error checking. Therefore
+ if the user sets strange variable the model created will be
+ as equally strange.
+
+- To Do:
+- Better error checking.
+- More Head and Bit types.
+- Better documentation.
+
+
+"""
+
+# --------------------------------------------------------------------------
+# Bolt_Factory.py
+# --------------------------------------------------------------------------
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# Copyright (C) 2009: Aaron Keith
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+# --------------------------------------------------------------------------
+
+
+
+
+import Blender
+from Blender import Draw, BGL,Mesh
+from Blender import *
+from math import *
+from Blender import Mathutils
+from Blender.Mathutils import *
+
+
+#Global_Scale = 0.001 #1 blender unit = X mm
+Global_Scale = 0.1 #1 blender unit = X mm
+#Global_Scale = 1.0 #1 blender unit = X mm
+Global_NutRad = 0.0
+MAX_INPUT_NUMBER = 50
+
+No_Event,On_Preset_Click,On_Apply_Click,On_Create_Click,On_Hex_Click, On_Cap_Click,On_Dome_Click,On_Pan_Click,On_Bit_None_Click,On_Bit_Allen_Click,On_Bit_Philips_Click,On_Exit_Click,On_Model_Bolt_Click,On_Model_Nut_Click,On_Hex_Nut_Click,On_Lock_Nut_Click,On_Test_Click = range(17) # this is like a ENUM
+
+
+Head_Type={'HEX' : [Draw.Create(1),On_Hex_Click,""],
+ 'CAP' : [Draw.Create(0),On_Cap_Click,""],
+ 'DOME': [Draw.Create(0),On_Dome_Click,""],
+ 'PAN' : [Draw.Create(0),On_Pan_Click,""]}
+
+
+Bit_Type={'NONE' : [Draw.Create(1),On_Bit_None_Click,""],
+ 'ALLEN' : [Draw.Create(0),On_Bit_Allen_Click,""],
+ 'PHILLIPS': [Draw.Create(0),On_Bit_Philips_Click,""]}
+
+Model_Type={'BOLT' : [Draw.Create(1),On_Model_Bolt_Click,"Bolt Settings"],
+ 'NUT' : [Draw.Create(0),On_Model_Nut_Click,"Nut Settings"]}
+
+Nut_Type={'HEX' : [Draw.Create(1),On_Hex_Nut_Click,""],
+ 'LOCK' : [Draw.Create(0),On_Lock_Nut_Click,""]}
+
+
+Phillips_Bit_Depth = Draw.Create(3.27)
+Philips_Bit_Dia = Draw.Create(5.20)
+
+Allen_Bit_Depth = Draw.Create(4.0)
+Allen_Bit_Flat_Distance = Draw.Create(6.0)
+
+Hex_Head_Height = Draw.Create(5.3)
+Hex_Head_Flat_Distance = Draw.Create(13.0)
+
+Cap_Head_Dia = Draw.Create(13.5)
+Cap_Head_Height = Draw.Create(8.0)
+
+Dome_Head_Dia = Draw.Create(16.0)
+
+Pan_Head_Dia = Draw.Create(16.0)
+
+Shank_Dia = Draw.Create(8.0)
+Shank_Length = Draw.Create(0.0)
+
+Thread_Length = Draw.Create(16.0)
+Major_Dia = Draw.Create(8.0)
+Minor_Dia = Draw.Create(6.917)
+Pitch = Draw.Create(1.0)
+Crest_Percent = Draw.Create(10)
+Root_Percent = Draw.Create(10)
+
+Hex_Nut_Height = Draw.Create(8.0)
+Hex_Nut_Flat_Distance = Draw.Create(13.0)
+
+Preset_Menu = Draw.Create(5)
+
+
+##########################################################################################
+##########################################################################################
+## Miscellaneous Utilities
+##########################################################################################
+##########################################################################################
+
+# Returns a list of verts rotated by the given matrix. Used by SpinDup
+def Rot_Mesh(verts,matrix):
+ return [list(Vector(v) * matrix) for v in verts]
+
+# Returns a list of faces that has there index incremented by offset
+def Copy_Faces(faces,offset):
+ ret = []
+ for f in faces:
+ fsub = []
+ for i in range(len(f)):
+ fsub.append(f[i]+ offset)
+ ret.append(fsub)
+ return ret
+
+
+# Much like Blenders built in SpinDup.
+def SpinDup(VERTS,FACES,DEGREE,DIVISIONS,AXIS):
+ verts=[]
+ faces=[]
+
+ if DIVISIONS == 0:
+ DIVISIONS = 1
+
+ step = DEGREE/DIVISIONS # set step so pieces * step = degrees in arc
+
+ for i in xrange(int(DIVISIONS)):
+ rotmat = Mathutils.RotationMatrix(step*i, 4, AXIS) # 4x4 rotation matrix, 30d about the x axis.
+ Rot = Rot_Mesh(VERTS,rotmat)
+ faces.extend(Copy_Faces(FACES,len(verts)))
+ verts.extend(Rot)
+ return verts,faces
+
+
+# Returns a list of verts that have been moved up the z axis by DISTANCE
+def Move_Verts_Up_Z(VERTS,DISTANCE):
+ return [[v[0],v[1],v[2]+DISTANCE] for v in VERTS]
+
+
+# Returns a list of verts and faces that has been mirrored in the AXIS
+def Mirror_Verts_Faces(VERTS,FACES,AXIS,FLIP_POINT =0):
+ ret_vert = []
+ ret_face = []
+ offset = len(VERTS)
+ if AXIS == 'y':
+ for v in VERTS:
+ Delta = v[0] - FLIP_POINT
+ ret_vert.append([FLIP_POINT-Delta,v[1],v[2]])
+ if AXIS == 'x':
+ for v in VERTS:
+ Delta = v[1] - FLIP_POINT
+ ret_vert.append([v[0],FLIP_POINT-Delta,v[2]])
+ if AXIS == 'z':
+ for v in VERTS:
+ Delta = v[2] - FLIP_POINT
+ ret_vert.append([v[0],v[1],FLIP_POINT-Delta])
+
+ for f in FACES:
+ fsub = []
+ for i in range(len(f)):
+ fsub.append(f[i]+ offset)
+ fsub.reverse() # flip the order to make norm point out
+ ret_face.append(fsub)
+
+ return ret_vert,ret_face
+
+
+
+# Returns a list of faces that
+# make up an array of 4 point polygon.
+def Build_Face_List_Quads(OFFSET,COLUM,ROW,FLIP = 0):
+ Ret =[]
+ RowStart = 0;
+ for j in range(ROW):
+ for i in range(COLUM):
+ Res1 = RowStart + i;
+ Res2 = RowStart + i + (COLUM +1)
+ Res3 = RowStart + i + (COLUM +1) +1
+ Res4 = RowStart+i+1
+ if FLIP:
+ Ret.append([OFFSET+Res1,OFFSET+Res2,OFFSET+Res3,OFFSET+Res4])
+ else:
+ Ret.append([OFFSET+Res4,OFFSET+Res3,OFFSET+Res2,OFFSET+Res1])
+ RowStart += COLUM+1
+ return Ret
+
+
+# Returns a list of faces that makes up a fill pattern for a
+# circle
+def Fill_Ring_Face(OFFSET,NUM,FACE_DOWN = 0):
+ Ret =[]
+ Face = [1,2,0]
+ TempFace = [0,0,0]
+ A = 0
+ B = 1
+ C = 2
+ if NUM < 3:
+ return None
+ for i in range(NUM-2):
+ if (i%2):
+ TempFace[0] = Face[C];
+ TempFace[1] = Face[C] + 1;
+ TempFace[2] = Face[B];
+ if FACE_DOWN:
+ Ret.append([OFFSET+Face[2],OFFSET+Face[1],OFFSET+Face[0]])
+ else:
+ Ret.append([OFFSET+Face[0],OFFSET+Face[1],OFFSET+Face[2]])
+ else:
+ TempFace[0] =Face[C];
+ if Face[C] == 0:
+ TempFace[1] = NUM-1;
+ else:
+ TempFace[1] = Face[C] - 1;
+ TempFace[2] = Face[B];
+ if FACE_DOWN:
+ Ret.append([OFFSET+Face[0],OFFSET+Face[1],OFFSET+Face[2]])
+ else:
+ Ret.append([OFFSET+Face[2],OFFSET+Face[1],OFFSET+Face[0]])
+
+ Face[0] = TempFace[0]
+ Face[1] = TempFace[1]
+ Face[2] = TempFace[2]
+ return Ret
+
+
+##########################################################################################
+##########################################################################################
+## Converter Functions For Bolt Factory
+##########################################################################################
+##########################################################################################
+
+
+def Flat_To_Radius(FLAT):
+ h = (float(FLAT)/2)/cos(radians(30))
+ return h
+
+def Get_Phillips_Bit_Height(Bit_Dia):
+ Flat_Width_half = (Bit_Dia*(0.5/1.82))/2.0
+ Bit_Rad = Bit_Dia / 2.0
+ x = Bit_Rad - Flat_Width_half
+ y = tan(radians(60))*x
+ return y
+
+##########################################################################################
+##########################################################################################
+## Error Checking
+##########################################################################################
+##########################################################################################
+
+
+def Error_Check():
+
+ #global Phillips_Bit_Depth
+ #global Philips_Bit_Dia
+
+ #global Allen_Bit_Depth
+ #global Allen_Bit_Flat_Distance
+
+ #global Hex_Head_Height
+ #global Hex_Head_Flat_Distance
+
+ #global Cap_Head_Dia
+ #global Cap_Head_Height
+
+
+ #global Dome_Head_Dia
+
+ #global Pan_Head_Dia
+
+ #global Shank_Dia
+ #global Shank_Length
+
+ global Thread_Length
+ global Major_Dia
+ global Minor_Dia
+ global Pitch
+ global Hex_Nut_Flat_Distance
+ global Model_Type
+ #global Crest_Percent
+ #global Root_Percent
+
+ Error_Result = 0
+
+ if Minor_Dia.val >= Major_Dia.val:
+ error_txt = "Error%t|Major Dia must be larger than Minor Dia"
+ Blender.Draw.PupMenu(error_txt)
+ print error_txt
+ Error_Result = TRUE
+
+ elif (Model_Type['BOLT'][0].val) and ((Pitch.val*7.0) > Thread_Length.val):
+ error_txt = "Error%t|Thread length must be at least 7 times the Pitch"
+ Blender.Draw.PupMenu(error_txt)
+ print error_txt
+ Error_Result = TRUE
+
+ elif (Model_Type['NUT'][0].val) and (Hex_Nut_Flat_Distance.val < Major_Dia.val):
+ error_txt = "Error%t|Nut Flat Distance must be greater than Major Dia"
+ Blender.Draw.PupMenu(error_txt)
+ print error_txt
+ Error_Result = TRUE
+
+ elif (Model_Type['NUT'][0].val) and ((Pitch.val * 2.5 )> Hex_Nut_Height.val):
+ error_txt = "Error%t|Nut Height must be greater than 2.5 * Pitch"
+ Blender.Draw.PupMenu(error_txt)
+ print error_txt
+ Error_Result = TRUE
+
+ elif (Model_Type['BOLT'][0].val):
+ Check_Head_Height = None
+ Check_Bit_Height = None
+ if (Bit_Type['ALLEN'][0].val):
+ Check_Bit_Height = Allen_Bit_Depth.val
+ if (Bit_Type['PHILLIPS'][0].val):
+ Check_Bit_Height = Phillips_Bit_Depth.val
+ if (Head_Type['HEX'][0].val):
+ Check_Head_Height = Hex_Head_Height.val
+ if (Head_Type['CAP'][0].val):
+ Check_Head_Height = Cap_Head_Height.val
+
+ if Check_Head_Height != None and Check_Bit_Height != None :
+ if Check_Bit_Height > Check_Head_Height:
+ error_txt = "Error%t|Bit Depth must not be greater that Head Height"
+ Blender.Draw.PupMenu(error_txt)
+ print error_txt
+ Error_Result = TRUE
+
+
+ return Error_Result
+
+
+
+##########################################################################################
+##########################################################################################
+## Create Allen Bit
+##########################################################################################
+##########################################################################################
+
+
+def Allen_Fill(OFFSET,FLIP= 0):
+ faces = []
+ Lookup = [[19,1,0],
+ [19,2,1],
+ [19,3,2],
+ [19,20,3],
+ [20,4,3],
+ [20,5,4],
+ [20,6,5],
+ [20,7,6],
+ [20,8,7],
+ [20,9,8],
+
+ [20,21,9],
+
+ [21,10,9],
+ [21,11,10],
+ [21,12,11],
+ [21,13,12],
+ [21,14,13],
+ [21,15,14],
+
+ [21,22,15],
+ [22,16,15],
+ [22,17,16],
+ [22,18,17]
+ ]
+ for i in Lookup:
+ if FLIP:
+ faces.append([OFFSET+i[2],OFFSET+i[1],OFFSET+i[0]])
+ else:
+ faces.append([OFFSET+i[0],OFFSET+i[1],OFFSET+i[2]])
+
+ return faces
+
+def Allen_Bit_Dia(FLAT_DISTANCE):
+ Flat_Radius = (float(FLAT_DISTANCE)/2.0)/cos(radians(30))
+ return (Flat_Radius * 1.05) * 2.0
+
+def Allen_Bit_Dia_To_Flat(DIA):
+ Flat_Radius = (DIA/2.0)/1.05
+ return (Flat_Radius * cos (radians(30)))* 2.0
+
+
+
+def Create_Allen_Bit(FLAT_DISTANCE,HEIGHT):
+ Div = 36
+ verts = []
+ faces = []
+
+ Flat_Radius = (float(FLAT_DISTANCE)/2.0)/cos(radians(30))
+ OUTTER_RADIUS = Flat_Radius * 1.05
+ Outter_Radius_Height = Flat_Radius * (0.1/5.77)
+ FaceStart_Outside = len(verts)
+ Deg_Step = 360.0 /float(Div)
+
+ for i in range((Div/2)+1): # only do half and mirror later
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,0])
+
+ FaceStart_Inside = len(verts)
+
+ Deg_Step = 360.0 /float(6)
+ for i in range((6/2)+1):
+ x = sin(radians(i*Deg_Step))* Flat_Radius
+ y = cos(radians(i*Deg_Step))* Flat_Radius
+ verts.append([x,y,0-Outter_Radius_Height])
+
+ faces.extend(Allen_Fill(FaceStart_Outside,0))
+
+
+ FaceStart_Bottom = len(verts)
+
+ Deg_Step = 360.0 /float(6)
+ for i in range((6/2)+1):
+ x = sin(radians(i*Deg_Step))* Flat_Radius
+ y = cos(radians(i*Deg_Step))* Flat_Radius
+ verts.append([x,y,0-HEIGHT])
+
+ faces.extend(Build_Face_List_Quads(FaceStart_Inside,3,1,TRUE))
+ faces.extend(Fill_Ring_Face(FaceStart_Bottom,4))
+
+
+ M_Verts,M_Faces = Mirror_Verts_Faces(verts,faces,'y')
+ verts.extend(M_Verts)
+ faces.extend(M_Faces)
+
+ return verts,faces,OUTTER_RADIUS * 2.0
+
+
+##########################################################################################
+##########################################################################################
+## Create Phillips Bit
+##########################################################################################
+##########################################################################################
+
+
+def Phillips_Fill(OFFSET,FLIP= 0):
+ faces = []
+ Lookup = [[0,1,10],
+ [1,11,10],
+ [1,2,11],
+ [2,12,11],
+
+ [2,3,12],
+ [3,4,12],
+ [4,5,12],
+ [5,6,12],
+ [6,7,12],
+
+ [7,13,12],
+ [7,8,13],
+ [8,14,13],
+ [8,9,14],
+
+
+ [10,11,16,15],
+ [11,12,16],
+ [12,13,16],
+ [13,14,17,16],
+ [15,16,17,18]
+
+
+ ]
+ for i in Lookup:
+ if FLIP:
+ if len(i) == 3:
+ faces.append([OFFSET+i[2],OFFSET+i[1],OFFSET+i[0]])
+ else:
+ faces.append([OFFSET+i[3],OFFSET+i[2],OFFSET+i[1],OFFSET+i[0]])
+ else:
+ if len(i) == 3:
+ faces.append([OFFSET+i[0],OFFSET+i[1],OFFSET+i[2]])
+ else:
+ faces.append([OFFSET+i[0],OFFSET+i[1],OFFSET+i[2],OFFSET+i[3]])
+ return faces
+
+
+
+def Create_Phillips_Bit(FLAT_DIA,FLAT_WIDTH,HEIGHT):
+ Div = 36
+ verts = []
+ faces = []
+
+ FLAT_RADIUS = FLAT_DIA * 0.5
+ OUTTER_RADIUS = FLAT_RADIUS * 1.05
+
+ Flat_Half = float(FLAT_WIDTH)/2.0
+
+ FaceStart_Outside = len(verts)
+ Deg_Step = 360.0 /float(Div)
+ for i in range((Div/4)+1): # only do half and mirror later
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,0])
+
+
+ FaceStart_Inside = len(verts)
+ verts.append([0,FLAT_RADIUS,0]) #10
+ verts.append([Flat_Half,FLAT_RADIUS,0]) #11
+ verts.append([Flat_Half,Flat_Half,0]) #12
+ verts.append([FLAT_RADIUS,Flat_Half,0]) #13
+ verts.append([FLAT_RADIUS,0,0]) #14
+
+
+ verts.append([0,Flat_Half,0-HEIGHT]) #15
+ verts.append([Flat_Half,Flat_Half,0-HEIGHT]) #16
+ verts.append([Flat_Half,0,0-HEIGHT]) #17
+
+ verts.append([0,0,0-HEIGHT]) #18
+
+ faces.extend(Phillips_Fill(FaceStart_Outside,TRUE))
+
+ Spin_Verts,Spin_Face = SpinDup(verts,faces,360,4,'z')
+
+ return Spin_Verts,Spin_Face,OUTTER_RADIUS * 2
+
+
+##########################################################################################
+##########################################################################################
+## Create Head Types
+##########################################################################################
+##########################################################################################
+
+def Max_Pan_Bit_Dia(HEAD_DIA):
+ HEAD_RADIUS = HEAD_DIA * 0.5
+ XRad = HEAD_RADIUS * 1.976
+ return (sin(radians(10))*XRad) * 2.0
+
+
+def Create_Pan_Head(HOLE_DIA,HEAD_DIA,SHANK_DIA,HEIGHT,RAD1,RAD2,FACE_OFFSET):
+
+ DIV = 36
+ HOLE_RADIUS = HOLE_DIA * 0.5
+ HEAD_RADIUS = HEAD_DIA * 0.5
+ SHANK_RADIUS = SHANK_DIA * 0.5
+
+ verts = []
+ faces = []
+ Row = 0
+ BEVEL = HEIGHT * 0.01
+ #Dome_Rad = HEAD_RADIUS * (1.0/1.75)
+
+ Dome_Rad = HEAD_RADIUS * 1.12
+ RAD_Offset = HEAD_RADIUS * 0.96
+ OtherRad = HEAD_RADIUS * 0.16
+ OtherRad_X_Offset = HEAD_RADIUS * 0.84
+ OtherRad_Z_Offset = HEAD_RADIUS * 0.504
+ XRad = HEAD_RADIUS * 1.976
+ ZRad = HEAD_RADIUS * 1.768
+ EndRad = HEAD_RADIUS * 0.284
+ EndZOffset = HEAD_RADIUS * 0.432
+ HEIGHT = HEAD_RADIUS * 0.59
+
+# Dome_Rad = 5.6
+# RAD_Offset = 4.9
+# OtherRad = 0.8
+# OtherRad_X_Offset = 4.2
+# OtherRad_Z_Offset = 2.52
+# XRad = 9.88
+# ZRad = 8.84
+# EndRad = 1.42
+# EndZOffset = 2.16
+# HEIGHT = 2.95
+
+ FaceStart = FACE_OFFSET
+
+ z = cos(radians(10))*ZRad
+ verts.append([HOLE_RADIUS,0.0,(0.0-ZRad)+z])
+ Start_Height = 0 - ((0.0-ZRad)+z)
+ Row += 1
+
+ #for i in range(0,30,10): was 0 to 30 more work needed to make this look good.
+ for i in range(10,30,10):
+ x = sin(radians(i))*XRad
+ z = cos(radians(i))*ZRad
+ verts.append([x,0.0,(0.0-ZRad)+z])
+ Row += 1
+
+ for i in range(20,140,10):
+ x = sin(radians(i))*EndRad
+ z = cos(radians(i))*EndRad
+ if ((0.0 - EndZOffset)+z) < (0.0-HEIGHT):
+ verts.append([(HEAD_RADIUS -EndRad)+x,0.0,0.0 - HEIGHT])
+ else:
+ verts.append([(HEAD_RADIUS -EndRad)+x,0.0,(0.0 - EndZOffset)+z])
+ Row += 1
+
+
+ verts.append([SHANK_RADIUS,0.0,(0.0-HEIGHT)])
+ Row += 1
+
+ verts.append([SHANK_RADIUS,0.0,(0.0-HEIGHT)-Start_Height])
+ Row += 1
+
+
+ sVerts,sFaces = SpinDup(verts,faces,360,DIV,'z')
+ sVerts.extend(verts) #add the start verts to the Spin verts to complete the loop
+
+ faces.extend(Build_Face_List_Quads(FaceStart,Row-1,DIV))
+
+ Global_Head_Height = HEIGHT ;
+
+
+ return Move_Verts_Up_Z(sVerts,Start_Height),faces,HEIGHT
+
+
+
+def Create_Dome_Head(HOLE_DIA,HEAD_DIA,SHANK_DIA,HEIGHT,RAD1,RAD2,FACE_OFFSET):
+ DIV = 36
+ HOLE_RADIUS = HOLE_DIA * 0.5
+ HEAD_RADIUS = HEAD_DIA * 0.5
+ SHANK_RADIUS = SHANK_DIA * 0.5
+
+ verts = []
+ faces = []
+ Row = 0
+ BEVEL = HEIGHT * 0.01
+ #Dome_Rad = HEAD_RADIUS * (1.0/1.75)
+
+ Dome_Rad = HEAD_RADIUS * 1.12
+ #Head_Height = HEAD_RADIUS * 0.78
+ RAD_Offset = HEAD_RADIUS * 0.98
+ Dome_Height = HEAD_RADIUS * 0.64
+ OtherRad = HEAD_RADIUS * 0.16
+ OtherRad_X_Offset = HEAD_RADIUS * 0.84
+ OtherRad_Z_Offset = HEAD_RADIUS * 0.504
+
+
+# Dome_Rad = 5.6
+# RAD_Offset = 4.9
+# Dome_Height = 3.2
+# OtherRad = 0.8
+# OtherRad_X_Offset = 4.2
+# OtherRad_Z_Offset = 2.52
+#
+
+ FaceStart = FACE_OFFSET
+
+ verts.append([HOLE_RADIUS,0.0,0.0])
+ Row += 1
+
+
+ for i in range(0,60,10):
+ x = sin(radians(i))*Dome_Rad
+ z = cos(radians(i))*Dome_Rad
+ if ((0.0-RAD_Offset)+z) <= 0:
+ verts.append([x,0.0,(0.0-RAD_Offset)+z])
+ Row += 1
+
+
+ for i in range(60,160,10):
+ x = sin(radians(i))*OtherRad
+ z = cos(radians(i))*OtherRad
+ z = (0.0-OtherRad_Z_Offset)+z
+ if z < (0.0-Dome_Height):
+ z = (0.0-Dome_Height)
+ verts.append([OtherRad_X_Offset+x,0.0,z])
+ Row += 1
+
+ verts.append([SHANK_RADIUS,0.0,(0.0-Dome_Height)])
+ Row += 1
+
+
+ sVerts,sFaces = SpinDup(verts,faces,360,DIV,'z')
+ sVerts.extend(verts) #add the start verts to the Spin verts to complete the loop
+
+ faces.extend(Build_Face_List_Quads(FaceStart,Row-1,DIV))
+
+ return sVerts,faces,Dome_Height
+
+
+
+def Create_Cap_Head(HOLE_DIA,HEAD_DIA,SHANK_DIA,HEIGHT,RAD1,RAD2):
+ DIV = 36
+
+ HOLE_RADIUS = HOLE_DIA * 0.5
+ HEAD_RADIUS = HEAD_DIA * 0.5
+ SHANK_RADIUS = SHANK_DIA * 0.5
+
+ verts = []
+ faces = []
+ Row = 0
+ BEVEL = HEIGHT * 0.01
+
+
+ FaceStart = len(verts)
+
+ verts.append([HOLE_RADIUS,0.0,0.0])
+ Row += 1
+
+ #rad
+
+ for i in range(0,100,10):
+ x = sin(radians(i))*RAD1
+ z = cos(radians(i))*RAD1
+ verts.append([(HEAD_RADIUS-RAD1)+x,0.0,(0.0-RAD1)+z])
+ Row += 1
+
+
+ verts.append([HEAD_RADIUS,0.0,0.0-HEIGHT+BEVEL])
+ Row += 1
+
+ verts.append([HEAD_RADIUS-BEVEL,0.0,0.0-HEIGHT])
+ Row += 1
+
+ #rad2
+
+ for i in range(0,100,10):
+ x = sin(radians(i))*RAD2
+ z = cos(radians(i))*RAD2
+ verts.append([(SHANK_RADIUS+RAD2)-x,0.0,(0.0-HEIGHT-RAD2)+z])
+ Row += 1
+
+
+ sVerts,sFaces = SpinDup(verts,faces,360,DIV,'z')
+ sVerts.extend(verts) #add the start verts to the Spin verts to complete the loop
+
+
+ faces.extend(Build_Face_List_Quads(FaceStart,Row-1,DIV))
+
+ return sVerts,faces,HEIGHT+RAD2
+
+
+
+def Create_Hex_Head(FLAT,HOLE_DIA,SHANK_DIA,HEIGHT):
+
+ verts = []
+ faces = []
+ HOLE_RADIUS = HOLE_DIA * 0.5
+ Half_Flat = FLAT/2
+ TopBevelRadius = Half_Flat - (Half_Flat* (0.05/8))
+ Undercut_Height = (Half_Flat* (0.05/8))
+ Shank_Bevel = (Half_Flat* (0.05/8))
+ Flat_Height = HEIGHT - Undercut_Height - Shank_Bevel
+ #Undercut_Height = 5
+ SHANK_RADIUS = SHANK_DIA/2
+ Row = 0;
+
+ verts.append([0.0,0.0,0.0])
+
+
+ FaceStart = len(verts)
+ #inner hole
+
+ x = sin(radians(0))*HOLE_RADIUS
+ y = cos(radians(0))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/6))*HOLE_RADIUS
+ y = cos(radians(60/6))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/3))*HOLE_RADIUS
+ y = cos(radians(60/3))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/2))*HOLE_RADIUS
+ y = cos(radians(60/2))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+ Row += 1
+
+ #bevel
+
+ x = sin(radians(0))*TopBevelRadius
+ y = cos(radians(0))*TopBevelRadius
+ vec1 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/6))*TopBevelRadius
+ y = cos(radians(60/6))*TopBevelRadius
+ vec2 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/3))*TopBevelRadius
+ y = cos(radians(60/3))*TopBevelRadius
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/2))*TopBevelRadius
+ y = cos(radians(60/2))*TopBevelRadius
+ vec4 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+ Row += 1
+
+ #Flats
+
+ x = tan(radians(0))*Half_Flat
+ dvec = vec1 - Mathutils.Vector([x,Half_Flat,0.0])
+ verts.append([x,Half_Flat,-dvec.length])
+
+
+ x = tan(radians(60/6))*Half_Flat
+ dvec = vec2 - Mathutils.Vector([x,Half_Flat,0.0])
+ verts.append([x,Half_Flat,-dvec.length])
+
+
+ x = tan(radians(60/3))*Half_Flat
+ dvec = vec3 - Mathutils.Vector([x,Half_Flat,0.0])
+ Lowest_Point = -dvec.length
+ verts.append([x,Half_Flat,-dvec.length])
+
+
+ x = tan(radians(60/2))*Half_Flat
+ dvec = vec4 - Mathutils.Vector([x,Half_Flat,0.0])
+ Lowest_Point = -dvec.length
+ verts.append([x,Half_Flat,-dvec.length])
+ Row += 1
+
+ #down Bits Tri
+ x = tan(radians(0))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+
+ x = tan(radians(60/6))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+
+ x = tan(radians(60/3))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+
+ x = tan(radians(60/2))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+ Row += 1
+
+ #down Bits
+
+ x = tan(radians(0))*Half_Flat
+ verts.append([x,Half_Flat,-Flat_Height])
+
+ x = tan(radians(60/6))*Half_Flat
+ verts.append([x,Half_Flat,-Flat_Height])
+
+ x = tan(radians(60/3))*Half_Flat
+ verts.append([x,Half_Flat,-Flat_Height])
+
+ x = tan(radians(60/2))*Half_Flat
+ verts.append([x,Half_Flat,-Flat_Height])
+ Row += 1
+
+
+ #under cut
+
+ x = sin(radians(0))*Half_Flat
+ y = cos(radians(0))*Half_Flat
+ vec1 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height])
+
+ x = sin(radians(60/6))*Half_Flat
+ y = cos(radians(60/6))*Half_Flat
+ vec2 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height])
+
+ x = sin(radians(60/3))*Half_Flat
+ y = cos(radians(60/3))*Half_Flat
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height])
+
+ x = sin(radians(60/2))*Half_Flat
+ y = cos(radians(60/2))*Half_Flat
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height])
+ Row += 1
+
+ #under cut down bit
+ x = sin(radians(0))*Half_Flat
+ y = cos(radians(0))*Half_Flat
+ vec1 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+
+ x = sin(radians(60/6))*Half_Flat
+ y = cos(radians(60/6))*Half_Flat
+ vec2 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+
+ x = sin(radians(60/3))*Half_Flat
+ y = cos(radians(60/3))*Half_Flat
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+
+ x = sin(radians(60/2))*Half_Flat
+ y = cos(radians(60/2))*Half_Flat
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+ Row += 1
+
+ #under cut to Shank BEVEAL
+ x = sin(radians(0))*(SHANK_RADIUS+Shank_Bevel)
+ y = cos(radians(0))*(SHANK_RADIUS+Shank_Bevel)
+ vec1 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+
+ x = sin(radians(60/6))*(SHANK_RADIUS+Shank_Bevel)
+ y = cos(radians(60/6))*(SHANK_RADIUS+Shank_Bevel)
+ vec2 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+
+ x = sin(radians(60/3))*(SHANK_RADIUS+Shank_Bevel)
+ y = cos(radians(60/3))*(SHANK_RADIUS+Shank_Bevel)
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+
+ x = sin(radians(60/2))*(SHANK_RADIUS+Shank_Bevel)
+ y = cos(radians(60/2))*(SHANK_RADIUS+Shank_Bevel)
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height])
+ Row += 1
+
+ #under cut to Shank BEVEAL
+ x = sin(radians(0))*SHANK_RADIUS
+ y = cos(radians(0))*SHANK_RADIUS
+ vec1 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height-Shank_Bevel])
+
+ x = sin(radians(60/6))*SHANK_RADIUS
+ y = cos(radians(60/6))*SHANK_RADIUS
+ vec2 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height-Shank_Bevel])
+
+ x = sin(radians(60/3))*SHANK_RADIUS
+ y = cos(radians(60/3))*SHANK_RADIUS
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height-Shank_Bevel])
+
+ x = sin(radians(60/2))*SHANK_RADIUS
+ y = cos(radians(60/2))*SHANK_RADIUS
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,-Flat_Height-Undercut_Height-Shank_Bevel])
+ Row += 1
+
+
+ #Global_Head_Height = 0 - (-HEIGHT-0.1)
+ faces.extend(Build_Face_List_Quads(FaceStart,3,Row - 1))
+
+
+ Mirror_Verts,Mirror_Faces = Mirror_Verts_Faces(verts,faces,'y')
+ verts.extend(Mirror_Verts)
+ faces.extend(Mirror_Faces)
+
+ Spin_Verts,Spin_Faces = SpinDup(verts,faces,360,6,'z')
+
+ return Spin_Verts,Spin_Faces,0 - (-HEIGHT)
+
+
+##########################################################################################
+##########################################################################################
+## Create Bolt
+##########################################################################################
+##########################################################################################
+
+
+
+def MakeBolt():
+ global Phillips_Bit_Depth
+ global Philips_Bit_Dia
+
+ global Allen_Bit_Depth
+ global Allen_Bit_Flat_Distance
+
+ global Hex_Head_Height
+ global Hex_Head_Flat_Distance
+
+ global Cap_Head_Dia
+ global Cap_Head_Height
+
+
+ global Dome_Head_Dia
+
+ global Pan_Head_Dia
+
+ global Shank_Dia
+ global Shank_Length
+
+ global Thread_Length
+ global Major_Dia
+ global Minor_Dia
+ global Pitch
+ global Crest_Percent
+ global Root_Percent
+
+ verts = []
+ faces = []
+ Bit_Verts = []
+ Bit_Faces = []
+ Bit_Dia = 0.001
+ Head_Verts = []
+ Head_Faces= []
+ Head_Height = 0.0
+ ReSized_Allen_Bit_Flat_Distance = Allen_Bit_Flat_Distance.val # set default
+
+
+ Head_Height = Hex_Head_Height.val # will be changed by the Head Functions
+
+ if Bit_Type['ALLEN'][0].val and Head_Type['PAN'][0].val:
+ #need to size Allen bit if it is too big.
+ if Allen_Bit_Dia(Allen_Bit_Flat_Distance.val) > Max_Pan_Bit_Dia(Pan_Head_Dia.val):
+ ReSized_Allen_Bit_Flat_Distance = Allen_Bit_Dia_To_Flat(Max_Pan_Bit_Dia(Pan_Head_Dia.val)) * 1.05
+ print "Resized Allen Bit Flat Distance to ",ReSized_Allen_Bit_Flat_Distance
+
+ #bit Mesh
+ if Bit_Type['ALLEN'][0].val:
+ Bit_Verts,Bit_Faces,Bit_Dia = Create_Allen_Bit(ReSized_Allen_Bit_Flat_Distance,Allen_Bit_Depth.val)
+
+ if Bit_Type['PHILLIPS'][0].val:
+ Bit_Verts,Bit_Faces,Bit_Dia = Create_Phillips_Bit(Philips_Bit_Dia.val,Philips_Bit_Dia.val*(0.5/1.82),Phillips_Bit_Depth.val)
+
+
+ #Head Mesh
+ if Head_Type['HEX'][0].val:
+ Head_Verts,Head_Faces,Head_Height = Create_Hex_Head(Hex_Head_Flat_Distance.val,Bit_Dia,Shank_Dia.val,Hex_Head_Height.val)
+
+ elif Head_Type['CAP'][0].val:
+ Head_Verts,Head_Faces,Head_Height = Create_Cap_Head(Bit_Dia,Cap_Head_Dia.val,Shank_Dia.val,Cap_Head_Height.val,Cap_Head_Dia.val*(1.0/19.0),Cap_Head_Dia.val*(1.0/19.0))
+
+ elif Head_Type['DOME'][0].val:
+ Head_Verts,Head_Faces,Head_Height = Create_Dome_Head(Bit_Dia,Dome_Head_Dia.val,Shank_Dia.val,Hex_Head_Height.val,1,1,0)
+
+ elif Head_Type['PAN'][0].val:
+ Head_Verts,Head_Faces,Head_Height = Create_Pan_Head(Bit_Dia,Pan_Head_Dia.val,Shank_Dia.val,Hex_Head_Height.val,1,1,0)
+
+
+ Face_Start = len(verts)
+ verts.extend(Move_Verts_Up_Z(Bit_Verts,Head_Height))
+ faces.extend(Copy_Faces(Bit_Faces,Face_Start))
+
+ Face_Start = len(verts)
+ verts.extend(Move_Verts_Up_Z(Head_Verts,Head_Height))
+ faces.extend(Copy_Faces(Head_Faces,Face_Start))
+
+ Face_Start = len(verts)
+ Thread_Verts,Thread_Faces,Thread_Height = Create_External_Thread(Shank_Dia.val,Shank_Length.val,Minor_Dia.val,Major_Dia.val,Pitch.val,Thread_Length.val,Crest_Percent.val,Root_Percent.val)
+
+ verts.extend(Move_Verts_Up_Z(Thread_Verts,00))
+ faces.extend(Copy_Faces(Thread_Faces,Face_Start))
+
+ return Move_Verts_Up_Z(verts,Thread_Height),faces
+
+
+
+
+
+
+
+##########################################################################################
+##########################################################################################
+## Create Internal Thread
+##########################################################################################
+##########################################################################################
+
+
+def Create_Internal_Thread_Start_Verts(verts,INNER_RADIUS,OUTTER_RADIUS,PITCH,DIV,CREST_PERCENT,ROOT_PERCENT,Height_Offset):
+
+
+ Ret_Row = 0;
+
+ Height_Offset = Height_Offset + PITCH #Move the offset up so that the verts start at
+ #at the correct place (Height_Start)
+
+ Half_Pitch = float(PITCH)/2
+ Height_Start = Height_Offset - PITCH
+ Height_Step = float(PITCH)/float(DIV)
+ Deg_Step = 360.0 /float(DIV)
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+
+ Rank = float(OUTTER_RADIUS - INNER_RADIUS)/float(DIV)
+ for j in range(1):
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z])
+ Height_Offset -= Crest_Height
+ Ret_Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z ])
+ Height_Offset -= Crest_to_Root_Height
+ Ret_Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ if j == 0:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ verts.append([x,y,z ])
+ Height_Offset -= Root_Height
+ Ret_Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+
+ if j == 0:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ verts.append([x,y,z ])
+ Height_Offset -= Root_to_Crest_Height
+ Ret_Row += 1
+
+ return Ret_Row,Height_Offset
+
+
+def Create_Internal_Thread_End_Verts(verts,INNER_RADIUS,OUTTER_RADIUS,PITCH,DIV,CREST_PERCENT,ROOT_PERCENT,Height_Offset):
+
+
+ Ret_Row = 0;
+
+ Half_Pitch = float(PITCH)/2
+ #Height_End = Height_Offset - PITCH - PITCH - PITCH- PITCH - PITCH- PITCH
+ Height_End = Height_Offset - PITCH
+ #Height_End = -2.1
+ Height_Step = float(PITCH)/float(DIV)
+ Deg_Step = 360.0 /float(DIV)
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+
+
+ Rank = float(OUTTER_RADIUS - INNER_RADIUS)/float(DIV)
+
+ Num = 0
+
+ for j in range(2):
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z < Height_End:
+ z = Height_End
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z])
+ Height_Offset -= Crest_Height
+ Ret_Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z < Height_End:
+ z = Height_End
+
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z ])
+ Height_Offset -= Crest_to_Root_Height
+ Ret_Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z < Height_End:
+ z = Height_End
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ if j == Num:
+ x = sin(radians(i*Deg_Step))*(INNER_RADIUS + (i*Rank))
+ y = cos(radians(i*Deg_Step))*(INNER_RADIUS + (i*Rank))
+ if j > Num:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS)
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS )
+
+ verts.append([x,y,z ])
+ Height_Offset -= Root_Height
+ Ret_Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z < Height_End:
+ z = Height_End
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+
+ if j == Num:
+ x = sin(radians(i*Deg_Step))*(INNER_RADIUS + (i*Rank))
+ y = cos(radians(i*Deg_Step))*(INNER_RADIUS + (i*Rank))
+ if j > Num:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS )
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS )
+
+ verts.append([x,y,z ])
+ Height_Offset -= Root_to_Crest_Height
+ Ret_Row += 1
+
+
+ return Ret_Row,Height_End # send back Height End as this is the lowest point
+
+
+def Create_Internal_Thread(INNER_DIA,OUTTER_DIA,PITCH,HEIGHT,CREST_PERCENT,ROOT_PERCENT,INTERNAL = 1):
+ verts = []
+ faces = []
+
+ DIV = 36
+
+ INNER_RADIUS = INNER_DIA/2
+ OUTTER_RADIUS = OUTTER_DIA/2
+
+ Half_Pitch = float(PITCH)/2
+ Deg_Step = 360.0 /float(DIV)
+ Height_Step = float(PITCH)/float(DIV)
+
+ Num = int(round((HEIGHT- PITCH)/PITCH)) # less one pitch for the start and end that is 1/2 pitch high
+
+ Col = 0
+ Row = 0
+
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+ Height_Offset = 0
+ FaceStart = len(verts)
+
+ Row_Inc,Height_Offset = Create_Internal_Thread_Start_Verts(verts,INNER_RADIUS,OUTTER_RADIUS,PITCH,DIV,CREST_PERCENT,ROOT_PERCENT,Height_Offset)
+ Row += Row_Inc
+
+ for j in range(Num):
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,Height_Offset - (Height_Step*i) ])
+ Height_Offset -= Crest_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,Height_Offset - (Height_Step*i) ])
+ Height_Offset -= Crest_to_Root_Height
+ Row += 1
+
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ verts.append([x,y,Height_Offset - (Height_Step*i) ])
+ Height_Offset -= Root_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ verts.append([x,y,Height_Offset - (Height_Step*i) ])
+ Height_Offset -= Root_to_Crest_Height
+ Row += 1
+
+
+ Row_Inc,Height_Offset = Create_Internal_Thread_End_Verts(verts,INNER_RADIUS,OUTTER_RADIUS,PITCH,DIV,CREST_PERCENT,ROOT_PERCENT,Height_Offset)
+ Row += Row_Inc
+
+ faces.extend(Build_Face_List_Quads(FaceStart,DIV,Row -1,INTERNAL))
+
+ return verts,faces,0 - Height_Offset
+
+
+
+##########################################################################################
+##########################################################################################
+## Create External Thread
+##########################################################################################
+##########################################################################################
+
+
+
+def Thread_Start3(verts,INNER_RADIUS,OUTTER_RADIUS,PITCH,DIV,CREST_PERCENT,ROOT_PERCENT,Height_Offset):
+
+
+ Ret_Row = 0;
+
+ Half_Pitch = float(PITCH)/2
+ Height_Start = Height_Offset - PITCH
+ Height_Step = float(PITCH)/float(DIV)
+ Deg_Step = 360.0 /float(DIV)
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+#theard start
+
+ Rank = float(OUTTER_RADIUS - INNER_RADIUS)/float(DIV)
+ for j in range(4):
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z])
+ Height_Offset -= Crest_Height
+ Ret_Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z ])
+ Height_Offset -= Crest_to_Root_Height
+ Ret_Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ if j == 0:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ verts.append([x,y,z ])
+ Height_Offset -= Root_Height
+ Ret_Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+
+ if j == 0:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ verts.append([x,y,z ])
+ Height_Offset -= Root_to_Crest_Height
+ Ret_Row += 1
+
+ return Ret_Row,Height_Offset
+
+
+def Create_Shank_Verts(START_DIA,OUTTER_DIA,LENGTH,Z_LOCATION = 0):
+
+ verts = []
+ DIV = 36
+
+ START_RADIUS = START_DIA/2
+ OUTTER_RADIUS = OUTTER_DIA/2
+
+ Opp = abs(START_RADIUS - OUTTER_RADIUS)
+ Taper_Lentgh = Opp/tan(radians(31));
+
+ if Taper_Lentgh > LENGTH:
+ Taper_Lentgh = 0
+
+ Stright_Length = LENGTH - Taper_Lentgh
+
+ Deg_Step = 360.0 /float(DIV)
+
+ Row = 0
+
+ Lowest_Z_Vert = 0;
+
+ Height_Offset = Z_LOCATION
+
+
+ #ring
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*START_RADIUS
+ y = cos(radians(i*Deg_Step))*START_RADIUS
+ z = Height_Offset - 0
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Stright_Length
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*START_RADIUS
+ y = cos(radians(i*Deg_Step))*START_RADIUS
+ z = Height_Offset - 0
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Taper_Lentgh
+ Row += 1
+
+
+ return verts,Row,Height_Offset
+
+
+def Create_Thread_Start_Verts(INNER_DIA,OUTTER_DIA,PITCH,CREST_PERCENT,ROOT_PERCENT,Z_LOCATION = 0):
+
+ verts = []
+ DIV = 36
+
+ INNER_RADIUS = INNER_DIA/2
+ OUTTER_RADIUS = OUTTER_DIA/2
+
+ Half_Pitch = float(PITCH)/2
+ Deg_Step = 360.0 /float(DIV)
+ Height_Step = float(PITCH)/float(DIV)
+
+ Row = 0
+
+ Lowest_Z_Vert = 0;
+
+ Height_Offset = Z_LOCATION
+
+ Height_Start = Height_Offset
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+ Rank = float(OUTTER_RADIUS - INNER_RADIUS)/float(DIV)
+
+ Height_Offset = Z_LOCATION + PITCH
+ Cut_off = Z_LOCATION
+
+
+ for j in range(1):
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ if z > Cut_off : z = Cut_off
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ if z > Cut_off : z = Cut_off
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_to_Root_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ if z > Cut_off : z = Cut_off
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ if z > Cut_off : z = Cut_off
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_to_Crest_Height
+ Row += 1
+
+
+ for j in range(2):
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ verts.append([x,y,z ])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_to_Root_Height
+ Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ if j == 0:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ verts.append([x,y,z ])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ if z > Height_Start:
+ z = Height_Start
+
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+
+ if j == 0:
+ x = sin(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ y = cos(radians(i*Deg_Step))*(OUTTER_RADIUS - (i*Rank))
+ verts.append([x,y,z ])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_to_Crest_Height
+ Row += 1
+
+
+ return verts,Row,Height_Offset
+
+
+
+def Create_Thread_Verts(INNER_DIA,OUTTER_DIA,PITCH,HEIGHT,CREST_PERCENT,ROOT_PERCENT,Z_LOCATION = 0):
+ verts = []
+
+ DIV = 36
+
+ INNER_RADIUS = INNER_DIA/2
+ OUTTER_RADIUS = OUTTER_DIA/2
+
+ Half_Pitch = float(PITCH)/2
+ Deg_Step = 360.0 /float(DIV)
+ Height_Step = float(PITCH)/float(DIV)
+
+ NUM_OF_START_THREADS = 4.0
+ NUM_OF_END_THREADS = 3.0
+ Num = int((HEIGHT- ((NUM_OF_START_THREADS*PITCH) + (NUM_OF_END_THREADS*PITCH) ))/PITCH)
+ Row = 0
+
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+
+ Height_Offset = Z_LOCATION
+
+ Lowest_Z_Vert = 0;
+ FaceStart = len(verts)
+
+
+ for j in range(Num):
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*OUTTER_RADIUS
+ y = cos(radians(i*Deg_Step))*OUTTER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_to_Root_Height
+ Row += 1
+
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ x = sin(radians(i*Deg_Step))*INNER_RADIUS
+ y = cos(radians(i*Deg_Step))*INNER_RADIUS
+ z = Height_Offset - (Height_Step*i)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_to_Crest_Height
+ Row += 1
+
+ return verts,Row,Height_Offset
+
+
+
+def Create_Thread_End_Verts(INNER_DIA,OUTTER_DIA,PITCH,CREST_PERCENT,ROOT_PERCENT,Z_LOCATION = 0):
+ verts = []
+
+ DIV = 36
+
+ INNER_RADIUS = INNER_DIA/2
+ OUTTER_RADIUS = OUTTER_DIA/2
+
+ Half_Pitch = float(PITCH)/2
+ Deg_Step = 360.0 /float(DIV)
+ Height_Step = float(PITCH)/float(DIV)
+
+ Crest_Height = float(PITCH) * float(CREST_PERCENT)/float(100)
+ Root_Height = float(PITCH) * float(ROOT_PERCENT)/float(100)
+ Root_to_Crest_Height = Crest_to_Root_Height = (float(PITCH) - (Crest_Height + Root_Height))/2.0
+
+ Col = 0
+ Row = 0
+
+ Height_Offset = Z_LOCATION
+
+ Tapper_Height_Start = Height_Offset - PITCH - PITCH
+
+ Max_Height = Tapper_Height_Start - PITCH
+
+ Lowest_Z_Vert = 0;
+
+ FaceStart = len(verts)
+ for j in range(4):
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ z = max(z,Max_Height)
+ Tapper_Radius = OUTTER_RADIUS
+ if z < Tapper_Height_Start:
+ Tapper_Radius = OUTTER_RADIUS - (Tapper_Height_Start - z)
+
+ x = sin(radians(i*Deg_Step))*(Tapper_Radius)
+ y = cos(radians(i*Deg_Step))*(Tapper_Radius)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ z = max(z,Max_Height)
+ Tapper_Radius = OUTTER_RADIUS
+ if z < Tapper_Height_Start:
+ Tapper_Radius = OUTTER_RADIUS - (Tapper_Height_Start - z)
+
+ x = sin(radians(i*Deg_Step))*(Tapper_Radius)
+ y = cos(radians(i*Deg_Step))*(Tapper_Radius)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Crest_to_Root_Height
+ Row += 1
+
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ z = max(z,Max_Height)
+ Tapper_Radius = OUTTER_RADIUS - (Tapper_Height_Start - z)
+ if Tapper_Radius > INNER_RADIUS:
+ Tapper_Radius = INNER_RADIUS
+
+ x = sin(radians(i*Deg_Step))*(Tapper_Radius)
+ y = cos(radians(i*Deg_Step))*(Tapper_Radius)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_Height
+ Row += 1
+
+ for i in range(DIV+1):
+ z = Height_Offset - (Height_Step*i)
+ z = max(z,Max_Height)
+ Tapper_Radius = OUTTER_RADIUS - (Tapper_Height_Start - z)
+ if Tapper_Radius > INNER_RADIUS:
+ Tapper_Radius = INNER_RADIUS
+
+ x = sin(radians(i*Deg_Step))*(Tapper_Radius)
+ y = cos(radians(i*Deg_Step))*(Tapper_Radius)
+ verts.append([x,y,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Height_Offset -= Root_to_Crest_Height
+ Row += 1
+
+ return verts,Row,Height_Offset,Lowest_Z_Vert
+
+
+
+
+def Create_External_Thread(SHANK_DIA,SHANK_LENGTH,INNER_DIA,OUTTER_DIA,PITCH,LENGTH,CREST_PERCENT,ROOT_PERCENT):
+
+ verts = []
+ faces = []
+
+ DIV = 36
+
+ Total_Row = 0
+ Thread_Len = 0;
+
+ Face_Start = len(verts)
+ Offset = 0.0;
+
+
+ Shank_Verts,Shank_Row,Offset = Create_Shank_Verts(SHANK_DIA,OUTTER_DIA,SHANK_LENGTH,Offset)
+ Total_Row += Shank_Row
+
+ Thread_Start_Verts,Thread_Start_Row,Offset = Create_Thread_Start_Verts(INNER_DIA,OUTTER_DIA,PITCH,CREST_PERCENT,ROOT_PERCENT,Offset)
+ Total_Row += Thread_Start_Row
+
+
+ Thread_Verts,Thread_Row,Offset = Create_Thread_Verts(INNER_DIA,OUTTER_DIA,PITCH,LENGTH,CREST_PERCENT,ROOT_PERCENT,Offset)
+ Total_Row += Thread_Row
+
+
+ Thread_End_Verts,Thread_End_Row,Offset,Lowest_Z_Vert = Create_Thread_End_Verts(INNER_DIA,OUTTER_DIA,PITCH,CREST_PERCENT,ROOT_PERCENT,Offset )
+ Total_Row += Thread_End_Row
+
+
+ verts.extend(Shank_Verts)
+ verts.extend(Thread_Start_Verts)
+ verts.extend(Thread_Verts)
+ verts.extend(Thread_End_Verts)
+
+ faces.extend(Build_Face_List_Quads(Face_Start,DIV,Total_Row -1,0))
+ faces.extend(Fill_Ring_Face(len(verts)-DIV,DIV,1))
+
+ return verts,faces,0.0 - Lowest_Z_Vert
+
+
+##########################################################################################
+##########################################################################################
+## Create Nut
+##########################################################################################
+##########################################################################################
+
+
+def add_Hex_Nut(FLAT,HOLE_DIA,HEIGHT):
+ global Global_Head_Height
+ global Global_NutRad
+
+ verts = []
+ faces = []
+ HOLE_RADIUS = HOLE_DIA * 0.5
+ Half_Flat = FLAT/2
+ Half_Height = HEIGHT/2
+ TopBevelRadius = Half_Flat - 0.05
+
+ Global_NutRad = TopBevelRadius
+
+ Row = 0;
+ Lowest_Z_Vert = 0.0;
+
+ verts.append([0.0,0.0,0.0])
+
+
+ FaceStart = len(verts)
+ #inner hole
+
+ x = sin(radians(0))*HOLE_RADIUS
+ y = cos(radians(0))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/6))*HOLE_RADIUS
+ y = cos(radians(60/6))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/3))*HOLE_RADIUS
+ y = cos(radians(60/3))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/2))*HOLE_RADIUS
+ y = cos(radians(60/2))*HOLE_RADIUS
+ verts.append([x,y,0.0])
+ Row += 1
+
+ #bevel
+
+ x = sin(radians(0))*TopBevelRadius
+ y = cos(radians(0))*TopBevelRadius
+ vec1 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/6))*TopBevelRadius
+ y = cos(radians(60/6))*TopBevelRadius
+ vec2 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/3))*TopBevelRadius
+ y = cos(radians(60/3))*TopBevelRadius
+ vec3 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+
+
+ x = sin(radians(60/2))*TopBevelRadius
+ y = cos(radians(60/2))*TopBevelRadius
+ vec4 = Mathutils.Vector([x,y,0.0])
+ verts.append([x,y,0.0])
+ Row += 1
+
+ #Flats
+
+ x = tan(radians(0))*Half_Flat
+ dvec = vec1 - Mathutils.Vector([x,Half_Flat,0.0])
+ verts.append([x,Half_Flat,-dvec.length])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,-dvec.length)
+
+
+ x = tan(radians(60/6))*Half_Flat
+ dvec = vec2 - Mathutils.Vector([x,Half_Flat,0.0])
+ verts.append([x,Half_Flat,-dvec.length])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,-dvec.length)
+
+
+ x = tan(radians(60/3))*Half_Flat
+ dvec = vec3 - Mathutils.Vector([x,Half_Flat,0.0])
+ Lowest_Point = -dvec.length
+ verts.append([x,Half_Flat,-dvec.length])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,-dvec.length)
+
+ x = tan(radians(60/2))*Half_Flat
+ dvec = vec4 - Mathutils.Vector([x,Half_Flat,0.0])
+ Lowest_Point = -dvec.length
+ verts.append([x,Half_Flat,-dvec.length])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,-dvec.length)
+ Row += 1
+
+ #down Bits Tri
+ x = tan(radians(0))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+
+
+ x = tan(radians(60/6))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+
+ x = tan(radians(60/3))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+
+ x = tan(radians(60/2))*Half_Flat
+ verts.append([x,Half_Flat,Lowest_Point])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,Lowest_Point)
+ Row += 1
+
+ #down Bits
+
+ x = tan(radians(0))*Half_Flat
+ verts.append([x,Half_Flat,-Half_Height])
+
+ x = tan(radians(60/6))*Half_Flat
+ verts.append([x,Half_Flat,-Half_Height])
+
+ x = tan(radians(60/3))*Half_Flat
+ verts.append([x,Half_Flat,-Half_Height])
+
+ x = tan(radians(60/2))*Half_Flat
+ verts.append([x,Half_Flat,-Half_Height])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,-Half_Height)
+ Row += 1
+
+
+
+
+ faces.extend(Build_Face_List_Quads(FaceStart,3,Row - 1))
+
+
+ Global_Head_Height = HEIGHT
+
+ Tvert,tface = Mirror_Verts_Faces(verts,faces,'z',Lowest_Z_Vert)
+ verts.extend(Tvert)
+ faces.extend(tface)
+
+
+ Tvert,tface = Mirror_Verts_Faces(verts,faces,'y')
+ verts.extend(Tvert)
+ faces.extend(tface)
+
+ S_verts,S_faces = SpinDup(verts,faces,360,6,'z')
+ return S_verts,S_faces,TopBevelRadius
+
+
+def add_Nylon_Head(OUTSIDE_RADIUS,Z_LOCATION = 0):
+ DIV = 36
+ verts = []
+ faces = []
+ Row = 0
+
+ INNER_HOLE = OUTSIDE_RADIUS - (OUTSIDE_RADIUS * (1.25/4.75))
+ EDGE_THICKNESS = (OUTSIDE_RADIUS * (0.4/4.75))
+ RAD1 = (OUTSIDE_RADIUS * (0.5/4.75))
+ OVER_ALL_HEIGTH = (OUTSIDE_RADIUS * (2.0/4.75))
+
+
+ FaceStart = len(verts)
+
+ Start_Height = 0 - 3
+ Height_Offset = Z_LOCATION
+ Lowest_Z_Vert = 0
+
+ x = INNER_HOLE
+ z = (Height_Offset - OVER_ALL_HEIGTH) + EDGE_THICKNESS
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+ x = INNER_HOLE
+ z = (Height_Offset - OVER_ALL_HEIGTH)
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+
+ for i in range(180,80,-10):
+ x = sin(radians(i))*RAD1
+ z = cos(radians(i))*RAD1
+ verts.append([(OUTSIDE_RADIUS-RAD1)+x,0.0,((Height_Offset - OVER_ALL_HEIGTH)+RAD1)+z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+
+ x = OUTSIDE_RADIUS - 0
+ z = Height_Offset
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+ sVerts,sFaces = SpinDup(verts,faces,360,DIV,'z')
+ sVerts.extend(verts) #add the start verts to the Spin verts to complete the loop
+
+ faces.extend(Build_Face_List_Quads(FaceStart,Row-1,DIV))
+
+ return Move_Verts_Up_Z(sVerts,0),faces,Lowest_Z_Vert
+
+
+
+def add_Nylon_Part(OUTSIDE_RADIUS,Z_LOCATION = 0):
+ DIV = 36
+ verts = []
+ faces = []
+ Row = 0
+
+ INNER_HOLE = OUTSIDE_RADIUS - (OUTSIDE_RADIUS * (1.5/4.75))
+ EDGE_THICKNESS = (OUTSIDE_RADIUS * (0.4/4.75))
+ RAD1 = (OUTSIDE_RADIUS * (0.5/4.75))
+ OVER_ALL_HEIGTH = (OUTSIDE_RADIUS * (2.0/4.75))
+ PART_THICKNESS = OVER_ALL_HEIGTH - EDGE_THICKNESS
+ PART_INNER_HOLE = (OUTSIDE_RADIUS * (2.5/4.75))
+
+ FaceStart = len(verts)
+
+ Start_Height = 0 - 3
+ Height_Offset = Z_LOCATION
+ Lowest_Z_Vert = 0
+
+
+ x = INNER_HOLE + EDGE_THICKNESS
+ z = Height_Offset
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+ x = PART_INNER_HOLE
+ z = Height_Offset
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+ x = PART_INNER_HOLE
+ z = Height_Offset - PART_THICKNESS
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+ x = INNER_HOLE + EDGE_THICKNESS
+ z = Height_Offset - PART_THICKNESS
+ verts.append([x,0.0,z])
+ Lowest_Z_Vert = min(Lowest_Z_Vert,z)
+ Row += 1
+
+
+ sVerts,sFaces = SpinDup(verts,faces,360,DIV,'z')
+ sVerts.extend(verts) #add the start verts to the Spin verts to complete the loop
+
+ faces.extend(Build_Face_List_Quads(FaceStart,Row-1,DIV))
+
+ return sVerts,faces,0 - Lowest_Z_Vert
+
+
+
+def Nut_Mesh():
+
+ verts = []
+ faces = []
+ Head_Verts = []
+ Head_Faces= []
+
+ Face_Start = len(verts)
+ Thread_Verts,Thread_Faces,New_Nut_Height = Create_Internal_Thread(Minor_Dia.val,Major_Dia.val,Pitch.val,Hex_Nut_Height.val,Crest_Percent.val,Root_Percent.val,1)
+ verts.extend(Thread_Verts)
+ faces.extend(Copy_Faces(Thread_Faces,Face_Start))
+
+ Face_Start = len(verts)
+ Head_Verts,Head_Faces,Lock_Nut_Rad = add_Hex_Nut(Hex_Nut_Flat_Distance.val,Major_Dia.val,New_Nut_Height)
+ verts.extend((Head_Verts))
+ faces.extend(Copy_Faces(Head_Faces,Face_Start))
+
+ LowZ = 0 - New_Nut_Height
+
+ if Nut_Type['LOCK'][0].val:
+ Face_Start = len(verts)
+ Nylon_Head_Verts,Nylon_Head_faces,LowZ = add_Nylon_Head(Lock_Nut_Rad,0-New_Nut_Height)
+ verts.extend((Nylon_Head_Verts))
+ faces.extend(Copy_Faces(Nylon_Head_faces,Face_Start))
+
+ Face_Start = len(verts)
+ Nylon_Verts,Nylon_faces,Temp_LowZ = add_Nylon_Part(Lock_Nut_Rad,0-New_Nut_Height)
+ verts.extend((Nylon_Verts))
+ faces.extend(Copy_Faces(Nylon_faces,Face_Start))
+
+
+ return Move_Verts_Up_Z(verts,0 - LowZ),faces
+
+
+
+##################################################################################################
+
+
+def Create_Nut():
+
+ verts = []
+ faces = []
+
+
+ if Error_Check() :
+ return
+
+
+ verts, faces = Nut_Mesh()
+ Add_Mesh_To_Scene('Nut', verts, faces)
+
+
+##################################################################################################
+
+
+def Create_Bolt():
+ verts = []
+ faces = []
+
+
+ if Error_Check() :
+ return
+
+ verts, faces = MakeBolt()
+ Add_Mesh_To_Scene('Bolt', verts, faces)
+
+
+
+def Remove_Doubles_From_Mesh(verts,faces):
+ Ret_verts = []
+ Ret_faces = []
+
+ is_editmode = Window.EditMode() # Store edit mode state
+ if is_editmode: Window.EditMode(0) # Python must get a mesh in object mode.
+
+ Temp_mesh = Mesh.New('MeshTemp') # create a new mesh
+
+ Temp_mesh.verts.extend(verts) # add vertices to mesh
+ Temp_mesh.faces.extend(faces) # add faces to the mesh (also adds edges)
+
+ scn = Scene.GetCurrent() # link object to current scene
+ Temp_Object = scn.objects.new(Temp_mesh, 'ObjectTemp')
+
+ Temp_mesh.remDoubles(0.010)
+ Temp_mesh.transform(Mathutils.Matrix([Global_Scale,0,0,0], [0,Global_Scale,0,0], [0,0,Global_Scale,0], [0,0,0, Global_Scale]))
+ Ret_verts[:] = [v.co for v in Temp_mesh.verts]
+ Ret_faces[:] = [ [v.index for v in f] for f in Temp_mesh.faces]
+
+ #delete temp mesh
+ scn.objects.unlink(Temp_Object)
+ scn.update(0)
+
+ if is_editmode: Window.EditMode(1)
+ return Ret_verts,Ret_faces
+
+
+
+def Add_Mesh_To_Scene(name, verts, faces):
+
+ scn = Scene.GetCurrent()
+ if scn.lib: return
+ ob_act = scn.objects.active
+
+ is_editmode = Window.EditMode()
+
+ cursor = Window.GetCursorPos()
+ quat = None
+
+ if is_editmode or Blender.Get('add_view_align'): # Aligning seems odd for editmode, but blender does it, oh well
+ try: quat = Blender.Mathutils.Quaternion(Window.GetViewQuat())
+ except: pass
+
+
+ # Exist editmode for non mesh types
+ if ob_act and ob_act.type != 'Mesh' and is_editmode:
+ EditMode(0)
+
+ # We are in mesh editmode
+ if Window.EditMode():
+ me = ob_act.getData(mesh=1)
+
+ if me.multires:
+ error_txt = 'Error%t|Unable to complete action with multires enabled'
+ Blender.Draw.PupMenu(error_txt)
+ print error_txt
+ return
+
+ #Don't want to remove doubles and scale the existing
+ # mesh so we need to get the verts and the faces from
+ # a mesh that has been scaled.
+ verts,faces = Remove_Doubles_From_Mesh(verts, faces)
+
+ # Add to existing mesh
+ # must exit editmode to modify mesh
+ Window.EditMode(0)
+
+ me.sel = False
+
+ vert_offset = len(me.verts)
+ face_offset = len(me.faces)
+
+
+ # transform the verts
+ txmat = Blender.Mathutils.TranslationMatrix(Blender.Mathutils.Vector(cursor))
+ if quat:
+ mat = quat.toMatrix()
+ mat.invert()
+ mat.resize4x4()
+ txmat = mat * txmat
+
+ txmat = txmat * ob_act.matrixWorld.copy().invert()
+
+
+ me.verts.extend(verts)
+ # Transform the verts by the cursor and view rotation
+ me.transform(txmat, selected_only=True)
+
+ if vert_offset:
+ me.faces.extend([[i+vert_offset for i in f] for f in faces])
+ else:
+ # Mesh with no data, unlikely
+ me.faces.extend(faces)
+ else:
+
+ # Object mode add new
+ me = Mesh.New(name)
+ me.verts.extend(verts)
+ me.faces.extend(faces)
+
+
+ me.sel = True
+
+ # Object creation and location
+ scn.objects.selected = []
+ ob_act = scn.objects.new(me, name)
+
+ me.remDoubles(0.010)
+ me.transform(Mathutils.Matrix([Global_Scale,0,0,0], [0,Global_Scale,0,0], [0,0,Global_Scale,0], [0,0,0, Global_Scale]))
+
+ scn.objects.active = ob_act
+
+ if quat:
+ mat = quat.toMatrix()
+ mat.invert()
+ mat.resize4x4()
+ ob_act.setMatrix(mat)
+
+ ob_act.loc = cursor
+
+ me.calcNormals()
+
+ if is_editmode or Blender.Get('add_editmode'):
+ Window.EditMode(1)
+
+ Blender.Redraw(-1)#Redraw all
+
+##################################################################################################
+
+
+
+def Load_Preset():
+
+ global Preset_Menu
+ global Shank_Dia
+ global Shank_Length
+ global Thread_Length
+ global Major_Dia
+ global Minor_Dia
+ global Pitch
+ global Crest_Percent
+ global Root_Percent
+ global Allen_Bit_Flat_Distance
+ global Allen_Bit_Depth
+ global Head_Height
+ global Hex_Head_Flat_Distance
+ global Head_Dia
+ global Dome_Head_Dia
+ global Pan_Head_Dia
+ global Philips_Bit_Dia
+ global Phillips_Bit_Depth
+ global Cap_Head_Height
+
+ global Hex_Nut_Height
+ global Hex_Nut_Flat_Distance
+
+
+ if Preset_Menu.val == 1 : #M3
+ Shank_Dia.val = 3.0
+ #Pitch.val = 0.5 #Coarse
+ Pitch.val = 0.35 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 3.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 5.5
+ Hex_Head_Height.val = 2.0
+ Cap_Head_Dia.val = 5.5
+ Cap_Head_Height.val = 3.0
+ Allen_Bit_Flat_Distance.val = 2.5
+ Allen_Bit_Depth.val = 1.5
+ Pan_Head_Dia.val = 5.6
+ Dome_Head_Dia.val = 5.6
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 2.4
+ Hex_Nut_Flat_Distance.val = 5.5
+ Thread_Length.val = 6
+ Shank_Length.val = 0.0
+
+
+ if Preset_Menu.val == 2 : #M4
+ Shank_Dia.val = 4.0
+ #Pitch.val = 0.7 #Coarse
+ Pitch.val = 0.5 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 4.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 7.0
+ Hex_Head_Height.val = 2.8
+ Cap_Head_Dia.val = 7.0
+ Cap_Head_Height.val = 4.0
+ Allen_Bit_Flat_Distance.val = 3.0
+ Allen_Bit_Depth.val = 2.0
+ Pan_Head_Dia.val = 8.0
+ Dome_Head_Dia.val = 8.0
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 3.2
+ Hex_Nut_Flat_Distance.val = 7.0
+ Thread_Length.val = 8
+ Shank_Length.val = 0.0
+
+
+ if Preset_Menu.val == 3 : #M5
+ Shank_Dia.val = 5.0
+ #Pitch.val = 0.8 #Coarse
+ Pitch.val = 0.5 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 5.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 8.0
+ Hex_Head_Height.val = 3.5
+ Cap_Head_Dia.val = 8.5
+ Cap_Head_Height.val = 5.0
+ Allen_Bit_Flat_Distance.val = 4.0
+ Allen_Bit_Depth.val = 2.5
+ Pan_Head_Dia.val = 9.5
+ Dome_Head_Dia.val = 9.5
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 4.0
+ Hex_Nut_Flat_Distance.val = 8.0
+ Thread_Length.val = 10
+ Shank_Length.val = 0.0
+
+
+ if Preset_Menu.val == 4 : #M6
+ Shank_Dia.val = 6.0
+ #Pitch.val = 1.0 #Coarse
+ Pitch.val = 0.75 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 6.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 10.0
+ Hex_Head_Height.val = 4.0
+ Cap_Head_Dia.val = 10.0
+ Cap_Head_Height.val = 6.0
+ Allen_Bit_Flat_Distance.val = 5.0
+ Allen_Bit_Depth.val = 3.0
+ Pan_Head_Dia.val = 12.0
+ Dome_Head_Dia.val = 12.0
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 5.0
+ Hex_Nut_Flat_Distance.val = 10.0
+ Thread_Length.val = 12
+ Shank_Length.val = 0.0
+
+
+ if Preset_Menu.val == 5 : #M8
+ Shank_Dia.val = 8.0
+ #Pitch.val = 1.25 #Coarse
+ Pitch.val = 1.00 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 8.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 13.0
+ Hex_Head_Height.val = 5.3
+ Cap_Head_Dia.val = 13.5
+ Cap_Head_Height.val = 8.0
+ Allen_Bit_Flat_Distance.val = 6.0
+ Allen_Bit_Depth.val = 4.0
+ Pan_Head_Dia.val = 16.0
+ Dome_Head_Dia.val = 16.0
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 6.5
+ Hex_Nut_Flat_Distance.val = 13.0
+ Thread_Length.val = 16
+ Shank_Length.val = 0.0
+
+ if Preset_Menu.val == 6 : #M10
+ Shank_Dia.val = 10.0
+ #Pitch.val = 1.5 #Coarse
+ Pitch.val = 1.25 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 10.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 17.0
+ Hex_Head_Height.val = 6.4
+ Cap_Head_Dia.val = 16.0
+ Cap_Head_Height.val = 10.0
+ Allen_Bit_Flat_Distance.val = 8.0
+ Allen_Bit_Depth.val = 5.0
+ Pan_Head_Dia.val = 20.0
+ Dome_Head_Dia.val = 20.0
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 8.0
+ Hex_Nut_Flat_Distance.val = 17.0
+ Thread_Length.val = 20
+ Shank_Length.val = 0.0
+
+
+ if Preset_Menu.val == 7 : #M12
+ #Pitch.val = 1.75 #Coarse
+ Pitch.val = 1.50 #Fine
+ Crest_Percent.val = 10
+ Root_Percent.val = 10
+ Major_Dia.val = 12.0
+ Minor_Dia.val = Major_Dia.val - (1.082532 * Pitch.val)
+ Hex_Head_Flat_Distance.val = 19.0
+ Hex_Head_Height.val = 7.5
+ Cap_Head_Dia.val = 18.5
+ Cap_Head_Height.val = 12.0
+ Allen_Bit_Flat_Distance.val = 10.0
+ Allen_Bit_Depth.val = 6.0
+ Pan_Head_Dia.val = 24.0
+ Dome_Head_Dia.val = 24.0
+ Philips_Bit_Dia.val = Pan_Head_Dia.val*(1.82/5.6)
+ Phillips_Bit_Depth.val = Get_Phillips_Bit_Height(Philips_Bit_Dia.val)
+ Hex_Nut_Height.val = 10.0
+ Hex_Nut_Flat_Distance.val = 19.0
+ Shank_Dia.val = 12.0
+ Shank_Length.val = 33.0
+ Thread_Length.val = 32.0
+
+##############################################################################################
+
+def Test():
+ verts = []
+ faces = []
+
+ if Error_Check() :
+ return
+
+ verts, faces = MakeBolt()
+
+ Add_Mesh_To_Scene("TestBolt", verts,faces)
+
+ Window.Redraw(-1)
+
+
+
+
+def event(evt, val): # the function to handle input events
+
+ if evt == Draw.ESCKEY:
+ Draw.Exit() # exit when user presses ESC
+ return
+
+
+def button_event(evt): # the function to handle Draw Button events
+
+ if evt == On_Exit_Click:
+ Draw.Exit() # exit when user presses ESC
+ return
+
+ if evt == On_Test_Click:
+ Test()
+ Draw.Redraw(1)
+
+ if evt == On_Preset_Click:
+ Load_Preset()
+ Draw.Redraw(1)
+
+ if evt == On_Create_Click:
+ if Model_Type['BOLT'][0].val:
+ Create_Bolt()
+ if Model_Type['NUT'][0].val:
+ Create_Nut()
+ Draw.Redraw(1)
+
+ elif (evt in [On_Hex_Click, On_Cap_Click,On_Dome_Click,On_Pan_Click]):
+ for k in Head_Type.iterkeys():
+ if Head_Type[k][1]!=evt:
+ Head_Type[k][0].val=0
+ else:
+ Head_Type[k][0].val=1
+ Draw.Redraw(1)
+
+ elif (evt in [On_Bit_None_Click,On_Bit_Allen_Click,On_Bit_Philips_Click]):
+ for k in Bit_Type.iterkeys():
+ if Bit_Type[k][1]!=evt:
+ Bit_Type[k][0].val=0
+ else:
+ Bit_Type[k][0].val=1
+ Draw.Redraw(1)
+
+ elif (evt in [On_Model_Bolt_Click,On_Model_Nut_Click]):
+ for k in Model_Type.iterkeys():
+ if Model_Type[k][1]!=evt:
+ Model_Type[k][0].val=0
+ else:
+ Model_Type[k][0].val=1
+ Draw.Redraw(1)
+
+ elif (evt in [On_Hex_Nut_Click,On_Lock_Nut_Click]):
+ for k in Nut_Type.iterkeys():
+ if Nut_Type[k][1]!=evt:
+ Nut_Type[k][0].val=0
+ else:
+ Nut_Type[k][0].val=1
+ Draw.Redraw(1)
+
+#####################################################################################
+
+
+def Draw_Border(X1,Y1,X2,Y2): # X1,Y1 = Top Left X2,Y2 = Bottom Right
+ INDENT = 3
+
+ BGL.glColor3f(1.0,1.0,1.0)
+ BGL.glBegin(BGL.GL_LINES)
+ BGL.glVertex2i(X1+INDENT,Y1-INDENT) #top line
+ BGL.glVertex2i(X2-INDENT,Y1-INDENT)
+
+ BGL.glVertex2i(X1+INDENT,Y1-INDENT) #left line
+ BGL.glVertex2i(X1+INDENT,Y2+INDENT)
+ BGL.glEnd()
+
+ BGL.glColor3f(0.5,0.5,0.5)
+ BGL.glBegin(BGL.GL_LINES)
+ BGL.glVertex2i(X2-INDENT,Y1-INDENT) #Right line
+ BGL.glVertex2i(X2-INDENT,Y2+INDENT)
+
+ BGL.glVertex2i(X1+INDENT,Y2+INDENT) #bottom line
+ BGL.glVertex2i(X2-INDENT,Y2+INDENT)
+ BGL.glEnd()
+
+
+
+
+def Create_Tab(X1,Y1,X2,Y2,Title,Buttons): # X1,Y1 = Top Left X2,Y2 = Bottom Right
+
+ BIT_BUTTON_WIDTH = 55
+ BIT_BUTTON_HEIGHT = 18
+ TITLE_HEIGHT = 15
+ INDENT = 6
+ BUTTON_GAP = 4
+
+ BGL.glColor3f(0.75, 0.75, 0.75)
+ BGL.glRecti(X1,Y1,X2,Y2)
+
+ Draw_Border(X1,Y1,X2,Y2);
+
+ BGL.glColor3f(0.0,0.0,0.0)
+ BGL.glRasterPos2d(X1+INDENT,Y1 - TITLE_HEIGHT)
+ Draw.Text(Title)
+
+ Button_X = X1 + INDENT
+ Button_Y = Y1 - TITLE_HEIGHT - BIT_BUTTON_HEIGHT - 8
+
+ #Nut_Number_X = Nut_Button_X
+ #Nut_Number_Y = Nut_Button_Y - 25
+ if (Buttons != 0):
+ key= Buttons.keys()
+ for k in key:
+ Buttons[k][0]= Draw.Toggle(k,Buttons[k][1],Button_X,Button_Y, BIT_BUTTON_WIDTH,BIT_BUTTON_HEIGHT,Buttons[k][0].val,Buttons[k][2])
+ Button_X += BIT_BUTTON_WIDTH + BUTTON_GAP
+
+
+
+def Dispaly_Title_Bar(Y_POS,CONTROL_HEIGHT):
+ CONTROL_WIDTH = 250
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS -CONTROL_HEIGHT,"Bolt Factory V2.00",Model_Type)
+
+
+
+def Dispaly_Preset_Tab(Y_POS,CONTROL_HEIGHT):
+ CONTROL_WIDTH = 250
+ BUTTON_Y_OFFSET = 40
+
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS-CONTROL_HEIGHT,"Preset",0)
+
+ name = "M3%x1|M4%x2|M5%x3|M6%x4|M8%x5|M10%x6|M12%x7"
+
+ global Preset_Menu
+ Preset_Menu = Draw.Menu(name,No_Event,9,Y_POS-BUTTON_Y_OFFSET,50,18, Preset_Menu.val, "Predefined metric screw sizes.")
+ Draw.Button("Apply",On_Preset_Click,150,Y_POS-BUTTON_Y_OFFSET,55,18,"Apply the preset screw sizes.")
+
+
+def Dispaly_Bit_Tab(Y_POS,CONTROL_HEIGHT):
+
+ CONTROL_WIDTH = 250
+ NUMBER_HEIGHT = 18
+ NUMBER_WIDTH = CONTROL_WIDTH -3-3-3-3-3
+
+ Bit_Number_X = 3+3+3
+ Bit_Number_Y = Y_POS - 64
+
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS-CONTROL_HEIGHT,"Bit Type",Bit_Type)
+
+ if Bit_Type['NONE'][0].val:
+ DoNothing = 1;
+
+ elif Bit_Type['ALLEN'][0].val:
+ global Allen_Bit_Depth
+ Allen_Bit_Depth = Draw.Number('Bit Depth: ',No_Event,Bit_Number_X,Bit_Number_Y,NUMBER_WIDTH, NUMBER_HEIGHT,Allen_Bit_Depth.val, 0,100, '')
+ Bit_Number_Y -= NUMBER_HEIGHT
+ global Allen_Bit_Flat_Distance
+ Allen_Bit_Flat_Distance = Draw.Number('Flat Dist: ',No_Event,Bit_Number_X,Bit_Number_Y,NUMBER_WIDTH,NUMBER_HEIGHT,Allen_Bit_Flat_Distance.val, 0,100, '')
+ Bit_Number_Y -= NUMBER_HEIGHT
+
+ elif Bit_Type['PHILLIPS'][0].val:
+ global Phillips_Bit_Depth
+ Phillips_Bit_Depth = Draw.Number('Bit Depth: ',No_Event,Bit_Number_X,Bit_Number_Y,NUMBER_WIDTH, NUMBER_HEIGHT,Phillips_Bit_Depth.val, 0,100, '')
+ Bit_Number_Y -= NUMBER_HEIGHT
+ global Philips_Bit_Dia
+ Philips_Bit_Dia = Draw.Number('Bit Dia: ',No_Event,Bit_Number_X,Bit_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Philips_Bit_Dia.val, 0,100, '')
+ Bit_Number_Y -= NUMBER_HEIGHT
+
+
+
+def Dispaly_Shank_Tab(Y_POS,CONTROL_HEIGHT):
+
+ CONTROL_WIDTH = 250
+ NUMBER_HEIGHT = 18
+ NUMBER_WIDTH = CONTROL_WIDTH -3-3-3-3-3
+
+ Number_X = 3+3+3
+ Number_Y_Pos = Y_POS - 40
+
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS-CONTROL_HEIGHT,"Shank",0)
+
+ global Shank_Length
+ Shank_Length = Draw.Number('Shank Length: ',No_Event,Number_X,Number_Y_Pos,NUMBER_WIDTH,NUMBER_HEIGHT, Shank_Length.val, 0,MAX_INPUT_NUMBER, 'some text tip')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+ global Shank_Dia
+ Shank_Dia = Draw.Number('Shank Dia: ',No_Event,Number_X,Number_Y_Pos,NUMBER_WIDTH,NUMBER_HEIGHT, Shank_Dia.val, 0,MAX_INPUT_NUMBER, 'some text tip')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+
+
+def Dispaly_Thread_Tab(Y_POS,CONTROL_HEIGHT):
+
+ CONTROL_WIDTH = 250
+ NUMBER_HEIGHT = 18
+ NUMBER_WIDTH = CONTROL_WIDTH -3-3-3-3-3
+
+
+ Number_X = 3+3+3
+ Number_Y_Pos = Y_POS - 40
+
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS-CONTROL_HEIGHT,"Thread",0)
+
+ global Thread_Length
+ if Model_Type['BOLT'][0].val:
+ Thread_Length = Draw.Number('Thread Length: ',No_Event, Number_X,Number_Y_Pos,NUMBER_WIDTH,NUMBER_HEIGHT, Thread_Length.val, 0,MAX_INPUT_NUMBER, '')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+ global Major_Dia
+ Major_Dia = Draw.Number('Major Dia: ',No_Event,Number_X,Number_Y_Pos, NUMBER_WIDTH,NUMBER_HEIGHT, Major_Dia.val, 0,MAX_INPUT_NUMBER, '')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+ global Minor_Dia
+ Minor_Dia = Draw.Number('Minor Dia: ',No_Event,Number_X,Number_Y_Pos, NUMBER_WIDTH,NUMBER_HEIGHT, Minor_Dia.val, 0,MAX_INPUT_NUMBER, '')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+ global Pitch
+ Pitch = Draw.Number('Pitch: ',No_Event,Number_X,Number_Y_Pos,NUMBER_WIDTH,NUMBER_HEIGHT, Pitch.val, 0.1,7.0, '')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+ global Crest_Percent
+ Crest_Percent = Draw.Number('Crest %: ',No_Event,Number_X,Number_Y_Pos,NUMBER_WIDTH,NUMBER_HEIGHT,Crest_Percent.val, 1,90, '')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+ global Root_Percent
+ Root_Percent = Draw.Number('Root %: ',No_Event,Number_X,Number_Y_Pos,NUMBER_WIDTH,NUMBER_HEIGHT,Root_Percent.val, 1,90, '')
+ Number_Y_Pos -= NUMBER_HEIGHT
+
+
+
+
+def Dispaly_Head_Tab(Y_POS,CONTROL_HEIGHT):
+
+ CONTROL_WIDTH = 250
+ NUMBER_HEIGHT = 18
+ NUMBER_WIDTH = CONTROL_WIDTH -3-3-3-3-3
+
+ Head_Number_X = 3+3+3
+ Head_Number_Y = Y_POS - 64
+
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS-CONTROL_HEIGHT,"Head Type",Head_Type)
+
+ if Head_Type['HEX'][0].val:
+ global Hex_Head_Height
+ Hex_Head_Height = Draw.Number('Head Height: ',No_Event,Head_Number_X ,Head_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Hex_Head_Height.val, 0,100, '')
+ Head_Number_Y -= NUMBER_HEIGHT
+ global Hex_Head_Flat_Distance
+ Hex_Head_Flat_Distance = Draw.Number('Head Hex Flat Distance ',No_Event,Head_Number_X,Head_Number_Y,NUMBER_WIDTH, NUMBER_HEIGHT,Hex_Head_Flat_Distance.val, 0,MAX_INPUT_NUMBER, '')
+ Head_Number_Y -= NUMBER_HEIGHT
+
+ elif Head_Type['CAP'][0].val:
+ global Cap_Head_Height
+ Cap_Head_Height = Draw.Number('Head Height: ',No_Event, Head_Number_X,Head_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Cap_Head_Height.val, 0,100, '')
+ Head_Number_Y -= NUMBER_HEIGHT
+ global Cap_Head_Dia
+ Cap_Head_Dia = Draw.Number('Head Dia ',No_Event,Head_Number_X,Head_Number_Y,NUMBER_WIDTH, NUMBER_HEIGHT,Cap_Head_Dia.val, 0,MAX_INPUT_NUMBER, '')
+ Head_Number_Y -= NUMBER_HEIGHT
+
+ elif Head_Type['DOME'][0].val:
+ global Dome_Head_Dia
+ Dome_Head_Dia = Draw.Number(' Dome Head Dia ',No_Event,Head_Number_X,Head_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Dome_Head_Dia.val, 0,MAX_INPUT_NUMBER, '')
+ Head_Number_Y -= NUMBER_HEIGHT
+
+ elif Head_Type['PAN'][0].val:
+ global Pan_Head_Dia
+ Pan_Head_Dia = Draw.Number('Pan Head Dia ',No_Event,Head_Number_X,Head_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Pan_Head_Dia.val, 0,MAX_INPUT_NUMBER, '')
+ Head_Number_Y -= NUMBER_HEIGHT
+
+
+
+
+def Dispaly_Nut_Tab(Y_POS,CONTROL_HEIGHT):
+
+ CONTROL_WIDTH = 250
+ NUMBER_HEIGHT = 18
+ NUMBER_WIDTH = CONTROL_WIDTH -3-3-3-3-3
+
+ Nut_Number_X = 3+3+3
+ Nut_Number_Y = Y_POS - 64
+
+ Create_Tab(3,Y_POS,CONTROL_WIDTH,Y_POS-CONTROL_HEIGHT,"Nut Type",Nut_Type)
+
+ #if Nut_Type['HEX'][0].val:
+ global Hex_Nut_Height
+ Hex_Nut_Height = Draw.Number('Nut Height: ',No_Event,Nut_Number_X ,Nut_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Hex_Nut_Height.val, 0,MAX_INPUT_NUMBER, '')
+ Nut_Number_Y -= NUMBER_HEIGHT
+ global Hex_Nut_Flat_Distance
+ Hex_Nut_Flat_Distance = Draw.Number('Nut Flat Distance ',No_Event,Nut_Number_X,Nut_Number_Y, NUMBER_WIDTH, NUMBER_HEIGHT,Hex_Nut_Flat_Distance.val, 0,MAX_INPUT_NUMBER, '')
+ Nut_Number_Y -= NUMBER_HEIGHT
+
+
+def Dispaly_Bolt_Tab():
+
+ Dispaly_Shank_Tab(284,66)
+ Dispaly_Head_Tab(374,90)
+ Dispaly_Bit_Tab(464,90)
+
+
+##########################################################################################
+
+def gui(): # the function to draw the screen
+
+ CONTROL_WIDTH = 250
+
+ BGL.glClearColor(0.6, 0.6, 0.6, 1.0)
+ BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
+
+ BGL.glColor3f(0.75, 0.75, 0.75)
+ BGL.glRecti(3,30,CONTROL_WIDTH,3)
+
+ Dispaly_Title_Bar(514,50);
+
+ if Model_Type['BOLT'][0].val:
+ Dispaly_Bolt_Tab();
+
+ if Model_Type['NUT'][0].val:
+ Dispaly_Nut_Tab(464,246);
+
+ Dispaly_Thread_Tab(218,138)
+
+ Dispaly_Preset_Tab(80,50)
+
+ Draw.PushButton("Create",On_Create_Click,6,8,55,18,"Create Bolt")
+ Draw.Button("Exit",On_Exit_Click,6+55+4,8,55,18)
+
+# Draw.Button("Test",On_Test_Click,150,10,55,20)
+
+Load_Preset()
+Draw.Register(gui, event, button_event) # registering the 3 callbacks
diff --git a/release/scripts/wizard_curve2tree.py b/release/scripts/wizard_curve2tree.py
index 1965f9a5070..07b45c1986f 100644
--- a/release/scripts/wizard_curve2tree.py
+++ b/release/scripts/wizard_curve2tree.py
@@ -39,7 +39,7 @@ __bpydoc__ = """\
import bpy
import Blender
import BPyMesh
-from Blender.Mathutils import Vector, Matrix, CrossVecs, AngleBetweenVecs, LineIntersect, TranslationMatrix, ScaleMatrix, RotationMatrix, Rand
+from Blender.Mathutils import Vector, Matrix, AngleBetweenVecs, LineIntersect, TranslationMatrix, ScaleMatrix, RotationMatrix, Rand
from Blender.Geometry import ClosestPointOnLine
from Blender.Noise import randuvec
@@ -496,12 +496,12 @@ class tree:
# Align this with the existing branch
angle = AngleBetweenVecsSafe(zup, parent_pt.no)
- cross = CrossVecs(zup, parent_pt.no)
+ cross = zup.cross(parent_pt.no)
mat_align = RotationMatrix(angle, 3, 'r', cross)
# Use the bend on the point to work out which way to make the branch point!
- if parent_pt.prev: cross = CrossVecs(parent_pt.no, parent_pt.prev.no - parent_pt.no)
- else: cross = CrossVecs(parent_pt.no, parent_pt.next.no - parent_pt.no)
+ if parent_pt.prev: cross = parent_pt.no.cross(parent_pt.prev.no - parent_pt.no)
+ else: cross = parent_pt.no.cross(parent_pt.next.no - parent_pt.no)
if parent_pt.branch.parent_pt:
angle = AngleBetweenVecsSafe(parent_pt.branch.parent_pt.no, parent_pt.no)
@@ -1065,8 +1065,8 @@ class tree:
l = line_normal.length
- cross1 = CrossVecs( seg.no, line_normal )
- cross2 = CrossVecs( pt.no, line_normal )
+ cross1 = seg.no.cross(line_normal)
+ cross2 = pt.no.cross(line_normal)
angle_line = min(AngleBetweenVecsSafe(cross1, cross2), AngleBetweenVecsSafe(cross1, -cross2))
angle_leaf_no_diff = min(AngleBetweenVecsSafe(line_normal, seg.no), AngleBetweenVecsSafe(line_normal, -seg.no))
@@ -1914,8 +1914,8 @@ class tree:
# endpoints dont rotate
if pt.next != None:
- cross1 = CrossVecs(zup, pt.no) # use this to offset the leaf later
- cross2 = CrossVecs(cross1, pt.no)
+ cross1 = zup.cross(pt.no) # use this to offset the leaf later
+ cross2 = cross1.cross(pt.no)
if odd_even ==0:
mat_yaw = RotationMatrix(leaf_branch_angle, 3, 'r', cross2)
else:
@@ -1939,7 +1939,7 @@ class tree:
# Randomize pitch and roll for the leaf
# work out the axis to pitch and roll
- cross1 = CrossVecs(zup, leaf_no) # use this to offset the leaf later
+ cross1 = zup.cross(leaf_no) # use this to offset the leaf later
if leaf_branch_pitch_rand or leaf_branch_pitch_angle:
angle = -leaf_branch_pitch_angle
@@ -2480,7 +2480,7 @@ class bpoint(object):
def calcVerts(self):
if self.prev == None:
if self.branch.parent_pt:
- cross = CrossVecs(self.no, self.branch.parent_pt.no) * RotationMatrix(-45, 3, 'r', self.no)
+ cross = self.no.cross(self.branch.parent_pt.no) * RotationMatrix(-45, 3, 'r', self.no)
else:
# parentless branch - for best results get a cross thats not the same as the normal, in rare cases this happens.
@@ -2493,9 +2493,9 @@ class bpoint(object):
else: cross = xup
else:
- cross = CrossVecs(self.prev.vecs[0], self.no)
+ cross = self.prev.vecs[0].cross(self.no)
- self.vecs[0] = Blender.Mathutils.CrossVecs(self.no, cross)
+ self.vecs[0] = self.no.cross(cross)
self.vecs[0].length = abs(self.radius)
mat = RotationMatrix(90, 3, 'r', self.no)
self.vecs[1] = self.vecs[0] * mat
@@ -2660,8 +2660,8 @@ class branch:
self_normal = self.bpoints[1].co - self.parent_pt.co
# We only want the angle in relation to the parent points normal
# modify self_normal to make this so
- cross = CrossVecs(self_normal, self.parent_pt.no)
- self_normal = CrossVecs(self.parent_pt.no, cross) # CHECK
+ cross = self_normal.cross(self.parent_pt.no)
+ self_normal = self.parent_pt.no.cross(cross) # CHECK
#try: angle = AngleBetweenVecs(parent_normal, self_normal)
#except: return 0.0
@@ -2670,7 +2670,7 @@ class branch:
# see if we need to rotate positive or negative
# USE DOT PRODUCT!
- cross = CrossVecs(parent_normal, self_normal)
+ cross = parent_normal.cross(self_normal)
if AngleBetweenVecsSafe(cross, self.parent_pt.no) > 90:
angle = -angle
@@ -3018,7 +3018,7 @@ class branch:
scales = []
for cos_ls in (cos1, cos2):
- cross = CrossVecs(cos_ls[-1], zup)
+ cross = cos_ls[-1].cross(zup)
mat = RotationMatrix(AngleBetweenVecsSafe(cos_ls[-1], zup), 3, 'r', cross)
cos_ls[:] = [co*mat for co in cos_ls]
@@ -3029,7 +3029,7 @@ class branch:
for co in cos_ls:
xy_nor.x += co.x
xy_nor.y += co.y
- cross = CrossVecs(xy_nor, xup)
+ cross = xy_nor.cross(xup)
# Also scale them here so they are 1.0 tall always
scale = 1.0/(cos_ls[0]-cos_ls[-1]).length
diff --git a/release/scripts/wizard_landscape_ant.py b/release/scripts/wizard_landscape_ant.py
new file mode 100644
index 00000000000..405c06432ca
--- /dev/null
+++ b/release/scripts/wizard_landscape_ant.py
@@ -0,0 +1,2148 @@
+#!BPY
+"""
+Name: 'Landscape Generator (A.N.T)'
+Blender: 248
+Group: 'Wizards'
+Tip: 'Create landscape mesh.'
+"""
+
+__author__ = "Jimmy Hazevoet"
+__url__ = ('http://wiki.blender.org/index.php/Scripts/Manual/Wizards/ANTLandscape','elysiun')
+__version__ = "v.1.05 03-2007"
+__bpydoc__ = """\
+
+Another Noise Tool 'Landscape' v.1.05
+
+This script uses noise functions to create a terrain from a grid mesh.
+
+Usage:
+
+Make new terrain: press the "Add New Grid" button, change some noise settings and press the "Update" button.
+
+Work on previous made grid: select the grid/terrain in the 3D view, and press the "Assign" button.
+
+Tip: use a low resolution grid mesh and add some Multires levels for detail
+
+Note: when using Multires materials can get weird,
+only apply materials when your terrain is ready, or not use Multires.
+
+This Script creates a landscape mesh.
+Press the Auto button when you start the script.
+Then the Generate Button & read it's tooltip.
+The mesh created is average 16000 verts.
+To me the mesh appears quite small in the 3d view.
+Just Press S in the 3d view to scale it up.
+This saves overhead drawing the Mesh.
+
+Known Issues:
+If the mesh is not drawn in the 3d view first time,
+Move your mouse to the 3d view, or press the button again.
+
+Not really an issue, more to be aware.
+Due to the complex nature & design of the script, it only creates one mesh at a time.
+When you press Generate or Reset,
+Even if you have Closed then Opened the script or .blend file,
+The mesh Will be Overwritten.
+To create Multiple Landscapes you Must Re-Name or save the Mesh
+in Blender's F7 menu Links & Materials Panel.
+
+Readme:
+v.1.04:
+_ New G.U.I.
+_ New noise types like:
+Double_Terrain,
+StatsByAlt_Terrain,
+slickRock,
+ditorted_heteroTerrain,
+vlNoise_turbulence,
+and many more.
+
+New fractalized Effect functions.
+Effect types such as: gradient,
+waves and bumps, dome, piramide,
+squares, grid, shattered rocks,
+lunar, and many more.
+
+Bias types: Sin, Cos, Tri, Saw,
+and Default(no bias).
+
+For example the 'Rings' effect
+with 'Sin Bias' makes 'Rings'
+and 'Default Bias' makes 'Dome'.
+The Effect 'Mix factor' Slider gives control over how much of the Effect is vissible,
+-1.0=noise, 0.0=average, 1.0=effect
+this slider controls also the 'Warp amount' if mix type 'Warp' is selected.
+
+Image effect: mix image with noise
+_ IPOCurve Filter: use Ipo curve to filter terrain height.
+I know it's a bit strange to use animation curves for landscape modelling, (actualy i want a curves panel in my G.U.I. but i dont know how to do that)
+the downside of this method is that you have this 'Empty' moving around in your scene, so put it on another layer and 'Pin' the Ipo block so that it stays visible.
+Usage:
+Add one 'Empty' Object to your scene, now add one Loc Key at Frame 1, go to Frame 101 (UpArrow ten times),
+move the 'Empty' +100 units in X+ direction and add another Loc Key, open the Ipo Curve Editor Window, rename this IpoBlock if you want,
+Copie the first curve to buffer and Paste it in the empty slots (from top to bottom), now you can edit the curves freely.
+(use the 'Pin' option to keep the curves visible while other objects are selected)
+Set the CurveLength and CurveHeight Button value's according to the length and height of the selected curve.
+A curve filter is very versatile when it comes to 'height' filtering.
+
+_ PreView in UV/Image Editor Window:
+The preview image is now rendered as Blender.Image and will be saved to file directory as 'ANTview_size.tga'
+you have to select 'ANTview_size.tga' in the UV/Image Editor Window
+now it's posible to render and save a large HeightMap image (you can also create nice texture images when the VertCol gradient is enabled),
+! If you Change the preview image Size a New Blender.Image object is created. (one for size 256, one for size 512 one for.....) !
+
+_ VertexColours: use any image as colour gradient.
+This function actualy uses one 'row' of pixels from a image to produce the color gradient,
+Make one or more custom gradient images with the Gimp or any other graphics software, the gradients must go from left to right (left is bottom and right is top.
+you only need one row of pixels so you can put 10 gradients in a 256*10 image.(higher resolutions like 512*n or 1024*n gives smoother result)
+Set Window DrawMode 'Textured' , and set the 'VCol Paint' option in the Materials panel !
+
+_ Mesh Tiles: Create large scale terrains.
+
+_ Vertices Selection: select flat areas.
+
+_ Keyboard HotKeys:
+SPACE = Update mesh.
+R = Randomise.
+V = Redraw preview.
+
+_ and more...
+
+"""
+
+
+
+
+###
+#
+# Alt+P to start script.
+#
+###
+# scroll down to see info about updates
+##
+################################################################################################################
+# Another Noise Tool 'Landscape'
+# Jimmy Hazevoet
+# license: Do whatever you want with it.
+################################################################################################################
+
+################################################################################################################
+# v.1.04:
+#
+# _ New G.U.I.
+# _ New noise types like: Double_Terrain, StatsByAlt_Terrain, slickRock, ditorted_heteroTerrain, vlNoise_turbulence, and many more.
+# _ New fractalized Effect functions.
+# Effect types such as: gradient, waves and bumps, dome, piramide, squares, grid, shattered rocks, lunar, and many more.
+# Bias types: Sin, Cos, Tri, Saw, and Default(no bias).
+# For example the 'Rings' effect with 'Sin Bias' makes 'Rings' and 'Default Bias' makes 'Dome'.
+# _ The Effect 'Mix factor' Slider gives control over how much of the Effect is vissible, -1.0=noise, 0.0=average, 1.0=effect
+# this slider controls also the 'Warp amount' if mix type 'Warp' is selected.
+# _ Image effect: mix image with noise
+# _ IPOCurve Filter: use Ipo curve to filter terrain height.
+# I know it's a bit strange to use animation curves for landscape modelling, (actualy i want a curves panel in my G.U.I. but i dont know how to do that)
+# the downside of this method is that you have this 'Empty' moving around in your scene, so put it on another layer and 'Pin' the Ipo block so that it stays visible.
+# Usage:
+# Add one 'Empty' Object to your scene, now add one Loc Key at Frame 1, go to Frame 101 (UpArrow ten times),
+# move the 'Empty' +100 units in X+ direction and add another Loc Key, open the Ipo Curve Editor Window, rename this IpoBlock if you want,
+# Copie the first curve to buffer and Paste it in the empty slots (from top to bottom), now you can edit the curves freely.
+# (use the 'Pin' option to keep the curves visible while other objects are selected)
+# Set the CurveLength and CurveHeight Button value's according to the length and height of the selected curve.
+# A curve filter is very versatile when it comes to 'height' filtering.
+# _ PreView in UV/Image Editor Window:
+# The preview image is now rendered as Blender.Image and will be saved to file directory as 'ANTview_size.tga'
+# you have to select 'ANTview_size.tga' in the UV/Image Editor Window
+# now it's posible to render and save a large HeightMap image (you can also create nice texture images when the VertCol gradient is enabled),
+# ! If you Change the preview image Size a New Blender.Image object is created. (one for size 256, one for size 512 one for.....) !
+# _ VertexColours: use any image as colour gradient.
+# This function actualy uses one 'row' of pixels from a image to produce the color gradient,
+# Make one or more custom gradient images with the Gimp or any other graphics software, the gradients must go from left to right (left is bottom and right is top.
+# you only need one row of pixels so you can put 10 gradients in a 256*10 image.(higher resolutions like 512*n or 1024*n gives smoother result)
+# Set Window DrawMode 'Textured' , and set the 'VCol Paint' option in the Materials panel !
+# _ Mesh Tiles: Create large scale terrains.
+# _ Vertices Selection: select flat areas.
+# _ Keyboard HotKeys:
+# SPACE = Update mesh.
+# R = Randomise.
+# V = Redraw preview.
+# _ and more...
+################################################################################################################
+
+################################################################################################################
+# BugFix: Sept./2006 v.1.04a
+#-----------------------------
+# _Image Effect did not worked well with tiled mesh. Fixed (now use Freq. and Loc. buttons to scale and position image).
+#
+################################################################################################################
+
+
+################################################################################################################
+# UPDATE: v.1.05 03-2007
+#---------------------------------------------------------------------------------------------------------------
+#
+# _ New: Save and Load function, save your settings to a .ant file.
+# __NOTE: when saving/loading settings to/from a file,
+# make sure the filename/path is not too long!
+# __HOTKEY__ Load from file: L
+# __HOTKEY__ Save to file : S
+#
+# _ New mesh code, uses Mesh instead of NMesh,
+# this gives a small speed improvement and alows you to use Multires.
+#
+# Usage: Select a Grid/Terrain mesh and hit the Assign button, now you can work on it, when ready you assign another.
+#
+# _ New: 'Musgrave' noise types, 'Random noise' and 'Constant' in 'Effects' section.
+# _ New: 'Custom Effect', write custom formulae ( x,y, a,b, from math import *, from Blender.Noise import * )
+# _ New: 'Custom Height Filter', write custom formulae ( x,y, h, a,b, from math import *, from Blender.Noise import * )
+# _ New: 'Change Filter Order', Toggle: OFF = Noise+Effect+Falloff+FILTER / ON = Noise+FILTER+Effect+Falloff
+#
+# _ If you want to make a tiled terrain, you need to set the coordinates to "WorldSpace" or "Center at Cursor" (in G.U.I.Noise panel),
+# create and place the grid meshes. now one by one select, assign and update, you may need to adjust the "EdgeFalloff" size.
+#
+# WARNING!: when using Multires, materials can get weird (?), so apply materials when your terrain is finnished.
+#
+###############################################################################################################
+
+
+###############################################################################################################
+#
+## Execute Script: Alt P
+#
+
+
+import Blender
+from Blender import *
+from math import *
+from Blender.Noise import *
+from Blender.Draw import *
+from Blender.BGL import *
+from Blender import Image
+import string
+from string import strip
+import BPyMathutils
+from BPyMathutils import genrand
+from random import choice
+scene = Scene.GetCurrent()
+
+###---------------------------------------------------------------------------
+
+CurVersion = 'A.N.T.Landscape v.1.05'
+
+##---------------------------------------------------------------------------
+# Customise default settings: ----------------------------------------------
+
+# Names:
+antfilename = 'Terrain' # Default filename
+previewname = Create('') # Default preview Image name
+DefaultIpoName = '' # Default Ipo DataBlock name (for height filter)
+# G.U.I.:
+FullScreen = Create( 0 ) # FullScreen on/off
+# gui colors:
+ledcolors = [ [1.0,0.498,0.498], [1.0,0.698,0.498], [1.0,0.898,0.498], [0.898,1.0,0.498], [0.698,1.0,0.498], [0.498,1.0,0.498], [0.498,1.0,0.698], [0.498,1.0,0.898], [0.600,0.918,1.0], [0.6,0.757,1.0], [0.6,0.6,1.0], [0.757,0.6,1.0], [0.898,0.498,1.0], [1.0,0.498,0.898] ]
+#ledcolor = [ 1.0, 0.5, 0.0 ]
+lightgrey = [ 0.76, 0.76, 0.76 ] # gui col.
+grey = [ 0.6, 0.6, 0.6 ] # panel col.
+background = [ 0.7, 0.7, 0.7, 1.0 ] # background col.
+black = [ 0.0, 0.0, 0.0 ] # text col.
+white = [ 1.0, 1.0, 1.0 ]
+# gui size
+size_x = 320 # gui x size
+size_y = 280 # gui y size
+# tabs
+guitabs = [ Create( 1 ), Create( 0 ), Create( 0 ), Create( 0 ), Create( 0 ) ] # gui Tabs
+# How long does it take to generate a mesh or image ?
+print_time = 0 # 1 = Print time in console.
+
+# end customise. ----------------------------------------------------------
+##--------------------------------------------------------------------------
+###--------------------------------------------------------------------------
+####--------------------------------------------------------------------------
+##---------------------------------------------------------------------------
+
+dirpath=Blender.sys.dirname(Blender.Get('filename'))
+fname=dirpath.replace('\\','/')+'/' + antfilename + '.ant'
+txtFile = Create( fname )
+
+###---------------------------------------------------------------------------
+columns = 10 # gui columns
+rows = 13 # gui rows
+actob = [] # active object
+actme = [] # active mesh
+ipoblockname=''
+thiscurve=[]
+selectedcurve=0
+phi=3.14159265359
+# events
+App_Evt = 144
+New_Evt = 166
+SelFile_Evt = 71
+LoadFile_Evt = 72
+SaveFile_Evt = 73
+UseMe_Evt = 74
+No_Evt = 1
+Btn_Evt = 2
+Msh_Evt = 12
+Upd_Evt = 3
+Rndm_Evt = 4
+Load_Evt = 5
+Sel_Evt = 6
+Save_Evt = 7
+Rend_Evt = 8
+End_Evt = 9
+Scrn_Evt = 15
+Im_Evt = 16
+gt0_Evt = 20
+gt1_Evt = 21
+gt2_Evt = 22
+gt3_Evt = 23
+gt4_Evt = 24
+Ipo_Evt = 17
+New_Ipo_Evt=700
+
+###---------------------------------------------------------------------------
+# menus
+noisetypemenu = "Noise type: %t|multiFractal %x0|ridgedMFractal %x1|hybridMFractal %x2|heteroTerrain %x3|fBm %x4|turbulence %x5|Voronoi turb. %x6|vlNoise turb. %x7|noise %x8|cellNoise %x9|Marble %x10|lava_multiFractal %x11|slopey_noise %x12|duo_multiFractal %x13|distorted_heteroTerrain %x14|slickRock %x15|terra_turbulence %x16|rocky_fBm %x17|StatsByAlt_Terrain %x18|Double_Terrain %x19|Shattered_hTerrain %x20|vlhTerrain %x21"
+noisebasismenu = "Basis %t|Blender Original%x0|Original Perlin%x1|Improved Perlin%x2|Voronoi_F1%x3|Voronoi_F2%x4|Voronoi_F3%x5|Voronoi_F4%x6|Voronoi_F2-F1%x7|Voronoi Crackle%x8|CellNoise%x9"
+voronitypemenu = "Voronoi type %t|Distance %x0|Distance Squared %x1|Manhattan %x2|Chebychev %x3|Minkovsky 1/2 %x4|Minkovsky 4 %x5|Minkovsky %x6"
+tBasismodemenu = "Terrain basis mode: %t|noise %x0|ridged noise %x1|vlNoise %x2|ridged vlNoise %x3"
+effecttypemenu = ['Effect Type %t','No Effect %x0','Image %x1','Turbulence %x2','vlNoise %x3','Marble %x4', 'multiFractal %x5','ridgedMFractal %x6','hybridMFractal %x7','heteroTerrain %x8','fBm %x9', 'Gradient %x10','Waves and Bumps %x11','ZigZag %x12','Wavy %x13','Sine Bump %x14','Dots %x15','Rings / Dome %x16','Spiral %x17','Square / Piramide %x18','Blocks %x19','Grid %x20','Tech %x21','Crackle %x22','Sparse Cracks %x23','Shattered Rocks %x24','Lunar %x25','Cosine noise %x26','Spike noise %x27','Stone noise %x28','Flat Turb %x29','Flat Voroni %x30','Random noise %x31','Constant %x32','Custom Effect %x33' ]
+mixtypemenu = ['Mix Type %t','Effect only %x0','%l','Mix %x1','Add %x2','Subtract %x3','Multiply %x4','Difference %x5','Screen %x6','addmodulo %x7','Minimum %x8','Maximum %x9','%l','Warp Effect %x10','Warp Noise %x11']
+biastypemenu = "Bias %t|Sin bias %x0|Cos bias %x1|Tri bias %x2|Saw bias %x3|Default (no bias)%x4"
+sharptypemenu = "Sharpen %t|Soft %x0|Sharp %x1|Sharper %x2"
+filtermodemenu = "Filter Mode %t|No Filter %x0| %l|Default Filters %x1|IPOCurve Filter %x2|Custom Filter %x3"
+filtertypemenu = "Filter Type %t|Default Terrace %x0|Sharper Terrace %x1|Rounded Terrace %x2|Posterise Mixed %x3|Posterise %x4|Layered Peaks %x5|Peaked %x6|Smooth-thing %x7|Sin bias %x8|Cos bias %x9|Tri bias %x10|Saw bias %x11|Clamp Max. %x12"
+falloftypemenu = "Edge Falloff %t|No Edge Falloff %x0| %l|Soft Falloff %x1|Default Falloff %x2|Hard Falloff %x3|Linear Falloff Y %x4|Linear Falloff X %x5|Diagonal Falloff + %x6|Diagonal Falloff - %x7|Square %x8|Round %x9"
+randomtypemenu = "Random type: %t|setRandomSeed() : Blender.Noise %x0|Rand() : Blender.Mathutils %x1|genrand() : BPyMathutils MersenneTwister %x2"
+
+##--------------------------------------------------
+def Set_ReSet_Values():
+ global fileinfo, filemessage
+ global iScale, Offset, Invert, NSize, Sx, Sy, Lx, Ly, WorldSpaceCo
+ global NType, Basis, musgr, vlnoi, vlnoiTwo, voron, turbOne, turbTwo, marbleOne, marbleTwo, tBasismod, musgrTwo
+ global CustomFX, effect_image, Effect_Ctrl, Min, Max, Falloff, CustomFilt, Filter_Mode, Def_Filter_Ctrl, Ipo_Filter_Ctrl, Filter_Order
+ global RandMod, RSeed, rand_H, rand_S, rand_L, rand_I, AutoUpd, PreView, DefaultIpoName
+
+ filemessage = ''
+ fileinfo = ''
+ effect_image = 'Load and Select image.'
+ AutoUpd = Create( 0 )
+ PreView = [ Create( 0 ), Create( 1.0 ), Create( 0.0 ) ]
+ ## Coords controls:
+ WorldSpaceCo = Create(0)
+ iScale = [ Create( 1.0 ), Create( 1.0 ), Create( 0.25) ]
+ Offset = [ Create( 0.0 ), Create( 0.0), Create( 0.0) ]
+ Invert = [ Create( 0 ), Create( 0 ), Create( 0 ) ]
+ NSize = [ Create( 1.0 ), Create( 2.0 ) ]
+ Sx = [ Create( 1.0 ), Create( 1.0 ) ]
+ Sy = [ Create( 1.0 ), Create( 1.0 ) ]
+ Lx = [ Create( 0.0 ), Create( 0.0 ) ]
+ Ly = [ Create( 0.0 ), Create( 0.0 ) ]
+ ## Noise controls:
+ NType = Create( 3 )
+ Basis = [ Create( 0 ), Create( 0 ) ]
+ musgr = [ Create( 1.0 ), Create( 2.0 ), Create( 8 ), Create( 1.0 ), Create( 1.0 ), Create( 0.5 ) ]
+ vlnoi = [ Create( 1.0 ), Create( 0 ) ]
+ vlnoiTwo = [ Create( 1.0 ), Create( 0 ) ]
+ voron = [ Create( 0 ), Create( 2.5 ) ]
+ turbOne = [ Create( 6 ), Create( 0 ), Create( 0.5 ), Create( 2.0 ) ]
+ marbleOne = [ Create( 6 ), Create( 0 ), Create( 2.0 ), Create( 0 ), Create( 0 ), Create( 1.0 ) ]
+ tBasismod = Create(0)
+ ## Effect controls:
+ musgrTwo = [ Create( 1.0 ), Create( 2.0 ), Create( 8 ), Create( 1.0 ), Create( 1.0 ) ]
+ turbTwo = [ Create( 6 ), Create( 0 ), Create( 0.5 ), Create( 2.0 ) ]
+ marbleTwo = [ Create( 6 ), Create( 0 ), Create( 2.0 ), Create( 0 ), Create( 0 ), Create( 1.0 ) ]
+ Effect_Ctrl = [ Create( 0 ),Create( 2 ),Create( 0.0 ),Create( 0 ),Create( 0.0 ) ,Create( 0 ),Create( 2.0 ),Create( 0.5 ),Create( 0.5 ) ]
+ CustomFX = [ Create('sin(x*pi)'), Create('cos(y*pi)'), Create('abs(a*b)*0.5') ]
+ ## Filter controls:
+ Min = Create( 0.0 )
+ Max = Create( 1.0 )
+ Falloff = [ Create( 2 ), Create( 1.0 ), Create( 1.0 ), Create( 0 ) , Create( 0 ) ]
+ Filter_Mode = Create( 0 )
+ Def_Filter_Ctrl = [ Create( 0 ), Create( 3.0 ) ]
+ Ipo_Filter_Ctrl = [ Create( DefaultIpoName ), Create( 0 ), Create( 100.0 ), Create( 100.0 ) ]
+ Filter_Order = Create( 0 )
+ CustomFilt = [ Create('sqrt(h*h)**2'), Create('0'), Create('a') ]
+ ## Randomise noise buttons:
+ RandMod = Create( 1 )
+ RSeed = Create( 0 )
+ rand_I = Create( 0 )
+ rand_H = Create( 0 )
+ rand_S = Create( 0 )
+ rand_L = Create( 1 )
+
+##-------------------------
+Set_ReSet_Values()
+
+
+####----------------------------------------------------------------------------------------------------
+###----------------------------------------------------------------------------------------------------
+## G.U.I.: text,backpanel,panel
+#--------------------------------------------------
+def draw_Text( ( x, y ), text, color, size ):
+ glColor3f( color[0],color[1],color[2] )
+ glRasterPos2d(x,y)
+ txtsize = 'small', 'normal', 'large'
+ Text( text, txtsize[ size ] )
+def draw_BackPanel( text, x, y, w, h, colors ):
+ glColor3f( colors[0]*0.76, colors[1]*0.76, colors[2]*0.76 )
+ glRecti( x, h, w, h+20 )
+ glColor3f( colors[0], colors[1], colors[2] )
+ glRecti( x, y, w, h )
+ glColor3f( colors[0], colors[1], colors[2] )
+ glRasterPos2d( x+10, h+5 )
+ Text( text, 'small' )
+def draw_Panel( x, y, w, h, colors ):
+ glColor3f( colors[0], colors[1], colors[2] )
+ glRecti( x,y, w,h )
+def draw_Frame( text, x, y, w, h, color ):
+ glColor3f( color[0], color[1], color[2] )
+ glRasterPos2i(x+3,h-3)
+ Text(text ,'small')
+ stringwidth = GetStringWidth( text,'small' )
+ glColor3f( color[0], color[1], color[2] )
+ glBegin(Blender.BGL.GL_LINE_STRIP)
+ glVertex2i(x,h)
+ glVertex2i(x,y)
+ glVertex2i(w,y)
+ glVertex2i(w,h)
+ glVertex2i(x+stringwidth+10,h)
+ glEnd()
+def draw_Led( x, y, colors ):
+ glColor3f( colors[0], colors[1], colors[2] )
+ glRecti( x,y, x+4,y+4 )
+
+
+###----------------------------------------------------------------------------------------------------
+## G.U.I. Buttons:
+#----------------------------------------------------------------------------------------------------
+
+###-------------------------
+## Main / Mesh Buttons:
+#
+def MeshButtons( col, row, width, height ):
+ global actme, actob, AutoUpd, txtFile, filemessage, fileinfo
+
+ PushButton("I", UseMe_Evt, col[8], row[3], width[0], height[1], "Info: Here you can write some text to save with the file." )
+ draw_Text( ( col[0], row[1]+5 ), 'Info: ' + fileinfo, black, 0 )
+ txtFile = String("", No_Evt, col[0], row[2], width[9], height[1], txtFile.val, 256, "File: Full path and filename" )
+ PushButton( "Select", SelFile_Evt, col[1], row[3], width[0], height[1], "File: Open FileBrowser and select *.ant file" )
+ PushButton( "Load", LoadFile_Evt,col[2], row[3], width[2], height[1], "File: Load settings from file ( HotKey: L )" )
+ PushButton( "Save", SaveFile_Evt,col[5], row[3], width[2], height[1], "File: Save settings to file ( HotKey: S )" )
+
+ activeobname = ''
+ if actme !=[]:
+ activeobname = actob[0].name
+ draw_Text( ( col[5]+5, row[7]-5 ), 'OB: ' + activeobname, [0.0,0.0,1.0], 1 )
+ PushButton( "Add New Grid", New_Evt, col[0], row[6], width[4], height[2] )
+ PushButton( "Assign Selected", App_Evt, col[5], row[6], width[4], height[2], 'Assign selected terrain')
+
+###-------------------------
+## Noise Buttons:
+#
+def NoiseButtons( col, row, width, height ):
+ global NSize, iScale, Offset, Invert, Lx, Ly, Sx, Sy, WorldSpaceCo
+ global Ha, La, Oc, Of, Ga, Basis, NType, musgr, vlnoi, voron, turbOne, tBasismod
+ global Depth, Hard, Amp, Freq, vlBasis, Distort, VFunc, VExp, VDep, marbleOne
+ global RandMod, RSeed, rand_H, rand_S, rand_L, rand_I
+
+ bth = height[1]/2+5
+ iScale[0] = Number("iScale:", Btn_Evt, col[5], row[2]+bth, width[3], height[1], iScale[0].val, -10.0, 10.0 , "Noise: Intensity Scale." )
+ Invert[0] = Toggle("Inv.", Btn_Evt, col[9], row[2]+bth, width[0], height[1], Invert[0].val, "Noise: Invert")
+ Offset[0] = Number("Offset:", Btn_Evt, col[5], row[3]+bth, width[4], height[1], Offset[0].val, -10.0, 10.0 , "Noise: Offset " )
+ NSize[0] = Number("Noise Size:",Btn_Evt, col[5], row[5], width[4], height[2], NSize[0].val, 0.001, 10.0 , "Noise Size" )
+ Sx[0] = Number("Size X:", Btn_Evt, col[5], row[6], width[4], height[1], Sx[0].val, 0.001, 10.0 , "Size X" )
+ Sy[0] = Number("Size Y:", Btn_Evt, col[5], row[7], width[4], height[1], Sy[0].val, 0.001, 10.0 , "Size Y" )
+ Lx[0] = Number("Loc X:", Btn_Evt, col[5], row[8], width[4], height[1], Lx[0].val, -10000.0, 10000.0 , "Loc X" )
+ Ly[0] = Number("Loc Y:", Btn_Evt, col[5], row[9],width[4], height[1], Ly[0].val, -10000.0, 10000.0 , "Loc Y" )
+ WorldSpaceCo = Menu( "Coordinates %t|Local Space %x0|World Space %x1|Center at CursorPos %x2", Btn_Evt, col[5], row[10], width[4], height[1], WorldSpaceCo.val, "x,y,z coordinates for noise, effect and height falloff " )
+
+ NType = Menu( noisetypemenu, Btn_Evt, col[0], row[2], width[4], height[2], NType.val, "Noise type" )
+ if NType.val == 6:
+ voron[0] = Menu( voronitypemenu, Btn_Evt, col[0], row[3], width[4], height[1], voron[0].val, "Voronoi type" )
+ else:
+ if NType.val != 9:
+ Basis[0] = Menu( noisebasismenu, Btn_Evt, col[0], row[3], width[4], height[1], Basis[0].val, "Noise Basis" )
+
+ if NType.val in [0,1,2,3,4,11,12,13,14,15,17,18,19,20,21]:
+ musgr[0] = Slider( "H: ", Btn_Evt, col[0], row[5], width[4], height[1], musgr[0].val, 0.0, 3.0, 0 , "H" )
+ musgr[1] = Slider( "Lacu: ", Btn_Evt, col[0], row[6], width[4], height[1], musgr[1].val, 0.0, 6.0, 0 , "Lacunarity" )
+ musgr[2] = Slider( "Octs: ", Btn_Evt, col[0], row[4], width[4], height[1], musgr[2].val, 0, 12, 0 , "Octaves" )
+ if NType.val in [1,2,3,13,14,15,18,19,20,21]:
+ musgr[3] = Slider( "Offst: ", Btn_Evt, col[0], row[7], width[4], height[1], musgr[3].val, 0.0, 6.0, 0 , "Offset" )
+ if NType.val in [1,2,13,15,18]:
+ musgr[4] = Slider( "Gain: ", Btn_Evt, col[0], row[8], width[4], height[1], musgr[4].val, 0.0, 6.0, 0 , "Gain" )
+ if NType.val == 19:
+ musgr[5] = Slider( "Thresh: ", Btn_Evt, col[0], row[8], width[4], height[1], musgr[5].val, 0.001, 2.0, 0 , "Threshold" )
+ if NType.val in [5,6,7,16]:
+ turbOne[0] = Number( "Depth:", Btn_Evt, col[0], row[4], width[4], height[1], turbOne[0].val, 0, 12, "Octaves")
+ turbOne[1] = Toggle( "Hard noise", Btn_Evt, col[0], row[5], width[4], height[1], turbOne[1].val, "Soft noise / Hard noise")
+ turbOne[2] = Slider( "Amp:", Btn_Evt, col[0], row[6], width[4], height[1], turbOne[2].val, 0.0, 3.0, 0, "Ampscale ")
+ turbOne[3] = Slider( "Freq:", Btn_Evt, col[0], row[7], width[4], height[1], turbOne[3].val, 0.0, 6.0, 0, "Freqscale")
+ if NType.val in [18,19]:
+ tBasismod = Menu( tBasismodemenu, Btn_Evt, col[0], row[9], width[4], height[1], tBasismod.val, "Terrain basis mode.")
+ if NType.val == 6:
+ if voron[0].val == 6:
+ voron[1] = Slider( "Exp: ", Btn_Evt, col[0], row[8], width[4], height[1], voron[1].val, 0.0,10.0, 0, "Minkovsky exponent")
+ if NType.val in [7,11,12,14,20,21]:
+ vlnoi[0] = Slider( "Dist: ", Btn_Evt, col[0], row[8], width[4], height[1], vlnoi[0].val, 0.0, 10.0, 0 , "Distort" )
+ if NType.val in [7,13,14,15,21]:
+ vlnoi[1] = Menu(noisebasismenu, Btn_Evt, col[0], row[9], width[4], height[1], vlnoi[1].val, "Distortion Noise")
+ if NType.val == 10:
+ marbleOne[0] = Number( "Depth: ", Btn_Evt, col[0], row[6], width[4], height[1], marbleOne[0].val, 0, 12, "Octaves")
+ marbleOne[2] = Slider( "Turb: ", Btn_Evt, col[0], row[7], width[4], height[1], marbleOne[2].val, 0.0,20.0, 0, "Turbulence ")
+ marbleOne[3] = Menu( biastypemenu, Btn_Evt ,col[0], row[4], width[4], height[1], marbleOne[3].val, "Bias")
+ marbleOne[5] = Slider("ReScale: ", Btn_Evt, col[0], row[8], width[4], height[1], marbleOne[5].val, 0.0,20.0, 0, "ReScale")
+ if marbleOne[3].val != 4:
+ marbleOne[4] = Menu(sharptypemenu, Btn_Evt ,col[0], row[5], width[4], height[1], marbleOne[4].val, "Sharpen")
+
+ RandMod = Menu( randomtypemenu, No_Evt, col[0], row[10], width[0], height[1], RandMod.val, "Random Type" )
+ rand_H = Toggle("TH",No_Evt ,col[1], row[10], width[0], height[1], rand_H.val, "Randomise Terrain Height ( in Height panel )")
+ rand_I = Toggle("NH",No_Evt ,col[2], row[10], width[0], height[1], rand_I.val, "Randomise Noise Height")
+ rand_S = Toggle("NS",No_Evt ,col[3], row[10], width[0], height[1], rand_S.val, "Randomise Noise Size")
+ rand_L = Toggle("NL",No_Evt ,col[4], row[10], width[0], height[1], rand_L.val, "Randomise Noise Location")
+
+###-------------------------
+## Effect Buttons:
+#
+def EffectButtons( col, row, width, height ):
+ global Effect_Type, Effect_Ctrl, Blend_Effect, CustomFX
+ global NSize, iScale, Offset, Invert, Lx, Ly, Sx, Sy
+ global BasisTwo, turbTwo, marbleTwo, vlnoiTwo, musgrTwo
+
+ Effect_Ctrl[0] = Menu( '|'.join( effecttypemenu ), Btn_Evt, col[0], row[2], width[4], height[2], Effect_Ctrl[0].val, "Effect: Type" )
+ if Effect_Ctrl[0].val != 0:
+ Effect_Ctrl[1] = Menu( '|'.join( mixtypemenu ), Btn_Evt, col[5], row[2], width[4], height[2], Effect_Ctrl[1].val, "Mix: Type" )
+ if Effect_Ctrl[1].val in [10,11]:
+ Effect_Ctrl[2] = Slider("Warp: ", Btn_Evt, col[5], row[3], width[4], height[1], Effect_Ctrl[2].val, -1.0, 1.0, 0, "Mix factor / Warp amount" )
+ else: Effect_Ctrl[2] = Slider("Mix: ",Btn_Evt, col[5], row[3], width[4], height[1], Effect_Ctrl[2].val, -1.0, 1.0, 0, "Mix factor / Warp amount" )
+
+ iScale[1] = Number("iScale:", Btn_Evt, col[5], row[4], width[3], height[1], iScale[1].val, -20.0, 20.0 , "Effect: Intensity Scale " )
+ Invert[1] = Toggle("Inv.", Btn_Evt, col[9], row[4], width[0], height[1], Invert[1].val, "Effect: Invert")
+ Offset[1] = Number("Offset:", Btn_Evt, col[5], row[5], width[4], height[1], Offset[1].val, -20.0, 20.0 , "Effect: Offset " )
+ NSize[1] = Number("Frequency:",Btn_Evt, col[5], row[6], width[4], height[1], NSize[1].val, 0.001, 100.0, "Effect Frequency ( Scale )" )
+ Sx[1] = Number("Freq X:", Btn_Evt, col[5], row[7], width[4], height[1], Sx[1].val, -50.0, 50.0 , "Effect Frequency X ( ScaleX )" )
+ Sy[1] = Number("Freq Y:", Btn_Evt, col[5], row[8], width[4], height[1], Sy[1].val, -50.0, 50.0 , "Effect Frequency Y ( ScaleY )" )
+ Lx[1] = Number("Loc X:", Btn_Evt, col[5], row[9], width[4], height[1], Lx[1].val, -1000.0, 1000.0 , "Effect Loc X" )
+ Ly[1] = Number("Loc Y:", Btn_Evt, col[5], row[10], width[4], height[1], Ly[1].val, -1000.0, 1000.0 , "Effect Loc Y" )
+
+ if Effect_Ctrl[0].val == 1:
+ PushButton("Load Image", Load_Evt, col[0], row[4], width[4], height[2] , "Load Image")
+ PushButton("Select Image", Sel_Evt, col[0], row[6], width[4], height[3] , "Select Image")
+ draw_Text( ( col[0]+5, row[7] ), effect_image, black, 1 )
+
+ if Effect_Ctrl[0].val in [2,3,4,5,6,7,8,9]:
+ Basis[1] = Menu( noisebasismenu, Btn_Evt, col[0], row[3], width[4], height[1], Basis[1].val, "Basis" )
+
+ if Effect_Ctrl[0].val == 2:
+ turbTwo[0] = Number( "Depth:", Btn_Evt, col[0], row[4], width[4], height[1], turbTwo[0].val, 1, 12, "Octaves")
+ turbTwo[1] = Toggle("Hard noise", Btn_Evt, col[0], row[5], width[4], height[1], turbTwo[1].val, "Hard noise")
+ turbTwo[2] = Slider( "Amp:", Btn_Evt, col[0], row[6], width[4], height[1], turbTwo[2].val, 0.0, 3.0, 0, "Ampscale ")
+ turbTwo[3] = Slider( "Freq:", Btn_Evt, col[0], row[7], width[4], height[1], turbTwo[3].val, 0.0, 6.0, 0, "Freqscale")
+ if Effect_Ctrl[0].val == 3:
+ vlnoiTwo[1] = Menu(noisebasismenu, Btn_Evt, col[0], row[4], width[4], height[1], vlnoiTwo[1].val, "Distortion Noise")
+ vlnoiTwo[0] = Slider( "Dist: ", Btn_Evt, col[0], row[5], width[4], height[1], vlnoiTwo[0].val, 0.0, 10.0, 0 , "Distort" )
+ if Effect_Ctrl[0].val == 4:
+ marbleTwo[0] = Number( "Depth: ", Btn_Evt, col[0], row[6], width[4], height[1], marbleTwo[0].val, 1, 12, "Octaves")
+ marbleTwo[2] = Slider( "Turb: ", Btn_Evt, col[0], row[7], width[4], height[1], marbleTwo[2].val, 0.0,20.0, 0, "Turbulence")
+ marbleTwo[3] = Menu( biastypemenu, Btn_Evt ,col[0], row[4], width[4], height[1], marbleTwo[3].val, "Bias")
+ marbleTwo[5] = Slider("ReScale: ", Btn_Evt, col[0], row[8], width[4], height[1], marbleTwo[5].val, 0.0,20.0, 0, "ReScale")
+ if marbleTwo[3].val != 4:
+ marbleTwo[4] = Menu(sharptypemenu,Btn_Evt ,col[0], row[5], width[4], height[1], marbleTwo[4].val, "Sharpen")
+
+ if Effect_Ctrl[0].val in [5,6,7,8,9]:
+ musgrTwo[0] = Slider( "H: ", Btn_Evt, col[0], row[5], width[4], height[1], musgrTwo[0].val, 0.0, 3.0, 0 , "H" )
+ musgrTwo[1] = Slider( "Lacu: ", Btn_Evt, col[0], row[6], width[4], height[1], musgrTwo[1].val, 0.0, 6.0, 0 , "Lacunarity" )
+ musgrTwo[2] = Slider( "Octs: ", Btn_Evt, col[0], row[4], width[4], height[1], musgrTwo[2].val, 0, 12, 0 , "Octaves" )
+ if Effect_Ctrl[0].val in [6,7,8]:
+ musgrTwo[3] = Slider( "Offst: ", Btn_Evt, col[0], row[7], width[4], height[1], musgrTwo[3].val, 0.0, 6.0, 0 , "Offset" )
+ if Effect_Ctrl[0].val in [6,7]:
+ musgrTwo[4] = Slider( "Gain: ", Btn_Evt, col[0], row[8], width[4], height[1], musgrTwo[4].val, 0.0, 6.0, 0 , "Gain" )
+
+ if Effect_Ctrl[0].val > 9 and Effect_Ctrl[0].val < 31:
+ Effect_Ctrl[5] = Number("Depth:", Btn_Evt, col[0], row[4], width[4], height[1], Effect_Ctrl[5].val, 0, 12 , "Fractalize Effect: Octaves" )
+ Effect_Ctrl[4] = Number("Distort:",Btn_Evt, col[0], row[7], width[4], height[1], Effect_Ctrl[4].val, 0.0, 50.0 , "Distort Effect: Amount" )
+ Effect_Ctrl[6] = Slider("Freq:", Btn_Evt, col[0], row[5], width[4], height[1], Effect_Ctrl[6].val, 0.0, 6.0, 0, "Fractalize Effect: Frequency" )
+ Effect_Ctrl[7] = Slider("Amp:", Btn_Evt, col[0], row[6], width[4], height[1], Effect_Ctrl[7].val, 0.0, 3.0, 0, "Fractalize Effect: Amplitude" )
+ if Effect_Ctrl[0].val < 22:
+ Effect_Ctrl[3] = Menu(biastypemenu, Btn_Evt ,col[0], row[3], width[4], height[1], Effect_Ctrl[3].val, "Effect bias")
+ if Effect_Ctrl[0].val in [31,32]:
+ Effect_Ctrl[8] = Number("Amount:", Btn_Evt, col[0], row[4], width[4], height[1], Effect_Ctrl[8].val, -20.0, 20.0, "Effect: Amount" )
+ if Effect_Ctrl[0].val == 33:
+ draw_Text( ( col[0]+5, row[4] ), 'Custom math ( h, x,y, a,b )' , black, 0 )
+ CustomFX[0] = String( "a = ", Btn_Evt, col[0], row[5], width[4], height[1] ,CustomFX[0].val,96, "a" )
+ CustomFX[1] = String( "b = ", Btn_Evt, col[0], row[6], width[4], height[1] ,CustomFX[1].val,96, "b" )
+ CustomFX[2] = String( "result = ", Btn_Evt, col[0], row[7], width[4], height[1] ,CustomFX[2].val,96, "result" )
+
+###-------------------------
+## Filter / Height Buttons:
+#
+def FilterButtons( col, row, width, height ):
+ global iScale, Offset, Invert, Min, Max, Falloff, CustomFilt
+ global Filter_Mode, Def_Filter_Ctrl, Ipo_Filter_Ctrl, DefaultIpoName, Filter_Order
+
+ iScale[2] = Number("Height:", Btn_Evt, col[5], row[2], width[3], height[2], iScale[2].val, -10.0, 10.0 , "Terrain Height: Scale" )
+ Invert[2] = Toggle("Inv.", Btn_Evt, col[9], row[2], width[0], height[2], Invert[2].val, "Terrain Height: Invert")
+ Offset[2] = Number("Offset:", Btn_Evt, col[5], row[3], width[4], height[1], Offset[2].val, -10.0, 10.0 , "Terrain Height: Offset" )
+ Max = Number( "Plateau:", Btn_Evt, col[5], row[5], width[4], height[1], Max.val, Min.val, 1.0 , "Terrain Height: Clamp Max. ( Plateau )" )
+ Min = Number( "Sealevel:", Btn_Evt, col[5], row[6], width[4], height[1], Min.val, -1.0, Max.val , "Terrain Height: Clamp Min. ( Sealevel )" )
+ Falloff[0] = Menu( falloftypemenu, Btn_Evt ,col[5], row[9], width[4], height[2], Falloff[0].val, "Terrain Height: Edge falloff")
+ if Falloff[0].val !=0:
+ Falloff[1] = Number("X:", Btn_Evt, col[5], row[10], width[1], height[1], Falloff[1].val , 0.01, 100.0 , "Edge falloff: X Size" )
+ Falloff[2] = Number("Y:", Btn_Evt, col[8], row[10], width[1], height[1], Falloff[2].val , 0.01, 100.0 , "Edge falloff: Y Size" )
+ Falloff[4] = Toggle("Inv.", Btn_Evt, col[7], row[10], width[0], height[1], Falloff[4].val, "Edge falloff: Invert")
+ Falloff[3] = Toggle("Edge At Sealevel", Btn_Evt, col[5], row[7], width[4], height[1], Falloff[3].val, "Edge falloff: Edge at Sealevel")
+
+ Filter_Mode = Menu( filtermodemenu, No_Evt, col[0], row[2], width[4], height[2], Filter_Mode.val, "Filter: Mode")
+ if Filter_Mode.val ==1:
+ Def_Filter_Ctrl[0] = Menu( filtertypemenu, Btn_Evt, col[0], row[5], width[4], height[2], Def_Filter_Ctrl[0].val, "Filter: Type")
+ Def_Filter_Ctrl[1] = Number("Amount: ", Btn_Evt, col[0], row[6], width[4], height[1], Def_Filter_Ctrl[1].val, 0.1, 100.0 , "Filter: Amount" )
+
+ if Filter_Mode.val ==2:
+ Ipo_Filter_Ctrl[0] = String("IP:", Ipo_Evt, col[0], row[5], width[4], height[2], Ipo_Filter_Ctrl[0].val,20, "Ipo datablock name" )
+ if Ipo_Filter_Ctrl[0].val !='':
+ Ipo_Filter_Ctrl[1] = Number("Use This Curve:",Ipo_Evt, col[0], row[7], width[4], height[3], Ipo_Filter_Ctrl[1].val, 0, 29, "Select curve to use" )
+ Ipo_Filter_Ctrl[2] = Number("Curve Length:", Ipo_Evt, col[0], row[8], width[4], height[1], Ipo_Filter_Ctrl[2].val, 0.0, 1000.0, "X: Length (number of frames) of the selected curve." )
+ Ipo_Filter_Ctrl[3] = Number("Curve Height:", Ipo_Evt, col[0], row[9], width[4], height[1], Ipo_Filter_Ctrl[3].val, 0.0, 1000.0, "Y: Height (offset) of the selected curve." )
+ else:
+ draw_Text( ( col[0]+5, row[6] ), 'Enter Ipo DataBlock name,' , black, 0 )
+ draw_Text( ( col[0]+5, row[9] ), 'or else:' , black, 0 )
+ PushButton( "New IpoDataBlock/Object", New_Ipo_Evt, col[0], row[10], width[4], height[1], "Creates new Ipo Object(Empty), and Ipo DataBlock(curves)' to use as height filter")
+
+ if Filter_Mode.val ==3:
+ draw_Text( ( col[0]+5, row[4] ), 'Custom math ( h, x,y, a,b )' , black, 0 )
+ CustomFilt[0] = String( "a = ", Btn_Evt, col[0], row[5], width[4], height[1] ,CustomFilt[0].val,96, "a" )
+ CustomFilt[1] = String( "b = ", Btn_Evt, col[0], row[6], width[4], height[1] ,CustomFilt[1].val,96, "b" )
+ CustomFilt[2] = String( "result = ", Btn_Evt, col[0], row[7], width[4], height[1] ,CustomFilt[2].val,96, "result" )
+ if Filter_Mode.val !=0:
+ Filter_Order = Toggle("Change Filter Order", Btn_Evt, col[0], row[3], width[4], height[1], Filter_Order.val, "Filter Order: OFF = Noise+Effect+Falloff+FILTER / ON = Noise+FILTER+Effect+Falloff.")
+
+###-------------------------
+## Option / Generate Image Buttons:
+#
+def OptionButtons( col, row, width, height ):
+ global PreView, previewname
+
+ PreView[0] = Toggle("Make Image", No_Evt, col[0], row[2], width[4], height[2], PreView[0].val, "Image: On/Off (Make a new Image in UV/ImageEditor Window, and give a name to it)")
+ if PreView[0].val !=0:
+ previewname = String( "IM:", No_Evt, col[0], row[3], width[4], height[1] ,previewname.val, 16, "IM:Name, Render terrain height to this image" )
+ PreView[1] = Number("", Im_Evt, col[0], row[4], width[1], height[1], PreView[1].val, 0.0, 10.0, "Image: Intensity Scale")
+ PreView[2] = Number("", Im_Evt, col[3], row[4], width[1], height[1], PreView[2].val,-10.0, 10.0, "Image: Offset")
+ PushButton( "Draw Image", Im_Evt, col[0], row[5], width[4], height[1] , "Image: Update image ( KEY: V )")
+ draw_Text( ( col[5], row[1] ), 'Create yourself a new image', black, 0 )
+ draw_Text( ( col[5], row[2] ), 'in UV/Image Editor Window,', black, 0 )
+ draw_Text( ( col[5], row[3] ), 'give it a name,', black, 0 )
+ draw_Text( ( col[5], row[4] ), 'and save it manualy.', black, 0 )
+
+####--------------------------------------------------------------------------
+###--------------------------------------------------------------------------
+## Draw G.U.I. -------------------------------------------------------------
+#--------------------------------------------------------------------------
+def drawgui():
+ global guitabs, ledcolor, FullScreen, AutoUpd, RandMod, RSeed, filemessage
+ global Effect_Ctrl, Filter_Mode, Falloff, PreView, rand_H, rand_S, rand_L, rand_I
+
+ glClearColor(background[0],background[1],background[2],background[3])
+ glClear(GL_COLOR_BUFFER_BIT)
+ scissorbox=Buffer(GL_FLOAT,4)
+ glGetFloatv(GL_SCISSOR_BOX,scissorbox)
+ scissbleft=int(scissorbox[0])
+ scissbbase=int(scissorbox[1])
+ scissbwidth=int(scissorbox[2])
+ scissbheight=int(scissorbox[3])
+ xstart = 5
+ ystart = 5
+ xgap = 5
+ ygap = 5
+ if FullScreen.val==1:
+ guiwidth = scissbwidth-10
+ guiheight = scissbheight-25
+ if guiwidth < size_x/2:
+ guiwidth = size_x/2
+ if guiheight < size_y/2:
+ guiheight = size_y/2
+ else:
+ guiwidth = size_x
+ guiheight = size_y
+ col,row = [],[]
+ xpart = ( ( guiwidth-xstart ) / columns )
+ ypart = ( ( guiheight-ystart ) / rows )
+ width = []
+ for c in xrange( columns ):
+ col.append( xgap + xpart * c + xstart )
+ width.append( xpart*(c+1)-xgap )
+ height = [ (ypart-ygap)/2 , ypart-ygap, (ypart*3-ygap)/2, ypart*2-ygap, (ypart*5-ygap)/2 ]
+ for r in xrange( rows ):
+ row.append( ygap + ypart * r + ystart )
+ row.reverse()
+
+ ###-------------------------
+ ## Draw G.U.I.:
+ draw_BackPanel( 'Another Noise Tool 1.05', xstart, ystart, guiwidth, guiheight + ygap, lightgrey )
+
+ FullScreen = Toggle("", Scrn_Evt, guiwidth-32, guiheight+ygap+3, 15, 15, FullScreen.val ,"FullScreen" )
+ PushButton( "X", End_Evt, guiwidth-16, guiheight+ygap+3, 15, 15, "Exit" )
+ draw_Text(( guiwidth-(guiwidth/2)-width[0], guiheight+ygap+5 ), filemessage, white, 0 )
+
+ # gui tabs
+ guitabs[0] = Toggle("Main", gt0_Evt, col[0], row[0], width[1], height[1], guitabs[0].val ,"Main / Mesh settings" )
+ guitabs[1] = Toggle("Noise", gt1_Evt, col[2], row[0], width[1], height[1], guitabs[1].val ,"Noise settings" )
+ guitabs[2] = Toggle("Effect", gt2_Evt, col[4], row[0], width[1], height[1], guitabs[2].val ,"Add Effect" )
+ guitabs[3] = Toggle("Height", gt3_Evt, col[6], row[0], width[1], height[1], guitabs[3].val ,"Height Filter" )
+ guitabs[4] = Toggle("Options", gt4_Evt, col[8], row[0], width[1], height[1], guitabs[4].val ,"Options" )
+
+ if guitabs[0].val !=0: MeshButtons( col, row, width, height )
+ elif guitabs[1].val !=0: NoiseButtons( col, row, width, height )
+ elif guitabs[2].val !=0: EffectButtons( col, row, width, height )
+ elif guitabs[3].val !=0: FilterButtons( col, row, width, height )
+ elif guitabs[4].val !=0: OptionButtons( col, row, width, height )
+ else: # some info
+ draw_Panel( col[0], row[0]-5, col[9]+width[0], row[10]-10, black )
+ draw_Text( ( col[0]+5, row[1] ), 'Another Noise Tool v.1.05', ledcolors[0], 2 )
+ draw_Text( ( col[0]+5, row[2] ), 'by: Jimmy Hazevoet, 01/2005-03/2007', ledcolors[1], 2 )
+ draw_Text( ( col[0]+5, row[3] ), 'v.1.05: build/tested in: Blender 2.43 (Wndws)', ledcolors[2], 1 )
+ draw_Text( ( col[0]+5, row[4] ), 'HotKeys: ----------------------------', ledcolors[3], 2 )
+ draw_Text( ( col[0]+5, row[5] ), 'Space = Update mesh', ledcolors[4], 2 )
+ draw_Text( ( col[0]+5, row[6] ), 'V = Update Image', ledcolors[5], 2 )
+ draw_Text( ( col[0]+5, row[7] ), 'R = Randomise', ledcolors[6], 2 )
+ draw_Text( ( col[0]+5, row[8] ), 'L = Load from file', ledcolors[7], 2 )
+ draw_Text( ( col[0]+5, row[9] ), 'S = Save to file', ledcolors[8], 2 )
+ draw_Text( ( col[0]+5, row[10] ),'Q = Quit', ledcolors[9], 2 )
+
+ # auto/generate/randomise buttons
+ rand_on_off = 0
+ if rand_H.val !=0: rand_on_off = 1
+ elif rand_I.val !=0: rand_on_off = 1
+ elif rand_S.val !=0: rand_on_off = 1
+ elif rand_L.val !=0: rand_on_off = 1
+ else: rand_on_off = 0
+ if rand_on_off != 0:
+ if RandMod.val in [1,2]:
+ PushButton( "Randomise", Rndm_Evt, col[2], row[12], width[2], height[2] , "Randomise Noise ( KEY: R )")
+ else: RSeed = Number("Seed: ", Rndm_Evt, col[2], row[12], width[2], height[2], RSeed.val, 0, 255 , "Random Seed: If seed = 0, the current time will be used as seed." )
+ AutoUpd = Toggle("Auto", No_Evt, col[0], row[12], width[1], height[2], AutoUpd.val ,"Automatic update" )
+ PushButton("Update", Upd_Evt, col[5], row[12], width[4], height[2] , "Generate / Update. ( KEY: SPACE )")
+ else:
+ AutoUpd = Toggle("Auto", No_Evt, col[0], row[12], width[1], height[2], AutoUpd.val ,"Automatic update" )
+ PushButton("Update", Upd_Evt, col[2], row[12], width[7], height[2] , "Generate / Update. ( KEY: SPACE )")
+ ####---------------------------------------------------------------------------
+
+###---------------------------------------------------------------------------
+##---------------------------------------------------------------------------
+# Key Events:
+
+def events(evt, val):
+ global PreView, txtFile, AutoUpd, PreView
+
+ ## hotkey: Q = Quit
+ if (evt == QKEY and not val):
+ name = "Quit ?%t|No %x0|Yes %x1"
+ result = Blender.Draw.PupMenu(name)
+ if result==1:
+ Exit()
+
+ ## hotkey: Space = Generate/Update terrain
+ if (evt == SPACEKEY and not val):
+ do_it()
+
+ ## hotkey: R = Randomise noise
+ if (evt in [ RKEY ] and not val):
+ if AutoUpd.val != 0:
+ do_it_random()
+ else:
+ randomiseNoise()
+ Draw()
+
+ ## hotkey: V = Update image
+ if PreView[0].val != 0:
+ if (evt in [ VKEY, RKEY ] and not val):
+ do_it_preview()
+
+ ## hotkey: L = Load from file
+ if (evt == LKEY and not val):
+ loadmenu = "Load file ?%t|" + txtFile.val
+ loadresult = Blender.Draw.PupMenu(loadmenu)
+ if loadresult==1:
+ LoadPreset(txtFile.val)
+ if AutoUpd.val != 0:
+ do_it()
+ else: Draw()
+
+ ## hotkey: S = Save to file
+ if (evt == SKEY and not val):
+ savemenu = "Save file ?%t|" + txtFile.val
+ saveresult = Blender.Draw.PupMenu(savemenu)
+ if saveresult==1:
+ SavePreset(txtFile.val)
+ Draw()
+
+###---------------------------------------------------------------------------
+##---------------------------------------------------------------------------
+# Button events:
+
+def bevents(evt):
+ global txtFile, effect_image, PreView, fileinfo, filemessage
+ global Filter_Mode, Ipo_Filter_Ctrl, iponame, thiscurve, selectedcurve
+ global antfilename, terrainname
+ global actob, actme
+
+ # quit/reset event
+ if (evt == End_Evt ):
+ name = "OK ?%t|Reset %x1|Quit %x2"
+ result = Blender.Draw.PupMenu(name)
+ if result==1:
+ Set_ReSet_Values()
+ Draw()
+ elif result==2:
+ Exit()
+
+ ## file info string event
+ if (evt == UseMe_Evt ):
+ result = Blender.Draw.PupStrInput("Info: ", fileinfo, 96)
+ if result:
+ fileinfo = result
+ Draw()
+ else: return
+
+ ## none event
+ if (evt in [No_Evt, Scrn_Evt] ):
+ Draw()
+
+ ## image event
+ if (evt == Im_Evt ):
+ do_it_preview()
+
+ ## generate/update event
+ if (evt == Upd_Evt ):
+ if PreView[0].val != 0:
+ do_it_preview()
+ do_it()
+
+ ## mesh button event
+ if (evt == Msh_Evt):
+ if AutoUpd.val != 0:
+ do_it()
+ else: Draw()
+
+ ## button event
+ if (evt == Btn_Evt ):
+ if AutoUpd.val != 0:
+ if PreView[0].val != 0:
+ do_it_preview()
+ do_it()
+ else: Draw()
+
+ ## randomise event
+ if (evt == Rndm_Evt ):
+ if AutoUpd.val != 0:
+ do_it_random()
+ else:
+ randomiseNoise()
+ if PreView[0].val != 0:
+ do_it_preview()
+ Draw()
+
+ ###---------------------------------------------------------
+ ## Effect Image Load/Select:
+ if (evt == Load_Evt ):
+ Blender.Window.FileSelector ( load_image, 'LOAD IMAGE')
+ if (evt == Sel_Evt ):
+ try: effect_image = Image_Menu()
+ except: pass
+ if AutoUpd.val != 0:
+ do_it()
+ else: Draw()
+
+ ###---------------------------------------------------------
+ ## Make New IPOCurve to use as Filter:
+ if (evt == New_Ipo_Evt ):
+ objname = Create("ANT_Ipo_Empty")
+ iponame = Create("ANT_IPO")
+ block = []
+ block.append("Enter new names")
+ block.append("and hit OK button")
+ block.append(("OB: ", objname, 0, 30, "New Ipo Object Name. (Object type = 'Empty')"))
+ block.append(("IP: ", iponame, 0, 30, "New Ipo DataBlock Name"))
+ block.append("Open IpoCurveEditor")
+ block.append("select Ipo DataBlock" )
+ block.append("'Pin' the view" )
+ block.append("and edit the curves." )
+ retval = PupBlock("Make A.N.T. IpoCurve Object", block)
+ if retval !=0:
+ ANTAutoIpo( objname.val, iponame.val )
+ Ipo_Filter_Ctrl[0].val = iponame.val
+
+ ###---------------------------------------------------------
+ ## get IPOCurve to use as Filter:
+ if (evt in [Ipo_Evt, New_Ipo_Evt] ):
+ if Filter_Mode.val == 2:
+ if AutoUpd.val != 0:
+ try:
+ ipoblockname = Ipo.Get( Ipo_Filter_Ctrl[0].val )
+ thiscurve = ipoblockname.getCurves()
+ selectedcurve = thiscurve[ Ipo_Filter_Ctrl[1].val ]
+ if PreView[0].val != 0:
+ do_it_preview()
+ #if AutoUpd.val != 0:
+ do_it()
+ except: pass
+ else:
+ try:
+ ipoblockname = Ipo.Get( Ipo_Filter_Ctrl[0].val )
+ thiscurve = ipoblockname.getCurves()
+ selectedcurve = thiscurve[ Ipo_Filter_Ctrl[1].val ]
+ if PreView[0].val != 0:
+ do_it_preview()
+ else:
+ Draw()
+ except: pass
+
+ ###---------------------------------------------------------
+ ## gui tabs
+ if (evt == gt0_Evt ):
+ if guitabs[0].val == 1:
+ guitabs[1].val = ( 0 )
+ guitabs[2].val = ( 0 )
+ guitabs[3].val = ( 0 )
+ guitabs[4].val = ( 0 )
+ Draw()
+ if (evt == gt1_Evt ):
+ if guitabs[1].val == 1:
+ guitabs[0].val = ( 0 )
+ guitabs[2].val = ( 0 )
+ guitabs[3].val = ( 0 )
+ guitabs[4].val = ( 0 )
+ Draw()
+ if (evt == gt2_Evt ):
+ if guitabs[2].val == 1:
+ guitabs[0].val = ( 0 )
+ guitabs[1].val = ( 0 )
+ guitabs[3].val = ( 0 )
+ guitabs[4].val = ( 0 )
+ Draw()
+ if (evt == gt3_Evt ):
+ if guitabs[3].val == 1:
+ guitabs[0].val = ( 0 )
+ guitabs[1].val = ( 0 )
+ guitabs[2].val = ( 0 )
+ guitabs[4].val = ( 0 )
+ Draw()
+ if (evt == gt4_Evt ):
+ if guitabs[4].val == 1:
+ guitabs[0].val = ( 0 )
+ guitabs[1].val = ( 0 )
+ guitabs[2].val = ( 0 )
+ guitabs[3].val = ( 0 )
+ Draw()
+
+ ###---------------------------------------------------------
+ ## load and save all settings:
+ if (evt == SelFile_Evt ):
+ Blender.Window.FileSelector ( callback, "Select .ant File")
+ if (evt == LoadFile_Evt ):
+ loadmenu = "Load file ?%t|" + txtFile.val
+ loadresult = Blender.Draw.PupMenu(loadmenu)
+ if loadresult==1:
+ LoadPreset(txtFile.val)
+ Draw()
+ if AutoUpd.val != 0:
+ do_it()
+ if (evt == SaveFile_Evt ):
+ savemenu = "Save file ?%t|" + txtFile.val
+ saveresult = Blender.Draw.PupMenu(savemenu)
+ if saveresult==1:
+ SavePreset(txtFile.val)
+ Draw()
+
+ ###---------------------------------------------------------
+ # New Grid
+ ###-------------------------
+ if (evt == New_Evt):
+ scn = Blender.Scene.GetCurrent()
+ gridname = Create("Terrain")
+ gridres = Create(256)
+ curspos = Create(0)
+ block = []
+ block.append(("OB: ", gridname, 0, 30, "New Object Name."))
+ block.append(("Resol: ", gridres, 4, 1024, "New grid resolution"))
+ block.append(("At Cursor", curspos, "New grid at cursor position"))
+ retval = PupBlock("New Grid Mesh", block)
+ if retval !=0:
+ MakeGridMesh( gridres.val, gridname.val, curspos.val, scn )
+ obj = scn.objects.active
+ if obj.type == 'Mesh':
+ actob=[]
+ actme=[]
+ actob.append( obj )
+ actme.append( actob[0].getData(mesh=1) )
+ Blender.Redraw()
+
+ ###---------------------------------------------------------
+ # Assign Grid
+ ###-------------------------
+ if (evt == App_Evt):
+ scn = Blender.Scene.GetCurrent()
+ obj = scn.objects.active
+ if obj:
+ if obj.type == 'Mesh':
+ actob=[]
+ actme=[]
+ actob.append( obj )
+ actme.append( actob[0].getData(mesh=1) )
+ Draw()
+
+ ###-------------------------
+ if (evt not in [LoadFile_Evt,SaveFile_Evt] ):
+ filemessage = ''
+ #Draw()
+
+ ### end events. -------------------------
+
+####-------------------------------------------------------------------------------------
+###-------------------------------------------------------------------------------------
+##-------------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------------
+
+##----------------------------------
+# A.N.T. Auto Ipo generator:
+def ANTAutoIpo( objname, iponame ):
+ scn=Scene.GetCurrent()
+ # Deselect all objects:
+ scn.objects.selected=[]
+ # Create new 'ANT_IPO_OBJECT':
+ obj = scn.objects.new('Empty', objname )
+ obj.setDrawMode(8)
+ obj.select(1)
+ obj.layers = Window.ViewLayers()
+ # Set current frame at 1:
+ frame = Get('curframe')
+ if frame !=1:
+ Set('curframe',1)
+ frame = Get('curframe')
+ # Insert IpoKeys:
+ obj.setLocation(0.0, 0.0, 0.0)
+ obj.insertIpoKey(0)
+ Set('curframe',101)
+ obj.setLocation(100.0, 100.0, 100.0)
+ obj.insertIpoKey(0)
+ Set('curframe',1)
+ # Set Ipo name:
+ ip = obj.getIpo()
+ ip.name = iponame
+ #-------------------------
+ print "New ANT_IPO: " + objname +" (Object) and " + iponame + " (Ipo DataBlock) Created!"
+ #-------------------------
+
+##-------------------------------------------------------------------------------------
+
+##-------------------------
+# Generate random numbers:
+def randnum(low,high):
+ global RandMod, RSeed
+ if RandMod.val == 0:
+ # Noise.random setRandomSeed
+ s = Noise.setRandomSeed( RSeed.val )
+ num = Noise.random()
+ num = num*(high-low)
+ num = num+low
+ elif RandMod.val == 1:
+ # Mathutils.Rand
+ num = Mathutils.Rand(low,high)
+ else:
+ # BPyMathutils Mersenne Twister genrand
+ num = genrand()
+ num = num*(high-low)
+ num = num+low
+ return num
+
+##-------------------------
+# Randomise noise: height, size and location:
+def randomiseNoise():
+ global rand_I, rand_H, rand_S, rand_L, NSize, iScale, Offset, Invert, Lx, Ly, Sx, Sy
+
+ if rand_I.val !=0:
+ iScale[0] = Create( randnum( 0.2 , 3.0 ) )
+ Offset[0] = Create( randnum(-1.0 , 1.0 ) )
+ if rand_H.val !=0:
+ iScale[2] = Create( randnum( 0.10 , 1.0 ) )
+ Offset[2] = Create( randnum(-0.25 , 0.25 ) )
+ if rand_S.val !=0:
+ NSize[0] = Create( randnum( 0.25 , 2.5 ) )
+ #Sx[0] = Create( randnum( 0.5 , 1.5 ) )
+ #Sy[0] = Create( randnum( 0.5 , 1.5 ) )
+ if rand_L.val !=0:
+ Lx[0] = Create( randnum( -10000 , 10000 ) )
+ Ly[0] = Create( randnum( -10000 , 10000 ) )
+
+##-------------------------------------------------------------------------------------
+
+###--------------------------
+# Load Image:
+def load_image( ImageFileName ):
+ Image.Load( ImageFileName )
+
+###--------------------------
+# Select Image Menu:
+def Image_Menu():
+ try:
+ names=[]
+ imagelist = Image.Get()
+ imagelist.reverse()
+ for numbers, obnames in enumerate( imagelist ):
+ n = obnames.getName()
+ names.append( n )
+ imlistText = string.join( [ '|' + str(names[key]) + '%x' + str(key) for key in xrange(numbers+1) ], '' )
+ image_menu = Blender.Draw.PupMenu( "Images: %t" + imlistText )
+ if image_menu == -1:
+ return ''
+ return imagelist[ image_menu ].getName()
+ except:
+ return 'No image found!'
+
+###--------------------------
+# Get Image Pixels:
+def Image_Func( x,y ):
+ try:
+ pic = Image.Get( effect_image )
+ except:
+ return 0.0
+ w, h = pic.getSize()
+ x, y = x,-y
+ x = int(w * ((x + 1.0) % 2.0) / 2.0)
+ y = int((h-1) - h * ((y + 1.0) % 2.0) / 2.0)
+ c = pic.getPixelF( x,y )
+ return ( c[0] + c[1] + c[2] ) / 3.0
+
+##-------------------------------------------------------------------------------------
+
+# Transpose noise coords:
+def Trans((x,y,z), size, loc ):
+ x = ( x / size[1] / size[0] + loc[0] )
+ y = ( y / size[2] / size[0] + loc[1] )
+ z = 0.0 #( z / size[3] / size[0] + loc[2] )
+ return x,y,z
+
+# Transpose effect coords:
+def Trans_Effect((x,y,z), size, loc ):
+ x = ( x * size[1] * size[0] + loc[0] )
+ y = ( y * size[2] * size[0] + loc[1] )
+ z = 0.0
+ return x,y,z
+
+# Height scale:
+def HeightScale( input, iscale, offset, invert ):
+ if invert !=0:
+ return (1.0-input) * iscale + offset
+ else:
+ return input * iscale + offset
+
+# dist.
+def Dist(x,y):
+ return sqrt( (x*x)+(y*y) )
+
+##-----------------------------------
+# bias types:
+def no_bias(a):
+ return a
+def sin_bias(a):
+ return 0.5 + 0.5 * sin(a)
+def cos_bias(a):
+ return 0.5 + 0.5 * cos(a)
+def tri_bias(a):
+ b = 2 * phi
+ a = 1 - 2 * abs(floor((a * (1/b))+0.5) - (a*(1/b)))
+ return a
+def saw_bias(a):
+ b = 2 * phi
+ n = int(a/b)
+ a -= n * b
+ if a < 0: a += b
+ return a / b
+# sharpen types:
+def soft(a):
+ return a
+def sharp(a):
+ return a**0.5
+def sharper(a):
+ return sharp(sharp(a))
+Bias_Types = [ sin_bias, cos_bias, tri_bias, saw_bias, no_bias ]
+Sharp_Types = [ soft, sharp, sharper ]
+
+##-----------------------------------
+# clamp height
+def clamp( height, min, max ):
+ if ( height < min ): height = min
+ if ( height > max ): height = max
+ return height
+
+##-----------------------------------
+# Mix modes
+def maximum( a, b ):
+ if ( a > b ): b = a
+ return b
+def minimum( a, b ):
+ if ( a < b ): b = a
+ return b
+
+def Mix_Modes( (i,j),(x,y,z) , a,b, mixfactor, mode ):
+ a = a * ( 1.0 - mixfactor )
+ b = b * ( 1.0 + mixfactor )
+ if mode == 0: return ( b ) #0 effect only
+ elif mode == 1: return ( a*(1.0-0.5) + (b*0.5) ) #1 mix
+ elif mode == 2: return ( a + b ) #2 add
+ elif mode == 3: return ( a - b ) #3 sub.
+ elif mode == 4: return ( a * b ) #4 mult.
+ elif mode == 5: return (abs( a - b )) #5 abs diff.
+ elif mode == 6: return 1.0-((1.0-a)*(1.0-b)/1.0) #6 screen
+ elif mode == 7: return ( a + b ) % 1.0 #7 addmodulo
+ elif mode == 8: return min( a, b ) #8 min.
+ elif mode == 9: return max( a, b ) #9 max.
+ elif mode == 10: #10 warp: effect
+ noise = mixfactor * Noise_Function(x,y,z)
+ return Effects( (i,j),(x+noise,y+noise,z) )
+ elif mode == 11: #11 warp: noise
+ effect = mixfactor * Effects( (i,j),(x,y,z) )
+ return Noise_Function( x+effect, y+effect, z )
+ else: return a
+
+###----------------------------------------------------------------------
+# Effect functions:
+
+# Effect_Basis_Function:
+def Effect_Basis_Function((x,y), type, bias ):
+
+ iscale = 1.0
+ offset = 0.0
+ ## gradient:
+ if type == 0:
+ effect = offset + iscale * ( Bias_Types[ bias ]( x + y ) )
+ ## waves / bumps:
+ if type == 1:
+ effect = offset + iscale * 0.5 * ( Bias_Types[ bias ]( x*phi ) + Bias_Types[ bias ]( y*phi ) )
+ ## zigzag:
+ if type == 2:
+ effect = offset + iscale * Bias_Types[ bias ]( offset + iscale * sin( x*phi + sin( y*phi ) ) )
+ ## wavy:
+ if type == 3:
+ effect = offset + iscale * ( Bias_Types[ bias ]( cos( x ) + sin( y ) + cos( x*2+y*2 ) - sin( -x*4+y*4) ) )
+ ## sine bump:
+ if type == 4:
+ effect = offset + iscale * 1-Bias_Types[ bias ](( sin( x*phi ) + sin( y*phi ) ))
+ ## dots:
+ if type == 5:
+ effect = offset + iscale * ( Bias_Types[ bias ](x*phi*2) * Bias_Types[ bias ](y*phi*2) )-0.5
+ ## rings / dome:
+ if type == 6:
+ effect = offset + iscale * ( Bias_Types[ bias ]( 1.0-(x*x+y*y) ) )
+ ## spiral:
+ if type == 7:
+ effect = offset + iscale * Bias_Types[ bias ](( x*sin( x*x+y*y ) + y*cos( x*x+y*y ) ))*0.5
+ ## square / piramide:
+ if type == 8:
+ effect = offset + iscale * Bias_Types[ bias ](1.0-sqrt( (x*x)**10 + (y*y)**10 )**0.1)
+ ## blocks:
+ if type == 9:
+ effect = ( 0.5-max( Bias_Types[ bias ](x*phi) , Bias_Types[ bias ](y*phi) ))
+ if effect > 0.0: effect = 1.0
+ effect = offset + iscale * effect
+ ## grid:
+ if type == 10:
+ effect = ( 0.025-min( Bias_Types[ bias ](x*phi) , Bias_Types[ bias ](y*phi) ))
+ if effect > 0.0: effect = 1.0
+ effect = offset + iscale * effect
+ ## tech:
+ if type == 11:
+ a = ( max( Bias_Types[ bias ](x*pi) , Bias_Types[ bias ](y*pi) ))
+ b = ( max( Bias_Types[ bias ](x*pi*2+2) , Bias_Types[ bias ](y*pi*2+2) ))
+ effect = ( min( Bias_Types[ bias ](a) , Bias_Types[ bias ](b) ))*3.0-2.0
+ if effect > 0.5: effect = 1.0
+ effect = offset + iscale * effect
+
+ ## crackle:
+ if type == 12:
+ t = turbulence(( x, y, 0 ), 6, 0, 0 ) * 0.25
+ effect = vlNoise(( x, y, t ), 0.25, 0, 8 )
+ if effect > 0.5: effect = 0.5
+ effect = offset + iscale * ( effect )
+ ## sparse cracks noise:
+ if type == 13:
+ effect = 2.5 * abs( noise((x*0.5,y*0.5, 0 ), 1 ) )-0.1
+ if effect > 0.25: effect = 0.25
+ effect = offset + iscale * ( effect * 2.5 )
+ ## shattered rock noise:
+ if type == 14:
+ effect = 0.5 + noise((x,y,0), 7 )
+ if effect > 0.75: effect = 0.75
+ effect = offset + iscale * effect
+ ## lunar noise:
+ if type == 15:
+ effect = 0.25 + 1.5 * voronoi(( x+2, y+2, 0 ), 1 )[0][0]
+ if effect > 0.5: effect = 0.5
+ effect = offset + iscale * ( effect * 2.0 )
+ ## cosine noise:
+ if type == 16:
+ effect = cos( 5*noise(( x, y, 0 ), 0 ) )
+ effect = offset + iscale * ( effect*0.5 )
+ ## spikey noise:
+ if type == 17:
+ n = 0.5 + 0.5 * turbulence(( x*5, y*5, 0 ), 8, 0, 0 )
+ effect = ( ( n*n )**5 )
+ effect = offset + iscale * effect
+ ## stone noise:
+ if type == 18:
+ effect = offset + iscale *( noise((x*2,y*2, 0 ), 0 ) * 1.5 - 0.75)
+ ## Flat Turb:
+ if type == 19:
+ t = turbulence(( x, y, 0 ), 6, 0, 0 )
+ effect = t*2.0
+ if effect > 0.25: effect = 0.25
+ effect = offset + iscale * ( effect )
+ ## Flat Voroni:
+ if type == 20:
+ t = 1-noise(( x, y, 0 ), 3 )
+ effect = t*2-1.75
+ if effect > 0.25: effect = 0.25
+ effect = offset + iscale * ( effect )
+
+ if effect < 0.0: effect = 0.0
+ return effect
+
+# fractalize Effect_Basis_Function: ------------------------------
+def Effect_Function((x,y), type,bias, turb, depth,frequency,amplitude ):
+
+ ## effect distortion:
+ if turb != 0.0:
+ t = vTurbulence(( x, y, 0 ), 6, 0, 0 )
+ x = x + ( 0.5 + 0.5 * t[0] ) * turb
+ y = y + ( 0.5 + 0.5 * t[1] ) * turb
+
+ result = Effect_Basis_Function((x,y), type, bias )
+ ## fractalize effect:
+ if depth != 0:
+ i=0
+ while i < depth:
+ i+=1
+ x *= frequency
+ y *= frequency
+ amplitude = amplitude / i
+ result += Effect_Basis_Function( (x,y), type, bias ) * amplitude
+ return result
+
+###--------------------------------------------------
+# Custom effect:
+def CustomEffect( x,y,z,h ):
+ global CustomFX
+ try:
+ a = eval( CustomFX[0].val )
+ b = eval( CustomFX[1].val )
+ result = eval( CustomFX[2].val )
+ return result
+ except:
+ return 0.0
+
+###--------------------------------------------------
+## Effect Selector:
+
+def Effects( (i,j),(x,y,z), h=0.0 ):
+ global Effect_Type, Effect_Ctrl, iScale, Offset, Invert
+ global NSize, Lx, Ly, Lz, Sx, Sy, Sz, marbleTwo, turbTwo, vlnoiTwo, Basis, musgrTwo
+
+ x,y,z = Trans_Effect((x,y,z),( NSize[1].val, Sx[1].val, Sy[1].val, 0 ),( Lx[1].val, Ly[1].val, 0 ) )
+ basis = Basis[1].val
+ if basis == 9: basis = 14
+ vbasis = vlnoiTwo[1].val
+ if vbasis == 9: vbasis = 14
+ if Effect_Ctrl[0].val == 1:
+ try: effect = Image_Func( x,y )
+ except: effect = 0.0
+ elif Effect_Ctrl[0].val == 2: effect = 0.5+0.5*turbulence(( x,y,z ),turbTwo[0].val, turbTwo[1].val, basis, turbTwo[2].val, turbTwo[3].val )
+ elif Effect_Ctrl[0].val == 3: effect = 0.5+0.5*vlNoise(( x,y,z ),vlnoiTwo[0].val, vbasis, basis )
+ elif Effect_Ctrl[0].val == 4: effect = 0.5*marbleNoise((x,y,z), marbleTwo[0].val, basis, marbleTwo[2].val, marbleTwo[3].val, marbleTwo[4].val, marbleTwo[5].val )
+ elif Effect_Ctrl[0].val == 5: effect = 0.5*multiFractal(( x,y,z ),musgrTwo[0].val, musgrTwo[1].val, musgrTwo[2].val, basis )
+ elif Effect_Ctrl[0].val == 6: effect = 0.5*ridgedMFractal(( x,y,z ),musgrTwo[0].val, musgrTwo[1].val, musgrTwo[2].val, musgrTwo[3].val, musgrTwo[4].val, basis )
+ elif Effect_Ctrl[0].val == 7: effect = 0.5*hybridMFractal(( x,y,z ),musgrTwo[0].val, musgrTwo[1].val, musgrTwo[2].val, musgrTwo[3].val, musgrTwo[4].val, basis )
+ elif Effect_Ctrl[0].val == 8: effect = 0.5*heteroTerrain(( x,y,z ),musgrTwo[0].val, musgrTwo[1].val, musgrTwo[2].val, musgrTwo[3].val, basis )*0.5
+ elif Effect_Ctrl[0].val == 9: effect = 0.5*fBm(( x,y,z ),musgrTwo[0].val, musgrTwo[1].val, musgrTwo[2].val, basis )+0.5
+ elif Effect_Ctrl[0].val > 9 and Effect_Ctrl[0].val < 31:
+ effect = Effect_Function((x,y), Effect_Ctrl[0].val-10, Effect_Ctrl[3].val, Effect_Ctrl[4].val, Effect_Ctrl[5].val, Effect_Ctrl[6].val, Effect_Ctrl[7].val )
+ elif Effect_Ctrl[0].val == 31: effect = Effect_Ctrl[8].val * random()
+ elif Effect_Ctrl[0].val == 32: effect = Effect_Ctrl[8].val
+ elif Effect_Ctrl[0].val == 33: effect = CustomEffect( x,y,z, h )
+ effect = HeightScale( effect, iScale[1].val , Offset[1].val, Invert[1].val )
+ return effect*2.0
+
+###----------------------------------------------------------------------
+# Noise:
+##-----------------------------------
+
+## voronoi_turbulence:
+def voroTurbMode((x,y,z), voro, mode ):
+ if mode == 0: # soft
+ return voronoi(( x,y,z ),voro[0], voro[1] )[0][0]
+ if mode == 1: # hard
+ return ( abs( 0.5-voronoi(( x,y,z ),voro[0], voro[1] )[0][0] ) )+0.5
+def voronoi_turbulence((x,y,z), voro, tur ):
+ result = voroTurbMode((x,y,z), voro, tur[1] )
+ depth = tur[0]
+ amp = tur[2]
+ freq = tur[3]
+ i=0
+ for i in xrange( depth ):
+ i+=1
+ result += voroTurbMode( ( x*(freq*i), y*(freq*i), z ), voro, tur[1] )* ( amp*0.5/i )
+ return (result*4.0-2.0)
+
+## DistortedNoise / vlNoise_turbulence:
+def vlnTurbMode((x,y,z), vlno, basis, mode ):
+ if mode == 0: # soft
+ return vlNoise(( x,y,z ),vlno[0], vlno[1], basis )
+ if mode == 1: # hard
+ return ( abs( -vlNoise(( x,y,z ),vlno[0], vlno[1], basis ) ) )
+def vlNoise_turbulence((x,y,z), vlno, tur, basis ):
+ result = vlnTurbMode((x,y,z), vlno, basis, tur[1] )
+ depth = tur[0]
+ amp = tur[2]
+ freq = tur[3]
+ i=0
+ for i in xrange( depth ):
+ i+=1
+ result += vlnTurbMode( ( x*(freq*i), y*(freq*i), z ), vlno, basis, tur[1] ) * ( amp*0.5/i )
+ return result*2.0+0.5
+
+## marbleNoise:
+def marbleNoise( (x,y,z), depth, basis, turb, bias, sharpnes, rescale ):
+ m = ( x * rescale + y * rescale + z ) * 5
+ height = m + turb * turbulence( ( x ,y ,z ), depth, 0, basis, 0.5, 2.0 )
+ height = Bias_Types[ bias ]( height )
+ if bias != 4:
+ height = Sharp_Types[ sharpnes ]( height )
+ return height*2.0
+
+## lava_multiFractal:
+def lava_multiFractal( ( x,y,z ),Ha, La, Oc, distort, Basis ):
+ m = multiFractal( ( x,y,z ), Ha, La, Oc, Basis)
+ d = m * distort
+ m2 = 0.5 * multiFractal( ( x+d,y+d,d*0.5 ), Ha, La, Oc, Basis)
+ return (m * m2)**0.5
+
+## slopey_noise:
+def slopey_noise((x,y,z), H, lacunarity, octaves, distort, basis ):
+ x=x*2
+ y=y*2
+ turb = fBm((x,y,z), H, lacunarity, octaves, 2 ) * 0.5
+ map = 0.5 + noise( ( x+turb, y+turb, z ), basis )
+ result = map + turb * distort
+ return result
+
+## duo_multiFractal:
+def double_multiFractal((x,y,z), H, lacunarity, octaves, offset, gain, basis ):
+ n1 = multiFractal( (x*1.5+1,y*1.5+1,z), 1.0, 1.0, 1.0, basis[0] ) * offset
+ n2 = multiFractal( (x-1,y-1,z), H, lacunarity, octaves, basis[1] ) * gain
+ result = ( n1*n1 + n2*n2 )*0.5
+ return result
+
+## distorted_heteroTerrain:
+def distorted_heteroTerrain((x,y,z), H, lacunarity, octaves, offset, distort, basis ):
+ h1 = ( heteroTerrain((x,y,z), 1.0, 2.0, 1.0, 1.0, basis[0] ) * 0.5 )
+ h2 = ( heteroTerrain(( x, y, h1*distort ), H, lacunarity, octaves, offset, basis[1] ) * 0.25 )
+ result = ( h1*h1 + h2*h2 )
+ return result
+
+## SlickRock:
+def SlickRock((x,y,z), H, lacunarity, octaves, offset, gain, basis ):
+ n = multiFractal( (x,y,z), 1.0, 2.0, 1.0, basis[0] )
+ r = ridgedMFractal((x,y,n*0.5), H, lacunarity, octaves, offset, gain, basis[1] )*0.5
+ return n+(n*r)
+
+## terra_turbulence:
+def terra_turbulence((x,y,z), depth, hard, basis, amp, freq ):
+ t2 = turbulence( ( x, y, z ), depth, hard , basis, amp, freq )
+ return (t2*t2*t2)+0.5
+
+## rocky_fBm:
+def rocky_fBm((x,y,z), H, lacunarity, octaves, basis ):
+ turb = fBm((x,y,z), H, lacunarity, octaves, 2 ) * 0.25
+ coords = ( x+turb, y+turb, z )
+ map = noise( coords, 7 )
+ result = map + fBm( coords, H, lacunarity, octaves, basis ) + 1.0
+ return result
+
+## Shattered_hTerrain:
+def Shattered_hTerrain((x,y,z), H, lacunarity, octaves, offset, distort, basis ):
+ d = ( turbulence( ( x, y, z ), 6, 0, 0, 0.5, 2.0 ) * 0.5 + 0.5 )*distort*0.25
+ t0 = ( turbulence( ( x+d, y+d, z ), 0, 0, 7, 0.5, 2.0 ) + 0.5 )
+ t2 = ( heteroTerrain(( x*2, y*2, t0*0.5 ), H, lacunarity, octaves, offset, basis ) )
+ return (( t0*t2 )+t2*0.5)*0.75
+
+## vlhTerrain
+def vlhTerrain((x,y,z), H, lacunarity, octaves, offset, basis, vlbasis, distort ):
+ ht = heteroTerrain(( x, y, z ), H, lacunarity, octaves, offset, basis )*0.5
+ vl = ht * vlNoise((x,y,z), distort, basis, vlbasis )*0.5+0.5
+ return vl * ht
+
+####---------------------------------------.
+### StatsByAlt, double terrain basis mode:
+def TerrainBasisMode((x,y,z), basis, mode ):
+ if mode == 0: # noise
+ return noise((x,y,z),basis)
+ if mode == 1: # noise ridged
+ return ( 1.0-abs( noise((x,y,z),basis) ) )-0.5
+ if mode == 2: # vlNoise
+ return vlNoise((x,y,z), 1.0, 0, basis )
+ else: # vlNoise ridged
+ return ( 1.0-abs( vlNoise((x,y,z), 1.0, 0, basis ) ) )-0.5
+
+#### StatsByAlt terrain:
+def StatsByAltTerrain((x,y,z), exp, lacu, octs, offset, amp, basis, mode ):
+ result = 0.5 * (offset + TerrainBasisMode((x,y,z), basis, mode ) )
+ octs = int( octs )
+ i = 0
+ for i in xrange( 1, octs ):
+ i += 1
+ result += result * amp * 0.5 * (offset + TerrainBasisMode((x,y,z), basis, mode ) )
+ x *= lacu
+ y *= lacu
+ amp /= ( exp * 0.5 ) * i
+ return result
+
+##### double terrain:
+def doubleTerrain((x,y,z), exp, lacu, octs, offset, threshold, basis, mode ):
+ result = amp = freq = 1.0
+ #octs = int( octs )
+ offset*=0.5
+ i = 1
+ signal = result = 0.5 * (offset + TerrainBasisMode((x,y,z), basis, mode ) )
+ for i in xrange( 1, octs ):
+ i += 1
+ x = x * lacu
+ y = y * lacu
+ freq *= lacu
+ amp = pow( freq, -exp )
+ amp *= i
+ weight = signal / threshold
+ if weight > 1.0: weight = 1.0
+ if weight < 0.0: weigth = 0.0
+ signal = weight * 0.5 * ( offset + TerrainBasisMode((x,y,z), basis, mode ) )
+ result += amp * signal
+ return result * 2.0
+
+##------------------------------------------------------------
+# Noise Functions:
+def Noise_Function(x,y,z):
+ global Basis, NType, musgr, vlnoi, voron, turbOne, marbleOne, tBasismod
+ global vlBasis, Distort, VFunc, VExp, VDep
+ global iScale, Offset, Invert, NSize, Lx, Ly, Sx, Sy
+
+ x,y,z = Trans((x,y,z),( NSize[0].val, Sx[0].val, Sy[0].val, 0 ),( Lx[0].val, Ly[0].val, 0 ) )
+ basis = Basis[0].val
+ if basis == 9: basis = 14
+ vbasis = vlnoi[1].val
+ if vbasis == 9: vbasis = 14
+ if NType.val == 0: z = multiFractal(( x,y,z ),musgr[0].val, musgr[1].val, musgr[2].val, basis )
+ elif NType.val == 1: z = ridgedMFractal(( x,y,z ),musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, musgr[4].val, basis )
+ elif NType.val == 2: z = hybridMFractal(( x,y,z ),musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, musgr[4].val, basis )
+ elif NType.val == 3: z = heteroTerrain(( x,y,z ),musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, basis )*0.5
+ elif NType.val == 4: z = fBm(( x,y,z ),musgr[0].val, musgr[1].val, musgr[2].val, basis )+0.5
+ elif NType.val == 5: z = turbulence(( x,y,z ),turbOne[0].val, turbOne[1].val, basis, turbOne[2].val, turbOne[3].val )+0.5
+ elif NType.val == 6: z = voronoi_turbulence((x,y,z),(voron[0].val,voron[1].val),(turbOne[0].val,turbOne[1].val,turbOne[2].val,turbOne[3].val) )*0.5+0.5
+ elif NType.val == 7: z = vlNoise_turbulence((x,y,z),(vlnoi[0].val,vbasis), (turbOne[0].val,turbOne[1].val,turbOne[2].val,turbOne[3].val), basis )*0.5+0.5
+ elif NType.val == 8: z = noise(( x,y,z ),basis )+0.5
+ elif NType.val == 9: z = cellNoise(( x,y,z ))+0.5
+ elif NType.val == 10: z = marbleNoise(( x,y,z), marbleOne[0].val, basis, marbleOne[2].val, marbleOne[3].val, marbleOne[4].val, marbleOne[5].val )
+ elif NType.val == 11: z = lava_multiFractal(( x,y,z ), musgr[0].val, musgr[1].val, musgr[2].val, vlnoi[0].val, basis )
+ elif NType.val == 12: z = slopey_noise(( x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, vlnoi[0].val, basis )+0.5
+ elif NType.val == 13: z = double_multiFractal(( x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, musgr[4].val, (vbasis,basis) )
+ elif NType.val == 14: z = distorted_heteroTerrain((x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, vlnoi[0].val, (vbasis,basis) )
+ elif NType.val == 15: z = SlickRock(( x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, musgr[4].val, (vbasis,basis) )
+ elif NType.val == 16: z = terra_turbulence(( x,y,z), turbOne[0].val, turbOne[1].val, basis, turbOne[2].val, turbOne[3].val )
+ elif NType.val == 17: z = rocky_fBm(( x,y,z ),musgr[0].val, musgr[1].val, musgr[2].val, basis )
+ elif NType.val == 18: z = StatsByAltTerrain( (x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, musgr[4].val*0.5, basis, tBasismod.val )
+ elif NType.val == 19: z = doubleTerrain( (x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, musgr[5].val, basis, tBasismod.val )
+ elif NType.val == 20: z = Shattered_hTerrain((x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, vlnoi[0].val, basis )
+ elif NType.val == 21: z = vlhTerrain((x,y,z), musgr[0].val, musgr[1].val, musgr[2].val, musgr[3].val, basis, vbasis, vlnoi[0].val )
+ else: z = 0.0
+ return HeightScale( z, iScale[0].val , Offset[0].val, Invert[0].val )
+
+###----------------------------------------------------------------------
+##-----------------------------------
+# Filter functions:
+
+##-----------------------------------
+# Filter: Clamp height
+def Clamp_Max( height, max ):
+ if ( height > max ): height = max
+ return height
+def Clamp_Min( height, min ):
+ if ( height < min ): height = min
+ return height
+
+##-----------------------------------
+# Filters: terrace / posterise / peaked / bias:
+def Def_Filter((x,y,z), input, numb, type ):
+ if type == 0:
+ s = ( sin( input*numb*phi ) * ( 0.1/numb*phi ) )
+ return ( input * (1.0-0.5) + s*0.5 ) * 2.0
+ elif type == 1:
+ s = -abs( sin( input*(numb*0.5)*phi ) * ( 0.1/(numb*0.5)*phi ) )
+ return ( input * (1.0-0.5) + s*0.5 ) * 2.0
+ elif type == 2:
+ s = abs( sin( input*(numb*0.5)*phi ) * ( 0.1/(numb*0.5)*phi ) )
+ return ( input * (1.0-0.5) + s*0.5 ) * 2.0
+ elif type == 3:
+ numb = numb*0.5
+ s = ( int( input*numb ) * 1.0/numb )
+ return ( input * (1.0-0.5) + s*0.5 ) * 2.0
+ elif type == 4:
+ numb = numb*0.5
+ s = ( int( input*numb ) * 1.0/numb )
+ return ( s ) * 2.0
+ elif type == 5:
+ s = ( sin( input*(2*numb)*phi ) * ( 0.1/(2*numb)*phi ) )
+ l = ( input * (1.0-0.5) + s*0.5 ) * 2.0
+ p = ( ( l*numb*0.25 ) * ( l*numb*0.25 ) )**2
+ return ( l * (1.0-0.5) + p*0.5 ) * 2.0
+ elif type == 6:
+ return ( input*numb*0.25 )**4
+ elif type == 7:
+ return 2.0-exp( 1.0-(input*numb/3.0) )
+ elif type == 8:
+ return sin_bias( input*numb )*2.0
+ elif type == 9:
+ return cos_bias( input*numb )*2.0
+ elif type == 10:
+ return tri_bias( input*numb )*2.0
+ elif type == 11:
+ return saw_bias( input*numb )*2.0
+ elif type == 12:
+ return Clamp_Max( input, numb )
+ else:
+ return input
+
+##-----------------------------------
+# Filter: Edge falloff
+def EdgeFalloff( (x,y,z), height, type ):
+ global Falloff, iScale, Offset
+
+ x = x / Falloff[1].val
+ y = y / Falloff[2].val
+
+ if Falloff[3].val != 0:
+ sealevel = (Min.val-Offset[2].val)*2.0/iScale[2].val
+ else:
+ sealevel = 0.0
+
+ falltypes = ( 0, sqrt(x*x+y*y), sqrt((x*x)**2+(y*y)**2), sqrt((x*x)**10+(y*y)**10), sqrt(y*y), sqrt(x*x), abs(x-y), abs(x+y), ((x*x)**10+(y*y)**10)**0.1, ((x*x)+(y*y)) )
+
+ dist = falltypes[ type ]
+ if Falloff[4].val != 0:
+ dist = 1.0 - dist
+ radius = 1.0
+ height = height - sealevel
+ if( dist < radius ):
+ dist = dist / radius
+ dist = ( (dist) * (dist) * ( 3-2*(dist) ) )
+ height = ( height - height * dist ) + sealevel
+ else:
+ height = sealevel
+
+ if Falloff[3].val != 0:
+ height = Clamp_Min( height, sealevel )
+ else:
+ height = Clamp_Min( height, Min.val )
+
+ return height
+
+##-----------------------------------
+# Filter: Custom height filter:
+def CustomFilter( x,y,z, h ):
+ global CustomFilt
+ try:
+ a = eval(CustomFilt[0].val)
+ b = eval(CustomFilt[1].val)
+ result = eval(CustomFilt[2].val)
+ return result
+ except:
+ return 0.0
+
+#####-------------------------------------------------------------------------------------#####
+####-------------------------------------------------------------------------------------####
+### Combine Functions: (get noise, Add effect, filter height and return result) ###
+##-------------------------------------------------------------------------------------##
+
+def Combine_Functions( (i,j),(x,y,z) ):
+ global Effect_Ctrl, Blend_Effect, Filter_Mode, Def_Filter_Ctrl, Ipo_Filter_Ctrl, Filter_Order
+ global iScale, Offset, Invert, Min, Max, Falloff
+
+ # get noise height:
+ height = Noise_Function(x,y,0.0)
+
+ ### Filter On
+ if Filter_Mode.val !=0:
+ ### 0= Default Filter Order: Noise>Effect>Filter ---------------------
+ if Filter_Order.val ==0:
+ # mix noise with effect:
+ if Effect_Ctrl[0].val !=0:
+ height = Mix_Modes( (i,j),(x,y,z), height , Effects( (i,j),(x,y,z),height ), Effect_Ctrl[2].val, Effect_Ctrl[1].val )
+ # edge fallof:
+ if Falloff[0].val !=0:
+ height = EdgeFalloff( (x,y,z), height, Falloff[0].val )
+ #else: pass
+
+ if Filter_Mode.val !=0:
+ # height Def_Filter (Terrace/peaked/bias):
+ if Filter_Mode.val ==1:
+ height = Def_Filter((x,y,z), height, Def_Filter_Ctrl[ 1 ].val, Def_Filter_Ctrl[ 0 ].val )
+
+ ## 'IPOCurve' height filter:
+ elif Filter_Mode.val ==2:
+ try:
+ height = selectedcurve.evaluate( 1 + ( height*Ipo_Filter_Ctrl[2].val/2 ) )*2.0/Ipo_Filter_Ctrl[3].val
+ except:
+ height = height
+
+ ## Custom filter:
+ elif Filter_Mode.val ==3:
+ height = CustomFilter( x,y,z, height )
+
+ ### 1= Changed Filter Order: Noise>Filter>Effect ---------------------
+ if Filter_Order.val !=0:
+ # mix noise with effect:
+ if Effect_Ctrl[0].val !=0:
+ height = Mix_Modes( (i,j),(x,y,z), height , Effects( (i,j),(x,y,z),height ), Effect_Ctrl[2].val, Effect_Ctrl[1].val )
+ # edge fallof:
+ if Falloff[0].val !=0:
+ height = EdgeFalloff( (x,y,z), height, Falloff[0].val )
+ #else: pass
+
+ ### Filter Off ---------------------
+ else:
+ # mix noise with effect:
+ if Effect_Ctrl[0].val !=0:
+ height = Mix_Modes( (i,j),(x,y,z), height , Effects( (i,j),(x,y,z),height ), Effect_Ctrl[2].val, Effect_Ctrl[1].val )
+ # edge fallof:
+ if Falloff[0].val !=0:
+ height = EdgeFalloff( (x,y,z), height, Falloff[0].val )
+
+ # height scale:
+ height = HeightScale( height, 0.5*iScale[2].val , Offset[2].val, Invert[2].val )
+
+ # clamp height min. max.:
+ if Falloff[0].val !=1:
+ height = Clamp_Min( height, Min.val )
+ height = Clamp_Max( height, Max.val )
+
+ # return height:
+ return height
+
+
+#------------------------------------------------------------
+##------------------------------------------------------------
+### Render Noise to a Image('NAME') (you must create one first)
+##------------------------------------------------------------
+#------------------------------------------------------------
+
+def HeightFieldImage():
+ global PreView, previewname
+
+ iname = previewname.val
+ try:
+ pic = Image.Get( iname )
+ except:
+ #print iname, ' No Image with this name'
+ PupMenu( 'No Image with this name' )
+ return
+ res = pic.getMaxXY()
+ for i in xrange( res[0] ):
+ x = i - (res[0]) / 2.0
+ x = (x*2.0) / (res[0])
+ for j in xrange( res[1] ):
+ y = j - (res[1]) / 2.0
+ y = (y*2.0) / (res[1])
+ height = PreView[2].val + PreView[1].val * Combine_Functions( (i,j),(x,y,0) )
+ if height > 1.0: height = 1.0
+ if height < 0.0: height = 0.0
+ pic.setPixelF( i, j, ( height,height,height, 1.0 ) )
+
+
+#------------------------------------------------------------
+##------------------------------------------------------------
+### Mesh
+##------------------------------------------------------------
+#------------------------------------------------------------
+
+#------------------------------------------------------------
+## Mesh: make new grid
+###------------------------------------------------------------
+
+def MakeGridMesh( RESOL=32, NAME='GridMesh', CURSORPOS=0, SCENE=None ):
+ # scene, object, mesh ---------------------------------------
+ if not SCENE:
+ SCENE = Blender.Scene.GetCurrent()
+ SCENE.objects.selected=[]
+ newme = Blender.Mesh.New( NAME )
+ newob = SCENE.objects.new( newme, NAME )
+ n = RESOL
+ # verts ---------------------------------------
+ v=[]
+ for i in xrange( n ):
+ x = i-(n-1)/2.0
+ x = x*2.0/(n-1)
+ for j in xrange( n ):
+ y = j-(n-1)/2.0
+ y = y*2.0/(n-1)
+ v.append( [ x, y, 0 ] )
+ newme.verts.extend(v)
+ # faces ---------------------------------------
+ f=[]
+ for i in xrange( n-1 ):
+ for j in xrange( n-1 ):
+ f.append( [ i*n+j,\
+ (i+1)*n+j,\
+ (i+1)*n+j+1,\
+ i*n+j+1 ] )
+
+ newme.faces.extend(f, smooth=True)
+ #---------------------------------------
+ newme.calcNormals()
+ #---------------------------------------
+ if CURSORPOS !=0:
+ newob.loc = Window.GetCursorPos()
+ newob.select(1)
+
+#------------------------------------------------------------
+## Mesh: Grid vert displace / update terrain
+###------------------------------------------------------------
+
+def displace( OB, ME, WORLD=0 ):
+ if WORLD == 1:
+ wx,wy,wz = OB.getLocation( 'worldspace' )
+ elif WORLD ==2:
+ l = OB.getLocation( 'worldspace' )
+ w = Window.GetCursorPos()
+ wx,wy,wz = l[0]-w[0], l[1]-w[1], l[2]-w[2]
+ else:
+ wx,wy,wz = 0,0,0
+
+ for v in ME.verts:
+ co = v.co
+ co[2] = Combine_Functions( (co[0]+wx,co[1]+wy),(co[0]+wx, co[1]+wy, 0.0+wz) )
+ ME.update()
+ ME.calcNormals()
+ #OB.makeDisplayList()
+
+
+#----------------------------------------------------------------------------------------------------
+##----------------------------------------------------------------------------------------------------
+###----------------------------------------------------------------------------------------------------
+####----------------------------------------------------------------------------------------------------
+###----------------------------------------------------------------------------------------------------
+## Do_it:
+#--------------------------------------
+
+#--------------------------------------
+def do_it():
+ global PreView, actme, actob, WorldSpaceCo
+ if actme !=[]:
+ if print_time !=0:
+ t= sys.time()
+ Window.WaitCursor(1)
+ in_editmode = Window.EditMode()
+ if in_editmode: Window.EditMode(0)
+ if PreView[0].val != 0:
+ do_it_preview()
+ displace( actob[0], actme[0], WorldSpaceCo.val )
+ Window.RedrawAll()
+ else:
+ displace( actob[0], actme[0], WorldSpaceCo.val )
+ Window.RedrawAll()
+ if in_editmode: Window.EditMode(1)
+ Window.WaitCursor(0)
+ if print_time !=0:
+ print 'Generate Mesh: done in %.6f' % (sys.time()-t)
+
+#--------------------------------------
+def do_it_random():
+ global PreView, actme, actob
+ if actme !=[]:
+ if print_time !=0:
+ t= sys.time()
+ Window.WaitCursor(1)
+ in_editmode = Window.EditMode()
+ if in_editmode: Window.EditMode(0)
+ randomiseNoise()
+ if PreView[0].val != 0:
+ do_it_preview()
+ displace( actob[0], actme[0], WorldSpaceCo.val )
+ Window.RedrawAll()
+ else:
+ displace( actob[0], actme[0], WorldSpaceCo.val )
+ Window.RedrawAll()
+ if in_editmode: Window.EditMode(1)
+ Window.WaitCursor(0)
+ if print_time !=0:
+ print 'Generate Mesh: done in %.6f' % (sys.time()-t)
+
+#--------------------------------------
+def do_it_preview():
+ if print_time !=0:
+ t= sys.time()
+ HeightFieldImage()
+ Window.RedrawAll()
+ if print_time !=0:
+ print 'Generate Image: done in %.6f' % (sys.time()-t)
+
+###---------------------------------------------------------
+###---------------------------------------------------------
+## load and save:
+#-------------------------
+
+def callback( filename ):
+ txtFile.val = filename
+ Register(drawgui, events, bevents)
+def writeln(f,x):
+ f.write(str(x))
+ f.write("\n")
+def readint(f):
+ return int(f.readline())
+def readfloat(f):
+ return float(f.readline())
+def readstr(f):
+ s = (f.readline())
+ return strip(s)
+
+#--------------------------------------------------
+# Save settings to .ant file
+def SavePreset(FName):
+ global iScale, Offset, Invert, NSize, Sx, Sy, Lx, Ly
+ global NType, Basis, musgr, tBasismod, vlnoi, vlnoiTwo, voron, turbOne, turbTwo, marbleOne, marbleTwo, musgrTwo
+ global CustomFX, effect_image, Effect_Ctrl, Min, Max, Falloff, CustomFilt, Filter_Mode, Def_Filter_Ctrl, Ipo_Filter_Ctrl, Filter_Order
+ global RandMod, RSeed, rand_H, rand_S, rand_L, rand_I, filemessage, fileinfo
+
+ try:
+ f = open(FName,'w')
+ writeln(f,CurVersion)
+ except:
+ filemessage = "Unable to save file."
+ return
+
+ writeln(f,fileinfo)
+ writeln(f,iScale[0].val)
+ writeln(f,iScale[1].val)
+ writeln(f,iScale[2].val)
+ writeln(f,Offset[0].val)
+ writeln(f,Offset[1].val)
+ writeln(f,Offset[2].val)
+ writeln(f,Invert[0].val)
+ writeln(f,Invert[1].val)
+ writeln(f,Invert[2].val)
+ writeln(f,NSize[0].val)
+ writeln(f,NSize[1].val)
+ writeln(f,Sx[0].val)
+ writeln(f,Sx[1].val)
+ writeln(f,Sy[0].val)
+ writeln(f,Sy[1].val)
+ writeln(f,Lx[0].val)
+ writeln(f,Lx[1].val)
+ writeln(f,Ly[0].val)
+ writeln(f,Ly[1].val)
+ writeln(f,NType.val)
+ writeln(f,Basis[0].val)
+ writeln(f,Basis[1].val)
+ writeln(f,musgr[0].val)
+ writeln(f,musgr[1].val)
+ writeln(f,musgr[2].val)
+ writeln(f,musgr[3].val)
+ writeln(f,musgr[4].val)
+ writeln(f,musgr[5].val)
+ writeln(f,tBasismod.val)
+ writeln(f,vlnoi[0].val)
+ writeln(f,vlnoi[1].val)
+ writeln(f,vlnoiTwo[0].val)
+ writeln(f,vlnoiTwo[1].val)
+ writeln(f,voron[0].val)
+ writeln(f,voron[1].val)
+ writeln(f,turbOne[0].val)
+ writeln(f,turbOne[1].val)
+ writeln(f,turbOne[2].val)
+ writeln(f,turbOne[3].val)
+ writeln(f,turbTwo[0].val)
+ writeln(f,turbTwo[1].val)
+ writeln(f,turbTwo[2].val)
+ writeln(f,turbTwo[3].val)
+ writeln(f,marbleOne[0].val)
+ writeln(f,marbleOne[1].val)
+ writeln(f,marbleOne[2].val)
+ writeln(f,marbleOne[3].val)
+ writeln(f,marbleOne[4].val)
+ writeln(f,marbleOne[5].val)
+ writeln(f,marbleTwo[0].val)
+ writeln(f,marbleTwo[1].val)
+ writeln(f,marbleTwo[2].val)
+ writeln(f,marbleTwo[3].val)
+ writeln(f,marbleTwo[4].val)
+ writeln(f,marbleTwo[5].val)
+ writeln(f,musgrTwo[0].val)
+ writeln(f,musgrTwo[1].val)
+ writeln(f,musgrTwo[2].val)
+ writeln(f,musgrTwo[3].val)
+ writeln(f,musgrTwo[4].val)
+ writeln(f,effect_image)
+ writeln(f,Effect_Ctrl[0].val)
+ writeln(f,Effect_Ctrl[1].val)
+ writeln(f,Effect_Ctrl[2].val)
+ writeln(f,Effect_Ctrl[3].val)
+ writeln(f,Effect_Ctrl[4].val)
+ writeln(f,Effect_Ctrl[5].val)
+ writeln(f,Effect_Ctrl[6].val)
+ writeln(f,Effect_Ctrl[7].val)
+ writeln(f,Effect_Ctrl[8].val)
+ writeln(f,CustomFX[0].val)
+ writeln(f,CustomFX[1].val)
+ writeln(f,CustomFX[2].val)
+ writeln(f,Min.val)
+ writeln(f,Max.val)
+ writeln(f,Falloff[0].val)
+ writeln(f,Falloff[1].val)
+ writeln(f,Falloff[2].val)
+ writeln(f,Falloff[3].val)
+ writeln(f,Falloff[4].val)
+ writeln(f,Filter_Mode.val)
+ writeln(f,Filter_Order.val)
+ writeln(f,CustomFilt[0].val)
+ writeln(f,CustomFilt[1].val)
+ writeln(f,CustomFilt[2].val)
+ writeln(f,Def_Filter_Ctrl[0].val)
+ writeln(f,Def_Filter_Ctrl[1].val)
+ writeln(f,Ipo_Filter_Ctrl[0].val)
+ writeln(f,Ipo_Filter_Ctrl[1].val)
+ writeln(f,Ipo_Filter_Ctrl[2].val)
+ writeln(f,Ipo_Filter_Ctrl[3].val)
+ writeln(f,RandMod.val)
+ writeln(f,RSeed.val)
+ writeln(f,rand_H.val)
+ writeln(f,rand_I.val)
+ writeln(f,rand_S.val)
+ writeln(f,rand_L.val)
+ filemessage = 'Settings saved to file.'
+ f.close()
+
+#--------------------------------------------------
+# load settings from .ant file
+def LoadPreset(FName):
+ global iScale, Offset, Invert, NSize, Sx, Sy, Lx, Ly
+ global NType, Basis, musgr, tBasismod, vlnoi, vlnoiTwo, voron, turbOne, turbTwo, marbleOne, marbleTwo, musgrTwo
+ global CustomFX, effect_image, Effect_Ctrl, Min, Max, Falloff, CustomFilt, Filter_Mode, Def_Filter_Ctrl, Ipo_Filter_Ctrl, Filter_Order
+ global RandMod, RSeed, rand_H, rand_S, rand_L, rand_I, filemessage, fileinfo
+
+ try:
+ f = open(FName,'r')
+ FVersion = readstr(f)
+ except:
+ filemessage = "Unable to open file."
+ return
+
+ fileinfo = readstr(f)
+ iScale[0].val = readfloat(f)
+ iScale[1].val = readfloat(f)
+ iScale[2].val = readfloat(f)
+ Offset[0].val = readfloat(f)
+ Offset[1].val = readfloat(f)
+ Offset[2].val = readfloat(f)
+ Invert[0].val = readint(f)
+ Invert[1].val = readint(f)
+ Invert[2].val = readint(f)
+ NSize[0].val = readfloat(f)
+ NSize[1].val = readfloat(f)
+ Sx[0].val = readfloat(f)
+ Sx[1].val = readfloat(f)
+ Sy[0].val = readfloat(f)
+ Sy[1].val = readfloat(f)
+ Lx[0].val = readfloat(f)
+ Lx[1].val = readfloat(f)
+ Ly[0].val = readfloat(f)
+ Ly[1].val = readfloat(f)
+ NType.val = readint(f)
+ Basis[0].val = readint(f)
+ Basis[1].val = readint(f)
+ musgr[0].val = readfloat(f)
+ musgr[1].val = readfloat(f)
+ musgr[2].val = readint(f)
+ musgr[3].val = readfloat(f)
+ musgr[4].val = readfloat(f)
+ musgr[5].val = readfloat(f)
+ tBasismod.val = readint(f)
+ vlnoi[0].val = readfloat(f)
+ vlnoi[1].val = readint(f)
+ vlnoiTwo[0].val = readfloat(f)
+ vlnoiTwo[1].val = readint(f)
+ voron[0].val = readint(f)
+ voron[1].val = readfloat(f)
+ turbOne[0].val = readint(f)
+ turbOne[1].val = readint(f)
+ turbOne[2].val = readfloat(f)
+ turbOne[3].val = readfloat(f)
+ turbTwo[0].val = readint(f)
+ turbTwo[1].val = readint(f)
+ turbTwo[2].val = readfloat(f)
+ turbTwo[3].val = readfloat(f)
+ marbleOne[0].val = readint(f)
+ marbleOne[1].val = readint(f)
+ marbleOne[2].val = readfloat(f)
+ marbleOne[3].val = readint(f)
+ marbleOne[4].val = readint(f)
+ marbleOne[5].val = readfloat(f)
+ marbleTwo[0].val = readint(f)
+ marbleTwo[1].val = readint(f)
+ marbleTwo[2].val = readfloat(f)
+ marbleTwo[3].val = readint(f)
+ marbleTwo[4].val = readint(f)
+ marbleTwo[5].val = readfloat(f)
+ musgrTwo[0].val = readfloat(f)
+ musgrTwo[1].val = readfloat(f)
+ musgrTwo[2].val = readint(f)
+ musgrTwo[3].val = readfloat(f)
+ musgrTwo[4].val = readfloat(f)
+ effect_image = readstr(f)
+ Effect_Ctrl[0].val = readint(f)
+ Effect_Ctrl[1].val = readint(f)
+ Effect_Ctrl[2].val = readfloat(f)
+ Effect_Ctrl[3].val = readint(f)
+ Effect_Ctrl[4].val = readfloat(f)
+ Effect_Ctrl[5].val = readint(f)
+ Effect_Ctrl[6].val = readfloat(f)
+ Effect_Ctrl[7].val = readfloat(f)
+ Effect_Ctrl[8].val = readfloat(f)
+ CustomFX[0].val = readstr(f)
+ CustomFX[1].val = readstr(f)
+ CustomFX[2].val = readstr(f)
+ Min.val = readfloat(f)
+ Max.val = readfloat(f)
+ Falloff[0].val = readint(f)
+ Falloff[1].val = readfloat(f)
+ Falloff[2].val = readfloat(f)
+ Falloff[3].val = readint(f)
+ Falloff[4].val = readint(f)
+ Filter_Mode.val = readint(f)
+ Filter_Order.val = readint(f)
+ CustomFilt[0].val = readstr(f)
+ CustomFilt[1].val = readstr(f)
+ CustomFilt[2].val = readstr(f)
+ Def_Filter_Ctrl[0].val = readint(f)
+ Def_Filter_Ctrl[1].val = readfloat(f)
+ Ipo_Filter_Ctrl[0].val = readstr(f)
+ Ipo_Filter_Ctrl[1].val = readint(f)
+ Ipo_Filter_Ctrl[2].val = readfloat(f)
+ Ipo_Filter_Ctrl[3].val = readfloat(f)
+ RandMod.val = readint(f)
+ RSeed.val = readint(f)
+ rand_H.val = readint(f)
+ rand_I.val = readint(f)
+ rand_S.val = readint(f)
+ rand_L.val = readint(f)
+ filemessage = 'Settings loaded from file.'
+ f.close()
+
+##---------------------------------------------------------------------------
+# Register:
+
+Register( drawgui, events, bevents )
+###--------------------------------------------------------------------------
+ \ No newline at end of file
diff --git a/release/scripts/xfig_export.py b/release/scripts/xfig_export.py
deleted file mode 100644
index ddc0dd4dcea..00000000000
--- a/release/scripts/xfig_export.py
+++ /dev/null
@@ -1,234 +0,0 @@
-#!BPY
-"""
-Name: 'xfig export (.fig)'
-Blender: 244
-Group: 'Export'
-Tooltip: 'Export selected mesh to xfig Format (.fig)'
-"""
-
-__author__ = 'Dino Ghilardi', 'Campbell Barton AKA Ideasman42'
-__url__ = ("blender", "blenderartists.org")
-__version__ = "1.1"
-
-__bpydoc__ = """\
- This script exports the selected mesh to xfig (www.xfig.org) file format (i.e.: .fig)
-
- The starting point of this script was Anthony D'Agostino's raw triangle format export.
- (some code is still here and there, cut'n pasted from his script)
-
- Usage:<br>
- Select the mesh to be exported and run this script from "File->Export" menu.
- The toggle button 'export 3 files' enables the generation of 4 files: one global
- and three with the three different views of the object.
- This script is licensed under the GPL license. (c) Dino Ghilardi, 2005
-
-"""
-
-# .fig export, mostly brutally cut-n pasted from the
-# 'Raw triangle export' (Anthony D'Agostino, http://www.redrival.com/scorpius)|
-
-import Blender
-from Blender import Draw
-import BPyObject
-#, meshtools
-import sys
-import bpy
-#import time
-
-# =================================
-# === Write xfig Format.===
-# =================================
-
-def collect_edges(edges):
- """Gets the max-min coordinates of the mesh"""
-
- """Getting the extremes of the mesh to be exported"""
-
- maxX=maxY=maxZ = -1000000000
- minX=minY=minZ = 1000000000
-
- FGON= Blender.Mesh.EdgeFlags.FGON
-
- me = bpy.data.meshes.new()
- for ob_base in bpy.data.scenes.active.objects.context:
- for ob in BPyObject.getDerivedObjects(ob_base):
- me.verts = None
- try: me.getFromObject(ob[0])
- except: pass
-
- if me.edges:
- me.transform(ob[1])
-
- for ed in me.edges:
- if not ed.flag & FGON:
- x,y,z = v1 = tuple(ed.v1.co)
- maxX = max(maxX, x)
- maxY = max(maxY, y)
- maxZ = max(maxZ, z)
- minX = min(minX, x)
- minY = min(minY, y)
- minZ = min(minZ, z)
-
- x,y,z = v2 = tuple(ed.v2.co)
- maxX = max(maxX, x)
- maxY = max(maxY, y)
- maxZ = max(maxZ, z)
- minX = min(minX, x)
- minY = min(minY, y)
- minZ = min(minZ, z)
-
- edges.append( (v1, v2) )
-
- me.verts = None # free memory
- return maxX,maxY,maxZ,minX,minY,minZ
-
-def xfigheader(file):
- file.write('#FIG 3.2 Produced by xfig version 3.2.5-alpha5\n')
- file.write('Landscape\n')
- file.write('Center\n')
- file.write('Metric\n')
- file.write('A4\n')
- file.write('100.00\n')
- file.write('Single\n')
- file.write('-2\n')
- file.write('1200 2\n')
-
-def figdata(file, edges, expview, bounds, scale, space):
- maxX,maxY,maxZ,minX,minY,minZ = bounds
-
- def xytransform(ed):
- """gives the face vertexes coordinates in the xfig format/translation (view xy)"""
- x1,y1,z1 = ed[0]
- x2,y2,z2 = ed[1]
- y1=-y1; y2=-y2
- return x1,y1,z1,x2,y2,z2
-
- def xztransform(ed):
- """gives the face vertexes coordinates in the xfig format/translation (view xz)"""
- x1,y1,z1 = ed[0]
- x2,y2,z2 = ed[1]
- y1=-y1
- y2=-y2
-
- z1=-z1+maxZ-minY +space
- z2=-z2+maxZ-minY +space
- return x1,y1,z1,x2,y2,z2
-
- def yztransform(ed):
- """gives the face vertexes coordinates in the xfig format/translation (view xz)"""
- x1,y1,z1 = ed[0]
- x2,y2,z2 = ed[1]
- y1=-y1; y2=-y2
- z1=-(z1-maxZ-maxX-space)
- z2=-(z2-maxZ-maxX-space)
- return x1,y1,z1,x2,y2,z2
-
- def transform(ed, expview, scale):
- if expview=='xy':
- x1,y1,z1,x2,y2,z2 = xytransform(ed)
- return int(x1*scale),int(y1*scale),int(x2*scale),int(y2*scale)
- elif expview=='xz':
- x1,y1,z1,x2,y2,z2 = xztransform(ed)
- return int(x1*scale),int(z1*scale),int(x2*scale),int(z2*scale)
- elif expview=='yz':
- x1,y1,z1,x2,y2,z2 = yztransform(ed)
- return int(z1*scale),int(y1*scale),int(z2*scale),int(y2*scale)
-
-
- """Prints all the xfig data (no header)"""
- for ed in edges:
- file.write('2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2\n')
- file.write('\t %i %i %i %i\n' % transform(ed, expview, scale))
-
-def writexy(edges, bounds, filename, scale, space):
- """writes the x-y view file exported"""
-
- file = open(filename, 'wb')
- xfigheader(file)
- figdata(file, edges, 'xy', bounds, scale, space)
- file.close()
- print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
-
-def writexz(edges, bounds, filename, scale, space):
- """writes the x-z view file exported"""
- #start = time.clock()
- file = open(filename, 'wb')
- xfigheader(file)
- figdata(file, edges, 'xz', bounds, scale, space)
- file.close()
- print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
-
-def writeyz(edges, bounds, filename, scale, space):
- """writes the y-z view file exported"""
-
- #start = time.clock()
- file = open(filename, 'wb')
- xfigheader(file)
- figdata(file, edges, 'yz', bounds, scale, space)
- file.close()
- #end = time.clock()
- #seconds = " in %.2f %s" % (end-start, "seconds")
- print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
-
-def writeall(edges, bounds, filename, scale=450, space=2.0):
- """writes all 3 views
-
- Every view is a combined object in the resulting xfig. file."""
-
- maxX,maxY,maxZ,minX,minY,minZ = bounds
-
- file = open(filename, 'wb')
-
- xfigheader(file)
- file.write('#upper view (7)\n')
- file.write('6 % i % i % i % i ')
- file.write('%.6f %.6f %.6f %.6f\n' % (minX, minY, maxX, maxY))
-
- figdata(file, edges, 'xy', bounds, scale, space)
- file.write('-6\n')
- file.write('#bottom view (1)\n')
- file.write('6 %i %i %i %i ')
- file.write('%.6f %.6f %.6f %.6f\n' % (minX, -minZ+maxZ-minY +space, maxX,-maxZ+maxZ-minY +space))
-
- figdata(file, edges, 'xz', bounds, scale, space)
- file.write('-6\n')
-
- file.write('#right view (3)\n')
- file.write('6 %i %i %i %i ')
- file.write('%.6f %.6f %.6f %.6f\n' % (minX, -minZ+maxZ-minY +space, maxX,-maxZ+maxZ-minY +space))
- figdata(file, edges, 'yz', bounds, scale, space)
- file.write('-6\n')
-
- file.close()
- print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
-
-import BPyMessages
-
-def write_ui(filename):
- if filename.lower().endswith('.fig'): filename = filename[:-4]
-
- PREF_SEP= Draw.Create(0)
- PREF_SCALE= Draw.Create(1200)
- PREF_SPACE= Draw.Create(2.0)
-
- block = [\
- ("Separate Files", PREF_SEP, "Export each view axis as a seperate file"),\
- ("Space: ", PREF_SPACE, 0.0, 10.0, "Space between views in blender units"),\
- ("Scale: ", PREF_SCALE, 10, 100000, "Scale, 1200 is a good default")]
-
- if not Draw.PupBlock("Export FIG", block):
- return
-
- edges = []
- bounds = collect_edges(edges)
-
- if PREF_SEP.val:
- writexy(edges, bounds, filename + '_XY.fig', PREF_SCALE.val, PREF_SPACE.val)
- writexz(edges, bounds, filename + '_XZ.fig', PREF_SCALE.val, PREF_SPACE.val)
- writeyz(edges, bounds, filename + '_YZ.fig', PREF_SCALE.val, PREF_SPACE.val)
-
- writeall(edges, bounds, filename + '.fig', PREF_SCALE.val, PREF_SPACE.val)
-
-if __name__ == '__main__':
- Blender.Window.FileSelector(write_ui, 'Export XFIG', Blender.sys.makename(ext='.fig'))
- \ No newline at end of file
diff --git a/release/ui/buttons_data_armature.py b/release/ui/buttons_data_armature.py
index 2982ad52a6d..fd317baf861 100644
--- a/release/ui/buttons_data_armature.py
+++ b/release/ui/buttons_data_armature.py
@@ -1,3 +1,4 @@
+
import bpy
class DataButtonsPanel(bpy.types.Panel):
@@ -6,45 +7,54 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.type == 'ARMATURE')
+ return (context.armature != None)
class DATA_PT_skeleton(DataButtonsPanel):
__idname__ = "DATA_PT_skeleton"
__label__ = "Skeleton"
def draw(self, context):
- arm = context.active_object.data
+ ob = context.object
+ arm = context.armature
+ space = context.space_data
layout = self.layout
-
- row = layout.row()
- row.itemR(arm, "rest_position")
-
- split = layout.split()
-
- sub = split.column()
-
- sub.itemL(text="Deform:")
- sub.itemR(arm, "deform_vertexgroups", text="Vertes Groups")
- sub.itemR(arm, "deform_envelope", text="Envelopes")
- sub.itemR(arm, "deform_quaternion", text="Quaternion")
- sub.itemR(arm, "deform_bbone_rest", text="B-Bones Rest")
- #sub.itemR(arm, "x_axis_mirror")
- #sub.itemR(arm, "auto_ik")
-
- sub = split.column()
- sub.itemL(text="Layers:")
- sub.itemL(text="LAYERS")
- #sub.itemR(arm, "layer")
- #sub.itemR(arm, "layer_protection")
+ split = layout.split(percentage=0.65)
+
+ if ob:
+ split.template_ID(context, ob, "data")
+ split.itemS()
+ elif arm:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ if arm:
+ layout.itemS()
+ layout.itemR(arm, "rest_position")
+
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemL(text="Deform:")
+ sub.itemR(arm, "deform_vertexgroups", text="Vertes Groups")
+ sub.itemR(arm, "deform_envelope", text="Envelopes")
+ sub.itemR(arm, "deform_quaternion", text="Quaternion")
+ sub.itemR(arm, "deform_bbone_rest", text="B-Bones Rest")
+ #sub.itemR(arm, "x_axis_mirror")
+ #sub.itemR(arm, "auto_ik")
+
+ sub = split.column()
+ sub.itemL(text="Layers:")
+ sub.itemL(text="LAYERS")
+ #sub.itemR(arm, "layer")
+ #sub.itemR(arm, "layer_protection")
class DATA_PT_display(DataButtonsPanel):
__idname__ = "DATA_PT_display"
__label__ = "Display"
def draw(self, context):
- arm = context.active_object.data
+ arm = context.armature
layout = self.layout
split = layout.split()
@@ -59,23 +69,21 @@ class DATA_PT_display(DataButtonsPanel):
sub.itemR(arm, "draw_custom_bone_shapes", text="Shapes")
sub.itemR(arm, "draw_group_colors", text="Colors")
-
class DATA_PT_paths(DataButtonsPanel):
__idname__ = "DATA_PT_paths"
__label__ = "Paths"
def draw(self, context):
- arm = context.active_object.data
+ arm = context.armature
layout = self.layout
split = layout.split()
sub = split.column()
-
sub.itemR(arm, "paths_show_around_current_frame", text="Around Frame")
if (arm.paths_show_around_current_frame):
- sub.itemR(arm, "path_before_current", text="Before")
- sub.itemR(arm, "path_after_current", text="After")
+ sub.itemR(arm, "path_before_current", text="Before")
+ sub.itemR(arm, "path_after_current", text="After")
else:
sub.itemR(arm, "path_start_frame", text="Start")
sub.itemR(arm, "path_end_frame", text="End")
@@ -89,19 +97,17 @@ class DATA_PT_paths(DataButtonsPanel):
sub.itemR(arm, "paths_highlight_keyframes", text="Keyframes")
sub.itemR(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers")
-
class DATA_PT_ghost(DataButtonsPanel):
__idname__ = "DATA_PT_ghost"
__label__ = "Ghost"
def draw(self, context):
- arm = context.active_object.data
+ arm = context.armature
layout = self.layout
split = layout.split()
sub = split.column()
-
sub.itemR(arm, "ghost_type", text="Scope")
if arm.ghost_type == 'RANGE':
sub.itemR(arm, "ghost_start_frame", text="Start")
@@ -112,7 +118,6 @@ class DATA_PT_ghost(DataButtonsPanel):
sub.itemR(arm, "ghost_size", text="Step")
sub = split.column()
-
sub.itemR(arm, "ghost_only_selected", text="Selected Only")
bpy.types.register(DATA_PT_skeleton)
diff --git a/release/ui/buttons_data_bone.py b/release/ui/buttons_data_bone.py
index 6982b9beecb..75c201f015e 100644
--- a/release/ui/buttons_data_bone.py
+++ b/release/ui/buttons_data_bone.py
@@ -1,21 +1,20 @@
import bpy
-class DataButtonsPanel(bpy.types.Panel):
+class BoneButtonsPanel(bpy.types.Panel):
__space_type__ = "BUTTONS_WINDOW"
__region_type__ = "WINDOW"
__context__ = "bone"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.type == 'ARMATURE')
+ return (context.bone != None)
-class DATA_PT_bone(DataButtonsPanel):
- __idname__ = "DATA_PT_bone"
+class BONE_PT_bone(BoneButtonsPanel):
+ __idname__ = "BONE_PT_bone"
__label__ = "Bone"
def draw(self, context):
- bone = context.main.armatures[0].bones[0]
+ bone = context.bone
layout = self.layout
split = layout.split()
@@ -26,7 +25,6 @@ class DATA_PT_bone(DataButtonsPanel):
sub.itemR(bone, "connected")
sub.itemR(bone, "deform")
-
sub.itemL(text="Inherit:")
sub.itemR(bone, "hinge")
sub.itemR(bone, "inherit_scale")
@@ -48,20 +46,7 @@ class DATA_PT_bone(DataButtonsPanel):
sub.itemR(bone, "bbone_in", text="Ease In")
sub.itemR(bone, "bbone_out", text="Ease Out")
-
sub.itemR(bone, "cyclic_offset")
+bpy.types.register(BONE_PT_bone)
-class DATA_PT_constraints(DataButtonsPanel):
- __idname__ = "DATA_PT_constraints"
- __label__ = "Constraints"
-
- def draw(self, context):
- bone = context.main.armatures[0].bones[0]
- layout = self.layout
- split = layout.split()
-
- sub = split.column()
-
-bpy.types.register(DATA_PT_bone)
-bpy.types.register(DATA_PT_constraints)
diff --git a/release/ui/buttons_data_camera.py b/release/ui/buttons_data_camera.py
index b41293758ea..362e4f96aa2 100644
--- a/release/ui/buttons_data_camera.py
+++ b/release/ui/buttons_data_camera.py
@@ -7,60 +7,66 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.type == 'CAMERA')
+ return (context.camera != None)
-class DATA_PT_cameralens(DataButtonsPanel):
+class DATA_PT_camera(DataButtonsPanel):
__idname__ = "DATA_PT_camera"
__label__ = "Lens"
def draw(self, context):
- cam = context.active_object.data
+ ob = context.object
+ cam = context.camera
+ space = context.space_data
layout = self.layout
- if not cam:
- return
-
- layout.itemR(cam, "type", expand=True)
-
- row = layout.row(align=True)
- if cam.type == 'PERSP':
- if cam.lens_unit == 'MILLIMETERS':
- row.itemR(cam, "lens", text="Angle")
- elif cam.lens_unit == 'DEGREES':
- row.itemR(cam, "angle")
+ split = layout.split(percentage=0.65)
- row.itemR(cam, "lens_unit", text="")
- elif cam.type == 'ORTHO':
- row.itemR(cam, "ortho_scale")
+ if ob:
+ split.template_ID(context, ob, "data")
+ split.itemS()
+ elif arm:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ if cam:
+ layout.itemS()
+ layout.itemR(cam, "type", expand=True)
- split = layout.split()
-
- sub = split.column(align=True)
- sub.itemL(text="Shift:")
- sub.itemR(cam, "shift_x", text="X")
- sub.itemR(cam, "shift_y", text="Y")
-
- sub = split.column(align=True)
- sub.itemL(text="Clipping:")
- sub.itemR(cam, "clip_start", text="Start")
- sub.itemR(cam, "clip_end", text="End")
-
- row = layout.row()
- row.itemR(cam, "dof_object")
- row.itemR(cam, "dof_distance")
+ row = layout.row(align=True)
+ if cam.type == 'PERSP':
+ row.itemR(cam, "lens_unit", text="")
+ if cam.lens_unit == 'MILLIMETERS':
+ row.itemR(cam, "lens", text="Angle")
+ elif cam.lens_unit == 'DEGREES':
+ row.itemR(cam, "angle")
+
+ elif cam.type == 'ORTHO':
+ row.itemR(cam, "ortho_scale")
+
+ split = layout.split()
+
+ sub = split.column(align=True)
+ sub.itemL(text="Shift:")
+ sub.itemR(cam, "shift_x", text="X")
+ sub.itemR(cam, "shift_y", text="Y")
+
+ sub = split.column(align=True)
+ sub.itemL(text="Clipping:")
+ sub.itemR(cam, "clip_start", text="Start")
+ sub.itemR(cam, "clip_end", text="End")
+
+ row = layout.row()
+ row.itemR(cam, "dof_object")
+ row.itemR(cam, "dof_distance")
-class DATA_PT_cameradisplay(DataButtonsPanel):
- __idname__ = "DATA_PT_cameradisplay"
+class DATA_PT_camera_display(DataButtonsPanel):
+ __idname__ = "DATA_PT_camera_display"
__label__ = "Display"
def draw(self, context):
- cam = context.active_object.data
+ cam = context.camera
layout = self.layout
- if not cam:
- return
-
split = layout.split()
sub = split.column()
@@ -69,13 +75,12 @@ class DATA_PT_cameradisplay(DataButtonsPanel):
sub.itemR(cam, "show_title_safe", text="Title Safe")
sub.itemR(cam, "show_name", text="Name")
- sub = split.column()
- sub.itemR(cam, "show_passepartout", text="Passepartout")
- if (cam.show_passepartout):
- sub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True)
- sub.itemR(cam, "draw_size", text="Size")
+ col = split.column()
+ col.itemR(cam, "show_passepartout", text="Passepartout")
+ colsub = col.column()
+ colsub.active = cam.show_passepartout
+ colsub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True)
+ col.itemR(cam, "draw_size", text="Size")
-bpy.types.register(DATA_PT_cameralens)
-bpy.types.register(DATA_PT_cameradisplay)
-
-
+bpy.types.register(DATA_PT_camera)
+bpy.types.register(DATA_PT_camera_display)
diff --git a/release/ui/buttons_data_curve.py b/release/ui/buttons_data_curve.py
index e7dc7810493..b8b7d6a324f 100644
--- a/release/ui/buttons_data_curve.py
+++ b/release/ui/buttons_data_curve.py
@@ -7,33 +7,44 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.type == 'CURVE')
-
+ ob = context.object
+ return (ob and ob.type == 'CURVE' and context.curve)
class DATA_PT_shape_curve(DataButtonsPanel):
- __idname__ = "DATA_PT_shape_curve"
- __label__ = "Shape"
-
- def draw(self, context):
- curve = context.main.curves[0]
- layout = self.layout
-
- if not curve:
- return
- row = layout.row()
- row.itemR(curve, "curve_2d")
+ __idname__ = "DATA_PT_shape_curve"
+ __label__ = "Shape"
+
+ def draw(self, context):
+ ob = context.object
+ curve = context.curve
+ space = context.space_data
+ layout = self.layout
+
+ split = layout.split(percentage=0.65)
+
+ if ob:
+ split.template_ID(context, ob, "data")
+ split.itemS()
+ elif curve:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ if curve:
+ layout.itemS()
+ layout.itemR(curve, "curve_2d")
split = layout.split()
- sub = split.column()
- sub.itemL(text="Caps:")
- sub.itemR(curve, "front")
- sub.itemR(curve, "back")
+ col = split.column()
+ colsub = col.column()
+ colsub.active = curve.curve_2d
+ colsub.itemL(text="Caps:")
+ colsub.itemR(curve, "front")
+ colsub.itemR(curve, "back")
- sub.itemL(text="Textures:")
- sub.itemR(curve, "uv_orco")
- sub.itemR(curve, "auto_texspace")
+ col.itemL(text="Textures:")
+ col.itemR(curve, "uv_orco")
+ col.itemR(curve, "auto_texspace")
sub = split.column()
sub.itemL(text="Resolution:")
@@ -47,100 +58,86 @@ class DATA_PT_shape_curve(DataButtonsPanel):
sub.itemL(text="NORMALS")
sub.itemR(curve, "vertex_normal_flip")
-
class DATA_PT_geometry(DataButtonsPanel):
- __idname__ = "DATA_PT_geometry"
- __label__ = "Geometry"
+ __idname__ = "DATA_PT_geometry"
+ __label__ = "Geometry"
- def draw(self, context):
- curve = context.main.curves[0]
- layout = self.layout
+ def draw(self, context):
+ curve = context.curve
+ layout = self.layout
- if not curve:
- return
-
-
- split = layout.split()
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemL(text="Modification:")
+ sub.itemR(curve, "width")
+ sub.itemR(curve, "extrude")
+ sub.itemR(curve, "taper_object")
- sub = split.column()
- sub.itemL(text="Modification:")
- sub.itemR(curve, "width")
- sub.itemR(curve, "extrude")
- sub.itemR(curve, "taper_object")
- sub = split.column()
- sub.itemL(text="Bevel:")
- sub.itemR(curve, "bevel_depth", text="Depth", slider=True)
- sub.itemR(curve, "bevel_resolution", text="Resolution")
- sub.itemR(curve, "bevel_object")
-
-
-
+ sub = split.column()
+ sub.itemL(text="Bevel:")
+ sub.itemR(curve, "bevel_depth", text="Depth")
+ sub.itemR(curve, "bevel_resolution", text="Resolution")
+ sub.itemR(curve, "bevel_object")
class DATA_PT_pathanim(DataButtonsPanel):
- __idname__ = "DATA_PT_pathanim"
- __label__ = "Path Animation"
-
- def draw(self, context):
- curve = context.main.curves[0]
- layout = self.layout
-
- if not curve:
- return
-
-
- split = layout.split()
- sub = split.column(1)
- sub.itemR(curve, "path", text="Enable")
+ __idname__ = "DATA_PT_pathanim"
+ __label__ = "Path Animation"
+
+ def draw_header(self, context):
+ curve = context.curve
-
- split = layout.split()
- sub = split.column()
- sub.itemR(curve, "path_length", text="Frames")
- sub.itemR(curve, "follow")
+ layout = self.layout
+ layout.itemR(curve, "path", text="")
- sub = split.column()
- sub.itemR(curve, "stretch")
- sub.itemR(curve, "offset_path_distance", text="Offset Children")
+ def draw(self, context):
+ curve = context.curve
+ layout = self.layout
+ layout.active = curve.path
+
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemR(curve, "path_length", text="Frames")
+ sub.itemR(curve, "follow")
-
+ sub = split.column()
+ sub.itemR(curve, "stretch")
+ sub.itemR(curve, "offset_path_distance", text="Offset Children")
+
class DATA_PT_current_curve(DataButtonsPanel):
- __idname__ = "DATA_PT_current_curve"
- __label__ = "Current Curve"
+ __idname__ = "DATA_PT_current_curve"
+ __label__ = "Current Curve"
- def draw(self, context):
- currentcurve = context.main.curves[0].curves[0]
- layout = self.layout
+ def draw(self, context):
+ currentcurve = context.curve.curves[0] # XXX
+ layout = self.layout
- if not currentcurve:
- return
-
- split = layout.split()
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemL(text="Cyclic:")
+ sub.itemR(currentcurve, "cyclic_u", text="U")
+ sub.itemR(currentcurve, "cyclic_v", text="V")
+ sub.itemL(text="Order:")
+ sub.itemR(currentcurve, "order_u", text="U")
+ sub.itemR(currentcurve, "order_v", text="V")
+ sub.itemL(text="Endpoints:")
+ sub.itemR(currentcurve, "endpoint_u", text="U")
+ sub.itemR(currentcurve, "endpoint_v", text="V")
+
+ sub = split.column()
+ sub.itemL(text="Bezier:")
+ sub.itemR(currentcurve, "bezier_u", text="U")
+ sub.itemR(currentcurve, "bezier_v", text="V")
+ sub.itemL(text="Resolution:")
+ sub.itemR(currentcurve, "resolution_u", text="U")
+ sub.itemR(currentcurve, "resolution_v", text="V")
+ sub.itemL(text="Interpolation:")
+ sub.itemR(currentcurve, "tilt_interpolation", text="Tilt")
+ sub.itemR(currentcurve, "radius_interpolation", text="Tilt")
+ sub.itemR(currentcurve, "smooth")
- sub = split.column()
- sub.itemL(text="Cyclic:")
- sub.itemR(currentcurve, "cyclic_u", text="U")
- sub.itemR(currentcurve, "cyclic_v", text="V")
- sub.itemL(text="Order:")
- sub.itemR(currentcurve, "order_u", text="U")
- sub.itemR(currentcurve, "order_v", text="V")
- sub.itemL(text="Point Count:")
- sub.itemR(currentcurve, "point_count_u", text="U")
- sub.itemR(currentcurve, "point_count_v", text="V")
- sub.itemL(text="Endpoints:")
- sub.itemR(currentcurve, "endpoint_u", text="U")
- sub.itemR(currentcurve, "endpoint_v", text="V")
- sub = split.column()
- sub.itemL(text="Bezier:")
- sub.itemR(currentcurve, "bezier_u", text="U")
- sub.itemR(currentcurve, "bezier_v", text="V")
- sub.itemL(text="Resolution:")
- sub.itemR(currentcurve, "resolution_u", text="U")
- sub.itemR(currentcurve, "resolution_v", text="V")
- sub.itemL(text="Interpolation:")
- sub.itemR(currentcurve, "tilt_interpolation", text="Tilt")
- sub.itemR(currentcurve, "radius_interpolation", text="Tilt")
- sub.itemR(currentcurve, "smooth")
-
bpy.types.register(DATA_PT_shape_curve)
bpy.types.register(DATA_PT_geometry)
bpy.types.register(DATA_PT_pathanim)
diff --git a/release/ui/buttons_data_empty.py b/release/ui/buttons_data_empty.py
index 5fe1e943f1f..7f994c94a07 100644
--- a/release/ui/buttons_data_empty.py
+++ b/release/ui/buttons_data_empty.py
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
+ ob = context.object
return (ob and ob.type == 'EMPTY')
class DATA_PT_empty(DataButtonsPanel):
@@ -15,12 +15,9 @@ class DATA_PT_empty(DataButtonsPanel):
__label__ = "Empty"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
- if not ob:
- return
-
layout.itemR(ob, "empty_draw_type")
layout.itemR(ob, "empty_draw_size")
diff --git a/release/ui/buttons_data_lamp.py b/release/ui/buttons_data_lamp.py
index 2d0efdb83ac..f626eb45ed6 100644
--- a/release/ui/buttons_data_lamp.py
+++ b/release/ui/buttons_data_lamp.py
@@ -7,28 +7,46 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.type == 'LAMP')
+ return (context.lamp != None)
+
+class DATA_PT_preview(DataButtonsPanel):
+ __idname__= "DATA_PT_preview"
+ __label__ = "Preview"
+
+ def draw(self, context):
+ layout = self.layout
+
+ lamp = context.lamp
+ layout.template_preview(lamp)
class DATA_PT_lamp(DataButtonsPanel):
__idname__ = "DATA_PT_lamp"
__label__ = "Lamp"
def draw(self, context):
- lamp = context.active_object.data
+ ob = context.object
+ lamp = context.lamp
+ space = context.space_data
layout = self.layout
- if not lamp:
- return
-
- row = layout.row()
- row.itemR(lamp, "type", expand=True)
+ split = layout.split(percentage=0.65)
+
+ if ob:
+ split.template_ID(context, ob, "data")
+ split.itemS()
+ elif lamp:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ layout.itemS()
+
+ layout.itemR(lamp, "type", expand=True)
split = layout.split()
sub = split.column()
sub.itemR(lamp, "color")
- sub.itemR(lamp, "energy", slider=True)
+ sub.itemR(lamp, "energy")
sub.itemR(lamp, "distance")
sub.itemR(lamp, "negative")
@@ -60,61 +78,56 @@ class DATA_PT_sunsky(DataButtonsPanel):
__label__ = "Sun/Sky"
def poll(self, context):
- ob = context.active_object
- return (ob.type == 'LAMP' and ob.data.type == 'SUN')
+ lamp = context.lamp
+ return (lamp and lamp.type == 'SUN')
def draw(self, context):
- lamp = context.active_object.data
+ lamp = context.lamp.sky
layout = self.layout
- if not lamp:
- return
-
row = layout.row()
row.itemR(lamp, "sky")
row.itemR(lamp, "atmosphere")
- if lamp.sky or lamp.atmosphere:
- layout.itemR(lamp, "atmosphere_turbidity", text="Turbidity")
-
- split = layout.split()
+ row = layout.row()
+ row.active = lamp.sky or lamp.atmosphere
+ row.itemR(lamp, "atmosphere_turbidity", text="Turbidity")
- col = split.column()
- if lamp.sky:
- sub = col.column()
- sub.itemR(lamp, "sky_blend_type", text="Blend Type")
- sub.itemR(lamp, "sky_blend")
- sub.itemR(lamp, "sky_color_space", text="Color Space")
- sub.itemR(lamp, "sky_exposure")
- sub = col.column()
- sub.itemR(lamp, "horizon_brightness", text="Hor Bright")
- sub.itemR(lamp, "spread", text="Hor Spread")
- sub.itemR(lamp, "sun_brightness", text="Sun Bright")
- sub.itemR(lamp, "sun_size")
- sub.itemR(lamp, "backscattered_light", text="Back Light")
+ split = layout.split()
+
+ col = split.column()
+
+ sub = col.column()
+ sub.active = lamp.sky
+ sub.itemR(lamp, "sky_blend_type", text="Blend Type")
+ sub.itemR(lamp, "sky_blend")
+ sub.itemR(lamp, "sky_color_space", text="Color Space")
+ sub.itemR(lamp, "sky_exposure")
+ sub.itemR(lamp, "horizon_brightness", text="Hor Bright")
+ sub.itemR(lamp, "spread", text="Hor Spread")
+ sub.itemR(lamp, "sun_brightness", text="Sun Bright")
+ sub.itemR(lamp, "sun_size")
+ sub.itemR(lamp, "backscattered_light", text="Back Light")
- sub = split.column()
- if lamp.atmosphere:
- sub.itemR(lamp, "sun_intensity", text="Sun Intens")
- sub.itemR(lamp, "atmosphere_inscattering", text="Inscattering")
- sub.itemR(lamp, "atmosphere_extinction", text="Extinction")
- sub.itemR(lamp, "atmosphere_distance_factor", text="Distance")
+ sub = split.column()
+ sub.active = lamp.atmosphere
+ sub.itemR(lamp, "sun_intensity", text="Sun Intens")
+ sub.itemR(lamp, "atmosphere_inscattering", text="Inscattering")
+ sub.itemR(lamp, "atmosphere_extinction", text="Extinction")
+ sub.itemR(lamp, "atmosphere_distance_factor", text="Distance")
class DATA_PT_shadow(DataButtonsPanel):
__idname__ = "DATA_PT_shadow"
__label__ = "Shadow"
def poll(self, context):
- ob = context.active_object
- return (ob.type == 'LAMP' and ob.data.type in ('POINT','SUN', 'SPOT', 'AREA'))
+ lamp = context.lamp
+ return (lamp and lamp.type in ('POINT','SUN', 'SPOT', 'AREA'))
def draw(self, context):
- lamp = context.active_object.data
+ lamp = context.lamp
layout = self.layout
- if not lamp:
- return
-
layout.itemR(lamp, "shadow_method", expand=True)
if lamp.shadow_method in ('BUFFER_SHADOW', 'RAY_SHADOW'):
@@ -187,31 +200,50 @@ class DATA_PT_spot(DataButtonsPanel):
__label__ = "Spot"
def poll(self, context):
- ob = context.active_object
- return (ob.type == 'LAMP' and ob.data.type == 'SPOT')
+ lamp = context.lamp
+ return (lamp and lamp.type == 'SPOT')
def draw(self, context):
- lamp = context.active_object.data
+ lamp = context.lamp
layout = self.layout
- if not lamp:
- return
-
split = layout.split()
sub = split.column()
+ sub.itemR(lamp, "spot_size", text="Size")
+ sub.itemR(lamp, "spot_blend", text="Blend")
sub.itemR(lamp, "square")
- sub.itemR(lamp, "spot_size")
- sub.itemR(lamp, "spot_blend")
- sub = split.column()
- sub.itemR(lamp, "halo")
- if lamp.halo:
- sub.itemR(lamp, "halo_intensity")
- if lamp.shadow_method == 'BUFFER_SHADOW':
- sub.itemR(lamp, "halo_step")
+ col = split.column()
+ col.itemR(lamp, "halo")
+ colsub = col.column()
+ colsub.active = lamp.halo
+ colsub.itemR(lamp, "halo_intensity", text="Intensity")
+ if lamp.shadow_method == 'BUFFER_SHADOW':
+ colsub.itemR(lamp, "halo_step", text="Step")
+
+class DATA_PT_falloff_curve(DataButtonsPanel):
+ __idname__ = "DATA_PT_falloff_curve"
+ __label__ = "Falloff Curve"
+
+ def poll(self, context):
+ lamp = context.lamp
+
+ if lamp and lamp.type in ('POINT', 'SPOT'):
+ if lamp.falloff_type == 'CUSTOM_CURVE':
+ return True
+
+ return False
+
+ def draw(self, context):
+ lamp = context.lamp
+ layout = self.layout
+
+ layout.template_curve_mapping(lamp.falloff_curve)
+bpy.types.register(DATA_PT_preview)
bpy.types.register(DATA_PT_lamp)
bpy.types.register(DATA_PT_shadow)
bpy.types.register(DATA_PT_sunsky)
bpy.types.register(DATA_PT_spot)
+bpy.types.register(DATA_PT_falloff_curve) \ No newline at end of file
diff --git a/release/ui/buttons_data_lattice.py b/release/ui/buttons_data_lattice.py
index c7d5b9cfe4a..8f83cbb45f9 100644
--- a/release/ui/buttons_data_lattice.py
+++ b/release/ui/buttons_data_lattice.py
@@ -7,34 +7,44 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.type == 'LATTICE')
+ return (context.lattice != None)
class DATA_PT_lattice(DataButtonsPanel):
__idname__ = "DATA_PT_lattice"
__label__ = "Lattice"
def draw(self, context):
- lat = context.active_object.data
+ ob = context.object
+ lat = context.lattice
+ space = context.space_data
layout = self.layout
- if not lat:
- return
-
- row = layout.row()
- row.itemR(lat, "points_u")
- row.itemR(lat, "interpolation_type_u", expand=True)
-
- row = layout.row()
- row.itemR(lat, "points_v")
- row.itemR(lat, "interpolation_type_v", expand=True)
-
- row = layout.row()
- row.itemR(lat, "points_w")
- row.itemR(lat, "interpolation_type_w", expand=True)
-
- row = layout.row()
- row.itemR(lat, "outside")
- row.itemR(lat, "shape_keys")
+ split = layout.split(percentage=0.65)
+
+ if ob:
+ split.template_ID(context, ob, "data")
+ split.itemS()
+ elif lat:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ if lat:
+ layout.itemS()
+
+ row = layout.row()
+ row.itemR(lat, "points_u")
+ row.itemR(lat, "interpolation_type_u", expand=True)
+
+ row = layout.row()
+ row.itemR(lat, "points_v")
+ row.itemR(lat, "interpolation_type_v", expand=True)
+
+ row = layout.row()
+ row.itemR(lat, "points_w")
+ row.itemR(lat, "interpolation_type_w", expand=True)
+
+ row = layout.row()
+ row.itemR(lat, "outside")
+ row.itemR(lat, "shape_keys")
bpy.types.register(DATA_PT_lattice)
diff --git a/release/ui/buttons_data_modifier.py b/release/ui/buttons_data_modifier.py
index a28a978080d..0f5d446f889 100644
--- a/release/ui/buttons_data_modifier.py
+++ b/release/ui/buttons_data_modifier.py
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "modifier"
def poll(self, context):
- ob = context.active_object
+ ob = context.object
return (ob and ob.type in ('MESH', 'CURVE', 'SURFACE', 'TEXT', 'LATTICE'))
class DATA_PT_modifiers(DataButtonsPanel):
@@ -15,45 +15,404 @@ class DATA_PT_modifiers(DataButtonsPanel):
__label__ = "Modifiers"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
- if not ob:
- return
-
- layout.row()
- layout.item_menu_enumO("OBJECT_OT_modifier_add", "type")
+ row = layout.row()
+ row.item_menu_enumO("OBJECT_OT_modifier_add", "type")
+ row.itemL();
for md in ob.modifiers:
- sub = layout.box()
-
- row = sub.row()
- row.itemR(md, "expanded", text="")
- row.itemR(md, "name", text="")
-
- row.itemR(md, "render", text="")
- row.itemR(md, "realtime", text="")
- row.itemR(md, "editmode", text="")
- row.itemR(md, "on_cage", text="")
-
- if md.expanded:
- sub.itemS()
-
- if (md.type == 'ARMATURE'):
- self.armature(sub, md)
+ box = layout.template_modifier(md)
+ if box:
+ if md.type == 'ARMATURE':
+ self.armature(box, md)
+ if md.type == 'ARRAY':
+ self.array(box, md)
+ if md.type == 'BEVEL':
+ self.bevel(box, md)
+ if md.type == 'BOOLEAN':
+ self.boolean(box, md)
+ if md.type == 'BUILD':
+ self.build(box, md)
+ if md.type == 'CAST':
+ self.cast(box, md)
+ if md.type == 'CLOTH':
+ self.cloth(box, md)
+ if md.type == 'COLLISION':
+ self.collision(box, md)
+ if md.type == 'CURVE':
+ self.curve(box, md)
+ if md.type == 'DECIMATE':
+ self.decimate(box, md)
+ if md.type == 'DISPLACE':
+ self.displace(box, md)
+ if md.type == 'EDGE_SPLIT':
+ self.edgesplit(box, md)
+ if md.type == 'EXPLODE':
+ self.explode(box, md)
+ if md.type == 'FLUID_SIMULATION':
+ self.fluid(box, md)
+ if md.type == 'HOOK':
+ self.hook(box, md)
+ if md.type == 'LATTICE':
+ self.lattice(box, md)
+ if md.type == 'MASK':
+ self.mask(box, md)
+ if md.type == 'MESH_DEFORM':
+ self.mesh_deform(box, md)
+ if md.type == 'MIRROR':
+ self.mirror(box, md)
+ if md.type == 'MULTIRES':
+ self.multires(box, md)
+ if md.type == 'PARTICLE_INSTANCE':
+ self.particleinstance(box, md)
+ if md.type == 'PARTICLE_SYSTEM':
+ self.particlesystem(box, md)
+ if md.type == 'SHRINKWRAP':
+ self.shrinkwrap(box, md)
+ if md.type == 'SIMPLE_DEFORM':
+ self.simpledeform(box, md)
+ if md.type == 'SMOOTH':
+ self.smooth(box, md)
+ if md.type == 'SOFTBODY':
+ self.softbody(box, md)
+ if md.type == 'SUBSURF':
+ self.subsurf(box, md)
+ if md.type == 'UV_PROJECT':
+ self.uvproject(box, md)
+ if md.type == 'WAVE':
+ self.wave(box, md)
+
def armature(self, layout, md):
layout.itemR(md, "object")
row = layout.row()
row.itemR(md, "vertex_group")
row.itemR(md, "invert")
flow = layout.column_flow()
- flow.itemR(md, "use_vertex_groups")
- flow.itemR(md, "use_bone_envelopes")
+ flow.itemR(md, "use_vertex_groups", text="Vertex Groups")
+ flow.itemR(md, "use_bone_envelopes", text="Bone Envelopes")
flow.itemR(md, "quaternion")
- flow.itemR(md, "b_bone_rest")
flow.itemR(md, "multi_modifier")
-bpy.types.register(DATA_PT_modifiers)
+ def array(self, layout, md):
+ layout.itemR(md, "fit_type")
+ if md.fit_type == 'FIXED_COUNT':
+ layout.itemR(md, "count")
+ if md.fit_type == 'FIT_LENGTH':
+ layout.itemR(md, "length")
+ if md.fit_type == 'FIT_CURVE':
+ layout.itemR(md, "curve")
+
+ layout.itemS()
+
+ split = layout.split()
+
+ col = split.column()
+ col = col.column()
+ col.itemR(md, "constant_offset")
+ colsub = col.column()
+ colsub.active = md.constant_offset
+ colsub.itemR(md, "constant_offset_displacement", text="")
+
+ col.itemS()
+
+ sub = col.row().itemR(md, "merge_adjacent_vertices", text="Merge")
+ colsub = col.column()
+ colsub.active = md.merge_adjacent_vertices
+ colsub.itemR(md, "merge_end_vertices", text="First Last")
+ colsub.itemR(md, "merge_distance", text="Distance")
+
+ col = split.column()
+ col = col.column()
+ col.itemR(md, "relative_offset")
+ colsub = col.column()
+ colsub.active = md.relative_offset
+ colsub.itemR(md, "relative_offset_displacement", text="")
+
+ col.itemS()
+
+ col = col.column()
+ col.itemR(md, "add_offset_object")
+ colsub = col.column()
+ colsub.active = md.add_offset_object
+ colsub.itemR(md, "offset_object", text="")
+
+ layout.itemS()
+
+ col = layout.column()
+ col.itemR(md, "start_cap")
+ col.itemR(md, "end_cap")
+
+ def bevel(self, layout, md):
+ row = layout.row()
+ row.itemR(md, "width")
+ row.itemR(md, "only_vertices")
+
+ layout.itemL(text="Limit Method:")
+ row = layout.row()
+ row.itemR(md, "limit_method", expand=True)
+ if md.limit_method == 'ANGLE':
+ row = layout.row()
+ row.itemR(md, "angle")
+ if md.limit_method == 'WEIGHT':
+ row = layout.row()
+ row.itemR(md, "edge_weight_method", expand=True)
+
+ def boolean(self, layout, md):
+ layout.itemR(md, "operation")
+ layout.itemR(md, "object")
+
+ def build(self, layout, md):
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(md, "start")
+ col.itemR(md, "length")
+
+ col = split.column()
+ col.itemR(md, "randomize")
+ colsub = col.column()
+ colsub.active = md.randomize
+ colsub.itemR(md, "seed")
+
+
+
+ def cast(self, layout, md):
+ layout.itemR(md, "cast_type")
+ col = layout.column_flow()
+ col.itemR(md, "x")
+ col.itemR(md, "y")
+ col.itemR(md, "z")
+ col.itemR(md, "factor")
+ col.itemR(md, "radius")
+ col.itemR(md, "size")
+ layout.itemR(md, "vertex_group")
+ #Missing: "OB" and "From Radius"
+
+ def cloth(self, layout, md):
+ layout.itemL(text="See Cloth panel.")
+
+ def collision(self, layout, md):
+ layout.itemL(text="See Collision panel.")
+
+ def curve(self, layout, md):
+ layout.itemR(md, "object")
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "deform_axis")
+
+ def decimate(self, layout, md):
+ layout.itemR(md, "ratio")
+ layout.itemR(md, "face_count")
+
+ def displace(self, layout, md):
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "texture")
+ layout.itemR(md, "midlevel")
+ layout.itemR(md, "strength")
+ layout.itemR(md, "texture_coordinates")
+ if md.texture_coordinates == 'OBJECT':
+ layout.itemR(md, "texture_coordinate_object", text="Object")
+ if md.texture_coordinates == 'UV':
+ layout.itemR(md, "uv_layer")
+
+ def edgesplit(self, layout, md):
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(md, "use_edge_angle", text="Edge Angle")
+ colsub = col.column()
+ colsub.active = md.use_edge_angle
+ colsub.itemR(md, "split_angle")
+ col = split.column()
+ col.itemR(md, "use_sharp", text="Sharp Edges")
+
+ def explode(self, layout, md):
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "protect")
+ layout.itemR(md, "split_edges")
+ layout.itemR(md, "unborn")
+ layout.itemR(md, "alive")
+ layout.itemR(md, "dead")
+ # Missing: "Refresh" and "Clear Vertex Group" ?
+
+ def fluid(self, layout, md):
+ layout.itemL(text="See Fluidsim panel.")
+
+ def hook(self, layout, md):
+ layout.itemR(md, "falloff")
+ layout.itemR(md, "force", slider=True)
+ layout.itemR(md, "object")
+ layout.itemR(md, "vertex_group")
+ # Missing: "Reset" and "Recenter"
+
+ def lattice(self, layout, md):
+ layout.itemR(md, "object")
+ layout.itemR(md, "vertex_group")
+
+ def mask(self, layout, md):
+ layout.itemR(md, "mode")
+ if md.mode == 'ARMATURE':
+ layout.itemR(md, "armature")
+ if md.mode == 'VERTEX_GROUP':
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "inverse")
+
+ def mesh_deform(self, layout, md):
+ layout.itemR(md, "object")
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "invert")
+ layout.itemS()
+ layout.itemO("OBJECT_OT_modifier_mdef_bind", text="Bind")
+ row = layout.row()
+ row.itemR(md, "precision")
+ row.itemR(md, "dynamic")
+
+ def mirror(self, layout, md):
+ layout.itemR(md, "merge_limit")
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemR(md, "x")
+ sub.itemR(md, "y")
+ sub.itemR(md, "z")
+ sub = split.column()
+ sub.itemL(text="Textures:")
+ sub.itemR(md, "mirror_u")
+ sub.itemR(md, "mirror_v")
+ sub = split.column()
+ sub.itemR(md, "clip", text="Do Clipping")
+ sub.itemR(md, "mirror_vertex_groups", text="Vertex Group")
+
+ layout.itemR(md, "mirror_object")
+
+ def multires(self, layout, md):
+ layout.itemR(md, "subdivision_type")
+ layout.itemO("OBJECT_OT_multires_subdivide", text="Subdivide")
+ layout.itemR(md, "level")
+
+ def particleinstance(self, layout, md):
+ layout.itemR(md, "object")
+ layout.itemR(md, "particle_system_number")
+
+ col = layout.column_flow()
+ col.itemR(md, "normal")
+ col.itemR(md, "children")
+ col.itemR(md, "path")
+ col.itemR(md, "unborn")
+ col.itemR(md, "alive")
+ col.itemR(md, "dead")
+
+ def particlesystem(self, layout, md):
+ layout.itemL(text="See Particle panel.")
+
+ def shrinkwrap(self, layout, md):
+ layout.itemR(md, "target")
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "offset")
+ layout.itemR(md, "subsurf_levels")
+ layout.itemR(md, "mode")
+ if md.mode == 'PROJECT':
+ layout.itemR(md, "subsurf_levels")
+ layout.itemR(md, "auxiliary_target")
+
+ row = layout.row()
+ row.itemR(md, "x")
+ row.itemR(md, "y")
+ row.itemR(md, "z")
+
+ col = layout.column_flow()
+ col.itemR(md, "negative")
+ col.itemR(md, "positive")
+ col.itemR(md, "cull_front_faces")
+ col.itemR(md, "cull_back_faces")
+ if md.mode == 'NEAREST_SURFACEPOINT':
+ layout.itemR(md, "keep_above_surface")
+ # To-Do: Validate if structs
+
+ def simpledeform(self, layout, md):
+ layout.itemR(md, "mode")
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "origin")
+ layout.itemR(md, "relative")
+ layout.itemR(md, "factor")
+ layout.itemR(md, "limits")
+ if md.mode in ('TAPER', 'STRETCH'):
+ layout.itemR(md, "lock_x_axis")
+ layout.itemR(md, "lock_y_axis")
+
+ def smooth(self, layout, md):
+ split = layout.split()
+ sub = split.column()
+ sub.itemR(md, "x")
+ sub.itemR(md, "y")
+ sub.itemR(md, "z")
+ sub = split.column()
+ sub.itemR(md, "factor")
+ sub.itemR(md, "repeat")
+
+ layout.itemR(md, "vertex_group")
+
+ def softbody(self, layout, md):
+ layout.itemL(text="See Softbody panel.")
+
+ def subsurf(self, layout, md):
+ layout.itemR(md, "subdivision_type")
+ col = layout.column_flow()
+ col.itemR(md, "levels", text="Preview")
+ col.itemR(md, "render_levels", text="Render")
+ col.itemR(md, "optimal_draw", text="Optimal Display")
+ col.itemR(md, "subsurf_uv")
+
+ def uvproject(self, layout, md):
+ layout.itemR(md, "uv_layer")
+ layout.itemR(md, "projectors")
+ layout.itemR(md, "image")
+ layout.itemR(md, "horizontal_aspect_ratio")
+ layout.itemR(md, "vertical_aspect_ratio")
+ layout.itemR(md, "override_image")
+ #"Projectors" don't work.
+
+ def wave(self, layout, md):
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemL(text="Motion:")
+ sub.itemR(md, "x")
+ sub.itemR(md, "y")
+ sub.itemR(md, "cyclic")
+
+ sub = split.column()
+ sub.itemR(md, "normals")
+ row = sub.row(align=True)
+ row.active = md.normals
+ row.itemR(md, "x_normal", text="X", toggle=True)
+ row.itemR(md, "y_normal", text="Y", toggle=True)
+ row.itemR(md, "z_normal", text="Z", toggle=True)
+
+ col = layout.column_flow()
+ col.itemR(md, "time_offset")
+ col.itemR(md, "lifetime")
+ col.itemR(md, "damping_time")
+ col.itemR(md, "falloff_radius")
+ col.itemR(md, "start_position_x")
+ col.itemR(md, "start_position_y")
+
+ layout.itemR(md, "start_position_object")
+ layout.itemR(md, "vertex_group")
+ layout.itemR(md, "texture")
+ layout.itemR(md, "texture_coordinates")
+ if md.texture_coordinates == 'MAP_UV':
+ layout.itemR(md, "uv_layer")
+ if md.texture_coordinates == 'OBJECT':
+ layout.itemR(md, "texture_coordinates_object")
+
+ col = layout.column_flow()
+ col.itemR(md, "speed", slider=True)
+ col.itemR(md, "height", slider=True)
+ col.itemR(md, "width", slider=True)
+ col.itemR(md, "narrowness", slider=True)
+bpy.types.register(DATA_PT_modifiers)
diff --git a/release/ui/buttons_data_text.py b/release/ui/buttons_data_text.py
index 8db1d0316a9..20503d8d2fd 100644
--- a/release/ui/buttons_data_text.py
+++ b/release/ui/buttons_data_text.py
@@ -7,21 +7,31 @@ class DataButtonsPanel(bpy.types.Panel):
__context__ = "data"
def poll(self, context):
- ob = context.active_object
+ ob = context.object
return (ob and ob.type == 'TEXT')
class DATA_PT_shape_text(DataButtonsPanel):
- __idname__ = "DATA_PT_shape_text"
- __label__ = "Shape"
+ __idname__ = "DATA_PT_shape_text"
+ __label__ = "Shape"
- def draw(self, context):
- curve = context.main.curves[0]
- layout = self.layout
+ def draw(self, context):
+ ob = context.object
+ curve = context.curve
+ space = context.space_data
+ layout = self.layout
+
+ split = layout.split(percentage=0.65)
- if not curve:
- return
- row = layout.row()
- row.itemR(curve, "curve_2d")
+ if ob:
+ split.template_ID(context, ob, "data")
+ split.itemS()
+ elif curve:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ if curve:
+ layout.itemS()
+ layout.itemR(curve, "curve_2d")
split = layout.split()
@@ -44,34 +54,29 @@ class DATA_PT_shape_text(DataButtonsPanel):
sub.itemL(text="Display:")
sub.itemR(curve, "fast")
-
class DATA_PT_font(DataButtonsPanel):
__idname__ = "DATA_PT_font"
__label__ = "Font"
def draw(self, context):
- text = context.main.curves[0]
+ text = context.curve
layout = self.layout
- if not text:
- return
-
layout.row()
layout.itemR(text, "font")
split = layout.split()
sub = split.column()
-
# sub.itemR(text, "style")
- sub.itemR(text, "bold")
- sub.itemR(text, "italic")
- sub.itemR(text, "underline")
+ # sub.itemR(text, "bold")
+ # sub.itemR(text, "italic")
+ # sub.itemR(text, "underline")
+ # ToDo: These settings are in a sub struct (Edit Format).
sub.itemR(text, "text_size")
sub.itemR(text, "shear")
sub = split.column()
-
sub.itemR(text, "text_on_curve")
sub.itemR(text, "family")
sub.itemL(text="Underline:")
@@ -80,30 +85,20 @@ class DATA_PT_font(DataButtonsPanel):
# sub.itemR(text, "edit_format")
-
-
-
-
class DATA_PT_paragraph(DataButtonsPanel):
__idname__ = "DATA_PT_paragraph"
__label__ = "Paragraph"
def draw(self, context):
- text = context.main.curves[0]
+ text = context.curve
layout = self.layout
- if not text:
- return
-
- row = layout.row()
- row.itemL(text="Align:")
- row = layout.row()
- row.itemR(text, "spacemode", expand=True)
+ layout.itemL(text="Align:")
+ layout.itemR(text, "spacemode", expand=True)
split = layout.split()
sub = split.column()
-
sub.itemL(text="Spacing:")
sub.itemR(text, "spacing", text="Character")
sub.itemR(text, "word_spacing", text="Word")
@@ -120,16 +115,10 @@ class DATA_PT_textboxes(DataButtonsPanel):
__label__ = "Text Boxes"
def draw(self, context):
- text = context.main.curves[0]
+ text = context.curve
layout = self.layout
- if not text:
- return
-
-
-
bpy.types.register(DATA_PT_shape_text)
bpy.types.register(DATA_PT_font)
bpy.types.register(DATA_PT_paragraph)
-bpy.types.register(DATA_PT_textboxes)
-
+#bpy.types.register(DATA_PT_textboxes)
diff --git a/release/ui/buttons_material.py b/release/ui/buttons_material.py
index d13ae251a5a..b9816e36dd7 100644
--- a/release/ui/buttons_material.py
+++ b/release/ui/buttons_material.py
@@ -7,50 +7,79 @@ class MaterialButtonsPanel(bpy.types.Panel):
__context__ = "material"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.active_material)
+ return (context.material != None)
+
+class MATERIAL_PT_preview(MaterialButtonsPanel):
+ __idname__= "MATERIAL_PT_preview"
+ __label__ = "Preview"
+
+ def poll(self, context):
+ return (context.material or context.object)
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = context.material
+ layout.template_preview(mat)
class MATERIAL_PT_material(MaterialButtonsPanel):
__idname__= "MATERIAL_PT_material"
__label__ = "Material"
+ def poll(self, context):
+ return (context.material or context.object)
+
def draw(self, context):
layout = self.layout
- mat = context.active_object.active_material
-
- row = layout.row()
- row.itemR(mat, "type", expand=True)
+ mat = context.material
+ ob = context.object
+ slot = context.material_slot
+ space = context.space_data
- row = layout.row()
- row.column().itemR(mat, "diffuse_color")
- row.column().itemR(mat, "specular_color")
- row.column().itemR(mat, "mirror_color")
+ split = layout.split(percentage=0.65)
+
+ if ob and slot:
+ split.template_ID(context, slot, "material", new="MATERIAL_OT_new")
+ split.itemR(ob, "active_material_index", text="Active")
+ elif mat:
+ split.template_ID(context, space, "pin_id")
+ split.itemS()
+
+ if mat:
+ layout.itemS()
- row = layout.row()
- row.itemR(mat, "alpha", slider=True)
+ layout.itemR(mat, "type", expand=True)
+
+ row = layout.row()
+ row.column().itemR(mat, "diffuse_color")
+ row.column().itemR(mat, "specular_color")
+ row.column().itemR(mat, "mirror_color")
+
+ layout.itemR(mat, "alpha", slider=True)
class MATERIAL_PT_sss(MaterialButtonsPanel):
__idname__= "MATERIAL_PT_sss"
__label__ = "Subsurface Scattering"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.active_material and ob.active_material.type == "SURFACE")
+ mat = context.material
+ return (mat and mat.type == "SURFACE")
def draw_header(self, context):
- sss = context.active_object.active_material.subsurface_scattering
+ sss = context.material.subsurface_scattering
layout = self.layout
layout.itemR(sss, "enabled", text="")
def draw(self, context):
layout = self.layout
- sss = context.active_object.active_material.subsurface_scattering
+ sss = context.material.subsurface_scattering
+ layout.active = sss.enabled
flow = layout.column_flow()
flow.itemR(sss, "error_tolerance")
flow.itemR(sss, "ior")
- flow.itemR(sss, "scale", slider=True)
+ flow.itemR(sss, "scale")
row = layout.row()
row.column().itemR(sss, "color")
@@ -59,32 +88,32 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
flow = layout.column_flow()
flow.itemR(sss, "color_factor", slider=True)
flow.itemR(sss, "texture_factor", slider=True)
- flow.itemR(sss, "front", slider=True)
- flow.itemR(sss, "back", slider=True)
+ flow.itemR(sss, "front")
+ flow.itemR(sss, "back")
class MATERIAL_PT_raymir(MaterialButtonsPanel):
__idname__= "MATERIAL_PT_raymir"
__label__ = "Ray Mirror"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.active_material and ob.active_material.type == "SURFACE")
+ mat = context.material
+ return (mat and mat.type == "SURFACE")
def draw_header(self, context):
- raym = context.active_object.active_material.raytrace_mirror
+ raym = context.material.raytrace_mirror
layout = self.layout
layout.itemR(raym, "enabled", text="")
def draw(self, context):
layout = self.layout
- raym = context.active_object.active_material.raytrace_mirror
-
+ raym = context.material.raytrace_mirror
+ layout.active = raym.enabled
split = layout.split()
sub = split.column()
sub.itemR(raym, "reflect", text="RayMir", slider=True)
- sub.itemR(raym, "fresnel", slider=True)
+ sub.itemR(raym, "fresnel")
sub.itemR(raym, "fresnel_fac", text="Fac", slider=True)
sub = split.column()
@@ -93,34 +122,36 @@ class MATERIAL_PT_raymir(MaterialButtonsPanel):
sub.itemR(raym, "gloss_samples")
sub.itemR(raym, "gloss_anisotropic", slider=True)
- flow = layout.column_flow()
- flow.itemR(raym, "distance", text="Max Dist")
- flow.itemR(raym, "depth")
- flow.itemR(raym, "fade_to")
+ row = layout.row()
+ row.itemR(raym, "distance", text="Max Dist")
+ row.itemR(raym, "depth")
+
+ layout.itemR(raym, "fade_to")
class MATERIAL_PT_raytransp(MaterialButtonsPanel):
__idname__= "MATERIAL_PT_raytransp"
__label__= "Ray Transparency"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.active_material and ob.active_material.type == "SURFACE")
+ mat = context.material
+ return (mat and mat.type == "SURFACE")
def draw_header(self, context):
- rayt = context.active_object.active_material.raytrace_transparency
+ rayt = context.material.raytrace_transparency
layout = self.layout
layout.itemR(rayt, "enabled", text="")
def draw(self, context):
layout = self.layout
- rayt = context.active_object.active_material.raytrace_transparency
+ rayt = context.material.raytrace_transparency
+ layout.active = rayt.enabled
split = layout.split()
sub = split.column()
sub.itemR(rayt, "ior")
- sub.itemR(rayt, "fresnel", slider=True)
+ sub.itemR(rayt, "fresnel")
sub.itemR(rayt, "fresnel_fac", text="Fac", slider=True)
sub = split.column()
@@ -131,7 +162,7 @@ class MATERIAL_PT_raytransp(MaterialButtonsPanel):
flow = layout.column_flow()
flow.itemR(rayt, "filter", slider=True)
flow.itemR(rayt, "limit")
- flow.itemR(rayt, "falloff", slider=True)
+ flow.itemR(rayt, "falloff")
flow.itemR(rayt, "specular_opacity", slider=True)
flow.itemR(rayt, "depth")
@@ -140,58 +171,56 @@ class MATERIAL_PT_halo(MaterialButtonsPanel):
__label__= "Halo"
def poll(self, context):
- ob = context.active_object
- return (ob and ob.active_material and ob.active_material.type == "HALO")
+ mat = context.material
+ return (mat and mat.type == "HALO")
def draw(self, context):
layout = self.layout
- mat = context.active_object.active_material
+ mat = context.material
halo = mat.halo
split = layout.split()
- sub = split.column()
- sub.itemL(text="General Settings:")
- sub.itemR(halo, "size", slider=True)
- sub.itemR(halo, "hardness", slider=True)
- sub.itemR(halo, "add", slider=True)
-
- sub = split.column()
- sub.itemL(text="Elements:")
- sub.itemR(halo, "ring")
- sub.itemR(halo, "lines")
- sub.itemR(halo, "star")
- sub.itemR(halo, "flare_mode")
+ col = split.column(align=True)
+ col.itemL(text="General Settings:")
+ col.itemR(halo, "size")
+ col.itemR(halo, "hardness")
+ col.itemR(halo, "add", slider=True)
+
+ col.itemL(text="Options:")
+ col.itemR(halo, "use_texture", text="Texture")
+ col.itemR(halo, "use_vertex_normal", text="Vertex Normal")
+ col.itemR(halo, "xalpha")
+ col.itemR(halo, "shaded")
+ col.itemR(halo, "soft")
- row = layout.row()
-
- sub = row.column()
- sub.itemL(text="Options:")
- sub.itemR(halo, "use_texture", text="Texture")
- sub.itemR(halo, "use_vertex_normal", text="Vertex Normal")
- sub.itemR(halo, "xalpha")
- sub.itemR(halo, "shaded")
- sub.itemR(halo, "soft")
-
- sub = row.column()
- if (halo.ring):
- sub.itemR(halo, "rings", slider=True)
- if (halo.lines):
- sub.itemR(halo, "line_number", slider=True)
- if (halo.ring or halo.lines):
- sub.itemR(halo, "seed")
- if (halo.star):
- sub.itemR(halo, "star_tips", slider=True)
- if (halo.flare_mode):
- sub.itemL(text="Flare:")
- sub.itemR(halo, "flare_size", text="Size", slider=True)
- sub.itemR(halo, "flare_subsize", text="Subsize", slider=True)
- sub.itemR(halo, "flare_boost", text="Boost", slider=True)
- sub.itemR(halo, "flare_seed", text="Seed")
- sub.itemR(halo, "flares_sub", text="Sub", slider=True)
-
+ col = split.column()
+ col = col.column(align=True)
+ col.itemR(halo, "ring")
+ colsub = col.column()
+ colsub.active = halo.ring
+ colsub.itemR(halo, "rings")
+ col.itemR(halo, "lines")
+ colsub = col.column()
+ colsub.active = halo.lines
+ colsub.itemR(halo, "line_number", text="Lines")
+ col.itemR(halo, "star")
+ colsub = col.column()
+ colsub.active = halo.star
+ colsub.itemR(halo, "star_tips")
+ col.itemR(halo, "flare_mode")
+ colsub = col.column()
+ colsub.active = halo.flare_mode
+ colsub.itemR(halo, "flare_size", text="Size")
+ colsub.itemR(halo, "flare_subsize", text="Subsize")
+ colsub.itemR(halo, "flare_boost", text="Boost")
+ colsub.itemR(halo, "flare_seed", text="Seed")
+ colsub.itemR(halo, "flares_sub", text="Sub")
+
+bpy.types.register(MATERIAL_PT_preview)
bpy.types.register(MATERIAL_PT_material)
bpy.types.register(MATERIAL_PT_raymir)
bpy.types.register(MATERIAL_PT_raytransp)
bpy.types.register(MATERIAL_PT_sss)
bpy.types.register(MATERIAL_PT_halo)
+
diff --git a/release/ui/buttons_objects.py b/release/ui/buttons_objects.py
index c0e1f439df8..6d75146fe5f 100644
--- a/release/ui/buttons_objects.py
+++ b/release/ui/buttons_objects.py
@@ -7,14 +7,14 @@ class ObjectButtonsPanel(bpy.types.Panel):
__context__ = "object"
def poll(self, context):
- return (context.active_object != None)
+ return (context.object != None)
class OBJECT_PT_transform(ObjectButtonsPanel):
__idname__ = "OBJECT_PT_transform"
__label__ = "Transform"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
row = layout.row()
@@ -27,7 +27,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
__label__ = "Groups"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
row = layout.row()
@@ -39,22 +39,22 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
for group in bpy.data.groups:
if ob in group.objects:
- box = layout.box()
+ col = layout.column(align=True)
- row = box.row()
- row.itemR(group, "name")
+ row = col.box().row()
+ row.itemR(group, "name", text="")
#row.itemO("OBJECT_OT_remove_group")
- row = box.row()
- row.column().itemR(group, "layer")
- row.column().itemR(group, "dupli_offset")
+ split = col.box().split()
+ split.column().itemR(group, "layer")
+ split.column().itemR(group, "dupli_offset")
class OBJECT_PT_display(ObjectButtonsPanel):
__idname__ = "OBJECT_PT_display"
__label__ = "Display"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
row = layout.row()
@@ -74,13 +74,12 @@ class OBJECT_PT_duplication(ObjectButtonsPanel):
__label__ = "Duplication"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
- row = layout.row()
- row.itemR(ob, "dupli_type", expand=True)
+ layout.itemR(ob, "dupli_type", expand=True)
- if ob.dupli_type == "FRAMES":
+ if ob.dupli_type == 'FRAMES':
split = layout.split()
sub = split.column(align=True)
@@ -91,41 +90,30 @@ class OBJECT_PT_duplication(ObjectButtonsPanel):
sub.itemR(ob, "dupli_frames_on", text="On")
sub.itemR(ob, "dupli_frames_off", text="Off")
- split = layout.split()
- sub = split.column()
- sub.itemR(ob, "dupli_frames_no_speed", text="No Speed")
+ layout.itemR(ob, "dupli_frames_no_speed", text="No Speed")
- elif ob.dupli_type == "VERTS":
- split = layout.split()
-
- sub = split.column(align=True)
- sub.itemR(ob, "dupli_verts_rotation", text="Rotation")
+ elif ob.dupli_type == 'VERTS':
+ layout.itemR(ob, "dupli_verts_rotation", text="Rotation")
- elif ob.dupli_type == "FACES":
- split = layout.split()
-
- sub = split.column()
- sub.itemR(ob, "dupli_faces_scale", text="Scale")
- sub = split.column()
- sub.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale")
+ elif ob.dupli_type == 'FACES':
+ row = layout.row()
+ row.itemR(ob, "dupli_faces_scale", text="Scale")
+ row.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale")
- elif ob.dupli_type == "GROUP":
- split = layout.split()
-
- sub = split.column(align=True)
- sub.itemR(ob, "dupli_group", text="Group")
+ elif ob.dupli_type == 'GROUP':
+ layout.itemR(ob, "dupli_group", text="Group")
class OBJECT_PT_animation(ObjectButtonsPanel):
__idname__ = "OBJECT_PT_animation"
__label__ = "Animation"
def draw(self, context):
- ob = context.active_object
+ ob = context.object
layout = self.layout
-
- row = layout.row()
- sub = row.column()
+ split = layout.split()
+
+ sub = split.column()
sub.itemL(text="Time Offset:")
sub.itemR(ob, "time_offset_edit", text="Edit")
sub.itemR(ob, "time_offset_particle", text="Particle")
@@ -133,7 +121,7 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
sub.itemR(ob, "slow_parent")
sub.itemR(ob, "time_offset", text="Offset")
- sub = row.column()
+ sub = split.column()
sub.itemL(text="Tracking:")
sub.itemR(ob, "track_axis", text="Axis")
sub.itemR(ob, "up_axis", text="Up Axis")
diff --git a/release/ui/buttons_scene.py b/release/ui/buttons_scene.py
index f3ab661a678..e275b888156 100644
--- a/release/ui/buttons_scene.py
+++ b/release/ui/buttons_scene.py
@@ -23,10 +23,12 @@ class RENDER_PT_shading(RenderButtonsPanel):
sub.itemR(rd, "render_envmaps", text="Environment Map")
# sub.itemR(rd, "render_radiosity", text="Radio")
- sub = split.column()
- sub.itemR(rd, "render_raytracing", text="Ray Tracing")
- if (rd.render_raytracing):
- sub.itemR(rd, "octree_resolution", text="Octree")
+ col = split.column()
+ col.itemR(rd, "render_raytracing", text="Ray Tracing")
+ colsub = col.column()
+ colsub.active = rd.render_raytracing
+ colsub.itemR(rd, "octree_resolution", text="Octree")
+ col.itemR(rd, "dither_intensity", text="Dither", slider=True)
class RENDER_PT_output(RenderButtonsPanel):
__label__ = "Output"
@@ -37,36 +39,64 @@ class RENDER_PT_output(RenderButtonsPanel):
rd = scene.render_data
- col = layout.column()
- col.itemR(rd, "output_path")
+ layout.itemR(rd, "output_path")
split = layout.split()
- sub = split.column()
- sub.itemR(rd, "image_type")
- if rd.image_type in ("AVIJPEG", "JPEG"):
- sub.itemR(rd, "quality", slider=True)
+ col = split.column()
+ col.itemR(rd, "file_extensions")
+ col.itemR(rd, "fields", text="Fields")
+ colsub = col.column()
+ colsub.active = rd.fields
+ colsub.itemR(rd, "fields_still", text="Still")
+ colsub.row().itemR(rd, "field_order", expand=True)
+
+ col = split.column()
+ col.itemR(rd, "color_mode")
+ col.itemR(rd, "alpha_mode")
+ col.itemL(text="Distributed Rendering:")
+ col.itemR(rd, "placeholders")
+ col.itemR(rd, "no_overwrite")
- sub = split.column()
- sub.itemR(rd, "color_mode")
- sub.itemR(rd, "alpha_mode")
+
+ layout.itemR(rd, "file_format", text="Format")
split = layout.split()
- sub = split.column()
- sub.itemL(text="Distributed Rendering:")
- sub.itemR(rd, "placeholders")
- sub.itemR(rd, "no_overwrite")
+ col = split.column()
- sub = split.column()
- sub.itemL(text="Settings:")
- sub.itemR(rd, "file_extensions")
- sub.itemR(rd, "fields", text="Fields")
- if rd.fields:
- sub.itemR(rd, "fields_still", text="Still")
- sub.row().itemR(rd, "field_order", expand=True)
-
-
+ if rd.file_format in ("AVIJPEG", "JPEG"):
+ col.itemR(rd, "quality", slider=True)
+
+ elif rd.file_format in ("OPENEXR"):
+ col.itemR(rd, "exr_codec")
+ col.itemR(rd, "exr_half")
+ col = split.column()
+ col.itemR(rd, "exr_zbuf")
+ col.itemR(rd, "exr_preview")
+
+ elif rd.file_format in ("JPEG2000"):
+ row = layout.row()
+ row.itemR(rd, "jpeg_preset")
+ split = layout.split()
+ col = split.column()
+ col.itemL(text="Depth:")
+ col.row().itemR(rd, "jpeg_depth", expand=True)
+ col = split.column()
+ col.itemR(rd, "jpeg_ycc")
+ col.itemR(rd, "exr_preview")
+
+ elif rd.file_format in ("CINEON", "DPX"):
+ col.itemR(rd, "cineon_log", text="Convert to Log")
+ colsub = col.column()
+ colsub.active = rd.cineon_log
+ colsub.itemR(rd, "cineon_black", text="Black")
+ colsub.itemR(rd, "cineon_white", text="White")
+ colsub.itemR(rd, "cineon_gamma", text="Gamma")
+
+ elif rd.file_format in ("TIFF"):
+ col.itemR(rd, "tiff_bit")
+
class RENDER_PT_antialiasing(RenderButtonsPanel):
__label__ = "Anti-Aliasing"
@@ -78,22 +108,24 @@ class RENDER_PT_antialiasing(RenderButtonsPanel):
def draw(self, context):
scene = context.scene
- layout = self.layout
-
rd = scene.render_data
+ layout = self.layout
+ layout.active = rd.antialiasing
+
split = layout.split()
sub = split.column()
sub.itemL(text="Samples:")
sub.row().itemR(rd, "antialiasing_samples", expand=True)
-
- sub = split.column()
sub.itemR(rd, "pixel_filter")
- sub.itemR(rd, "filter_size", text="Size", slider=True)
- sub.itemR(rd, "save_buffers")
- if rd.save_buffers:
- sub.itemR(rd, "full_sample")
+
+ col = split.column()
+ col.itemR(rd, "filter_size", text="Size", slider=True)
+ col.itemR(rd, "save_buffers")
+ colsub = col.column()
+ colsub.active = rd.save_buffers
+ colsub.itemR(rd, "full_sample")
class RENDER_PT_render(RenderButtonsPanel):
__label__ = "Render"
@@ -105,34 +137,35 @@ class RENDER_PT_render(RenderButtonsPanel):
rd = scene.render_data
row = layout.row()
- row.itemO("SCREEN_OT_render", text="Render Still")
- row.item_booleanO("SCREEN_OT_render", "anim", True, text="Render Animation")
+ row.itemO("SCREEN_OT_render", text="Render Still", icon=109)
+ row.item_booleanO("SCREEN_OT_render", "anim", True, text="Render Animation", icon=111)
row = layout.row()
row.itemR(rd, "do_composite")
row.itemR(rd, "do_sequence")
- if rd.do_composite:
- row = layout.row()
- row.itemR(rd, "free_image_textures")
-
- row = layout.row()
- row.itemL(text="Threads:")
- row.itemL(text="Tiles:")
-
+ rowsub = layout.row()
+ rowsub.active = rd.do_composite
+ rowsub.itemR(rd, "free_image_textures")
+
split = layout.split()
- sub = split.column(align=True)
- sub.row().itemR(rd, "threads_mode", expand=True)
- if rd.threads_mode == 'THREADS_FIXED':
- sub.itemR(rd, "threads")
+ col = split.column(align=True)
+ col.itemL(text="Threads:")
+ col.row().itemR(rd, "threads_mode", expand=True)
+ colsub = col.column()
+ colsub.active = rd.threads_mode == 'THREADS_FIXED'
+ colsub.itemR(rd, "threads")
sub = split.column(align=True)
+ sub.itemL(text="Tiles:")
sub.itemR(rd, "parts_x", text="X")
sub.itemR(rd, "parts_y", text="Y")
- row = layout.row()
- row.itemR(rd, "panorama")
- row.itemR(rd, "dither_intensity", text="Dither", slider=True)
+ split = layout.split()
+ sub = split.column()
+ sub = split.column()
+ sub.itemR(rd, "panorama")
+
# row.itemR(rd, "backbuf")
class RENDER_PT_dimensions(RenderButtonsPanel):
@@ -146,19 +179,22 @@ class RENDER_PT_dimensions(RenderButtonsPanel):
split = layout.split()
- col = split.column(align=True)
- col.itemL(text="Resolution:")
- col.itemR(rd, "resolution_x", text="X")
- col.itemR(rd, "resolution_y", text="Y")
- col.itemR(rd, "resolution_percentage", text="")
+ col = split.column()
+ sub = col.column(align=True)
+ sub.itemL(text="Resolution:")
+ sub.itemR(rd, "resolution_x", text="X")
+ sub.itemR(rd, "resolution_y", text="Y")
+ sub.itemR(rd, "resolution_percentage", text="")
- col.itemL(text="Aspect Ratio:")
- col.itemR(rd, "pixel_aspect_x", text="X")
- col.itemR(rd, "pixel_aspect_y", text="Y")
+ sub.itemL(text="Aspect Ratio:")
+ sub.itemR(rd, "pixel_aspect_x", text="X")
+ sub.itemR(rd, "pixel_aspect_y", text="Y")
+ col = col.column(align=False)
col.itemR(rd, "border", text="Border")
- if rd.border:
- col.itemR(rd, "crop_to_border")
+ colsub = col.column()
+ colsub.active = rd.border
+ colsub.itemR(rd, "crop_to_border")
col = split.column(align=True)
col.itemL(text="Frame Range:")
@@ -169,9 +205,49 @@ class RENDER_PT_dimensions(RenderButtonsPanel):
col.itemL(text="Frame Rate:")
col.itemR(rd, "fps")
col.itemR(rd, "fps_base",text="/")
+
+class RENDER_PT_stamp(RenderButtonsPanel):
+ __label__ = "Stamp"
+
+ def draw_header(self, context):
+ rd = context.scene.render_data
+
+ layout = self.layout
+ layout.itemR(rd, "stamp", text="")
+
+ def draw(self, context):
+ scene = context.scene
+ rd = scene.render_data
+
+ layout = self.layout
+ layout.active = rd.stamp
+
+ split = layout.split()
+ col = split.column()
+ col.itemR(rd, "stamp_time", text="Time")
+ col.itemR(rd, "stamp_date", text="Date")
+ col.itemR(rd, "stamp_frame", text="Frame")
+ col.itemR(rd, "stamp_camera", text="Scene")
+ col.itemR(rd, "stamp_marker", text="Marker")
+ col.itemR(rd, "stamp_filename", text="Filename")
+ col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip")
+ col.itemR(rd, "stamp_note", text="Note")
+ colsub = col.column()
+ colsub.active = rd.stamp_note
+ colsub.itemR(rd, "stamp_note_text", text="")
+
+ sub = split.column()
+ sub.itemR(rd, "render_stamp")
+ colsub = sub.column()
+ colsub.active = rd.render_stamp
+ colsub.itemR(rd, "stamp_foreground")
+ colsub.itemR(rd, "stamp_background")
+ colsub.itemR(rd, "stamp_font_size", text="Font Size")
+
bpy.types.register(RENDER_PT_render)
bpy.types.register(RENDER_PT_dimensions)
bpy.types.register(RENDER_PT_antialiasing)
bpy.types.register(RENDER_PT_shading)
bpy.types.register(RENDER_PT_output)
+bpy.types.register(RENDER_PT_stamp) \ No newline at end of file
diff --git a/release/ui/buttons_world.py b/release/ui/buttons_world.py
index 0bcd466366a..8298c0c9b13 100644
--- a/release/ui/buttons_world.py
+++ b/release/ui/buttons_world.py
@@ -7,30 +7,61 @@ class WorldButtonsPanel(bpy.types.Panel):
__context__ = "world"
def poll(self, context):
- return (context.scene.world != None)
+ return (context.world != None)
+
+class WORLD_PT_preview(WorldButtonsPanel):
+ __label__ = "Preview"
+
+ def poll(self, context):
+ return (context.scene or context.world)
+
+ def draw(self, context):
+ layout = self.layout
+
+ world = context.world
+ layout.template_preview(world)
class WORLD_PT_world(WorldButtonsPanel):
__label__ = "World"
+ def poll(self, context):
+ return (context.scene or context.world)
+
def draw(self, context):
- world = context.scene.world
+ scene = context.scene
+ world = context.world
+ space = context.space_data
layout = self.layout
-
- row = layout.row()
- row.itemR(world, "blend_sky")
- row.itemR(world, "paper_sky")
- row.itemR(world, "real_sky")
-
- row = layout.row()
- row.column().itemR(world, "horizon_color")
- row.column().itemR(world, "zenith_color")
- row.column().itemR(world, "ambient_color")
+
+ split = layout.split(percentage=0.65)
+
+ if scene:
+ split.template_ID(context, scene, "world", new="WORLD_OT_new")
+ elif world:
+ split.template_ID(context, space, "pin_id")
+
+ split.itemS()
+
+ if world:
+ layout.itemS()
+
+ row = layout.row()
+ row.itemR(world, "blend_sky")
+ row.itemR(world, "paper_sky")
+ row.itemR(world, "real_sky")
+
+ row = layout.row()
+ row.column().itemR(world, "horizon_color")
+ col = row.column()
+ col.itemR(world, "zenith_color")
+ col.active = world.blend_sky
+ row.column().itemR(world, "ambient_color")
class WORLD_PT_color_correction(WorldButtonsPanel):
__label__ = "Color Correction"
def draw(self, context):
- world = context.scene.world
+ world = context.world
layout = self.layout
row = layout.row()
@@ -41,14 +72,15 @@ class WORLD_PT_mist(WorldButtonsPanel):
__label__ = "Mist"
def draw_header(self, context):
- world = context.scene.world
+ world = context.world
layout = self.layout
layout.itemR(world.mist, "enabled", text="")
def draw(self, context):
- world = context.scene.world
+ world = context.world
layout = self.layout
+ layout.active = world.mist.enabled
flow = layout.column_flow()
flow.itemR(world.mist, "start")
@@ -63,46 +95,51 @@ class WORLD_PT_stars(WorldButtonsPanel):
__label__ = "Stars"
def draw_header(self, context):
- world = context.scene.world
+ world = context.world
layout = self.layout
layout.itemR(world.stars, "enabled", text="")
def draw(self, context):
- world = context.scene.world
+ world = context.world
layout = self.layout
+ layout.active = world.stars.enabled
flow = layout.column_flow()
flow.itemR(world.stars, "size")
flow.itemR(world.stars, "min_distance", text="Min. Dist")
flow.itemR(world.stars, "average_separation", text="Separation")
- flow.itemR(world.stars, "color_randomization", text="Random:")
+ flow.itemR(world.stars, "color_randomization", text="Random")
class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
__label__ = "Ambient Occlusion"
def draw_header(self, context):
- world = context.scene.world
+ world = context.world
layout = self.layout
layout.itemR(world.ambient_occlusion, "enabled", text="")
def draw(self, context):
- world = context.scene.world
- layout = self.layout
-
+ world = context.world
ao = world.ambient_occlusion
+ layout = self.layout
+ layout.active = ao.enabled
- row = layout.row()
- row.itemR(ao, "gather_method", expand=True)
+ layout.itemR(ao, "gather_method", expand=True)
if ao.gather_method == 'RAYTRACE':
- row = layout.row()
- row.itemR(ao, "samples")
- row.itemR(ao, "distance")
+ split = layout.split()
+ col = split.column()
+ col.itemR(ao, "samples")
+ col.itemR(ao, "distance")
+ col = split.column()
+ col.itemR(ao, "falloff")
+ colsub = col.column()
+ colsub.active = ao.falloff
+ colsub.itemR(ao, "strength")
- row = layout.row()
- row.itemR(ao, "sample_method")
+ layout.itemR(ao, "sample_method")
if ao.sample_method == 'ADAPTIVE_QMC':
row = layout.row()
row.itemR(ao, "threshold")
@@ -113,29 +150,26 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
row.itemR(ao, "bias")
if ao.gather_method == 'APPROXIMATE':
- row = layout.row()
- row.itemR(ao, "passes")
- row.itemR(ao, "error_tolerance", text="Error")
-
- row = layout.row()
- row.itemR(ao, "correction")
- row.itemR(ao, "pixel_cache")
+ split = layout.split()
+ col = split.column()
+ col.itemR(ao, "passes")
+ col.itemR(ao, "error_tolerance", text="Error")
+ col.itemR(ao, "correction")
+ col = split.column()
+ col.itemR(ao, "falloff")
+ colsub = col.column()
+ colsub.active = ao.falloff
+ colsub.itemR(ao, "strength")
+ col.itemR(ao, "pixel_cache")
- row = layout.row()
- row.itemS()
-
- row = layout.row()
- row.itemR(ao, "falloff")
- row.itemR(ao, "strength")
-
col = layout.column()
col.row().itemR(ao, "blend_mode", expand=True)
col.row().itemR(ao, "color", expand=True)
col.itemR(ao, "energy")
+bpy.types.register(WORLD_PT_preview)
bpy.types.register(WORLD_PT_world)
bpy.types.register(WORLD_PT_ambient_occlusion)
bpy.types.register(WORLD_PT_mist)
bpy.types.register(WORLD_PT_stars)
bpy.types.register(WORLD_PT_color_correction)
-
diff --git a/release/ui/space_sequencer.py b/release/ui/space_sequencer.py
new file mode 100644
index 00000000000..c4521bfc140
--- /dev/null
+++ b/release/ui/space_sequencer.py
@@ -0,0 +1,526 @@
+
+import bpy
+
+def act_strip(context):
+ try: return context.scene.sequence_editor.active_strip
+ except: return None
+
+# Header
+class SEQUENCER_HT_header(bpy.types.Header):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __idname__ = "SEQUENCE_HT_header"
+
+ def draw(self, context):
+
+ st = context.space_data
+ layout = self.layout
+
+ layout.template_header(context)
+
+ if context.area.show_menus:
+ row = layout.row(align=True)
+ row.itemM(context, "SEQUENCER_MT_view")
+
+ row.itemR(st, "display_mode")
+
+ layout.itemS()
+
+ if st.display_mode == 'SEQUENCER':
+ row.itemM(context, "SEQUENCER_MT_select")
+ row.itemM(context, "SEQUENCER_MT_marker")
+ row.itemM(context, "SEQUENCER_MT_add")
+ row.itemM(context, "SEQUENCER_MT_strip")
+ layout.itemS()
+ row.itemO("SEQUENCER_OT_reload")
+ else:
+ row.itemR(st, "display_channel") # text="Chan"
+
+class SEQUENCER_MT_view(bpy.types.Menu):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __label__ = "View (TODO)"
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ layout.column()
+
+ """
+ uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP);
+ short yco= 0, menuwidth=120;
+
+ if (sseq->mainb == SEQ_DRAW_SEQUENCE) {
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
+ "Play Back Animation "
+ "in all Sequence Areas|Alt A", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
+ }
+ else {
+ uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL,
+ "Grease Pencil...", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
+ uiDefMenuSep(block);
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
+ "Play Back Animation "
+ "in this window|Alt A", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
+ }
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
+ "Play Back Animation in all "
+ "3D Views and Sequence Areas|Alt Shift A",
+ 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+
+ """
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_view_all")
+ layout.itemO("SEQUENCER_OT_view_selected")
+ layout.itemS()
+ """
+
+
+ /* Lock Time */
+ uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT,
+ "Lock Time to Other Windows|", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
+
+ /* Draw time or frames.*/
+ uiDefMenuSep(block);
+ """
+
+ layout.itemR(st, "draw_frames")
+
+ """
+ if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, "");
+ else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
+
+ """
+
+class SEQUENCER_MT_select(bpy.types.Menu):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __label__ = "Select"
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ layout.column()
+ layout.item_enumO("SEQUENCER_OT_select_active_side", "side", 'LEFT', text="Strips to the Left")
+ layout.item_enumO("SEQUENCER_OT_select_active_side", "side", 'RIGHT', text="Strips to the Right")
+ layout.itemS()
+ layout.item_enumO("SEQUENCER_OT_select_handles", "side", 'BOTH', text="Surrounding Handles")
+ layout.item_enumO("SEQUENCER_OT_select_handles", "side", 'LEFT', text="Left Handle")
+ layout.item_enumO("SEQUENCER_OT_select_handles", "side", 'RIGHT', text="Right Handle")
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_select_linked")
+ layout.itemO("SEQUENCER_OT_select_all_toggle")
+ layout.itemO("SEQUENCER_OT_select_invert")
+
+class SEQUENCER_MT_marker(bpy.types.Menu):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __label__ = "Marker (TODO)"
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ layout.column()
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="Add Marker|Ctrl Alt M")
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="Duplicate Marker|Ctrl Shift D")
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="Delete Marker|Shift X")
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="(Re)Name Marker|Ctrl M")
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="Grab/Move Marker|Ctrl G")
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
+
+class SEQUENCER_MT_add(bpy.types.Menu):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __label__ = "Add"
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ layout.column()
+ layout.itemO("SEQUENCER_OT_movie_strip_add", text="Movie")
+ layout.item_booleanO("SEQUENCER_OT_movie_strip_add", "sound", True, text="Movie & Sound") # FFMPEG ONLY
+ layout.itemO("SEQUENCER_OT_image_strip_add", text="Image")
+ layout.itemO("SEQUENCER_OT_sound_strip_add", text="Sound (Ram)")
+ layout.item_booleanO("SEQUENCER_OT_sound_strip_add", "hd", True, text="Sound (Streaming)") # FFMPEG ONLY
+
+ layout.itemM(context, "SEQUENCER_MT_add_effect")
+
+
+class SEQUENCER_MT_add_effect(bpy.types.Menu):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __label__ = "Effect Strip..."
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ self.layout.column()
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'ADD')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'SUBTRACT')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'ALPHA_OVER')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'ALPHA_UNDER')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'GAMMA_CROSS')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'MULTIPLY')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'OVER_DROP')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'PLUGIN')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'WIPE')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'GLOW')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'TRANSFORM')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'COLOR')
+ self.layout.item_enumO("SEQUENCER_OT_effect_strip_add", 'type', 'SPEED')
+
+class SEQUENCER_MT_strip(bpy.types.Menu):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __label__ = "Strip"
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+
+ layout.column()
+ layout.item_enumO("TFM_OT_transform", "mode", 'TRANSLATION', text="Grab/Move")
+ layout.item_enumO("TFM_OT_transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame")
+ # uiItemO(layout, NULL, 0, "SEQUENCER_OT_strip_snap"); // TODO - add this operator
+ layout.itemS()
+
+ layout.item_enumO("SEQUENCER_OT_cut", "type", 'HARD', text="Cut (hard) at frame")
+ layout.item_enumO("SEQUENCER_OT_cut", "type", 'SOFT', text="Cut (soft) at frame")
+ layout.itemO("SEQUENCER_OT_images_separate")
+ layout.itemS()
+
+ layout.itemO("SEQUENCER_OT_duplicate_add")
+ layout.itemO("SEQUENCER_OT_delete")
+
+ strip = act_strip(context)
+
+ if strip:
+ stype = strip.type
+
+ if stype=='EFFECT':
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_effect_change")
+ layout.itemO("SEQUENCER_OT_effect_reassign_inputs")
+ elif stype=='IMAGE':
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_image_change")
+ elif stype=='SCENE':
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_scene_change", text="Change Scene")
+ elif stype=='MOVIE':
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_movie_change")
+
+ layout.itemS()
+
+ layout.itemO("SEQUENCER_OT_meta_make")
+ layout.itemO("SEQUENCER_OT_meta_separate")
+
+ #if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) {
+ # uiItemS(layout);
+ # uiItemO(layout, NULL, 0, "SEQUENCER_OT_meta_toggle");
+ #}
+
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_reload")
+ layout.itemS()
+ layout.itemO("SEQUENCER_OT_lock")
+ layout.itemO("SEQUENCER_OT_unlock")
+ layout.itemO("SEQUENCER_OT_mute")
+ layout.itemO("SEQUENCER_OT_unmute")
+
+ layout.item_enumO("SEQUENCER_OT_mute", property="type", value='UNSELECTED', text="Mute Deselected Strips")
+
+ layout.itemO("SEQUENCER_OT_snap")
+
+# Panels
+class SequencerButtonsPanel(bpy.types.Panel):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __region_type__ = "UI"
+
+ def poll(self, context):
+ return context.space_data.display_mode == 'SEQUENCER' and act_strip(context) != None
+
+class SequencerButtonsPanel_Output(bpy.types.Panel):
+ __space_type__ = "SEQUENCE_EDITOR"
+ __region_type__ = "UI"
+
+ def poll(self, context):
+ return context.space_data.display_mode != 'SEQUENCER'
+
+class SEQUENCER_PT_edit(SequencerButtonsPanel):
+ __label__ = "Edit Strip"
+ __idname__ = "SEQUENCER_PT_edit"
+
+ def draw(self, context):
+ layout = self.layout
+
+ strip = act_strip(context)
+
+ layout.itemR(strip, "name")
+
+ layout.itemR(strip, "type")
+
+ layout.itemR(strip, "blend_mode")
+
+ layout.itemR(strip, "blend_opacity", text="Opacity", slider=True)
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(strip, "mute")
+ col.itemR(strip, "lock")
+ col.itemR(strip, "frame_locked")
+
+ col = split.column()
+ col.itemR(strip, "channel")
+ col.itemR(strip, "start_frame")
+ col.itemR(strip, "length")
+
+
+class SEQUENCER_PT_effect(SequencerButtonsPanel):
+ __label__ = "Effect Strip"
+ __idname__ = "SEQUENCER_PT_effect"
+
+ def poll(self, context):
+ if context.space_data.display_mode != 'SEQUENCER':
+ return False
+
+ strip = act_strip(context)
+ if not strip:
+ return False
+
+ return strip.type in ('COLOR', 'WIPE', 'GLOW', 'SPEED', 'TRANSFORM')
+
+ def draw(self, context):
+ layout = self.layout
+
+ strip = act_strip(context)
+
+ if strip.type == 'COLOR':
+ layout.itemR(strip, "color")
+
+ elif strip.type == 'WIPE':
+ row = layout.row()
+ row.itemL(text="Transition Type:")
+ row.itemL(text="Direction:")
+
+ row = layout.row()
+ row.itemR(strip, "transition_type", text="")
+ row.itemR(strip, "direction", text="")
+
+ row = layout.row()
+ row.itemR(strip, "blur_width")
+ if strip.transition_type in ('SINGLE', 'DOUBLE'):
+ row.itemR(strip, "angle")
+
+ elif strip.type == 'GLOW':
+ flow = layout.column_flow()
+ flow.itemR(strip, "threshold")
+ flow.itemR(strip, "clamp")
+ flow.itemR(strip, "boost_factor")
+ flow.itemR(strip, "blur_distance")
+
+ row = layout.row()
+ row.itemR(strip, "quality", slider=True)
+ row.itemR(strip, "only_boost")
+
+ elif strip.type == 'SPEED':
+ layout.itemR(strip, "global_speed")
+
+ flow = layout.column_flow()
+ flow.itemR(strip, "curve_velocity")
+ flow.itemR(strip, "curve_compress_y")
+ flow.itemR(strip, "frame_blending")
+
+ elif strip.type == 'TRANSFORM':
+ row = layout.row()
+ row.itemL(text="Interpolation:")
+ row.itemL(text="Translation Unit:")
+
+ row = layout.row()
+ row.itemR(strip, "interpolation", text="")
+ row.itemR(strip, "translation_unit", text="")
+
+ split = layout.split()
+
+ col = split.column()
+ sub = col.column(align=True)
+ sub.itemL(text="Position X:")
+ sub.itemR(strip, "translate_start_x", text="Start")
+ sub.itemR(strip, "translate_end_x", text="End")
+
+ sub = col.column(align=True)
+ sub.itemL(text="Scale X:")
+ sub.itemR(strip, "scale_start_x", text="Start")
+ sub.itemR(strip, "scale_end_x", text="End")
+
+ sub = col.column(align=True)
+ sub.itemL(text="Rotation:")
+ sub.itemR(strip, "rotation_start", text="Start")
+ sub.itemR(strip, "rotation_end", text="End")
+
+ col = split.column()
+ sub = col.column(align=True)
+ sub.itemL(text="Position Y:")
+ sub.itemR(strip, "translate_start_y", text="Start")
+ sub.itemR(strip, "translate_end_y", text="End")
+
+ sub = col.column(align=True)
+ sub.itemL(text="Scale Y:")
+ sub.itemR(strip, "scale_start_y", text="Start")
+ sub.itemR(strip, "scale_end_y", text="End")
+
+class SEQUENCER_PT_input(SequencerButtonsPanel):
+ __label__ = "Strip Input"
+ __idname__ = "SEQUENCER_PT_input"
+
+ def poll(self, context):
+ if context.space_data.display_mode != 'SEQUENCER':
+ return False
+
+ strip = act_strip(context)
+ if not strip:
+ return False
+
+ return strip.type in ('MOVIE', 'IMAGE', 'SOUND')
+
+ def draw(self, context):
+ layout = self.layout
+
+ strip = act_strip(context)
+
+ split = layout.split(percentage=0.3)
+ sub = split.column()
+ sub.itemL(text="Directory:")
+ sub = split.column()
+ sub.itemR(strip, "directory", text="")
+
+ # Current element for the filename
+ split = layout.split(percentage=0.3)
+ sub = split.column()
+ sub.itemL(text="File Name:")
+ sub = split.column()
+
+ elem = strip.getStripElem(context.scene.current_frame)
+ if elem:
+ sub.itemR(elem, "filename", text="") # strip.elements[0] could be a fallback
+
+ """
+ layout.itemR(strip, "use_crop")
+
+ flow = layout.column_flow()
+ flow.active = strip.use_crop
+ flow.itemR(strip, "top")
+ flow.itemR(strip, "left")
+ flow.itemR(strip, "bottom")
+ flow.itemR(strip, "right")
+ """
+
+class SEQUENCER_PT_filter(SequencerButtonsPanel):
+ __label__ = "Filter"
+ __idname__ = "SEQUENCER_PT_filter"
+
+ def poll(self, context):
+ if context.space_data.display_mode != 'SEQUENCER':
+ return False
+
+ strip = act_strip(context)
+ if not strip:
+ return False
+
+ return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META')
+
+ def draw(self, context):
+ layout = self.layout
+
+ strip = act_strip(context)
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(strip, "premultiply")
+ col.itemR(strip, "convert_float")
+ col.itemR(strip, "de_interlace")
+ col.itemR(strip, "multiply_colors")
+ col.itemR(strip, "strobe")
+
+ col = split.column()
+ col.itemL(text="Flip:")
+ col.itemR(strip, "flip_x", text="X")
+ col.itemR(strip, "flip_y", text="Y")
+ col.itemR(strip, "reverse_frames", text="Backwards")
+
+ layout.itemR(strip, "use_color_balance")
+
+class SEQUENCER_PT_proxy(SequencerButtonsPanel):
+ __label__ = "Proxy"
+ __idname__ = "SEQUENCER_PT_proxy"
+
+ def poll(self, context):
+ if context.space_data.display_mode != 'SEQUENCER':
+ return False
+
+ strip = act_strip(context)
+ if not strip:
+ return False
+
+ return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META')
+
+ def draw_header(self, context):
+ strip = act_strip(context)
+
+ layout = self.layout
+
+ layout.itemR(strip, "use_proxy", text="")
+
+ def draw(self, context):
+ strip = act_strip(context)
+
+ layout = self.layout
+
+ row = layout.row()
+ row.itemR(strip, "proxy_custom_directory")
+ if strip.proxy: # TODO - need to add this somehow
+ row.itemR(strip.proxy, "dir")
+ row.itemR(strip.proxy, "file")
+
+
+class SEQUENCER_PT_view(SequencerButtonsPanel_Output):
+ __label__ = "View Settings"
+ __idname__ = "SEQUENCER_PT_view"
+
+ def draw(self, context):
+ st = context.space_data
+
+ layout = self.layout
+
+ flow = layout.column_flow()
+ flow.itemR(st, "draw_overexposed") # text="Zebra"
+ flow.itemR(st, "draw_safe_margin")
+
+
+bpy.types.register(SEQUENCER_HT_header) # header/menu classes
+bpy.types.register(SEQUENCER_MT_view)
+bpy.types.register(SEQUENCER_MT_select)
+bpy.types.register(SEQUENCER_MT_marker)
+bpy.types.register(SEQUENCER_MT_add)
+bpy.types.register(SEQUENCER_MT_add_effect)
+bpy.types.register(SEQUENCER_MT_strip)
+
+bpy.types.register(SEQUENCER_PT_edit) # sequencer panels
+bpy.types.register(SEQUENCER_PT_effect)
+bpy.types.register(SEQUENCER_PT_input)
+bpy.types.register(SEQUENCER_PT_filter)
+bpy.types.register(SEQUENCER_PT_proxy)
+
+bpy.types.register(SEQUENCER_PT_view) # view panels
+
diff --git a/release/ui/space_text.py b/release/ui/space_text.py
index d4187c10b69..5c6c5c0d21b 100644
--- a/release/ui/space_text.py
+++ b/release/ui/space_text.py
@@ -38,7 +38,7 @@ class TEXT_HT_header(bpy.types.Header):
row.itemR(st, "syntax_highlight", text="", icon=ICON_SYNTAX_OFF)
# row.itemR(st, "do_python_plugins", text="", icon=ICON_SCRIPTPLUGINS)
- layout.template_header_ID(context, st, "text", new="TEXT_OT_new", open="TEXT_OT_open", unlink="TEXT_OT_unlink")
+ layout.template_ID(context, st, "text", new="TEXT_OT_new", open="TEXT_OT_open", unlink="TEXT_OT_unlink")
if text:
row = layout.row()
diff --git a/release/windows/installer/00.blender.nsi b/release/windows/installer/00.blender.nsi
deleted file mode 100644
index 8666ed812b3..00000000000
--- a/release/windows/installer/00.blender.nsi
+++ /dev/null
@@ -1,450 +0,0 @@
-;
-; $Id$
-;
-; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)
-;
-
-!include "MUI.nsh"
-
-Name "Blender VERSION"
-
-!define MUI_ABORTWARNING
-
-!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully."
-!define MUI_WELCOMEFINISHPAGE_BITMAP "01.installer.bmp"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "00.header.bmp"
-!define MUI_COMPONENTSPAGE_SMALLDESC
-!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
-!define MUI_CHECKBITMAP "00.checked.bmp"
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt"
-!insertmacro MUI_PAGE_COMPONENTS
-
-!insertmacro MUI_PAGE_DIRECTORY
-Page custom DataLocation
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-
-!insertmacro MUI_UNPAGE_WELCOME
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-
-
-Icon "00.installer.ico"
-UninstallIcon "00.installer.ico"
-
-;--------------------------------
-;Languages
-
- !insertmacro MUI_LANGUAGE "English"
-
-;--------------------------------
-;Language Strings
-
- ;Description
- LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder."
- LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
- LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
- LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
- LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"
-;--------------------------------
-;Data
-
-Caption "Blender VERSION Installer"
-OutFile "DISTDIR\..\VERSION\blender-VERSION-windows.exe"
-
-InstallDir "$PROGRAMFILES\Blender Foundation\Blender"
-
-BrandingText "http://www.blender.org/bf"
-ComponentText "This will install Blender VERSION on your computer."
-
-DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder."
-
-; GetWindowsVersion
-;
-; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
-; Updated by Joost Verburg
-;
-; Returns on top of stack
-;
-; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
-; or
-; '' (Unknown Windows Version)
-;
-; Usage:
-; Call GetWindowsVersion
-; Pop $R0
-; ; at this point $R0 is "NT 4.0" or whatnot
-
-Function GetWindowsVersion
-
- Push $R0
- Push $R1
-
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-
- IfErrors 0 lbl_winnt
-
- ; we are not NT
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
-
- StrCpy $R1 $R0 1
- StrCmp $R1 '4' 0 lbl_error
-
- StrCpy $R1 $R0 3
-
- StrCmp $R1 '4.0' lbl_win32_95
- StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
-
- lbl_win32_95:
- StrCpy $R0 '95'
- Goto lbl_done
-
- lbl_win32_98:
- StrCpy $R0 '98'
- Goto lbl_done
-
- lbl_win32_ME:
- StrCpy $R0 'ME'
- Goto lbl_done
-
- lbl_winnt:
-
- StrCpy $R1 $R0 1
-
- StrCmp $R1 '3' lbl_winnt_x
- StrCmp $R1 '4' lbl_winnt_x
-
- StrCpy $R1 $R0 3
-
- StrCmp $R1 '5.0' lbl_winnt_2000
- StrCmp $R1 '5.1' lbl_winnt_XP
- StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
-
- lbl_winnt_x:
- StrCpy $R0 "NT $R0" 6
- Goto lbl_done
-
- lbl_winnt_2000:
- Strcpy $R0 '2000'
- Goto lbl_done
-
- lbl_winnt_XP:
- Strcpy $R0 'XP'
- Goto lbl_done
-
- lbl_winnt_2003:
- Strcpy $R0 '2003'
- Goto lbl_done
-
- lbl_error:
- Strcpy $R0 ''
- lbl_done:
-
- Pop $R1
- Exch $R0
-
-FunctionEnd
-
-Var BLENDERHOME
-Var winversion
-
-Function SetWinXPPath
- StrCpy $BLENDERHOME "$PROFILE\Application Data\Blender Foundation\Blender"
-FunctionEnd
-
-Function SetWin9xPath
- StrCpy $BLENDERHOME $INSTDIR
-FunctionEnd
-
-Function .onInit
- Call GetWindowsVersion
- Pop $R0
- Strcpy $winversion $R0
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "data.ini"
-FunctionEnd
-
-Var HWND
-Var DLGITEM
-Var is2KXP
-
-Function DataLocation
- !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" ""
-
- ; Set default choice
- !insertmacro MUI_INSTALLOPTIONS_WRITE "data.ini" "Field 3" "State" 1
-
- StrCpy $R1 $winversion 2
- StrCmp $R1 "NT" do_win2kxp
- StrCmp $winversion "2000" do_win2kxp
- StrCmp $winversion "XP" do_win2kxp
- StrCmp $winversion "2003" do_win2kxp
-
- ;else...
- Strcpy $is2KXP "false"
-
- Goto continue
-
- do_win2kXP:
- Strcpy $is2KXP "true"
-
- continue:
-
- !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "data.ini"
- Pop $HWND
-
- Strcmp $is2KXP "true" do_dlg
-
- ; Disable App Data option on Win9x
-
- GetDlgItem $DLGITEM $HWND 1201
- EnableWindow $DLGITEM 0
-
- do_dlg:
-
- !insertmacro MUI_INSTALLOPTIONS_SHOW
- !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 2" "State" ; App Dir
- Strcmp $R0 1 do_app_data
- !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 3" "State" ; Inst Dir
- Strcmp $R0 1 do_inst_path
- !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 4" "State" ; Home Dir
- Strcmp $R0 1 do_home_path
-
- Goto end
-
- do_app_data:
- Call SetWinXPPath
- Goto end
- do_home_path:
- ReadEnvStr $BLENDERHOME "HOME"
- Goto end
- do_inst_path:
- Call SetWin9xPath
- end:
-
-FunctionEnd
-
-Section "Blender-VERSION (required)" SecCopyUI
- SectionIn RO
-
-; Sets $BLENDERHOME to suit Windows version...
-
- ; Set output path to the installation directory.
- SetOutPath $INSTDIR
- ; Put file there
- File DISTDIR\blender.exe
- File DISTDIR\blenderplayer.exe
- File DISTDIR\python23.dll
- File DISTDIR\python23.zip
- File DISTDIR\sdl.dll
- File DISTDIR\gnu_gettext.dll
- File DISTDIR\Copyright.txt
- File DISTDIR\Blender.html
- File DISTDIR\python-license.txt
- File DISTDIR\Release_SHORTVERS.txt
- File DISTDIR\GPL-license.txt
- File DISTDIR\Help.url
- File DISTDIR\zlib.pyd
-
- SetOutPath $BLENDERHOME\.blender
- File DISTDIR\.blender\.bfont.ttf
-
- SetOutPath $BLENDERHOME\.blender\scripts
- File DISTDIR\.blender\scripts\ac3d_export.py
- File DISTDIR\.blender\scripts\ac3d_import.py
- File DISTDIR\.blender\scripts\Apply_def.py
- File DISTDIR\.blender\scripts\Axiscopy.py
- File DISTDIR\.blender\scripts\batch_name_edit.py
- File DISTDIR\.blender\scripts\bevel_center.py
- File DISTDIR\.blender\scripts\blender2cal3d.py
- File DISTDIR\.blender\scripts\bvh_export.py
- File DISTDIR\.blender\scripts\bvh_import.py
- File DISTDIR\.blender\scripts\clean_mesh.py
- File DISTDIR\.blender\scripts\config.py
- File DISTDIR\.blender\scripts\DirectX8Exporter.py
- File DISTDIR\.blender\scripts\DirectXExporter.py
- File DISTDIR\.blender\scripts\disp_paint.py
- File DISTDIR\.blender\scripts\doc_browser.py
- File DISTDIR\.blender\scripts\fixfromarmature.py
- File DISTDIR\.blender\scripts\help_browser.py
- File DISTDIR\.blender\scripts\help_getting_started.py
- File DISTDIR\.blender\scripts\help_manual.py
- File DISTDIR\.blender\scripts\help_py_reference.py
- File DISTDIR\.blender\scripts\help_release_notes.py
- File DISTDIR\.blender\scripts\help_tutorials.py
- File DISTDIR\.blender\scripts\help_web_blender.py
- File DISTDIR\.blender\scripts\help_web_devcomm.py
- File DISTDIR\.blender\scripts\help_web_eshop.py
- File DISTDIR\.blender\scripts\help_web_usercomm.py
- File DISTDIR\.blender\scripts\hotkeys.py
- File DISTDIR\.blender\scripts\kloputils.py
- File DISTDIR\.blender\scripts\knife.py
- File DISTDIR\.blender\scripts\lightwave_export.py
- File DISTDIR\.blender\scripts\lightwave_import.py
- File DISTDIR\.blender\scripts\nendo_export.py
- File DISTDIR\.blender\scripts\nendo_import.py
- File DISTDIR\.blender\scripts\obdatacopier.py
- File DISTDIR\.blender\scripts\obj_export.py
- File DISTDIR\.blender\scripts\obj_import.py
- File DISTDIR\.blender\scripts\off_export.py
- File DISTDIR\.blender\scripts\off_import.py
- File DISTDIR\.blender\scripts\paths_import.py
- File DISTDIR\.blender\scripts\radiosity_export.py
- File DISTDIR\.blender\scripts\radiosity_import.py
- File DISTDIR\.blender\scripts\raw_export.py
- File DISTDIR\.blender\scripts\raw_import.py
- File DISTDIR\.blender\scripts\renameobjectbyblock.py
- File DISTDIR\.blender\scripts\rvk1_torvk2.py
- File DISTDIR\.blender\scripts\save_theme.py
- File DISTDIR\.blender\scripts\sel_same.py
- File DISTDIR\.blender\scripts\skin.py
- File DISTDIR\.blender\scripts\slp_import.py
- File DISTDIR\.blender\scripts\sysinfo.py
- File DISTDIR\.blender\scripts\tex2uvbaker.py
- File DISTDIR\.blender\scripts\truespace_export.py
- File DISTDIR\.blender\scripts\truespace_import.py
- File DISTDIR\.blender\scripts\unweld.py
- File DISTDIR\.blender\scripts\uv_export.py
- File DISTDIR\.blender\scripts\UVpaint05.py
- File DISTDIR\.blender\scripts\videoscape_export.py
- File DISTDIR\.blender\scripts\vrml97_export.py
- File DISTDIR\.blender\scripts\wings_export.py
- File DISTDIR\.blender\scripts\wings_import.py
- File DISTDIR\.blender\scripts\wrl2export.py
- SetOutPath $BLENDERHOME\.blender\scripts\bpymodules
- File DISTDIR\.blender\scripts\bpymodules\ai2obj.py
- File DISTDIR\.blender\scripts\bpymodules\BPyBlender.py
- File DISTDIR\.blender\scripts\bpymodules\BPyRegistry.py
- File DISTDIR\.blender\scripts\bpymodules\eps2obj.py
- File DISTDIR\.blender\scripts\bpymodules\gimp2obj.py
- File DISTDIR\.blender\scripts\bpymodules\meshtools.py
- File DISTDIR\.blender\scripts\bpymodules\svg2obj.py
- SetOutPath $BLENDERHOME\.blender\scripts\bpydata
- File DISTDIR\.blender\scripts\bpydata\readme.txt
- File DISTDIR\.blender\scripts\bpydata\KUlang.txt
- SetOutPath $BLENDERHOME\.blender\scripts\bpydata\config
- File DISTDIR\.blender\scripts\bpydata\config\readme.txt
-
- ; Additional Languages files
- SetOutPath $BLENDERHOME\.blender
- File DISTDIR\.blender\.Blanguages
- SetOutPath $BLENDERHOME\.blender\locale\ca\LC_MESSAGES
- File DISTDIR\.blender\locale\ca\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\cs\LC_MESSAGES
- File DISTDIR\.blender\locale\cs\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\de\LC_MESSAGES
- File DISTDIR\.blender\locale\de\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\fi\LC_MESSAGES
- File DISTDIR\.blender\locale\fi\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\es\LC_MESSAGES
- File DISTDIR\.blender\locale\es\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\fr\LC_MESSAGES
- File DISTDIR\.blender\locale\fr\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\it\LC_MESSAGES
- File DISTDIR\.blender\locale\it\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\ja\LC_MESSAGES
- File DISTDIR\.blender\locale\ja\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\nl\LC_MESSAGES
- File DISTDIR\.blender\locale\nl\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\sv\LC_MESSAGES
- File DISTDIR\.blender\locale\sv\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\zh_cn\LC_MESSAGES
- File DISTDIR\.blender\locale\zh_cn\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\pt_br\LC_MESSAGES
- File DISTDIR\.blender\locale\pt_br\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\hr_HR\LC_MESSAGES
- File DISTDIR\.blender\locale\hr_HR\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\ru\LC_MESSAGES
- File DISTDIR\.blender\locale\ru\LC_MESSAGES\blender.mo
- SetOutPath $BLENDERHOME\.blender\locale\pl\LC_MESSAGES
- File DISTDIR\.blender\locale\pl\LC_MESSAGES\blender.mo
-
- SetOutPath $INSTDIR
- ; Write the installation path into the registry
- WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
- ; Write the uninstall keys for Windows
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
- WriteUninstaller "uninstall.exe"
-SectionEnd
-
-Section "Add Start Menu shortcuts" Section2
- SetOutPath $INSTDIR
- CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
-SectionEnd
-
-Section "Add Desktop Blender-VERSION shortcut" Section3
- SetOutPath $INSTDIR
- CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
-SectionEnd
-
-Section "Open .blend files with Blender-VERSION" Section4
- SetOutPath $INSTDIR
- ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
- ;do it the manual way! ;)
-
- WriteRegStr HKCR ".blend" "" "blendfile"
- WriteRegStr HKCR "blendfile" "" "Blender .blend File"
- WriteRegStr HKCR "blendfile\shell" "" "open"
- WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
- WriteRegStr HKCR "blendfile\shell\open\command" "" \
- '"$INSTDIR\blender.exe" "%1"'
-
-SectionEnd
-
-UninstallText "This will uninstall Blender VERSION. Hit next to continue."
-
-Section "Uninstall"
- ; remove registry keys
- DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
- DeleteRegKey HKLM SOFTWARE\BlenderFoundation
- ; remove files
- Delete $INSTDIR\blender.exe
- Delete $INSTDIR\blenderplayer.exe
- Delete $INSTDIR\python23.dll
- Delete $INSTDIR\python23.zip
- Delete $INSTDIR\sdl.dll
- Delete $INSTDIR\gnu_gettext.dll
- Delete $INSTDIR\Copyright.txt
- Delete $INSTDIR\Blender.html
- Delete $INSTDIR\GPL-license.txt
- Delete $INSTDIR\python-license.txt
- Delete $INSTDIR\Release_SHORTVERS.txt
- Delete $INSTDIR\Help.url
- Delete $INSTDIR\uninstall.exe
- Delete $INSTDIR\zlib.pyd
- Delete $INSTDIR\.blender\.bfont.ttf
- Delete $INSTDIR\.blender\.Blanguages
- ; remove shortcuts, if any.
- Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
- Delete "$DESKTOP\Blender.lnk"
- ; remove directories used.
- RMDir /r $INSTDIR\.blender\locale
- RMDir /r $INSTDIR\.blender\scripts
- RMDir /r $INSTDIR\.blender\scripts\bpydata
- RMDir /r $INSTDIR\.blender\scripts\bpydata\config
- RMDir /r $INSTDIR\.blender\scripts\bpymodules
- RMDir $INSTDIR\.blender
- RMDir "$SMPROGRAMS\Blender Foundation\Blender"
- RMDir "$SMPROGRAMS\Blender Foundation"
- RMDir "$INSTDIR"
- RMDir "$INSTDIR\.."
-SectionEnd
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
- !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
- !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
- !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
diff --git a/release/windows/installer/00.checked.bmp b/release/windows/installer/00.checked.bmp
deleted file mode 100644
index 6c2e98d361c..00000000000
--- a/release/windows/installer/00.checked.bmp
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/00.header.bmp b/release/windows/installer/00.header.bmp
deleted file mode 100644
index b631ba73933..00000000000
--- a/release/windows/installer/00.header.bmp
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/00.installer.adx b/release/windows/installer/00.installer.adx
deleted file mode 100644
index af1b432e3c4..00000000000
--- a/release/windows/installer/00.installer.adx
+++ /dev/null
@@ -1,314 +0,0 @@
-[ADX]
-ADXVersion=1.00.00
-<=>2240
-CCM^8603:<;8=2
-CCM^8603:>;8=6
-CCM^8603:?;8=3
-CCM^8603:?;9=2
-CCM^8603:8;8=2
-CCM^8603:8;9=2
-CCM^8603::;8=2
-CCM^8603::;9=2
-CCM^8603::;:=2
-CCM^8603:;;8=2
-CCM^8603:4;:=2
-CCM^8603:4;<=2
-CCM^8603:5;8=$HM
-CCM^8603:5;9=$Dgokcl
-CCM^8603:5;:=$Naogte
-CCM^8603:5;;=$^cr
-CCM^8603:5;<=$Ii
-CCM^8603:5;=$Etnue
-CCM^8603:5;>=[bu!\i %K`g
-CCM^8603:5;?=$Ucuz
-CCM^8603:5;0=Qbjdkr %K`g
-CCM^8603:5;1=G!~uzgcw*Emf&x'
-CCM^8603:5:8=$Ciom
-CCM^8603:5:9=Lbrvgtk-$"
-CCM^8603:5::=$Fdnzr
-CCM^8603;<;8=2
-CCM^8604:<;8=3
-CCM^8604:<;9=@kcolcr#',Ymz{n}v
-CCM^8604:<;:=Rkc`{c pzihamw+zjb&qirh#~c+cghf"nrdeu tc`g(ik+kzst`kreg$,+Qd{+cc~&`duo#z~n{x.fg'Dsgqsf*n~|ae.vh&rmje`~,jf+ksgqsooo&pb~d%(+^jzjt&l}ut#cbhd~jn.c'bsape#fi|n|+ap'dd(g VDO+fjcn
-CCM^8604:<:9=67?7
-CCM^8604:;8=3
-CCM^8604:;9=@kcolcr#',Ymz{n}v
-CCM^8604:;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs-*,[zn}x. ^cr*&ie*ud}+yj`v'rn(ivfx{yak+zjb&gaje-*,[zn}x. Ii#(of#sc~(oae)v'q`fr we,d~n|||ksc!|ne#legm%.+^pbur($Cbdond).bh"~it(qam~,g+}ar'cy|ta`~eeo+.bzgju/
-CCM^8604::9=4625
-CCM^8604:>;8=3
-CCM^8604:>;9=@kcolcr#',Ymz{n}v
-CCM^8604:>;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs#kbo(b}+\gfb,Ghlz$,+Xykx}"%_d{$ jl,rg~.|ols&ug&ouo~|zbzn.voc!nolf$,+Xykx}"%Hn*&ie*ud}+jd`%s&viht#~c+g}kyypnrd(rhf*jbdn +.Rucr{&"@kbhmg,+gd'n}&wbdx+|d.xzmw&dprrbixbfl.+gvbkr&
-CCM^8604:>:9=4625
-CCM^8604:?;8=3
-CCM^8604:?;9=@kcolcr#',Ymz{n}v
-CCM^8604:?;:=Voc!nolf*eelbmjzgc&cmjot*dj{+oe.gftmacr#|iy{bae.lrkcmt lx,oik+zjfh!|ne#ebn(jbykcc!gh zeyy(xwxzgj(!(Vrfy+*Rkx,"n`!qiu#}me|+zd.pbvmiee#~dn(mggk,'&Qzcsp*.Eg).bh"~it(bom-x+j`.vh&smvlbii+|ck+hkkc/(&Pqox()Mj`abj#(of#sc~(|oez"si!{ros*is|yohzkia!(otfg%
-CCM^8604:?:9=4625
-CCM^8604:8;8=3
-CCM^8604:8;9=@kcolcr#',Ymz{n}v
-CCM^8604:8;:=Rkc`{c fdxnz+zck"wgr{qoqn$x!+`nkfbb!|i frxyihz+zjb&h|cmp$,+Xykx}"%IJ*&tl*odfge{g'is($Cbdond).a"trnx&e{~~jkgei"nrdeu.
-CCM^8604:8:9=7641
-CCM^8604:9;8=3
-CCM^8604:9;9=@kcolcr#',Np|jmvnio(Vrlm~n{x
-CCM^8604:9;:=Voc!{raw+jnbdy"tnnu tbm({kymgir`oc ll,`n.bzgju!`gs#hinf+kszpfeumb.
-CCM^8604:9:9=15170
-CCM^8604::;8=3
-CCM^8604::;9=@kcolcr#',Np|jmvnio(Vrlm~n{x
-CCM^8604::;:=Voc!{raw+jnbdy"tnnu tbm({kymgir`oc ll,`n.bzgju!`gs#hinf+kszpfeumb.#*\ymx}+,Afhbmj"#~c+{a{.grsietjdk+akf},
-CCM^8604:::9=15170
-CCM^8604:;;8=3
-CCM^8604:;;9=@kcolcr#',Nzyay
-CCM^8604:;;:=Voc!xgtk*eelbmjzgc&cmjot*od}gj+`ms&cm&cqommo.d|"cid{&nl~,jdykjj{'cyaut-*,_zr.x~gdogqond*m+lbhmkpbhu(vawb"
-CCM^8604:;:9=4625
-CCM^8604:4;8=3
-CCM^8604:4;9=@kcolcr#',Nzyay
-CCM^8604:4;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&ouo~|zbzkl)
-CCM^8604:4:9=4625
-CCM^8604:5;8=3
-CCM^8604:5;9=@kcolcr#',Nzyay
-CCM^8604:5;:=Voc!nolf*eelbmjzgc&cmjot*ex(j.Ykcc+Nfjy#legm+oej"ditdb mex+jn.dxguqsartfd"
-CCM^8604:5:9=4625
-CCM^8604;<;8=3
-CCM^8604;<;9=@kcolcr#',Nzyay
-CCM^8604;<;:=Voc!xgsp}cyl+wd{"tvdkofjoh+j}+gldiszccw$,+Xykx}"%E`feeo(,g+}ar'cy|ta`~eeo+gkot(!(Vrfy+*Bieapb$!|i pae{(dxn|"snd(vapy{dzo#{|mscb|cd#cxne%
-CCM^8604;<:9=2
-CCM^8604;;8=3
-CCM^8604;;9=@kcolcr#',Nzyay
-CCM^8604;;:=Mic!gt ne~n(dh+zjb&qzigqkax(fjz"pcsm&svz|d{n.a"uso(eovfh+fdz+lg'`n}hd-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^8604;:9=2
-CCM^8604;>;8=3
-CCM^8604;>;9=@kcolcr#',Nzyay
-CCM^8604;>;:=Onurahg#imiaek.dnjd u)-
-CCM^8604;>:9=2
-CCM^8604;?;8=3
-CCM^8604;?;9=@kcolcr#',Nzyay
-CCM^8604;?;:=Voc!ksswea+znib}vu!ahflxaj|bae.dnjd(rhb~,|ix.x{rwirmb we,im+cn|ebb!otk*xcm+}r}vbk!zcgjyxyq+md{nc&ogr ao,mg~`o "'Vmmgsf*odfohz"~itz&sllx|iyk+~phphlcr#lcy(ckg~,
-CCM^8604;?:9=2
-CCM^8604;8;8=3
-CCM^8604;8;9=@kcolcr#',Nzyay
-CCM^8604;8;:=Voc!aren*eelbmjzgc&hf&tko,manbo.`bjn&cl`o(ea.`b&smaip~iymo +.Rkc`{c `ebihz+wmrt!{ifw}mym+~yatnbdz&flx,cmg~%
-CCM^8604;8:9=4625
-CCM^8604;9;8=3
-CCM^8604;9;9=@kcolcr#',Nzyay
-CCM^8604;9;:=Voc!mhd#ej+|ck+]gk`,M~tqkoaei+tkw&gaje#}mx(ykjmjbb!jcflxi+igb+ad'rim&iwoax(ha~bf'dd(vrlziydr.nvvugb|cd-*,_`b}+]gk`,M~tqkoaei+tkw&gaje#gmr(ik+jcjgfmb.#*\gmj}n.mer`ah b*jymxf+mmw!ihd#~~r(jijgl)
-CCM^8604;9:9=2
-CCM^8604;:;8=3
-CCM^8604;:;9=@kcolcr#',Nzyay
-CCM^8604;:;:=Voc!m~tqkoad`+~phed{u gch+fdz+mmjvmmre#yyhkn}xhwkjx&& Wbex(for.jfpd(defd,hi~}nj"e!ih lziyiay.Afhbmj lx,d|cky.gutnz( #Z`nixk+mmir`kr zeyy(xamzuftd(vrl|eomy.map'nddv.
-CCM^8604;::9=2
-CCM^8604;;;8=3
-CCM^8604;;;9=@kcolcr#',Nzyay
-CCM^8604;;;:=[hss(uyp~if(oan}"iiu(nauo,nfd{lf"fp`ajaafi+encd|{'rn(uu`iix{m{gb{'cy|ta`~,`n.bzgju!nton*xcax.Xkna+Dprrbixbfl.qgr'`hdc.#*\gmj}n.ahhuiet#sc~z+}dhvpgsm&pqezbln|+hmu&imjp-
-CCM^8604;;:9=2
-CCM^8604;4;8=0
-CCM^8604;4;9=@kcolcr#',Nzyay
-CCM^8604;4;:=Voc!m~tqkoad`+~phed{u tk+kj`hknkce(deee~n(jbg.ma&u`c j~if{+yn|g'cy|ta`~io&+.Raw'k`q&nfoh+|d.y{l'rim&e{~~jkgd`"wtnkcsp*mlib`%
-CCM^8604;4:9=2
-CCM^8604;5;8=3
-CCM^8604;5;9=@kcolcr#',Nzyay
-CCM^8604;5;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&e{~~jkko "'Ou(kaz*mgznoow"ec!ah vyi+jr.fg'ux{ren*cy(gahegc&cq&amexcmy.j~rkobirild"+A.|gnk&cm&shc|{mo
-CCM^8604;5:9=4625
-CCM^86048<;8=3
-CCM^86048<;9=@kcolcr#',Nzyay
-CCM^86048<;:=Ci&dztoq*chk~|ykf'btzond*xcm+kszpfeuain#z~dkn}x "'Rim&aqidb~n.mgnb.r!&mbs,im+jjcc`ce&& Sfij{n.dlvfoo(g exix`+md~{'gol&tqs,jojge
-CCM^86048<:9=2
-CCM^86048;8=3
-CCM^86048;9=@kcolcr#',Nzyay
-CCM^86048;:=Uoomm&e{~~jkgei"nrdeu b*hj|j.n|pht!`gs#eoh}y|nj,'Riau Po`m%Nv|cdrhfa yc|+nbbn.of!jc gkajonj%."Wjdiue#enib`+o"atd{n `e|r(j`o.vu!iaajd"
-CCM^86048:9=4625
-CCM^86048>;8=3
-CCM^86048>;9=@kcolcr#',Nzyay
-CCM^86048>;:=Uoomm&e{~~jkgei"nrdeu wbiym+yj}l r!mhovmd+zdaf.mi&u`c goaeogmi&ezovf$,+Qd{+cc~&omcd#~c+zncdxg'unec ec`n{+lnhmuc!qiu#ime(nv|cdr!ijl#ej+|ck+gvbkr&
-CCM^86048>:9=2
-CCM^86048?;8=0
-CCM^86048?;9=@kcolcr#',\iy`b`e
-CCM^86048?;:=Uoomm&e{~~jkgei"nrdeu excf(fn.Qbjg%Cxwxmh|b`l.xnv!nolf*den.bzgju!crf*`a{~nj,
-CCM^86048?:9=2
-CCM^860488;8=0
-CCM^860488;9=@kcolcr#',Bfmayccsonf
-CCM^860488;:=Ckj!areny,|myk+}wded{ufvf`r(nv|cdrdl(
-CCM^860488:9=2
-CCM^860489;8=3
-CCM^860489;9=Kiouagljpi
-CCM^860489;:=Rucqitimm,mgy.Nvvugb|oom$,+Xgkj}g'Q`ar.
-CCM^860489:9=2
-CCM^86048:;8=3
-CCM^86048:;9=@kcolcr#',Nzyay
-CCM^86048:;:=Ci&dztoq*{j{+kemmrhumteg*{cagk+~pbv`zond*jdz+kszpfeuain-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^86048::9=2
-CCM^860484;8=3
-CCM^860484;9=@kcolcr#',H`daxk"Aimlcr#Fchigd`
-CCM^860484:9=2
-CCM^86048498=Fntdkroqcix
-CCM^86048499=Fuowmu
-CCM^860485;8=3
-CCM^860485;9=@kcolcr#',Xmgkhz"@tn}v ee~+[cayzarrr
-CCM^860485:9=2
-CCM^86048598=Girdz&oq*ndnm.c'asgsp#dmfm+hd|"nhr|glocbl(xfd|vdsu{(
-CCM^86049<;8=3
-CCM^86049<;9=@kcolcr#',Nzyay
-CCM^86049<;:=Ci&dztoq*chk~|ykf'qiaje#kxmf~gl`&ug&imyxjdg.xfmurb}rs-
-CCM^86049<:9=2
-CCM^86049;8=3
-CCM^86049;9=@kcolcr#',Ymz{n}v
-CCM^86049;:=Mic!gt ne~n(mggkq'qdzc jdigbnj"sn`|&rf{ybzn.rawu&rqutfg,g+ln.pbuuittfn"
-CCM^86049:9=2
-CCM^8604998=Pbuuitt#,Bd
-CCM^8604999=Pbuuitt#,@j|n|
-CCM^86049>;8=3
-CCM^86049>;9=@kcolcr#',Ymz{n}v
-CCM^86049>;:=Rkc`{c jdnz.]anrkd(Hunhiy(.j+glsi!|ne#xifg}oibg'bsape-
-CCM^86049>:9=67?7
-CCM^86049?;8=3
-CCM^86049?;9=@kcolcr#',Nzyay
-CCM^86049?;:=[hs!`gvf*ee{n|kf'rim&wqebl(]ag{ob(!(Vlfkn(hfnmi'rim&mfnej(j`o.vu!iaajd"
-CCM^86049?:9=2
-CCM^860498;8=3
-CCM^860498;9=@kcolcr#',Nzyay
-CCM^860498;:=Voc!losh*ex(ea.pbgeq&flx,jkhkx},'&Qdcapo,h`nm`.vh&lime#yyym+zcov'rim&mfnej(b}+ypnrd(cnbh`nl+oej"wtnxcros,bfxkyzgc&hfro#~dn(o|bxg)
-CCM^860498:9=2
-CCM^860::?31=Ahhgatm
-CCM^860::?28='t&iiu mex+jnke.qbrtx( Bxi+qd{+}wuc!qiu#}me|+zd.gou7
-CCM^860::>31=Gutnz
-CCM^860::>28=Qbrtx&hby,bfky`ck&dztoq$,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^860::<;8=1
-CCM^8603:;9=^[udzpeqVdden}Wa`mZcdcngo~&kykjzmu+3&~x.}eeldyx gc
-CCM^8603:;8=AZEGEUNOr:Tm|j`i[JNKGLPtW\nc{Rqa~7K0.yc|
-CCM^8603:4;8=2
-CCM^8603:9;8=2
-CCM^8603:9;9=2
-CCM^8603:9;:=2
-CCM^8603:;;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^76/ahswk`gmy bmm<6
-CCM^860334;8=2
-CCM^860334;9=2
-CCM^860339;8=@kcolcr8:
-CCM^8603:8;;=2
-CCM^860::>=3
-CCM^860::<?;=3
-CCM^860::<9:=3
-CCM^860::<;;=2
-CCM^860::<9<=AZEgeunob{+oej"Tcu|ondyPmzj``RFbuj|ip_yddzm~z,fby
-CCM^860::>38=3
-CCM^860::<;=>Nhr|gloLcgln|5RWioo{raof"npn
-CCM^860::<;?=3
-CCM^860::<;1=3
-CCM^860::<9=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.zICCY\I@J[XKXQPHIUTdlfdhmagk0&Fb``}jt*vD@MRQHBCTUD[YRLEXWjgkejdnjdTuhff`Wg{keRahklihd8"Hnnj{gz+{NJM__@FMX[N]T\MHR]jjemnjbdnROkdfsm|Ocld7#Lnhj{ns/}@MEZU@DKJBTCCDNHFC\Pejj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejguEaupokuEifkwFIB_^DICBFSFIHFB@G[UnnrwbxiWEbmyaqh`uTQimnc|{WM~|pbhu^crpcceT^`b`qsgmdZBoobomy5^`kiuuijlP~~bflr
-CCM^860::<;0=>Nhr|gloLcgln|5R@kcolcr-otnt7Ge}vfjmNilgo~5THa{wpnai|(t{~p7Ae}onk@ndbeq4PYmjjfk,s~ut:ImyxjdgHdbfbt?TNeoz"~zg505~;Oo{raofJddoky0^wu`in1:"odg505~
-CCM^860::>;=3
-CCM^860::<?<=2
-CCM^860::?1=3
-CCM^860::<91=2
-CCM^860::>8=3502:455
-CCM^860::?=
-CCM^860::?>=
-CCM^860::?0=2
-CCM^860::>:=3
-CCM^860::?=1
-CCM^860::0=3
-CCM^860::>3=2
-CCM^860::=>WtnotanLegmx0WLnbhemt
-CCM^860::>=@kcolcr-otn37Ge}vfjmNilgo~5TIbn`fbt/m~e8:7;3;505~Diqqtidbx%|sz02KiuuijlEe`omy0WMmwsaahw$xs|0>0>97:3zRfkhfm%zsz9;Oo{raofJddoky0^Uc`lke-~t3;5;52<:tNeoz"~zg57Gltr`djFlfhnz5RCknw(tzj;31<08050rr~righ23$hgd02B`qsgmd@ooniy6W~rzjhh38(dof7;3;5;59<z
-CCM^860::>3>=3
-CCM^860::>3?=2
-CCM^860::<8=3
-CCM^860::>?8=2
-CCM^860::<9=3
-CCM^860::>?9=2
-CCM^860::<:=3
-CCM^860::>?:=2
-CCM^860::<;=3
-CCM^860::>?;=2
-CCM^860::<<=3
-CCM^860::>?<=2
-CCM^860::<=2
-CCM^860::>?=2
-CCM^860::<>=3
-CCM^860::>?>=2
-CCM^860::9=Lhr!i&Nvgnnz
-CCM^860:::=
-CCM^860::;=upq/jjemniy&eb
-CCM^860::<=
-CCM^860::>1=@kcolcr#I~niay
-CCM^860::8=0)40k
-CCM^860::9>9=2
-CCM^860::9>:=3
-CCM^860::9><=3
-CCM^860::9>=3
-CCM^860::5<<=2
-CCM^860::9>?=
-CCM^860::<8;=2
-CCM^860::<8<=
-CCM^860::<8=>Nhr|gloLcgln|5RJbjq&sro
-CCM^860::<8>=
-CCM^860::831=2
-CCM^860::59=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^77/ahswk`gmy icr
-CCM^860::5:=
-CCM^860::5;=2
-CCM^860::<9>=3
-CCM^860::<9?=3
-CCM^860::5<=2
-CCM^860::5=2
-CCM^860::5>=2
-CCM^860::5<=2
-CCM^860::5<>=2
-CCM^860::5<?=
-CCM^860::5<1=2
-CCM^860::5<0=2
-CCM^860::538=2
-CCM^860::52>=3
-CCM^860::52?=>Nhr|gloLcgln|5R@FEJ]V
-CCM^860::520=2
-CCM^860::>>=2
-CCM^860::>?=2
-CCM^8603:?;:=3
-CCM^8603:?;;=2
-CCM^8603:>;:=>FBUmkp
-CCM^8603:;;>=2
-CCM^860::9>;=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.cdcnglegm0]|kia}@MEZUOGIX]N]]UIN\Zboobonbbn5*Ccgislw#7Idn`okp'@hdc;P~~bflrCEG^YBDGSPO_TZDA_R`kcol`iooPx`nbgRmwcoTeongmel0&Okdfsm|/;!6Ee{ogbDhjemt>_H`nfoky gc#($%2(7X|ygei~OMDQYCOK_XMXQYAMSZcdcnglegmWJnhcrjuAeom1$Ommo~bv.#4Onp~mgdMagjgu8]Jjemniy&nvn,.6R|timmpCCNWTBMDGMWKA@BEEMW]dhvpgsmZMji~d{dhRUnhegqs_Iyyzn`Xguuhgh\Vdee{ogb^Ejdfbeq1Hb{{bjwLfkd3Dlfdhnz0]|kia}@MEZU@DKJBTCCDNHFC\Pejj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejguTfonp~mgdXzygl`Ahswk`gNdbokp9ZTfonp~mgd%ksk9Trsahg
-CCM^860::28=Ubjbgke
-CCM^860::>:8=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^77/cl`ean&yzm
-CCM^860::>8=2
-CCM^860::521=[bu
-CCM^860:;<;8=Lh
-CCM^860::829=Rkc`{c qomo(fn.dhjmgqimm,Gahke}g'Gfzcenob&+.^}g'rim&s`xcgd+lj|"si!~oet*xcm+|n}v'ig(rhf*hdk~cn`v)
-CCM^860::9:9=Fh&xgs bionx.jbn'rim&tfxax(dh+zjb&qzccfneeo+Bbmgiud(Ggqoifmez4."N`!qiu#iddgxk+@m+&rmrus*{bdg.hbmtc/(&Tl*ee{ogb"snd(vrlm~je'.raw'kt{r bionx.fkt&`otefgie|%
-CCM^860::29=Nnedfue#Kkymncn`v
-CCM^860::>:9=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^74/kipzxel` vv
-CCM^860::>9=3
-CCM^860::2:=Ceit|&Boobomy.H|gfrnz
-CCM^860::>::=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^75/zcaggi%|sz
-CCM^860::>:=2
-CCM^860::82;=Kiuuijlb~edf+Hdbfbt
-CCM^860::9:;=Wtc!|ne#lendo.iknhq!|i pzihamw+zjb&ggjdfx,|`n|n.{hs!gnw*xcm+o{~nne`|oom*jbdn}+zm'dd(eoscio(a%.Vh&rxccjlu+i+jbhdbtdfr ee`omy"+z{wc!i&nf},eifk'.mu&t{c wbi+Ti.I|mpudTd0#*n~|ae.vh&rmje`~,jf+ksgqsooo&flfhnz%.+^pbur(Zb#Dis|Wl;."si!kinwcb~m%
-CCM^860::2;=Aoin{c Pox~x+Hdbfbt
-CCM^860::>:;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^72/nilgo~%zh
-CCM^860::>;=2
-CCM^860::82<=Uhtjahg
-CCM^860::9:<=Rkc`{c tke(|fbbg'#r(os#yi}{.d`"~itz&clg|~|n|%
-CCM^860::2<=Qbrtx&Pqekymx}
-CCM^860::>:<=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^73/xtodxix{%|h
-CCM^860::><=2
-CCM^860::82>=Qbrtx&wby,x}hmn}qasm
-CCM^860::9:>='t&viu pohmx}m{nk!{ctvz,df+wd{p'enevuwo~%(+^ykqt&]j&Fjdex`Wl;."si!m~iw*n|~~%
-CCM^860::98>=Qsgs|&Boobomy
-CCM^860::>3;=>Nhr|gloLcgln|5R`kcolcr-otn
-CCM^860::>3<=2
-CCM^860::>39=3
-CCM^860::2>=Qbrtx&Clg|gmk
-CCM^860::>:>=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^70/kimsfim%|h
-CCM^860::>>=2
-CCM^860::<:8=Wioo{raofiy
-CCM^860::<:9=Voc!}himyxjdg.{|m`t`e&wjf`+zncdxg'`hdcs#kbo(magjguu-(uhlxxh}}'.cib!zcgjyxyq+kezpncr(`rlg,`n.ogql(!(Grf*ud}+}~|g'n}&wbdx+|d.~`kiuuijl<
-CCM^860::<::=Mic!g` `ea{gekezq'or(gcwczn&+.Nvks&u`c sxclzjc+lgaism&swk~aei+[lnhr|glo$
-CCM^860::<:;=Wioo{raof,x}hmn}qasmd!
-CCM^860::<:<=Ci&dztoq*chk~|ykf'qiaje#~~raei+zm'soahswk`g(fn.ruifzgm-*,^fb`xzckj!`gs#hinf+mj`abjdl(
-CCM^860::><=Qbrtx
-CCM^860::<9;=Lhr!i&Nvgnnzwrwr~{Dmmhdfx,Hznoap{4/:7c
-CCM^860::<;:=Giamauh#',^fbznj"Tr`|cs
-CCM^860::<;9=3752
-CCM^86033:;8=>DAsgsp10BfxzjbnAimlcrVNgmejn|,b~d3Boobomy5059<6
-CCM^86033:;9=>DAsgsp10BfxzjbnAimlcrVYeae}onk(dpc;8_bbfxzjbn'Dmmhdfx70305;
-CCM^86033:;:=>DAsgsp10BfxzjbnAimlcrV^niocn vr:3Tebnan305052
-CCM^86033:;;=>DAsgsp10BfxzjbnAimlcrVOdxr|bijs(upr;8Ic{qyglfv<:30
-CCM^86033:;<=>DAsgsp10BfxzjbnAimlcrVDnd{ ~|n<Imjp81703;
-CCM^86033:;=>Ccrcros477Ae}onk@ndbeq4PIdn`okp)cym;Afieln|059<1
-CCM^860:;<;9=^[udzpeqVdden}Wa`mZcdcngo~&b`oautZ+&, \ No newline at end of file
diff --git a/release/windows/installer/00.installer.ico b/release/windows/installer/00.installer.ico
deleted file mode 100644
index 922c9d472d9..00000000000
--- a/release/windows/installer/00.installer.ico
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi
deleted file mode 100644
index 1cb159050fe..00000000000
--- a/release/windows/installer/00.sconsblender.nsi
+++ /dev/null
@@ -1,425 +0,0 @@
-;
-; $Id$
-;
-; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)
-;
-; Requires the MoreInfo plugin - http://nsis.sourceforge.net/MoreInfo_plug-in
-;
-
-!include "MUI.nsh"
-!include "WinVer.nsh"
-!include "FileFunc.nsh"
-!include "WordFunc.nsh"
-!include "nsDialogs.nsh"
-
-SetCompressor /SOLID lzma
-
-Name "Blender VERSION"
-
-!define MUI_ABORTWARNING
-
-!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully."
-!define MUI_WELCOMEFINISHPAGE_BITMAP "RELDIR\01.installer.bmp"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "RELDIR\00.header.bmp"
-!define MUI_COMPONENTSPAGE_SMALLDESC
-!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
-!define MUI_CHECKBITMAP "RELDIR\00.checked.bmp"
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt"
-!insertmacro MUI_PAGE_COMPONENTS
-
-!insertmacro MUI_PAGE_DIRECTORY
-Page custom DataLocation DataLocationOnLeave
-;Page custom AppDataChoice AppDataChoiceOnLeave
-Page custom PreMigrateUserSettings MigrateUserSettings
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-
-!insertmacro MUI_UNPAGE_WELCOME
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-
-!insertmacro Locate
-!insertmacro VersionCompare
-
-
-Icon "RELDIR\00.installer.ico"
-UninstallIcon "RELDIR\00.installer.ico"
-
-;--------------------------------
-;Languages
-
- !insertmacro MUI_LANGUAGE "English"
-
-;--------------------------------
-;Language Strings
-
- ;Description
- LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder."
- LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
- LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
- LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
- LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"
-;--------------------------------
-;Data
-
-Caption "Blender VERSION Installer"
-OutFile "DISTDIR\..\blender-VERSION-windows.exe"
-InstallDir "$PROGRAMFILES\Blender Foundation\Blender"
-
-BrandingText "http://www.blender.org"
-ComponentText "This will install Blender VERSION on your computer."
-
-DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder."
-
-SilentUnInstall normal
-
-# Uses $0
-Function openLinkNewWindow
- Push $3
- Push $2
- Push $1
- Push $0
- ReadRegStr $0 HKCR "http\shell\open\command" ""
-# Get browser path
- DetailPrint $0
- StrCpy $2 '"'
- StrCpy $1 $0 1
- StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char
- StrCpy $2 ' '
- StrCpy $3 1
- loop:
- StrCpy $1 $0 1 $3
- DetailPrint $1
- StrCmp $1 $2 found
- StrCmp $1 "" found
- IntOp $3 $3 + 1
- Goto loop
-
- found:
- StrCpy $1 $0 $3
- StrCmp $2 " " +2
- StrCpy $1 '$1"'
-
- Pop $0
- Exec '$1 $0'
- Pop $1
- Pop $2
- Pop $3
-FunctionEnd
-
-Var BLENDERHOME
-Var DLL_found
-Var PREVHOME
-
-Function SetWinXPPathCurrentUser
- SetShellVarContext current
- StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender"
-FunctionEnd
-
-Function SetWinXPPathAllUsers
- SetShellVarContext all
- StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender"
-FunctionEnd
-
-Function SetWin9xPath
- StrCpy $BLENDERHOME $INSTDIR
-FunctionEnd
-
-; custom controls
-Var HWND
-
-Var HWND_APPDATA
-Var HWND_INSTDIR
-Var HWND_HOMEDIR
-
-Var HWND_BUTTON_YES
-Var HWND_BUTTON_NO
-
-Var SETUSERCONTEXT
-
-Function PreMigrateUserSettings
- StrCpy $PREVHOME "$PROFILE\Application Data\Blender Foundation\Blender"
- StrCpy $0 "$PROFILE\Application Data\Blender Foundation\Blender\.blender"
-
- IfFileExists $0 0 nochange
-
- StrCmp $BLENDERHOME $PREVHOME nochange
-
- nsDialogs::Create /NOUNLOAD 1018
- Pop $HWND
-
- ${If} $HWND == error
- Abort
- ${EndIf}
-
- ${NSD_CreateLabel} 0 0 100% 12u "You have existing settings at:"
- ${NSD_CreateLabel} 0 20 100% 12u $PREVHOME
- ${NSD_CreateLabel} 0 40 100% 12u "Do you wish to migrate this data to:"
- ${NSD_CreateLabel} 0 60 100% 12u $BLENDERHOME
- ${NSD_CreateLabel} 0 80 100% 12u "Please note: If you choose no, Blender will not be able to use these files!"
- ${NSD_CreateRadioButton} 0 100 100% 12u "Yes"
- Pop $HWND_BUTTON_YES
- ${NSD_CreateRadioButton} 0 120 100% 12u "No"
- Pop $HWND_BUTTON_NO
-
- SendMessage $HWND_BUTTON_YES ${BM_SETCHECK} 1 0
-
- nsDialogs::Show
- nochange:
-
-FunctionEnd
-
-Function MigrateUserSettings
- ${NSD_GetState} $HWND_BUTTON_YES $R0
- ${If} $R0 == "1"
- CreateDirectory $BLENDERHOME
- CopyFiles $PREVHOME\*.* $BLENDERHOME
- ;RMDir /r $PREVHOME
- ${EndIf}
-FunctionEnd
-
-!define DLL_VER "9.00.21022.8"
-
-Function LocateCallback_90
- MoreInfo::GetProductVersion "$R9"
- Pop $0
-
- ${VersionCompare} "$0" "${DLL_VER}" $R1
-
- StrCmp $R1 0 0 new
- new:
- StrCmp $R1 1 0 old
- old:
- StrCmp $R1 2 0 end
- ; Found DLL is older
- Call DownloadDLL
-
- end:
- StrCpy "$0" StopLocate
- StrCpy $DLL_found "true"
- Push "$0"
-
-FunctionEnd
-
-Function DownloadDLL
- MessageBox MB_OK "You will need to download the Microsoft Visual C++ 2008 Redistributable Package in order to run Blender. Pressing OK will take you to the download page, please follow the instructions on the page that appears."
- StrCpy $0 "http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&DisplayLang=en"
- Call openLinkNewWindow
-FunctionEnd
-
-Function PythonInstall
- MessageBox MB_OK "You will need to install python 2.5.2 in order to run blender. Pressing OK will take you to the python.org website."
- StrCpy $0 "http://www.python.org"
- Call openLinkNewWindow
-FunctionEnd
-
-Function DataLocation
- nsDialogs::Create /NOUNLOAD 1018
- Pop $HWND
-
- ${If} $HWND == error
- Abort
- ${EndIf}
-
- ${NSD_CreateLabel} 0 0 100% 12u "Please specify where you wish to install Blender's user data files."
- ${NSD_CreateRadioButton} 0 20 100% 12u "Use the Application Data directory (Requires Windows 2000 or better)"
- Pop $HWND_APPDATA
- ${NSD_CreateRadioButton} 0 50 100% 12u "Use the installation directory (ie. location chosen to install blender.exe)."
- Pop $HWND_INSTDIR
- ${NSD_CreateRadioButton} 0 80 100% 12u "I have defined a %HOME% variable, please install files here."
- Pop $HWND_HOMEDIR
-
- ${If} ${AtMostWinME}
- GetDlgItem $0 $HWND $HWND_APPDATA
- EnableWindow $0 0
- SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0
- ${Else}
- SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0
- ${EndIf}
-
- nsDialogs::Show
-
-FunctionEnd
-
-Function DataLocationOnLeave
- StrCpy $SETUSERCONTEXT "false"
- ${NSD_GetState} $HWND_APPDATA $R0
- ${If} $R0 == "1"
- ; FIXME: disabled 'all users' until fully multi-user compatible
- ;StrCpy $SETUSERCONTEXT "true"
- Call SetWinXPPathCurrentUser
- ${Else}
- ${NSD_GetState} $HWND_INSTDIR $R0
- ${If} $R0 == "1"
- Call SetWin9xPath
- ${Else}
- ${NSD_GetState} $HWND_HOMEDIR $R0
- ${If} $R0 == "1"
- ReadEnvStr $BLENDERHOME "HOME"
- ${EndIf}
- ${EndIf}
- ${EndIf}
-FunctionEnd
-
-Var HWND_APPDATA_CURRENT
-Var HWND_APPDATA_ALLUSERS
-
-Function AppDataChoice
- StrCmp $SETUSERCONTEXT "false" skip
-
- nsDialogs::Create /NOUNLOAD 1018
- Pop $HWND
-
- ${NSD_CreateLabel} 0 0 100% 12u "Please choose which Application Data directory to use."
- ${NSD_CreateRadioButton} 0 40 100% 12u "Current User"
- Pop $HWND_APPDATA_CURRENT
- ${NSD_CreateRadioButton} 0 70 100% 12u "All Users"
- Pop $HWND_APPDATA_ALLUSERS
-
- SendMessage $HWND_APPDATA_CURRENT ${BM_SETCHECK} 1 0
-
- StrCmp $SETUSERCONTEXT "true" 0 skip ; show dialog if we need to set context, otherwise skip it
- nsDialogs::Show
-
-skip:
-
-FunctionEnd
-
-Function AppDataChoiceOnLeave
- StrCmp $SETUSERCONTEXT "false" skip
- ${NSD_GetState} $HWND_APPDATA_CURRENT $R0
- ${If} $R0 == "1"
- Call SetWinXPPathCurrentUser
- ${Else}
- Call SetWinXPPathAllUsers
- ${EndIf}
-skip:
-
-FunctionEnd
-
-Section "Blender-VERSION (required)" SecCopyUI
- SectionIn RO
-
- ; Set output path to the installation directory.
- SetOutPath $INSTDIR
- ; Put file there
- [ROOTDIRCONTS]
-
- SetOutPath $BLENDERHOME\.blender
- [DOTBLENDERCONTS]
-
- SetOutPath $BLENDERHOME\.blender\scripts
- [SCRIPTCONTS]
- SetOutPath $BLENDERHOME\.blender\scripts\bpymodules
- [SCRIPTMODCONTS]
- SetOutPath $BLENDERHOME\.blender\scripts\bpymodules\colladaImEx
- [SCRIPTMODCOLLADACONT]
- SetOutPath $BLENDERHOME\.blender\scripts\bpydata
- [SCRIPTDATACONTS]
- SetOutPath $BLENDERHOME\.blender\scripts\bpydata\config
- [SCRIPTDATACFGCONTS]
- SetOutPath $BLENDERHOME\plugins\include
- [PLUGINCONTS]
-
- ; Language files
- [LANGUAGECONTS]
-
- SetOutPath $INSTDIR
- ; Write the installation path into the registry
- WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
- WriteRegStr HKLM SOFTWARE\BlenderFoundation "Home_Dir" "$BLENDERHOME"
- ; Write the uninstall keys for Windows
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
- WriteUninstaller "uninstall.exe"
-
- IfSilent 0 +2
- Goto silentdone
- ; Check for msvcr80.dll - give notice to download if not found
- MessageBox MB_OK "The installer will now check your system for the required system dlls."
- StrCpy $1 $WINDIR
- StrCpy $DLL_found "false"
- ${Locate} "$1" "/L=F /M=MSVCR90.DLL /S=0B" "LocateCallback_90"
- StrCmp $DLL_found "false" 0 +2
- Call DownloadDLL
- ReadRegStr $0 HKLM SOFTWARE\Python\PythonCore\2.5\InstallPath ""
- StrCmp $0 "" 0 +2
- Call PythonInstall
-silentdone:
-SectionEnd
-
-Section "Add Start Menu shortcuts" Section2
- SetOutPath $INSTDIR
- CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
- CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
-SectionEnd
-
-Section "Add Desktop Blender-VERSION shortcut" Section3
- SetOutPath $INSTDIR
- CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
-SectionEnd
-
-Section "Open .blend files with Blender-VERSION" Section4
- SetOutPath $INSTDIR
- ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
- ;do it the manual way! ;)
-
- WriteRegStr HKCR ".blend" "" "blendfile"
- WriteRegStr HKCR "blendfile" "" "Blender .blend File"
- WriteRegStr HKCR "blendfile\shell" "" "open"
- WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
- WriteRegStr HKCR "blendfile\shell\open\command" "" \
- '"$INSTDIR\blender.exe" "%1"'
-
-SectionEnd
-
-UninstallText "This will uninstall Blender VERSION. Hit next to continue."
-
-Section "Uninstall"
- Delete $INSTDIR\uninstall.exe
-
- ReadRegStr $BLENDERHOME HKLM "SOFTWARE\BlenderFoundation" "Home_Dir"
-
- ; remove registry keys
- DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
- DeleteRegKey HKLM SOFTWARE\BlenderFoundation
- ; remove files
- [DELROOTDIRCONTS]
-
- Delete $BLENDERHOME\.blender\.bfont.ttf
- Delete $BLENDERHOME\.blender\.Blanguages
- ; remove shortcuts, if any.
- Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
- Delete "$DESKTOP\Blender.lnk"
- ; remove directories used.
- RMDir /r $BLENDERHOME\.blender\locale
- MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" /SD IDYES IDNO Next
- RMDir /r $BLENDERHOME\.blender\scripts
- RMDir /r $BLENDERHOME\.blender\scripts\bpymodules
- RMDir /r $BLENDERHOME\.blender\scripts\bpydata
- RMDir /r $BLENDERHOME\.blender\scripts\bpydata\config
-Next:
- RMDir /r $BLENDERHOME\plugins\include
- RMDir /r $BLENDERHOME\plugins
- RMDir $BLENDERHOME\.blender
- RMDir "$SMPROGRAMS\Blender Foundation\Blender"
- RMDir "$SMPROGRAMS\Blender Foundation"
- RMDir "$INSTDIR"
- RMDir "$INSTDIR\.."
-SectionEnd
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
- !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
- !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
- !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
diff --git a/release/windows/installer/00.unchecked.bmp b/release/windows/installer/00.unchecked.bmp
deleted file mode 100644
index 6d3ff5cc58c..00000000000
--- a/release/windows/installer/00.unchecked.bmp
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/01.installer.bmp b/release/windows/installer/01.installer.bmp
deleted file mode 100644
index 10fb01454a4..00000000000
--- a/release/windows/installer/01.installer.bmp
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/01.welcome.rtf b/release/windows/installer/01.welcome.rtf
deleted file mode 100644
index 3235e65acc6..00000000000
--- a/release/windows/installer/01.welcome.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/02.copyright.txt b/release/windows/installer/02.copyright.txt
deleted file mode 100644
index 4e67c2561d3..00000000000
--- a/release/windows/installer/02.copyright.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-BLENDER CREATOR LICENSE AGREEMENT
-
-IMPORTANT: PLEASE READ CAREFULLY BEFORE USING THE BLENDER CREATOR SOFTWARE.
-
-This License Agreement for the Blender Creator software ("License Agreement") is an agreement between NaN Technologies B.V., Meerenakkerplein 11, 5652 BJ Eindhoven, the Netherlands ("NaN") and you (either an individual or a legal entity) ("You") with respect to the software product which this License Agreement accompanies (the "Software").
-
-By installing, copying or otherwise using the Software, You agree to be bound by the terms of this License Agreement. If You do not agree to the terms of this License Agreement do not install or use the Software.
-
-
-1. Grant of License
-
-Subject to the provisions of this License Agreement, NaN grants You a limited, non-exclusive, personal, non-sublicenseable, non-transferable, revocable license to use the Software at any computer You own or use.
-
-2. License Restrictions
-
-Except as expressly provided under this License Agreement, or without prior written consent from NaN, or without permission by law, You may not: (a) remove or alter any proprietary, copyright or trademark notices in or on the Software; (b) modify, decompile, disassemble or reverse-engineer the Software; (c) sublicense, rent, lease, lend, assign or otherwise transfer rights to the Software.
-
-3. Permitted copying and electronic distribution of Software
-
-You are hereby granted permission to copy and distribute the Software without written agreement from NaN, only for non-commercial purposes. Distributing the Software within a restricted non-public environment, such as using a local network in a company or a local network of a university, is considered a 'non-commercial purpose'. This entire License Agreement must appear in and/or accompany all copies of the Software.
-Distributing the Software 'bundled' in with ANY product is considered to be a 'commercial purpose'.
-
-4. Intellectual Property Rights and Ownership
-
-Title and ownership to all rights, including intellectual property rights, in and to the Software shall at all times solely and exclusively remain with NaN. The Software is protected by national and international (copyright) laws and treaties. All rights not expressly granted herein are reserved to NaN.
-
-5. Disclaimer of Warranties
-
-NaN provides you with the Software "as is" and with all faults. NaN explicitly disclaims all warranties and guarantees and does not make any representations with respect to the Software, whether express, implied, or statutory, including, but not limited to any (if any) warranties of or related to: fitness for a particular purpose, title, non-infringement, lack of viruses, accuracy or completeness of responses, results, lack of negligence or lack of workmanlike effort, and correspondence to description. The entire risk arising out of use or performance of the Software remains with You.
-
-6. Limitation of Liability
-
-In no event shall NaN or its employees, agents or suppliers be liable for any direct, indirect, consequential, incidental, special, punitive, or other damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, claims of third parties, damages as a result of injury to any person, or any other loss) arising out of or in connection with the license granted under this License Agreement or the use of or inability to use the Software, even if NaN has been advised of the possibility of such damages.
-
-7. User warning and indemnification
-
-WARNING: use of the Software and use of any works that are (partially) created with the Software (the "Works") may cause physical or psychological reactions from You or from third parties, which may result in damages, injuries, losses and/or other negative consequences. You acknowledge that NaN can not be held liable for any such damages, injuries, losses and/or other negative consequences. You acknowledge that it is your obligation to investigate, prevent and/or minimize such reactions prior to having third parties use the Works.
-
-You shall indemnify and hold harmless NaN from and against all actions, claims, demands, proceedings, losses, damages, costs, charges and expenses, including but not limited to legal fees and expenses, arising out of or in connection with (i) the use of the Software by You and (ii) the use of any Works created with the Software by You or any third parties.
-
-8. Term and Termination
-
-This License Agreement and the license granted hereunder is effective until terminated. This License Agreement shall terminate automatically and forthwith if You fail to comply with the terms of this License Agreement. Upon termination, You shall cease the use of the Software, remove the Software from (the memory of) your computer and destroy all copies of the Software.
-
-9. Entire Agreement
-
-This License Agreement is the entire agreement between NaN and You in respect of the subject matter of the License Agreement. This License Agreement supersedes all prior written or oral agreements, proposals or understandings, and any other communications between NaN and You relating to the subject matter of this License Agreement.
-
-10. Enforceability
-
-If any provision of this License Agreement is held to be unenforceable by a court of competent jurisdiction for any reason, such provision shall be adapted or amended only to the extent necessary to make it enforceable, and the remainder of the License Agreement shall remain in effect.
-
-11. Governing law and disputes
-
-This License Agreement and all disputes arising from it will be governed by the laws of The Netherlands. All disputes arising in connection with this Agreement that cannot be settled amicably shall be brought before the competent court in Amsterdam, the Netherlands, to which jurisdiction NaN and You hereby irrevocably consent.
-
diff --git a/release/windows/installer/03.readme.txt b/release/windows/installer/03.readme.txt
deleted file mode 100644
index 9cfcc8378c1..00000000000
--- a/release/windows/installer/03.readme.txt
+++ /dev/null
@@ -1,54 +0,0 @@
- Blender V2.2
-
- NaN Technologies B.V., the Netherlands
-
- ----- GENERAL INFORMATION -----
-
-Blender Creator is a free and fully functional 3D modeling, rendering, animation and game creation package for Unix and Windows. Blender Creator is distributed without sources, it is exclusively developed and maintained by the Dutch company NaN Technologies B.V.
-
-This software is free to be applied for any purpose, excluding commercial distribution. For more about this, read the copyright notice included in the download file.
-
-The best resource for getting to know Blender Creator is of course 'The official Blender 2.0 guide'. This wonderfully designed 250 pages book contains tutorials, examples and a complete description of every aspect of the interface.
-
-You can visit the shop page of the Blender site for more about this:
-
- http://www.blender.nl/shop/
-
-More information about Blender can be found at:
-
-- The website
-
- http://www.blender.nl
-
-- The beginners page
-
- http://www.blender.nl/support/beginners.php
-
-- The Support Pages
-
- http://www.blender.nl/support/
-
-- The frequently asked questions
-
- http://www.blender.nl/support/faq/index.php
-
-- Tutorials
-
- Good tutorials to start with are 'User Interface' and
- 'Navigating in 3D Space' and 'The Blender Windows'
-
- http://www.blender.nl/search_item.php?part=tutorial
-
-- The Blender news-server: to post questions and contact other users
-
- http://www.blender.nl/discussion/index.php
-
-
-Thank you for getting Blender Creator, I hope you will enjoy using it.
-
-Ton Roosendaal
-NaN Technologies B.V.
-
-http://www.blender.nl
-support@blender.nl
-
diff --git a/release/windows/installer/04.folder.rtf b/release/windows/installer/04.folder.rtf
deleted file mode 100644
index 1929843d994..00000000000
--- a/release/windows/installer/04.folder.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/05.progress.rtf b/release/windows/installer/05.progress.rtf
deleted file mode 100644
index 5cf4ca96ef6..00000000000
--- a/release/windows/installer/05.progress.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/06.complete.rtf b/release/windows/installer/06.complete.rtf
deleted file mode 100644
index 1d2917de9fc..00000000000
--- a/release/windows/installer/06.complete.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/installer/data.ini b/release/windows/installer/data.ini
deleted file mode 100644
index d9393eac3ed..00000000000
--- a/release/windows/installer/data.ini
+++ /dev/null
@@ -1,34 +0,0 @@
-[Settings]
-NumFields=4
-
-[Field 1]
-Type=label
-Text=Please specify where you wish to install Blender's User Data files.
-Left=0
-Right=-1
-Top=0
-Bottom=10
-
-[Field 2]
-Type=RadioButton
-Text=Use Application Data Directory (Win2k/XP only)
-Left=0
-Right=-1
-Top=20
-Bottom=30
-
-[Field 3]
-Type=RadioButton
-Text=Use Installation Directory (ie. location chosen to install blender.exe).
-Left=0
-Right=-1
-Top=40
-Bottom=50
-
-[Field 4]
-Type=RadioButton
-Text=I have defined a %HOME% variable, please install files here.
-Left=0
-Right=-1
-Top=60
-Bottom=70
diff --git a/release/windows/installer/input/24bits-image.bmp b/release/windows/installer/input/24bits-image.bmp
deleted file mode 100644
index 5c7fd0698a0..00000000000
--- a/release/windows/installer/input/24bits-image.bmp
+++ /dev/null
Binary files differ
diff --git a/release/windows/publ_installer/00.installer.adx b/release/windows/publ_installer/00.installer.adx
deleted file mode 100644
index d0ecf549ae8..00000000000
--- a/release/windows/publ_installer/00.installer.adx
+++ /dev/null
@@ -1,308 +0,0 @@
-[ADX]
-ADXVersion=1.00.00
-<=>2240
-CCM^8603:<;8=2
-CCM^8603:>;8=6
-CCM^8603:?;8=3
-CCM^8603:?;9=2
-CCM^8603:8;8=2
-CCM^8603:8;9=2
-CCM^8603::;8=2
-CCM^8603::;9=2
-CCM^8603::;:=2
-CCM^8603:;;8=2
-CCM^8603:4;:=2
-CCM^8603:4;<=2
-CCM^8603:5;8=$HM
-CCM^8603:5;9=$Dgokcl
-CCM^8603:5;:=$Naogte
-CCM^8603:5;;=$^cr
-CCM^8603:5;<=$Ii
-CCM^8603:5;=$Etnue
-CCM^8603:5;>=[bu!\i %K`g
-CCM^8603:5;?=$Ucuz
-CCM^8603:5;0=Qbjdkr %K`g
-CCM^8603:5;1=G!~uzgcw*Emf&x'
-CCM^8603:5:8=$Ciom
-CCM^8603:5:9=Lbrvgtk-$"
-CCM^8603:5::=$Fdnzr
-CCM^8603;<;8=2
-CCM^8604:<;8=3
-CCM^8604:<;9=@kcolcr#',Ymz{n}v
-CCM^8604:<;:=Rkc`{c pzihamw+zjb&qirh#~c+cghf"nrdeu tc`g(ik+kzst`kreg$,+Qd{+cc~&`duo#z~n{x.fg'Dsgqsf*n~|ae.vh&rmje`~,jf+ksgqsooo&pb~d%(+^jzjt&l}ut#cbhd~jn.c'bsape#fi|n|+ap'dd(g VDO+fjcn
-CCM^8604:<:9=67?7
-CCM^8604:;8=3
-CCM^8604:;9=@kcolcr#',Ymz{n}v
-CCM^8604:;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs-*,[zn}x. ^cr*&ie*ud}+yj`v'rn(ivfx{yak+zjb&gaje-*,[zn}x. Ii#(of#sc~(oae)v'q`fr we,d~n|||ksc!|ne#legm%.+^pbur($Cbdond).bh"~it(qam~,g+}ar'cy|ta`~eeo+.bzgju/
-CCM^8604::9=4625
-CCM^8604:>;8=3
-CCM^8604:>;9=@kcolcr#',Ymz{n}v
-CCM^8604:>;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs#kbo(b}+\gfb,Ghlz$,+Xykx}"%_d{$ jl,rg~.|ols&ug&ouo~|zbzn.voc!nolf$,+Xykx}"%Hn*&ie*ud}+jd`%s&viht#~c+g}kyypnrd(rhf*jbdn +.Rucr{&"@kbhmg,+gd'n}&wbdx+|d.xzmw&dprrbixbfl.+gvbkr&
-CCM^8604:>:9=4625
-CCM^8604:?;8=3
-CCM^8604:?;9=@kcolcr#',Ymz{n}v
-CCM^8604:?;:=Voc!nolf*eelbmjzgc&cmjot*dj{+oe.gftmacr#|iy{bae.lrkcmt lx,oik+zjfh!|ne#ebn(jbykcc!gh zeyy(xwxzgj(!(Vrfy+*Rkx,"n`!qiu#}me|+zd.pbvmiee#~dn(mggk,'&Qzcsp*.Eg).bh"~it(bom-x+j`.vh&smvlbii+|ck+hkkc/(&Pqox()Mj`abj#(of#sc~(|oez"si!{ros*is|yohzkia!(otfg%
-CCM^8604:?:9=4625
-CCM^8604:8;8=3
-CCM^8604:8;9=@kcolcr#',Ymz{n}v
-CCM^8604:8;:=Rkc`{c fdxnz+zck"wgr{qoqn$x!+`nkfbb!|i frxyihz+zjb&h|cmp$,+Xykx}"%IJ*&tl*odfge{g'is($Cbdond).a"trnx&e{~~jkgei"nrdeu.
-CCM^8604:8:9=7641
-CCM^8604:9;8=3
-CCM^8604:9;9=@kcolcr#',Np|jmvnio(Vrlm~n{x
-CCM^8604:9;:=Voc!{raw+jnbdy"tnnu tbm({kymgir`oc ll,`n.bzgju!`gs#hinf+kszpfeumb.
-CCM^8604:9:9=15170
-CCM^8604::;8=3
-CCM^8604::;9=@kcolcr#',Np|jmvnio(Vrlm~n{x
-CCM^8604::;:=Voc!{raw+jnbdy"tnnu tbm({kymgir`oc ll,`n.bzgju!`gs#hinf+kszpfeumb.#*\ymx}+,Afhbmj"#~c+{a{.grsietjdk+akf},
-CCM^8604:::9=15170
-CCM^8604:;;8=3
-CCM^8604:;;9=@kcolcr#',Nzyay
-CCM^8604:;;:=Voc!xgtk*eelbmjzgc&cmjot*od}gj+`ms&cm&cqommo.d|"cid{&nl~,jdykjj{'cyaut-*,_zr.x~gdogqond*m+lbhmkpbhu(vawb"
-CCM^8604:;:9=4625
-CCM^8604:4;8=3
-CCM^8604:4;9=@kcolcr#',Nzyay
-CCM^8604:4;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&ouo~|zbzkl)
-CCM^8604:4:9=4625
-CCM^8604:5;8=3
-CCM^8604:5;9=@kcolcr#',Nzyay
-CCM^8604:5;:=Voc!nolf*eelbmjzgc&cmjot*ex(j.Ykcc+Nfjy#legm+oej"ditdb mex+jn.dxguqsartfd"
-CCM^8604:5:9=4625
-CCM^8604;<;8=3
-CCM^8604;<;9=@kcolcr#',Nzyay
-CCM^8604;<;:=Voc!xgsp}cyl+wd{"tvdkofjoh+j}+gldiszccw$,+Xykx}"%E`feeo(,g+}ar'cy|ta`~eeo+gkot(!(Vrfy+*Bieapb$!|i pae{(dxn|"snd(vapy{dzo#{|mscb|cd#cxne%
-CCM^8604;<:9=2
-CCM^8604;;8=3
-CCM^8604;;9=@kcolcr#',Nzyay
-CCM^8604;;:=Mic!gt ne~n(dh+zjb&qzigqkax(fjz"pcsm&svz|d{n.a"uso(eovfh+fdz+lg'`n}hd-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^8604;:9=2
-CCM^8604;>;8=3
-CCM^8604;>;9=@kcolcr#',Nzyay
-CCM^8604;>;:=Onurahg#imiaek.dnjd u)-
-CCM^8604;>:9=2
-CCM^8604;?;8=3
-CCM^8604;?;9=@kcolcr#',Nzyay
-CCM^8604;?;:=Voc!ksswea+znib}vu!ahflxaj|bae.dnjd(rhb~,|ix.x{rwirmb we,im+cn|ebb!otk*xcm+}r}vbk!zcgjyxyq+md{nc&ogr ao,mg~`o "'Vmmgsf*odfohz"~itz&sllx|iyk+~phphlcr#lcy(ckg~,
-CCM^8604;?:9=2
-CCM^8604;8;8=3
-CCM^8604;8;9=@kcolcr#',Nzyay
-CCM^8604;8;:=Voc!aren*eelbmjzgc&hf&tko,manbo.`bjn&cl`o(ea.`b&smaip~iymo +.Rkc`{c `ebihz+wmrt!{ifw}mym+~yatnbdz&flx,cmg~%
-CCM^8604;8:9=4625
-CCM^8604;9;8=3
-CCM^8604;9;9=@kcolcr#',Nzyay
-CCM^8604;9;:=Voc!mhd#ej+|ck+]gk`,M~tqkoaei+tkw&gaje#}mx(ykjmjbb!jcflxi+igb+ad'rim&iwoax(ha~bf'dd(vrlziydr.nvvugb|cd-*,_`b}+]gk`,M~tqkoaei+tkw&gaje#gmr(ik+jcjgfmb.#*\gmj}n.mer`ah b*jymxf+mmw!ihd#~~r(jijgl)
-CCM^8604;9:9=2
-CCM^8604;:;8=3
-CCM^8604;:;9=@kcolcr#',Nzyay
-CCM^8604;:;:=Voc!m~tqkoad`+~phed{u gch+fdz+mmjvmmre#yyhkn}xhwkjx&& Wbex(for.jfpd(defd,hi~}nj"e!ih lziyiay.Afhbmj lx,d|cky.gutnz( #Z`nixk+mmir`kr zeyy(xamzuftd(vrl|eomy.map'nddv.
-CCM^8604;::9=2
-CCM^8604;;;8=3
-CCM^8604;;;9=@kcolcr#',Nzyay
-CCM^8604;;;:=[hss(uyp~if(oan}"iiu(nauo,nfd{lf"fp`ajaafi+encd|{'rn(uu`iix{m{gb{'cy|ta`~,`n.bzgju!nton*xcax.Xkna+Dprrbixbfl.qgr'`hdc.#*\gmj}n.ahhuiet#sc~z+}dhvpgsm&pqezbln|+hmu&imjp-
-CCM^8604;;:9=2
-CCM^8604;4;8=0
-CCM^8604;4;9=@kcolcr#',Nzyay
-CCM^8604;4;:=Voc!m~tqkoad`+~phed{u tk+kj`hknkce(deee~n(jbg.ma&u`c j~if{+yn|g'cy|ta`~io&+.Raw'k`q&nfoh+|d.y{l'rim&e{~~jkgd`"wtnkcsp*mlib`%
-CCM^8604;4:9=2
-CCM^8604;5;8=3
-CCM^8604;5;9=@kcolcr#',Nzyay
-CCM^8604;5;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&e{~~jkko "'Ou(kaz*mgznoow"ec!ah vyi+jr.fg'ux{ren*cy(gahegc&cq&amexcmy.j~rkobirild"+A.|gnk&cm&shc|{mo
-CCM^8604;5:9=4625
-CCM^86048<;8=3
-CCM^86048<;9=@kcolcr#',Nzyay
-CCM^86048<;:=Ci&dztoq*chk~|ykf'btzond*xcm+kszpfeuain#z~dkn}x "'Rim&aqidb~n.mgnb.r!&mbs,im+jjcc`ce&& Sfij{n.dlvfoo(g exix`+md~{'gol&tqs,jojge
-CCM^86048<:9=2
-CCM^86048;8=3
-CCM^86048;9=@kcolcr#',Nzyay
-CCM^86048;:=Uoomm&e{~~jkgei"nrdeu b*hj|j.n|pht!`gs#eoh}y|nj,'Riau Po`m%Nv|cdrhfa yc|+nbbn.of!jc gkajonj%."Wjdiue#enib`+o"atd{n `e|r(j`o.vu!iaajd"
-CCM^86048:9=4625
-CCM^86048>;8=3
-CCM^86048>;9=@kcolcr#',Nzyay
-CCM^86048>;:=Uoomm&e{~~jkgei"nrdeu wbiym+yj}l r!mhovmd+zdaf.mi&u`c goaeogmi&ezovf$,+Qd{+cc~&omcd#~c+zncdxg'unec ec`n{+lnhmuc!qiu#ime(nv|cdr!ijl#ej+|ck+gvbkr&
-CCM^86048>:9=2
-CCM^86048?;8=0
-CCM^86048?;9=@kcolcr#',\iy`b`e
-CCM^86048?;:=Uoomm&e{~~jkgei"nrdeu excf(fn.Qbjg%Cxwxmh|b`l.xnv!nolf*den.bzgju!crf*`a{~nj,
-CCM^86048?:9=2
-CCM^860488;8=0
-CCM^860488;9=@kcolcr#',Bfmayccsonf
-CCM^860488;:=Ckj!areny,|myk+}wded{ufvf`r(nv|cdrdl(
-CCM^860488:9=2
-CCM^860489;8=3
-CCM^860489;9=Kiouagljpi
-CCM^860489;:=Rucqitimm,mgy.Nvvugb|oom$,+Xgkj}g'Q`ar.
-CCM^860489:9=2
-CCM^86048:;8=3
-CCM^86048:;9=@kcolcr#',Nzyay
-CCM^86048:;:=Ci&dztoq*{j{+kemmrhumteg*{cagk+~pbv`zond*jdz+kszpfeuain-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^86048::9=2
-CCM^860484;8=3
-CCM^860484;9=@kcolcr#',H`daxk"Aimlcr#Fchigd`
-CCM^860484:9=2
-CCM^86048498=Fntdkroqcix
-CCM^86048499=Fuowmu
-CCM^860485;8=3
-CCM^860485;9=@kcolcr#',Xmgkhz"@tn}v ee~+[cayzarrr
-CCM^860485:9=2
-CCM^86048598=Girdz&oq*ndnm.c'asgsp#dmfm+hd|"nhr|glocbl(xfd|vdsu{(
-CCM^86049<;8=3
-CCM^86049<;9=@kcolcr#',Nzyay
-CCM^86049<;:=Ci&dztoq*chk~|ykf'qiaje#kxmf~gl`&ug&imyxjdg.xfmurb}rs-
-CCM^86049<:9=2
-CCM^86049;8=3
-CCM^86049;9=@kcolcr#',Ymz{n}v
-CCM^86049;:=Mic!gt ne~n(mggkq'qdzc jdigbnj"sn`|&rf{ybzn.rawu&rqutfg,g+ln.pbuuittfn"
-CCM^86049:9=2
-CCM^8604998=Pbuuitt#,Bd
-CCM^8604999=Pbuuitt#,@j|n|
-CCM^86049>;8=3
-CCM^86049>;9=@kcolcr#',Ymz{n}v
-CCM^86049>;:=Rkc`{c jdnz.]anrkd(Hunhiy(.j+glsi!|ne#xifg}oibg'bsape-
-CCM^86049>:9=67?7
-CCM^86049?;8=3
-CCM^86049?;9=@kcolcr#',Nzyay
-CCM^86049?;:=[hs!`gvf*ee{n|kf'rim&wqebl(]ag{ob(!(Vlfkn(hfnmi'rim&mfnej(j`o.vu!iaajd"
-CCM^86049?:9=2
-CCM^860498;8=3
-CCM^860498;9=@kcolcr#',Nzyay
-CCM^860498;:=Voc!losh*ex(ea.pbgeq&flx,jkhkx},'&Qdcapo,h`nm`.vh&lime#yyym+zcov'rim&mfnej(b}+ypnrd(cnbh`nl+oej"wtnxcros,bfxkyzgc&hfro#~dn(o|bxg)
-CCM^860498:9=2
-CCM^860::?31=Ahhgatm
-CCM^860::?28='t&iiu mex+jnke.qbrtx( Bxi+qd{+}wuc!qiu#}me|+zd.gou7
-CCM^860::>31=Gutnz
-CCM^860::>28=Qbrtx&hby,bfky`ck&dztoq$,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^860::<;8=1
-CCM^8603:;9=^[udzpeqVdden}Wa`mZcdcngo~&kykjzmu+3&~x.}eeldyx gc
-CCM^8603:;8=AZEGEUNOr:Tm|j`i[JNKGLPtW\nc{Rqa~EN(zjz
-CCM^8603:4;8=2
-CCM^8603:9;8=2
-CCM^8603:9;9=2
-CCM^8603:9;:=2
-CCM^8603:;;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\jdigbn|^76/ahswk`gmy bmm<6
-CCM^860334;8=2
-CCM^860334;9=2
-CCM^860339;8=
-CCM^8603:8;;=2
-CCM^860::>=3
-CCM^860::<?;=3
-CCM^860::<9:=3
-CCM^860::<;;=2
-CCM^860::<9<=AZEgeunob{+oej"Tcu|ondyPmzj``RFbuj|ip_yddzm~z,fby
-CCM^860::>38=3
-CCM^860::<;=>Nhr|gloLcgln|5RWioo{raof"npn
-CCM^860::<;?=3
-CCM^860::<;1=3
-CCM^860::<9=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.zICCY\I@J[XKXQPHIUTdlfdhmagk0&Fb``}jt*vD@MRQHBCTUD[YRLEXWjgkejdnjdTuhff`Wg{keRahklihd8"Hnnj{gz+{NJM__@FMX[N]T\MHR]jjemnjbdnROkdfsm|Ocld7#Lnhj{ns/}@MEZU@DKJBTCCDNHFC\Pejj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejguEaupokuEifkwFIB_^DICBFSFIHFB@G[UnnrwbxiWEbmyaqh`uTQimnc|{WM~|pbhu^crpcceT^`b`qsgmdZBoobomy5^`kiuuijlP~~bflr
-CCM^860::<;0=>Nhr|gloLcgln|5R@kcolcr-otnt7Ge}vfjmNilgo~5THa{wpnai|(t{~p7Ae}onk@ndbeq4PYmjjfk,s~ut:ImyxjdgHdbfbt?TNeoz"~zg505~;Oo{raofJddoky0^wu`in1:"odg505~
-CCM^860::>;=3
-CCM^860::<?<=2
-CCM^860::?1=3
-CCM^860::<91=2
-CCM^860::>8=3502:455
-CCM^860::?=
-CCM^860::?>=
-CCM^860::?0=2
-CCM^860::>:=3
-CCM^860::?=1
-CCM^860::0=3
-CCM^860::>3=2
-CCM^860::=>WtnotanLegmx0WLnbhemt
-CCM^860::>=@kcolcr-otn37Ge}vfjmNilgo~5TIbn`fbt/m~e8:7;3;505~Diqqtidbx%|sz02KiuuijlEe`omy0WMmwsaahw$xs|0>0>97:3zRfkhfm%zsz9;Oo{raofJddoky0^Uc`lke-~t3;5;52<:tNeoz"~zg57Gltr`djFlfhnz5RCknw(tzj;31<08050rr~righ23$hgd02B`qsgmd@ooniy6W~rzjhh38(dof7;3;5;59<z
-CCM^860::>3>=3
-CCM^860::>3?=2
-CCM^860::<8=3
-CCM^860::>?8=2
-CCM^860::<9=3
-CCM^860::>?9=2
-CCM^860::<:=3
-CCM^860::>?:=2
-CCM^860::<;=3
-CCM^860::>?;=2
-CCM^860::<<=3
-CCM^860::>?<=2
-CCM^860::<=2
-CCM^860::>?=2
-CCM^860::<>=3
-CCM^860::>?>=2
-CCM^860::9=Lhr!i&Nvgnnz
-CCM^860:::=
-CCM^860::;=upq/jjemniy&eb
-CCM^860::<=
-CCM^860::>1=@kcolcr#Zyidb}ckp
-CCM^860::8=0)43
-CCM^860::9>9=2
-CCM^860::9>:=3
-CCM^860::9><=3
-CCM^860::9>=3
-CCM^860::5<<=2
-CCM^860::9>?=
-CCM^860::<8;=2
-CCM^860::<8<=
-CCM^860::<8=>Nhr|gloLcgln|5RJbjq&sro
-CCM^860::<8>=
-CCM^860::831=2
-CCM^860::59=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ02$ee{ogbgu(cev
-CCM^860::5:=
-CCM^860::5;=2
-CCM^860::<9>=3
-CCM^860::<9?=3
-CCM^860::5<=2
-CCM^860::5=2
-CCM^860::5>=3
-CCM^860::5<=2
-CCM^860::5<>=2
-CCM^860::5<?=
-CCM^860::5<1=2
-CCM^860::5<0=2
-CCM^860::538=2
-CCM^860::52>=3
-CCM^860::52?=>Nhr|gloLcgln|5R@FEJ]V
-CCM^860::520=2
-CCM^860::>>=2
-CCM^860::>?=2
-CCM^8603:?;:=3
-CCM^8603:?;;=2
-CCM^8603:>;:=>FBUmkp
-CCM^8603:;;>=2
-CCM^860::9>;=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.cdcnglegm0]|kia}@MEZUOGIX]N]]UIN\Zboobonbbn5*Ccgislw#7Idn`okp'@hdc;P~~bflrCEG^YBDGSPO_TZDA_R`kcol`iooPx`nbgRmwcoTeongmel0&Okdfsm|/;!6Ee{ogbDhjemt>_H`nfoky gc#($%2(7X|ygei~OMDQYCOK_XMXQYAMSZcdcnglegmWJnhcrjuAeom1$Ommo~bv.#4Onp~mgdMagjgu8]Jjemniy&nvn,.6R|timmpCCNWTBMDGMWKA@BEEMW]dhvpgsmZMji~d{dhRUnhegqs_Iyyzn`Xguuhgh\Vdee{ogb^Ejdfbeq1Hb{{bjwLfkd3Dlfdhnz0]|kia}@MEZU@DKJBTCCDNHFC\Pejj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejguTfonp~mgdXzygl`Ahswk`gNdbokp9ZTfonp~mgd%ksk9Trsahg
-CCM^860::28=Ubjbgke
-CCM^860::>:8=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ02${ndhafk,urg
-CCM^860::>8=2
-CCM^860::521=[bu
-CCM^860:;<;8=Lh
-CCM^860::829=Rkc`{c qomo(fn.dhjmgqimm,Gahke}g'Gfzcenob&+.^}g'rim&s`xcgd+lj|"si!~oet*xcm+|n}v'ig(rhf*hdk~cn`v)
-CCM^860::9:9=Fh&xgs bionx.jbn'rim&tfxax(dh+zjb&qzccfneeo+Bbmgiud(Ggqoifmez4."N`!qiu#iddgxk+@m+&rmrus*{bdg.hbmtc/(&Tl*ee{ogb"snd(vrlm~je'.raw'kt{r bionx.fkt&`otefgie|%
-CCM^860::29=Nnedfue#Kkymncn`v
-CCM^860::>:9=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ01$odxr|bijs(upr
-CCM^860::>9=3
-CCM^860::2:=Ceit|&Boobomy.H|gfrnz
-CCM^860::>::=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ00$~niocn vr
-CCM^860::>:=2
-CCM^860::82;=Kiuuijlb~edf+Hdbfbt
-CCM^860::9:;=Wtc!|ne#lendo.iknhq!|i pzihamw+zjb&ggjdfx,|`n|n.{hs!gnw*xcm+o{~nne`|oom*jbdn}+zm'dd(eoscio(a%.Vh&rxccjlu+i+jbhdbtdfr ee`omy"+z{wc!i&nf},eifk'.mu&t{c wbi+Ti.I|mpudTd0#*n~|ae.vh&rmje`~,jf+ksgqsooo&flfhnz%.+^pbur(Zb#Dis|Wl;."si!kinwcb~m%
-CCM^860::2;=Aoin{c Pox~x+Hdbfbt
-CCM^860::>:;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ07$jddoky ps`
-CCM^860::>;=2
-CCM^860::82<=Uhtjahg
-CCM^860::9:<=Rkc`{c tke(|fbbg'#r(os#yi}{.d`"~itz&clg|~|n|%
-CCM^860::2<=Qbrtx&Pqekymx}
-CCM^860::>:<=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ06$|ygl|n}q)tun
-CCM^860::><=2
-CCM^860::82>=Qbrtx&wby,x}hmn}qasm
-CCM^860::9:>='t&viu pohmx}m{nk!{ctvz,df+wd{p'enevuwo~%(+^ykqt&]j&Fjdex`Wl;."si!m~iw*n|~~%
-CCM^860::98>=Qsgs|&Boobomy.[{`kor`cr
-CCM^860::>3;=>Nhr|gloLcgln|5R`kcolcr-otn
-CCM^860::>3<=2
-CCM^860::>39=3
-CCM^860::2>=Qbrtx&Clg|gmk
-CCM^860::>:>=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibnu\sngWb`xzckjdzZ05$ode{bnzg)tun
-CCM^860::>>=2
-CCM^860::<:8=Wioo{raofiy
-CCM^860::<:9=Voc!}himyxjdg.{|m`t`e&wjf`+zncdxg'`hdcs#kbo(magjguu-(uhlxxh}}'.cib!zcgjyxyq+kezpncr(`rlg,`n.ogql(!(Grf*ud}+}~|g'n}&wbdx+|d.~`kiuuijl<
-CCM^860::<::=Mic!g` `ea{gekezq'or(gcwczn&+.Nvks&u`c sxclzjc+lgaism&swk~aei+[lnhr|glo$
-CCM^860::<:;=Wioo{raof,x}hmn}qasmd!
-CCM^860::<:<=Ci&dztoq*chk~|ykf'qiaje#~~raei+zm'soahswk`g(fn.ruifzgm-*,^fb`xzckj!`gs#hinf+mj`abjdl(
-CCM^860::><=Qbrtx
-CCM^860::<9;=Lhr!i&Nvgnnzwrwr~{Dmmhdfx,[}ibb}jbt}:(21v
-CCM^860::<;:=Giamauh#',^fbznj"Tr`|cs
-CCM^860::<;9=3752
-CCM^860:;<;9=^[udzpeqVdden}Wa`mZcdcngo~&b`oautZ+&, \ No newline at end of file
diff --git a/release/windows/publ_installer/00.installer.ico b/release/windows/publ_installer/00.installer.ico
deleted file mode 100644
index 4daf11eb821..00000000000
--- a/release/windows/publ_installer/00.installer.ico
+++ /dev/null
Binary files differ
diff --git a/release/windows/publ_installer/01.installer.bmp b/release/windows/publ_installer/01.installer.bmp
deleted file mode 100644
index d62832c0101..00000000000
--- a/release/windows/publ_installer/01.installer.bmp
+++ /dev/null
Binary files differ
diff --git a/release/windows/publ_installer/01.welcome.rtf b/release/windows/publ_installer/01.welcome.rtf
deleted file mode 100644
index b7ff8c2910b..00000000000
--- a/release/windows/publ_installer/01.welcome.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/publ_installer/02.copyright.txt b/release/windows/publ_installer/02.copyright.txt
deleted file mode 100644
index 4e67c2561d3..00000000000
--- a/release/windows/publ_installer/02.copyright.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-BLENDER CREATOR LICENSE AGREEMENT
-
-IMPORTANT: PLEASE READ CAREFULLY BEFORE USING THE BLENDER CREATOR SOFTWARE.
-
-This License Agreement for the Blender Creator software ("License Agreement") is an agreement between NaN Technologies B.V., Meerenakkerplein 11, 5652 BJ Eindhoven, the Netherlands ("NaN") and you (either an individual or a legal entity) ("You") with respect to the software product which this License Agreement accompanies (the "Software").
-
-By installing, copying or otherwise using the Software, You agree to be bound by the terms of this License Agreement. If You do not agree to the terms of this License Agreement do not install or use the Software.
-
-
-1. Grant of License
-
-Subject to the provisions of this License Agreement, NaN grants You a limited, non-exclusive, personal, non-sublicenseable, non-transferable, revocable license to use the Software at any computer You own or use.
-
-2. License Restrictions
-
-Except as expressly provided under this License Agreement, or without prior written consent from NaN, or without permission by law, You may not: (a) remove or alter any proprietary, copyright or trademark notices in or on the Software; (b) modify, decompile, disassemble or reverse-engineer the Software; (c) sublicense, rent, lease, lend, assign or otherwise transfer rights to the Software.
-
-3. Permitted copying and electronic distribution of Software
-
-You are hereby granted permission to copy and distribute the Software without written agreement from NaN, only for non-commercial purposes. Distributing the Software within a restricted non-public environment, such as using a local network in a company or a local network of a university, is considered a 'non-commercial purpose'. This entire License Agreement must appear in and/or accompany all copies of the Software.
-Distributing the Software 'bundled' in with ANY product is considered to be a 'commercial purpose'.
-
-4. Intellectual Property Rights and Ownership
-
-Title and ownership to all rights, including intellectual property rights, in and to the Software shall at all times solely and exclusively remain with NaN. The Software is protected by national and international (copyright) laws and treaties. All rights not expressly granted herein are reserved to NaN.
-
-5. Disclaimer of Warranties
-
-NaN provides you with the Software "as is" and with all faults. NaN explicitly disclaims all warranties and guarantees and does not make any representations with respect to the Software, whether express, implied, or statutory, including, but not limited to any (if any) warranties of or related to: fitness for a particular purpose, title, non-infringement, lack of viruses, accuracy or completeness of responses, results, lack of negligence or lack of workmanlike effort, and correspondence to description. The entire risk arising out of use or performance of the Software remains with You.
-
-6. Limitation of Liability
-
-In no event shall NaN or its employees, agents or suppliers be liable for any direct, indirect, consequential, incidental, special, punitive, or other damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, claims of third parties, damages as a result of injury to any person, or any other loss) arising out of or in connection with the license granted under this License Agreement or the use of or inability to use the Software, even if NaN has been advised of the possibility of such damages.
-
-7. User warning and indemnification
-
-WARNING: use of the Software and use of any works that are (partially) created with the Software (the "Works") may cause physical or psychological reactions from You or from third parties, which may result in damages, injuries, losses and/or other negative consequences. You acknowledge that NaN can not be held liable for any such damages, injuries, losses and/or other negative consequences. You acknowledge that it is your obligation to investigate, prevent and/or minimize such reactions prior to having third parties use the Works.
-
-You shall indemnify and hold harmless NaN from and against all actions, claims, demands, proceedings, losses, damages, costs, charges and expenses, including but not limited to legal fees and expenses, arising out of or in connection with (i) the use of the Software by You and (ii) the use of any Works created with the Software by You or any third parties.
-
-8. Term and Termination
-
-This License Agreement and the license granted hereunder is effective until terminated. This License Agreement shall terminate automatically and forthwith if You fail to comply with the terms of this License Agreement. Upon termination, You shall cease the use of the Software, remove the Software from (the memory of) your computer and destroy all copies of the Software.
-
-9. Entire Agreement
-
-This License Agreement is the entire agreement between NaN and You in respect of the subject matter of the License Agreement. This License Agreement supersedes all prior written or oral agreements, proposals or understandings, and any other communications between NaN and You relating to the subject matter of this License Agreement.
-
-10. Enforceability
-
-If any provision of this License Agreement is held to be unenforceable by a court of competent jurisdiction for any reason, such provision shall be adapted or amended only to the extent necessary to make it enforceable, and the remainder of the License Agreement shall remain in effect.
-
-11. Governing law and disputes
-
-This License Agreement and all disputes arising from it will be governed by the laws of The Netherlands. All disputes arising in connection with this Agreement that cannot be settled amicably shall be brought before the competent court in Amsterdam, the Netherlands, to which jurisdiction NaN and You hereby irrevocably consent.
-
diff --git a/release/windows/publ_installer/03.readme.txt b/release/windows/publ_installer/03.readme.txt
deleted file mode 100644
index 9cfcc8378c1..00000000000
--- a/release/windows/publ_installer/03.readme.txt
+++ /dev/null
@@ -1,54 +0,0 @@
- Blender V2.2
-
- NaN Technologies B.V., the Netherlands
-
- ----- GENERAL INFORMATION -----
-
-Blender Creator is a free and fully functional 3D modeling, rendering, animation and game creation package for Unix and Windows. Blender Creator is distributed without sources, it is exclusively developed and maintained by the Dutch company NaN Technologies B.V.
-
-This software is free to be applied for any purpose, excluding commercial distribution. For more about this, read the copyright notice included in the download file.
-
-The best resource for getting to know Blender Creator is of course 'The official Blender 2.0 guide'. This wonderfully designed 250 pages book contains tutorials, examples and a complete description of every aspect of the interface.
-
-You can visit the shop page of the Blender site for more about this:
-
- http://www.blender.nl/shop/
-
-More information about Blender can be found at:
-
-- The website
-
- http://www.blender.nl
-
-- The beginners page
-
- http://www.blender.nl/support/beginners.php
-
-- The Support Pages
-
- http://www.blender.nl/support/
-
-- The frequently asked questions
-
- http://www.blender.nl/support/faq/index.php
-
-- Tutorials
-
- Good tutorials to start with are 'User Interface' and
- 'Navigating in 3D Space' and 'The Blender Windows'
-
- http://www.blender.nl/search_item.php?part=tutorial
-
-- The Blender news-server: to post questions and contact other users
-
- http://www.blender.nl/discussion/index.php
-
-
-Thank you for getting Blender Creator, I hope you will enjoy using it.
-
-Ton Roosendaal
-NaN Technologies B.V.
-
-http://www.blender.nl
-support@blender.nl
-
diff --git a/release/windows/publ_installer/04.folder.rtf b/release/windows/publ_installer/04.folder.rtf
deleted file mode 100644
index 2e9daee37b7..00000000000
--- a/release/windows/publ_installer/04.folder.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/publ_installer/05.progress.rtf b/release/windows/publ_installer/05.progress.rtf
deleted file mode 100644
index af6b1403045..00000000000
--- a/release/windows/publ_installer/05.progress.rtf
+++ /dev/null
Binary files differ
diff --git a/release/windows/publ_installer/06.complete.rtf b/release/windows/publ_installer/06.complete.rtf
deleted file mode 100644
index d901313ec1a..00000000000
--- a/release/windows/publ_installer/06.complete.rtf
+++ /dev/null
Binary files differ
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 04566ec3b0b..4764caddf6a 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -24,12 +24,13 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(blender kernel)
+ADD_SUBDIRECTORY(blender)
+ADD_SUBDIRECTORY(kernel)
IF(WITH_GAMEENGINE)
- SUBDIRS(gameengine)
+ ADD_SUBDIRECTORY(gameengine)
ENDIF(WITH_GAMEENGINE)
IF(WINDOWS)
- SUBDIRS(icons)
+ ADD_SUBDIRECTORY(icons)
ENDIF(WINDOWS)
diff --git a/source/Makefile b/source/Makefile
index 85486c3a81f..535a86e9139 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -155,11 +155,13 @@ ifneq ($(NAN_NO_KETSJI),true)
COMLIB += $(NAN_BULLET2)/lib/libbullet2.a
endif
+# Cloth requires bullet2, gameegine does not matter anymore
+#COMLIB += $(NAN_BULLET2)/lib/libbullet2.a
+
COMLIB += $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a
COMLIB += $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a
COMLIB += $(NAN_MEMUTIL)/lib/libmemutil.a
COMLIB += $(NAN_PNG)/lib/libpng.a
-COMLIB += $(OCGDIR)/blender/yafray/$(DEBUG_DIR)libyafrayexport.a
ifeq ($(WITH_QUICKTIME), true)
COMLIB += $(OCGDIR)/blender/blenderqt/$(DEBUG_DIR)libblenderqt.a
@@ -275,6 +277,7 @@ SPLIB = $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a
# can I just not check them? nm claims they aren't...
SPLIB += $(OCGDIR)/blender/blenkernel/blenkernel_blc/$(DEBUG_DIR)libblenkernel_blc.a
SPLIB += $(OCGDIR)/blender/makesrna/$(DEBUG_DIR)librna.a
+SPLIB += $(OCGDIR)/blender/blenlib/$(DEBUG_DIR)libblenlib.a
# These three need to be explicitly mentioned on the cl, because
# if they are offered as a lib, they are optimized away. (nzc)
@@ -376,8 +379,6 @@ else
NAN_SND_LIBS += $(OPENALSOUND)
NAN_SND_LIBS += $(SDLSOUND)
NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a
- ALUT = $(wildcard $(NAN_OPENAL)/lib/libalut.a)
- NAN_SND_LIBS += $(ALUT)
NAN_SND_LIBS += $(SOUNDSYSTEM)
else
ifeq ($(OS),windows)
@@ -386,8 +387,6 @@ else
NAN_SND_LIBS += $(OPENALSOUND)
NAN_SND_LIBS += $(SDLSOUND)
NAN_SND_LIBS += $(NAN_OPENAL)/lib/openal_static.lib
- ALUT = $(wildcard $(NAN_OPENAL)/lib/alut_static.lib)
- NAN_SND_LIBS += $(ALUT)
NAN_SND_LIBS += $(SOUNDSYSTEM)
else
NAN_SND_LIBS = $(SOUNDSYSTEM)
@@ -401,8 +400,6 @@ else
NAN_SND_LIBS += $(DUMMYSOUND)
NAN_SND_LIBS += $(OPENALSOUND)
NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a
- ALUT = $(wildcard $(NAN_OPENAL)/lib/libalut.a)
- NAN_SND_LIBS += $(ALUT)
NAN_SND_LIBS += $(SOUNDSYSTEM)
else
ifeq ($(OS), solaris)
@@ -411,8 +408,6 @@ else
NAN_SND_LIBS += $(OPENALSOUND)
NAN_SND_LIBS += $(SDLSOUND)
NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a
- ALUT = $(wildcard $(NAN_OPENAL)/lib/libalut.a)
- NAN_SND_LIBS += $(ALUT)
NAN_SND_LIBS += $(SOUNDSYSTEM)
else
ifeq ($(OS), irix)
diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt
index 9ec9efa6a8d..a53b15673e2 100644
--- a/source/blender/CMakeLists.txt
+++ b/source/blender/CMakeLists.txt
@@ -24,24 +24,37 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(windowmanager editors avi nodes blenkernel blenlib blenloader blenpluginapi imbuf imbuf/intern/cineon gpu makesdna makesrna radiosity readblenfile render blenfont)
+ADD_SUBDIRECTORY(windowmanager)
+ADD_SUBDIRECTORY(editors)
+ADD_SUBDIRECTORY(avi)
+ADD_SUBDIRECTORY(nodes)
+ADD_SUBDIRECTORY(blenkernel)
+ADD_SUBDIRECTORY(blenlib)
+ADD_SUBDIRECTORY(blenloader)
+ADD_SUBDIRECTORY(blenpluginapi)
+ADD_SUBDIRECTORY(imbuf)
+ADD_SUBDIRECTORY(imbuf/intern/cineon)
+ADD_SUBDIRECTORY(gpu)
+ADD_SUBDIRECTORY(makesdna)
+ADD_SUBDIRECTORY(makesrna)
+ADD_SUBDIRECTORY(radiosity)
+ADD_SUBDIRECTORY(readblenfile)
+ADD_SUBDIRECTORY(render)
+ADD_SUBDIRECTORY(blenfont)
IF(WITH_OPENEXR)
- SUBDIRS(imbuf/intern/openexr)
+ ADD_SUBDIRECTORY(imbuf/intern/openexr)
ENDIF(WITH_OPENEXR)
IF(WITH_DDS)
- SUBDIRS(imbuf/intern/dds)
+ ADD_SUBDIRECTORY(imbuf/intern/dds)
ENDIF(WITH_DDS)
IF(WITH_QUICKTIME)
- SUBDIRS(quicktime)
+ ADD_SUBDIRECTORY(quicktime)
ENDIF(WITH_QUICKTIME)
IF(WITH_PYTHON)
- SUBDIRS(python)
+ ADD_SUBDIRECTORY(python)
ENDIF(WITH_PYTHON)
-IF(WITH_YAFRAY)
- SUBDIRS(yafray)
-ENDIF(WITH_YAFRAY)
diff --git a/source/blender/Makefile b/source/blender/Makefile
index b8809c87213..64eb1a2614b 100644
--- a/source/blender/Makefile
+++ b/source/blender/Makefile
@@ -32,7 +32,7 @@ include nan_definitions.mk
DIRS = windowmanager editors blenloader readblenfile
DIRS += avi imbuf render radiosity blenlib blenkernel blenpluginapi
-DIRS += makesdna makesrna yafray
+DIRS += makesdna makesrna
DIRS += python nodes gpu
DIRS += blenfont
diff --git a/source/blender/SConscript b/source/blender/SConscript
index f0af7956c40..856d6284f44 100644
--- a/source/blender/SConscript
+++ b/source/blender/SConscript
@@ -26,9 +26,6 @@ SConscript(['avi/SConscript',
if env['WITH_BF_PYTHON']:
SConscript(['python/SConscript'])
-if env['WITH_BF_YAFRAY']:
- SConscript(['yafray/SConscript'])
-
if env['WITH_BF_DDS']:
SConscript (['imbuf/intern/dds/SConscript'])
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 707b8f143da..ff4b763eaf9 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -513,6 +513,9 @@ DerivedMesh *mesh_create_derived_no_deform(struct Scene *scene, struct Object *o
DerivedMesh *mesh_create_derived_no_deform_render(struct Scene *scene, struct Object *ob,
float (*vertCos)[3],
CustomDataMask dataMask);
+/* for gameengine */
+DerivedMesh *mesh_create_derived_no_virtual(struct Scene *scene, struct Object *ob, float (*vertCos)[3],
+ CustomDataMask dataMask);
DerivedMesh *editbmesh_get_derived_base(struct Object *, struct BMEditMesh *em);
DerivedMesh *editbmesh_get_derived_cage(struct Scene *scene, struct Object *,
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index f08b14c7820..6a43f4ca25c 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -72,6 +72,20 @@ typedef struct bContextDataResult bContextDataResult;
typedef int (*bContextDataCallback)(const bContext *C,
const char *member, bContextDataResult *result);
+typedef struct bContextStoreEntry {
+ struct bContextStoreEntry *next, *prev;
+
+ char name[128];
+ PointerRNA ptr;
+} bContextStoreEntry;
+
+typedef struct bContextStore {
+ struct bContextStore *next, *prev;
+
+ ListBase entries;
+ int used;
+} bContextStore;
+
/* Context */
bContext *CTX_create(void);
@@ -79,6 +93,14 @@ void CTX_free(bContext *C);
bContext *CTX_copy(const bContext *C);
+/* Stored Context */
+
+bContextStore *CTX_store_add(ListBase *contexts, char *name, PointerRNA *ptr);
+void CTX_store_set(bContext *C, bContextStore *store);
+bContextStore *CTX_store_copy(bContextStore *store);
+void CTX_store_free(bContextStore *store);
+void CTX_store_free_list(ListBase *contexts);
+
/* Window Manager Context */
struct wmWindowManager *CTX_wm_manager(const bContext *C);
diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h
index e598394cc60..ce182267b93 100644
--- a/source/blender/blenkernel/BKE_library.h
+++ b/source/blender/blenkernel/BKE_library.h
@@ -45,6 +45,7 @@ void *copy_libblock(void *rt);
void id_lib_extern(struct ID *id);
void id_us_plus(struct ID *id);
+void id_us_min(struct ID *id);
int check_for_dupid(struct ListBase *lb, struct ID *id, char *name);
int new_id(struct ListBase *lb, struct ID *id, const char *name);
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 9637b659ece..54832376b87 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -125,7 +125,8 @@ typedef struct ModifierTypeInfo {
*/
void (*deformVerts)(struct ModifierData *md, struct Object *ob,
struct DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts);
+ float (*vertexCos)[3], int numVerts,
+ int useRenderParams, int isFinalCalc);
/* Like deformVerts but called during editmode (for supporting modifiers)
*/
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index 8835a7127f1..063f0ee96aa 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -51,22 +51,23 @@ int *MultiresDM_get_face_offsets(struct DerivedMesh *);
int MultiresDM_get_totlvl(struct DerivedMesh *);
int MultiresDM_get_lvl(struct DerivedMesh *);
void MultiresDM_set_update(struct DerivedMesh *, void (*)(struct DerivedMesh*));
-int *MultiresDM_get_flags(struct DerivedMesh *);
-#define MULTIRES_DM_UPDATE_BLOCK 1
-#define MULTIRES_DM_UPDATE_ALWAYS 2
+/* The displacements will only be updated when
+ the MultiresDM has been marked as modified */
+void MultiresDM_mark_as_modified(struct DerivedMesh *);
+void multires_mark_as_modified(struct Object *ob);
void multires_force_update(struct Object *ob);
struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*, struct DerivedMesh*,
struct Mesh *, int, int);
+struct MultiresModifierData *find_multires_modifier(struct Object *ob);
int multiresModifier_switch_level(struct Object *, const int);
void multiresModifier_join(struct Object *);
void multiresModifier_del_levels(struct MultiresModifierData *, struct Object *, int direction);
void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob, int distance,
int updateblock, int simple);
-void multiresModifier_setLevel(void *mmd_v, void *ob_v);
int multiresModifier_reshape(struct MultiresModifierData *mmd, struct Object *dst, struct Object *src);
/* Related to the old multires */
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 2af72d98701..3d71193f37a 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -85,6 +85,7 @@ struct Object *add_object(struct Scene *scene, int type);
struct Object *copy_object(struct Object *ob);
void expand_local_object(struct Object *ob);
void make_local_object(struct Object *ob);
+int object_data_is_libdata(struct Object *ob);
void set_mblur_offs(float blur);
void set_field_offs(float field);
void disable_speed_curve(int val);
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index db4d948216e..4efd9a7f8ba 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -251,7 +251,7 @@ struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct P
struct ParticleSettings *psys_new_settings(char *name, struct Main *main);
struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part);
-void psys_flush_settings(struct Scene *scene, struct ParticleSettings *part, int event, int hair_recalc);
+void psys_flush_particle_settings(struct Scene *scene, struct ParticleSettings *part, int recalc);
void make_local_particlesettings(struct ParticleSettings *part);
struct LinkNode *psys_using_settings(struct Scene *scene, struct ParticleSettings *part, int flush_update);
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 70eba5006d6..9bb246f88cc 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -35,6 +35,7 @@ struct bglMats;
struct Scene;
struct Object;
struct Base;
+struct Text;
struct AviCodecData;
struct QuicktimeCodecData;
struct RenderData;
diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequence.h
index 0960f968c4e..65a3b0216fe 100644
--- a/source/blender/blenkernel/BKE_sequence.h
+++ b/source/blender/blenkernel/BKE_sequence.h
@@ -142,10 +142,10 @@ void seq_free_strip(struct Strip *strip);
void seq_free_editing(struct Editing *ed);
struct Editing *seq_give_editing(struct Scene *scene, int alloc);
char *give_seqname(struct Sequence *seq);
-struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown);
-struct ImBuf *give_ibuf_seq_threaded(struct Scene *scene, int rectx, int recty, int cfra, int chanshown);
-struct ImBuf *give_ibuf_seq_direct(struct Scene *scene, int rectx, int recty, int cfra, struct Sequence *seq);
-void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown);
+struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
+struct ImBuf *give_ibuf_seq_threaded(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
+struct ImBuf *give_ibuf_seq_direct(struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq);
+void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, int render_size);
void calc_sequence(struct Sequence *seq);
void calc_sequence_disp(struct Sequence *seq);
void new_tstripdata(struct Sequence *seq);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 63b3152ae95..d2282ea05e9 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1037,7 +1037,7 @@ static void emDM_drawMappedFacesGLSL(void *dm,
glShadeModel(GL_SMOOTH);
for (i=0,eve=em->verts.first; eve; eve= eve->next)
- eve->tmp.l = (long) i++;
+ eve->tmp.l = (intptr_t) i++;
#define PASSATTRIB(efa, eve, vert) { \
if(attribs.totorco) { \
@@ -1537,7 +1537,7 @@ DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, Modifier
int numVerts;
float (*deformedVerts)[3] = mesh_getVertexCos(me, &numVerts);
- mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
+ mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, 0, 0);
dm = getMeshDerivedMesh(me, ob, deformedVerts);
MEM_freeN(deformedVerts);
@@ -1714,6 +1714,11 @@ static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm)
CustomData_add_layer(&dm->faceData, CD_WEIGHT_MCOL, CD_ASSIGN, wtcol, dm->numFaceData);
}
+/* new value for useDeform -1 (hack for the gameengine):
+ * - apply only the modifier stack of the object, skipping the virtual modifiers,
+ * - don't apply the key
+ * - apply deform modifiers and input vertexco
+ */
static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos)[3],
DerivedMesh **deform_r, DerivedMesh **final_r,
int useRenderParams, int useDeform,
@@ -1728,7 +1733,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
int numVerts = me->totvert;
int required_mode;
- md = firstmd = modifiers_getVirtualModifierList(ob);
+ md = firstmd = (useDeform<0) ? ob->modifiers.first : modifiers_getVirtualModifierList(ob);
modifiers_clearErrors(ob);
@@ -1745,8 +1750,10 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
else required_mode = eModifierMode_Realtime;
if(useDeform) {
- if(do_ob_key(scene, ob)) /* shape key makes deform verts */
+ if(useDeform > 0 && do_ob_key(scene, ob)) /* shape key makes deform verts */
deformedVerts = mesh_getVertexCos(me, &numVerts);
+ else if(inputVertexCos)
+ deformedVerts = inputVertexCos;
/* Apply all leading deforming modifiers */
for(;md; md = md->next, curr = curr->next) {
@@ -1756,12 +1763,13 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
if((md->mode & required_mode) != required_mode) continue;
if(mti->isDisabled && mti->isDisabled(md)) continue;
+ if(useDeform < 0 && mti->dependsOnTime && mti->dependsOnTime(md)) continue;
if(mti->type == eModifierTypeType_OnlyDeform) {
if(!deformedVerts)
deformedVerts = mesh_getVertexCos(me, &numVerts);
- mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
+ mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, useRenderParams, useDeform);
} else {
break;
}
@@ -1811,6 +1819,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
}
if(mti->isDisabled && mti->isDisabled(md)) continue;
if(needMapping && !modifier_supportsMapping(md)) continue;
+ if(useDeform < 0 && mti->dependsOnTime && mti->dependsOnTime(md)) continue;
/* add an orco layer if needed by this modifier */
if(dm && mti->requiredDataMask) {
@@ -1842,7 +1851,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
}
}
- mti->deformVerts(md, ob, dm, deformedVerts, numVerts);
+ mti->deformVerts(md, ob, dm, deformedVerts, numVerts, useRenderParams, useDeform);
} else {
DerivedMesh *ndm;
@@ -2335,6 +2344,16 @@ DerivedMesh *mesh_create_derived_no_deform(Scene *scene, Object *ob, float (*ver
return final;
}
+DerivedMesh *mesh_create_derived_no_virtual(Scene *scene, Object *ob, float (*vertCos)[3],
+ CustomDataMask dataMask)
+{
+ DerivedMesh *final;
+
+ mesh_calc_modifiers(scene, ob, vertCos, NULL, &final, 0, -1, 0, dataMask, -1);
+
+ return final;
+}
+
DerivedMesh *mesh_create_derived_no_deform_render(Scene *scene, Object *ob,
float (*vertCos)[3],
CustomDataMask dataMask)
diff --git a/source/blender/blenkernel/intern/Makefile b/source/blender/blenkernel/intern/Makefile
index 1528ec1c86e..a6a5066b574 100644
--- a/source/blender/blenkernel/intern/Makefile
+++ b/source/blender/blenkernel/intern/Makefile
@@ -82,7 +82,7 @@ CPPFLAGS += -I../../gpu
CPPFLAGS += -I..
# path to bullet2, for cloth
-CPPFLAGS += -I../../../../extern/bullet2/src
+CPPFLAGS += -I$(NAN_BULLET2)/include
CPPFLAGS += -I$(NAN_FREETYPE)/include
CPPFLAGS += -I$(NAN_FREETYPE)/include/freetype2
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 3169905b7f5..5fc7d18689d 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -400,7 +400,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename)
MEM_freeN(bfd);
}
-static void handle_subversion_warning(Main *main)
+static int handle_subversion_warning(Main *main)
{
if(main->minversionfile > BLENDER_VERSION ||
(main->minversionfile == BLENDER_VERSION &&
@@ -411,7 +411,7 @@ static void handle_subversion_warning(Main *main)
sprintf(str, "File written by newer Blender binary: %d.%d , expect loss of data!", main->minversionfile, main->minsubversionfile);
// XXX error(str);
}
-
+ return 1;
}
void BKE_userdef_free(void)
@@ -438,9 +438,14 @@ int BKE_read_file(bContext *C, char *dir, void *unused, ReportList *reports)
if (bfd) {
if(bfd->user) retval= 2;
- setup_app_data(C, bfd, dir);
-
- handle_subversion_warning(G.main);
+ if(0==handle_subversion_warning(bfd->main)) {
+ free_main(bfd->main);
+ MEM_freeN(bfd);
+ bfd= NULL;
+ retval= 0;
+ }
+ else
+ setup_app_data(C, bfd, dir); // frees BFD
}
else
BKE_reports_prependf(reports, "Loading %s failed: ", dir);
diff --git a/source/blender/blenkernel/intern/bmfont.c b/source/blender/blenkernel/intern/bmfont.c
index 0af54b86ed6..09770b2b4ba 100644
--- a/source/blender/blenkernel/intern/bmfont.c
+++ b/source/blender/blenkernel/intern/bmfont.c
@@ -178,7 +178,7 @@ void detectBitmapFont(ImBuf *ibuf)
{
unsigned char * rect;
unsigned short version;
- long i;
+ int i;
if (ibuf != NULL) {
// bitmap must have an x size that is a power of two
diff --git a/source/blender/blenkernel/intern/bullet.c b/source/blender/blenkernel/intern/bullet.c
index b389f8c0536..44e8ed1f08c 100644
--- a/source/blender/blenkernel/intern/bullet.c
+++ b/source/blender/blenkernel/intern/bullet.c
@@ -82,6 +82,7 @@ BulletSoftBody *bsbNew(void)
bsb->collisionflags = 0;
//bsb->collisionflags = OB_BSB_COL_CL_RS + OB_BSB_COL_CL_SS;
bsb->numclusteriterations = 64;
+ bsb->welding = 0.f;
return bsb;
}
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 4f6f3a5f93d..5c34144ca0b 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1163,7 +1163,7 @@ DerivedMesh *CDDM_from_BMEditMesh(BMEditMesh *em, Mesh *me)
index = dm->getVertDataArray(dm, CD_ORIGINDEX);
eve = BMIter_New(&iter, bm, BM_VERTS_OF_MESH, NULL);
- for (i=0; eve; eve=BMIter_Step(&iter), i++) {
+ for (i=0; eve; eve=BMIter_Step(&iter), i++, index++) {
MVert *mv = &mvert[i];
VECCOPY(mv->co, eve->co);
@@ -1183,7 +1183,7 @@ DerivedMesh *CDDM_from_BMEditMesh(BMEditMesh *em, Mesh *me)
index = dm->getEdgeDataArray(dm, CD_ORIGINDEX);
eed = BMIter_New(&iter, bm, BM_EDGES_OF_MESH, NULL);
- for (i=0; eed; eed=BMIter_Step(&iter), i++) {
+ for (i=0; eed; eed=BMIter_Step(&iter), i++, index++) {
MEdge *med = &medge[i];
med->v1 = BMINDEX_GET(eed->v1);
@@ -1227,7 +1227,7 @@ DerivedMesh *CDDM_from_BMEditMesh(BMEditMesh *em, Mesh *me)
index = CustomData_get(&dm->polyData, 0, CD_ORIGINDEX);
j = 0;
efa = BMIter_New(&iter, bm, BM_FACES_OF_MESH, NULL);
- for (i=0; efa; i++, efa=BMIter_Step(&iter)) {
+ for (i=0; efa; i++, efa=BMIter_Step(&iter), index++) {
BMLoop *l;
MPoly *mp = &mpoly[i];
@@ -1245,7 +1245,7 @@ DerivedMesh *CDDM_from_BMEditMesh(BMEditMesh *em, Mesh *me)
mloop++;
}
- *(index++) = i;
+ *index = i;
}
return dm;
@@ -1720,7 +1720,7 @@ typedef struct MultiresDM {
int *face_offsets;
Mesh *me;
- int flags;
+ int modified;
void (*update)(DerivedMesh*);
} MultiresDM;
@@ -1731,7 +1731,7 @@ static void MultiresDM_release(DerivedMesh *dm)
int mvert_layer;
/* Before freeing, need to update the displacement map */
- if(dm->needsFree && !(mrdm->flags & MULTIRES_DM_UPDATE_BLOCK))
+ if(dm->needsFree && mrdm->modified)
mrdm->update(dm);
/* If the MVert data is being used as the sculpt undo store, don't free it */
@@ -1807,7 +1807,7 @@ DerivedMesh *MultiresDM_new(MultiresSubsurf *ms, DerivedMesh *orig,
mrdm->lvl = ms->mmd->lvl;
mrdm->totlvl = ms->mmd->totlvl;
mrdm->subco = MEM_callocN(sizeof(MVert)*numVerts, "multires subdivided verts");
- mrdm->flags = 0;
+ mrdm->modified = 0;
dm->release = MultiresDM_release;
@@ -1893,8 +1893,8 @@ int *MultiresDM_get_face_offsets(DerivedMesh *dm)
return mrdm->face_offsets;
}
-int *MultiresDM_get_flags(DerivedMesh *dm)
+void MultiresDM_mark_as_modified(DerivedMesh *dm)
{
- return &((MultiresDM*)dm)->flags;
+ ((MultiresDM*)dm)->modified = 1;
}
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index b485a4266fb..d0509c35ee0 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -157,7 +157,7 @@ BVHTree *bvhselftree_build_from_cloth (ClothModifierData *clmd, float epsilon)
{
unsigned int i;
BVHTree *bvhtree;
- Cloth *cloth = clmd->clothObject;
+ Cloth *cloth;
ClothVertex *verts;
MFace *mfaces;
float co[12];
@@ -198,7 +198,7 @@ BVHTree *bvhtree_build_from_cloth (ClothModifierData *clmd, float epsilon)
{
unsigned int i;
BVHTree *bvhtree;
- Cloth *cloth = clmd->clothObject;
+ Cloth *cloth;
ClothVertex *verts;
MFace *mfaces;
float co[12];
@@ -787,15 +787,14 @@ static void cloth_apply_vgroup ( ClothModifierData *clmd, DerivedMesh *dm )
int j = 0;
MDeformVert *dvert = NULL;
Cloth *clothObj = NULL;
- int numverts = dm->getNumVerts ( dm );
+ int numverts;
float goalfac = 0;
ClothVertex *verts = NULL;
+ if (!clmd || !dm) return;
+
clothObj = clmd->clothObject;
- if ( !dm )
- return;
-
numverts = dm->getNumVerts ( dm );
verts = clothObj->verts;
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index 25fc7bd3b4f..059687030cb 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -3431,6 +3431,8 @@ void copy_constraints (ListBase *dst, ListBase *src)
/* make a new copy of the constraint's data */
con->data = MEM_dupallocN(con->data);
+ id_us_plus((ID *)con->ipo);
+
/* only do specific constraints if required */
if (cti && cti->copy_data)
cti->copy_data(con, srccon);
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 9d2830983e1..ae541365b1e 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -38,6 +38,7 @@
#include "RNA_access.h"
#include "BLI_listbase.h"
+#include "BLI_string.h"
#include "BKE_context.h"
#include "BKE_main.h"
@@ -58,6 +59,7 @@ struct bContext {
struct ScrArea *area;
struct ARegion *region;
struct ARegion *menu;
+ struct bContextStore *store;
} wm;
/* data context */
@@ -97,6 +99,69 @@ void CTX_free(bContext *C)
MEM_freeN(C);
}
+/* store */
+
+bContextStore *CTX_store_add(ListBase *contexts, char *name, PointerRNA *ptr)
+{
+ bContextStoreEntry *entry;
+ bContextStore *ctx, *lastctx;
+
+ /* ensure we have a context to put the entry in, if it was already used
+ * we have to copy the context to ensure */
+ ctx= contexts->last;
+
+ if(!ctx || ctx->used) {
+ if(ctx) {
+ lastctx= ctx;
+ ctx= MEM_dupallocN(lastctx);
+ BLI_duplicatelist(&ctx->entries, &lastctx->entries);
+ }
+ else
+ ctx= MEM_callocN(sizeof(bContextStore), "bContextStore");
+
+ BLI_addtail(contexts, ctx);
+ }
+
+ entry= MEM_callocN(sizeof(bContextStoreEntry), "bContextStoreEntry");
+ BLI_strncpy(entry->name, name, sizeof(entry->name));
+ entry->ptr= *ptr;
+
+ BLI_addtail(&ctx->entries, entry);
+
+ return ctx;
+}
+
+void CTX_store_set(bContext *C, bContextStore *store)
+{
+ C->wm.store= store;
+}
+
+bContextStore *CTX_store_copy(bContextStore *store)
+{
+ bContextStore *ctx;
+
+ ctx= MEM_dupallocN(store);
+ BLI_duplicatelist(&ctx->entries, &store->entries);
+
+ return ctx;
+}
+
+void CTX_store_free(bContextStore *store)
+{
+ BLI_freelistN(&store->entries);
+ MEM_freeN(store);
+}
+
+void CTX_store_free_list(ListBase *contexts)
+{
+ bContextStore *ctx;
+
+ while((ctx= contexts->first)) {
+ BLI_remlink(contexts, ctx);
+ CTX_store_free(ctx);
+ }
+}
+
/* window manager context */
wmWindowManager *CTX_wm_manager(const bContext *C)
@@ -225,19 +290,31 @@ static int ctx_data_get(bContext *C, const char *member, bContextDataResult *res
/* we check recursion to ensure that we do not get infinite
* loops requesting data from ourselfs in a context callback */
- if(!done && recursion < 1 && C->wm.region) {
+ if(!done && recursion < 1 && C->wm.store) {
+ bContextStoreEntry *entry;
+
C->data.recursion= 1;
+
+ for(entry=C->wm.store->entries.first; entry; entry=entry->next) {
+ if(strcmp(entry->name, member) == 0) {
+ result->ptr= entry->ptr;
+ done= 1;
+ }
+ }
+ }
+ if(!done && recursion < 2 && C->wm.region) {
+ C->data.recursion= 2;
if(C->wm.region->type && C->wm.region->type->context)
done= C->wm.region->type->context(C, member, result);
}
- if(!done && recursion < 2 && C->wm.area) {
- C->data.recursion= 2;
+ if(!done && recursion < 3 && C->wm.area) {
+ C->data.recursion= 3;
if(C->wm.area->type && C->wm.area->type->context)
done= C->wm.area->type->context(C, member, result);
}
- if(!done && recursion < 3 && C->wm.screen) {
+ if(!done && recursion < 4 && C->wm.screen) {
bContextDataCallback cb= C->wm.screen->context;
- C->data.recursion= 3;
+ C->data.recursion= 4;
if(cb)
done= cb(C, member, result);
}
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 6b8234dc381..64e5a136b93 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -33,7 +33,7 @@
*/
#include "BKE_customdata.h"
-
+#include "BKE_utildefines.h" // CLAMP
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
#include "BLI_linklist.h"
@@ -574,6 +574,14 @@ static void layerInterp_mloopcol(void **sources, float *weights,
col.b += src->b * weight;
}
}
+
+ /* Subdivide smooth or fractal can cause problems without clamping
+ * although weights should also not cause this situation */
+ CLAMP(col.a, 0.0f, 255.0f);
+ CLAMP(col.r, 0.0f, 255.0f);
+ CLAMP(col.g, 0.0f, 255.0f);
+ CLAMP(col.b, 0.0f, 255.0f);
+
mc->a = (int)col.a;
mc->r = (int)col.r;
mc->g = (int)col.g;
@@ -649,6 +657,14 @@ static void layerInterp_mcol(void **sources, float *weights,
}
for(j = 0; j < 4; ++j) {
+
+ /* Subdivide smooth or fractal can cause problems without clamping
+ * although weights should also not cause this situation */
+ CLAMP(col[j].a, 0.0f, 255.0f);
+ CLAMP(col[j].r, 0.0f, 255.0f);
+ CLAMP(col[j].g, 0.0f, 255.0f);
+ CLAMP(col[j].b, 0.0f, 255.0f);
+
mc[j].a = (int)col[j].a;
mc[j].r = (int)col[j].r;
mc[j].g = (int)col[j].g;
@@ -789,7 +805,7 @@ void CustomData_merge(const struct CustomData *source, struct CustomData *dest,
number++;
if(layer->flag & CD_FLAG_NOCOPY) continue;
- else if(!(mask & (1 << type))) continue;
+ else if(!((int)mask & (int)(1 << (int)type))) continue;
else if(number < CustomData_number_of_layers(dest, type)) continue;
if((alloctype == CD_ASSIGN) && (layer->flag & CD_FLAG_NOFREE))
@@ -1307,7 +1323,7 @@ void CustomData_set_only_copy(const struct CustomData *data,
int i;
for(i = 0; i < data->totlayer; ++i)
- if(!(mask & (1 << data->layers[i].type)))
+ if(!((int)mask & (int)(1 << (int)data->layers[i].type)))
data->layers[i].flag |= CD_FLAG_NOCOPY;
}
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 4d06f8b72d9..b6525cd936f 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -940,7 +940,7 @@ void filldisplist(ListBase *dispbase, ListBase *to)
DispList *dlnew=0, *dl;
float *f1;
int colnr=0, charidx=0, cont=1, tot, a, *index;
- long totvert;
+ intptr_t totvert;
if(dispbase==0) return;
if(dispbase->first==0) return;
@@ -1256,7 +1256,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl
originalVerts = MEM_dupallocN(deformedVerts);
}
- mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
+ mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, forRender, editmode);
if (md==preTesselatePoint)
break;
@@ -1317,7 +1317,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
fp+= offs;
}
- mti->deformVerts(md, ob, NULL, (float(*)[3]) allverts, totvert);
+ mti->deformVerts(md, ob, NULL, (float(*)[3]) allverts, totvert, forRender, editmode);
fp= allverts;
for (dl=dispbase->first; dl; dl=dl->next) {
@@ -1329,7 +1329,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
}
else {
for (dl=dispbase->first; dl; dl=dl->next) {
- mti->deformVerts(md, ob, NULL, (float(*)[3]) dl->verts, (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr);
+ mti->deformVerts(md, ob, NULL, (float(*)[3]) dl->verts, (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr, forRender, editmode);
}
}
}
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index 077a0c437d4..9858025af5a 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -79,7 +79,6 @@
#include "BKE_screen.h"
#include "BKE_utildefines.h"
-#include "PIL_time.h"
#include "RE_render_ext.h"
/* fluid sim particle import */
@@ -162,8 +161,7 @@ static void add_to_effectorcache(ListBase *lb, Scene *scene, Object *ob, Object
if(pd->forcefield == PFIELD_WIND)
{
- pd->rng = rng_new(1);
- rng_srandom(pd->rng, (unsigned int)(ceil(PIL_check_seconds_timer()))); // use better seed
+ pd->rng = rng_new(pd->seed);
}
ec= MEM_callocN(sizeof(pEffectorCache), "effector cache");
@@ -287,14 +285,14 @@ static float eff_calc_visibility(Scene *scene, Object *ob, float *co, float *dir
// noise function for wind e.g.
static float wind_func(struct RNG *rng, float strength)
{
- int random = (rng_getInt(rng)+1) % 65535; // max 2357
+ int random = (rng_getInt(rng)+1) % 128; // max 2357
float force = rng_getFloat(rng) + 1.0f;
float ret;
float sign = 0;
- sign = (random > 32000.0) ? 1.0: -1.0; // dividing by 2 is not giving equal sign distribution
+ sign = ((float)random > 64.0) ? 1.0: -1.0; // dividing by 2 is not giving equal sign distribution
- ret = sign*((float)random / force)*strength/65535.0f;
+ ret = sign*((float)random / force)*strength/128.0f;
return ret;
}
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c
index 9c58844372f..0afbbead2c6 100644
--- a/source/blender/blenkernel/intern/exotic.c
+++ b/source/blender/blenkernel/intern/exotic.c
@@ -944,7 +944,7 @@ static int iv_finddata(struct IvNode *iv, char *field, int fieldnr)
float *fp;
int len, stackcount, skipdata=0;
char *cpa, terminator, str[64];
- long i;
+ intptr_t i;
len= strlen(field);
@@ -2397,7 +2397,7 @@ static void write_videoscape_mesh(Scene *scene, Object *ob, char *str)
unsigned int kleur[32];
float co[3];
int a;
- long tot;
+ intptr_t tot;
char *cp;
if(ob && ob->type==OB_MESH);
@@ -2447,17 +2447,17 @@ static void write_videoscape_mesh(Scene *scene, Object *ob, char *str)
if(evl->v4==0) {
fprintf(fp, "3 %ld %ld %ld 0x%x\n",
- (long int) evl->v1->tmp.l,
- (long int) evl->v2->tmp.l,
- (long int) evl->v3->tmp.l,
+ (intptr_t) evl->v1->tmp.l,
+ (intptr_t) evl->v2->tmp.l,
+ (intptr_t) evl->v3->tmp.l,
kleur[evl->mat_nr]);
}
else {
fprintf(fp, "4 %ld %ld %ld %ld 0x%x\n",
- (long int) evl->v1->tmp.l,
- (long int) evl->v2->tmp.l,
- (long int) evl->v3->tmp.l,
- (long int) evl->v4->tmp.l,
+ (intptr_t) evl->v1->tmp.l,
+ (intptr_t) evl->v2->tmp.l,
+ (intptr_t) evl->v3->tmp.l,
+ (intptr_t) evl->v4->tmp.l,
kleur[evl->mat_nr]);
}
evl= evl->next;
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index fed5ffc2ebd..ad8115ba9aa 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -164,7 +164,7 @@ FCurve *list_find_fcurve (ListBase *list, const char rna_path[], const int array
/* check paths of curves, then array indices... */
for (fcu= list->first; fcu; fcu= fcu->next) {
/* simple string-compare (this assumes that they have the same root...) */
- if (strcmp(fcu->rna_path, rna_path) == 0) {
+ if (fcu->rna_path && !strcmp(fcu->rna_path, rna_path)) {
/* now check indicies */
if (fcu->array_index == array_index)
return fcu;
@@ -1048,17 +1048,22 @@ static float fcurve_eval_keyframes (FCurve *fcu, BezTriple *bezts, float evaltim
lastbezt= prevbezt + a;
/* evaluation time at or past endpoints? */
- if (prevbezt->vec[1][0] >= evaltime) {
+ if (prevbezt->vec[1][0] >= evaltime)
+ {
/* before or on first keyframe */
- if ((fcu->extend == FCURVE_EXTRAPOLATE_LINEAR) && (prevbezt->ipo != BEZT_IPO_CONST)) {
+ if ( (fcu->extend == FCURVE_EXTRAPOLATE_LINEAR) && (prevbezt->ipo != BEZT_IPO_CONST) &&
+ !(fcu->flag & FCURVE_DISCRETE_VALUES) )
+ {
/* linear or bezier interpolation */
- if (prevbezt->ipo==BEZT_IPO_LIN) {
+ if (prevbezt->ipo==BEZT_IPO_LIN)
+ {
/* Use the next center point instead of our own handle for
* linear interpolated extrapolate
*/
if (fcu->totvert == 1)
cvalue= prevbezt->vec[1][1];
- else {
+ else
+ {
bezt = prevbezt+1;
dx= prevbezt->vec[1][0] - evaltime;
fac= bezt->vec[1][0] - prevbezt->vec[1][0];
@@ -1072,7 +1077,8 @@ static float fcurve_eval_keyframes (FCurve *fcu, BezTriple *bezts, float evaltim
cvalue= prevbezt->vec[1][1];
}
}
- else {
+ else
+ {
/* Use the first handle (earlier) of first BezTriple to calculate the
* gradient and thus the value of the curve at evaltime
*/
@@ -1088,24 +1094,30 @@ static float fcurve_eval_keyframes (FCurve *fcu, BezTriple *bezts, float evaltim
cvalue= prevbezt->vec[1][1];
}
}
- else {
+ else
+ {
/* constant (BEZT_IPO_HORIZ) extrapolation or constant interpolation,
* so just extend first keyframe's value
*/
cvalue= prevbezt->vec[1][1];
}
}
- else if (lastbezt->vec[1][0] <= evaltime) {
+ else if (lastbezt->vec[1][0] <= evaltime)
+ {
/* after or on last keyframe */
- if ((fcu->extend == FCURVE_EXTRAPOLATE_LINEAR) && (lastbezt->ipo != BEZT_IPO_CONST)) {
+ if ( (fcu->extend == FCURVE_EXTRAPOLATE_LINEAR) && (lastbezt->ipo != BEZT_IPO_CONST) &&
+ !(fcu->flag & FCURVE_DISCRETE_VALUES) )
+ {
/* linear or bezier interpolation */
- if (lastbezt->ipo==BEZT_IPO_LIN) {
+ if (lastbezt->ipo==BEZT_IPO_LIN)
+ {
/* Use the next center point instead of our own handle for
* linear interpolated extrapolate
*/
if (fcu->totvert == 1)
cvalue= lastbezt->vec[1][1];
- else {
+ else
+ {
prevbezt = lastbezt - 1;
dx= evaltime - lastbezt->vec[1][0];
fac= lastbezt->vec[1][0] - prevbezt->vec[1][0];
@@ -1119,7 +1131,8 @@ static float fcurve_eval_keyframes (FCurve *fcu, BezTriple *bezts, float evaltim
cvalue= lastbezt->vec[1][1];
}
}
- else {
+ else
+ {
/* Use the gradient of the second handle (later) of last BezTriple to calculate the
* gradient and thus the value of the curve at evaltime
*/
@@ -1135,24 +1148,30 @@ static float fcurve_eval_keyframes (FCurve *fcu, BezTriple *bezts, float evaltim
cvalue= lastbezt->vec[1][1];
}
}
- else {
+ else
+ {
/* constant (BEZT_IPO_HORIZ) extrapolation or constant interpolation,
* so just extend last keyframe's value
*/
cvalue= lastbezt->vec[1][1];
}
}
- else {
+ else
+ {
/* evaltime occurs somewhere in the middle of the curve */
- for (a=0; prevbezt && bezt && (a < fcu->totvert-1); a++, prevbezt=bezt, bezt++) {
+ for (a=0; prevbezt && bezt && (a < fcu->totvert-1); a++, prevbezt=bezt, bezt++)
+ {
/* evaltime occurs within the interval defined by these two keyframes */
- if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime)) {
+ if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime))
+ {
/* value depends on interpolation mode */
- if (prevbezt->ipo == BEZT_IPO_CONST) {
+ if ((prevbezt->ipo == BEZT_IPO_CONST) || (fcu->flag & FCURVE_DISCRETE_VALUES))
+ {
/* constant (evaltime not relevant, so no interpolation needed) */
cvalue= prevbezt->vec[1][1];
}
- else if (prevbezt->ipo == BEZT_IPO_LIN) {
+ else if (prevbezt->ipo == BEZT_IPO_LIN)
+ {
/* linear - interpolate between values of the two keyframes */
fac= bezt->vec[1][0] - prevbezt->vec[1][0];
@@ -1164,7 +1183,8 @@ static float fcurve_eval_keyframes (FCurve *fcu, BezTriple *bezts, float evaltim
else
cvalue= prevbezt->vec[1][1];
}
- else {
+ else
+ {
/* bezier interpolation */
/* v1,v2 are the first keyframe and its 2nd handle */
v1[0]= prevbezt->vec[1][0];
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index b94652eb7c3..c3cf6e06c09 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -1144,14 +1144,12 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode)
ct= chartransdata;
if (cu->sepchar==0) {
for (i= 0; i<slen; i++) {
- cha = (unsigned long) mem[i];
- info = &(custrinfo[i]);
-
+ cha = (uintptr_t) mem[i];
+ info = &(cu->strinfo[i]);
if (info->mat_nr > (ob->totcol)) {
/* printf("Error: Illegal material index (%d) in text object, setting to 0\n", info->mat_nr); */
info->mat_nr = 0;
}
-
// We do not want to see any character for \n or \r
if(cha != '\n' && cha != '\r')
buildchar(cu, cha, info, ct->xof, ct->yof, ct->rot, i);
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 629f34518b9..8eef9984c92 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -433,7 +433,7 @@ static ImBuf *add_ibuf_size(int width, int height, char *name, int floatbuf, sho
unsigned char *rect= NULL;
float *rect_float= NULL;
int x, y;
- int checkerwidth=21, dark=1;
+ int checkerwidth=32, dark=1;
if (floatbuf) {
ibuf= IMB_allocImBuf(width, height, 24, IB_rectfloat, 0);
@@ -668,6 +668,11 @@ static uintptr_t image_mem_size(Image *ima)
uintptr_t size = 0;
size= 0;
+
+ /* viewers have memory depending on other rules, has no valid rect pointer */
+ if(ima->source==IMA_SRC_VIEWER)
+ return 0;
+
for(ibuf= ima->ibufs.first; ibuf; ibuf= ibuf->next) {
if(ibuf->rect) size += MEM_allocN_len(ibuf->rect);
else if(ibuf->rect_float) size += MEM_allocN_len(ibuf->rect_float);
@@ -1052,7 +1057,7 @@ static void stampdata(Scene *scene, StampData *stamp_data, int do_prefix)
}
if (scene->r.stamp & R_STAMP_SEQSTRIP) {
- Sequence *seq= NULL; //XXX = get_forground_frame_seq(scene->r.cfra);
+ Sequence *seq= NULL; //XXX = get_foreground_frame_seq(scene->r.cfra);
if (seq) strcpy(text, seq->name+2);
else strcpy(text, "<none>");
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 6a01311f6fc..8cbf25eaeed 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -1169,7 +1169,7 @@ static void icu_to_fcurves (ListBase *groups, ListBase *list, IpoCurve *icu, cha
if (G.f & G_DEBUG) printf("\tconvert bitflag ipocurve, totbits = %d \n", totbits);
/* add the 'only int values' flag */
- fcu->flag |= FCURVE_INT_VALUES;
+ fcu->flag |= (FCURVE_INT_VALUES|FCURVE_DISCRETE_VALUES);
/* for each bit we have to remap + check for:
* 1) we need to make copy the existing F-Curve data (fcu -> fcurve),
@@ -1741,3 +1741,4 @@ void do_versions_ipos_to_animato(Main *main)
printf("INFO: Animato convert done \n"); // xxx debug
}
+
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index 6e5f7c82aed..5cf52d09314 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -924,7 +924,7 @@ void lattice_calc_modifiers(Scene *scene, Object *ob)
if (mti->type!=eModifierTypeType_OnlyDeform) continue;
if (!vertexCos) vertexCos = lattice_getVertexCos(ob, &numVerts);
- mti->deformVerts(md, ob, NULL, vertexCos, numVerts);
+ mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0);
}
/* always displist to make this work like derivedmesh */
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index d0e4c1a15bc..90ab4e05d44 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -142,6 +142,12 @@ void id_us_plus(ID *id)
}
}
+void id_us_min(ID *id)
+{
+ if(id)
+ id->us--;
+}
+
ListBase *wich_libbase(Main *mainlib, short type)
{
switch( type ) {
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index 3e881f2d871..74d56e81a87 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -296,7 +296,10 @@ Object *find_basis_mball(Scene *scene, Object *basis)
splitIDname(basis->id.name+2, basisname, &basisnr);
totelem= 0;
- next_object(scene, 0, 0, 0);
+ /* XXX recursion check, see scene.c, just too simple code this next_object() */
+ if(F_ERROR==next_object(scene, 0, 0, 0))
+ return NULL;
+
while(next_object(scene, 1, &base, &ob)) {
if (ob->type==OB_MBALL) {
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 5ce0552636c..ed094c2b6ba 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -188,7 +188,7 @@ static void curveModifier_updateDepgraph(
static void curveModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
CurveModifierData *cmd = (CurveModifierData*) md;
@@ -204,7 +204,7 @@ static void curveModifier_deformVertsEM(
if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
- curveModifier_deformVerts(md, ob, dm, vertexCos, numVerts);
+ curveModifier_deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
if(!derivedData) dm->release(dm);
}
@@ -277,7 +277,7 @@ static void modifier_vgroup_cache(ModifierData *md, float (*vertexCos)[3])
static void latticeModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
LatticeModifierData *lmd = (LatticeModifierData*) md;
@@ -296,7 +296,7 @@ static void latticeModifier_deformVertsEM(
if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
- latticeModifier_deformVerts(md, ob, dm, vertexCos, numVerts);
+ latticeModifier_deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
if(!derivedData) dm->release(dm);
}
@@ -3697,7 +3697,7 @@ static void displaceModifier_do(
static void displaceModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm;
@@ -4069,17 +4069,15 @@ static void decimateModifier_copyData(ModifierData *md, ModifierData *target)
tdmd->percent = dmd->percent;
}
-//XXX
-#if 0
static DerivedMesh *decimateModifier_applyModifier(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
int useRenderParams, int isFinalCalc)
{
- DecimateModifierData *dmd = (DecimateModifierData*) md;
+ // DecimateModifierData *dmd = (DecimateModifierData*) md;
DerivedMesh *dm = derivedData, *result = NULL;
MVert *mvert;
MFace *mface;
- LOD_Decimation_Info lod;
+ // LOD_Decimation_Info lod;
int totvert, totface;
int a, numTris;
@@ -4101,6 +4099,8 @@ static DerivedMesh *decimateModifier_applyModifier(
goto exit;
}
+ // XXX
+#if 0
lod.vertex_buffer= MEM_mallocN(3*sizeof(float)*totvert, "vertices");
lod.vertex_normal_buffer= MEM_mallocN(3*sizeof(float)*totvert, "normals");
lod.triangle_index_buffer= MEM_mallocN(3*sizeof(int)*numTris, "trias");
@@ -4185,11 +4185,14 @@ static DerivedMesh *decimateModifier_applyModifier(
MEM_freeN(lod.vertex_buffer);
MEM_freeN(lod.vertex_normal_buffer);
MEM_freeN(lod.triangle_index_buffer);
+#else
+ modifier_setError(md, "Modifier not working yet in 2.5.");
+ goto exit;
+#endif
exit:
return result;
}
-#endif
/* Smooth */
@@ -4379,7 +4382,7 @@ static void smoothModifier_do(
static void smoothModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm;
@@ -4959,7 +4962,7 @@ static void castModifier_cuboid_do(
static void castModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm = derivedData;
CastModifierData *cmd = (CastModifierData *)md;
@@ -5362,7 +5365,7 @@ static void waveModifier_do(WaveModifierData *md,
static void waveModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm;
WaveModifierData *wmd = (WaveModifierData *)md;
@@ -5467,7 +5470,7 @@ static void armatureModifier_updateDepgraph(
static void armatureModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
ArmatureModifierData *amd = (ArmatureModifierData*) md;
@@ -5588,7 +5591,7 @@ static void hookModifier_updateDepgraph(ModifierData *md, DagForest *forest, Sce
static void hookModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
HookModifierData *hmd = (HookModifierData*) md;
float vec[3], mat[4][4];
@@ -5709,7 +5712,7 @@ static void hookModifier_deformVertsEM(
if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data);
- hookModifier_deformVerts(md, ob, derivedData, vertexCos, numVerts);
+ hookModifier_deformVerts(md, ob, derivedData, vertexCos, numVerts, 0, 0);
if(!derivedData) dm->release(dm);
}
@@ -5718,7 +5721,7 @@ static void hookModifier_deformVertsEM(
static void softbodyModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
sbObjectStep(md->scene, ob, (float)md->scene->r.cfra, vertexCos, numVerts);
}
@@ -5906,7 +5909,7 @@ static int collisionModifier_dependsOnTime(ModifierData *md)
static void collisionModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
CollisionModifierData *collmd = (CollisionModifierData*) md;
DerivedMesh *dm = NULL;
@@ -6068,7 +6071,7 @@ static int surfaceModifier_dependsOnTime(ModifierData *md)
static void surfaceModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
SurfaceModifierData *surmd = (SurfaceModifierData*) md;
unsigned int numverts = 0, i = 0;
@@ -6273,10 +6276,52 @@ static int is_last_displist(Object *ob)
return 0;
}
+
+static DerivedMesh *get_original_dm(Scene *scene, Object *ob, float (*vertexCos)[3], int orco)
+{
+ DerivedMesh *dm= NULL;
+
+ if(ob->type==OB_MESH) {
+ dm = CDDM_from_mesh((Mesh*)(ob->data), ob);
+
+ if(vertexCos) {
+ CDDM_apply_vert_coords(dm, vertexCos);
+ //CDDM_calc_normals(dm);
+ }
+
+ if(orco)
+ DM_add_vert_layer(dm, CD_ORCO, CD_ASSIGN, get_mesh_orco_verts(ob));
+ }
+ else if(ELEM3(ob->type,OB_FONT,OB_CURVE,OB_SURF)) {
+ Object *tmpobj;
+ Curve *tmpcu;
+
+ if(is_last_displist(ob)) {
+ /* copies object and modifiers (but not the data) */
+ tmpobj= copy_object(ob);
+ tmpcu = (Curve *)tmpobj->data;
+ tmpcu->id.us--;
+
+ /* copies the data */
+ tmpobj->data = copy_curve((Curve *) ob->data);
+
+ makeDispListCurveTypes(scene, tmpobj, 1);
+ nurbs_to_mesh(tmpobj);
+
+ dm = CDDM_from_mesh((Mesh*)(tmpobj->data), tmpobj);
+ //CDDM_calc_normals(dm);
+
+ free_libblock_us(&G.main->object, tmpobj);
+ }
+ }
+
+ return dm;
+}
+
/* saves the current emitter state for a particle system and calculates particles */
static void particleSystemModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm = derivedData;
ParticleSystemModifierData *psmd= (ParticleSystemModifierData*) md;
@@ -6291,43 +6336,13 @@ static void particleSystemModifier_deformVerts(
if(!psys_check_enabled(ob, psys))
return;
- if(dm==0){
- if(ob->type==OB_MESH){
- dm = CDDM_from_mesh((Mesh*)(ob->data), ob);
-
- CDDM_apply_vert_coords(dm, vertexCos);
- //CDDM_calc_normals(dm);
-
- DM_add_vert_layer(dm, CD_ORCO, CD_ASSIGN, get_mesh_orco_verts(ob));
-
- needsFree=1;
- }
- else if(ELEM3(ob->type,OB_FONT,OB_CURVE,OB_SURF)){
- Object *tmpobj;
- Curve *tmpcu;
-
- if(is_last_displist(ob)){
- /* copies object and modifiers (but not the data) */
- tmpobj= copy_object( ob );
- tmpcu = (Curve *)tmpobj->data;
- tmpcu->id.us--;
+ if(dm==0) {
+ dm= get_original_dm(md->scene, ob, vertexCos, 1);
- /* copies the data */
- tmpobj->data = copy_curve( (Curve *) ob->data );
-
- makeDispListCurveTypes(md->scene, tmpobj, 1 );
- nurbs_to_mesh( tmpobj );
-
- dm = CDDM_from_mesh((Mesh*)(tmpobj->data), tmpobj);
- //CDDM_calc_normals(dm);
-
- free_libblock_us( &G.main->object, tmpobj );
+ if(!dm)
+ return;
- needsFree=1;
- }
- else return;
- }
- else return;
+ needsFree= 1;
}
/* clear old dm */
@@ -6355,8 +6370,7 @@ static void particleSystemModifier_deformVerts(
psmd->dm->getNumTessFaces(psmd->dm)!=psmd->totdmface){
/* in file read dm hasn't really changed but just wasn't saved in file */
- psys->recalc |= PSYS_RECALC_HAIR;
- psys->recalc |= PSYS_DISTR;
+ psys->recalc |= PSYS_RECALC_RESET;
psmd->flag |= eParticleSystemFlag_DM_changed;
psmd->totdmvert= psmd->dm->getNumVerts(psmd->dm);
@@ -7669,6 +7683,14 @@ static void meshdeformModifier_do(
}
else
cagedm= mmd->object->derivedFinal;
+
+ /* if we don't have one computed, use derivedmesh from data
+ * without any modifiers */
+ if(!cagedm) {
+ cagedm= get_original_dm(md->scene, mmd->object, NULL, 0);
+ if(cagedm)
+ cagedm->needsFree= 1;
+ }
if(!cagedm)
return;
@@ -7799,7 +7821,7 @@ static void meshdeformModifier_do(
static void meshdeformModifier_deformVerts(
ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts)
+ float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm;
@@ -7878,6 +7900,8 @@ static DerivedMesh *multiresModifier_applyModifier(ModifierData *md, Object *ob,
}
CDDM_calc_normals(final);
+ MultiresDM_mark_as_modified(final);
+
MEM_freeN(mmd->undo_verts);
mmd->undo_signal = 0;
mmd->undo_verts = NULL;
@@ -7947,7 +7971,7 @@ static void shrinkwrapModifier_foreachObjectLink(ModifierData *md, Object *ob, O
walk(userData, ob, &smd->auxTarget);
}
-static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
+static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm = NULL;
CustomDataMask dataMask = shrinkwrapModifier_requiredDataMask(md);
@@ -7960,7 +7984,7 @@ static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, Derived
else if(ob->type==OB_LATTICE) dm = NULL;
else return;
- if(dm != NULL && (dataMask & CD_MVERT))
+ if(dm != NULL && (dataMask & (1<<CD_MVERT)))
{
CDDM_apply_vert_coords(dm, vertexCos);
CDDM_calc_normals(dm);
@@ -7985,7 +8009,7 @@ static void shrinkwrapModifier_deformVertsEM(ModifierData *md, Object *ob, BMEdi
else if(ob->type==OB_LATTICE) dm = NULL;
else return;
- if(dm != NULL && (dataMask & CD_MVERT))
+ if(dm != NULL && (dataMask & (1<<CD_MVERT)))
{
CDDM_apply_vert_coords(dm, vertexCos);
CDDM_calc_normals(dm);
@@ -8061,7 +8085,7 @@ static void simpledeformModifier_updateDepgraph(ModifierData *md, DagForest *for
dag_add_relation(forest, dag_get_node(forest, smd->origin), obNode, DAG_RL_OB_DATA, "SimpleDeform Modifier");
}
-static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
+static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
{
DerivedMesh *dm = NULL;
CustomDataMask dataMask = simpledeformModifier_requiredDataMask(md);
@@ -8284,7 +8308,7 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti->flags = eModifierTypeFlag_AcceptsMesh;
mti->initData = decimateModifier_initData;
mti->copyData = decimateModifier_copyData;
- //XXX mti->applyModifier = decimateModifier_applyModifier;
+ mti->applyModifier = decimateModifier_applyModifier;
mti = INIT_TYPE(Smooth);
mti->type = eModifierTypeType_OnlyDeform;
@@ -8915,8 +8939,10 @@ void modifier_freeTemporaryData(ModifierData *md)
if(md->type == eModifierType_Armature) {
ArmatureModifierData *amd= (ArmatureModifierData*)md;
- if(amd->prevCos)
+ if(amd->prevCos) {
MEM_freeN(amd->prevCos);
+ amd->prevCos= NULL;
+ }
}
}
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 6b935c90c25..2a2b7e53722 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -59,16 +59,26 @@ static const int multires_max_levels = 13;
static const int multires_quad_tot[] = {4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409};
static const int multires_side_tot[] = {2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097};
-int multiresModifier_switch_level(Object *ob, const int distance)
+MultiresModifierData *find_multires_modifier(Object *ob)
{
- ModifierData *md = NULL;
+ ModifierData *md;
MultiresModifierData *mmd = NULL;
for(md = ob->modifiers.first; md; md = md->next) {
- if(md->type == eModifierType_Multires)
+ if(md->type == eModifierType_Multires) {
mmd = (MultiresModifierData*)md;
+ break;
+ }
}
+ return mmd;
+
+}
+
+int multiresModifier_switch_level(Object *ob, const int distance)
+{
+ MultiresModifierData *mmd = find_multires_modifier(ob);
+
if(mmd) {
mmd->lvl += distance;
if(mmd->lvl < 1) mmd->lvl = 1;
@@ -155,7 +165,7 @@ int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src
for(i = 0; i < src_me->totvert; ++i)
VecCopyf(mvert[i].co, src_me->mvert[i].co);
mrdm->needsFree = 1;
- *MultiresDM_get_flags(mrdm) |= MULTIRES_DM_UPDATE_ALWAYS;
+ MultiresDM_mark_as_modified(mrdm);
mrdm->release(mrdm);
dst->derivedFinal = NULL;
@@ -387,7 +397,7 @@ static void multires_subdisp(DerivedMesh *orig, Mesh *me, DerivedMesh *final, in
final->needsFree = 1;
final->release(final);
mrdm->needsFree = 1;
- *MultiresDM_get_flags(mrdm) |= MULTIRES_DM_UPDATE_ALWAYS;
+ MultiresDM_mark_as_modified(mrdm);
mrdm->release(mrdm);
}
@@ -465,7 +475,6 @@ void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int dista
final = multires_subdisp_pre(mrdm, distance, simple);
mrdm->needsFree = 1;
- *MultiresDM_get_flags(mrdm) |= MULTIRES_DM_UPDATE_BLOCK;
mrdm->release(mrdm);
}
@@ -1158,8 +1167,6 @@ static void multiresModifier_update(DerivedMesh *dm)
Mesh *me;
MDisps *mdisps;
- if(!(G.f & G_SCULPTMODE) && !(*MultiresDM_get_flags(dm) & MULTIRES_DM_UPDATE_ALWAYS)) return;
-
me = MultiresDM_get_mesh(dm);
mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS);
@@ -1181,7 +1188,6 @@ static void multiresModifier_update(DerivedMesh *dm)
mmd.totlvl = totlvl;
mmd.lvl = lvl;
subco_dm = multires_dm_create_from_derived(&mmd, orig, me, 0, 0);
- *MultiresDM_get_flags(subco_dm) |= MULTIRES_DM_UPDATE_BLOCK;
cur_lvl_orig_verts = CDDM_get_verts(subco_dm);
/* Subtract the original vertex cos from the new vertex cos */
@@ -1202,6 +1208,13 @@ static void multiresModifier_update(DerivedMesh *dm)
}
}
+void multires_mark_as_modified(struct Object *ob)
+{
+ if(ob && ob->derivedFinal) {
+ MultiresDM_mark_as_modified(ob->derivedFinal);
+ }
+}
+
void multires_force_update(Object *ob)
{
if(ob && ob->derivedFinal) {
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 941e73982a5..a83b8817580 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -1055,6 +1055,14 @@ bNodeTree *ntreeAddTree(int type)
ntree->type= type;
ntree->alltypes.first = NULL;
ntree->alltypes.last = NULL;
+
+ /* this helps RNA identify ID pointers as nodetree */
+ if(ntree->type==NTREE_SHADER)
+ BLI_strncpy(ntree->id.name, "NTShader Nodetree", sizeof(ntree->id.name));
+ else if(ntree->type==NTREE_COMPOSIT)
+ BLI_strncpy(ntree->id.name, "NTComposit Nodetree", sizeof(ntree->id.name));
+ else if(ntree->type==NTREE_TEXTURE)
+ BLI_strncpy(ntree->id.name, "NTTexture Nodetree", sizeof(ntree->id.name));
ntreeInitTypes(ntree);
return ntree;
@@ -1982,9 +1990,9 @@ static void group_tag_used_outputs(bNode *gnode, bNodeStack *stack)
}
}
+/* notes below are ancient! (ton) */
/* stack indices make sure all nodes only write in allocated data, for making it thread safe */
/* only root tree gets the stack, to enable instances to have own stack entries */
-/* only two threads now! */
/* per tree (and per group) unique indices are created */
/* the index_ext we need to be able to map from groups to the group-node own stack */
@@ -1999,14 +2007,9 @@ static bNodeThreadStack *ntreeGetThreadStack(bNodeTree *ntree, int thread)
ListBase *lb= &ntree->threadstack[thread];
bNodeThreadStack *nts;
- /* for material shading this is called quite a lot (perhaps too much locking unlocking)
- * however without locking we get bug #18058 - Campbell */
- BLI_lock_thread(LOCK_CUSTOM1);
-
for(nts=lb->first; nts; nts=nts->next) {
if(!nts->used) {
nts->used= 1;
- BLI_unlock_thread(LOCK_CUSTOM1);
return nts;
}
}
@@ -2014,7 +2017,7 @@ static bNodeThreadStack *ntreeGetThreadStack(bNodeTree *ntree, int thread)
nts->stack= MEM_dupallocN(ntree->stack);
nts->used= 1;
BLI_addtail(lb, nts);
- BLI_unlock_thread(LOCK_CUSTOM1);
+
return nts;
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 77775e431f3..a5ac6a7ca6c 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -978,6 +978,8 @@ Object *add_only_object(int type, char *name)
ob->anisotropicFriction[2] = 1.0f;
ob->gameflag= OB_PROP|OB_COLLISION;
ob->margin = 0.0;
+ /* ob->pad3 == Contact Processing Threshold */
+ ob->m_contactProcessingThreshold = 1.;
/* NT fluid sim defaults */
ob->fluidsimFlag = 0;
@@ -1132,6 +1134,9 @@ static void copy_object_pose(Object *obn, Object *ob)
* is changed to object->proxy_from when evaluating the driver. */
if(con->ipo && !con->ipo->id.lib) {
IpoCurve *icu;
+
+ con->ipo= copy_ipo(con->ipo);
+
for(icu= con->ipo->curve.first; icu; icu= icu->next) {
if(icu->driver && icu->driver->ob==ob)
icu->driver->ob= obn;
@@ -1321,6 +1326,18 @@ void make_local_object(Object *ob)
expand_local_object(ob);
}
+/* returns true if the Object data is a from an external blend file (libdata) */
+int object_data_is_libdata(Object *ob)
+{
+ if(!ob) return 0;
+ if(ob->proxy) return 0;
+ if(ob->id.lib) return 1;
+ if(!ob->data) return 0;
+ if(((ID *)ob->data)->lib) return 1;
+
+ return 0;
+}
+
/* *************** PROXY **************** */
/* when you make proxy, ensure the exposed layers are extern */
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 6029e798545..ab7f68dedd0 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -348,8 +348,19 @@ void free_hair(ParticleSystem *psys, int softbody)
}
void free_keyed_keys(ParticleSystem *psys)
{
- if(psys->particles && psys->particles->keys)
+ ParticleData *pa;
+ int i;
+
+ if(psys->particles && psys->particles->keys) {
MEM_freeN(psys->particles->keys);
+
+ for(i=0, pa=psys->particles; i<psys->totpart; i++, pa++) {
+ if(pa->keys) {
+ pa->keys= NULL;
+ pa->totkey= 0;
+ }
+ }
+ }
}
void free_child_path_cache(ParticleSystem *psys)
{
@@ -1739,12 +1750,12 @@ static void do_path_effectors(Scene *scene, Object *ob, ParticleSystem *psys, in
Normalize(force);
+ VECADDFAC(ca->co, (ca-1)->co, force, *length);
+
if(k < steps) {
VecSubf(vec, (ca+1)->co, ca->co);
*length = VecLength(vec);
}
-
- VECADDFAC(ca->co, (ca-1)->co, force, *length);
}
static int check_path_length(int k, ParticleCacheKey *keys, ParticleCacheKey *state, float max_length, float *cur_length, float length, float *dvec)
{
@@ -3052,42 +3063,22 @@ void make_local_particlesettings(ParticleSettings *part)
}
}
-/* should be integrated to depgraph signals */
-void psys_flush_settings(struct Scene *scene, ParticleSettings *part, int event, int hair_recalc)
+void psys_flush_particle_settings(Scene *scene, ParticleSettings *part, int recalc)
{
- Base *base;
- Object *ob, *tob;
+ Base *base = scene->base.first;
ParticleSystem *psys;
int flush;
- /* update all that have same particle settings */
- for(base = scene->base.first; base; base= base->next) {
- if(base->object->particlesystem.first) {
- ob=base->object;
- flush=0;
- for(psys=ob->particlesystem.first; psys; psys=psys->next){
- if(psys->part==part){
- psys->recalc |= event;
- if(hair_recalc)
- psys->recalc |= PSYS_RECALC_HAIR;
- flush++;
- }
- else if(psys->part->type==PART_REACTOR){
- ParticleSystem *tpsys;
- tob=psys->target_ob;
- if(tob==0)
- tob=ob;
- tpsys=BLI_findlink(&tob->particlesystem,psys->target_psys-1);
-
- if(tpsys && tpsys->part==part){
- psys->recalc |= event;
- flush++;
- }
- }
+ for(base = scene->base.first; base; base = base->next) {
+ flush = 0;
+ for(psys = base->object->particlesystem.first; psys; psys=psys->next) {
+ if(psys->part == part) {
+ psys->recalc |= recalc;
+ flush++;
}
- if(flush)
- DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
}
+ if(flush)
+ DAG_object_flush_update(scene, base->object, OB_RECALC_DATA);
}
}
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index caff933ecc0..c365f449801 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -196,8 +196,11 @@ static void realloc_particles(Object *ob, ParticleSystem *psys, int new_totpart)
if(psys->particles->keys)
MEM_freeN(psys->particles->keys);
- for(i=0, pa=psys->particles; i<totsaved; i++, pa++)
- if(pa->keys) pa->keys= NULL;
+ for(i=0, pa=psys->particles; i<psys->totpart; i++, pa++)
+ if(pa->keys) {
+ pa->keys= NULL;
+ pa->totkey= 0;
+ }
for(i=totsaved, pa=psys->particles+totsaved; i<psys->totpart; i++, pa++)
if(pa->hair) MEM_freeN(pa->hair);
@@ -2010,7 +2013,6 @@ static void set_keyed_keys(Scene *scene, Object *ob, ParticleSystem *psys)
Object *kob = ob;
ParticleSystem *kpsys = psys;
ParticleData *pa;
- ParticleKey state;
int totpart = psys->totpart, i, k, totkeys = psys->totkeyed + 1;
float prevtime, nexttime, keyedtime;
@@ -2034,10 +2036,11 @@ static void set_keyed_keys(Scene *scene, Object *ob, ParticleSystem *psys)
}
psys->flag &= ~PSYS_KEYED;
- state.time=-1.0;
for(k=0; k<totkeys; k++) {
for(i=0,pa=psys->particles; i<totpart; i++, pa++) {
+ (pa->keys + k)->time = -1.0; /* use current time */
+
if(kpsys->totpart > 0)
psys_get_particle_state(scene, kob, kpsys, i%kpsys->totpart, pa->keys + k, 1);
@@ -4173,10 +4176,10 @@ static void psys_update_path_cache(Scene *scene, Object *ob, ParticleSystemModif
ParticleEditSettings *pset=&scene->toolsettings->particle;
int distr=0,alloc=0;
- if((psys->part->childtype && psys->totchild != get_psys_tot_child(scene, psys)) || psys->recalc&PSYS_ALLOC)
+ if((psys->part->childtype && psys->totchild != get_psys_tot_child(scene, psys)) || psys->recalc&PSYS_RECALC_RESET)
alloc=1;
- if(alloc || psys->recalc&PSYS_DISTR || (psys->vgroup[PSYS_VG_DENSITY] && (G.f & G_WEIGHTPAINT)))
+ if(alloc || psys->recalc&PSYS_RECALC_RESET || (psys->vgroup[PSYS_VG_DENSITY] && (G.f & G_WEIGHTPAINT)))
distr=1;
if(distr){
@@ -4194,8 +4197,9 @@ static void psys_update_path_cache(Scene *scene, Object *ob, ParticleSystemModif
}
}
- if((part->type==PART_HAIR || psys->flag&PSYS_KEYED) && (psys_in_edit_mode(scene, psys)
- || (part->type==PART_HAIR || part->draw_as==PART_DRAW_PATH))){
+ if((part->type==PART_HAIR || psys->flag&PSYS_KEYED) && ( psys_in_edit_mode(scene, psys) || (part->type==PART_HAIR
+ || (part->ren_as == PART_DRAW_PATH && (part->draw_as == PART_DRAW_REND || psys->renderdata))))){
+
psys_cache_paths(scene, ob, psys, cfra, 0);
/* for render, child particle paths are computed on the fly */
@@ -4247,7 +4251,7 @@ static void hair_step(Scene *scene, Object *ob, ParticleSystemModifierData *psmd
pa->flag &= ~PARS_NO_DISP;
}
- if(psys->recalc & PSYS_DISTR)
+ if(psys->recalc & PSYS_RECALC_RESET)
/* need this for changing subsurf levels */
psys_calc_dmcache(ob, psmd->dm, psys);
@@ -4367,16 +4371,14 @@ void psys_changed_type(ParticleSystem *psys)
psys->flag &= ~PSYS_KEYED;
if(part->type == PART_HAIR) {
- part->draw_as = PART_DRAW_PATH;
- part->rotfrom = PART_ROT_IINCR;
- }
- else {
- free_hair(psys, 1);
+ if(ELEM4(part->ren_as, PART_DRAW_NOT, PART_DRAW_PATH, PART_DRAW_OB, PART_DRAW_GR)==0)
+ part->ren_as = PART_DRAW_PATH;
- if(part->draw_as == PART_DRAW_PATH)
- if(psys->part->phystype != PART_PHYS_KEYED)
- part->draw_as = PART_DRAW_DOT;
+ if(ELEM3(part->draw_as, PART_DRAW_NOT, PART_DRAW_REND, PART_DRAW_PATH)==0)
+ part->draw_as = PART_DRAW_REND;
}
+ else
+ free_hair(psys, 1);
psys->softflag= 0;
@@ -4574,7 +4576,7 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
init= 1;
}
- if(psys->recalc & PSYS_DISTR) {
+ if(psys->recalc & PSYS_RECALC_RESET) {
distr= 1;
init= 1;
}
@@ -4594,6 +4596,8 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
}
if(only_children_changed==0) {
+ free_keyed_keys(psys);
+
initialize_all_particles(ob, psys, psmd);
if(alloc)
@@ -4747,8 +4751,8 @@ static void psys_to_softbody(Scene *scene, Object *ob, ParticleSystem *psys)
static int hair_needs_recalc(ParticleSystem *psys)
{
if((psys->flag & PSYS_EDITED)==0 &&
- ((psys->flag & PSYS_HAIR_DONE)==0 || psys->recalc & PSYS_RECALC_HAIR)) {
- psys->recalc &= ~PSYS_RECALC_HAIR;
+ ((psys->flag & PSYS_HAIR_DONE)==0 || psys->recalc & PSYS_RECALC_REDO)) {
+ psys->recalc &= ~PSYS_RECALC_REDO;
return 1;
}
@@ -4778,6 +4782,9 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys)
if(!psmd->dm)
return;
+ if(psys->recalc & PSYS_RECALC_TYPE)
+ psys_changed_type(psys);
+
/* (re-)create hair */
if(psys->part->type==PART_HAIR && hair_needs_recalc(psys)) {
float hcfra=0.0f;
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 9c74014853d..b00755f7135 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -492,6 +492,8 @@ int BKE_ptcache_object_reset(Object *ob, int mode)
else
skip = 1;
}
+ else if((psys->recalc & PSYS_RECALC_RESET)==0)
+ skip = 1;
if(skip == 0) {
BKE_ptcache_id_from_particles(&pid, ob, psys);
diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c
index e8c6c5c199f..74d2347ec39 100644
--- a/source/blender/blenkernel/intern/sca.c
+++ b/source/blender/blenkernel/intern/sca.c
@@ -134,7 +134,7 @@ void init_sensor(bSensor *sens)
switch(sens->type) {
case SENS_ALWAYS:
- sens->pulse = 1;
+ sens->pulse = 0;
break;
case SENS_TOUCH:
sens->data= MEM_callocN(sizeof(bTouchSensor), "touchsens");
@@ -579,6 +579,10 @@ void set_sca_new_poins_ob(Object *ob)
bCameraActuator *ca= act->data;
ID_NEW(ca->ob);
}
+ else if(act->type==ACT_OBJECT) {
+ bObjectActuator *oa= act->data;
+ ID_NEW(oa->reference);
+ }
else if(act->type==ACT_SCENE) {
bSceneActuator *sca= act->data;
ID_NEW(sca->camera);
@@ -606,6 +610,7 @@ void sca_remove_ob_poin(Object *obt, Object *ob)
bMessageSensor *ms;
bActuator *act;
bCameraActuator *ca;
+ bObjectActuator *oa;
bSceneActuator *sa;
bEditObjectActuator *eoa;
bPropertyActuator *pa;
@@ -628,6 +633,10 @@ void sca_remove_ob_poin(Object *obt, Object *ob)
ca= act->data;
if(ca->ob==ob) ca->ob= NULL;
break;
+ case ACT_OBJECT:
+ oa= act->data;
+ if(oa->reference==ob) oa->reference= NULL;
+ break;
case ACT_PROPERTY:
pa= act->data;
if(pa->ob==ob) pa->ob= NULL;
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 5c936c3ab39..156bdae9b00 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -245,9 +245,9 @@ Scene *add_scene(char *name)
sce->r.stereomode = 1; // no stereo
sce->r.domeangle = 180;
sce->r.domemode = 1;
- sce->r.domesize = 1.0f;
sce->r.domeres = 4;
sce->r.domeresbuf = 1.0f;
+ sce->r.dometilt = 0;
sce->r.simplify_subsurf= 6;
sce->r.simplify_particles= 1.0f;
@@ -411,16 +411,25 @@ int next_object(Scene *scene, int val, Base **base, Object **ob)
{
static ListBase *duplilist= NULL;
static DupliObject *dupob;
- static int fase;
+ static int fase= F_START, in_next_object= 0;
int run_again=1;
/* init */
if(val==0) {
fase= F_START;
dupob= NULL;
+
+ /* XXX particle systems with metas+dupligroups call this recursively */
+ /* see bug #18725 */
+ if(in_next_object) {
+ printf("ERROR: MetaBall generation called recursively, not supported\n");
+
+ return F_ERROR;
+ }
}
else {
-
+ in_next_object= 1;
+
/* run_again is set when a duplilist has been ended */
while(run_again) {
run_again= 0;
@@ -502,6 +511,9 @@ int next_object(Scene *scene, int val, Base **base, Object **ob)
}
}
+ /* reset recursion test */
+ in_next_object= 0;
+
return fase;
}
@@ -723,4 +735,4 @@ void free_dome_warp_text(struct Text *txt)
scene->r.dometext = NULL;
scene = scene->id.next;
}
-} \ No newline at end of file
+}
diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c
index 121dfce4980..3365af36f8c 100644
--- a/source/blender/blenkernel/intern/sequence.c
+++ b/source/blender/blenkernel/intern/sequence.c
@@ -122,6 +122,14 @@ void new_tstripdata(Sequence *seq)
/* free */
+static void free_proxy_seq(Sequence *seq)
+{
+ if (seq->strip && seq->strip->proxy && seq->strip->proxy->anim) {
+ IMB_free_anim(seq->strip->proxy->anim);
+ seq->strip->proxy->anim = 0;
+ }
+}
+
void seq_free_strip(Strip *strip)
{
strip->us--;
@@ -136,6 +144,10 @@ void seq_free_strip(Strip *strip)
}
if (strip->proxy) {
+ if (strip->proxy->anim) {
+ IMB_free_anim(strip->proxy->anim);
+ }
+
MEM_freeN(strip->proxy);
}
if (strip->crop) {
@@ -598,6 +610,8 @@ void reload_sequence_new_file(Scene *scene, Sequence * seq)
seq->strip->len = seq->len;
}
+ free_proxy_seq(seq);
+
calc_sequence(seq);
}
@@ -1112,7 +1126,7 @@ static int get_shown_sequences( ListBase * seqbasep, int cfra, int chanshown, Se
#define PROXY_MAXFILE (2*FILE_MAXDIR+FILE_MAXFILE)
-static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * name)
+static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * name, int render_size)
{
int frameno;
char dir[FILE_MAXDIR];
@@ -1132,12 +1146,20 @@ static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * na
}
}
+ if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+ BLI_join_dirfile(name, dir, seq->strip->proxy->file);
+ BLI_convertstringcode(name, G.sce);
+ BLI_convertstringframe(name, cfra);
+
+ return TRUE;
+ }
+
/* generate a seperate proxy directory for each preview size */
if (seq->type == SEQ_IMAGE) {
StripElem * se = give_stripelem(seq, cfra);
snprintf(name, PROXY_MAXFILE, "%s/images/%d/%s_proxy",
- dir, scene->r.size, se->name);
+ dir, render_size, se->name);
frameno = 1;
} else if (seq->type == SEQ_MOVIE) {
TStripElem * tse = give_tstripelem(seq, cfra);
@@ -1146,14 +1168,14 @@ static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * na
snprintf(name, PROXY_MAXFILE, "%s/%s/%d/####", dir,
seq->strip->stripdata->name,
- scene->r.size);
+ render_size);
} else {
TStripElem * tse = give_tstripelem(seq, cfra);
frameno = tse->nr + seq->anim_startofs;
snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir,
- scene->r.size);
+ render_size);
}
BLI_convertstringcode(name, G.sce);
@@ -1165,7 +1187,7 @@ static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * na
return TRUE;
}
-static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra)
+static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, int render_size)
{
char name[PROXY_MAXFILE];
@@ -1174,11 +1196,28 @@ static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra)
}
/* rendering at 100% ? No real sense in proxy-ing, right? */
- if (scene->r.size == 100.0) {
+ if (render_size == 100) {
return 0;
}
- if (!seq_proxy_get_fname(scene, seq, cfra, name)) {
+ if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+ TStripElem * tse = give_tstripelem(seq, cfra);
+ int frameno = tse->nr + seq->anim_startofs;
+ if (!seq->strip->proxy->anim) {
+ if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) {
+ return 0;
+ }
+
+ seq->strip->proxy->anim = openanim(name, IB_rect);
+ }
+ if (!seq->strip->proxy->anim) {
+ return 0;
+ }
+
+ return IMB_anim_absolute(seq->strip->proxy->anim, frameno);
+ }
+
+ if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) {
return 0;
}
@@ -1190,9 +1229,9 @@ static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra)
}
static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra,
- int build_proxy_run);
+ int build_proxy_run, int render_size);
-static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra)
+static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra, int render_size)
{
char name[PROXY_MAXFILE];
int quality;
@@ -1206,11 +1245,16 @@ static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra)
}
/* rendering at 100% ? No real sense in proxy-ing, right? */
- if (scene->r.size == 100.0) {
+ if (render_size == 100) {
return;
}
- if (!seq_proxy_get_fname(scene, seq, cfra, name)) {
+ /* that's why it is called custom... */
+ if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+ return;
+ }
+
+ if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) {
return;
}
@@ -1224,14 +1268,14 @@ static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra)
se->ibuf = 0;
}
- do_build_seq_ibuf(scene, seq, se, cfra, TRUE);
+ do_build_seq_ibuf(scene, seq, se, cfra, TRUE, render_size);
if (!se->ibuf) {
return;
}
- rectx= (scene->r.size*scene->r.xsch)/100;
- recty= (scene->r.size*scene->r.ysch)/100;
+ rectx= (render_size*scene->r.xsch)/100;
+ recty= (render_size*scene->r.ysch)/100;
ibuf = se->ibuf;
@@ -1286,7 +1330,7 @@ void seq_proxy_rebuild(Scene *scene, Sequence * seq)
TStripElem * tse = give_tstripelem(seq, cfra);
if (!(tse->flag & STRIPELEM_PREVIEW_DONE)) {
- seq_proxy_build_frame(scene, seq, cfra);
+ seq_proxy_build_frame(scene, seq, cfra, scene->r.size);
tse->flag |= STRIPELEM_PREVIEW_DONE;
}
if (blender_test_break()) {
@@ -1299,7 +1343,7 @@ void seq_proxy_rebuild(Scene *scene, Sequence * seq)
TStripElem * tse = give_tstripelem(seq, cfra);
if (!(tse->flag & STRIPELEM_PREVIEW_DONE)) {
- seq_proxy_build_frame(scene, seq, cfra);
+ seq_proxy_build_frame(scene, seq, cfra, scene->r.size);
tse->flag |= STRIPELEM_PREVIEW_DONE;
}
if (blender_test_break()) {
@@ -1752,11 +1796,46 @@ static void free_metastrip_imbufs(ListBase *seqbasep, int cfra, int chanshown)
}
+static void check_limiter_refcount(const char * func, TStripElem *se)
+{
+ if (se && se->ibuf) {
+ int refcount = IMB_cache_limiter_get_refcount(se->ibuf);
+ if (refcount != 1) {
+ /* can happen on complex pipelines */
+ if (refcount > 1 && (G.f & G_DEBUG) == 0) {
+ return;
+ }
+
+ fprintf(stderr,
+ "sequencer: (ibuf) %s: "
+ "suspicious memcache "
+ "limiter refcount: %d\n", func, refcount);
+ }
+ }
+}
+
+static void check_limiter_refcount_comp(const char * func, TStripElem *se)
+{
+ if (se && se->ibuf_comp) {
+ int refcount = IMB_cache_limiter_get_refcount(se->ibuf_comp);
+ if (refcount != 1) {
+ /* can happen on complex pipelines */
+ if (refcount > 1 && (G.f & G_DEBUG) == 0) {
+ return;
+ }
+ fprintf(stderr,
+ "sequencer: (ibuf comp) %s: "
+ "suspicious memcache "
+ "limiter refcount: %d\n", func, refcount);
+ }
+ }
+}
+
static TStripElem* do_build_seq_array_recursively(Scene *scene,
- ListBase *seqbasep, int cfra, int chanshown);
+ ListBase *seqbasep, int cfra, int chanshown, int render_size);
static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra,
- int build_proxy_run)
+ int build_proxy_run, int render_size)
{
char name[FILE_MAXDIR+FILE_MAXFILE];
int use_limiter = TRUE;
@@ -1766,18 +1845,23 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
if(seq->type == SEQ_META) {
TStripElem * meta_se = 0;
+ int use_preprocess = FALSE;
use_limiter = FALSE;
if (!build_proxy_run && se->ibuf == 0) {
- se->ibuf = seq_proxy_fetch(scene, seq, cfra);
+ se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
if (se->ibuf) {
use_limiter = TRUE;
+ use_preprocess = TRUE;
}
}
if(!se->ibuf && seq->seqbase.first) {
meta_se = do_build_seq_array_recursively(scene,
- &seq->seqbase, seq->start + se->nr, 0);
+ &seq->seqbase, seq->start + se->nr, 0,
+ render_size);
+
+ check_limiter_refcount("do_build_seq_ibuf: for META", meta_se);
}
se->ok = STRIPELEM_OK;
@@ -1799,21 +1883,24 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
se->ibuf = i;
use_limiter = TRUE;
+ use_preprocess = TRUE;
}
+ } else if (se->ibuf) {
+ use_limiter = TRUE;
}
if (meta_se) {
free_metastrip_imbufs(
&seq->seqbase, seq->start + se->nr, 0);
}
- if (use_limiter) {
+ if (use_preprocess) {
input_preprocess(scene, seq, se, cfra);
}
} else if(seq->type & SEQ_EFFECT) {
/* should the effect be recalculated? */
if (!build_proxy_run && se->ibuf == 0) {
- se->ibuf = seq_proxy_fetch(scene, seq, cfra);
+ se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
}
if(se->ibuf == 0) {
@@ -1834,13 +1921,19 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
BLI_convertstringcode(name, G.sce);
BLI_convertstringframe(name, scene->r.cfra);
if (!build_proxy_run) {
- se->ibuf = seq_proxy_fetch(scene, seq, cfra);
+ se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
}
copy_from_ibuf_still(seq, se);
if (!se->ibuf) {
se->ibuf= IMB_loadiffname(
name, IB_rect);
+ /* we don't need both (speed reasons)! */
+ if (se->ibuf &&
+ se->ibuf->rect_float && se->ibuf->rect) {
+ imb_freerectImBuf(se->ibuf);
+ }
+
copy_to_ibuf_still(seq, se);
}
@@ -1853,7 +1946,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
} else if(seq->type == SEQ_MOVIE) {
if(se->ok == STRIPELEM_OK && se->ibuf==0) {
if(!build_proxy_run) {
- se->ibuf = seq_proxy_fetch(scene, seq, cfra);
+ se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
}
copy_from_ibuf_still(seq, se);
@@ -1871,6 +1964,13 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
if(seq->anim) {
IMB_anim_set_preseek(seq->anim, seq->anim_preseek);
se->ibuf = IMB_anim_absolute(seq->anim, se->nr + seq->anim_startofs);
+ /* we don't need both (speed reasons)! */
+ if (se->ibuf
+ && se->ibuf->rect_float
+ && se->ibuf->rect) {
+ imb_freerectImBuf(se->ibuf);
+ }
+
}
copy_to_ibuf_still(seq, se);
}
@@ -1894,7 +1994,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
int sce_valid =sce&& (sce->camera || sce->r.scemode & R_DOSEQ);
if (se->ibuf == NULL && sce_valid && !build_proxy_run) {
- se->ibuf = seq_proxy_fetch(scene, seq, cfra);
+ se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
if (se->ibuf) {
input_preprocess(scene, seq, se, cfra);
}
@@ -1910,7 +2010,10 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
if (!sce_valid) {
se->ok = STRIPELEM_FAILED;
} else if (se->ibuf==NULL && sce_valid) {
- waitcursor(1);
+ /* no need to display a waitcursor on sequencer
+ scene strips */
+ if (!(sce->r.scemode & R_DOSEQ))
+ waitcursor(1);
/* Hack! This function can be called from do_render_seq(), in that case
the seq->scene can already have a Render initialized with same name,
@@ -1960,6 +2063,13 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
/* restore */
scene->r.scemode |= doseq;
+
+ // XXX
+#if 0
+ if((G.f & G_PLAYANIM)==0 /* bad, is set on do_render_seq */
+ && !(sce->r.scemode & R_DOSEQ))
+ waitcursor(0);
+#endif
CFRA = oldcfra;
set_last_seq(oldseq);
@@ -1986,9 +2096,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
}
}
-static TStripElem* do_build_seq_recursively(Scene *scene, Sequence *seq, int cfra);
+static TStripElem* do_build_seq_recursively(Scene *scene, Sequence *seq, int cfra, int render_size);
-static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *se, int cfra)
+static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *se, int cfra, int render_size)
{
float fac, facf;
struct SeqEffectHandle sh = get_sequence_effect(seq);
@@ -2017,22 +2127,22 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s
/* no input needed */
break;
case 0:
- se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra);
- se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra);
+ se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size);
+ se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size);
if (seq->seq3) {
- se->se3 = do_build_seq_recursively(scene, seq->seq3, cfra);
+ se->se3 = do_build_seq_recursively(scene, seq->seq3, cfra, render_size);
}
break;
case 1:
- se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra);
+ se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size);
break;
case 2:
- se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra);
+ se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size);
break;
}
- do_build_seq_ibuf(scene, seq, se, cfra, FALSE);
+ do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size);
/* children are not needed anymore ... */
@@ -2045,9 +2155,10 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s
if (se->se3 && se->se3->ibuf) {
IMB_cache_limiter_unref(se->se3->ibuf);
}
+ check_limiter_refcount("do_effect_seq_recursively", se);
}
-static TStripElem* do_build_seq_recursively_impl(Scene *scene, Sequence * seq, int cfra)
+static TStripElem* do_build_seq_recursively_impl(Scene *scene, Sequence * seq, int cfra, int render_size)
{
TStripElem *se;
@@ -2055,9 +2166,9 @@ static TStripElem* do_build_seq_recursively_impl(Scene *scene, Sequence * seq, i
if(se) {
if (seq->type & SEQ_EFFECT) {
- do_effect_seq_recursively(scene, seq, se, cfra);
+ do_effect_seq_recursively(scene, seq, se, cfra, render_size);
} else {
- do_build_seq_ibuf(scene, seq, se, cfra, FALSE);
+ do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size);
}
}
return se;
@@ -2071,7 +2182,7 @@ instead of faking using the blend code below...
*/
-static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra)
+static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra, int render_size)
{
SpeedControlVars * s = (SpeedControlVars *)seq->effectdata;
int nr = cfra - seq->start;
@@ -2100,7 +2211,7 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra
test_and_auto_discard_ibuf(se);
if (se->ibuf == NULL) {
- se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left);
+ se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left, render_size);
if((se1 && se1->ibuf && se1->ibuf->rect_float))
se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0);
@@ -2132,8 +2243,8 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra
}
if (se->ibuf == NULL) {
- se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left);
- se2 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_right);
+ se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left, render_size);
+ se2 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_right, render_size);
if((se1 && se1->ibuf && se1->ibuf->rect_float))
se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0);
@@ -2168,6 +2279,8 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra
if (se2 && se2->ibuf)
IMB_cache_limiter_unref(se2->ibuf);
+ check_limiter_refcount("do_handle_speed_effect", se);
+
return se;
}
@@ -2183,25 +2296,22 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra
*
*/
-static TStripElem* do_build_seq_recursively(Scene *scene, Sequence * seq, int cfra)
+static TStripElem* do_build_seq_recursively(Scene *scene, Sequence * seq, int cfra, int render_size)
{
+ TStripElem *se;
if (seq->type == SEQ_SPEED) {
- return do_handle_speed_effect(scene, seq, cfra);
+ se = do_handle_speed_effect(scene, seq, cfra, render_size);
} else {
- return do_build_seq_recursively_impl(scene, seq, cfra);
+ se = do_build_seq_recursively_impl(scene, seq, cfra, render_size);
}
-}
-/* Bug: 18209
- * when dragging the mouse over a metastrip, on mouse-up for some unknown
- * reason in some cases the metastrips TStripElem->ibuf->rect is NULL,
- * This should be fixed but I had a look and couldnt work out why its
- * happening so for now workaround with a NULL check - campbell */
+ check_limiter_refcount("do_build_seq_recursively", se);
-#define SEQ_SPECIAL_SEQ_UPDATE_WORKAROUND
+ return se;
+}
static TStripElem* do_build_seq_array_recursively(Scene *scene,
- ListBase *seqbasep, int cfra, int chanshown)
+ ListBase *seqbasep, int cfra, int chanshown, int render_size)
{
Sequence* seq_arr[MAXSEQ+1];
int count;
@@ -2231,7 +2341,7 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
if(count == 1) {
- se = do_build_seq_recursively(scene, seq_arr[0], cfra);
+ se = do_build_seq_recursively(scene, seq_arr[0], cfra, render_size);
if (se->ibuf) {
se->ibuf_comp = se->ibuf;
IMB_refImBuf(se->ibuf_comp);
@@ -2253,7 +2363,7 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
break;
}
if (seq->blend_mode == SEQ_BLEND_REPLACE) {
- do_build_seq_recursively(scene, seq, cfra);
+ do_build_seq_recursively(scene, seq, cfra, render_size);
if (se->ibuf) {
se->ibuf_comp = se->ibuf;
IMB_refImBuf(se->ibuf);
@@ -2261,6 +2371,9 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
se->ibuf_comp = IMB_allocImBuf(
(short)seqrectx, (short)seqrecty,
32, IB_rect, 0);
+ IMB_cache_limiter_insert(se->ibuf_comp);
+ IMB_cache_limiter_ref(se->ibuf_comp);
+ IMB_cache_limiter_touch(se->ibuf_comp);
}
break;
}
@@ -2285,7 +2398,7 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
switch (early_out) {
case -1:
case 2:
- do_build_seq_recursively(scene, seq, cfra);
+ do_build_seq_recursively(scene, seq, cfra, render_size);
if (se->ibuf) {
se->ibuf_comp = se->ibuf;
IMB_refImBuf(se->ibuf_comp);
@@ -2293,6 +2406,9 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
se->ibuf_comp = IMB_allocImBuf(
(short)seqrectx, (short)seqrecty,
32, IB_rect, 0);
+ IMB_cache_limiter_insert(se->ibuf_comp);
+ IMB_cache_limiter_ref(se->ibuf_comp);
+ IMB_cache_limiter_touch(se->ibuf_comp);
}
break;
case 1:
@@ -2306,11 +2422,14 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
}
break;
case 0:
- do_build_seq_recursively(scene, seq, cfra);
+ do_build_seq_recursively(scene, seq, cfra, render_size);
if (!se->ibuf) {
se->ibuf = IMB_allocImBuf(
(short)seqrectx, (short)seqrecty,
32, IB_rect, 0);
+ IMB_cache_limiter_insert(se->ibuf);
+ IMB_cache_limiter_ref(se->ibuf);
+ IMB_cache_limiter_touch(se->ibuf);
}
if (i == 0) {
se->ibuf_comp = se->ibuf;
@@ -2369,13 +2488,6 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
IMB_rect_from_float(se2->ibuf);
}
-#ifdef SEQ_SPECIAL_SEQ_UPDATE_WORKAROUND
- if (se2->ibuf->rect==NULL && se2->ibuf->rect_float==NULL) {
- printf("ERROR: sequencer se2->ibuf missing buffer\n");
- } else if (se1->ibuf && se1->ibuf->rect==NULL && se1->ibuf->rect_float==NULL) {
- printf("ERROR: sequencer se1->ibuf missing buffer\n");
- } else {
-#endif
/* bad hack, to fix crazy input ordering of
those two effects */
@@ -2397,10 +2509,6 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
se2->ibuf_comp);
}
-#ifdef SEQ_SPECIAL_SEQ_UPDATE_WORKAROUND
- }
-#endif
-
IMB_cache_limiter_insert(se2->ibuf_comp);
IMB_cache_limiter_ref(se2->ibuf_comp);
IMB_cache_limiter_touch(se2->ibuf_comp);
@@ -2428,7 +2536,7 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene,
* you have to unref after usage!
*/
-static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, int chanshown)
+static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
{
Editing *ed= seq_give_editing(scene, FALSE);
int count;
@@ -2449,28 +2557,32 @@ static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, i
seqrectx= rectx; /* bad bad global! */
seqrecty= recty;
- se = do_build_seq_array_recursively(scene, seqbasep, cfra, chanshown);
+ se = do_build_seq_array_recursively(scene, seqbasep, cfra, chanshown, render_size);
if(!se) {
return 0;
}
+ check_limiter_refcount_comp("give_ibuf_seq_impl", se);
+
return se->ibuf_comp;
}
-ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, Sequence *seq)
+ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, int render_size, Sequence *seq)
{
TStripElem* se;
seqrectx= rectx; /* bad bad global! */
seqrecty= recty;
- se = do_build_seq_recursively(scene, seq, cfra);
+ se = do_build_seq_recursively(scene, seq, cfra, render_size);
if(!se) {
return 0;
}
+ check_limiter_refcount("give_ibuf_seq_direct", se);
+
if (se->ibuf) {
IMB_cache_limiter_unref(se->ibuf);
}
@@ -2478,9 +2590,9 @@ ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, Sequen
return se->ibuf;
}
-ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown)
+ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
{
- ImBuf* i = give_ibuf_seq_impl(scene, rectx, recty, cfra, chanshown);
+ ImBuf* i = give_ibuf_seq_impl(scene, rectx, recty, cfra, chanshown, render_size);
if (i) {
IMB_cache_limiter_unref(i);
@@ -2535,6 +2647,7 @@ typedef struct PrefetchQueueElem {
int recty;
int cfra;
int chanshown;
+ int render_size;
int monoton_cfra;
@@ -2580,7 +2693,8 @@ static void *seq_prefetch_thread(void * This_)
if (e->cfra >= s_last) {
e->ibuf = give_ibuf_seq_impl(This->scene,
- e->rectx, e->recty, e->cfra, e->chanshown);
+ e->rectx, e->recty, e->cfra, e->chanshown,
+ e->render_size);
}
pthread_mutex_lock(&queue_lock);
@@ -2689,7 +2803,8 @@ void seq_stop_threads()
BLI_end_threads(0);
}
-void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown)
+void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown,
+ int render_size)
{
PrefetchQueueElem *e;
if (seq_thread_shutdown) {
@@ -2701,6 +2816,7 @@ void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown)
e->recty = recty;
e->cfra = cfra;
e->chanshown = chanshown;
+ e->render_size = render_size;
e->monoton_cfra = monoton_cfra++;
pthread_mutex_lock(&queue_lock);
@@ -2741,13 +2857,13 @@ void seq_wait_for_prefetch_ready()
fprintf(stderr, "SEQ-THREAD: prefetch done\n");
}
-ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int chanshown)
+ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
{
PrefetchQueueElem *e = NULL;
int found_something = FALSE;
if (seq_thread_shutdown) {
- return give_ibuf_seq(scene, rectx, recty, cfra, chanshown);
+ return give_ibuf_seq(scene, rectx, recty, cfra, chanshown, render_size);
}
while (!e) {
@@ -2758,7 +2874,8 @@ ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int
if (cfra == e->cfra &&
chanshown == e->chanshown &&
rectx == e->rectx &&
- recty == e->recty) {
+ recty == e->recty &&
+ render_size == e->render_size) {
success = TRUE;
found_something = TRUE;
break;
@@ -2770,7 +2887,8 @@ ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int
if (cfra == e->cfra &&
chanshown == e->chanshown &&
rectx == e->rectx &&
- recty == e->recty) {
+ recty == e->recty &&
+ render_size == e->render_size) {
found_something = TRUE;
break;
}
@@ -2786,7 +2904,8 @@ ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int
cfra == tslot->current->cfra &&
chanshown == tslot->current->chanshown &&
rectx == tslot->current->rectx &&
- recty == tslot->current->recty) {
+ recty == tslot->current->recty &&
+ render_size== tslot->current->render_size){
found_something = TRUE;
break;
}
@@ -2887,6 +3006,7 @@ void free_imbuf_seq_except(Scene *scene, int cfra)
if(seq->type==SEQ_MOVIE)
if(seq->startdisp > cfra || seq->enddisp < cfra)
free_anim_seq(seq);
+ free_proxy_seq(seq);
}
}
SEQ_END
@@ -3010,6 +3130,7 @@ void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo)
if(seq->type == SEQ_SPEED) {
sequence_effect_speed_rebuild_map(seq, 1);
}
+ free_proxy_seq(seq);
}
}
SEQ_END
@@ -3021,7 +3142,7 @@ void do_render_seq(RenderResult *rr, int cfra)
{
ImBuf *ibuf;
- ibuf= give_ibuf_seq(scene, rr->rectx, rr->recty, cfra, 0);
+ ibuf= give_ibuf_seq(scene, rr->rectx, rr->recty, cfra, 0, scene->r.size);
if(ibuf) {
if(ibuf->rect_float) {
@@ -3076,6 +3197,7 @@ void do_render_seq(RenderResult *rr, int cfra)
"user preferences.\n");
free_imbuf_seq();
}
+ free_proxy_seq(seq);
}
}
else {
diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c
index 8fb4ed8e272..577156ef453 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.c
+++ b/source/blender/blenkernel/intern/shrinkwrap.c
@@ -548,7 +548,7 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Scene *scene, Object
calc.vgroup = get_named_vertexgroup_num(calc.ob, smd->vgroup_name);
- if(dm != NULL)
+ if(dm != NULL && smd->shrinkType == MOD_SHRINKWRAP_PROJECT)
{
//Setup arrays to get vertexs positions, normals and deform weights
calc.vert = dm->getVertDataArray(dm, CD_MVERT);
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index d7070e4cdd6..3e6f30cde36 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -3075,8 +3075,8 @@ static void apply_spring_memory(Object *ob)
int a;
float b,l,r;
- b = sb->plastic;
if (sb && sb->totspring){
+ b = sb->plastic;
for(a=0; a<sb->totspring; a++) {
bs = &sb->bspring[a];
bp1 =&sb->bpoint[bs->v1];
@@ -3546,9 +3546,9 @@ static void springs_from_particles(Object *ob)
int a,k;
float hairmat[4][4];
- psys= ob->soft->particles;
- sb= ob->soft;
- if(ob && sb && psys) {
+ if(ob && ob->soft && ob->soft->particles) {
+ psys= ob->soft->particles;
+ sb= ob->soft;
psmd = psys_get_modifier(ob, psys);
bp= sb->bpoint;
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 97248f0c78e..512eea43087 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -572,6 +572,8 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
++origIndex;
i++;
+
+#if 0 //BMESH_TODO
for(S = 0; S < numVerts; S++) {
int prevS = (S - 1 + numVerts) % numVerts;
int nextS = (S + 1) % numVerts;
@@ -616,7 +618,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
}
}
}
-
+#endif
*((int*)ccgSubSurf_getFaceUserData(ss, f)) = faceBase;
faceBase += 1 + numVerts * ((gridSize-2) + (gridSize-2) * (gridSize-2));
}
@@ -745,7 +747,6 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
mf = CDDM_get_tessfaces(result);
origIndex = result->getTessFaceData(result, 0, CD_ORIGINDEX);
-#if 0 //BMESH_TODO
for(index = 0; index < totface; index++) {
CCGFace *f = faceMap2[index];
int numVerts = ccgSubSurf_getFaceNumVerts(f);
@@ -781,7 +782,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
edgeSize, gridSize);
mf->mat_nr = mat_nr;
mf->flag = flag;
-
+#if 0 //BMESH_TODO
if(dm) {
int prevS = (S - 1 + numVerts) % numVerts;
int nextS = (S + 1) % numVerts;
@@ -799,6 +800,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
&w, 1, i);
weight++;
}
+#endif
*origIndex = mapIndex;
++mf;
@@ -808,7 +810,6 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh,
}
}
}
-#endif
MEM_freeN(faceMap2);
MEM_freeN(edgeMap2);
@@ -2568,6 +2569,8 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
++vertOrigIndex;
++vertNum;
+
+#if 0 //BMESH_TODO
for(S = 0; S < numVerts; S++) {
int prevS = (S - 1 + numVerts) % numVerts;
int nextS = (S + 1) % numVerts;
@@ -2605,7 +2608,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
}
}
}
-
+#endif
for(i = 0; i < numFinalEdges; ++i)
*(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i,
CD_ORIGINDEX) = ORIGINDEX_NONE;
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index 8bad269a85e..7fe129ed6fc 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -110,6 +110,10 @@ World *add_world(char *name)
wrld->mode = WO_DBVT_CULLING; // DBVT culling by default
wrld->occlusionRes = 128;
wrld->preview = NULL;
+ wrld->ticrate = 60;
+ wrld->maxlogicstep = 5;
+ wrld->physubstep = 1;
+ wrld->maxphystep = 5;
return wrld;
}
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index 472a6612a50..25dc6fa2fd7 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -242,6 +242,9 @@ static void write_video_frame(RenderData *rd, AVFrame* frame)
#ifdef FFMPEG_CODEC_TIME_BASE
frame->pts = rd->cfra - rd->sfra;
#endif
+ if (rd->mode & R_FIELDS) {
+ frame->top_field_first = ((rd->mode & R_ODDFIELD) != 0);
+ }
outsize = avcodec_encode_video(c, video_buffer, video_buffersize,
frame);
diff --git a/source/blender/blenlib/BLI_arithb.h b/source/blender/blenlib/BLI_arithb.h
index 71307132243..bcc2ac3deec 100644
--- a/source/blender/blenlib/BLI_arithb.h
+++ b/source/blender/blenlib/BLI_arithb.h
@@ -405,7 +405,7 @@ int AabbIntersectAabb(float min1[3], float max1[3], float min2[3], float max2[3]
void VecfCubicInterpol(float *x1, float *v1, float *x2, float *v2, float t, float *x, float *v);
void PointInQuad2DUV(float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv);
void PointInFace2DUV(int isquad, float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv);
-int IsPointInTri2D(float v0[2], float v1[2], float v2[2], float pt[2]);
+int IsPointInTri2D(float v1[2], float v2[2], float v3[2], float pt[2]);
int IsPointInTri2DInts(int x1, int y1, int x2, int y2, int a, int b);
int point_in_tri_prism(float p[3], float v1[3], float v2[3], float v3[3]);
diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h
index ce9dd44601b..4e5bf650196 100644
--- a/source/blender/blenlib/BLI_string.h
+++ b/source/blender/blenlib/BLI_string.h
@@ -96,6 +96,7 @@ int BLI_strcaseeq(const char *a, const char *b);
char *BLI_strcasestr(const char *s, const char *find);
int BLI_strcasecmp(const char *s1, const char *s2);
int BLI_strncasecmp(const char *s1, const char *s2, int n);
+int BLI_natstrcmp(const char *s1, const char *s2);
void BLI_timestr(double _time, char *str); /* time var is global */
diff --git a/source/blender/blenlib/BLI_threads.h b/source/blender/blenlib/BLI_threads.h
index 5a7e84c42fb..8babb5fe780 100644
--- a/source/blender/blenlib/BLI_threads.h
+++ b/source/blender/blenlib/BLI_threads.h
@@ -53,6 +53,10 @@ void BLI_unlock_thread (int type);
int BLI_system_thread_count( void ); /* gets the number of threads the system can make use of */
+ /* exported by preview render, it has to ensure render buffers are not freed while draw */
+void BLI_lock_malloc_thread(void);
+void BLI_unlock_malloc_thread(void);
+
/* ThreadedWorker is a simple tool for dispatching work to a limited number of threads in a transparent
* fashion from the caller's perspective
* */
diff --git a/source/blender/blenlib/BLI_vfontdata.h b/source/blender/blenlib/BLI_vfontdata.h
index 8838b1992e4..bd89959801a 100644
--- a/source/blender/blenlib/BLI_vfontdata.h
+++ b/source/blender/blenlib/BLI_vfontdata.h
@@ -54,7 +54,7 @@ typedef struct VFontData {
typedef struct VChar {
struct VChar *next, *prev;
ListBase nurbsbase;
- unsigned long index;
+ intptr_t index;
float resol;
float width;
float *points;
diff --git a/source/blender/blenlib/intern/arithb.c b/source/blender/blenlib/intern/arithb.c
index 187a9ec189f..0c7db0331e1 100644
--- a/source/blender/blenlib/intern/arithb.c
+++ b/source/blender/blenlib/intern/arithb.c
@@ -4564,6 +4564,21 @@ void PointInFace2DUV(int isquad, float v0[2], float v1[2], float v2[2], float v3
}
}
+int IsPointInTri2D(float v1[2], float v2[2], float v3[2], float pt[2])
+{
+ float inp1, inp2, inp3;
+
+ inp1= (v2[0]-v1[0])*(v1[1]-pt[1]) + (v1[1]-v2[1])*(v1[0]-pt[0]);
+ inp2= (v3[0]-v2[0])*(v2[1]-pt[1]) + (v2[1]-v3[1])*(v2[0]-pt[0]);
+ inp3= (v1[0]-v3[0])*(v3[1]-pt[1]) + (v3[1]-v1[1])*(v3[0]-pt[0]);
+
+ if(inp1<=0.0f && inp2<=0.0f && inp3<=0.0f) return 1;
+ if(inp1>=0.0f && inp2>=0.0f && inp3>=0.0f) return 1;
+
+ return 0;
+}
+
+#if 0
int IsPointInTri2D(float v0[2], float v1[2], float v2[2], float pt[2])
{
/* not for quads, use for our abuse of LineIntersectsTriangleUV */
@@ -4591,6 +4606,7 @@ int IsPointInTri2D(float v0[2], float v1[2], float v2[2], float pt[2])
/* Doing this in 3D is not nice */
return LineIntersectsTriangle(p1_3d, p2_3d, v0_3d, v1_3d, v2_3d, &lambda, uv);
}
+#endif
/*
diff --git a/source/blender/blenlib/intern/rct.c b/source/blender/blenlib/intern/rct.c
index 48ba18515de..915a93e8e0b 100644
--- a/source/blender/blenlib/intern/rct.c
+++ b/source/blender/blenlib/intern/rct.c
@@ -88,17 +88,42 @@ void BLI_union_rcti(rcti *rct1, rcti *rct2)
void BLI_init_rctf(rctf *rect, float xmin, float xmax, float ymin, float ymax)
{
- rect->xmin= xmin;
- rect->xmax= xmax;
- rect->ymin= ymin;
- rect->ymax= ymax;
+ if(xmin <= xmax) {
+ rect->xmin= xmin;
+ rect->xmax= xmax;
+ }
+ else {
+ rect->xmax= xmin;
+ rect->xmin= xmax;
+ }
+ if(ymin <= ymax) {
+ rect->ymin= ymin;
+ rect->ymax= ymax;
+ }
+ else {
+ rect->ymax= ymin;
+ rect->ymin= ymax;
+ }
}
+
void BLI_init_rcti(rcti *rect, int xmin, int xmax, int ymin, int ymax)
{
- rect->xmin= xmin;
- rect->xmax= xmax;
- rect->ymin= ymin;
- rect->ymax= ymax;
+ if(xmin <= xmax) {
+ rect->xmin= xmin;
+ rect->xmax= xmax;
+ }
+ else {
+ rect->xmax= xmin;
+ rect->xmin= xmax;
+ }
+ if(ymin <= ymax) {
+ rect->ymin= ymin;
+ rect->ymax= ymax;
+ }
+ else {
+ rect->ymax= ymin;
+ rect->ymin= ymax;
+ }
}
void BLI_translate_rcti(rcti *rect, int x, int y)
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index 9204ab18bfa..688a4ab901b 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -154,7 +154,7 @@ int BLI_compare(struct direntry *entry1, struct direntry *entry2)
if( strcmp(entry1->relname, "..")==0 ) return (-1);
if( strcmp(entry2->relname, "..")==0 ) return (1);
- return (BLI_strcasecmp(entry1->relname,entry2->relname));
+ return (BLI_natstrcmp(entry1->relname,entry2->relname));
}
@@ -330,7 +330,7 @@ void BLI_builddir(char *dirname, char *relname)
void BLI_adddirstrings()
{
char datum[100];
- char buf[250];
+ char buf[512];
char size[250];
static char * types[8] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"};
int num, mode;
@@ -427,9 +427,6 @@ void BLI_adddirstrings()
sprintf(size, "%10d", (int) st_size);
}
- sprintf(buf,"%s %s %10s %s", files[num].date, files[num].time, size,
- files[num].relname);
-
sprintf(buf,"%s %s %s %7s %s %s %10s %s", file->mode1, file->mode2, file->mode3, files[num].owner, files[num].date, files[num].time, size,
files[num].relname);
diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c
index 843f6b62735..fa4bcbc26bc 100644
--- a/source/blender/blenlib/intern/string.c
+++ b/source/blender/blenlib/intern/string.c
@@ -170,6 +170,54 @@ int BLI_strncasecmp(const char *s1, const char *s2, int n) {
return 0;
}
+/* natural string compare, keeping numbers in order */
+int BLI_natstrcmp(const char *s1, const char *s2)
+{
+ int d1= 0, d2= 0;
+
+ /* if both chars are numeric, to a strtol().
+ then increase string deltas as long they are
+ numeric, else do a tolower and char compare */
+
+ while(1) {
+ char c1 = tolower(s1[d1]);
+ char c2 = tolower(s2[d2]);
+
+ if( isdigit(c1) && isdigit(c2) ) {
+ int val1, val2;
+
+ val1= (int)strtol(s1+d1, (char **)NULL, 10);
+ val2= (int)strtol(s2+d2, (char **)NULL, 10);
+
+ if (val1<val2) {
+ return -1;
+ } else if (val1>val2) {
+ return 1;
+ }
+ d1++;
+ while( isdigit(s1[d1]) )
+ d1++;
+ d2++;
+ while( isdigit(s2[d2]) )
+ d2++;
+
+ c1 = tolower(s1[d1]);
+ c2 = tolower(s2[d2]);
+ }
+
+ if (c1<c2) {
+ return -1;
+ } else if (c1>c2) {
+ return 1;
+ } else if (c1==0) {
+ break;
+ }
+ d1++;
+ d2++;
+ }
+ return 0;
+}
+
void BLI_timestr(double _time, char *str)
{
/* format 00:00:00.00 (hr:min:sec) string has to be 12 long */
diff --git a/source/blender/blenlib/intern/threads.c b/source/blender/blenlib/intern/threads.c
index 884724270ae..2812f17d58f 100644
--- a/source/blender/blenlib/intern/threads.c
+++ b/source/blender/blenlib/intern/threads.c
@@ -112,12 +112,12 @@ typedef struct ThreadSlot {
int avail;
} ThreadSlot;
-static void BLI_lock_malloc_thread(void)
+void BLI_lock_malloc_thread(void)
{
pthread_mutex_lock(&_malloc_lock);
}
-static void BLI_unlock_malloc_thread(void)
+void BLI_unlock_malloc_thread(void)
{
pthread_mutex_unlock(&_malloc_lock);
}
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c
index 137a32c4689..df4ad4e7c75 100644
--- a/source/blender/blenlib/intern/util.c
+++ b/source/blender/blenlib/intern/util.c
@@ -1472,9 +1472,6 @@ char* BLI_getbundle(void) {
}
#endif
-
-
-
#ifdef WITH_ICONV
#include "iconv.h"
#include "localcharset.h"
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index a85263cd830..9779f3f99bb 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -156,6 +156,8 @@
#include "readfile.h"
+#include "PIL_time.h"
+
#include <errno.h>
/*
@@ -611,10 +613,16 @@ static BHeadN *get_bhead(FileData *fd)
BHead bhead;
BHeadN *new_bhead = 0;
int readsize;
-
+
if (fd) {
if ( ! fd->eof) {
+ /* not strictly needed but shuts valgrind up
+ * since uninitialized memory gets compared */
+ memset(&bhead8, 0, sizeof(BHead8));
+ memset(&bhead4, 0, sizeof(BHead4));
+ memset(&bhead, 0, sizeof(BHead));
+
// First read the bhead structure.
// Depending on the platform the file was written on this can
// be a big or little endian BHead4 or BHead8 structure.
@@ -1489,6 +1497,8 @@ static void lib_link_brush(FileData *fd, Main *main)
if(brush->id.flag & LIB_NEEDLINK) {
brush->id.flag -= LIB_NEEDLINK;
+ brush->clone.image= newlibadr_us(fd, brush->id.lib, brush->clone.image);
+
for(a=0; a<MAX_MTEX; a++) {
mtex= brush->mtex[a];
if(mtex)
@@ -3174,6 +3184,18 @@ static void direct_link_mesh(FileData *fd, Mesh *mesh)
lvl->colfaces= newdataadr(fd, lvl->colfaces);
}
}
+
+ /* Gracefully handle corrupted mesh */
+ if(mesh->mr && !mesh->mr->verts) {
+ /* If totals match, simply load the current mesh verts into multires */
+ if(mesh->totvert == ((MultiresLevel*)mesh->mr->levels.last)->totvert)
+ mesh->mr->verts = MEM_dupallocN(mesh->mvert);
+ else {
+ /* Otherwise, we can't recover the data, silently remove multires */
+ multires_free(mesh->mr);
+ mesh->mr = NULL;
+ }
+ }
if((fd->flags & FD_FLAGS_SWITCH_ENDIAN) && mesh->tface) {
TFace *tf= mesh->tface;
@@ -3365,6 +3387,10 @@ static void lib_link_object(FileData *fd, Main *main)
bAddObjectActuator *eoa= act->data;
if(eoa) eoa->ob= newlibadr(fd, ob->id.lib, eoa->ob);
}
+ else if(act->type==ACT_OBJECT) {
+ bObjectActuator *oa= act->data;
+ oa->reference= newlibadr(fd, ob->id.lib, oa->reference);
+ }
else if(act->type==ACT_EDIT_OBJECT) {
bEditObjectActuator *eoa= act->data;
if(eoa==NULL) {
@@ -3375,6 +3401,15 @@ static void lib_link_object(FileData *fd, Main *main)
eoa->me= newlibadr(fd, ob->id.lib, eoa->me);
}
}
+ else if(act->type==ACT_OBJECT) {
+ bObjectActuator *oa= act->data;
+ if(oa==NULL) {
+ init_actuator(act);
+ }
+ else {
+ oa->reference= newlibadr(fd, ob->id.lib, oa->reference);
+ }
+ }
else if(act->type==ACT_SCENE) {
bSceneActuator *sa= act->data;
sa->camera= newlibadr(fd, ob->id.lib, sa->camera);
@@ -3479,6 +3514,11 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
smd->emCache = smd->mCache = 0;
}
+ else if (md->type==eModifierType_Armature) {
+ ArmatureModifierData *amd = (ArmatureModifierData*) md;
+
+ amd->prevCos= NULL;
+ }
else if (md->type==eModifierType_Cloth) {
ClothModifierData *clmd = (ClothModifierData*) md;
@@ -3985,6 +4025,7 @@ static void direct_link_scene(FileData *fd, Scene *sce)
if (seq->flag & SEQ_USE_PROXY) {
seq->strip->proxy = newdataadr(
fd, seq->strip->proxy);
+ seq->strip->proxy->anim = 0;
} else {
seq->strip->proxy = 0;
}
@@ -4218,6 +4259,7 @@ static void lib_link_screen(FileData *fd, Main *main)
SpaceButs *sbuts= (SpaceButs *)sl;
sbuts->lockpoin= NULL;
sbuts->ri= NULL;
+ sbuts->pinid= newlibadr(fd, sc->id.lib, sbuts->pinid);
if(main->versionfile<132)
butspace_version_132(sbuts);
}
@@ -4416,9 +4458,26 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
if((v3d->layact & v3d->lay)==0) v3d->layact= v3d->lay;
}
+ else if(sl->spacetype==SPACE_IPO) {
+ /* XXX animato */
+#if 0
+ SpaceIpo *sipo= (SpaceIpo *)sl;
+
+ sipo->ipo= restore_pointer_by_name(newmain, (ID *)sipo->ipo, 0);
+ if(sipo->blocktype==ID_SEQ)
+ sipo->from= (ID *)find_sequence_from_ipo_helper(newmain, sipo->ipo);
+ else
+ sipo->from= restore_pointer_by_name(newmain, (ID *)sipo->from, 0);
+
+ // not free sipo->ipokey, creates dependency with src/
+ if(sipo->editipo) MEM_freeN(sipo->editipo);
+ sipo->editipo= NULL;
+#endif
+ }
else if(sl->spacetype==SPACE_BUTS) {
SpaceButs *sbuts= (SpaceButs *)sl;
sbuts->lockpoin= NULL;
+ sbuts->pinid = restore_pointer_by_name(newmain, sbuts->pinid, 0);
//XXX if (sbuts->ri) sbuts->ri->curtile = 0;
}
else if(sl->spacetype==SPACE_FILE) {
@@ -4683,6 +4742,7 @@ static void direct_link_screen(FileData *fd, bScreen *sc)
direct_link_gpencil(fd, sima->gpd);
if(sima->cumap)
direct_link_curvemapping(fd, sima->cumap);
+ sima->iuser.scene= NULL;
sima->iuser.ok= 1;
}
else if(sl->spacetype==SPACE_NODE) {
@@ -4701,6 +4761,10 @@ static void direct_link_screen(FileData *fd, bScreen *sc)
direct_link_gpencil(fd, sseq->gpd);
}
}
+ else if(sl->spacetype==SPACE_BUTS) {
+ SpaceButs *sbuts= (SpaceButs *)sl;
+ sbuts->path= NULL;
+ }
}
sa->actionzones.first= sa->actionzones.last= NULL;
@@ -5549,6 +5613,16 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
ar->regiontype= RGN_TYPE_UI;
ar->alignment= RGN_ALIGN_TOP;
break;
+
+#if 0
+ case SPACE_BUTS:
+ /* context UI region */
+ ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
+ BLI_addtail(lb, ar);
+ ar->regiontype= RGN_TYPE_CHANNELS;
+ ar->alignment= RGN_ALIGN_TOP;
+ break;
+#endif
}
}
@@ -6771,26 +6845,26 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
if(sbuts->mainb==BUTS_LAMP) {
sbuts->mainb= CONTEXT_SHADING;
- sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_LAMP;
+ //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_LAMP;
}
else if(sbuts->mainb==BUTS_MAT) {
sbuts->mainb= CONTEXT_SHADING;
- sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_MAT;
+ //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_MAT;
}
else if(sbuts->mainb==BUTS_TEX) {
sbuts->mainb= CONTEXT_SHADING;
- sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_TEX;
+ //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_TEX;
}
else if(sbuts->mainb==BUTS_ANIM) {
sbuts->mainb= CONTEXT_OBJECT;
}
else if(sbuts->mainb==BUTS_WORLD) {
sbuts->mainb= CONTEXT_SCENE;
- sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_WORLD;
+ //sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_WORLD;
}
else if(sbuts->mainb==BUTS_RENDER) {
sbuts->mainb= CONTEXT_SCENE;
- sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_RENDER;
+ //sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_RENDER;
}
else if(sbuts->mainb==BUTS_GAME) {
sbuts->mainb= CONTEXT_LOGIC;
@@ -6800,7 +6874,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
else if(sbuts->mainb==BUTS_RADIO) {
sbuts->mainb= CONTEXT_SHADING;
- sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_RAD;
+ //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_RAD;
}
else if(sbuts->mainb==BUTS_CONSTRAINT) {
sbuts->mainb= CONTEXT_OBJECT;
@@ -8427,7 +8501,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
part->draw_as = PART_DRAW_PATH;
part->type = PART_HAIR;
- psys->recalc |= PSYS_RECALC_HAIR;
+ psys->recalc |= PSYS_RECALC_REDO;
part->normfac *= fac;
part->randfac *= fac;
@@ -8863,7 +8937,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
/* Adjustments needed after Bullets update */
for(ob = main->object.first; ob; ob= ob->id.next) {
ob->damping *= 0.635f;
- ob->rdamping = 0.1 + (0.59f * ob->rdamping);
+ ob->rdamping = 0.1 + (0.8f * ob->rdamping);
}
}
@@ -8875,9 +8949,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
for (sce= main->scene.first; sce; sce= sce->id.next) {
sce->r.domeangle = 180;
sce->r.domemode = 1;
- sce->r.domesize = 1.0f;
sce->r.domeres = 4;
sce->r.domeresbuf = 1.0f;
+ sce->r.dometilt = 0;
}
/* DBVT culling by default */
for(wrld=main->world.first; wrld; wrld= wrld->id.next) {
@@ -8886,6 +8960,49 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
+ if (main->versionfile < 248 || (main->versionfile == 248 && main->subversionfile < 5)) {
+ Object *ob;
+ World *wrld;
+ for(ob = main->object.first; ob; ob= ob->id.next) {
+ ob->m_contactProcessingThreshold = 1.; //pad3 is used for m_contactProcessingThreshold
+ if(ob->parent) {
+ /* check if top parent has compound shape set and if yes, set this object
+ to compound shaper as well (was the behaviour before, now it's optional) */
+ Object *parent= newlibadr(fd, lib, ob->parent);
+ while (parent && parent->parent != NULL) {
+ parent = newlibadr(fd, lib, parent->parent);
+ }
+ if(parent) {
+ if (parent->gameflag & OB_CHILD)
+ ob->gameflag |= OB_CHILD;
+ }
+ }
+ }
+ for(wrld=main->world.first; wrld; wrld= wrld->id.next) {
+ wrld->ticrate = 60;
+ wrld->maxlogicstep = 5;
+ wrld->physubstep = 1;
+ wrld->maxphystep = 5;
+ }
+ }
+
+ if (main->versionfile < 249) {
+ Scene *sce;
+ for (sce= main->scene.first; sce; sce= sce->id.next)
+ sce->r.renderer= 0;
+
+ }
+
+ // correct introduce of seed for wind force
+ if (main->versionfile < 249 && main->subversionfile < 1) {
+ Object *ob;
+ for(ob = main->object.first; ob; ob= ob->id.next) {
+ if(ob->pd)
+ ob->pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128;
+ }
+
+ }
+
if (main->versionfile < 250) {
bScreen *screen;
Scene *scene;
@@ -8893,6 +9010,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
Mesh *me;
Scene *sce;
Tex *tx;
+ ParticleSettings *part;
for(screen= main->screen.first; screen; screen= screen->id.next) {
do_versions_windowmanager_2_50(screen);
@@ -8934,6 +9052,23 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
for(me= main->mesh.first; me; me= me->id.next) {
me->drawflag= ME_DRAWEDGES|ME_DRAWFACES|ME_DRAWCREASES;
}
+
+ /* particle settings conversion */
+ for(part= main->particle.first; part; part= part->id.next) {
+ if(part->draw_as) {
+ if(part->draw_as == PART_DRAW_DOT) {
+ part->ren_as = PART_DRAW_HALO;
+ part->draw_as = PART_DRAW_REND;
+ }
+ else if(part->draw_as <= PART_DRAW_AXIS) {
+ part->ren_as = PART_DRAW_HALO;
+ }
+ else {
+ part->ren_as = part->draw_as;
+ part->draw_as = PART_DRAW_REND;
+ }
+ }
+ }
}
/* TODO: should be moved into one of the version blocks once this branch moves to trunk and we can
@@ -8994,7 +9129,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
multires_load_old(dm, me->mr);
- *MultiresDM_get_flags(dm) |= MULTIRES_DM_UPDATE_ALWAYS;
+ MultiresDM_mark_as_modified(dm);
dm->release(dm);
orig->release(orig);
@@ -9014,6 +9149,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
}
+
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
@@ -9841,6 +9977,10 @@ static void expand_object(FileData *fd, Main *mainvar, Object *ob)
expand_doit(fd, mainvar, eoa->me);
}
}
+ else if(act->type==ACT_OBJECT) {
+ bObjectActuator *oa= act->data;
+ expand_doit(fd, mainvar, oa->reference);
+ }
else if(act->type==ACT_SCENE) {
bSceneActuator *sa= act->data;
expand_doit(fd, mainvar, sa->camera);
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c
index 54033ae6bb4..5c2e9912c54 100644
--- a/source/blender/bmesh/intern/bmesh_opdefines.c
+++ b/source/blender/bmesh/intern/bmesh_opdefines.c
@@ -37,7 +37,7 @@ BMOpDefine def_object_load_bmesh = {
BMOpDefine def_mesh_to_bmesh = {
"mesh_to_bmesh",
- {{BMOP_OPSLOT_PNT, "me"},
+ {{BMOP_OPSLOT_PNT, "mesh"},
{0, /*null-terminating sentinel*/}},
mesh_to_bmesh_exec,
0
diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c
index 7f07de80754..c176f20c26b 100644
--- a/source/blender/editors/animation/anim_draw.c
+++ b/source/blender/editors/animation/anim_draw.c
@@ -28,6 +28,7 @@
#include <string.h>
#include <stdio.h>
+#include <math.h>
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
@@ -81,8 +82,56 @@ static void draw_cfra_number (Scene *scene, View2D *v2d, float cfra, short time)
UI_view2d_getscale(v2d, &xscale, &yscale);
glScalef(1.0f/xscale, 1.0f, 1.0f);
- if (time)
- sprintf(str, " %.2f", FRA2TIME(CFRA));
+ if (time) {
+ /* Timecode:
+ * - In general, minutes and seconds should be shown, as most clips will be
+ * within this length. Hours will only be included if relevant.
+ * - Only show frames when zoomed in enough for them to be relevant
+ * (using separator of '!' for frames).
+ * When showing frames, use slightly different display to avoid confusion with mm:ss format
+ * TODO: factor into reusable function.
+ * Meanwhile keep in sync:
+ * source/blender/editors/animation/anim_draw.c
+ * source/blender/editors/interface/view2d.c
+ */
+ float val= FRA2TIME(CFRA);
+ int hours=0, minutes=0, seconds=0, frames=0;
+ char neg[2]= "";
+
+ /* get values */
+ if (val < 0) {
+ /* correction for negative values */
+ sprintf(neg, "-");
+ val = -val;
+ }
+ if (val >= 3600) {
+ /* hours */
+ /* XXX should we only display a single digit for hours since clips are
+ * VERY UNLIKELY to be more than 1-2 hours max? However, that would
+ * go against conventions...
+ */
+ hours= (int)val / 3600;
+ val= (float)fmod(val, 3600);
+ }
+ if (val >= 60) {
+ /* minutes */
+ minutes= (int)val / 60;
+ val= (float)fmod(val, 60);
+ }
+ {
+ /* seconds + frames
+ * Frames are derived from 'fraction' of second. We need to perform some additional rounding
+ * to cope with 'half' frames, etc., which should be fine in most cases
+ */
+ seconds= (int)val;
+ frames= (int)floor( ((val - seconds) * FPS) + 0.5f );
+ }
+
+ /* print timecode to temp string buffer */
+ if (hours) sprintf(str, " %s%02d:%02d:%02d!%02d", neg, hours, minutes, seconds, frames);
+ else if (minutes) sprintf(str, " %s%02d:%02d!%02d", neg, minutes, seconds, frames);
+ else sprintf(str, " %s%d!%02d", neg, seconds, frames);
+ }
else
sprintf(str, " %d", CFRA);
slen= (short)UI_GetStringWidth(str) - 1;
diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c
index c2a1199f6c6..aecf437a30b 100644
--- a/source/blender/editors/animation/anim_ipo_utils.c
+++ b/source/blender/editors/animation/anim_ipo_utils.c
@@ -33,6 +33,7 @@
*/
+#include <math.h>
#include <stdio.h>
#include "MEM_guardedalloc.h"
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index 9a40fb44f47..90804052370 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -728,8 +728,23 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_
float curval= 0.0f;
/* set additional flags for the F-Curve (i.e. only integer values) */
- if (RNA_property_type(prop) != PROP_FLOAT)
- fcu->flag |= FCURVE_INT_VALUES;
+ fcu->flag &= ~(FCURVE_INT_VALUES|FCURVE_DISCRETE_VALUES);
+ switch (RNA_property_type(prop)) {
+ case PROP_FLOAT:
+ /* do nothing */
+ break;
+ case PROP_INT:
+ /* do integer (only 'whole' numbers) interpolation between all points */
+ fcu->flag |= FCURVE_INT_VALUES;
+ break;
+ default:
+ /* do 'discrete' (i.e. enum, boolean values which cannot take any intermediate
+ * values at all) interpolation between all points
+ * - however, we must also ensure that evaluated values are only integers still
+ */
+ fcu->flag |= (FCURVE_DISCRETE_VALUES|FCURVE_INT_VALUES);
+ break;
+ }
/* apply special time tweaking */
// XXX check on this stuff...
@@ -1234,7 +1249,10 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
}
else if (G.f & G_DEBUG) {
printf("ptr.data = %p, prop = %p,", ptr.data, prop);
- printf("animateable = %d \n", RNA_property_animateable(&ptr, prop));
+ if(prop)
+ printf("animateable = %d \n", RNA_property_animateable(&ptr, prop));
+ else
+ printf("animateable = NULL \n");
}
if (success) {
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 1c113c25720..9c9be51f010 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -734,6 +734,7 @@ int join_armature(Scene *scene, View3D *v3d)
VecSubf(delta, curbone->tail, curbone->head);
vec_roll_to_mat3(delta, curbone->roll, temp);
+ Mat4One(premat); /* Mat4MulMat34 only sets 3x3 part */
Mat4MulMat34(premat, temp, mat);
Mat4MulVecfl(mat, curbone->head);
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index 45605ad472d..f010abdb7e7 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -2273,6 +2273,7 @@ void sk_applyCutGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
pt.type = PT_EXACT;
pt.mode = PT_PROJECT; /* take mode from neighbouring points */
VECCOPY(pt.p, isect->p);
+ VECCOPY(pt.no, isect->stroke->points[isect->before].no);
sk_insertStrokePoint(isect->stroke, &pt, isect->after);
}
@@ -2314,6 +2315,7 @@ void sk_applyTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
pt.type = PT_EXACT;
pt.mode = PT_PROJECT; /* take mode from neighbouring points */
VECCOPY(pt.p, isect->p);
+ VECCOPY(pt.no, isect->stroke->points[isect->before].no);
VecSubf(stroke_dir, isect->stroke->points[isect->after].p, isect->stroke->points[isect->before].p);
diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c
index dec4847f125..8cbfebebff6 100644
--- a/source/blender/editors/armature/poselib.c
+++ b/source/blender/editors/armature/poselib.c
@@ -328,7 +328,7 @@ static int poselib_add_menu_invoke (bContext *C, wmOperator *op, wmEvent *evt)
/* start building */
pup= uiPupMenuBegin(C, op->type->name, 0);
layout= uiPupMenuLayout(pup);
- uiLayoutContext(layout, WM_OP_EXEC_DEFAULT);
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
/* add new (adds to the first unoccupied frame) */
uiItemIntO(layout, "Add New", 0, "POSELIB_OT_pose_add", "frame", poselib_get_free_index(ob->poselib));
@@ -462,7 +462,7 @@ static int poselib_stored_pose_menu_invoke (bContext *C, wmOperator *op, wmEvent
/* start building */
pup= uiPupMenuBegin(C, op->type->name, 0);
layout= uiPupMenuLayout(pup);
- uiLayoutContext(layout, WM_OP_EXEC_DEFAULT);
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
/* add each marker to this menu */
for (marker=act->markers.first, i=0; marker; marker= marker->next, i++)
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index 3d8d446c579..0d7bb3c63cc 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -1688,18 +1688,25 @@ void pose_clear_user_transforms(Scene *scene, Object *ob)
if (ob->pose == NULL)
return;
- /* find selected bones */
- for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
- if (pchan->bone && (pchan->bone->flag & BONE_SELECTED) && (pchan->bone->layer & arm->layer)) {
- /* just clear the BONE_UNKEYED flag, allowing this bone to get overwritten by actions again */
- pchan->bone->flag &= ~BONE_UNKEYED;
+ /* if the object has an action, restore pose to the pose defined by the action by clearing pose on selected bones */
+ if (ob->action) {
+ /* find selected bones */
+ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if (pchan->bone && (pchan->bone->flag & BONE_SELECTED) && (pchan->bone->layer & arm->layer)) {
+ /* just clear the BONE_UNKEYED flag, allowing this bone to get overwritten by actions again */
+ pchan->bone->flag &= ~BONE_UNKEYED;
+ }
}
+
+ /* clear pose locking flag
+ * - this will only clear the user-defined pose in the selected bones, where BONE_UNKEYED has been cleared
+ */
+ ob->pose->flag |= POSE_DO_UNLOCK;
+ }
+ else {
+ /* no action, so restore entire pose to rest pose (cannot restore only selected bones) */
+ rest_pose(ob->pose);
}
-
- /* clear pose locking flag
- * - this will only clear the user-defined pose in the selected bones, where BONE_UNKEYED has been cleared
- */
- ob->pose->flag |= POSE_DO_UNLOCK;
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
BIF_undo_push("Clear User Transform");
diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c
index f8c17f80391..a25d0675cb0 100644
--- a/source/blender/editors/armature/reeb.c
+++ b/source/blender/editors/armature/reeb.c
@@ -2702,7 +2702,7 @@ static float cotan_weight(float *v1, float *v2, float *v3)
return Inpf(a, b)/clen;
}
-void addTriangle(EditVert *v1, EditVert *v2, EditVert *v3, long e1, long e2, long e3)
+void addTriangle(EditVert *v1, EditVert *v2, EditVert *v3, int e1, int e2, int e3)
{
/* Angle opposite e1 */
float t1= cotan_weight(v1->co, v2->co, v3->co) / e2;
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index ec4e79a7e5a..1b2c8ea6b11 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -226,7 +226,7 @@ void update_string(Curve *cu)
wcs2utf8s(cu->str, ef->textbuf);
}
-static int insert_into_textbuf(Object *obedit, unsigned long c)
+static int insert_into_textbuf(Object *obedit, uintptr_t c)
{
Curve *cu= obedit->data;
@@ -1290,7 +1290,7 @@ static int insert_text_invoke(bContext *C, wmOperator *op, wmEvent *evt)
Curve *cu= obedit->data;
EditFont *ef= cu->editfont;
static int accentcode= 0;
- unsigned long ascii = evt->ascii;
+ uintptr_t ascii = evt->ascii;
int alt= evt->alt, shift= evt->shift, ctrl= evt->ctrl;
int event= evt->type, val= evt->val;
wchar_t inserted_text[2]= {0};
diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c
index 0a33fc99013..fcdf83e98de 100644
--- a/source/blender/editors/datafiles/B.blend.c
+++ b/source/blender/editors/datafiles/B.blend.c
@@ -1,2101 +1,935 @@
/* DataToC output of file <B_blend> */
-int datatoc_B_blend_size= 98212;
+int datatoc_B_blend_size= 93184;
char datatoc_B_blend[]= {
- 66, 76, 69, 78,
- 68, 69, 82, 95,118, 50, 52, 49, 82, 69, 78, 68, 32, 0, 0, 0,144,240,255,191, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
-250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 83, 82, 0, 0,
-116, 0, 0, 0, 8,237,195, 8,109, 0, 0, 0, 1, 0, 0, 0, 96, 40,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 83, 82, 49, 45, 65,110,105,109, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-232,150,192, 8,168,240,195, 8,232,240,195, 8, 24,247,195, 8, 96,247,195, 8,152, 31,196, 8,136,251,196, 8, 0, 0,231, 3,
-143, 1,174, 4,232, 3, 32, 3, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,150,192, 8,110, 0, 0, 0, 1, 0, 0, 0,168,237,195, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,237,195, 8,110, 0, 0, 0, 1, 0, 0, 0,
-232,237,195, 8,232,150,192, 8, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,237,195, 8,
-110, 0, 0, 0, 1, 0, 0, 0, 40,238,195, 8,168,237,195, 8, 0, 0, 0, 0,232, 3, 32, 3, 0, 0, 0, 0, 68, 65, 84, 65,
- 20, 0, 0, 0, 40,238,195, 8,110, 0, 0, 0, 1, 0, 0, 0,104,238,195, 8,232,237,195, 8, 0, 0, 0, 0,232, 3, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,238,195, 8,110, 0, 0, 0, 1, 0, 0, 0,168,238,195, 8, 40,238,195, 8,
- 0, 0, 0, 0,232, 3,248, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,238,195, 8,110, 0, 0, 0, 1, 0, 0, 0,
-232,238,195, 8,104,238,195, 8, 0, 0, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,238,195, 8,
-110, 0, 0, 0, 1, 0, 0, 0, 40,239,195, 8,168,238,195, 8, 0, 0, 0, 0,232, 3, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65,
- 20, 0, 0, 0, 40,239,195, 8,110, 0, 0, 0, 1, 0, 0, 0,104,239,195, 8,232,238,195, 8, 0, 0, 0, 0,160, 2,248, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,239,195, 8,110, 0, 0, 0, 1, 0, 0, 0,168,239,195, 8, 40,239,195, 8,
- 0, 0, 0, 0,160, 2, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,239,195, 8,110, 0, 0, 0, 1, 0, 0, 0,
-232,239,195, 8,104,239,195, 8, 0, 0, 0, 0, 0, 0,188, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,239,195, 8,
-110, 0, 0, 0, 1, 0, 0, 0, 40,240,195, 8,168,239,195, 8, 0, 0, 0, 0,232, 3,188, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 20, 0, 0, 0, 40,240,195, 8,110, 0, 0, 0, 1, 0, 0, 0,104,240,195, 8,232,239,195, 8, 0, 0, 0, 0,204, 0,248, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,240,195, 8,110, 0, 0, 0, 1, 0, 0, 0,168,240,195, 8, 40,240,195, 8,
- 0, 0, 0, 0,204, 0, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,240,195, 8,110, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0,104,240,195, 8, 0, 0, 0, 0,204, 0,188, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,240,195, 8,
-111, 0, 0, 0, 1, 0, 0, 0, 48,241,195, 8, 0, 0, 0, 0,168,237,195, 8,232,237,195, 8, 1, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0, 48,241,195, 8,111, 0, 0, 0, 1, 0, 0, 0,120,241,195, 8,232,240,195, 8,232,150,192, 8,
- 40,238,195, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,241,195, 8,111, 0, 0, 0, 1, 0, 0, 0,
-192,241,195, 8, 48,241,195, 8,168,237,195, 8,168,238,195, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-192,241,195, 8,111, 0, 0, 0, 1, 0, 0, 0, 8,242,195, 8,120,241,195, 8,232,237,195, 8,232,238,195, 8, 1, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,242,195, 8,111, 0, 0, 0, 1, 0, 0, 0, 80,242,195, 8,192,241,195, 8,
-168,238,195, 8,232,238,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,242,195, 8,111, 0, 0, 0,
- 1, 0, 0, 0,152,242,195, 8, 8,242,195, 8,104,238,195, 8, 40,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,152,242,195, 8,111, 0, 0, 0, 1, 0, 0, 0,224,242,195, 8, 80,242,195, 8,232,238,195, 8,104,239,195, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,242,195, 8,111, 0, 0, 0, 1, 0, 0, 0, 40,243,195, 8,
-152,242,195, 8, 40,239,195, 8,104,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,243,195, 8,
-111, 0, 0, 0, 1, 0, 0, 0,112,243,195, 8,224,242,195, 8,104,238,195, 8,232,238,195, 8, 1, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0,112,243,195, 8,111, 0, 0, 0, 1, 0, 0, 0,184,243,195, 8, 40,243,195, 8,232,150,192, 8,
-168,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,243,195, 8,111, 0, 0, 0, 1, 0, 0, 0,
- 0,244,195, 8,112,243,195, 8,104,238,195, 8,232,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
- 0,244,195, 8,111, 0, 0, 0, 1, 0, 0, 0, 72,244,195, 8,184,243,195, 8, 40,238,195, 8,232,239,195, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,244,195, 8,111, 0, 0, 0, 1, 0, 0, 0,144,244,195, 8, 0,244,195, 8,
-168,239,195, 8,232,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,244,195, 8,111, 0, 0, 0,
- 1, 0, 0, 0,216,244,195, 8, 72,244,195, 8, 40,239,195, 8, 40,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,216,244,195, 8,111, 0, 0, 0, 1, 0, 0, 0, 32,245,195, 8,144,244,195, 8,168,238,195, 8,104,240,195, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,245,195, 8,111, 0, 0, 0, 1, 0, 0, 0,104,245,195, 8,
-216,244,195, 8,104,239,195, 8,104,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,245,195, 8,
-111, 0, 0, 0, 1, 0, 0, 0,176,245,195, 8, 32,245,195, 8, 40,240,195, 8,104,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0,176,245,195, 8,111, 0, 0, 0, 1, 0, 0, 0,248,245,195, 8,104,245,195, 8,168,239,195, 8,
-168,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,245,195, 8,111, 0, 0, 0, 1, 0, 0, 0,
- 64,246,195, 8,176,245,195, 8,232,239,195, 8,168,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
- 64,246,195, 8,111, 0, 0, 0, 1, 0, 0, 0,136,246,195, 8,248,245,195, 8,104,238,195, 8, 40,240,195, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,246,195, 8,111, 0, 0, 0, 1, 0, 0, 0,208,246,195, 8, 64,246,195, 8,
- 40,240,195, 8,168,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,246,195, 8,111, 0, 0, 0,
- 1, 0, 0, 0, 24,247,195, 8,136,246,195, 8,168,238,195, 8,168,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0, 24,247,195, 8,111, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,246,195, 8,104,240,195, 8,168,240,195, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0, 96,247,195, 8,113, 0, 0, 0, 1, 0, 0, 0,104, 5,196, 8,
- 0, 0, 0, 0,232,150,192, 8,168,239,195, 8,232,239,195, 8, 40,238,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,
- 0, 0, 0, 0,187, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,161, 0, 0, 0,187, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,
- 0, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 4,233, 3,161, 0, 3, 0, 3, 0, 79, 1, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 2,196, 8,232, 3,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 88,248,195, 8, 24, 2,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 88,248,195, 8,112, 0, 0, 0, 1, 0, 0, 0, 40,249,195, 8,
- 0, 0, 0, 0, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0, 40,249,195, 8,112, 0, 0, 0, 1, 0, 0, 0,248,249,195, 8, 88,248,195, 8, 77,101,115,104,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-248,249,195, 8,112, 0, 0, 0, 1, 0, 0, 0,200,250,195, 8, 40,249,195, 8, 65,110,105,109, 32,115,101,116,116,105,110,103,
-115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,200,250,195, 8,112, 0, 0, 0,
- 1, 0, 0, 0,152,251,195, 8,248,249,195, 8, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,152,251,195, 8,112, 0, 0, 0, 1, 0, 0, 0,104,252,195, 8,
-200,250,195, 8, 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,104,252,195, 8,112, 0, 0, 0, 1, 0, 0, 0, 56,253,195, 8,152,251,195, 8, 69,102,102,101,
- 99,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101,
- 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0,
-162, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
- 56,253,195, 8,112, 0, 0, 0, 1, 0, 0, 0, 8,254,195, 8,104,252,195, 8, 72,111,111,107,115, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,250,195, 8, 68, 65, 84, 65,164, 0, 0, 0, 8,254,195, 8,112, 0, 0, 0,
- 1, 0, 0, 0,216,254,195, 8, 56,253,195, 8, 80, 97,114,116,105, 99,108,101, 32, 73,110,116,101,114, 97, 99,116,105,111,110,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,152,251,195, 8, 68, 65, 84, 65,164, 0, 0, 0,216,254,195, 8,112, 0, 0, 0, 1, 0, 0, 0,168,255,195, 8,
- 8,254,195, 8, 83,111,102,116, 98,111,100,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,251,195, 8,
- 68, 65, 84, 65,164, 0, 0, 0,168,255,195, 8,112, 0, 0, 0, 1, 0, 0, 0,120, 0,196, 8,216,254,195, 8, 79,117,116,112,
-117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-120, 0,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 72, 1,196, 8,168,255,195, 8, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 72, 1,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 24, 2,196, 8,120, 0,196, 8, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 24, 2,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 72, 1,196, 8, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,212, 0, 0, 0,232, 2,196, 8, 94, 0, 0, 0, 1, 0, 0, 0,232, 3,196, 8, 0, 0, 0, 0, 4, 0, 0, 0,
- 51, 51, 51, 63, 1, 86,141, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0,193, 0, 64,212, 68, 0, 0, 0,193, 0, 0,104, 67, 0, 0, 0,193,145,133,185, 68, 0, 0, 0,193, 0, 0,104, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67,
- 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0,233, 3,161, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,232, 3,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-232, 2,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 86,141, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,104, 5,196, 8,113, 0, 0, 0,
- 1, 0, 0, 0, 96, 6,196, 8, 96,247,195, 8,168,238,195, 8,168,237,195, 8,232,237,195, 8,232,238,195, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0, 33, 3, 0, 0,
- 0, 0, 0, 0,232, 3, 0, 0, 32, 3, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7,233, 3, 1, 0, 3, 0, 3, 1,
-196, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0, 96, 6,196, 8,113, 0, 0, 0,
- 1, 0, 0, 0, 88, 13,196, 8,104, 5,196, 8, 40,240,195, 8,104,240,195, 8,104,239,195, 8, 40,239,195, 8, 0, 0, 0, 0,
- 71,187,204, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-205, 0, 0, 0,159, 2, 0, 0,249, 0, 0, 0, 5, 3, 0, 0,205, 0, 0, 0,159, 2, 0, 0,249, 0, 0, 0, 19, 1, 0, 0,
-205, 0, 0, 0,159, 2, 0, 0, 20, 1, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,211, 1,242, 1, 1, 0, 3, 0,
-251, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 8,196, 8,216, 11,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 7,196, 8, 40, 8,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 88, 7,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 40, 8,196, 8, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 0,210, 0, 62, 1,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 40, 8,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 88, 7,196, 8, 51, 68, 32, 86,105,101,119,112,111,114,116, 32,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 0, 8, 0, 62, 1,204, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,180, 2, 0, 0,248, 8,196, 8, 89, 0, 0, 0, 1, 0, 0, 0,216, 11,196, 8, 0, 0, 0, 0, 1, 0, 0, 0,
- 51, 51, 51, 63, 1, 86,156, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 71,187,204, 61, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,178, 13, 32, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,173, 42, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-255,255,249,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 71,187,204, 61, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,
-111, 18, 3,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,148,173, 42, 65, 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 8, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
-205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 0, 1, 0, 7, 0,175, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,221,162, 77, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,221,162, 77, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221,162, 77, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,216, 11,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-248, 8,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 86,156, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 66, 76, 69, 78, 68, 69, 82, 95, 86, 50, 53, 48, 82, 69, 78, 68, 0, 0, 0, 32,191,255,240,240, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 1, 0, 0, 0,250, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 71, 76, 79, 66, 0, 0, 0, 32,191,255,240,232, 0, 0, 0,181, 0, 0, 0, 1, 32, 32, 32, 48, 0, 0, 0, 0, 0,250, 0, 0,
+ 0, 1, 1, 0, 0,232,214, 96, 1, 7,176, 32, 0, 0, 16, 0, 0, 4, 32,128, 0, 0, 87, 77, 0, 0, 0,124, 0,232,212,240,
+ 0, 0, 1, 68, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,213,160,
+ 0,232,213,160, 0,232,213,160, 0,232,213,160, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238,152, 96,
+ 5,210, 11, 64, 68, 65, 84, 65, 0, 0, 0,144, 0,232,213,160, 0, 0, 1, 69, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,237,219, 32, 0, 0, 0, 1, 0, 0, 0, 0, 0,232,214, 96,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 14, 7,108, 4,108, 0, 0, 0, 0, 0, 1, 3,238,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,238,151,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227,142,160,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6,147, 67,240, 6,160,144,208, 0,238,152,224, 0,238,153,208, 5,209,239,128, 5,210, 15,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 0,136, 0,232,214, 96, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,215, 16, 0,232,218, 80, 0,232,218,144, 0,232,222,208,
+ 0,232,223, 16, 0,233, 19,208, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7,176, 32, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 8,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,215, 16, 0, 0, 0,174, 0, 0, 0, 1, 0,232,215, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,215, 80, 0, 0, 0,174, 0, 0, 0, 1,
+ 0,232,215,144, 0,232,215, 16, 0, 0, 0, 0, 0, 0, 4,108, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,215,144,
+ 0, 0, 0,174, 0, 0, 0, 1, 0,232,215,208, 0,232,215, 80, 0, 0, 0, 0, 7,108, 4,108, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 20, 0,232,215,208, 0, 0, 0,174, 0, 0, 0, 1, 0,232,216, 16, 0,232,215,144, 0, 0, 0, 0, 7,108, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,216, 16, 0, 0, 0,174, 0, 0, 0, 1, 0,232,216, 80, 0,232,215,208,
+ 0, 0, 0, 0, 0, 0, 4, 81, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,216, 80, 0, 0, 0,174, 0, 0, 0, 1,
+ 0,232,216,144, 0,232,216, 16, 0, 0, 0, 0, 7,108, 4, 81, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,216,144,
+ 0, 0, 0,174, 0, 0, 0, 1, 0,232,216,208, 0,232,216, 80, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 20, 0,232,216,208, 0, 0, 0,174, 0, 0, 0, 1, 0,232,217, 16, 0,232,216,144, 0, 0, 0, 0, 7,108, 0, 64,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,217, 16, 0, 0, 0,174, 0, 0, 0, 1, 0,232,217, 80, 0,232,216,208,
+ 0, 0, 0, 0, 5,224, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,217, 80, 0, 0, 0,174, 0, 0, 0, 1,
+ 0,232,217,144, 0,232,217, 16, 0, 0, 0, 0, 5,224, 4, 81, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,217,144,
+ 0, 0, 0,174, 0, 0, 0, 1, 0,232,217,208, 0,232,217, 80, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 1, 68, 65, 84, 65,
+ 0, 0, 0, 20, 0,232,217,208, 0, 0, 0,174, 0, 0, 0, 1, 0,232,218, 16, 0,232,217,144, 0, 0, 0, 0, 5,224, 0, 76,
+ 0, 0, 0, 1, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,218, 16, 0, 0, 0,174, 0, 0, 0, 1, 0,232,218, 80, 0,232,217,208,
+ 0, 0, 0, 0, 5,224, 3, 76, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 0,232,218, 80, 0, 0, 0,174, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0,232,218, 16, 0, 0, 0, 0, 7,108, 3, 76, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,218,144,
+ 0, 0, 0,175, 0, 0, 0, 1, 0,232,218,208, 0, 0, 0, 0, 0,232,215, 80, 0,232,215,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 0,232,218,208, 0, 0, 0,175, 0, 0, 0, 1, 0,232,219, 16, 0,232,218,144, 0,232,215, 80,
+ 0,232,216, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,219, 16, 0, 0, 0,175, 0, 0, 0, 1,
+ 0,232,219, 80, 0,232,218,208, 0,232,215,144, 0,232,216, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
+ 0,232,219, 80, 0, 0, 0,175, 0, 0, 0, 1, 0,232,219,144, 0,232,219, 16, 0,232,216, 16, 0,232,216, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,219,144, 0, 0, 0,175, 0, 0, 0, 1, 0,232,219,208, 0,232,219, 80,
+ 0,232,215, 16, 0,232,217, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,219,208, 0, 0, 0,175,
+ 0, 0, 0, 1, 0,232,220, 16, 0,232,219,144, 0,232,215,208, 0,232,217, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 0,232,220, 16, 0, 0, 0,175, 0, 0, 0, 1, 0,232,220, 80, 0,232,219,208, 0,232,216, 16, 0,232,217, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,220, 80, 0, 0, 0,175, 0, 0, 0, 1, 0,232,220,144,
+ 0,232,220, 16, 0,232,216, 80, 0,232,217, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,220,144,
+ 0, 0, 0,175, 0, 0, 0, 1, 0,232,220,208, 0,232,220, 80, 0,232,215, 16, 0,232,217,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 0,232,220,208, 0, 0, 0,175, 0, 0, 0, 1, 0,232,221, 16, 0,232,220,144, 0,232,216, 16,
+ 0,232,217,144, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,221, 16, 0, 0, 0,175, 0, 0, 0, 1,
+ 0,232,221, 80, 0,232,220,208, 0,232,217, 80, 0,232,217,208, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
+ 0,232,221, 80, 0, 0, 0,175, 0, 0, 0, 1, 0,232,221,144, 0,232,221, 16, 0,232,217, 16, 0,232,217,208, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,221,144, 0, 0, 0,175, 0, 0, 0, 1, 0,232,221,208, 0,232,221, 80,
+ 0,232,217,144, 0,232,217,208, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,221,208, 0, 0, 0,175,
+ 0, 0, 0, 1, 0,232,222, 16, 0,232,221,144, 0,232,217, 16, 0,232,218, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 0,232,222, 16, 0, 0, 0,175, 0, 0, 0, 1, 0,232,222, 80, 0,232,221,208, 0,232,217, 80, 0,232,218, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,222, 80, 0, 0, 0,175, 0, 0, 0, 1, 0,232,222,144,
+ 0,232,222, 16, 0,232,216, 80, 0,232,218, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,232,222,144,
+ 0, 0, 0,175, 0, 0, 0, 1, 0,232,222,208, 0,232,222, 80, 0,232,215,208, 0,232,218, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 0,232,222,208, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0,232,222,144, 0,232,218, 16,
+ 0,232,218, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,112, 0,232,223, 16, 0, 0, 0,179, 0, 0, 0, 1,
+ 0,232,225,240, 0, 0, 0, 0, 0,232,216, 16, 0,232,215, 80, 0,232,215,144, 0,232,216, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7,108, 0, 0, 4, 82, 0, 0, 4,108, 7, 7, 7,109, 0, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 69,160, 0,233, 31,144, 0,233, 31,144, 0,232,223,176, 0,232,224,208,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5,216,137, 0, 5,209,241, 64, 68, 65, 84, 65, 0, 0, 0,236, 0,232,223,176, 0, 0, 0,180,
+ 0, 0, 0, 1, 0,232,224,208, 0, 0, 0, 0, 0, 0, 0, 0, 68, 68,192, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0,
+ 68,237,160, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,108, 0, 0, 0, 0, 0, 0, 0, 25, 68,237,128, 0,
+ 65,200, 0, 0, 68,237,128, 0, 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12,
+ 0, 10, 7,109, 0, 26, 7,109, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,108, 0, 0, 4, 82,
+ 0, 0, 4,107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,109, 0, 26, 0, 2, 0, 1, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 70,192, 6,144,192,176, 6,144,192,176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5,209,243, 64, 5,209,243,176, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,232,224,208, 0, 0, 0,180,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0,232,223,176, 0, 0, 0, 0, 68,158, 64, 0, 0, 0, 0, 0, 65, 16, 0, 0, 0, 0, 0, 0,
+ 69, 21,180, 43, 63,184, 81,222, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,108, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 35,215, 10, 68,122, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 4, 0,
+ 0, 10, 7,109, 0, 6, 7,109, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,108,
+ 0, 0, 4,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,229, 70, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,112, 0,232,225,240, 0, 0, 0,179,
+ 0, 0, 0, 1, 0,233, 2, 0, 0,232,223, 16, 0,232,217, 16, 0,232,218, 16, 0,232,218, 80, 0,232,215,208, 0, 0, 0, 0,
+ 0, 0, 5,225, 0, 0, 7,108, 0, 0, 0, 0, 0, 0, 3, 75, 4, 4, 1,140, 3, 76, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 67, 96, 0,232,253,144, 0,233, 0,224, 0,232,226,144,
+ 0,232,227,176, 0, 0, 0, 0, 0, 0, 0, 0, 5,209,244, 32, 5,209,244,224, 68, 65, 84, 65, 0, 0, 0,236, 0,232,226,144,
+ 0, 0, 0,180, 0, 0, 0, 1, 0,232,227,176, 0, 0, 0, 0, 0, 0, 0, 0, 67,240, 0, 0, 0, 0, 0, 0, 65,208, 0, 0,
+ 0, 0, 0, 0, 67,198, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,139, 0, 0, 0, 0, 0, 0, 0, 25,
+ 67,137,128, 0, 65,200, 0, 0, 67,137,128, 0, 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3,
+ 0, 4, 4, 12, 0, 10, 1,140, 0, 26, 1,140, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,225, 0, 0, 7,108,
+ 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,140, 0, 26, 0, 3, 0, 1,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 68,128, 6,157, 67,144, 6,157, 67,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5,209,246,144, 5,209,247,112, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,232,227,176,
+ 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0,232,226,144, 0, 0, 0, 0, 67,163,128, 0,196,133,192, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,163,134,146,196, 41,151, 74,192, 50,112,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,139, 0, 0, 0, 0, 0, 0, 3, 49,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3,
+ 0, 2, 4, 0, 0, 6, 1,140, 3, 50, 1,140, 3, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,225, 0, 0, 7,108,
+ 0, 0, 0, 26, 0, 0, 3, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,140, 3, 50, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 67,240, 6,160,103, 16, 6,160,111,112, 0,232,228,208,
+ 0,232,252,112, 5,209,249, 48, 5,209,251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,228,208,
+ 0, 0, 0,176, 0, 0, 0, 1, 0,232,229,240, 0, 0, 0, 0, 5,213,216,128, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 56, 1, 71, 0,176,
+ 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240,
+ 0,232,229,240, 0, 0, 0,176, 0, 0, 0, 1, 0,232,231, 16, 0,232,228,208, 5,213,218, 16, 0, 0, 0, 0, 68,105,109,101,
+110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,
+110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0, 88, 13,196, 8,113, 0, 0, 0,
- 1, 0, 0, 0,240, 24,196, 8, 96, 6,196, 8, 40,239,195, 8,104,239,195, 8,232,238,195, 8,104,238,195, 8, 0, 0, 0, 0,
- 1,184,157, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0,
-161, 2, 0, 0,232, 3, 0, 0,249, 0, 0, 0, 5, 3, 0, 0,161, 2, 0, 0,232, 3, 0, 0,249, 0, 0, 0, 19, 1, 0, 0,
-161, 2, 0, 0,232, 3, 0, 0, 20, 1, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 72, 1,242, 1, 3, 0, 3, 0,
-203, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 15,196, 8,112, 23,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 14,196, 8, 80, 14,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 80, 14,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,112,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,167, 0, 62, 1,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 15,196, 8, 93, 0, 0, 0, 1, 0, 0, 0,120, 16,196, 8,
- 0, 0, 0, 0, 2, 0, 0, 0, 51, 51, 51, 63, 1, 86,160, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,205,204,204,189,205,204,140, 63, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,242, 1, 0, 0, 16, 0, 0, 0, 7, 1, 0, 0,
- 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 7, 1, 0, 0, 16, 0, 0, 0,242, 1, 0, 0, 10,215, 35, 60, 10,215, 35, 60,
- 0, 96,106, 70, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 12,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,205,204,204,189,
-205,204,140, 63, 68, 65, 84, 65,196, 0, 0, 0,120, 16,196, 8, 97, 0, 0, 0, 1, 0, 0, 0,104, 17,196, 8, 32, 15,196, 8,
- 3, 0, 0, 0, 51, 51, 51, 63, 1, 86,160, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,182, 67, 0, 0,209,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,182, 67, 0, 0,190,195, 0, 0, 0,181, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
-124, 1, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0,190,195, 0, 0,190,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 1, 0, 1, 0, 1, 0, 1, 0,108, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 3,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-160, 0, 0, 0,104, 17,196, 8,166, 0, 0, 0, 1, 0, 0, 0, 56, 18,196, 8,120, 16,196, 8, 11, 0, 0, 0, 51, 51, 51, 63,
- 1, 86,160, 92, 0, 0,128,192, 0, 0,122, 67, 0, 0,128,192, 0, 0,127, 67, 0, 0,128,192, 0, 0, 72, 66, 0, 0,128,192,
- 0, 0,127, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 16, 0, 0, 0,124, 1, 0, 0, 0, 0,128, 63, 0,128,129, 67, 0, 0,250, 70,
- 0,128,129, 67,205,204,204, 61, 0, 0, 32, 65, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 56, 18,196, 8,100, 0, 0, 0,
- 1, 0, 0, 0,224, 18,196, 8,104, 17,196, 8, 9, 0, 0, 0, 51, 51, 51, 63, 1, 86,160, 92, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,240, 3,197, 8, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61, 5, 0, 0, 0,
- 17, 0, 0, 0,114, 1, 0, 0,116, 1, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0,116, 1, 0, 0, 68, 65, 84, 65,
-164, 0, 0, 0,224, 18,196, 8, 99, 0, 0, 0, 1, 0, 0, 0,176, 19,196, 8, 56, 18,196, 8, 13, 0, 0, 0, 51, 51, 51, 63,
- 1, 86,160, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,122, 68, 0, 0, 0, 0, 0, 0,122, 68, 0, 0,160,192, 0, 0,130, 66, 0, 0, 0, 0, 0, 0,182, 67,108, 1, 0, 0,
-124, 1, 0, 0, 0, 0, 0, 0,124, 1, 0, 0,196, 0, 0, 0,108, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,196, 0, 0, 0,
-108, 1, 0, 0, 16, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 68, 0, 0,122, 68,205,204,204, 61,
- 0, 0, 72, 66, 10, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,176, 0, 0, 0,176, 19,196, 8,
-177, 0, 0, 0, 1, 0, 0, 0,144, 20,196, 8,224, 18,196, 8, 12, 0, 0, 0, 51, 51, 51, 63, 1, 86,160, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 2, 66, 0, 0,128,193, 0, 0,247, 67, 0, 0, 0,191,
- 0, 0, 2, 66, 0, 0,128,193, 0, 0,247, 67,108, 1, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0,128, 0, 0, 0,
-108, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 0,108, 1, 0, 0, 16, 0, 0, 0, 14, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,250, 70, 0, 0,122, 68, 10,215, 35, 60, 0, 0, 72, 66, 10, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0,
-144, 20,196, 8, 89, 0, 0, 0, 1, 0, 0, 0,112, 23,196, 8,176, 19,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 86,160, 92,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 1,184,157, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 33,195, 79, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,254,249,195,125,254, 71,194,
- 0, 0, 0, 0, 0, 0, 0, 0,173,128,249, 67,138, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 1, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 3, 0, 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 84, 1, 0, 0,112, 23,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 20,196, 8, 5, 0, 0, 0,
- 51, 51, 51, 63, 1, 86,160, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,240, 24,196, 8,113, 0, 0, 0, 1, 0, 0, 0,152, 31,196, 8,
- 88, 13,196, 8,168,240,195, 8, 40,240,195, 8,104,238,195, 8,232,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 0, 0, 0,232, 3, 0, 0,
-189, 0, 0, 0,247, 0, 0, 0,205, 0, 0, 0,232, 3, 0, 0,189, 0, 0, 0,215, 0, 0, 0,205, 0, 0, 0,232, 3, 0, 0,
-216, 0, 0, 0,247, 0, 0, 0, 0, 0, 0, 0, 1, 0, 15, 15, 28, 3, 32, 0, 3, 0, 3, 0,192, 2, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 27,196, 8, 24, 30,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
-232, 25,196, 8,184, 26,196, 8, 68, 65, 84, 65,164, 0, 0, 0,232, 25,196, 8,112, 0, 0, 0, 1, 0, 0, 0,184, 26,196, 8,
- 0, 0, 0, 0, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,184, 26,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 25,196, 8, 77,101,115,104,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,148, 0, 0, 0,
-136, 27,196, 8,102, 0, 0, 0, 1, 0, 0, 0, 72, 28,196, 8, 0, 0, 0, 0, 15, 0, 0, 0, 51, 51, 51, 63, 1, 86,170, 76,
- 0, 0,128,192, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 16, 66,123, 10, 4,194,181,186,152, 67, 0, 0, 0, 0, 0, 0, 16, 66,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 28, 3, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,128, 63, 0, 0, 16, 66, 0, 0,250, 70, 0, 0, 16, 66,
-205,204,204, 61, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 68, 65, 84, 65,160, 0, 0, 0, 72, 28,196, 8,166, 0, 0, 0, 1, 0, 0, 0, 24, 29,196, 8,136, 27,196, 8, 11, 0, 0, 0,
- 51, 51, 51, 63, 1, 86,170, 76, 0, 0,128,192, 0, 0,122, 67, 0, 0,128,192, 0, 0,127, 67, 0, 0,128,192, 0, 0, 72, 66,
- 0, 0,128,192, 0, 0,127, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 3, 0, 0,
- 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, 16, 0, 0, 0, 36, 0, 0, 0, 0, 0,128, 63, 0,128,129, 67,
- 0, 0,250, 70, 0,128,129, 67,205,204,204, 61, 0, 0, 32, 65, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,212, 0, 0, 0, 24, 29,196, 8,
- 94, 0, 0, 0, 1, 0, 0, 0, 24, 30,196, 8, 72, 28,196, 8, 4, 0, 0, 0, 51, 51, 51, 63, 1, 86,170, 76, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,193, 0, 0, 35, 68, 0, 0, 0,193,
- 0, 0,104, 67,135, 22, 0,193,178, 16, 96, 68,112, 74,103, 67, 0, 0,104, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0,
- 1, 0, 1, 0,251, 4, 1, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 84, 1, 0, 0, 24, 30,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 29,196, 8, 5, 0, 0, 0, 51, 51, 51, 63,
- 1, 86,170, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,152, 31,196, 8,113, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 24,196, 8,
-168,239,195, 8,168,238,195, 8,104,240,195, 8,168,240,195, 8, 0, 0, 0, 0,159,125, 11, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187,
- 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,203, 0, 0, 0,189, 0, 0, 0,
- 5, 3, 0, 0, 0, 0, 0, 0,203, 0, 0, 0,189, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,203, 0, 0, 0,216, 0, 0, 0,
- 5, 3, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3,204, 0, 46, 2, 3, 0, 3, 0,145, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 34,196, 8,224, 38,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,144, 32,196, 8,
- 96, 33,196, 8, 68, 65, 84, 65,164, 0, 0, 0,144, 32,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 96, 33,196, 8, 0, 0, 0, 0,
- 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-140, 0,210, 0, 62, 1,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-164, 0, 0, 0, 96, 33,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 32,196, 8, 51, 68, 32, 86,105,101,119,112,
-111,114,116, 32,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 8, 0, 62, 1,204, 0,
- 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,196, 0, 0, 0, 48, 34,196, 8,
- 97, 0, 0, 0, 1, 0, 0, 0, 0, 36,196, 8, 0, 0, 0, 0, 3, 0, 0, 0, 51, 51, 51, 63, 1, 89, 2, 28, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 67, 0, 0,190,194, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 60, 67, 0,128, 11,196, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 46, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 46, 2, 0, 0, 0, 0,192,194,
- 0,128, 11,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 1, 0, 1, 0, 1, 0,188, 0, 46, 2,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 35,196, 8, 1, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32, 35,196, 8,128, 0, 0, 0, 1, 0, 0, 0,
- 10, 0, 0, 0, 10, 0, 0, 0, 88, 35,196, 8, 68, 65, 84, 65,120, 0, 0, 0, 88, 35,196, 8,127, 0, 0, 0, 10, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,136,251,196, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 2,197, 8, 0, 0, 0, 0, 1, 0, 1, 0,
- 72, 12,197, 8, 0, 0, 0, 0, 1, 0, 1, 0, 24, 22,197, 8, 0, 0, 0, 0, 1, 0, 1, 0,184, 18,197, 8, 0, 0, 0, 0,
- 1, 0, 1, 0, 8, 21,197, 8, 0, 0, 0, 0, 1, 0, 1, 0,152, 15,197, 8, 0, 0, 0, 0, 1, 0, 1, 0,120, 1,197, 8,
- 0, 0, 0, 0, 1, 0, 1, 0, 40, 9,197, 8, 0, 0, 0, 0, 1, 0, 1, 0,216, 0,197, 8, 68, 65, 84, 65,180, 2, 0, 0,
- 0, 36,196, 8, 89, 0, 0, 0, 1, 0, 0, 0,224, 38,196, 8, 48, 34,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 89, 2, 28,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,159,125, 11, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,102,233,234, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,148,173, 42, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,159,125, 11, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187, 0, 0, 0,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-148,173, 42, 65, 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 3, 0, 0, 0, 8, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 1, 0, 7, 0,175, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 88,134, 55, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88,134, 55, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,134, 55, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 84, 1, 0, 0,224, 38,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 36,196, 8, 5, 0, 0, 0,
- 51, 51, 51, 63, 1, 89, 2, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 0, 0,116, 0, 0, 0, 96, 40,196, 8,109, 0, 0, 0, 1, 0, 0, 0,192, 99,196, 8,
- 8,237,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 50, 45, 77,111,100,101,108, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 41,196, 8,192, 42,196, 8, 0, 43,196, 8,136, 45,196, 8,208, 45,196, 8,
-144, 86,196, 8,136,251,196, 8, 1, 0, 0, 5,254,255,253, 3, 0, 5, 0, 4, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 8, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 41,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0, 64, 41,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
- 64, 41,196, 8,110, 0, 0, 0, 1, 0, 0, 0,128, 41,196, 8, 0, 41,196, 8, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,128, 41,196, 8,110, 0, 0, 0, 1, 0, 0, 0,192, 41,196, 8, 64, 41,196, 8, 0, 0, 0, 0,
- 0, 5, 0, 4, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 41,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 0, 42,196, 8,
-128, 41,196, 8, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 42,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0, 64, 42,196, 8,192, 41,196, 8, 0, 0, 0, 0, 0, 0,236, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
- 64, 42,196, 8,110, 0, 0, 0, 1, 0, 0, 0,128, 42,196, 8, 0, 42,196, 8, 0, 0, 0, 0, 0, 5,236, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,128, 42,196, 8,110, 0, 0, 0, 1, 0, 0, 0,192, 42,196, 8, 64, 42,196, 8, 0, 0, 0, 0,
- 0, 0,224, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 42,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-128, 42,196, 8, 0, 0, 0, 0, 0, 5,224, 3, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 43,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0, 72, 43,196, 8, 0, 0, 0, 0, 64, 41,196, 8,128, 41,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0, 72, 43,196, 8,111, 0, 0, 0, 1, 0, 0, 0,144, 43,196, 8, 0, 43,196, 8, 0, 41,196, 8,192, 41,196, 8,
- 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144, 43,196, 8,111, 0, 0, 0, 1, 0, 0, 0,216, 43,196, 8,
- 72, 43,196, 8, 0, 41,196, 8, 0, 42,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 43,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0, 32, 44,196, 8,144, 43,196, 8,192, 41,196, 8, 64, 42,196, 8, 1, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0, 32, 44,196, 8,111, 0, 0, 0, 1, 0, 0, 0,104, 44,196, 8,216, 43,196, 8, 0, 42,196, 8,
- 64, 42,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 44,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-176, 44,196, 8, 32, 44,196, 8, 64, 41,196, 8,128, 42,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-176, 44,196, 8,111, 0, 0, 0, 1, 0, 0, 0,248, 44,196, 8,104, 44,196, 8,128, 41,196, 8,192, 42,196, 8, 1, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 44,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 64, 45,196, 8,176, 44,196, 8,
-128, 42,196, 8,192, 42,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 45,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0,136, 45,196, 8,248, 44,196, 8, 0, 42,196, 8,128, 42,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,136, 45,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 45,196, 8, 64, 42,196, 8,192, 42,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,208, 45,196, 8,113, 0, 0, 0, 1, 0, 0, 0,152, 85,196, 8,
- 0, 0, 0, 0, 0, 41,196, 8, 0, 42,196, 8, 64, 42,196, 8,192, 41,196, 8, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,226,215,163,188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
- 0, 0, 0, 0,235, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,209, 0, 0, 0,235, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
- 0, 0, 0, 0,208, 0, 0, 0, 5, 0, 4, 0, 2, 0, 4, 4, 1, 5,209, 0, 1, 1, 1, 0, 79, 1, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 79,196, 8, 24, 84,196, 8, 56,189,193, 8,112,188,195, 8,
-200, 46,196, 8,144,165,193, 8, 68, 65, 84, 65,164, 0, 0, 0,200, 46,196, 8,112, 0, 0, 0, 1, 0, 0, 0,152, 47,196, 8,
- 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,152, 47,196, 8,112, 0, 0, 0, 1, 0, 0, 0,104, 48,196, 8,200, 46,196, 8, 76, 97,109,112,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-104, 48,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 56, 49,196, 8,152, 47,196, 8, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 56, 49,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 8, 50,196, 8,104, 48,196, 8, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 8, 50,196, 8,112, 0, 0, 0, 1, 0, 0, 0,216, 50,196, 8,
- 56, 49,196, 8, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 49,196, 8,
- 68, 65, 84, 65,164, 0, 0, 0,216, 50,196, 8,112, 0, 0, 0, 1, 0, 0, 0,168, 51,196, 8, 8, 50,196, 8, 80,114,101,118,
-105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-168, 51,196, 8,112, 0, 0, 0, 1, 0, 0, 0,120, 52,196, 8,216, 50,196, 8, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,120, 52,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 72, 53,196, 8,168, 51,196, 8, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 72, 53,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 24, 54,196, 8,
-120, 52,196, 8, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0, 24, 54,196, 8,112, 0, 0, 0, 1, 0, 0, 0,232, 54,196, 8, 72, 53,196, 8, 77,105,115,116,
- 32, 83,116, 97,114,115, 32, 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-232, 54,196, 8,112, 0, 0, 0, 1, 0, 0, 0,184, 55,196, 8, 24, 54,196, 8, 84,101,120,116,117,114,101, 32, 97,110,100, 32,
- 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,184, 55,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,136, 56,196, 8,232, 54,196, 8, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 88,
+ 1, 71, 0,200, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,240, 0,232,231, 16, 0, 0, 0,176, 0, 0, 0, 1, 0,232,232, 48, 0,232,229,240, 5,213,219,160, 0, 0, 0, 0,
+ 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,232, 54,196, 8, 68, 65, 84, 65,164, 0, 0, 0,136, 56,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 88, 57,196, 8,
-184, 55,196, 8, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0, 88, 57,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 40, 58,196, 8,136, 56,196, 8, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
- 40, 58,196, 8,112, 0, 0, 0, 1, 0, 0, 0,248, 58,196, 8, 88, 57,196, 8, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,253,240, 1, 71, 0, 80, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,240, 0,232,232, 48, 0, 0, 0,176, 0, 0, 0, 1, 0,232,233, 80, 0,232,231, 16, 5,213,222,176,
+ 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,248, 58,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,200, 59,196, 8, 40, 58,196, 8, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,200, 59,196, 8,112, 0, 0, 0, 1, 0, 0, 0,152, 60,196, 8,
-248, 58,196, 8, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,253,136, 1, 71, 0, 80, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,233, 80, 0, 0, 0,176, 0, 0, 0, 1, 0,232,234,112, 0,232,232, 48,
+ 5,213,224, 64, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,152, 60,196, 8,112, 0, 0, 0, 1, 0, 0, 0,104, 61,196, 8,200, 59,196, 8, 77,101,115,104,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-104, 61,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 56, 62,196, 8,152, 60,196, 8, 77,101,115,104, 32, 84,111,111,108,115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 1, 71, 0,174, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,234,112, 0, 0, 0,176, 0, 0, 0, 1, 0,232,235,144,
+ 0,232,233, 80, 5,213,225,208, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 56, 62,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 8, 63,196, 8,104, 61,196, 8, 77,101,115,104, 32, 84,111,111,108,115, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 5, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 8, 63,196, 8,112, 0, 0, 0, 1, 0, 0, 0,216, 63,196, 8,
- 56, 62,196, 8, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251,214, 1, 71, 0,212, 0, 20, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,235,144, 0, 0, 0,176, 0, 0, 0, 1,
+ 0,232,236,176, 0,232,234,112, 0, 0, 0, 0, 0, 0, 0, 0, 76,101,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,216, 63,196, 8,112, 0, 0, 0, 1, 0, 0, 0,168, 64,196, 8, 8, 63,196, 8, 83,104, 97,100,
-101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 76,196, 8, 68, 65, 84, 65,164, 0, 0, 0,
-168, 64,196, 8,112, 0, 0, 0, 1, 0, 0, 0,120, 65,196, 8,216, 63,196, 8, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,101,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,120, 65,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 72, 66,196, 8,168, 64,196, 8, 65,110,105,109, 32,115,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 81, 1, 74, 0,151, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,236,176, 0, 0, 0,176,
+ 0, 0, 0, 1, 0,232,237,208, 0,232,235,144, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 72, 66,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 24, 67,196, 8,
-120, 65,196, 8, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0, 24, 67,196, 8,112, 0, 0, 0, 1, 0, 0, 0,232, 67,196, 8, 72, 66,196, 8, 67,111,110,115,
-116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101,
- 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-232, 67,196, 8,112, 0, 0, 0, 1, 0, 0, 0,184, 68,196, 8, 24, 67,196, 8, 83, 99,114,105,112,116,108,105,110,107,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,114,105,112,116, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,141, 1, 74, 0,107, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,237,208,
+ 0, 0, 0,176, 0, 0, 0, 1, 0,232,238,240, 0,232,236,176, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,184, 68,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,136, 69,196, 8,232, 67,196, 8, 69,102,102,101, 99,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,162, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 67,196, 8, 68, 65, 84, 65,164, 0, 0, 0,136, 69,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 88, 70,196, 8,
-184, 68,196, 8, 77, 97,112, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 96, 1, 74, 0,136,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240,
+ 0,232,238,240, 0, 0, 0,176, 0, 0, 0, 1, 0,232,240, 16, 0,232,237,208, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
+100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
+100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 64,196, 8,
- 68, 65, 84, 65,164, 0, 0, 0, 88, 70,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 40, 71,196, 8,136, 69,196, 8, 77, 97,112, 32,
- 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 64,196, 8, 68, 65, 84, 65,164, 0, 0, 0,
- 40, 71,196, 8,112, 0, 0, 0, 1, 0, 0, 0,248, 71,196, 8, 88, 70,196, 8, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,247,
+ 1, 74, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,240, 0,232,240, 16, 0, 0, 0,176, 0, 0, 0, 1, 0,232,241, 48, 0,232,238,240, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65,109, 98,105,101,110,116, 32, 79, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,248, 71,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,200, 72,196, 8, 40, 71,196, 8, 83,111,117,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65,109, 98,105,101,110,116, 32, 79, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,111,117,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,200, 72,196, 8,112, 0, 0, 0, 1, 0, 0, 0,152, 73,196, 8,
-248, 71,196, 8, 76,105,115,116,101,110,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83,111,117,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 43, 1, 74, 0,180, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,240, 0,232,241, 48, 0, 0, 0,176, 0, 0, 0, 1, 0,232,242, 80, 0,232,240, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,152, 73,196, 8,112, 0, 0, 0, 1, 0, 0, 0,104, 74,196, 8,200, 72,196, 8, 83,101,113,117,
-101,110, 99,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,111,117,110,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-104, 74,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 56, 75,196, 8,152, 73,196, 8, 65,114,109, 97,116,117,114,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 56, 75,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 8, 76,196, 8,104, 74,196, 8, 82, 97,109,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,253,168, 1, 74, 0,107, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,242, 80, 0, 0, 0,176, 0, 0, 0, 1, 0,232,243,112, 0,232,241, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,168, 51,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 8, 76,196, 8,112, 0, 0, 0, 1, 0, 0, 0,216, 76,196, 8,
- 56, 75,196, 8, 77,105,114,114,111,114, 32, 84,114, 97,110,115,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,216, 76,196, 8,112, 0, 0, 0, 1, 0, 0, 0,168, 77,196, 8, 8, 76,196, 8, 77,105,115,116,
- 32, 47, 32, 83,116, 97,114,115, 32, 47, 32, 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-168, 77,196, 8,112, 0, 0, 0, 1, 0, 0, 0,120, 78,196, 8,216, 76,196, 8, 65,109, 98, 32, 79, 99, 99, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 76,196, 8, 68, 65, 84, 65,164, 0, 0, 0,120, 78,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 8,158,193, 8,168, 77,196, 8, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,112,111,116, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 8,158,193, 8,112, 0, 0, 0, 1, 0, 0, 0,144,165,193, 8,
-120, 78,196, 8, 77,111,100,105,102,105,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,144,165,193, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,158,193, 8, 83,104, 97,112,
-101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0,
- 62, 1,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 8,158,193, 8, 68, 65, 84, 65,212, 0, 0, 0,
- 72, 79,196, 8, 94, 0, 0, 0, 1, 0, 0, 0, 72, 80,196, 8, 0, 0, 0, 0, 4, 0, 0, 0, 51, 51, 51, 63,208, 45,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,193, 0,192,202, 68,
- 0, 0, 0,193, 0, 0,104, 67, 0, 0, 0,193, 40,224,182, 68, 0, 0, 0,193, 0, 0,104, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63,
- 0, 0, 1, 0, 1, 0, 1, 0, 1, 5,209, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 4, 0, 24, 22,197, 8, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,141, 0, 0, 0, 0, 0,109, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,180, 2, 0, 0, 72, 80,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 40, 83,196, 8, 72, 79,196, 8, 1, 0, 0, 0,
- 51, 51, 51, 63,208, 45,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 15, 51, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29,254,249,195,125,254, 71,194, 0, 0, 0, 0, 0, 0, 0, 0,173,128,249, 67,138, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 1, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,196, 0, 0, 0, 40, 83,196, 8, 97, 0, 0, 0, 1, 0, 0, 0, 24, 84,196, 8,
- 72, 80,196, 8, 3, 0, 0, 0, 51, 51, 51, 63,208, 45,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,192,192, 0, 0,160, 64, 0, 0, 0, 0,205,204,140, 65,201, 82, 5,194,124,171, 30, 66, 49,238,226, 64,140,108,168, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0,245, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0, 0,160, 67, 0, 0,160, 67,
- 10,215, 35, 60, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,142, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 84, 1, 0, 0, 24, 84,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 83,196, 8, 5, 0, 0, 0,
- 51, 51, 51, 63,208, 45,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,152, 85,196, 8,113, 0, 0, 0, 1, 0, 0, 0,144, 86,196, 8,
-208, 45,196, 8,128, 42,196, 8, 64, 41,196, 8,128, 41,196, 8,192, 42,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
-225, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,225, 3, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
-252, 3, 0, 0, 0, 4, 0, 0, 7, 0, 6, 0, 1, 0, 7, 7, 1, 5, 5, 0, 1, 1, 1, 1,196, 2, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 27,194, 8,176,231,195, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,144, 86,196, 8,113, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-152, 85,196, 8, 0, 42,196, 8,128, 42,196, 8,192, 42,196, 8, 64, 42,196, 8, 0, 0, 0, 0,184,119,162, 61, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,240, 14, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-111, 18,131,187, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 5, 0, 0,
-237, 0, 0, 0,223, 3, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,237, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
- 8, 1, 0, 0,223, 3, 0, 0, 9, 0, 8, 0, 1, 0, 1, 1, 1, 5,216, 2, 1, 0, 1, 0, 5, 3, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 89,196, 8, 64, 98,196, 8,104,176,195, 8,104,176,195, 8,
-136, 87,196, 8, 88, 88,196, 8, 68, 65, 84, 65,164, 0, 0, 0,136, 87,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 88, 88,196, 8,
- 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 44, 0, 21, 2, 62, 1,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0, 88, 88,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 87,196, 8, 86,105,101,119,
- 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119,
- 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 8, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0,
- 40, 89,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 8, 92,196, 8, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,144, 86,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,184,119,162, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,183,240, 14, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,123,176, 73, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 62,229, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,184,119,162, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,183,240, 14, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,
- 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-123,176, 73, 65, 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 3, 0,251,255, 8, 8, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63,189, 57,161, 60,205,204,204, 61, 0, 0,250, 67,
- 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128,193, 55,143, 63, 0,174,255,192, 88, 23,141,191, 60, 0, 1, 0, 7, 0,175, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255,170,239,188, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-170,239,188, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,239,188, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 40, 1, 0, 0, 8, 92,196, 8, 93, 0, 0, 0, 1, 0, 0, 0, 96, 93,196, 8, 40, 89,196, 8, 2, 0, 0, 0,
- 51, 51, 51, 63,144, 86,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,122, 67,205,204,204,189,205,204,140, 63, 0, 0, 0, 0, 0, 0,122, 67, 0, 0,160,192, 0, 0,160, 64,
- 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 50, 2, 0, 0, 16, 0, 0, 0,168, 3, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0,168, 3, 0, 0, 16, 0, 0, 0, 50, 2, 0, 0, 10,215, 35, 60, 10,215, 35, 60, 0, 96,106, 70, 0, 0,122, 68,
- 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 72, 12,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,205,204,204,189,205,204,140, 63, 68, 65, 84, 65,
-196, 0, 0, 0, 96, 93,196, 8, 97, 0, 0, 0, 1, 0, 0, 0, 96, 96,196, 8, 8, 92,196, 8, 3, 0, 0, 0, 51, 51, 51, 63,
-144, 86,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,246, 24,167, 65,102,102,174,193,
-122, 20,238, 65, 75, 95,116,194, 75, 95,116, 66, 51, 51, 9,194, 51, 51, 9, 66, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
- 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0,
- 50, 2, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0, 0,160, 67, 0, 0,160, 67, 10,215, 35, 60, 0, 0, 0, 64, 0, 0, 0, 0,
- 1, 0, 0, 0,233, 3, 50, 2, 0, 0, 0, 0, 80, 94,196, 8, 8, 96,196, 8, 0, 0,143, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, 80, 94,196, 8,
-129, 0, 0, 0, 1, 0, 0, 0,168, 94,196, 8, 0, 0, 0, 0, 66, 79, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 61, 10,192,
- 0, 0, 0, 0, 0, 0, 0, 0, 72, 12,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,168, 94,196, 8,
-129, 0, 0, 0, 1, 0, 0, 0, 0, 95,196, 8, 80, 94,196, 8, 69, 77, 4, 0, 0, 0, 0, 0, 0, 0,192, 64,205,204,124, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 24, 22,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, 0, 95,196, 8,
-129, 0, 0, 0, 1, 0, 0, 0, 88, 95,196, 8,168, 94,196, 8, 65, 77, 5, 0, 0, 0, 0, 0,235, 49,126, 65, 98, 62,200, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,184, 18,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, 88, 95,196, 8,
-129, 0, 0, 0, 1, 0, 0, 0,176, 95,196, 8, 0, 95,196, 8, 66, 79, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 65,
- 0, 0, 0, 0, 0, 0, 0, 0,152, 15,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,176, 95,196, 8,
-129, 0, 0, 0, 1, 0, 0, 0, 8, 96,196, 8, 88, 95,196, 8, 66, 79, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,112, 61, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, 8, 96,196, 8,
-129, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 95,196, 8, 67, 83, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,102,102,174,193,
- 0, 0, 0, 0, 0, 0, 0, 0,136,251,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,176, 0, 0, 0, 96, 96,196, 8,
-177, 0, 0, 0, 1, 0, 0, 0, 64, 97,196, 8, 96, 93,196, 8, 12, 0, 0, 0, 51, 51, 51, 63,144, 86,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,122, 68, 0, 0, 0, 0, 0, 0,122, 68, 0, 0,160,192,
- 0, 0,130, 66, 0, 0, 0, 0, 0,128, 8, 68,217, 3, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 50, 2, 0, 0,128, 0, 0, 0,
-217, 3, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 0,217, 3, 0, 0, 16, 0, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,250, 70, 0, 0,122, 68, 10,215, 35, 60, 0, 0, 72, 66, 10, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,212, 0, 0, 0,
- 64, 97,196, 8, 94, 0, 0, 0, 1, 0, 0, 0, 64, 98,196, 8, 96, 96,196, 8, 4, 0, 0, 0, 51, 51, 51, 63,144, 86,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,159, 68,
- 0, 0,160,193, 0, 0,100, 67,246, 56,165, 67, 26, 29,110, 68, 13,102,183,193,246, 25,161, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63,
- 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 84, 1, 0, 0, 64, 98,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 97,196, 8, 5, 0, 0, 0,
- 51, 51, 51, 63,144, 86,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
- 83, 97,118,101, 32, 70,105,108,101, 0, 78, 84, 0, 32, 80, 73, 67, 84, 85, 82, 69, 83, 0, 0, 47, 85,115,101,114,115, 47,116,
-111,110, 47, 68,101,115,107,116,111,112, 47, 0,117,109,112, 98,117,103, 32, 70,111,108,100,101,114, 47, 0,101,110,100,101,114,
- 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101,115, 47, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,110,116,105,116,108,101,100,
- 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 0, 1, 0, 0, 0,251, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 0, 0,116, 0, 0, 0,192, 99,196, 8,109, 0, 0, 0, 1, 0, 0, 0,232,163,196, 8,
- 96, 40,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 51, 45, 77, 97,116,101,114,105, 97,108, 0,111,100,101,108, 32, 83,105,
-110,103, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,100,196, 8,160,103,196, 8,224,103,196, 8, 16,110,196, 8, 88,110,196, 8,
- 56,156,196, 8,136,251,196, 8, 0, 0,231, 3,143, 1,174, 4,232, 3, 32, 3, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,100,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,160,100,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-160,100,196, 8,110, 0, 0, 0, 1, 0, 0, 0,224,100,196, 8, 96,100,196, 8, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,224,100,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 32,101,196, 8,160,100,196, 8, 0, 0, 0, 0,
-232, 3, 32, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,101,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 96,101,196, 8,
-224,100,196, 8, 0, 0, 0, 0,232, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,101,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,160,101,196, 8, 32,101,196, 8, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-160,101,196, 8,110, 0, 0, 0, 1, 0, 0, 0,224,101,196, 8, 96,101,196, 8, 0, 0, 0, 0,232, 3, 60, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,224,101,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 32,102,196, 8,160,101,196, 8, 0, 0, 0, 0,
- 0, 0, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,102,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 96,102,196, 8,
-224,101,196, 8, 0, 0, 0, 0,232, 3, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,102,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,160,102,196, 8, 32,102,196, 8, 0, 0, 0, 0, 44, 3, 60, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-160,102,196, 8,110, 0, 0, 0, 1, 0, 0, 0,224,102,196, 8, 96,102,196, 8, 0, 0, 0, 0, 44, 3, 6, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,224,102,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 32,103,196, 8,160,102,196, 8, 0, 0, 0, 0,
- 0, 0,176, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,103,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 96,103,196, 8,
-224,102,196, 8, 0, 0, 0, 0, 44, 3,176, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,103,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,160,103,196, 8, 32,103,196, 8, 0, 0, 0, 0,164, 1,176, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-160,103,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,103,196, 8, 0, 0, 0, 0,164, 1, 6, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0,224,103,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 40,104,196, 8, 0, 0, 0, 0,160,100,196, 8,
-224,100,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,104,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-112,104,196, 8,224,103,196, 8, 96,100,196, 8, 32,101,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-112,104,196, 8,111, 0, 0, 0, 1, 0, 0, 0,184,104,196, 8, 40,104,196, 8, 96,100,196, 8, 96,101,196, 8, 1, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,104,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 0,105,196, 8,112,104,196, 8,
- 32,101,196, 8,160,101,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,105,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0, 72,105,196, 8,184,104,196, 8, 96,101,196, 8,160,101,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0, 72,105,196, 8,111, 0, 0, 0, 1, 0, 0, 0,144,105,196, 8, 0,105,196, 8,160,100,196, 8,224,101,196, 8,
- 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,105,196, 8,111, 0, 0, 0, 1, 0, 0, 0,216,105,196, 8,
- 72,105,196, 8,224,100,196, 8, 32,102,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,105,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0, 32,106,196, 8,144,105,196, 8,224,101,196, 8, 32,102,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0, 32,106,196, 8,111, 0, 0, 0, 1, 0, 0, 0,104,106,196, 8,216,105,196, 8,160,101,196, 8,
- 32,102,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,106,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-176,106,196, 8, 32,106,196, 8, 96,101,196, 8, 96,102,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-176,106,196, 8,111, 0, 0, 0, 1, 0, 0, 0,248,106,196, 8,104,106,196, 8,160,101,196, 8, 96,102,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,106,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 64,107,196, 8,176,106,196, 8,
- 32,102,196, 8,160,102,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,107,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0,136,107,196, 8,248,106,196, 8, 96,102,196, 8,160,102,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,136,107,196, 8,111, 0, 0, 0, 1, 0, 0, 0,208,107,196, 8, 64,107,196, 8, 96,101,196, 8,224,102,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,107,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 24,108,196, 8,
-136,107,196, 8,224,101,196, 8,224,102,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,108,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0, 96,108,196, 8,208,107,196, 8,160,102,196, 8, 32,103,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0, 96,108,196, 8,111, 0, 0, 0, 1, 0, 0, 0,168,108,196, 8, 24,108,196, 8, 96,102,196, 8,
- 32,103,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,108,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-240,108,196, 8, 96,108,196, 8,224,102,196, 8, 32,103,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-240,108,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 56,109,196, 8,168,108,196, 8,224,102,196, 8, 96,103,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,109,196, 8,111, 0, 0, 0, 1, 0, 0, 0,128,109,196, 8,240,108,196, 8,
- 32,103,196, 8, 96,103,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,109,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0,200,109,196, 8, 56,109,196, 8,224,101,196, 8,160,103,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,200,109,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 16,110,196, 8,128,109,196, 8,160,102,196, 8,160,103,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,110,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-200,109,196, 8, 96,103,196, 8,160,103,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0, 88,110,196, 8,
-113, 0, 0, 0, 1, 0, 0, 0,112,122,196, 8, 0, 0, 0, 0, 96,100,196, 8, 96,101,196, 8,160,101,196, 8, 32,101,196, 8,
- 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,226,215,163,188,
- 0, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 0, 0, 0, 0,
- 26, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 27, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 1, 0, 15, 15,233, 3, 33, 0,
- 1, 1, 1, 0,192, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,114,196, 8,
-240,120,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,196, 8,192,113,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 80,111,196, 8,
-112, 0, 0, 0, 1, 0, 0, 0, 32,112,196, 8, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 32,112,196, 8,112, 0, 0, 0, 1, 0, 0, 0,
-240,112,196, 8, 80,111,196, 8, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,240,112,196, 8,112, 0, 0, 0, 1, 0, 0, 0,192,113,196, 8, 32,112,196, 8,
- 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-164, 0, 0, 0,192,113,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,112,196, 8, 70,111,114,109, 97,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 84, 1, 74, 0, 60, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,243,112, 0, 0, 0,176, 0, 0, 0, 1, 0,232,244,144,
+ 0,232,242, 80, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 32, 67,111,114,114,101, 99,116,105,111,110, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,148, 0, 0, 0,144,114,196, 8,
-102, 0, 0, 0, 1, 0, 0, 0, 80,115,196, 8, 0, 0, 0, 0, 15, 0, 0, 0, 51, 51, 51, 63, 1, 86,239, 92, 0, 0,128,192,
- 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 16, 65, 0, 0,128,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 16, 65, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 32, 67,111,114,114,101, 99,116,105,111,110, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-233, 3, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,128, 63, 0, 0, 16, 65, 0, 0,250, 70, 0, 0, 16, 65,205,204,204, 61,
- 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,
-160, 0, 0, 0, 80,115,196, 8,166, 0, 0, 0, 1, 0, 0, 0, 32,116,196, 8,144,114,196, 8, 11, 0, 0, 0, 51, 51, 51, 63,
- 1, 86,239, 92, 0, 0,128,192, 0, 0,122, 67, 0, 0,128,192, 0, 0,127, 67, 0, 0,128,192, 0, 0, 72, 66, 0, 0,128,192,
- 0, 0,127, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 0, 0,128, 63, 0,128,129, 67, 0, 0,250, 70,
- 0,128,129, 67,205,204,204, 61, 0, 0, 32, 65, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,212, 0, 0, 0, 32,116,196, 8, 94, 0, 0, 0,
- 1, 0, 0, 0, 32,117,196, 8, 80,115,196, 8, 4, 0, 0, 0, 51, 51, 51, 63, 1, 86,239, 92, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,193, 0, 0,163, 68, 0, 0, 0,193, 0, 0,104, 67,
- 63, 0, 0,193,172, 3,182, 68, 0, 0, 0,193, 0, 0,104, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0,
-251, 4,209, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,109, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0,
- 32,117,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 0,120,196, 8, 32,116,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 86,239, 92,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,183, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191,
- 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 99, 15, 51, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,254,249,195,125,254, 71,194,
- 0, 0, 0, 0, 0, 0, 0, 0,173,128,249, 67,138, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 24, 1, 74, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,244,144, 0, 0, 0,176, 0, 0, 0, 1,
+ 0,232,245,176, 0,232,243,112, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 65, 1, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 3, 0, 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 83, 1, 74, 0,149, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,245,176, 0, 0, 0,176,
+ 0, 0, 0, 1, 0,232,246,208, 0,232,244,144, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,111,119, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,111,119, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,196, 0, 0, 0, 0,120,196, 8, 97, 0, 0, 0, 1, 0, 0, 0,240,120,196, 8, 32,117,196, 8, 3, 0, 0, 0,
- 51, 51, 51, 63, 1, 86,239, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,192, 0, 0,160, 64,
- 0, 0, 0, 0,205,204,140, 65,201, 82, 5,194,124,171, 30, 66, 49,238,226, 64,140,108,168, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0,
- 0, 0, 0, 0,245, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0, 0,160, 67, 0, 0,160, 67, 10,215, 35, 60, 0, 0, 0, 64,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 3, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,
-240,120,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,120,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 86,239, 92,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,136, 1, 74, 0,179, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,246,208,
+ 0, 0, 0,176, 0, 0, 0, 1, 0,232,247,240, 0,232,245,176, 0, 0, 0, 0, 0, 0, 0, 0, 83,117,114,102, 97, 99,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,117,114,102, 97, 99,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,149, 1, 74, 0, 83,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240,
+ 0,232,247,240, 0, 0, 0,176, 0, 0, 0, 1, 0,232,249, 16, 0,232,246,208, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,115,
+116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,115,
+116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,204, 0, 0, 0,112,122,196, 8,113, 0, 0, 0, 1, 0, 0, 0,104,123,196, 8, 88,110,196, 8,224,101,196, 8,
-160,100,196, 8,224,100,196, 8, 32,102,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0, 32, 3, 0, 0,
- 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0, 33, 3, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 32, 3, 0, 0, 32, 3, 0, 0,
- 0, 0, 0, 0, 1, 0, 7, 7,233, 3, 1, 0, 1, 1, 1, 1,196, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,204, 0, 0, 0,104,123,196, 8,113, 0, 0, 0, 1, 0, 0, 0,216,140,196, 8,112,122,196, 8, 96,102,196, 8,
-160,102,196, 8, 32,102,196, 8,160,101,196, 8, 0, 0, 0, 0,255,255, 71, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191,
- 0, 0, 0,128, 0, 0, 0,128, 74,215, 76,190, 0, 0, 0,128, 45, 3, 0, 0,232, 3, 0, 0, 61, 0, 0, 0, 5, 3, 0, 0,
- 45, 3, 0, 0,232, 3, 0, 0, 61, 0, 0, 0, 87, 0, 0, 0, 45, 3, 0, 0,232, 3, 0, 0, 88, 0, 0, 0, 5, 3, 0, 0,
- 0, 0, 0, 0, 1, 0, 4, 4,188, 0,174, 2, 1, 1, 1, 0,179, 1,126, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32,134,196, 8, 88,139,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 96,124,196, 8, 80,133,196, 8,
- 68, 65, 84, 65,164, 0, 0, 0, 96,124,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 48,125,196, 8, 0, 0, 0, 0, 79,117,116,112,
-117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
- 48,125,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0,126,196, 8, 96,124,196, 8, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,196,
+ 1, 74, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,240, 0,232,249, 16, 0, 0, 0,176, 0, 0, 0, 1, 0,232,250, 48, 0,232,247,240, 0, 0, 0, 0, 0, 0, 0, 0,
+ 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
+ 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,255, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 0,126,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,208,126,196, 8, 48,125,196, 8, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,254, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,208,126,196, 8,112, 0, 0, 0, 1, 0, 0, 0,160,127,196, 8,
- 0,126,196, 8, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,255, 76, 1, 74, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,240, 0,232,250, 48, 0, 0, 0,176, 0, 0, 0, 1, 0,232,251, 80, 0,232,249, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 71,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 71,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 72,253, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,160,127,196, 8,112, 0, 0, 0, 1, 0, 0, 0,112,128,196, 8,208,126,196, 8, 80,114,101,118,
-105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-112,128,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 64,129,196, 8,160,127,196, 8, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,255, 16, 1, 74, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,251, 80, 0, 0, 0,176, 0, 0, 0, 1, 0,232,252,112, 0,232,250, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68,117,112,108,105, 99, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,255, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 64,129,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 16,130,196, 8,112,128,196, 8, 83,104, 97,100,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68,117,112,108,105, 99, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,254, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 16,130,196, 8,112, 0, 0, 0, 1, 0, 0, 0,224,130,196, 8,
- 64,129,196, 8, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 68,252, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,224,130,196, 8,112, 0, 0, 0, 1, 0, 0, 0,176,131,196, 8, 16,130,196, 8, 77, 97,112, 32,
- 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,251,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-176,131,196, 8,112, 0, 0, 0, 1, 0, 0, 0,128,132,196, 8,224,130,196, 8, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 81, 1, 74, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,232,252,112, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0,232,251, 80, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,105,109, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,105,109, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,252, 62, 1,204, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,128,132,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 80,133,196, 8,176,131,196, 8, 82, 97,109,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,255, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,112,128,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 80,133,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-128,132,196, 8, 77,105,114,114,111,114, 32, 84,114, 97,110,115,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253,167, 1, 74, 0,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,224, 0,232,253,144, 0, 0, 0,151, 0, 0, 0, 1,
+ 0,233, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 72,253, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,212, 0, 0, 0, 32,134,196, 8, 94, 0, 0, 0, 1, 0, 0, 0, 32,135,196, 8, 0, 0, 0, 0, 4, 0, 0, 0,
- 51, 51, 51, 63, 1, 86,249,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0,193, 0, 0,163, 67, 0,128,148,196, 0, 0,104, 67, 0, 0, 0,193, 0, 0,163, 67,170,175,118,196,255,255,103, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67,
- 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0,188, 0,174, 2, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 0, 0, 0, 0, 0,150, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0, 32,135,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 0,138,196, 8,
- 32,134,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 86,249,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-188, 74,140, 62,166,194, 72,191, 33,132, 14, 63, 0, 0, 0, 0, 41,120,117, 63,135,105, 54, 62,200, 80, 98,190, 0, 0, 0, 0,
-239,220,151, 61, 31, 40, 24, 63, 94,255, 76, 63, 0, 0, 0, 0,175,149, 97, 63,230,187,142,189,122,166,182,193, 0, 0,128, 63,
-186, 74,140, 62, 35,120,117, 63,254,220,151, 61, 0, 0, 0, 0,160,194, 72,191,131,105, 54, 62, 30, 40, 24, 63, 0, 0, 0, 0,
- 32,132, 14, 63,190, 80, 98,190, 94,255, 76, 63, 0, 0, 0, 0, 92,160, 70, 65,162, 28,188,192,224, 17,146, 65, 0, 0,128, 63,
-197, 52, 91, 63,228,148, 91,191,186,146, 14,191, 33,132, 14,191,223,197, 63, 64,106,131, 71, 62,246,103, 98, 62,200, 80, 98, 62,
- 52, 73,109, 62,225,107, 38, 63, 93, 20, 77,191, 94,255, 76,191,240, 60, 48, 64,130, 29,156,189,128, 31,181, 65,122,166,182, 65,
-252,146,179, 61,173, 25,157, 62, 75, 99,194, 60, 0, 0,165, 50,214,141, 55,191,192,199, 38, 62,176, 28, 11, 63, 0,128, 24,181,
-167, 58,120,194,184, 22,235, 65, 49,140,182,194, 27,247,159,192, 5, 26,118, 66, 44,106,233,193,230, 4,181, 66,126, 7,160, 64,
-255,255, 71, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 74,215, 76,190, 0, 0, 0,128,
-188, 74,140, 62,166,194, 72,191, 33,132, 14, 63, 0, 0, 0, 0, 41,120,117, 63,135,105, 54, 62,200, 80, 98,190, 0, 0, 0, 0,
-239,220,151, 61, 31, 40, 24, 63, 94,255, 76, 63, 0, 0, 0, 0,175,149, 97, 63,230,187,142,189,122,166,182,193, 0, 0,128, 63,
-218, 31, 64, 63, 36, 17,139,190,182,154, 36,190,156,165, 20,191,221, 79,187, 65, 1, 0, 0, 0, 40, 9,197, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 10, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67,104,217, 30, 63,106, 40, 52, 63,116, 39,251, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 7, 0,175, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,138,196, 8, 93, 0, 0, 0,
- 1, 0, 0, 0, 88,139,196, 8, 32,135,196, 8, 2, 0, 0, 0, 51, 51, 51, 63, 1, 86,249,156, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 32,193, 0, 0, 32, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 32,193, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 10,215, 35, 60, 10,215, 35, 60, 0, 96,106, 70, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, 88,139,196, 8, 96, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0,138,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 86,249,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 83, 65, 86, 69, 32, 70, 73, 76, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47,117,115,114, 47,104,111,109,101, 47,105,110,116,114,114, 47, 98,108,101,110,100,101,114, 47, 98,108,101,110,
-100, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,117,110,116,105,116,108,101,100, 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 24, 0, 1, 0, 0, 0,203, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,216,140,196, 8,
-113, 0, 0, 0, 1, 0, 0, 0,136,148,196, 8,104,123,196, 8, 96,101,196, 8,224,102,196, 8, 32,103,196, 8, 96,102,196, 8,
- 0, 0, 0, 0, 85,240, 46, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,237,119,206, 61, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 43, 3, 0, 0, 61, 0, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 43, 3, 0, 0, 61, 0, 0, 0,
- 87, 0, 0, 0, 0, 0, 0, 0, 43, 3, 0, 0, 88, 0, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 44, 3, 88, 1,
- 1, 0, 1, 0,251, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,141,196, 8,
- 8,147,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0,208,141,196, 8,
- 89, 0, 0, 0, 1, 0, 0, 0,176,144,196, 8, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 1, 87, 7,236, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,104,217, 30, 63,
-106, 40, 52, 63,116, 39,251, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,104,217, 30,191,
-106, 40, 52,191,116, 39,251,190, 0, 0,128, 63, 85,240, 46, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-237,119,206, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0,202, 25,217, 60,
-235, 76,145, 61, 70,151,128,186, 0, 0,128, 63,172, 79,187, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1,181, 30, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,255,255,249,195, 0, 0, 0, 0,103,217, 30,191,
-106, 40, 52,191,116, 39,251,190, 0, 0,128, 63, 85,240, 46, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-237,119,206, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187, 0, 0, 0,128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,104,217, 30, 63,
-106, 40, 52, 63,116, 39,251, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172, 79,187, 65,
- 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0,
- 10, 0, 8, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67,104,217, 30, 63,
-106, 40, 52, 63,116, 39,251, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 1, 0, 7, 0,175, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0, 0, 0, 69,104,138, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,104,138, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,104,138, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-212, 0, 0, 0,176,144,196, 8, 94, 0, 0, 0, 1, 0, 0, 0,176,145,196, 8,208,141,196, 8, 4, 0, 0, 0, 51, 51, 51, 63,
- 1, 87, 7,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,224,159, 68, 0, 0, 0, 0, 0, 0,100, 67,172, 62, 57, 67, 44,184,136, 68,169,101, 28,195, 16,147,173, 67, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67, 0, 0, 0, 63,
-225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,145,196, 8, 93, 0, 0, 0, 1, 0, 0, 0, 8,147,196, 8,176,144,196, 8,
- 2, 0, 0, 0, 51, 51, 51, 63, 1, 87, 7,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 32,193, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 32,193,
- 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 10,215, 35, 60, 0, 96,106, 70,
- 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 84, 1, 0, 0, 8,147,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,145,196, 8, 5, 0, 0, 0,
- 51, 51, 51, 63, 1, 87, 7,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
- 83, 65, 86, 69, 32, 70, 73, 76, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,
-111,110, 47, 68,101,115,107,116,111,112, 47, 0,100,101,114, 47, 98,108,101,110,100, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,110,116,105,116,108,101,100,
- 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0,203, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,136,148,196, 8,113, 0, 0, 0, 1, 0, 0, 0, 56,156,196, 8,
-216,140,196, 8, 96,103,196, 8,160,103,196, 8,160,102,196, 8, 32,103,196, 8, 0, 0, 0, 0,173,101,182, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 36,209, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-154, 65,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,165, 1, 0, 0, 43, 3, 0, 0,
-177, 1, 0, 0, 5, 3, 0, 0,165, 1, 0, 0, 43, 3, 0, 0,177, 1, 0, 0,177, 1, 0, 0,165, 1, 0, 0, 43, 3, 0, 0,
-177, 1, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,135, 1, 85, 1, 3, 0, 1, 0, 83, 2, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,149,196, 8,184,154,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0,128,149,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 96,152,196, 8,
- 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 1, 87, 12,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,
-191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,
-223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0,
- 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63,
-144, 52,122, 63, 39,192, 4,191,244,250, 39,191, 8,165, 39,191,228,183,132, 63, 75,179, 2, 63,180,164, 28, 63,149, 84, 28, 63,
-118,137,124,188,232, 64,187, 63, 8,108,228,190, 50,247,227,190, 18,188,246,190,141,144, 29,191,216, 49, 49, 65,152, 9, 52, 65,
-116,112,246, 62,142,184, 2, 63, 64,191,248,187, 0, 0,144,179, 64,230, 70,190,226,211, 67, 62,254, 71, 12, 63, 0, 0, 0, 52,
-211,120, 21,194,144, 5, 2, 66, 7,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193,155,101,210, 65,173, 40,160, 64,
-173,101,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 36,209, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,
-221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,
-191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,
-241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190,221, 79,187, 65, 2, 0, 0, 0, 40, 9,197, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 10, 0, 8, 24, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67,104,217, 30, 63,106, 40, 52, 63,116, 39,251, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 7, 0,175, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,221,224, 65, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221,224, 65, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,221,224, 65, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,212, 0, 0, 0, 96,152,196, 8, 94, 0, 0, 0,
- 1, 0, 0, 0, 96,153,196, 8,128,149,196, 8, 4, 0, 0, 0, 51, 51, 51, 63, 1, 87, 12,124, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,100, 67,
-172, 62, 57, 67, 44,184,136, 68,169,101, 28,195, 16,147,173, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,
- 96,153,196, 8, 93, 0, 0, 0, 1, 0, 0, 0,184,154,196, 8, 96,152,196, 8, 2, 0, 0, 0, 51, 51, 51, 63, 1, 87, 12,124,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,
- 0, 0, 32,193, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 32,193, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 10,215, 35, 60, 0, 96,106, 70, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0,
- 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,184,154,196, 8,
- 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,153,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 87, 12,124, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 83, 65, 86, 69, 32, 70, 73, 76, 69, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0,
-100,101,114, 47, 98,108,101,110,100, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,110,116,105,116,108,101,100, 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
- 1, 0, 0, 0,203, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-204, 0, 0, 0, 56,156,196, 8,113, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,148,196, 8,224,102,196, 8,224,101,196, 8,
-160,103,196, 8, 96,103,196, 8, 0, 0, 0, 0,152, 38,151, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7, 43,186, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187, 0, 0, 0,128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,163, 1, 0, 0,177, 1, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0,
-163, 1, 0, 0,177, 1, 0, 0,177, 1, 0, 0, 0, 0, 0, 0,163, 1, 0, 0,177, 1, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1,164, 1, 85, 1, 3, 0, 1, 0, 83, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48,157,196, 8,104,162,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-180, 2, 0, 0, 48,157,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 16,160,196, 8, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 1, 87, 17, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0,128,
- 0, 0, 0, 0, 0, 0, 0,128,174, 2, 19, 51,255,255,127,191, 0, 0, 0, 0, 0, 0, 0, 0,255,255,127, 63,174, 2, 19, 51,
- 0, 0, 0, 0, 58,248, 30,192, 45,161,118,192,107, 40, 52,191, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 1, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,128,191,176, 2, 19, 51,
- 0, 0, 0, 0, 59,248, 30, 64,107, 40, 52,191, 48,161,118, 64, 0, 0,128, 63,152, 38,151, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80,209, 85, 49,110, 18, 3, 59, 0, 0, 0, 0, 0, 0, 0, 0, 6, 43,186, 61,234,137,150,174,
- 0, 0, 0, 0,195,184, 59,190,143, 90,179,190, 79,123,184, 58, 0, 0,128, 63, 74,202, 88, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,128, 52, 85, 3, 48, 65, 0, 0, 0, 0, 0, 0,128,171, 1, 0,250, 67,160,144,143,183,
- 0, 0, 0, 0, 59,248, 30, 64,106, 40, 52,191, 48,161,118, 64, 0, 0,128, 63,152, 38,151, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7, 43,186, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187,
- 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0,128,
- 0, 0, 0, 0, 0, 0, 0,128,174, 2, 19, 51,255,255,127,191, 0, 0, 0, 0, 0, 0, 0, 0,255,255,127, 63,174, 2, 19, 51,
- 0, 0, 0, 0, 58,248, 30,192, 45,161,118,192,107, 40, 52,191, 0, 0,128, 63,243, 4, 53, 63,243, 4, 53,191, 0, 0, 0, 0,
- 0, 0, 0, 0, 73,202, 88, 65, 0, 0, 1, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 3, 0, 10, 0, 8, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61,
- 0, 0,250, 67, 58,248, 30,192,106, 40, 52, 63, 46,161,118,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 2, 0,
- 7, 0,175, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,162,217,154, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,162,217,154, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,162,217,154, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,212, 0, 0, 0, 16,160,196, 8, 94, 0, 0, 0, 1, 0, 0, 0, 16,161,196, 8, 48,157,196, 8,
- 4, 0, 0, 0, 51, 51, 51, 63, 1, 87, 17, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,100, 67,172, 62, 57, 67, 44,184,136, 68,169,101, 28,195,
- 16,147,173, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68,
- 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,161,196, 8, 93, 0, 0, 0, 1, 0, 0, 0,
-104,162,196, 8, 16,160,196, 8, 2, 0, 0, 0, 51, 51, 51, 63, 1, 87, 17, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 32,193, 0, 0, 32, 65, 0, 0, 0, 0,
- 0, 0,122, 67, 0, 0, 32,193, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60,
- 10,215, 35, 60, 0, 96,106, 70, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,104,162,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 16,161,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 87, 17, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 32, 0, 0, 0, 83, 65, 86, 69, 32, 70, 73, 76, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0,100,101,114, 47, 98,108,101,110,100, 47, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-117,110,116,105,116,108,101,100, 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0,203, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 0, 0,116, 0, 0, 0,232,163,196, 8,109, 0, 0, 0,
- 1, 0, 0, 0,136,207,196, 8,192, 99,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 52, 45, 83,101,113,117,101,110, 99,101,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,164,196, 8,200,167,196, 8, 8,168,196, 8,
-168,173,196, 8,240,173,196, 8, 96,201,196, 8,136,251,196, 8, 0, 0,231, 3,143, 1,174, 4,232, 3, 32, 3, 1, 0, 4, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-136,164,196, 8,110, 0, 0, 0, 1, 0, 0, 0,200,164,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,200,164,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 8,165,196, 8,136,164,196, 8, 0, 0, 0, 0,
- 0, 0, 32, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,165,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 72,165,196, 8,
-200,164,196, 8, 0, 0, 0, 0,232, 3, 32, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,165,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,136,165,196, 8, 8,165,196, 8, 0, 0, 0, 0,232, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-136,165,196, 8,110, 0, 0, 0, 1, 0, 0, 0,200,165,196, 8, 72,165,196, 8, 0, 0, 0, 0, 0, 0,200, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,200,165,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 8,166,196, 8,136,165,196, 8, 0, 0, 0, 0,
-232, 3,200, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,166,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 72,166,196, 8,
-200,165,196, 8, 0, 0, 0, 0, 0, 0, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,166,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,136,166,196, 8, 8,166,196, 8, 0, 0, 0, 0,232, 3, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-136,166,196, 8,110, 0, 0, 0, 1, 0, 0, 0,200,166,196, 8, 72,166,196, 8, 0, 0, 0, 0, 0, 0,244, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,200,166,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 8,167,196, 8,136,166,196, 8, 0, 0, 0, 0,
-232, 3,244, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,167,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 72,167,196, 8,
-200,166,196, 8, 0, 0, 0, 0, 84, 2,244, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,167,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,136,167,196, 8, 8,167,196, 8, 0, 0, 0, 0, 84, 2, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-136,167,196, 8,110, 0, 0, 0, 1, 0, 0, 0,200,167,196, 8, 72,167,196, 8, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,200,167,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,167,196, 8, 0, 0, 0, 0,
-232, 3, 4, 1, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,168,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 80,168,196, 8,
- 0, 0, 0, 0,200,164,196, 8, 8,165,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,168,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0,152,168,196, 8, 8,168,196, 8,136,164,196, 8, 72,165,196, 8, 1, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0,152,168,196, 8,111, 0, 0, 0, 1, 0, 0, 0,224,168,196, 8, 80,168,196, 8,136,164,196, 8,
-136,165,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,168,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
- 40,169,196, 8,152,168,196, 8, 72,165,196, 8,200,165,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
- 40,169,196, 8,111, 0, 0, 0, 1, 0, 0, 0,112,169,196, 8,224,168,196, 8,136,165,196, 8,200,165,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,169,196, 8,111, 0, 0, 0, 1, 0, 0, 0,184,169,196, 8, 40,169,196, 8,
-200,164,196, 8, 8,166,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,169,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0, 0,170,196, 8,112,169,196, 8, 8,165,196, 8, 72,166,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0, 0,170,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 72,170,196, 8,184,169,196, 8, 8,166,196, 8, 72,166,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,170,196, 8,111, 0, 0, 0, 1, 0, 0, 0,144,170,196, 8,
- 0,170,196, 8, 8,166,196, 8,136,166,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,170,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0,216,170,196, 8, 72,170,196, 8, 72,166,196, 8,200,166,196, 8, 1, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0,216,170,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 32,171,196, 8,144,170,196, 8,136,166,196, 8,
-200,166,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,171,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-104,171,196, 8,216,170,196, 8,136,166,196, 8, 8,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-104,171,196, 8,111, 0, 0, 0, 1, 0, 0, 0,176,171,196, 8, 32,171,196, 8,200,166,196, 8, 8,167,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,171,196, 8,111, 0, 0, 0, 1, 0, 0, 0,248,171,196, 8,104,171,196, 8,
- 8,166,196, 8, 72,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,171,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0, 64,172,196, 8,176,171,196, 8, 72,166,196, 8, 72,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0, 64,172,196, 8,111, 0, 0, 0, 1, 0, 0, 0,136,172,196, 8,248,171,196, 8, 8,167,196, 8, 72,167,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,172,196, 8,111, 0, 0, 0, 1, 0, 0, 0,208,172,196, 8,
- 64,172,196, 8,136,165,196, 8,136,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,172,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0, 24,173,196, 8,136,172,196, 8,136,166,196, 8,136,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0, 24,173,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 96,173,196, 8,208,172,196, 8,200,166,196, 8,
-200,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,173,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-168,173,196, 8, 24,173,196, 8,200,165,196, 8,200,167,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-168,173,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,173,196, 8,136,167,196, 8,200,167,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,240,173,196, 8,113, 0, 0, 0, 1, 0, 0, 0,168,180,196, 8, 0, 0, 0, 0,
-136,164,196, 8,136,165,196, 8,200,165,196, 8, 72,165,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 0, 0, 0, 0,
-199, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,173, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 0, 0, 0, 0,
-172, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 4,233, 3,173, 0, 1, 0, 1, 1,139, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,178,196, 8, 40,179,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,232,174,196, 8,
- 88,177,196, 8, 68, 65, 84, 65,164, 0, 0, 0,232,174,196, 8,112, 0, 0, 0, 1, 0, 0, 0,184,175,196, 8, 0, 0, 0, 0,
- 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-164, 0, 0, 0,184,175,196, 8,112, 0, 0, 0, 1, 0, 0, 0,136,176,196, 8,232,174,196, 8, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,136,176,196, 8,
-112, 0, 0, 0, 1, 0, 0, 0, 88,177,196, 8,184,175,196, 8, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,236, 0,232,254,160, 0, 0, 0,180, 0, 0, 0, 1, 0,232,255,192, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 69, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 67,138, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 19, 0, 0, 0, 0, 0, 0, 0, 25, 68,237,128, 0, 65,200, 0, 0, 68,237,128, 0, 65,200, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12, 0, 10, 1, 20, 0, 26, 1, 20, 0, 26, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 89, 0, 0, 7,108, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 20, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 88,177,196, 8,112, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0,136,176,196, 8, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,236, 0,232,255,192, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0,232,254,160, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,212, 0, 0, 0, 40,178,196, 8, 94, 0, 0, 0, 1, 0, 0, 0, 40,179,196, 8, 0, 0, 0, 0,
- 4, 0, 0, 0, 51, 51, 51, 63, 1, 87, 30,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0,193, 0, 0,163, 68, 0, 0, 0,193, 0, 0,104, 67, 0, 0, 0,193,118,149,172, 68, 0, 0, 0,193,
- 0, 0,104, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68,
- 0, 0,225, 67, 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0,233, 3,173, 0, 0, 0, 0, 0, 0, 0,255,255,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, 40,179,196, 8, 96, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 40,178,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 87, 30,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 89, 0, 0, 7,108, 0, 0, 0, 26, 0, 0, 4, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 20, 4, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 32,
+ 68, 65, 84, 65, 0, 0, 2,152, 1, 7,160, 32, 0, 0, 0,145, 0, 0, 0, 1, 64,136,212,103, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,
+191,128, 0, 0,128, 0, 0, 0,128, 0, 0, 0,188,163,215,226,128, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 32, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 63,128, 0, 0, 64,136,212,103, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,
+191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 31,175,184, 65, 32, 0, 0, 62,111,122,237, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,106, 14,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,249,252,209,
+194, 71,253,115, 0, 0, 0, 0, 0, 0, 0, 0, 67,249,127, 98, 66, 71,255,129, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 32, 0, 0, 63,128, 0, 0, 64,136,212,103, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,
+191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 31,175,184, 65, 32, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,222, 32,100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 2, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,168,180,196, 8,
-113, 0, 0, 0, 1, 0, 0, 0,160,181,196, 8,240,173,196, 8, 8,166,196, 8,200,164,196, 8, 8,165,196, 8, 72,166,196, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 0,224, 0, 0, 0,146, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0,232,253,144, 0,232,254,160, 0,232,255,192, 0, 0, 0, 1, 63, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 7, 1, 7,188, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
+ 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 60, 35,215, 10, 67,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,112, 0,233, 2, 0, 0, 0, 0,179,
+ 0, 0, 0, 1, 0,233, 9, 16, 0,232,225,240, 0,232,215, 16, 0,232,217,144, 0,232,217,208, 0,232,217, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 0, 0, 0, 0, 75, 15, 15, 5,224, 0, 76, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 42,208, 0,233, 4,224, 0,233, 7,240, 0,233, 2,160,
+ 0,233, 3,192, 0, 0, 0, 0, 0, 0, 0, 0, 5,209,251,112, 5,209,252, 48, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 2,160,
+ 0, 0, 0,180, 0, 0, 0, 1, 0,233, 3,192, 0, 0, 0, 0, 0, 0, 0, 0, 68,112,128, 0, 0, 0, 0, 0, 65,208, 0, 0,
+ 0, 0, 0, 0, 68,188, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 0, 0, 0, 0, 25,
+ 68,202,224, 0, 65,200, 0, 0, 68,202,224, 0, 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3,
+ 0, 4, 4, 12, 0, 10, 5,224, 0, 26, 5,224, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,223,
+ 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,224, 0, 26, 0, 5, 0, 1,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 43,240, 5,219, 95,160, 5,219, 95,160, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5,209,253,224, 5,209,254, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 3,192,
+ 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 2,160,192, 64, 0, 0, 67,126, 0, 0, 0, 0, 0, 0, 66, 72, 0, 0,
+192, 17,189,112, 67,125, 70,246, 0, 0, 0, 0, 66, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 17, 0, 0, 0, 49,
+ 63,128, 0, 0, 66, 72, 0, 0, 72,146,124, 0, 66, 72, 0, 0, 61,204,204,205, 65, 32, 0, 0, 0, 72, 0, 0, 0, 0, 2, 0,
+ 0, 4, 4, 0, 0, 8, 5,224, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,223,
+ 0, 0, 0, 26, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,224, 0, 50, 0, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 43, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5,210, 0, 16, 5,210, 1,208, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,168, 0,233, 4,224,
+ 0, 0, 0,160, 0, 0, 0, 1, 0,233, 7,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0,
- 33, 3, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 32, 3, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7,233, 3, 1, 0,
- 1, 0, 1, 1,196, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,160,181,196, 8,
-113, 0, 0, 0, 1, 0, 0, 0,136,188,196, 8,168,180,196, 8,136,165,196, 8,136,167,196, 8,200,167,196, 8,200,165,196, 8,
- 0, 0, 0, 0,228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,185,206,105, 62, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128,
- 0, 0,128, 63, 0, 0, 0, 0,232, 3, 0, 0,201, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,201, 0, 0, 0,
-227, 0, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,228, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 1, 0, 15, 15,233, 3, 32, 0,
- 1, 0, 1, 1,192, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,182,196, 8,
- 8,187,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,148, 0, 0, 0,152,182,196, 8,
-102, 0, 0, 0, 1, 0, 0, 0, 88,183,196, 8, 0, 0, 0, 0, 15, 0, 0, 0, 51, 51, 51, 63, 1, 87, 38,188, 0, 0,128,192,
- 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,128,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-233, 3, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 66, 0, 0,250, 70, 0, 0, 0, 66,205,204,204, 61,
- 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,
-164, 0, 0, 0, 88,183,196, 8, 95, 0, 0, 0, 1, 0, 0, 0, 40,184,196, 8,152,182,196, 8, 8, 0, 0, 0, 51, 51, 51, 63,
- 1, 87, 38,188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0,
- 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
- 32, 0, 0, 0, 16, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,233, 3, 0, 0, 16, 0, 0, 0,
- 32, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0, 0,250, 70, 0, 0, 0, 66,205,204,204, 61, 0, 0, 32, 65, 9, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0, 40,184,196, 8,
- 89, 0, 0, 0, 1, 0, 0, 0, 8,187,196, 8, 88,183,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 87, 38,188, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-185,206,105, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,102,102,102, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 38,140, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 5,176, 0, 0, 0,180,
+ 0, 0, 0, 1, 0,233, 6,208, 0, 0, 0, 0, 0, 0, 0, 0, 68, 69, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0,
+ 68,203, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 87, 0, 0, 0, 0, 0, 0, 0, 25, 68,237,128, 0,
+ 65,200, 0, 0, 68,237,128, 0, 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12,
+ 0, 10, 6, 88, 0, 26, 6, 88, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 87, 0, 0, 0, 0,
+ 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 88, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 6,208, 0, 0, 0,180,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 5,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,102,102, 65,
- 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0,
- 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 87, 0, 0, 0, 26,
+ 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 88, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7,164, 32, 68, 65, 84, 65, 0, 0, 2,152, 1, 7,164, 32, 0, 0, 0,145,
+ 0, 0, 0, 1, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,213, 87, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,128, 0, 0, 0,128, 0, 0, 0,188,163,215,226,
+128, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 32, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0,
+ 63,128, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,213, 87, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 31,175,184,
+ 65, 32, 0, 0, 63,106, 14,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,138, 91,224, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,249,252,209,194, 71,253,115, 0, 0, 0, 0, 0, 0, 0, 0, 67,249,127, 98,
+ 66, 71,255,129, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 32, 0, 0,
+ 63,128, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,213, 87, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 31,175,184,
+ 65, 32, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 58,147,149, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 84, 1, 0, 0, 8,187,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,184,196, 8, 5, 0, 0, 0, 51, 51, 51, 63,
- 1, 87, 38,188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 65, 86, 69,
- 32, 84, 65, 82, 71, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,240, 0,233, 7,240, 0, 0, 0,146, 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 4,224, 0,233, 5,176, 0,233, 6,208,
+ 0, 0, 0, 1, 63, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 7, 1, 7,188, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,
+ 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 60, 35,215, 10, 67,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,112, 0,233, 9, 16, 0, 0, 0,179, 0, 0, 0, 1, 0,233, 19,208, 0,233, 2, 0, 0,232,217,144,
+ 0,232,216, 16, 0,232,217, 80, 0,232,217,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 77, 0, 0, 4, 80,
+ 1, 1, 5,224, 4, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,229, 44,128, 0,233, 18,176, 0,233, 18,176, 0,233, 9,176, 0,233, 17,144, 0, 0, 0, 0, 0, 0, 0, 0, 6,157,103,176,
+ 6,160,128,208, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 9,176, 0, 0, 0,180, 0, 0, 0, 1, 0,233, 10,208, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 84, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 68,188, 0, 0, 0, 0, 0, 0, 65,208, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 0, 0, 0, 0, 25, 68,237,128, 0, 65,200, 0, 0, 68,237,128, 0, 65,200, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12, 0, 10, 5,224, 0, 26, 5,224, 0, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 0, 77, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5,224, 0, 26, 0, 7, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,229, 52,192, 5,221, 1, 32, 5,221, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 5,210, 5, 16, 5,210, 6, 96, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 10,208, 0, 0, 0,180, 0, 0, 0, 1, 0,233, 17,144, 0,233, 9,176,
+ 0, 0, 0, 0, 67, 92, 0, 0,196, 55, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 92, 0, 0,196, 41, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 0, 0, 0, 2,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 0, 6, 0,220, 2,164, 0,220, 2,164, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,223, 0, 0, 5,223, 0, 0, 0,103, 0, 0, 4, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0,229, 45,160, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 11,240, 0,233, 16,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 11,240, 0, 0, 0,176, 0, 0, 0, 1, 0,233, 13, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 49, 46, 98,108,101,110,100, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 26, 0,220, 0,206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 13, 16, 0, 0, 0,176, 0, 0, 0, 1, 0,233, 14, 48,
+ 0,233, 11,240, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,136,188,196, 8,113, 0, 0, 0, 1, 0, 0, 0,176,194,196, 8,160,181,196, 8,
- 8,167,196, 8, 72,167,196, 8, 72,166,196, 8,200,166,196, 8, 0, 0, 0, 0,228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 72, 20, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187,
- 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0,128, 63, 85, 2, 0, 0,232, 3, 0, 0,245, 1, 0, 0,
- 5, 3, 0, 0, 85, 2, 0, 0,232, 3, 0, 0,245, 1, 0, 0,245, 1, 0, 0, 85, 2, 0, 0,232, 3, 0, 0,245, 1, 0, 0,
- 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,148, 1, 17, 1, 3, 0, 1, 1, 9, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,189,196, 8, 48,193,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,128,189,196, 8, 95, 0, 0, 0, 1, 0, 0, 0, 80,190,196, 8, 0, 0, 0, 0,
- 8, 0, 0, 0, 51, 51, 51, 63, 1, 87, 42,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0, 49, 1, 0, 0, 17, 0, 0, 0,124, 2, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0,
-124, 2, 0, 0, 17, 0, 0, 0, 49, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0, 0,250, 70, 0, 0, 0, 66,205,204,204, 61,
- 0, 0, 32, 65, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-180, 2, 0, 0, 80,190,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 48,193,196, 8,128,189,196, 8, 1, 0, 0, 0, 51, 51, 51, 63,
- 1, 87, 42,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 72, 20, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,102,102,102, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 42,251,220, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253,229, 0,220, 1, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 14, 48, 0, 0, 0,176, 0, 0, 0, 1,
+ 0,233, 15, 80, 0,233, 13, 16, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,102,102,102, 65, 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60,
- 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0,
- 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253,169, 0,220, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 15, 80, 0, 0, 0,176,
+ 0, 0, 0, 1, 0,233, 16,112, 0,233, 14, 48, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,
+105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,
+105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 79, 0,220, 0, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 16,112,
+ 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 15, 80, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,115,116, 32, 79,112,101,
+114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,115,116, 32, 79,112,101,
+114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, 48,193,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,190,196, 8,
- 5, 0, 0, 0, 51, 51, 51, 63, 1, 87, 42,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 0, 0, 0, 0, 65, 86, 69, 32, 84, 65, 82, 71, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 39, 0,220, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236,
+ 0,233, 17,144, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 10,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 49, 46,
- 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,176,194,196, 8,113, 0, 0, 0, 1, 0, 0, 0,
- 96,201,196, 8,136,188,196, 8,136,166,196, 8, 8,166,196, 8, 72,167,196, 8, 8,167,196, 8, 0, 0, 0, 0,228, 56,142, 61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,220, 29, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,
- 83, 2, 0, 0,245, 1, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 83, 2, 0, 0,245, 1, 0, 0, 15, 2, 0, 0, 0, 0, 0, 0,
- 83, 2, 0, 0, 16, 2, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 84, 2,246, 0, 1, 0, 1, 0,203, 1, 0, 0,
- 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,195,196, 8,224,199,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,195,196, 8, 93, 0, 0, 0, 1, 0, 0, 0,
- 0,197,196, 8, 0, 0, 0, 0, 2, 0, 0, 0, 51, 51, 51, 63, 1, 87, 46, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,192, 0, 0,210, 66,205,204,204,189,205,204,140, 63, 0, 0,160,192,
- 0, 0,210, 66,205,204,204,189,205,204,140, 63, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,246, 0, 0, 0, 16, 0, 0, 0,
- 19, 2, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 19, 2, 0, 0, 16, 0, 0, 0,246, 0, 0, 0, 10,215, 35, 60,
- 10,215, 35, 60, 0, 96,106, 70, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5,223, 0, 0, 0,103, 0, 0, 4, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,224, 3,234,
+ 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 45, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5,210, 8, 32, 5,210, 11,192, 0, 0, 0, 0, 1, 7,168, 32, 68, 65, 84, 65, 0, 0, 2,152,
+ 1, 7,168, 32, 0, 0, 0,145, 0, 0, 0, 1, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,210, 35,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,128, 0, 0, 0,
+128, 0, 0, 0,188,163,215,226,128, 0, 0, 0, 63, 53, 4,238,190, 59,103,186, 63, 46,217,247, 0, 0, 0, 0, 63, 53, 4,255,
+ 62, 59,103,126,191, 46,217,244, 0, 0, 0, 0, 50, 52, 3,228, 63,119, 70,248, 62,132,131,217, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,193,138, 60,152, 63,128, 0, 0, 63, 53, 4,236, 63, 53, 4,244, 53, 24, 0, 0, 0, 0, 0, 0,190, 59,103,137,
+ 62, 59,103,118, 63,119, 70,227, 0, 0, 0, 0, 63, 46,217,238,191, 46,217,221, 62,132,131,213, 0, 0, 0, 0, 65, 60,213,186,
+193, 60,213,168, 64,143, 28,221, 63,128, 0, 0, 63, 69,253,100,190,153,213, 71,191, 46,219,194,191, 46,217,247, 63, 69,253,119,
+ 62,153,213, 21, 63, 46,219,191, 63, 46,217,244, 50, 68,228, 65, 63,202,250,197,190,132,133, 53,190,132,131,217, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65,138, 21, 13, 65,138, 60,152, 63, 37,129, 20, 63, 37,128,162, 53,252, 0, 0, 52,160, 0, 0,189,228, 76,142,
+ 61,228, 76,119, 63, 22,159, 2, 52, 49, 0, 0,196, 19,133, 0, 68, 19,132,242,195, 95,154, 27,194, 71,253, 81, 68, 19, 90,205,
+196, 19, 90,191, 67, 95, 90, 36, 66, 71,255, 95, 63, 53, 4,238,190, 59,103,186, 63, 46,217,247, 0, 0, 0, 0, 63, 53, 4,255,
+ 62, 59,103,126,191, 46,217,244, 0, 0, 0, 0, 50, 52, 3,228, 63,119, 70,248, 62,132,131,217, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,193,138, 60,152, 63,128, 0, 0, 63, 69,253,100,190,153,213, 71,191, 46,219,194,191, 46,217,247, 63, 69,253,119,
+ 62,153,213, 21, 63, 46,219,191, 63, 46,217,244, 50, 68,228, 65, 63,202,250,197,190,132,133, 53,190,132,131,217, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65,138, 21, 13, 65,138, 60,152, 63, 59,163,122,191, 15,250,235,190,110,141,221,190,155,113,230, 65,138, 60,152,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,159, 91,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 18,176, 0, 0, 0,146, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 7,
+ 1, 7,188, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0,
+ 0, 0, 8, 8, 0, 0, 0, 0, 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 60, 35,215, 10, 67,250, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10,
+ 0,159, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,112, 0,233, 19,208, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0,233, 9, 16, 0,232,218, 16, 0,232,217, 80, 0,232,216, 80, 0,232,218, 80, 0, 0, 0, 0, 0, 0, 5,225, 0, 0, 7,108,
+ 0, 0, 3, 77, 0, 0, 4, 80, 3, 3, 1,140, 1, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 41, 32, 0,233, 22,176, 0,233, 30,112, 0,233, 20,112, 0,233, 21,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5,210, 12, 48, 6,160,116, 96, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 20,112, 0, 0, 0,180, 0, 0, 0, 1,
+ 0,233, 21,144, 0, 0, 0, 0, 0, 0, 0, 0, 67,216, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 67,198, 0, 0,
+ 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,139, 0, 0, 0, 0, 0, 0, 0, 25, 67, 66, 0, 0, 65,200, 0, 0,
+ 67, 66, 0, 0, 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12, 0, 10, 1,140,
+ 0, 26, 1,140, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,225, 0, 0, 7,108, 0, 0, 3, 77, 0, 0, 3,102,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,140, 0, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 42, 64, 5,216,145, 16, 5,216,145, 16, 0, 0, 0, 0, 0, 0, 0, 0, 5,210, 14,160,
+ 5,210, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 21,144, 0, 0, 0,180, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0,233, 20,112, 0, 0, 0, 0, 67,132, 0, 0,194,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,190, 0, 0,
+195, 89, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 1,140, 0, 0, 0, 17, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 1,123,
+ 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,123, 0, 0, 0, 17, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 0, 0, 2, 3, 3, 0, 0, 4, 0, 0, 6, 1,140,
+ 0,234, 1,124, 0,217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,225, 0, 0, 7,108, 0, 0, 3,103, 0, 0, 4, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,140, 0,234, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,229, 41,176, 6,161, 8,240, 6,161, 8,240, 0, 0, 0, 0, 0, 0, 0, 0, 5,210, 16,208,
+ 5,210, 17,176, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,248, 0,233, 22,176, 0, 0, 0,154, 0, 0, 0, 1,
+ 0,233, 27, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,160,117, 80, 6,160,117, 80, 0,233, 23,208, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 68, 65, 84, 65, 0, 0, 0, 12,
+ 0,233, 23,208, 0, 0, 0,203, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0,233, 24, 16, 68, 65, 84, 65, 0, 0, 0,156,
+ 0,233, 24, 16, 0, 0, 0,202, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7,176, 32, 0, 19, 0, 0, 0, 1, 0, 1,
+ 1, 7,176, 32, 0, 20, 0, 0, 0, 1, 0, 1, 1, 7,176, 32, 0, 21, 0, 1, 0, 1, 0, 1, 1, 7,176, 32, 0, 0, 0, 0,
+ 0, 1, 0, 1, 0,233, 38, 96, 0, 0, 0, 0, 0, 1, 0, 1, 1, 7,192, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0,233, 43,112,
+ 0, 0, 0, 0, 0, 1, 0, 1, 1, 7,200, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0,233, 42, 48, 0, 0, 0, 0, 0, 1, 0, 1,
+ 1, 7,196, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0,233, 35, 64, 0, 0, 0, 0, 0, 1, 0, 1, 1, 7,188, 32, 0, 0, 0, 0,
+ 0, 1, 0, 1, 0,233, 34,144, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 24,224, 0, 0, 0,180, 0, 0, 0, 1, 0,233, 26, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67,240, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 55, 0, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,
+ 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 67,137,128, 0, 65,200, 0, 0, 67,137,128, 0,
+ 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12, 0, 10, 0,195, 0, 26, 0,195,
+ 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 53, 0, 0, 4,247, 0, 0, 2, 69, 0, 0, 2, 94, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,236, 0,233, 26, 0, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0,233, 24,224, 0, 0, 0, 0, 67,150, 0, 0,196,116,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,150, 85,205,196, 35,204,223,
+195,207, 85, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 2, 4, 0, 0, 6, 0,195, 0,156, 0,195,
+ 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 53, 0, 0, 4,247, 0, 0, 2, 95, 0, 0, 2,250, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,224, 0,233, 27, 32, 0, 0, 0,151, 0, 0, 0, 1, 0,233, 30,112,
+ 0,233, 22,176, 0,233, 24,224, 0,233, 26, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,236, 0,233, 28, 48, 0, 0, 0,180, 0, 0, 0, 1, 0,233, 29, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 69, 0, 0,
+ 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 67,138, 0, 0, 0, 0, 0, 0, 65,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 19,
+ 0, 0, 0, 0, 0, 0, 0, 25, 68,237,128, 0, 65,200, 0, 0, 68,237,128, 0, 65,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 2, 3, 3, 0, 4, 4, 12, 0, 10, 1, 20, 0, 26, 1, 20, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 89, 0, 0, 7,108, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 20, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,236, 0,233, 29, 80, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 28, 48, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 89, 0, 0, 7,108, 0, 0, 0, 26, 0, 0, 4, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 20, 4, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7,172, 32, 68, 65, 84, 65,
+ 0, 0, 2,152, 1, 7,172, 32, 0, 0, 0,145, 0, 0, 0, 1, 64,136,212,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,
+128, 0, 0, 0,128, 0, 0, 0,188,163,215,226,128, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,193, 32, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 63,128, 0, 0, 64,136,212,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 31,175,184, 65, 32, 0, 0, 62,111,122,237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,106, 14,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,249,252,209,194, 71,253,115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67,249,127, 98, 66, 71,255,129, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,193, 32, 0, 0, 63,128, 0, 0, 64,136,212,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 31,175,184, 65, 32, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,222, 32,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 83, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,192, 0, 0,210, 66,
-205,204,204,189,205,204,140, 63, 68, 65, 84, 65,180, 2, 0, 0, 0,197,196, 8, 89, 0, 0, 0, 1, 0, 0, 0,224,199,196, 8,
-168,195,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 87, 46, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,220, 29, 62, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
-102,102,102, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,179,146,207, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,240, 0,233, 30,112, 0, 0, 0,146, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0,233, 27, 32, 0,233, 28, 48, 0,233, 29, 80, 0, 0, 0, 1, 63, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 1, 0, 7, 1, 7,188, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 60, 35,215, 10,
+ 67,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
+ 0, 7, 0, 10, 0,159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0, 4,248, 1, 7,176, 32, 0, 0, 0,143, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7,188, 32, 0,233, 38, 96,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,232,212,160, 0,233, 32, 64, 0,232,212,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,102,102, 65, 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 61,204,204,205, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 32,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 32,224,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,172, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 1,224, 0, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 25,
+ 0,141, 7,128, 4, 56, 0, 4, 0, 4, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 33, 0, 23, 0, 0, 0,128, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,224,199,196, 8, 96, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0,197,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 87, 46, 28, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 79, 65, 68, 32, 70, 73, 76, 69, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
- 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,
- 96,201,196, 8,113, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,194,196, 8,136,167,196, 8,136,166,196, 8,200,166,196, 8,
-200,167,196, 8, 0, 0, 0, 0,228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,185,206,105, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,
- 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0,232, 3, 0, 0, 5, 1, 0, 0,243, 1, 0, 0, 0, 0, 0, 0,232, 3, 0, 0,
- 5, 1, 0, 0, 31, 1, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 32, 1, 0, 0,243, 1, 0, 0, 0, 0, 0, 0, 1, 0, 8, 8,
-233, 3,212, 0, 1, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88,202,196, 8, 8,206,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
- 88,202,196, 8, 95, 0, 0, 0, 1, 0, 0, 0, 40,203,196, 8, 0, 0, 0, 0, 8, 0, 0, 0, 51, 51, 51, 63, 1, 87, 49,172,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,212, 0, 0, 0,
- 16, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,233, 3, 0, 0, 16, 0, 0, 0,212, 0, 0, 0,
- 0, 0, 32, 65, 0, 0,128, 64, 0, 0,250, 70, 0, 0, 0, 66,205,204,204, 61, 0, 0, 32, 65, 9, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 2, 0, 0, 40,203,196, 8, 89, 0, 0, 0,
- 1, 0, 0, 0, 8,206,196, 8, 88,202,196, 8, 1, 0, 0, 0, 51, 51, 51, 63, 1, 87, 49,172, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63,228, 56,142, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,185,206,105, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63,102,102,102, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 38,140, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,102,102, 65, 0, 0, 7, 0,
- 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 24,
- 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,
- 8,206,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,203,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 87, 49,172,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 65, 86, 69, 32, 84, 65, 82,
- 71, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 49, 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 2, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
- 83, 82, 0, 0,116, 0, 0, 0,136,207,196, 8,109, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,163,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 82, 53, 45, 83, 99,114,105,112,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 40,208,196, 8,104,210,196, 8,168,210,196, 8,152,214,196, 8,224,214,196, 8,176,236,196, 8,136,251,196, 8,
- 0, 0,231, 3,143, 1,174, 4,232, 3, 32, 3, 1, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,208,196, 8,110, 0, 0, 0, 1, 0, 0, 0,104,208,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,208,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,168,208,196, 8, 40,208,196, 8, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-168,208,196, 8,110, 0, 0, 0, 1, 0, 0, 0,232,208,196, 8,104,208,196, 8, 0, 0, 0, 0,232, 3, 32, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,232,208,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 40,209,196, 8,168,208,196, 8, 0, 0, 0, 0,
-232, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,209,196, 8,110, 0, 0, 0, 1, 0, 0, 0,104,209,196, 8,
-232,208,196, 8, 0, 0, 0, 0, 0, 0,212, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,209,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0,168,209,196, 8, 40,209,196, 8, 0, 0, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,
-168,209,196, 8,110, 0, 0, 0, 1, 0, 0, 0,232,209,196, 8,104,209,196, 8, 0, 0, 0, 0,232, 3, 6, 3, 0, 0, 0, 0,
- 68, 65, 84, 65, 20, 0, 0, 0,232,209,196, 8,110, 0, 0, 0, 1, 0, 0, 0, 40,210,196, 8,168,209,196, 8, 0, 0, 0, 0,
-156, 1,212, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,210,196, 8,110, 0, 0, 0, 1, 0, 0, 0,104,210,196, 8,
-232,209,196, 8, 0, 0, 0, 0,156, 1, 6, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,210,196, 8,110, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 40,210,196, 8, 0, 0, 0, 0,156, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-168,210,196, 8,111, 0, 0, 0, 1, 0, 0, 0,240,210,196, 8, 0, 0, 0, 0,104,208,196, 8,168,208,196, 8, 1, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,210,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 56,211,196, 8,168,210,196, 8,
-104,208,196, 8,104,209,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,211,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0,128,211,196, 8,240,210,196, 8,168,208,196, 8,168,209,196, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,128,211,196, 8,111, 0, 0, 0, 1, 0, 0, 0,200,211,196, 8, 56,211,196, 8,104,209,196, 8,168,209,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,211,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 16,212,196, 8,
-128,211,196, 8, 40,209,196, 8,232,209,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,212,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0, 88,212,196, 8,200,211,196, 8,104,209,196, 8, 40,210,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0, 88,212,196, 8,111, 0, 0, 0, 1, 0, 0, 0,160,212,196, 8, 16,212,196, 8,168,209,196, 8,
- 40,210,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,212,196, 8,111, 0, 0, 0, 1, 0, 0, 0,
-232,212,196, 8, 88,212,196, 8,232,209,196, 8, 40,210,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-232,212,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 48,213,196, 8,160,212,196, 8, 40,209,196, 8,104,209,196, 8, 1, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,213,196, 8,111, 0, 0, 0, 1, 0, 0, 0,120,213,196, 8,232,212,196, 8,
- 40,208,196, 8, 40,209,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,213,196, 8,111, 0, 0, 0,
- 1, 0, 0, 0,192,213,196, 8, 48,213,196, 8, 40,208,196, 8,104,210,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 24, 0, 0, 0,192,213,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 8,214,196, 8,120,213,196, 8,232,208,196, 8,104,210,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,214,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 80,214,196, 8,
-192,213,196, 8,232,209,196, 8,104,210,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,214,196, 8,
-111, 0, 0, 0, 1, 0, 0, 0,152,214,196, 8, 8,214,196, 8, 40,210,196, 8,104,210,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 24, 0, 0, 0,152,214,196, 8,111, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,214,196, 8,232,208,196, 8,
-168,209,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,224,214,196, 8,113, 0, 0, 0, 1, 0, 0, 0,
-216,215,196, 8, 0, 0, 0, 0,104,209,196, 8,104,208,196, 8,168,208,196, 8,168,209,196, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-232, 3, 0, 0, 7, 3, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0,232, 3, 0, 0, 7, 3, 0, 0, 33, 3, 0, 0, 0, 0, 0, 0,
-232, 3, 0, 0, 32, 3, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7,233, 3, 1, 0, 3, 0, 3, 1,196, 2, 0, 0,
- 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,216,215,196, 8,113, 0, 0, 0, 1, 0, 0, 0,
-208,222,196, 8,224,214,196, 8, 40,209,196, 8,104,209,196, 8, 40,210,196, 8,232,209,196, 8, 0, 0, 0, 0,122,214,248, 61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,
- 0, 0, 0,128,111, 18, 3,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
-155, 1, 0, 0,213, 0, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0,155, 1, 0, 0,213, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,
-155, 1, 0, 0,240, 0, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,156, 1, 22, 2, 1, 0, 3, 0,251, 2, 0, 0,
- 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,218,196, 8, 80,221,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0,208,216,196, 8,160,217,196, 8, 68, 65, 84, 65,164, 0, 0, 0,208,216,196, 8,112, 0, 0, 0, 1, 0, 0, 0,
-160,217,196, 8, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,140, 0,210, 0, 62, 1,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,160,217,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,216,196, 8,
- 51, 68, 32, 86,105,101,119,112,111,114,116, 32,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 8, 0, 8, 0, 62, 1,204, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-180, 2, 0, 0,112,218,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 80,221,196, 8, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63,
- 1, 89, 46,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,122,214,248, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 38,175, 3, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,148,173, 42, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,122,214,248, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,186,252,191, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18, 3,187,
- 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,148,173, 42, 65, 0, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 8, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61,
- 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 1, 0,
- 7, 0,175, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0,232,197, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,232,197, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,197, 63, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, 80,221,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,218,196, 8,
- 5, 0, 0, 0, 51, 51, 51, 63, 1, 89, 46,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,208,222,196, 8,113, 0, 0, 0, 1, 0, 0, 0,
-176,236,196, 8,216,215,196, 8,104,210,196, 8, 40,210,196, 8,168,209,196, 8,232,208,196, 8, 0, 0, 0, 0, 1,184,157, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0,157, 1, 0, 0,
-232, 3, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0,157, 1, 0, 0,232, 3, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,157, 1, 0, 0,
-232, 3, 0, 0, 27, 0, 0, 0, 5, 3, 0, 0, 0, 0, 0, 0, 1, 0, 9, 9, 76, 2,235, 2, 3, 0, 3, 0,165, 2, 0, 0,
- 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,224,196, 8, 48,235,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0,200,223,196, 8,200,223,196, 8, 68, 65, 84, 65,164, 0, 0, 0,200,223,196, 8,112, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0,
+ 0,233, 34, 32, 0,233, 34, 32, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 73,112,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,167, 0, 62, 1,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,152,224,196, 8,100, 0, 0, 0, 1, 0, 0, 0, 64,225,196, 8, 0, 0, 0, 0,
- 9, 0, 0, 0, 51, 51, 51, 63, 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 3,197, 8,
- 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61, 5, 0, 0, 0, 17, 0, 0, 0,225, 2, 0, 0,227, 2, 0, 0,
- 5, 0, 0, 0, 17, 0, 0, 0,207, 2, 0, 0,227, 2, 0, 0, 68, 65, 84, 65,184, 0, 0, 0, 64,225,196, 8, 98, 0, 0, 0,
- 1, 0, 0, 0, 40,226,196, 8,152,224,196, 8, 6, 0, 0, 0, 51, 51, 51, 63, 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,120,190, 0, 0,159, 63,
- 0, 0,242,190, 0,128,188, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,242, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 40, 1, 0, 0, 40,226,196, 8, 93, 0, 0, 0, 1, 0, 0, 0,128,227,196, 8, 64,225,196, 8, 2, 0, 0, 0, 51, 51, 51, 63,
- 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,122, 67,205,204,204,189,205,204,140, 63, 0, 0, 0, 0, 0, 0,122, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0,242, 1, 0, 0, 16, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
- 59, 1, 0, 0, 16, 0, 0, 0,242, 1, 0, 0, 10,215, 35, 60, 10,215, 35, 60, 0, 96,106, 70, 0, 0,122, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 72, 12,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67,205,204,204,189,205,204,140, 63, 68, 65, 84, 65,196, 0, 0, 0,
-128,227,196, 8, 97, 0, 0, 0, 1, 0, 0, 0,208,229,196, 8, 40,226,196, 8, 3, 0, 0, 0, 51, 51, 51, 63, 1, 89, 47,124,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,182, 67, 0, 0,209,195, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,182, 67, 0, 0,190,195, 0, 0, 0,181, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,124, 1, 0, 0,
- 0, 0,190,195, 0, 0,190,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 1, 0, 1, 0, 1, 0,
-108, 1,124, 1, 0, 0, 0, 0,112,228,196, 8,120,229,196, 8, 0, 0,142, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,112,228,196, 8,129, 0, 0, 0,
- 1, 0, 0, 0,200,228,196, 8, 0, 0, 0, 0, 66, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 65, 0, 0, 0, 0,
- 0, 0, 0, 0,152, 15,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,200,228,196, 8,129, 0, 0, 0,
- 1, 0, 0, 0, 32,229,196, 8,112,228,196, 8, 66, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,112, 61, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, 32,229,196, 8,129, 0, 0, 0,
- 1, 0, 0, 0,120,229,196, 8,200,228,196, 8, 66, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 61, 10,192, 0, 0, 0, 0,
- 0, 0, 0, 0, 72, 12,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,120,229,196, 8,129, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 32,229,196, 8, 69, 77, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,174,143, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 22,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,229,196, 8,166, 0, 0, 0,
- 1, 0, 0, 0,160,230,196, 8,128,227,196, 8, 11, 0, 0, 0, 51, 51, 51, 63, 1, 89, 47,124, 0, 0,128,192, 0, 0,122, 67,
- 0, 0,128,192, 0, 0,127, 67, 0, 0,128,192, 0, 0, 72, 66, 0, 0,128,192, 0, 0,127, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0,
- 16, 0, 0, 0,124, 1, 0, 0, 0, 0,128, 63, 0,128,129, 67, 0, 0,250, 70, 0,128,129, 67,205,204,204, 61, 0, 0, 32, 65,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,160,230,196, 8, 99, 0, 0, 0, 1, 0, 0, 0,112,231,196, 8,208,229,196, 8,
- 13, 0, 0, 0, 51, 51, 51, 63, 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0,122, 68, 0, 0, 0, 0, 0, 0,122, 68, 0, 0,160,192, 0, 0,130, 66, 0, 0, 0, 0,
- 0, 0,182, 67,108, 1, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,124, 1, 0, 0,196, 0, 0, 0,108, 1, 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0,196, 0, 0, 0,108, 1, 0, 0, 16, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 68,
- 0, 0,122, 68,205,204,204, 61, 0, 0, 72, 66, 10, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
-176, 0, 0, 0,112,231,196, 8,177, 0, 0, 0, 1, 0, 0, 0, 80,232,196, 8,160,230,196, 8, 12, 0, 0, 0, 51, 51, 51, 63,
- 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 2, 66, 0, 0,128,193,
- 0, 0,247, 67, 0, 0, 0,191, 0, 0, 2, 66, 0, 0,128,193, 0, 0,247, 67,108, 1, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,
- 14, 2, 0, 0,128, 0, 0, 0,108, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 0,108, 1, 0, 0, 16, 0, 0, 0,
- 14, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 70, 0, 0,122, 68, 10,215, 35, 60, 0, 0, 72, 66, 10, 0, 0, 0,
- 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,180, 2, 0, 0, 80,232,196, 8, 89, 0, 0, 0, 1, 0, 0, 0, 48,235,196, 8,112,231,196, 8, 1, 0, 0, 0,
- 51, 51, 51, 63, 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 1,184,157, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 33,195, 79, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29,254,249,195,125,254, 71,194, 0, 0, 0, 0, 0, 0, 0, 0,173,128,249, 67,138, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 1, 0, 7, 0, 40, 9,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 24, 0, 0, 12, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 20, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, 48,235,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 80,232,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 89, 47,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,204, 0, 0, 0,176,236,196, 8,113, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,208,222,196, 8, 40,208,196, 8, 40,209,196, 8,232,209,196, 8,104,210,196, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0,155, 1, 0, 0,185, 0, 0, 0,211, 0, 0, 0,
- 0, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 4,156, 1,185, 0, 3, 0, 3, 0,
- 79, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,249,196, 8, 8,250,196, 8,
- 0, 0, 0, 0, 0, 0, 0, 0,168,237,196, 8, 56,248,196, 8, 68, 65, 84, 65,164, 0, 0, 0,168,237,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,120,238,196, 8, 0, 0, 0, 0, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,120,238,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 72,239,196, 8,
-168,237,196, 8, 77,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0, 72,239,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 24,240,196, 8,120,238,196, 8, 65,110,105,109,
- 32,115,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101,
- 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
- 24,240,196, 8,112, 0, 0, 0, 1, 0, 0, 0,232,240,196, 8, 72,239,196, 8, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,232,240,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,184,241,196, 8, 24,240,196, 8, 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,184,241,196, 8,112, 0, 0, 0, 1, 0, 0, 0,136,242,196, 8,
-232,240,196, 8, 69,102,102,101, 99,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,210, 3, 0, 0,162, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,136,242,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 88,243,196, 8,184,241,196, 8, 72,111,111,107,
-115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101,
- 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,240,196, 8, 68, 65, 84, 65,164, 0, 0, 0,
- 88,243,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 40,244,196, 8,136,242,196, 8, 80, 97,114,116,105, 99,108,101, 32, 73,110,116,
-101,114, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,240,196, 8, 68, 65, 84, 65,164, 0, 0, 0, 40,244,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0,248,244,196, 8, 88,243,196, 8, 83,111,102,116, 98,111,100,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,232,240,196, 8, 68, 65, 84, 65,164, 0, 0, 0,248,244,196, 8,112, 0, 0, 0, 1, 0, 0, 0,200,245,196, 8,
- 40,244,196, 8, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,164, 0, 0, 0,200,245,196, 8,112, 0, 0, 0, 1, 0, 0, 0,152,246,196, 8,248,244,196, 8, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 0, 0,
- 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,
-152,246,196, 8,112, 0, 0, 0, 1, 0, 0, 0,104,247,196, 8,200,245,196, 8, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 2, 0, 0, 62, 1,204, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0,104,247,196, 8,112, 0, 0, 0,
- 1, 0, 0, 0, 56,248,196, 8,152,246,196, 8, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 0, 0, 0, 6, 0, 0, 0, 16, 63,128, 0, 0, 63,128, 0, 0,
+ 2,173, 0, 95, 63,217,153,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0,172, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,232,101,128,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 28,
+ 0,232,212,160, 0, 0, 0,125, 0, 0, 0, 1, 0,233, 31,240, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
+ 2,240, 1,245, 1, 7,192, 32, 68, 65, 84, 65, 0, 0, 0, 28, 0,233, 31,240, 0, 0, 0,125, 0, 0, 0, 1, 0,233, 32, 64,
+ 0,232,212,160, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 4, 0, 3,200, 3, 42, 1, 7,196, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 0,233, 32, 64, 0, 0, 0,125, 0, 0, 0, 1, 0, 0, 0, 0, 0,233, 31,240, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 4, 0,
+ 3, 73, 3, 70, 1, 7,188, 32, 68, 65, 84, 65, 0, 0, 0, 40, 0,233, 32,144, 0, 0, 0,124, 0, 0, 0, 1, 1, 44, 0, 0,
+ 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 1,244, 0,200, 0,100, 0, 20, 0, 0, 39, 16, 61,204,204,205, 65,240, 0, 0,
+ 64, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 12, 0,233, 32,224, 0, 0, 0,141, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 1, 63, 76,204,205, 66,180, 0, 0, 0, 9, 0, 1, 63,128, 0, 0, 58,131, 18,111, 0, 32, 0, 32,
+ 0, 32, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5,255,255, 0, 50, 0, 50,
+ 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50,
+ 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 60, 35,215, 10, 61,204,204,205, 0, 0, 0, 0, 0, 0, 0,250, 61,204,204,205, 61,204,204,205, 63,166,102,102,
+ 63,192, 0, 0, 65,240, 0, 0, 63,122,225, 72, 61,204,204,205, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 2, 67, 0, 3,
+ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 72, 0,233, 34, 32, 0, 0, 0,130, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 49, 32, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,255,255, 0, 0, 0, 0, 0, 0,127,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 67, 65, 0, 0, 0,136, 0,233, 34,144, 0, 0, 0, 30, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 63, 0, 0, 0, 66, 68,137,145, 61,204,204,205, 66,200, 0, 0,
+ 66, 12, 0, 0, 64,234, 14,161, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65,
+ 0, 0, 1,132, 0,233, 35, 64, 0, 0, 0, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 65,239,255,247, 66,150, 0, 0,
+ 62, 25,153,154, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0,233, 36,240, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25,
+ 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 0,233, 36,240,
+ 0, 0, 1, 50, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 0,233, 38, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,233, 38, 32, 0, 0, 1, 48,
+ 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79,
+ 0, 0, 1,104, 0,233, 38, 96, 0, 0, 0,123, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 62,128, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+ 61,204,204,205, 61,204,204,205, 61,204,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 28,204,205, 0, 0, 0, 0,
+ 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 32, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61, 76,204,205, 0, 0, 0, 5, 0, 0, 0, 0, 59,163,215, 10, 0, 0, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0, 0,120,
+ 0,233, 39,240, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 84,101,
+120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0,233, 40,144, 0,233, 40,144, 0,233, 40,144, 0,233, 40,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7,182, 32,255,255,255,255, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 0,233, 40,144, 0, 0, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,233, 40,208, 0, 0, 0, 0, 0, 0, 0, 0, 70, 82, 69, 69, 68, 65, 84, 65, 0, 0, 0, 4, 0,233, 40,208, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 79, 66, 0, 0, 3, 80, 1, 7,188, 32, 0, 0, 0,115, 0, 0, 0, 1, 1, 7,192, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 34,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64,239,101,110,192,208, 62,150, 64,170,255, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,141,254, 42,
+ 60, 49, 57,192, 63, 80,159, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 47,149,222, 63, 58, 70, 53,188, 49, 56,222,
+ 0, 0, 0, 0,190,162,126, 86, 62,159,251,227, 63,101, 53, 55, 0, 0, 0, 0, 63, 39,165, 7,191, 28, 84,149, 62,227,247, 51,
+ 0, 0, 0, 0, 64,239,101,110,192,208, 62,150, 64,170,255, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1, 51,128, 0, 1,179, 0, 0, 1,
+ 0, 0, 0, 0, 51, 0, 0, 0, 63,128, 0, 0, 51,128, 0, 1, 0, 0, 0, 0,179, 0, 0, 2,167, 0, 0, 2, 63,128, 0, 1,
+ 0, 0, 0, 0, 53, 0, 0, 1, 41, 0, 0, 1,168,128, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 49,215,190,157, 52, 4,170,167,
+128, 0, 0, 0,178,157,116,129, 63,128, 0, 1, 51, 15, 69, 33,128, 0, 0, 0, 51, 67,254, 73, 49,106, 97,243, 63,128, 0, 0,
+128, 0, 0, 0, 52, 64, 0, 3, 39,157,164,183, 53,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 63, 16,225,187, 63,128, 0, 0, 62,204,204,205, 63, 32, 54,237, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 1, 7,192, 32, 0, 0, 0,115, 0, 0, 0, 1,
+ 1, 7,196, 32, 1, 7,188, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6,144,198, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 43,112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,233, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 47,149,222, 63, 58, 70, 52,
+188, 49, 56,179,128, 0, 0, 0,190,162,126, 86, 62,159,251,227, 63,101, 53, 56,128, 0, 0, 0, 63, 39,165, 7,191, 28, 84,149,
+ 62,227,247, 50,128, 0, 0, 0, 64,239,101,110,192,208, 62,151, 64,170,255, 77, 63,128, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 34,208,229,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,144,198,192, 6,144,204,128, 0, 0, 0, 25, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 0,233, 41, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 1, 7,196, 32, 0, 0, 0,115, 0, 0, 0, 1, 0, 0, 0, 0,
+ 1, 7,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 35, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64,130,112,154, 63,128,178,183, 64,188,236,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 38,123,229,
+ 61, 98, 43, 87, 63,238,229,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,148,236, 54, 63,116,134, 25,189, 98, 13,236,
+ 0, 0, 0, 0,191, 69,102,221,190, 76,174, 57, 63, 26,194, 34, 0, 0, 0, 0, 63, 16,255, 37, 62, 95,161,241, 63, 75,111,164,
+ 0, 0, 0, 0, 64,130,112,154, 63,128,178,183, 64,188,236,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 50,128, 0, 1,179, 0, 0, 0,
+ 0, 0, 0, 0, 50,128, 0, 1, 63,128, 0, 1, 51, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 39, 0, 0, 1, 52, 0, 0, 1, 39,128, 0, 1, 63,128, 0, 0,190,148,236, 53,191, 69,102,222, 63, 16,255, 37,
+128, 0, 0, 0, 63,116,134, 24,190, 76,174, 57, 62, 95,161,240,128, 0, 0, 0,189, 98, 13,235, 63, 26,194, 34, 63, 75,111,166,
+128, 0, 0, 0, 63, 13, 19,208,190,102, 65,234,192,231, 10, 10, 63,128, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 1, 0, 0, 0, 68, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 34,208,229, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,112, 1, 7,200, 32, 0, 0, 0, 42, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 76,204,205,
+ 63, 76,204,205, 63, 76,204,205, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 76,204,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0,
+ 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 2, 0, 50, 0, 6, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 3,
+ 3, 1, 0, 3, 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0,
+ 61,204,204,205, 63, 0, 0, 0, 61,204,204,205, 61,204,204,205, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0,233, 41, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 3, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,164, 0, 0, 0, 56,248,196, 8,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-104,247,196, 8, 83, 99,114,105,112,116,108,105,110,107,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 99,114,105,112,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,233, 41,224, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205,
+ 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 1,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65,212, 0, 0, 0, 8,249,196, 8, 94, 0, 0, 0, 1, 0, 0, 0, 8,250,196, 8, 0, 0, 0, 0, 4, 0, 0, 0,
- 51, 51, 51, 63, 1, 89, 48,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0,193, 0, 0,163, 67, 0, 0, 0,193, 0, 0,104, 67, 0, 0, 0,193, 35,159, 3, 68, 0, 0, 0,193, 0, 0,104, 67,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 0,233, 41, 48, 0, 0, 0, 33,
+ 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 42, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
+ 63,128, 0, 0, 62, 76,204,205, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 0,233, 41,224, 0, 0, 0, 19, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 84, 69, 0, 0, 1, 24, 0,233, 42, 48, 0, 0, 0, 38, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 64,160, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 60,204,204,205,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 40, 66, 0, 0,200, 68, 0, 0,225, 67,
- 0, 0, 0, 63,225,122,180, 63, 0, 0, 1, 0, 1, 0, 1, 0,156, 1,185, 0, 0, 0, 0, 0, 5, 0,255,255, 0, 0, 5, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, 8,250,196, 8, 96, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 8,249,196, 8, 5, 0, 0, 0, 51, 51, 51, 63, 1, 89, 48,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 0, 0, 1, 24, 0,233, 43,112, 0, 0, 0, 52, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 44,176, 0,233, 51, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 46, 96, 0,233, 48,208,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 44,224, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 47, 80, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 49,144, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 51,128, 0, 0,180, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 4, 63,128, 0, 4, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 67, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 0,233, 44,176, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7,200, 32, 68, 65, 84, 65, 0, 0, 1, 84, 0,233, 44,224, 0, 0, 1, 53,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,233, 46, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 57, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,244, 3, 0, 0,136,251,196, 8, 87, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101,
- 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 9,197, 8,160, 2,197, 8, 0, 0, 0, 0,
- 0, 0, 0, 0,168,255,196, 8, 56, 0,197, 8,168,255,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61, 0, 0, 0, 0,128, 0,197, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-250, 0,100, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,100, 0,141, 0, 32, 3, 88, 2,
-100, 0,100, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 4, 0, 0, 0, 90, 0, 16, 0, 23, 0, 1, 0, 0, 0,128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 0, 25, 0, 10, 0, 0, 0, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,205,204, 76, 63,102,102,102, 63, 0, 0,128, 63, 0, 0,128, 64,
- 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192,
+ 0,233, 46, 96, 0, 0, 0, 58, 0, 0, 0, 8, 63,128, 0, 0, 63,127,255,255,191,128, 0, 0, 73,230, 73,230,182, 26, 3,255,
+ 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,191,128, 0, 0, 73,230,182, 26,182, 26, 3,255, 0, 0, 0, 0,191,128, 0, 1,
+191,127,255,253,191,128, 0, 0,182, 26,182, 26,182, 26, 3,255, 0, 0, 0, 0,191,127,255,250, 63,128, 0, 3,191,128, 0, 0,
+182, 26, 73,230,182, 26, 3,255, 0, 0, 0, 0, 63,128, 0, 4, 63,127,255,247, 63,128, 0, 0, 73,230, 73,230, 73,230, 3,255,
+ 0, 0, 0, 0, 63,127,255,245,191,128, 0, 5, 63,128, 0, 0, 73,230,182, 26, 73,230, 3,255, 0, 0, 0, 0,191,128, 0, 3,
+191,127,255,250, 63,128, 0, 0,182, 26,182, 26, 73,230, 3,255, 0, 0, 0, 0,191,127,255,255, 63,128, 0, 0, 63,128, 0, 0,
+182, 26, 73,230, 73,230, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 0,233, 47, 80, 0, 0, 1, 53, 0, 0, 0, 5,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,233, 48,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,144, 0,233, 48,208,
+ 0, 0, 0, 55, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 35, 0, 0, 0, 3,
+ 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84,
+ 0,233, 49,144, 0, 0, 1, 53, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 47,102,116,121,112,101, 0, 64, 38, 35, 0, 0, 0, 0, 0, 64, 94, 0, 0, 64, 38, 94, 0, 0, 0, 35, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 51, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,226,187, 8, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,
-168,255,196, 8, 79, 0, 0, 0, 1, 0, 0, 0,240,255,196, 8, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
-128, 2,108, 1, 72, 12,197, 8, 68, 65, 84, 65, 28, 0, 0, 0,240,255,196, 8, 79, 0, 0, 0, 1, 0, 0, 0, 56, 0,197, 8,
-168,255,196, 8, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 78, 3,159, 1,152, 15,197, 8, 68, 65, 84, 65, 28, 0, 0, 0,
- 56, 0,197, 8, 79, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,255,196, 8, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,
-251, 3, 33, 0, 40, 9,197, 8, 68, 65, 84, 65, 40, 0, 0, 0,128, 0,197, 8, 78, 0, 0, 0, 1, 0, 0, 0, 44, 1, 0, 0,
- 1, 0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 0,244, 1,200, 0,100, 0, 20, 0, 16, 39, 0, 0,205,204,204, 61, 0, 0,240, 65,
- 0, 0, 0, 64, 68, 65, 84, 65, 28, 0, 0, 0, 48, 49,197, 8, 86, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 90, 0, 9, 0,
- 1, 0, 0, 0, 0, 0,128, 63,111, 18,131, 58, 32, 0, 32, 0, 32, 0, 0, 0, 67, 65, 0, 0,116, 0, 0, 0,216, 0,197, 8,
- 23, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97,
- 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,205,204, 76, 62,
- 0, 0, 0, 0,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,
-252, 0, 0, 0,120, 1,197, 8, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,247,255,239, 65,
- 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 64, 11, 3, 0, 46, 26,128, 63, 25, 4,240, 65,
- 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0, 32, 1, 0, 0,160, 2,197, 8, 77, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174,103, 61,112, 29, 98, 62,
-205,204,204, 62, 0, 0, 0, 0,205,204,204, 61,205,204,204, 61,205,204,204, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
-205,204, 28, 65, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 84, 88, 0, 0,100, 0, 0, 0,240, 3,197, 8, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 84, 88, 84,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,128, 4,197, 8,128, 4,197, 8,128, 4,197, 8,128, 4,197, 8,
- 0, 0, 0, 0, 0, 0, 0, 0,248, 4,197, 8,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,
-128, 4,197, 8, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 4,197, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0,200, 4,197, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,
-244, 2, 0, 0, 40, 9,197, 8, 71, 0, 0, 0, 1, 0, 0, 0, 72, 12,197, 8, 0, 0, 0, 0, 1, 89, 70,108, 0, 0, 0, 0,
- 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,120, 0,233, 51, 16, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2,
+ 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2,
+ 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 2, 85, 83, 69, 82, 0, 0, 11, 40, 0,169, 26,192, 0, 0, 0,172, 0, 0, 0, 1,
+ 0, 1,152, 33, 0, 0, 2, 63, 0, 0, 0, 5, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63,
- 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,
-149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
-157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,
-243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0,
- 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,100, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 6, 41,100, 63, 0, 0,128, 63,205,204,204, 62, 0, 0, 0, 0, 6, 41,100, 63,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112,
+ 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,
+110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 66, 0, 0,244, 2, 0, 0, 72, 12,197, 8, 71, 0, 0, 0, 1, 0, 0, 0,152, 15,197, 8, 40, 9,197, 8,
- 1, 89,123, 92, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 22,197, 8, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 15,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63,
- 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64,
- 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,100, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 61, 0, 0,128, 63,205,204,204, 62,
- 0, 0, 0, 0,205,204,204, 61, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24,218,193, 8,200, 29,197, 8, 68, 65, 84, 65, 4, 0, 0, 0,104, 15,197, 8, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 79, 66, 0, 0,244, 2, 0, 0,152, 15,197, 8, 71, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 12,197, 8,
- 1, 89,121, 92, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 1,197, 8, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63,
- 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62,
- 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192,
- 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,100, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 61, 0, 0,128, 63,205,204,204, 62,
- 0, 0, 0, 0,205,204,204, 61, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,156, 1, 0, 0,184, 18,197, 8, 33, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63,
- 0, 0, 0, 0, 2, 0, 2, 0, 50, 0, 0, 6, 3, 0, 1, 3, 0, 0, 0, 0, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,
-205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 1, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,128, 63, 0, 0,128, 63,128, 20,197, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 88, 0, 0, 0,128, 20,197, 8, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 21,197, 8,
- 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 16, 0, 0, 0,
- 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0,128, 63,
-205,204, 76, 62, 0, 0, 0, 0, 84, 69, 0, 0,228, 0, 0, 0, 8, 21,197, 8, 30, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63,
- 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,
- 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 77, 69, 0, 0,188, 0, 0, 0, 24, 22,197, 8, 46, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0,232, 31,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,197, 8, 88, 0,194, 8,
- 0, 0, 0, 0, 0, 0, 0, 0,216, 21,194, 8,120, 28,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180,
- 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 0, 23,197, 8, 0, 0, 0, 0,
- 1, 0, 0, 0,184, 18,197, 8, 68, 65, 84, 65,160, 0, 0, 0,216, 21,194, 8, 51, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,
-255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182, 3,255, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182,
- 26,182, 3,255, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182, 3,255,250,255,127,191, 3, 0,128, 63,
- 0, 0,128,191, 26,182,230, 73, 26,182, 3,255, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73, 3,255,
-245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73, 3,255, 3, 0,128,191,250,255,127,191, 0, 0,128, 63,
- 26,182, 26,182,230, 73, 3,255,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73, 3,255, 68, 65, 84, 65,
-144, 0, 0, 0,120, 28,194, 8, 48, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0,
- 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0,
- 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0,
- 68, 65, 84, 65,120, 0, 0, 0, 88, 0,194, 8, 47, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
- 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 71, 76, 79, 66, 24, 0, 0, 0,160,240,255,191,114, 0, 0, 0, 1, 0, 0, 0,
- 96, 40,196, 8,136,251,196, 8, 1, 0, 0, 1, 0, 0, 0, 0,128, 32, 4, 0, 0, 0, 0, 0, 85, 83, 69, 82,168, 7, 0, 0,
-224,226,172, 8,108, 0, 0, 0, 1, 0, 0, 0, 33, 24, 0, 0, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115,
- 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,
-101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2104,6 +938,16 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 6, 52, 48, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 64, 0, 5, 0, 2, 1, 7,216, 32, 1, 7,236, 32,
+ 5,210, 18, 32, 5,210, 18, 32, 5,210, 24, 64, 5,210, 24, 64, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20,
+ 0, 0, 0, 1, 0, 0, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0,191,100, 90, 30, 62,153,153,154, 63,102,102,102, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 62,254,250, 31, 63, 0, 0, 9, 63, 25,153,156, 0, 0, 0, 0, 62, 76,204,205, 62, 76,204,205, 62, 76,204,205, 63,128, 0, 0,
+ 63, 22,135, 44, 62,235,133, 32, 62,125,243,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76, 73,195, 63, 86,135, 42,
+ 63,128, 0, 0, 0, 0, 0, 0, 61,135, 43, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 93, 47, 16,190,200,180, 58,
+190, 93, 47, 24, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,
+ 31,144, 0, 15, 0, 6, 0, 15, 0, 8, 0, 10, 0,250, 0, 0, 0,100, 0,100, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2113,310 +957,590 @@ char datatoc_B_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 19, 8, 1, 7,216, 32, 0, 0, 0,170, 0, 0, 0, 1, 1, 7,236, 32,
+ 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 1, 0, 25,
+255,231, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 1, 0, 15,
+255,241, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 0, 1, 0, 0,
+ 0, 25, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 0, 1, 0, 15,
+255,241, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 0, 1,255,236,
+ 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 0, 1,255,236,
+ 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 0, 1, 0, 15,
+255,241, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 25,
+255,236, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0, 25,
+255,236, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0, 38,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,
+ 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90,255, 0, 0, 0, 0,250,250,250,255,
+ 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,180,180,180,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+130,130,130,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255,
+ 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,
+ 82, 96,110,255,124,137,150,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0,
+ 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0,
+ 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,172,172,172,255, 84, 44, 31,100, 17, 27, 60,100,
+ 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,228,156,198,255,255,255,170,255, 96,192, 64,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,
+169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,
+ 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,255,255,255, 10,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+195,195,195,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255,
+ 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0,
+ 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255,
+ 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,
+255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,
+255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,
+255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,
+255,140, 25,255, 16, 64, 16,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,
+219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255,
+ 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,150,150,150,255,
+129,131,144,255,127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255,
+ 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255,
+ 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255,
+ 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255,
+ 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255,
+ 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255,
+ 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255,
+ 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 19, 8, 1, 7,236, 32, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 1, 7,216, 32,
+ 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, 32, 84,104,101,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 1, 0, 25,255,231, 0, 0,
+ 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 1, 0, 15,255,241, 0, 0,
+ 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 0, 1, 0, 0, 0, 25, 0, 0,
+ 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 0, 1, 0, 15,255,241, 0, 0,
+ 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 0, 1,255,236, 0, 0, 0, 0,
+ 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 0, 1,255,236, 0, 0, 0, 0,
+ 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 0, 1, 0, 15,255,241, 0, 0,
+ 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 25,255,236, 0, 0,
+ 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0, 25,255,236, 0, 0,
+ 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0, 38, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,175,175,175, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+ 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255,
+ 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,
+255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,
+255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+107,107,107,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,100,143,143,143,100, 96,192, 64,255, 94, 94, 94,255,
+ 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,255,255,255,
+255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,
+124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,255,255,130, 0,255, 2, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255,
+ 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
+255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 48, 52, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 11, 0, 0, 0, 0, 0, 64, 0,
- 5, 0, 2, 0, 0,104, 97,108,107, 98,111, 97,114,100, 46,116,116,102, 0, 55, 46, 53, 46, 48, 45,112,111,119,101,114,112, 99,
- 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114,
- 99,101,115, 47, 46, 98,102,111,110,116, 46,116,116,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
+ 79,101, 73,255,135,177,125,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,143,143,143,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255,
+ 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
+255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,255,255,255,170,255, 96,192, 64,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,
+126,126, 80,255,162, 95,111,255,109,145,131,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255,
+ 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
+255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
+255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,153,153,153,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 88, 88, 88,255,
+ 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
+255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,200, 32,197, 8,216, 40,197, 8, 32, 0, 0, 0, 5, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,
-205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,
-154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63,
- 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0,
- 25, 0, 15, 0,120, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 7, 0, 0,200, 32,197, 8,
-106, 0, 0, 0, 1, 0, 0, 0,216, 40,197, 8, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,160,160,255,160,160,160,255,173,160,147,255,138,158,161,255,
-161,161,174,255,161,153,167,255,144,144,144,255,144,144,144,255,198,119,119,255,160,160,160,255, 0, 0, 0,255,255,255,255,255,
-210,210,210,255,218,218,218,255,127,127,127,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0,180,180,180,255, 0, 0, 0,255,
-255,255,255,255,195,195,195,255,255,255,255, 40,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 92, 92, 92,255, 0, 0, 0,255,
-255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,
-230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-115,115,115,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,165,165,165,127,160,160,160,100,127,112,112,100, 0, 0, 0, 0,
- 92, 92, 92,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255,
- 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,
-200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128,128,128,255, 0, 0, 0,255,255,255,255,255,182,182,182,255,165,165,165,127,160,160,160,100,
-127,112,112,100,160,160,208,255, 92, 92, 92,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,
-255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,
-255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,120,120,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,
-255,255,255,150,172,172,172,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,
-255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255,
- 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0,255,
-255,255,255,255,195,195,195,255,165,165,165,127,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 92, 92, 92,255, 0, 0, 0,255,
-255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,
-230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153,153,153,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,165,165,165,127,173,173,173,255,127,112,112,100, 0, 0, 0, 0,
-140,140,140,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255,
- 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,
-200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0,255,255,255,255,255,182,182,182,255,165,165,165,127,172,172,172,255,
- 84, 44, 31,100, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,
-255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255,166,166,166,255,200,100,200, 60,
-255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0,255,255,255,255,255,182,182,182,255,
-165,165,165,127,172,172,172,255, 84, 44, 31,100, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,
-255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255,
- 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,228,156,198,255,255,255,170,255,
- 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,115,115,255, 0, 0, 0,255,
-255,255,255,255,195,195,195,255,165,165,165,127,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 92, 92, 92,255, 0, 0, 0,255,
-255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,
-230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 53, 53, 53,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,165,165,165,127,160,160,160,100,127,112,112,100, 0, 0, 0, 0,
- 92, 92, 92,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255,
- 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255, 0, 50,150, 40,200,100,200, 80,255,138, 48,255, 34,221,221,255,
-200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,110,110,110,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,165,165,165,127,170,170,186,255,
-127,112,112,100, 0, 0, 0, 0, 92, 92, 92,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,
-255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,
-255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,
-165,165,165,127,143,143,143,255,198,119,119,255,255, 0, 0,255, 92, 92, 92,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,
-255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255,
- 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255,153,153,153,255, 0, 0, 0,255,
-255,255,255,255,195,195,195,255,165,165,165,127,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 92, 92, 92,255, 0, 0, 0,255,
-255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,176,176, 48,255,
-230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153,153,153,255, 0, 0, 0,255,255,255,255,255,195,195,195,255,165,165,165,127,173,173,173,255,127,112,112,100, 0, 0, 0, 0,
-140,140,140,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 40,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255,
- 0, 0, 0,255,176,176, 48,255,230,150, 50,255, 75, 75, 75,255, 0, 50,150, 30,200,100,200, 60,255,138, 48,255, 34,221,221,255,
-200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 7, 0, 0,216, 40,197, 8,106, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-200, 32,197, 8, 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, 32, 84,104,101,109,101, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,176,176,176,255,107,107,107,255,177,177,177,255,178,178,178,255,143,143,143,255,143,143,143,255,
-107,107,107,255,198,119,119,255,143,143,143,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0,111, 0, 0, 33, 83,255,130, 0,255,
-255,255,255,255, 0, 0, 0,255, 2, 0, 0, 0,107,107,107,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,175,175,175, 51,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
-255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,
-200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0,255,255,255,255,255,
-107,107,107,255, 0, 0, 0, 51,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255,
- 0, 0, 0, 40,255,255,255,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,
- 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
- 0, 0, 0,255,255,255,255,255,107,107,107,255,165,165,165,150,160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,
-144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,107,107,107,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,107,107,107,150,107,107,107,100,143,143,143,100,
- 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,255,255,255,
-255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,165,165,165,150,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
-255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,
-200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, 0, 0, 0,255,255,255,255,255,
-158,158,158,255,165,165,165,150,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255,255,136,255,255,
- 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
- 0, 0, 0,255,255,255,255,255,107,107,107,255,165,165,165,150,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,
-144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,107,107,107,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,165,165,165,150,107,107,107,255,178,178,178,100,
-255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,255,255,255,170,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,165,165,165,150,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
-255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,
-200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0,255,255,255,255,255,
-195,195,195,255,165,165,165,150,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255,
- 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255,
- 0, 0, 0,255,255,255,255,255,195,195,195,255,165,165,165,150,143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255,
- 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,
-144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,153,153,153,255, 0, 0, 0,255,255,255,255,255,153,153,153,255,165,165,165,150,143,143,143,255,198,119,119,255,
-255, 0, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,
-255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,100, 0, 0,255, 0, 0,200,255,
-128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255,107,107,107,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,165,165,165,150,
-160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255,
-255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,
-200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, 0, 0, 0,255,255,255,255,255,
-158,158,158,255,165,165,165,150,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255,255,136,255,255,
- 0, 0, 0, 0,255,187,255,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,
- 60,100, 0, 0, 16,170,197, 8, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,196, 5, 0, 0, 42,110,101,120,
-116, 0, 42,112,114,101,118, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,
-110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,
-101, 91, 50, 52, 93, 0,117,115, 0,102,108, 97,103, 0,112, 97,100, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,
-105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0,116,111,116, 0, 99,117,114,118,101, 0, 99,117,114, 0,
- 98,108,111, 99,107,116,121,112,101, 0,115,104,111,119,107,101,121, 0,112,111,115, 0, 99,117,114,118, 97,108, 0,116,121,112,
-101, 0, 97,100,114, 99,111,100,101, 0,116,111,116,101,108,101,109, 0, 42,100, 97,116, 97, 0, 42,119,101,105,103,104,116,115,
- 0,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,
-108,105,100,101,114,109, 97,120, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,
-109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,
-117,114,112,104, 0, 42, 42,115, 99,114,105,112,116,115, 0, 42,102,108, 97,103, 0, 97, 99,116,115, 99,114,105,112,116, 0,116,
-111,116,115, 99,114,105,112,116, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0,108,101,110, 0, 98,108,101,110, 0,
- 42,110, 97,109,101, 0,102,108, 97,103,115, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,
-115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,
-115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,115,105,122,101, 0,115,101,101,107, 0,112,
- 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0,112, 97,100, 49, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,
-110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0, 89, 70, 95,
-100,111,102,100,105,115,116, 0, 89, 70, 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89,
- 70, 95, 98,107,104, 98,105, 97,115, 0, 89, 70, 95, 98,107,104,114,111,116, 0,115, 99,114,105,112,116,108,105,110,107, 0, 42,
- 97,110,105,109, 0, 42,105, 98,117,102, 0, 42,109,105,112,109, 97,112, 91, 49, 48, 93, 0,111,107, 0,108, 97,115,116,102,114,
- 97,109,101, 0,108, 97,115,116,113,117, 97,108,105,116,121, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,
-100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101,
- 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0,108, 97,115,116,117,112,100, 97,116,101,
- 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,
-115,101,114,118,101,100, 50, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,
-110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,
-112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,116,101,120,
-102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0,
- 99,111,108,102, 97, 99, 0,110,111,114,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,
-112,102, 97, 99, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,
-112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100,
- 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,
-118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0,100, 97,116, 97, 91, 49, 54, 93, 0, 42,105,109, 97, 0,
- 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,115,116,121,112,101, 0,110,111,116,108, 97,121,
- 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,110,
-111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,
-114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,
-103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,
-116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,
-101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,
-112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104,
- 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115,
- 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,
-120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0,101,120,
-116,101,110,100, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,102,114, 97,109,101,115, 0,111,102,
-102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 42,112,108,117,103,105,110, 0, 42, 99,111, 98, 97, 0,
- 42,101,110,118, 0,102,114, 97,100,117,114, 91, 52, 93, 91, 50, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,101,110,101,
-114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,
-116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0,115,104, 97,100,115,112,111,
-116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,
-112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,
-115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,
-115,105,122,101,122, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0, 89, 70, 95,110,117,109,
-112,104,111,116,111,110,115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104, 0,
- 89, 70, 95,117,115,101,113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99,
- 97,117,115,116,105, 99, 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,110,
-116, 0, 89, 70, 95,103,108,111,119,111,102,115, 0, 89, 70, 95,112, 97,100, 51, 0, 89, 70, 95,103,108,111,119,116,121,112,101,
- 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49, 48, 93, 0,108, 97,121, 0,115,112,101, 99,114, 0,115,112,101,
- 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98,
- 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,
-109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,
-116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108,
- 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105,
- 0,102,105,108,116,101,114, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,
-104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,109,111,100,101, 50, 0,102,108, 97,114,101, 99, 0,115,116, 97,
-114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,
-115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,
-114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,114,103, 98,115,101,108, 0,112,114, 95,116,
-121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,115,101,112,116,101,120, 0,112, 97,100, 52, 0,
-112, 97,100, 53, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,
-103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,
-101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95,
- 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,
-109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,
-102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0,102,114,105, 99,116,105,111,110, 0,102,104,
- 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101,
- 0,112, 97,100, 50, 0, 89, 70, 95, 97,114, 0, 89, 70, 95, 97,103, 0, 89, 70, 95, 97, 98, 0, 89, 70, 95,100,115, 99, 97,108,
-101, 0, 89, 70, 95,100,112,119,114, 0, 89, 70, 95,100,115,109,112, 0, 89, 70, 95,112,114,101,115,101,116, 0, 89, 70, 95,100,
-106,105,116, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99, 97,108,101, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255,
+ 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,
+255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,
+107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,
+160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,
+ 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,150,150,150,255,129,131,144,255,
+127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0,
+ 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,
+169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0,
+ 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,
+244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,
+111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,
+141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0,
+ 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 78, 65, 49, 0, 0,203, 56, 6, 62, 16, 32, 0, 0, 0, 0, 0, 0, 0, 1, 83, 68, 78, 65, 78, 65, 77, 69, 0, 0, 10, 5,
+ 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120,
+ 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,
+116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,
+102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116,
+ 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,
+111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,
+105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,
+116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,
+100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,
+107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,
+116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,
+105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,
+115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,
+117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,
+116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93,
+ 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,
+121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,
+111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42, 42,115, 99,114,105,112,116,115, 0,
+ 42,102,108, 97,103, 0, 97, 99,116,115, 99,114,105,112,116, 0,116,111,116,115, 99,114,105,112,116, 0, 42,108,105,110,101, 0,
+ 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108,
+ 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115,
+ 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,
+107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110,
+ 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,
+112, 97,114,116, 97,108,112,104, 97, 0, 97,110,103,108,101, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,
+108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120,
+ 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 89, 70, 95, 97,112,101,114,116,117,114,101, 0, 89,
+ 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95, 98,107,104, 98,105, 97,115, 0, 89, 70, 95, 98,107,104,114,111,116, 0,115,
+ 99,114,105,112,116,108,105,110,107, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115,
+ 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,
+116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,
+101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0,115,111,
+117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100,
+ 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0,
+ 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,
+115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,
+120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111,
+ 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,
+116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,
+111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,116,101,120,102,108,
+ 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,
+111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0,112, 97,100, 91, 50, 93, 0,114,
+ 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,110,111,114,102, 97, 99, 0,118, 97,114,
+102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104,
+ 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,
+115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93,
+ 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42,
+ 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,
+109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93,
+ 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,
+101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,110,111,105,115,101,115,105,
+122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,
+102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,
+110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103,
+ 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119,
+ 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,
+105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,
+116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,
+108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,
+114,111,112,121,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0,101,120,116,101,110,100, 0, 99,
+104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101,
+ 0, 42,112,108,117,103,105,110, 0, 42, 99,111, 98, 97, 0, 42,101,110,118, 0,117,115,101, 95,110,111,100,101,115, 0,112, 97,
+100, 91, 55, 93, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110,
+ 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,
+103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,
+115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42,
+ 99,117,114,102, 97,108,108,111,102,102, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,115,104, 97,100,115,112,111,116,
+115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,
+101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114,
+ 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,
+115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,
+114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,
+104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,
+111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,
+112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110,
+ 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,
+101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,
+100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109,
+ 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,
+102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,
+115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 0, 89, 70, 95,110,117,109,112,104,111,116,111,110,
+115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104, 0, 89, 70, 95,117,115,101,
+113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99,
+ 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,110,116, 0, 89, 70, 95,103,
+108,111,119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120,
+ 91, 49, 56, 93, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,
+112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109,
+ 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,
+111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,
+115,108,117, 99,101,110, 99,121, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114,
+ 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,
+116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,
+104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,
+103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,
+105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,
+105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,
+109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108,
+ 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,
+103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,
+101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114,
+ 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,
+105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,
+101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,
+116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,
+109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,
+101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115,
+ 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114,
+ 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95,
+ 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100,
+ 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,
+112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,
+114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95,
+ 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,
+111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,
+110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,
+ 89, 70, 95, 97,114, 0, 89, 70, 95, 97,103, 0, 89, 70, 95, 97, 98, 0, 89, 70, 95,100,115, 99, 97,108,101, 0, 89, 70, 95,100,
+112,119,114, 0, 89, 70, 95,100,115,109,112, 0, 89, 70, 95,112,114,101,115,101,116, 0, 89, 70, 95,100,106,105,116, 0,103,112,
+117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49,
0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52,
93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116,
- 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42, 42,109, 97,116, 0,116,111,116, 99,111,108, 0,108,
-111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101,
- 0,116,104,114,101,115,104, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49,
- 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,
-112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117,
- 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,
-116,115,118, 0, 42, 98,112, 0, 42, 98,101,122,116, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114,
- 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101,
- 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108,
- 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,
-110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,
-101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,
-116,104, 0, 42,115,116,114, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116,
- 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0,116,111,116, 98,111,
-120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,
-114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0, 42,111, 98, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0,109, 97,120,114,
- 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,
-116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0, 42,100,114,105,118,101,114, 0, 42,116,112, 97,103,101, 0,117,
-118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,
-112, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,100,102, 97, 99,101, 0, 42,109,
-118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,
-121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,111, 99, 0, 42,115,117,109,111,104, 97,110,100,108,101, 0,116,111,116,
-101,100,103,101, 0,116,111,116,102, 97, 99,101, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,
-101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0,118,
- 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0,100,101,102, 95,110,114, 0,
- 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0, 99,111, 91, 50, 93, 0,
- 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,108,101,118,101,108,
-115, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,
-115,116, 97,114,116, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 97,120,105,115,
- 0,116,111,108,101,114, 97,110, 99,101, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,115,116, 97,
-114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100,
- 97,109,112, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103,
- 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0,102, 97,108,108,111,102,102,
- 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0,111,112,101,114, 97,116,105,
-111,110, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,
-112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,
-119, 0, 42,100,101,102, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0,100,118,101, 99, 91, 51, 93, 0,109, 97,120, 0, 42, 42,111,
- 98, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,
-116,114, 91, 51, 50, 93, 0, 42,112, 97,114,100, 97,116, 97, 0, 42,112, 97,114,101,110,116, 0, 42,116,114, 97, 99,107, 0, 42,
- 97, 99,116,105,111,110, 0, 42,112,111,115,101, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,
-110,101,116,119,111,114,107, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,100,108,111, 99, 91, 51,
- 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116,
- 91, 52, 93, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,
-103, 0,105,112,111,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108,
- 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99,
+ 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109,
+ 97,116, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,
+114,101,115,104, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,114, 97,100,105,117,
+115, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116,
+ 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,
+100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0,
+ 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,
+112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0,
+ 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,
+112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,
+105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118,
+ 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 98,112, 0,115,112, 97, 99,101,109,111,100,101, 0,
+115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,
+100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,
+110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116,
+ 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,
+116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,
+120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,
+117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102,
+ 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,
+109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,
+116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101,
+ 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0, 99,117, 98,101,
+109, 97,112,115,105,122,101, 0,100,114, 97,119,102,108, 97,103, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,
+105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,
+116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,
+101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,
+115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0,
+ 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,112, 97,100, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,
+110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41,
+ 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,
+115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,
+110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108,
+ 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,
+101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112,
+ 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,114,114,111,114, 0,109,111,
+100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,
+101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,
+101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116,
+ 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,
+101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,
+105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,
+120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,
+110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,
+103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,
+109,101, 91, 51, 50, 93, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,
+111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101,
+ 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0,
+ 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101,
+ 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,112,101,114, 99,101,110,116, 0,102, 97,
+ 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114,
+ 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,
+101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,
+101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,112, 97,114,101,
+110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,
+105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,
+114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0, 42,120, 0,
+ 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,
+110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115,
+ 0,110,117,109,102, 97, 99,101,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,116,105,109,101, 0, 42, 98,118,104,116,114,
+101,101, 0, 42,100,109, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,
+101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0,110,101,101,100, 98,105,110,100, 0, 42, 98,105,110,100,119,101,105,103,
+104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,
+100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50,
+ 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,
+108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,112,115,121,115, 0,116,111,116,100,
+109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,115,121,115, 0,114,
+116, 91, 50, 93, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0, 42,117,110,100,
+111, 95,118,101,114,116,115, 0,117,110,100,111, 95,118,101,114,116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110,
+ 97,108, 0,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,
+116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,
+112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106,
+ 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,
+114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,112,110,116,115,119, 0,111,112,110,116,
+115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,
+101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105,
+ 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101,
+ 99, 91, 56, 93, 91, 51, 93, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112,
+ 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,
+121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,
+101,108,105, 98, 0, 42,112,111,115,101, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,
+102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,
+100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,
+115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,
+103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,
+108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99,
97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,
100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0, 99,116,105,109,101, 0,109, 97,115,115, 0,100, 97,109,112,
-105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,115,111,102,116,116,105,109,101, 0,
-114,100, 97,109,112,105,110,103, 0,115,105,122,101,102, 97, 99, 0,100,116, 0,100,116,120, 0, 97, 99,116, 99,111,108, 0,112,
-114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,
-115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0,100,102,114, 97,115, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,
-103, 0,103, 97,109,101,102,108, 97,103, 50, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99,
+105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,
+115,105,122,101,102, 97, 99, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,100,
+116, 0,100,116,120, 0, 97, 99,116, 99,111,108, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49,
+ 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,
+111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115,
+ 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,
+108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99,
70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,
-115, 0,104,111,111,107,115, 0, 42,112,100, 0, 42,115,111,102,116, 0, 42,108,105,102,101, 0,108, 98,117,102, 0,112,111,114,
-116, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103,
- 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,
-109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,117,114,105,110,100,
-101,120, 0, 97, 99,116,105,118,101, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,112,100,101,
-102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,102, 95,115,116,
-114,101,110,103,116,104, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,112,100,101,102, 95,115, 98,100, 97,
-109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0,116,111,116,112,111,105,110,
-116, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,110,111,100,
-101,109, 97,115,115, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,
-121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116,
- 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,
-117,112, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,
-108, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,
+115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,112,100, 0, 42,115,111,102,116,
+ 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,
+116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0,
+ 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,
+105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116,
+ 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0, 99,
+117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,
+100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109,
+ 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,102, 95,115,116,114,101,110,103,
+116,104, 0,102, 95,112,111,119,101,114, 0,102, 95,100,105,115,116, 0,102, 95,100, 97,109,112, 0,109, 97,120,100,105,115,116,
+ 0,109,105,110,100,105,115,116, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,102, 95,112,111,119,101,114, 95,114,
+ 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,
+102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113,
+ 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,
+120, 95,110, 97, 98,108, 97, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,
+114,116, 50, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,
+114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108,105,110, 83,116,105,102,102,
+ 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,
+101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115,
+ 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95,
+ 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,
+107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84,
+ 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108,
+ 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0, 42,112, 97,114,116,105, 99,
+108,101,115, 0,116,111,116,112,111,105,110,116, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42,
+ 98,115,112,114,105,110,103, 0,110,111,100,101,109, 97,115,115, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116,
+ 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,
+103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,
+111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103,
+ 0,105,110,102,114,105, 99,116, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,
+118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,
+110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,
+105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109,
+ 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,
+115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,
+102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,
101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,
101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,
110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,
@@ -2425,652 +1549,1371 @@ char datatoc_B_blend[]= {
110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,
108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101,
0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,
-114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,
-103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0,
- 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,
-108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,
-120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,109,105,
-115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114,
- 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,
-109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,
-102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116,
- 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,
-101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 42, 97,111,115,112,104,101,114,101,
- 0,104,101,109,105,114,101,115, 0,109, 97,120,105,116,101,114, 0,100,114, 97,119,116,121,112,101, 0,115,117, 98,115,104,111,
-111,116,112, 0,115,117, 98,115,104,111,111,116,101, 0,110,111,100,101,108,105,109, 0,109, 97,120,115,117, 98,108, 97,109,112,
- 0,112, 97,109, 97, 0,112, 97,109,105, 0,101,108,109, 97, 0,101,108,109,105, 0,109, 97,120,110,111,100,101, 0, 99,111,110,
-118,101,114,103,101,110, 99,101, 0,114, 97,100,102, 97, 99, 0,103, 97,109,109, 97, 0,115,101,108, 99,111,108, 0,115,120, 0,
-115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99,
- 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,
-114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101,
- 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,
-118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,
-100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0,109,105,120,114, 97,116,101, 0,109,
- 97,105,110, 0,112, 97,100, 91, 51, 93, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101,
- 99,100, 97,116, 97, 0, 99,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,102,114, 97,109,101,
-108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,
-108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,
-116,114,105, 98, 0,114,116, 49, 0,114,116, 50, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,
-110,115,112,114,101,115,101,116, 0,102,105,108,116,101,114,116,121,112,101, 0,109, 97,120,105,109,115,105,122,101, 0,120,115,
- 99,104, 0,121,115, 99,104, 0,120, 97,115,112, 0,121, 97,115,112, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,
-115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,
-112,101, 0, 98,117,102,102,108, 97,103, 0,113,117, 97,108,105,116,121, 0,115, 99,101,109,111,100,101, 0,114,101,110,100,101,
-114,101,114, 0,111, 99,114,101,115, 0,114,112, 97,100, 91, 50, 93, 0, 97,108,112,104, 97,109,111,100,101, 0,100,111,103, 97,
-109,109, 97, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,109,101, 95,109, 97,116,
- 95,114,101,100,117,120, 0,103, 97,117,115,115, 0,112,111,115,116,109,117,108, 0,112,111,115,116,103, 97,109,109, 97, 0,112,
-111,115,116, 97,100,100, 0,112,111,115,116,105,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,
-116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0,122,109,105,110, 0,102,111, 99,117,115, 0,122,103,
- 97,109,109, 97, 0,122,115,105,103,109, 97, 0,122, 98,108,117,114, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97,
- 99,104,101, 0, 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0,
- 89, 70, 95, 65, 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,
-108, 97,109,112,114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,
-116,104, 0, 71, 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,
-110,116, 0, 71, 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89,
- 70, 95,110,117,109,112,114,111, 99,115, 0, 89, 70, 95,114, 97,121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,
-101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,101,115, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0,
- 71, 73,114,101,102,105,110,101,109,101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,
-114, 0, 89, 70, 95,103, 97,109,109, 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,
-115, 0, 89, 70, 95, 65, 65,112,105,120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0,
- 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,102,116,121,112,101, 91, 49, 54, 48, 93,
- 0, 99,111,108, 91, 51, 93, 0,102,114, 97,109,101, 0,110, 97,109,101, 91, 54, 52, 93, 0, 99,111,114,110,101,114,116,121,112,
-101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,100,101,103,114, 0,115,116,101,112, 0,116,117,114,110, 0,101,120,116,
-114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,
-118,101,114,116,105, 99,101,115, 0, 42, 99, 97,109,101,114, 97, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,
-101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,103,114,111,117,112, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,
-116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,115,101,108,101, 99,116,109,111,100,
-101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0,101,100,105,116, 98,117,116,
-115,105,122,101, 0, 42,101,100, 0, 42,114, 97,100,105,111, 0,102,114, 97,109,105,110,103, 0, 42,116,111,111,108,115,101,116,
-116,105,110,103,115, 0, 97,117,100,105,111, 0,109, 97,114,107,101,114,115, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,
-115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,100,105,114,116,121, 0,122,111,111,109, 0, 98,108,101,110,100,
- 0,120,105,109, 0,121,105,109, 0, 42,114,101, 99,116, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99,
- 97,108,101, 0, 42, 97,114,101, 97, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,118,105,101,119,109, 97,
-116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93,
- 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,119,105,110,109, 97,116, 49, 91, 52, 93, 91, 52, 93, 0,
-118,105,101,119,109, 97,116, 49, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,112,101,114,115,112,
- 0,118,105,101,119, 0, 42, 98,103,112,105, 99, 0, 42,108,111, 99, 97,108,118,100, 0,108,111, 99, 97,108,118,105,101,119, 0,
-108, 97,121, 97, 99,116, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0, 99, 97,109,122,111,111,109, 0,
-103,114,105,100, 0,103,114,105,100,118,105,101,119, 0,112,105,120,115,105,122,101, 0,110,101, 97,114, 0,102, 97,114, 0,103,
-114,105,100,108,105,110,101,115, 0,118,105,101,119, 98,117,116, 0,103,114,105,100,102,108, 97,103, 0,109,111,100,101,115,101,
-108,101, 99,116, 0,109,101,110,117,110,114, 0,116,101,120,110,114, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,
-116,119,102,108, 97,103, 0,116,119,100,114, 97,119,102,108, 97,103, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,108,
-105,112, 91, 52, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,
-120,114, 97,121, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93,
- 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,107,101,101,112,116,111,116, 0,
-107,101,101,112, 97,115,112,101, 99,116, 0,107,101,101,112,122,111,111,109, 0,111,108,100,119,105,110,120, 0,111,108,100,119,
-105,110,121, 0,114,111,119, 98,117,116, 0,118, 50,100, 0, 42,101,100,105,116,105,112,111, 0,105,112,111,107,101,121, 0, 97,
- 99,116,110, 97,109,101, 91, 51, 50, 93, 0, 99,111,110,115,116,110, 97,109,101, 91, 51, 50, 93, 0,116,111,116,105,112,111, 0,
-112,105,110, 0, 98,117,116,111,102,115, 0, 99,104, 97,110,110,101,108, 0,108,111, 99,107, 0,109,101,100,105, 97,110, 91, 51,
- 93, 0, 99,117,114,115,101,110,115, 0, 99,117,114, 97, 99,116, 0, 97,108,105,103,110, 0,116, 97, 98,111, 0,109, 97,105,110,
- 98, 0,109, 97,105,110, 98,111, 0, 42,108,111, 99,107,112,111,105,110, 0,116,101,120,102,114,111,109, 0,115,104,111,119,103,
-114,111,117,112, 0,114,101, 99,116,120, 0,114,101, 99,116,121, 0, 99,117,114,121, 0,109,111,100,101,108,116,121,112,101, 0,
-115, 99,114,105,112,116, 98,108,111, 99,107, 0,114,101, 95, 97,108,105,103,110, 0,111,108,100,107,101,121,112,114,101,115,115,
- 0,116, 97, 98, 91, 55, 93, 0, 42,102,105,108,101,108,105,115,116, 0,116,111,116,102,105,108,101, 0,116,105,116,108,101, 91,
- 50, 52, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,111,102,115, 0,115,111,114,116, 0,109,
- 97,120,110, 97,109,101,108,101,110, 0, 99,111,108,108,117,109,115, 0, 42,108,105, 98,102,105,108,101,100, 97,116, 97, 0,114,
-101,116,118, 97,108, 0,109,101,110,117, 0, 97, 99,116, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 42,
-109,101,110,117,112, 0,111,111,112,115, 0,118,105,115,105,102,108, 97,103, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,
-111,114,101, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0,100,101,112,115, 95,102,108,
- 97,103,115, 0, 42,105,109, 97,103,101, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0, 42,116,101,120,116, 0,116,
-111,112, 0,118,105,101,119,108,105,110,101,115, 0,102,111,110,116, 95,105,100, 0,108,104,101,105,103,104,116, 0,108,101,102,
-116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0, 99,117,114,114,116, 97, 98, 95,
-115,101,116, 0,115,104,111,119,115,121,110,116, 97,120, 0,117,110,117,115,101,100, 95,112, 97,100,100, 0,112,105,120, 95,112,
-101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0, 42,115, 99,114,105,112,116,
- 0,114,101,100,114, 97,119,115, 0,116,105,116,108,101, 91, 50, 56, 93, 0,102, 97,115,101, 0,115,117, 98,102, 97,115,101, 0,
-109,111,117,115,101, 95,109,111,118,101, 95,114,101,100,114, 97,119, 0,105,109, 97,102, 97,115,101, 0,109,120, 0,109,121, 0,
-100,105,114,115,108,105, 0,100,105,114,115,108,105, 95,108,105,110,101,115, 0,100,105,114,115,108,105, 95,115,120, 0,100,105,
-114,115,108,105, 95,101,121, 0,100,105,114,115,108,105, 95,101,120, 0,100,105,114,115,108,105, 95,104, 0,105,109, 97,115,108,
-105, 0,102,105,108,101,115,101,108,109,101,110,117,105,116,101,109, 0,105,109, 97,115,108,105, 95,115,120, 0,105,109, 97,115,
-108,105, 95,101,121, 0,105,109, 97,115,108,105, 95,101,120, 0,105,109, 97,115,108,105, 95,104, 0,100,115,115,120, 0,100,115,
-115,121, 0,100,115,101,120, 0,100,115,101,121, 0,100,101,115,120, 0,100,101,115,121, 0,100,101,101,120, 0,100,101,101,121,
- 0,102,115,115,120, 0,102,115,115,121, 0,102,115,101,120, 0,102,115,101,121, 0,100,115,100,104, 0,102,115,100,104, 0,102,
-101,115,120, 0,102,101,115,121, 0,102,101,101,120, 0,102,101,101,121, 0,105,110,102,115,120, 0,105,110,102,115,121, 0,105,
-110,102,101,120, 0,105,110,102,101,121, 0,100,110,115,120, 0,100,110,115,121, 0,100,110,119, 0,100,110,104, 0,102,110,115,
-120, 0,102,110,115,121, 0,102,110,119, 0,102,110,104, 0,102,111,108,101, 91, 49, 50, 56, 93, 0,100,111,114, 91, 49, 50, 56,
- 93, 0,102,105,108,101, 91, 49, 50, 56, 93, 0,100,105,114, 91, 49, 50, 56, 93, 0, 42,102,105,114,115,116,100,105,114, 0, 42,
-102,105,114,115,116,102,105,108,101, 0,116,111,112,100,105,114, 0,116,111,116, 97,108,100,105,114,115, 0,104,105,108,105,116,
-101, 0,116,111,112,102,105,108,101, 0,116,111,116, 97,108,102,105,108,101,115, 0,105,109, 97,103,101, 95,115,108,105,100,101,
-114, 0,115,108,105,100,101,114, 95,104,101,105,103,104,116, 0,115,108,105,100,101,114, 95,115,112, 97, 99,101, 0,116,111,112,
-105,109, 97, 0,116,111,116, 97,108,105,109, 97, 0, 99,117,114,105,109, 97,120, 0, 99,117,114,105,109, 97,121, 0, 42,102,105,
-114,115,116, 95,115,101,108, 95,105,109, 97, 0, 42,104,105,108,105,116,101, 95,105,109, 97, 0,116,111,116, 97,108, 95,115,101,
-108,101, 99,116,101,100, 0,105,109, 97, 95,114,101,100,114, 97,119, 0, 42, 99,109, 97,112, 0, 42, 97,114,103, 49, 0,111,117,
-116,108,105,110,101, 91, 52, 93, 0,110,101,117,116,114, 97,108, 91, 52, 93, 0, 97, 99,116,105,111,110, 91, 52, 93, 0,115,101,
-116,116,105,110,103, 91, 52, 93, 0,115,101,116,116,105,110,103, 49, 91, 52, 93, 0,115,101,116,116,105,110,103, 50, 91, 52, 93,
- 0,110,117,109, 91, 52, 93, 0,116,101,120,116,102,105,101,108,100, 91, 52, 93, 0,116,101,120,116,102,105,101,108,100, 95,104,
-105, 91, 52, 93, 0,112,111,112,117,112, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93,
- 0,109,101,110,117, 95, 98, 97, 99,107, 91, 52, 93, 0,109,101,110,117, 95,105,116,101,109, 91, 52, 93, 0,109,101,110,117, 95,
-104,105,108,105,116,101, 91, 52, 93, 0,109,101,110,117, 95,116,101,120,116, 91, 52, 93, 0,109,101,110,117, 95,116,101,120,116,
- 95,104,105, 91, 52, 93, 0, 98,117,116, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0, 98, 97, 99,107,
- 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93,
- 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,
-101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93,
- 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,
-101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,
-101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,102, 97, 99,
-101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,
-110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,
-101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0,118,101,
-114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,
-121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,
-115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,
-116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,
-116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,
-115, 0,116,116,105,109,101, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101,
- 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,
-114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,
-105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,
-114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,121,102,101,120,112,111,114,116,100,105,114,
- 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 0,118,114,109,108,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103,
-115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,
-101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0, 99,111,110,115,111,108,101, 95, 98,117,102,102,
-101,114, 0, 99,111,110,115,111,108,101, 95,111,117,116, 0,109,105,120, 98,117,102,115,105,122,101, 0,102,111,110,116,115,105,
-122,101, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,
-111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,102,111,110,116,110, 97,109,101, 91, 50, 53, 54,
- 93, 0,116,104,101,109,101,115, 0,117,110,100,111,115,116,101,112,115, 0, 99,117,114,115,115,105,122,101, 0,116, 98, 95,108,
-101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,
-116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101,
- 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,
-116,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,
-101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,115, 99,101,110,101, 0,101,110,100,120, 0,101,110,100,121, 0,115,105,122,101,
-120, 0,115,105,122,101,121, 0,115, 99,101,110,101,110,114, 0,115, 99,114,101,101,110,110,114, 0,102,117,108,108, 0,109, 97,
-105,110,119,105,110, 0,119,105,110, 97,107,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101,
- 99, 0, 42,118, 49, 0, 42,118, 50, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91,
- 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0, 99,111,110,116,114,111,108, 0,111,108,100, 95,111,102,115,120, 0,111,
-108,100, 95,111,102,115,121, 0,115,111,114,116, 99,111,117,110,116,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42,118,
- 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,104,101, 97,100,114, 99,116,
- 0,119,105,110,114, 99,116, 0,104,101, 97,100,119,105,110, 0,119,105,110, 0,104,101, 97,100,101,114,116,121,112,101, 0, 98,
-117,116,115,112, 97, 99,101,116,121,112,101, 0,119,105,110,120, 0,119,105,110,121, 0,104,101, 97,100, 95,115,119, 97,112, 0,
-104,101, 97,100, 95,101,113,117, 97,108, 0,119,105,110, 95,115,119, 97,112, 0,119,105,110, 95,101,113,117, 97,108, 0,104,101,
- 97,100, 98,117,116,108,101,110, 0,104,101, 97,100, 98,117,116,111,102,115, 0, 99,117,114,115,111,114, 0,115,112, 97, 99,101,
-100, 97,116, 97, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42, 99,117,114,115, 99,114,101,101,110, 0,
- 42, 99,117,114,115, 99,101,110,101, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,102,105,108,101,102,108, 97,103,115, 0,
-103,108,111, 98, 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,
-110,114, 0,100,111,110,101, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42,110,101,119,115,
-101,113, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,
-100,115,116,105,108,108, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112,
- 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 42,115,116,114,105,112, 0, 42, 99,117,114,101,108,101,109, 0,102, 97,
- 99,102, 48, 0,102, 97, 99,102, 49, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98,
- 97,115,101, 0, 42,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0, 99,117,114,112,111,115, 0,115,116,114,111,
- 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113,
- 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0,101,100,103,101, 87,105,100,116,104, 0, 97,
-110,103,108,101, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,
-109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112,
- 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,101,110,100, 0,116,111,116,112, 97,114,116,
- 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,
-110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,100,101,102,118,101, 99, 91,
- 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91,
- 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,
-116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50, 0,102,108, 97,103, 50,110,101,
-103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,
-111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,
- 42,105,100, 0,117,115,101,100,101,108,101,109, 0,100,120, 0,100,121, 0,108,105,110,107, 0,111,116,121,112,101, 0,100, 97,
-116, 97, 0,111,108,100, 0, 42,112,111,105,110, 0, 42,111,108,100,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,
-108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,
-116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51,
- 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93,
- 0,100, 97,109,112,116,105,109,101,114, 0,100,101,108, 97,121, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,
-116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,
-117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,
-111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,105,110,118,101,114,116, 0,102,114,101,113, 50, 0, 97,120,105,
-115,102, 0, 98,117,116,116,111,110, 0, 98,117,116,116,111,110,102, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,
-115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,
-108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108, 0,118, 97,108,111, 0,116,105,109,101, 0, 42, 97, 99,
-116, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,
-115,116,114,105,100,101, 97,120,105,115, 0,114,101,115,101,114,118,101,100, 51, 0,115,110,100,110,114, 0,109, 97,107,101, 99,
-111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 91, 49, 93, 0,116,114, 97, 99,107, 0,118,111,108,117,109,101,
- 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,102,111,
-114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111,
- 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,100,100,101,100,
-108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,111,116,104,101,114,112, 97,100, 91, 52, 93, 0,
- 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,102, 97, 99, 0,118,105,115,105,102, 97, 99, 0,115,108,
-111,119, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93,
- 0,109, 97,120,114,111,116, 91, 51, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95,
- 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,
-103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,
-121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54,
- 52, 93, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,
-114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,114,111,116,100, 97,109,112, 0,116,105,
-108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0, 42,115, 97,109,112,108,101, 0, 42,115,116,114,101, 97,109,
- 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 42,115,110,100, 95,115,111,117,110,100, 0,112, 97,110,110,105,
-110,103, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,112,105,116, 99,104, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,
-120, 95,103, 97,105,110, 0,100,105,115,116, 97,110, 99,101, 0,115,116,114,101, 97,109,108,101,110, 0,108,111,111,112,115,116,
- 97,114,116, 0,108,111,111,112,101,110,100, 0, 99,104, 97,110,110,101,108,115, 0,104,105,103,104,112,114,105,111, 0,112, 97,
-100, 91, 49, 48, 93, 0,103, 97,105,110, 0,100,111,112,112,108,101,114,102, 97, 99,116,111,114, 0,100,111,112,112,108,101,114,
-118,101,108,111, 99,105,116,121, 0,110,117,109,115,111,117,110,100,115, 98,108,101,110,100,101,114, 0,110,117,109,115,111,117,
-110,100,115,103, 97,109,101,101,110,103,105,110,101, 0, 42,103,107,101,121, 0,112, 97,100,102, 0,111,107,101,121, 0,103,111,
- 98,106,101, 99,116, 0,103,107,101,121, 0, 42, 97, 99,116,105,118,101, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,
-108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93,
- 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116,
- 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50,
- 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 99,108, 97,115,115, 0, 98,111,110,
-101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,
-101, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,
-105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91,
- 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,
-111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120,
- 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0, 99,104, 97,110, 98,
- 97,115,101, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97, 99,116,110,114, 0,116,105,109,101,115,
-108,105,100,101, 0,110, 97,109,101, 91, 51, 48, 93, 0,101,110,102,111,114, 99,101, 0, 42,116, 97,114, 0,105,116,101,114, 97,
-116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,111,114,105,
-101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,109,105,110,109, 97,120,102,108,
- 97,103, 0,115,116,105, 99,107,121, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99, 97,108, 0,108,
-111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,111,102,102,115,101,116, 91, 51, 93, 0,122,109, 97,
-120, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,
-115,116,114,105,100,101, 95, 97,120,105,115, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0,115,116,114,105,
-100,101,108,101,110, 0,114,101,112,101, 97,116, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,
-110,101,108, 91, 51, 50, 93, 0, 84, 89, 80, 69,219, 0, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116,
- 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117,
- 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99,
- 50,105, 0,118,101, 99, 50,102, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100,
- 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 0,
- 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,
-121, 0, 83, 99,114,105,112,116, 76,105,110,107, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 0, 80, 97, 99,107,101,
-100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 0, 97,110,105,109, 0, 73,109, 66,117,102, 0, 77, 84,
-101,120, 0, 79, 98,106,101, 99,116, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,
-111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 76, 97,109,112, 0, 87, 97,118,101, 0, 77, 97,116,101,114,105,
- 97,108, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,
-100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 66,101,122, 84,114,105,112,108,101, 0, 66, 80,111,105,110,116, 0, 78,
-117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0,
- 73,112,111, 68,114,105,118,101,114, 0, 73,112,111, 67,117,114,118,101, 0, 84, 70, 97, 99,101, 0, 77,101,115,104, 0, 77, 70,
- 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108,
- 0, 77, 83,116,105, 99,107,121, 0, 79, 99, 73,110,102,111, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77,111,
-100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76,
- 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114,
- 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,
-105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87,
+114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110,
+ 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112,
+ 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,
+114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101,
+ 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101,
+ 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,
+111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,
+112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,
+116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,
+116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,
+103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98,
+ 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102,
+ 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99,
+ 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,
+115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,
+103,105,110,101, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,
+105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,
+122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,
+111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120,
+ 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,
+115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111,
+ 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99,
+ 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101,
+ 99,116,105,111,110, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,
+101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101,
+ 0, 42, 97,111,116, 97, 98,108,101,115, 0,104,101,109,105,114,101,115, 0,109, 97,120,105,116,101,114, 0,100,114, 97,119,116,
+121,112,101, 0,115,117, 98,115,104,111,111,116,112, 0,115,117, 98,115,104,111,111,116,101, 0,110,111,100,101,108,105,109, 0,
+109, 97,120,115,117, 98,108, 97,109,112, 0,112, 97,109, 97, 0,112, 97,109,105, 0,101,108,109, 97, 0,101,108,109,105, 0,109,
+ 97,120,110,111,100,101, 0, 99,111,110,118,101,114,103,101,110, 99,101, 0,114, 97,100,102, 97, 99, 0,103, 97,109,109, 97, 0,
+115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0,
+ 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,
+108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119,
+ 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101,
+ 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,
+114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93,
+ 0, 99,111,100,101, 99, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101,
+ 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114,
+ 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,
+117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,
+109, 97,105,110, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,
+100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,
+115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116,
+ 97, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0, 97,117,100,105,111, 0, 99,102,114, 97, 0,112,115,102,114, 97, 0,112,
+101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,
+109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,
+102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0,
+ 97,116,116,114,105, 98, 0,114,116, 49, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,
+112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,
+115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117,
+ 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,114,112, 97,100, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50,
+ 0,115, 99,101,109,111,100,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,
+101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,
+100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,120, 97,115,112, 0,
+121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0,112,111,115,116,109,117,108, 0,
+112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114,
+ 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0,
+ 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,
+115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,
+115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,
+105,116,121, 0, 71, 73, 99, 97, 99,104,101, 0, 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71,
+ 73,100,105,114,101, 99,116, 0, 89, 70, 95, 65, 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,
+117,109,112, 0, 89, 70, 95, 99,108, 97,109,112,114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71,
+ 73, 99, 97,117,115,100,101,112,116,104, 0, 71, 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,
+104,111,116,111,110, 99,111,117,110,116, 0, 71, 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,
+114, 97,100,105,117,115, 0, 89, 70, 95,114, 97,121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89,
+ 70, 95, 65, 65,115, 97,109,112,108,101,115, 0,121,102,112, 97,100, 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,
+116,121, 0, 71, 73,114,101,102,105,110,101,109,101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,
+111,119,101,114, 0, 89, 70, 95,103, 97,109,109, 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121,
+ 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,105,120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,
+108,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,
+116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103,
+ 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,105,109,112,108,105,102,121, 95,115,
+117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,
+109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0,
+ 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,
+109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,
+111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,112, 97,100, 57, 0,100,
+111,109,101,115,105,122,101, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,112, 97,114,
+116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,
+109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0, 99,111,108, 91, 51, 93, 0,102,114, 97,109,101, 0,110,
+ 97,109,101, 91, 54, 52, 93, 0, 42, 98,114,117,115,104, 0,116,111,111,108, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,
+111,114,109, 97,108, 95, 97,110,103,108,101, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,115,116,101,112, 0,105,110,
+118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,
+101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,100,114, 97,119, 95,116,105,109,101,
+100, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 42,115,101,115,115,105,111,110, 0,112,105,
+118,111,116, 91, 51, 93, 0,116,101,120,115,101,112, 0,116, 97, 98,108,101,116, 95,115,105,122,101, 0,116, 97, 98,108,101,116,
+ 95,115,116,114,101,110,103,116,104, 0,112, 97,100, 91, 53, 93, 0,109,117,108, 0, 42,118,112, 97,105,110,116, 95,112,114,101,
+118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0, 42,
+115, 99,117,108,112,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,
+105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,
+111,117, 98,108,105,109,105,116, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115,
+ 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95,
+ 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,
+112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103,
+ 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93,
+ 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,
+108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,
+115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,
+112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,
+105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,
+118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,
+114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100,
+ 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,
+101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,
+116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,
+115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,
+103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104,
+ 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,
+119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,
+114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117,
+ 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0,
+115,107,103,101,110, 95,112, 97,100, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,
+107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,
+115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,
+101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,
+111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,
+117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,112, 97,100, 51, 91, 50, 93, 0,116,
+111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101,
+ 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0, 42, 99, 97,109,101,114, 97, 0, 42,119,111,
+114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,
+114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120,
+ 91, 51, 93, 0,101,100,105,116, 98,117,116,115,105,122,101, 0,115,101,108,101, 99,116,109,111,100,101, 0,112,114,111,112,111,
+114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111,109,101,114,103,101, 0,112, 97,100, 53,
+ 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 42,101,100, 0, 42,114, 97,100,105,111, 0,102,114, 97,109,105,110,103,
+ 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0,116,114, 97,110,115,102,111,114,109, 95,
+115,112, 97, 99,101,115, 0,106,117,109,112,102,114, 97,109,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,
+102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,
+108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,102,114, 97,109,101, 95,115,116,101,112, 0, 97, 99,116,105,118,101, 95,107,
+101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,122,111,111,109, 0, 98,108,101,110,100, 0,120,
+105,109, 0,121,105,109, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52,
+ 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,
+114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,
+109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,
+100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116,
+ 0,108, 97,115,116,109,111,100,101, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0,118,
+105,101,119, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,103,112,100, 0, 42,108,111, 99,
+ 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,
+104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91,
+ 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,
+116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,
+108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,
+110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,108, 97,121, 97, 99,116, 0,108,111, 99, 97,108,118,105,101,119, 0,115,
+ 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,102,108, 97,103, 50, 0,112,105,118,111,116, 95,108, 97,115,116,
+ 0,103,114,105,100, 0,103,114,105,100,118,105,101,119, 0,112, 97,100,102, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,
+100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,
+101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,
+108, 97,103, 0,116,119,100,114, 97,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,
+102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,
+102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,
+104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109,
+ 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,
+107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121,
+ 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,115, 99,114,101,
+101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112,
+ 0,112,105,110, 0,108,111, 99,107, 0, 99,117,114,115,101,110,115, 0, 99,117,114, 97, 99,116, 0,116, 97, 98,111, 0,109, 97,
+105,110, 98, 0,109, 97,105,110, 98,111, 0, 42,108,111, 99,107,112,111,105,110, 0,116,101,120,110,114, 0,116,101,120,102,114,
+111,109, 0,115,104,111,119,103,114,111,117,112, 0,109,111,100,101,108,116,121,112,101, 0,115, 99,114,105,112,116, 98,108,111,
+ 99,107, 0,114,101, 95, 97,108,105,103,110, 0,111,108,100,107,101,121,112,114,101,115,115, 0,116, 97, 98, 91, 56, 93, 0, 99,
+104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,111,
+112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,116,114,101,101, 0,
+ 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,
+114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,
+118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,
+108,101, 0,105,109,116,121,112,101,110,114, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,
+114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,
+108,105,110,101,115, 0,108,104,101,105,103,104,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116,
+ 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,112,105,
+120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,
+119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108,
+ 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,
+112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,
+121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,
+101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,
+117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,
+111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,105,116,
+108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,109,101,110,117, 0,115,111,
+114,116, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,
+115,121, 0,115,101,108,115,116, 97,116,101, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,
+116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,
+114,101, 97, 0,114,101,116,118, 97,108, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0,112,114,118, 95,119,
+ 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,
+117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40,
+ 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,
+109,103, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,
+100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,
+111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,
+119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,
+103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,
+110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,
+101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,
+116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, 0,
+111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93,
+ 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,
+100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0,119, 99,111,108, 95,114,101,103,117,
+108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,116,101,
+120,116, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,
+115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119,
+ 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,105, 99,111,
+110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,
+104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,
+104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93,
+ 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,
+110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116,
+ 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,
+105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,
+116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,
+104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101,
+ 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,
+109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97,
+ 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,
+118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,
+108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91,
+ 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,
+115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,
+ 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112,
+ 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,100,115,
+ 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0,118,101,114,
+116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,
+110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,
+121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109,
+ 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91,
+ 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91,
+ 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,
+116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104,
+ 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 51, 93, 0,115,111,108,105,100, 91,
+ 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,
+102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,
+115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116, 97,114,109, 91,
+ 50, 48, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,
+112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114,
+ 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49,
+ 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54,
+ 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48,
+ 93, 0,118,101,114,115,105,111,110,115, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,
+114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,
+101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,
+114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,
+115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,117,
+110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,
+100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,
+103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,
+116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108,
+ 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,
+111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,
+119,109,112, 97,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,
+101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101,
+ 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,
+114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,
+108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,
+105,122,101, 0,105,112,111, 95,110,101,119, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,
+115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 97,117,116,111,107,101,121, 95,
+102,108, 97,103, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,
+115,101, 0, 97,114,101, 97, 98, 97,115,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,
+111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,
+119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,
+110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,
+108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112,
+ 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,
+101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,
+108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,
+111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0, 42,
+118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,
+116,121,112,101, 0, 99,117,114,115,111,114, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97,
+ 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100,
+ 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,117,105, 98,108,111, 99,107,115, 0,112,
+ 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,
+118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,
+111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0,100,105,115,112,108, 97,121,109,111,100,101, 0, 42, 99,117,
+114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98,
+ 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,
+101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,
+115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,
+115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,
+105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0,
+ 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0,
+ 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,
+108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116,
+ 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,
+101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101,
+ 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,
+110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,104, 97,110,100,115,105,122,101, 0, 97,110,
+105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0,102, 97, 99,102, 48, 0,102, 97, 99,102, 49, 0, 42,115,
+101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,
+104,100, 97,117,100,105,111, 0,108,101,118,101,108, 0,112, 97,110, 0, 99,117,114,112,111,115, 0,115,116,114,111, 98,101, 0,
+ 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,
+110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0,115,
+ 99,101,110,101,110,114, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,
+101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,
+105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,101,100,103,101, 87,105,
+100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,
+112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0,
+ 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99,
+ 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,
+110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0, 42,102,114, 97,109,101, 77, 97,
+112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,
+116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99,
+ 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,
+111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51,
+ 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52,
+ 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116,
+ 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,
+114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101,
+ 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,
+109, 0,111,116,121,112,101, 0,111,108,100, 0, 42,112,111,105,110, 0, 42,111,108,100,112,111,105,110, 0,114,101,115,101,116,
+100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,
+116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,
+108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,
+105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,
+114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103,
+ 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50,
+ 93, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,106,111,
+121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,
+104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,
+101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,
+111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0,
+ 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,
+101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 49, 91, 50, 93,
+ 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 50, 91, 49, 93, 0,116,114, 97, 99,107,
+ 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91,
+ 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,
+108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,
+121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 98,117,116,115,116, 97, 0, 98,
+117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,112, 0,109,105,
+110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,
+111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,
+110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,
+108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,
+101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,
+105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0,103,111, 0, 97,
+ 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,
+100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,
+112, 0, 42,115, 97,109,112,108,101, 0, 42,115,116,114,101, 97,109, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101,
+ 0, 42,115,110,100, 95,115,111,117,110,100, 0,112, 97,110,110,105,110,103, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,
+112,105,116, 99,104, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,100,105,115,116, 97,110, 99,101,
+ 0,115,116,114,101, 97,109,108,101,110, 0, 99,104, 97,110,110,101,108,115, 0,104,105,103,104,112,114,105,111, 0,112, 97,100,
+ 91, 49, 48, 93, 0,103, 97,105,110, 0,100,111,112,112,108,101,114,102, 97, 99,116,111,114, 0,100,111,112,112,108,101,114,118,
+101,108,111, 99,105,116,121, 0,110,117,109,115,111,117,110,100,115, 98,108,101,110,100,101,114, 0,110,117,109,115,111,117,110,
+100,115,103, 97,109,101,101,110,103,105,110,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,
+101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,
+104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,
+114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52,
+ 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114,
+ 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98,
+ 97,115,101, 0, 42,101,100, 98,111, 0,112, 97,116,104,102,108, 97,103, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,
+101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112,
+ 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112,
+ 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,114,111,112, 0, 99,111,110,115,116,102,
+108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120,
+ 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,
+115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,
+101,117,108, 91, 51, 93, 0,114,111,116,109,111,100,101, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,
+115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116,
+ 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,
+116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0, 42, 99,117,115,116,111,109, 0, 99,104,
+ 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116,
+ 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,
+105,118,101, 95,103,114,111,117,112, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,
+111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0,102,105,108,116,101,
+114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,110,114, 0, 97, 99,116,119,105,100,116,104, 0,116,105,109,101,115,108,105,
+100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116,
+ 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0, 42,116, 97,114, 0,115,117,
+ 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,116,
+ 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,
+101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116,
+ 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116,
+ 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,
+100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,
+107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,
+114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120,
+ 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54,
+ 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109,
+ 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91,
+ 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,120,
+ 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,
+115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,
+110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,
+111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91,
+ 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,
+115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116,
+ 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116,
+ 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,
+111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,117,115,101,114,110, 97,109,101, 91, 51,
+ 50, 93, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,
+100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,
+111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,
+111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,
+101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0,
+ 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,
+122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0, 42,
+115,101,108,105,110, 0, 42,115,101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40, 41, 0, 40, 42,
+115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116,
+ 98,104, 0, 42,116, 99,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,
+115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,
+101,104, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,
+110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,
+105,116,101,114, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,
+101, 0,104,117,101, 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,
+112,104, 97, 0,107,101,121, 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51,
+ 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,112,114,101,118,105,101,119, 0,103, 97,109, 99,111,
+ 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,
+100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,
+116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,
+115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91,
+ 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,
+109,117,108,116, 97, 98,108,101, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91,
+ 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,111,
+102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,105,110,110,101,114,114, 97,100,105,117,115, 0,114, 97,116,101, 0,
+114,103, 98, 91, 51, 93, 0,114,111,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0, 97, 99,116,105,118,101, 95,114,110,
+100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,
+114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,
+111,108, 0,101,100,105,116,102,108, 97,103, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93,
+ 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,
+102,102,115,101,116, 0,114, 97,110,100, 91, 51, 93, 0, 42,115,116,105, 99,107, 95,111, 98, 0,112,114,101,118, 95,115,116, 97,
+116,101, 0, 42,104, 97,105,114, 0,105, 95,114,111,116, 91, 52, 93, 0,114, 95,114,111,116, 91, 52, 93, 0,114, 95, 97,118,101,
+ 91, 51, 93, 0,114, 95,118,101, 91, 51, 93, 0,100,105,101,116,105,109,101, 0, 98, 97,110,107, 0,115,105,122,101,109,117,108,
+ 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 98,112,105, 0, 97,108,105,118,101, 0,108,111,111,112, 0,100,105,115,116,
+114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114,
+ 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,100,
+114, 97,119, 95,115,116,101,112, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115,
+ 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,
+114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0,110, 98,101,116,119,101,101,110, 0, 98,111,105,100,110,101,105,103,
+104, 98,111,117,114,115, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,
+110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114,
+ 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,102,
+108, 97,103, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,
+116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,
+118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,107,101,121,101,100, 95,
+116,105,109,101, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116,
+ 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0, 97,118,101,102, 97, 99, 0,112,
+104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,
+114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102,
+ 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0, 97, 98,115,108,101,110,103,116,104, 0,114, 97,
+110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114,
+ 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101,
+ 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,104,105,108,100,115,112,114,101, 97,100, 0,
+ 99,108,117,109,112,102, 97, 99, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,
+115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,
+104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 98,
+114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,109, 97,120, 95,108, 97,116,
+ 95, 97, 99, 99, 0,109, 97,120, 95,116, 97,110, 95, 97, 99, 99, 0, 97,118,101,114, 97,103,101, 95,118,101,108, 0, 98, 97,110,
+107,105,110,103, 0,109, 97,120, 95, 98, 97,110,107, 0,103,114,111,117,110,100,122, 0, 98,111,105,100,102, 97, 99, 91, 56, 93,
+ 0, 98,111,105,100,114,117,108,101, 91, 56, 93, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0,
+ 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,
+100,105,116, 41, 40, 41, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,
+112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42,116, 97,
+114,103,101,116, 95,111, 98, 0, 42,107,101,121,101,100, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,101,102,102,101, 99,
+116,111,114,115, 0,114,101, 97, 99,116,101,118,101,110,116,115, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,
+104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,107,101,
+121,101,100, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,
+118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,
+116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42, 99, 97, 99,104,101, 0, 67,100,105,115, 0, 67,118,105, 0, 91,
+ 51, 93, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109,
+ 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,
+101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102,
+ 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,115,116,101,112,115, 80,101,
+114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,
+101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,
+118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,112,114,101,115,101,116,115, 0, 42, 99,111,108,108,105,115,105,111,110,
+ 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,
+101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,
+110,116, 0,112,114,101,115,115,117,114,101, 0, 42,112,111,105,110,116,115, 0,116,111,116,112,111,105,110,116,115, 0,116,104,
+105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,
+109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,
+115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,119,105,110,100,114, 97,119, 97,
+ 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,
+101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,
+112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,107,101,121,109, 97,112,115, 0,
+ 42,103,104,111,115,116,119,105,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,
+115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,
+114, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114,
+ 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,116,105,109,101,
+114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93,
+ 0, 42,112,116,114, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,
+100,105,102,105,101,114, 0,107,101,121,109, 97,112, 0,110, 97,109,101,105,100, 91, 54, 52, 93, 0,115,112, 97, 99,101,105,100,
+ 0,114,101,103,105,111,110,105,100, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,114,101,112,111,114,116,115, 0, 42,
+101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0,
+ 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,
+101,114, 0,102,117,110, 99, 95,116,121,112,101, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0,
+ 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,
+121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0, 42,114,
+110, 97, 95,112, 97,116,104, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0,
+ 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111,
+ 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0, 97, 99,
+116, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,115,116,114,105,112,115, 0,105,110,102,111, 91, 54, 52, 93,
+ 0,103,114,111,117,112, 91, 54, 52, 93, 0,105,100,116,121,112,101, 0,116,101,109,112,108, 97,116,101,115, 0,103,114,111,117,
+112,109,111,100,101, 0,112, 97,116,104,115, 0,107,101,121,105,110,103,102,108, 97,103, 0,110,108, 97, 95,116,114, 97, 99,107,
+115, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 84, 89, 80, 69, 0, 0, 1,154, 99,104, 97,114,
+ 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,
+110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,
+116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,105, 0,118,101, 99, 50,102, 0,118,101,
+ 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,
+102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97,
+ 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0,
+ 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,
+111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,
+108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 83, 99,114,105,112,116, 76,105,110,107, 0, 84,101,120,
+116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101,
+ 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80,
+ 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0,
+ 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,
+110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103,
+ 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 77, 97,116,101,114,105, 97,108,
+ 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0,
+ 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0,
+ 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,
+110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116,
+ 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0,
+ 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,
+105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,
+105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77,
+ 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,
+110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0,
+ 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,
+105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71,
+ 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82,
+ 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60,
+ 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32,
+ 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,
+101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32,
+ 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69,
+ 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,
+100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80,
+ 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,
+105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32,
+ 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86,
+ 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101,
+ 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108,
+ 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95,
+ 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,
+102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76,
+ 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70,
+ 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,
+105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65,
+ 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,
+102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86,
+ 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76,
+ 69, 83, 32, 49, 50, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32,
+ 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84,
+ 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79,
+ 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57,
+ 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79,
+ 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84,
+ 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,
+101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69,
+ 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32,
+ 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,
+110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80,
+ 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56,
+ 32, 35,101,110,100,105,102, 32,108,118,108, 59, 10, 9,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32,117,115,101, 95,
+ 99,111,108, 44, 32,102,108, 97,103, 59, 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101,118,101,108, 32, 49, 32,
+100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101,100, 32,102,114,111,
+109, 32,111,116,104,101,114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,118,100,
+ 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104,111,114,116, 32, 42,
+101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 59,
+ 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105,114,101,115, 32, 42,
+ 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,
+108,105,116,121, 32,123, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95,109, 97,112, 59, 32,
+ 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,
+120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103,101, 95,109, 97,112,
+ 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, 32,104,105,100,100,
+101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, 69,100,103,101, 32,
+ 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32,116,111,116,102, 97, 99,
+101, 44, 32,116,111,116,101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, 32, 80, 97,114,116,
+105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102,108, 97,103, 32, 40,
+ 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69,
+ 83, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, 9, 52, 10, 35,100,101,
+102,105,110,101, 32, 77, 69, 95, 72, 73, 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82,
+ 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103,
+ 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65,
+ 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49,
+ 60, 60, 50, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9,
+ 9, 9, 9, 9, 9, 47, 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42,
+ 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10,
+ 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,
+102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,
+101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,
+101,114,116,101,120,110,111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114,
+ 32, 97,115,115,117,109,101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,
+101, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,
+100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70,
+ 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,
+101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80,
+ 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10,
+ 10, 47, 42, 32,101,100, 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69,
+ 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,
+101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86,
+ 52, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108,
+ 97,103, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9,
+ 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9,
+ 9, 9, 47, 42, 32,102,108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,
+114,101, 32,116,111,111, 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,
+100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108,
+ 32, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45,
+ 62,102,108, 97,103, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,
+117,115,101, 32, 77, 70, 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41,
+ 44, 32,115,104,111,117,108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32,
+ 50, 46, 52, 52, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,
+101,112,114,101, 99, 97,116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52,
+ 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83,
+ 69, 76, 51, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,
+105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32,
+ 97,115, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101,
+ 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9,
+ 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,
+105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65,
+ 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 10,
+ 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, 10, 35,100,101,102,105,110,101,
+ 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73,
+ 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48,
+ 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42,
+ 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, 42, 47, 10, 35,100,101,102,105,
+110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77,
+ 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,
+118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,108, 97,103,115, 32,105,110, 32,
+116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,
+107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9,
+ 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65,
+ 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,
+112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, 97,108,108, 32,111,114, 32,110,
+111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,116, 32, 97,118, 97,105,108, 97,
+ 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,101, 32, 97,110,121,109,111,114,
+101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97,
+ 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65,
+ 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10,
+ 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, 10, 35,100,101,102,105,110,101,
+ 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78,
+ 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51,
+ 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,
+101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,105,102, 10, 32, 79, 67, 75, 33,
+ 99,116, 32, 77, 86,101,114,116, 59, 32,115,116,114,117, 99,116, 32, 77, 69,100,103,101, 59, 32,115,116,114,117, 99,116, 32, 77,
+ 70, 97, 99,101, 59, 32,115,116,114,117, 99,116, 32, 77, 67,111,108, 59, 32,115,116,114,117, 99,116, 32, 77, 83,116,105, 99,107,
+121, 59, 32,115,116,114,117, 99,116, 32, 77,101,115,104, 59, 32,115,116,114,117, 99,116, 32, 79, 99, 73,110,102,111, 59, 32,115,
+116,114,117, 99,116, 32, 77,117,108,116,105,114,101,115, 59, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,
+115,105, 98,105,108,105,116,121, 59, 32,115,116,114,117, 99,116, 32, 69,100,105,116, 77,101,115,104, 59, 32, 32,116,121,112,101,
+100,101,102, 32,115,116,114,117, 99,116, 32, 77,101,115,104, 32,123, 32, 32, 73, 68, 32,105,100, 59, 32, 32, 32,115,116,114,117,
+ 99,116, 32, 66,111,117,110,100, 66,111,120, 32, 42, 98, 98, 59, 32, 32, 32, 76,105,115,116, 66, 97,115,101, 32,101,102,102,101,
+ 99,116, 59, 32, 32, 32, 32,115,116,114,117, 99,116, 32, 73,112,111, 32, 42,105,112,111, 59, 32, 32,115,116,114,117, 99,116, 32,
+ 75,101,121, 32, 42,107,101,121, 59, 32, 32,115,192, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,
+101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,
+100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,
+117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,
+100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,
+121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97,
+ 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,
+102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,105,115,112,108,
+ 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,
+114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,
+104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87,
97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114,
68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,
-100,105,102,105,101,114, 68, 97,116, 97, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76,
- 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 76, 66,117,102, 0, 98, 65, 99,116,105,111,110,
- 0, 98, 80,111,115,101, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 76,105,102,101,
- 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 79, 98,
- 72,111,111,107, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,
-110,103, 0, 87,111,114,108,100, 0, 82, 97,100,105,111, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97,
- 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 82,101,
-110,100,101,114, 68, 97,116, 97, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 84,105,109,101, 77, 97,114,107,101,114, 0,
- 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 83, 99,101,110,101, 0, 71,114,111,117,112, 0, 68, 97,103, 70,111,114,101,
-115,116, 0, 66, 71,112,105, 99, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 83, 99,114, 65,114,101,
- 97, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 83,112, 97, 99,101, 73,112,111, 0, 83,112, 97, 99,
-101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 83,112, 97, 99,101, 70,105,108,101, 0,100,105,114,101,110,116,114,
-121, 0, 66,108,101,110,100, 72, 97,110,100,108,101, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,
-101, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0,
- 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97,
- 99,101, 73,109, 97, 83,101,108, 0, 73,109, 97, 68,105,114, 0, 79,110,101, 83,101,108,101, 99,116, 97, 98,108,101, 73,109, 97,
- 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 98, 84,104,101,109,101, 0, 83,111,108,105,100,
- 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 98, 83, 99,114,101,101,110, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,
-114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109,
- 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100,
- 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 69,100,105,116,105,110,103, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119,
- 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,
-116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 79,111,112,115,
- 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,
-115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114,
- 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,
-114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,
-121, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98,
- 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,
-101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114,
- 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,
-116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 68, 65, 99,116,117, 97,116,111,114, 0, 98,
- 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,
-114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,
-116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114,
- 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,
-116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117,
- 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,
-116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 98, 83, 97,109,112,108,101, 0, 98, 83,111,117,110,100,
- 76,105,115,116,101,110,101,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 75,101,121, 0, 79, 98,106,
-101, 99,116, 75,101,121, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,
-101, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 83,112,
- 97, 99,101, 65, 99,116,105,111,110, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,
-110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,
-114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,
-116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,
-110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116,
- 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,
-104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 97,110, 99,101, 76,105,109,105,116, 67,111,110,115,116,114,
- 97,105,110,116, 0, 98, 82,111,116, 97,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,
-104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 0, 84, 76, 69, 78,
- 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0,
- 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 48, 0,224, 0, 0, 0, 80, 0,104, 0,116, 0, 16, 0, 24, 0,
-100, 0, 20, 0,116, 0, 48, 1, 0, 0, 0, 0, 88, 0,244, 2,228, 0, 80, 1, 24, 0,136, 1,128, 0,252, 0, 52, 0,156, 1,
- 64, 1, 0, 0,108, 0, 96, 0,132, 0, 56, 0, 28, 0, 56, 0, 8, 0, 16, 0, 44, 1, 0, 0,140, 0, 84, 0, 60, 0,188, 0,
- 20, 0, 20, 0, 12, 0, 12, 0, 4, 0, 8, 0, 24, 0, 8, 0, 52, 0, 68, 0, 88, 0, 88, 0, 68, 0, 60, 0, 60, 0, 92, 0,
- 64, 0,180, 0, 52, 0, 64, 0,108, 0, 40, 0, 12, 0, 56, 0, 24, 0, 44, 0, 92, 0, 0, 0, 84, 1, 0, 0,208, 0, 16, 0,
- 0, 0, 0, 0, 32, 1, 40, 0, 28, 0,176, 0,144, 0, 16, 0, 16, 3, 16, 0, 80, 0, 28, 0,244, 3, 68, 0, 0, 0, 36, 0,
-180, 2, 36, 0,204, 0,120, 0, 36, 0, 40, 1,212, 0,164, 0, 84, 1, 0, 0, 0, 0,196, 0, 12, 0,184, 0,164, 0,120, 0,
- 32, 0, 0, 0,148, 0,224, 2, 0, 0, 0, 0, 72, 0,136, 0,224, 7, 56, 0,168, 7,116, 0, 20, 0, 24, 0,164, 0, 24, 0,
-104, 0,188, 0,160, 1,172, 0, 32, 1, 16, 0, 28, 0, 12, 0, 24, 0, 16, 0, 24, 0,236, 0, 0, 0, 56, 0, 12, 0, 44, 0,
- 64, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 72, 0, 44, 0, 40, 0,108, 0, 68, 0, 76, 0, 80, 0, 64, 0,128, 0, 4, 0,
- 60, 0, 12, 0, 60, 0, 20, 0, 16, 0, 64, 0, 16, 0, 76, 0,120, 0, 48, 0, 28, 0, 56, 0, 52, 0, 56, 0,108, 0,136, 0,
- 4, 0, 40, 0, 0, 0, 64, 0,160, 0, 48, 0,112, 1, 20, 0, 4, 1, 80, 0, 68, 1, 60, 0,176, 0, 44, 0, 52, 0, 76, 0,
- 44, 0, 44, 0, 44, 0, 60, 0, 56, 0, 44, 0, 20, 0, 60, 0, 24, 0, 52, 0, 88, 0, 0, 0, 83, 84, 82, 67,192, 0, 0, 0,
- 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 2, 0, 9, 0, 2, 0, 9, 0, 3, 0, 12, 0, 2, 0, 2, 0, 4, 0,
- 2, 0, 5, 0, 13, 0, 2, 0, 4, 0, 4, 0, 4, 0, 5, 0, 14, 0, 2, 0, 7, 0, 4, 0, 7, 0, 5, 0, 15, 0, 2, 0,
- 8, 0, 4, 0, 8, 0, 5, 0, 16, 0, 3, 0, 4, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 17, 0, 3, 0, 7, 0, 4, 0,
- 7, 0, 5, 0, 7, 0, 6, 0, 18, 0, 3, 0, 8, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 19, 0, 4, 0, 4, 0, 4, 0,
- 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 20, 0, 4, 0, 7, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0,
- 21, 0, 4, 0, 8, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 22, 0, 4, 0, 4, 0, 8, 0, 4, 0, 9, 0,
- 4, 0, 10, 0, 4, 0, 11, 0, 23, 0, 4, 0, 7, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 24, 0, 8, 0,
- 9, 0, 0, 0, 9, 0, 1, 0, 24, 0, 12, 0, 25, 0, 13, 0, 0, 0, 14, 0, 2, 0, 15, 0, 2, 0, 16, 0, 4, 0, 17, 0,
- 25, 0, 6, 0, 24, 0, 18, 0, 24, 0, 19, 0, 26, 0, 20, 0, 0, 0, 21, 0, 4, 0, 22, 0, 4, 0, 17, 0, 27, 0, 6, 0,
- 24, 0, 18, 0, 11, 0, 23, 0, 23, 0, 24, 0, 2, 0, 25, 0, 2, 0, 26, 0, 4, 0, 17, 0, 28, 0, 13, 0, 28, 0, 0, 0,
- 28, 0, 1, 0, 7, 0, 27, 0, 7, 0, 28, 0, 2, 0, 29, 0, 2, 0, 30, 0, 4, 0, 31, 0, 9, 0, 32, 0, 7, 0, 33, 0,
- 0, 0, 34, 0, 0, 0, 35, 0, 7, 0, 36, 0, 7, 0, 37, 0, 29, 0, 12, 0, 24, 0, 18, 0, 28, 0, 38, 0, 0, 0, 39, 0,
- 4, 0, 40, 0, 7, 0, 28, 0, 11, 0, 41, 0, 27, 0, 42, 0, 24, 0, 43, 0, 2, 0, 29, 0, 2, 0, 44, 0, 2, 0, 45, 0,
- 2, 0, 16, 0, 30, 0, 5, 0, 24, 0, 46, 0, 2, 0, 47, 0, 2, 0, 48, 0, 2, 0, 49, 0, 4, 0, 17, 0, 31, 0, 6, 0,
- 31, 0, 0, 0, 31, 0, 1, 0, 0, 0, 50, 0, 0, 0, 51, 0, 4, 0, 52, 0, 4, 0, 53, 0, 32, 0, 13, 0, 24, 0, 18, 0,
- 0, 0, 54, 0, 4, 0, 55, 0, 4, 0, 56, 0, 11, 0, 57, 0, 31, 0, 58, 0, 31, 0, 59, 0, 4, 0, 60, 0, 4, 0, 61, 0,
- 0, 0, 62, 0, 4, 0, 63, 0, 4, 0, 64, 0, 9, 0, 65, 0, 33, 0, 5, 0, 4, 0, 66, 0, 4, 0, 67, 0, 4, 0, 55, 0,
- 4, 0, 17, 0, 9, 0, 32, 0, 34, 0, 17, 0, 24, 0, 18, 0, 2, 0, 29, 0, 2, 0, 16, 0, 7, 0, 68, 0, 7, 0, 69, 0,
- 7, 0, 70, 0, 7, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 7, 0, 75, 0, 7, 0, 76, 0, 2, 0, 77, 0,
- 2, 0, 78, 0, 7, 0, 79, 0, 27, 0, 42, 0, 30, 0, 80, 0, 35, 0, 23, 0, 24, 0, 18, 0, 0, 0, 21, 0, 36, 0, 81, 0,
- 37, 0, 82, 0, 37, 0, 83, 0, 2, 0, 84, 0, 2, 0, 16, 0, 2, 0, 85, 0, 2, 0, 86, 0, 2, 0, 87, 0, 2, 0, 88, 0,
- 2, 0, 89, 0, 2, 0, 90, 0, 2, 0, 91, 0, 2, 0, 92, 0, 4, 0, 93, 0, 4, 0, 94, 0, 33, 0, 95, 0, 7, 0, 96, 0,
- 4, 0, 97, 0, 2, 0, 98, 0, 2, 0, 99, 0, 4, 0,100, 0, 38, 0, 24, 0, 2, 0,101, 0, 2, 0,102, 0, 2, 0,103, 0,
- 2, 0,104, 0, 39, 0,105, 0, 40, 0,106, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0,110, 0, 7, 0,111, 0,
- 7, 0,112, 0, 2, 0,113, 0, 2, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,118, 0, 7, 0,119, 0,
- 7, 0,120, 0, 7, 0,121, 0, 7, 0,122, 0, 7, 0,123, 0, 7, 0,124, 0, 41, 0, 14, 0, 0, 0, 21, 0, 9, 0,125, 0,
- 0, 0,126, 0, 0, 0,127, 0, 4, 0,128, 0, 4, 0,129, 0, 9, 0,130, 0, 7, 0,131, 0, 7, 0,132, 0, 7, 0,133, 0,
- 4, 0,134, 0, 9, 0,135, 0, 4, 0,136, 0, 4, 0, 17, 0, 42, 0, 6, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0,
- 7, 0,137, 0, 7, 0, 27, 0, 4, 0, 24, 0, 43, 0, 5, 0, 2, 0, 16, 0, 2, 0, 22, 0, 2, 0, 24, 0, 2, 0,138, 0,
- 42, 0,139, 0, 44, 0, 16, 0, 39, 0,105, 0, 35, 0,140, 0, 35, 0,141, 0, 7, 0,142, 0, 2, 0, 29, 0, 2, 0,143, 0,
- 7, 0, 70, 0, 7, 0, 71, 0, 4, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 2, 0, 84, 0, 2, 0, 85, 0, 2, 0,147, 0,
- 2, 0,148, 0, 4, 0, 69, 0, 40, 0, 52, 0, 24, 0, 18, 0, 7, 0,149, 0, 7, 0,150, 0, 7, 0,151, 0, 7, 0,152, 0,
- 7, 0,153, 0, 7, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 7, 0,157, 0, 7, 0,158, 0, 7, 0,159, 0, 7, 0,160, 0,
- 7, 0,161, 0, 7, 0,162, 0, 7, 0,163, 0, 7, 0,164, 0, 7, 0,165, 0, 7, 0,166, 0, 7, 0,167, 0, 7, 0,168, 0,
- 2, 0,169, 0, 2, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0, 16, 0,
- 2, 0, 29, 0, 2, 0,143, 0, 7, 0,176, 0, 7, 0,177, 0, 7, 0,178, 0, 7, 0,179, 0, 2, 0,180, 0, 2, 0,181, 0,
- 2, 0,182, 0, 2, 0, 52, 0, 7, 0,183, 0, 7, 0,184, 0, 2, 0,185, 0, 2, 0,186, 0, 2, 0,187, 0, 2, 0,188, 0,
- 7, 0,121, 0, 27, 0, 42, 0, 35, 0,140, 0, 41, 0,189, 0, 43, 0,190, 0, 44, 0,191, 0, 2, 0,192, 0, 45, 0, 50, 0,
- 24, 0, 18, 0, 2, 0, 29, 0, 2, 0,193, 0, 2, 0,114, 0, 2, 0,194, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0,
- 7, 0,118, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0,
- 2, 0,202, 0, 2, 0,203, 0, 7, 0, 70, 0, 7, 0, 71, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 2, 0,207, 0,
- 2, 0,208, 0, 2, 0,209, 0, 2, 0,210, 0, 2, 0,211, 0, 2, 0, 17, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0,
- 2, 0,215, 0, 2, 0,216, 0, 4, 0,217, 0, 4, 0,218, 0, 2, 0,219, 0, 2, 0,220, 0, 2, 0,221, 0, 2, 0,222, 0,
- 7, 0,223, 0, 7, 0,224, 0, 7, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 2, 0,228, 0, 2, 0,229, 0, 38, 0,230, 0,
- 27, 0, 42, 0, 30, 0, 80, 0, 46, 0, 2, 0, 24, 0, 18, 0, 27, 0, 42, 0, 47, 0, 95, 0, 24, 0, 18, 0, 2, 0,114, 0,
- 2, 0,231, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,232, 0, 7, 0,233, 0, 7, 0,234, 0, 7, 0,235, 0,
- 7, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 7, 0,239, 0, 7, 0,240, 0, 7, 0,241, 0, 7, 0,242, 0, 7, 0,243, 0,
- 7, 0,244, 0, 7, 0,245, 0, 7, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 7, 0,249, 0, 7, 0,250, 0, 7, 0,251, 0,
- 7, 0,252, 0, 7, 0,253, 0, 7, 0,254, 0, 7, 0,255, 0, 7, 0, 0, 1, 2, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1,
- 0, 0, 4, 1, 0, 0, 5, 1, 4, 0,193, 0, 4, 0, 6, 1, 2, 0, 7, 1, 2, 0, 8, 1, 2, 0, 9, 1, 2, 0, 10, 1,
- 7, 0, 11, 1, 7, 0, 12, 1, 7, 0, 13, 1, 7, 0, 14, 1, 7, 0, 15, 1, 7, 0, 16, 1, 7, 0, 17, 1, 0, 0, 18, 1,
- 0, 0,215, 0, 0, 0, 19, 1, 0, 0, 17, 0, 2, 0, 20, 1, 2, 0, 21, 1, 2, 0, 22, 1, 2, 0, 23, 1, 4, 0, 24, 1,
- 2, 0, 25, 1, 2, 0, 26, 1, 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 2, 0,101, 0,
- 2, 0,102, 0, 43, 0, 32, 1, 43, 0, 33, 1, 0, 0, 34, 1, 0, 0, 35, 1, 0, 0, 36, 1, 0, 0, 37, 1, 2, 0, 38, 1,
- 2, 0, 39, 1, 7, 0, 40, 1, 7, 0, 41, 1, 38, 0,230, 0, 27, 0, 42, 0, 7, 0, 42, 1, 7, 0, 43, 1, 7, 0, 44, 1,
- 7, 0, 45, 1, 7, 0, 46, 1, 2, 0, 47, 1, 2, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 7, 0, 51, 1, 7, 0, 52, 1,
- 7, 0, 53, 1, 4, 0, 54, 1, 4, 0, 55, 1, 4, 0, 56, 1, 30, 0, 80, 0, 48, 0, 6, 0, 24, 0, 18, 0, 0, 0, 57, 1,
- 7, 0, 58, 1, 7, 0, 17, 0, 49, 0, 32, 0, 33, 0, 95, 0, 50, 0, 26, 0, 50, 0, 0, 0, 50, 0, 1, 0, 51, 0, 59, 1,
- 4, 0, 60, 1, 4, 0, 61, 1, 4, 0, 62, 1, 4, 0, 63, 1, 4, 0, 64, 1, 4, 0, 65, 1, 2, 0, 29, 0, 2, 0, 16, 0,
- 2, 0, 66, 1, 2, 0, 67, 1, 7, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 68, 1, 7, 0, 69, 1, 7, 0, 70, 1,
- 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 52, 0, 7, 0, 75, 1, 7, 0, 76, 1, 52, 0, 15, 0,
- 24, 0, 18, 0, 51, 0, 59, 1, 11, 0, 77, 1, 11, 0, 78, 1, 27, 0, 42, 0, 47, 0, 79, 1, 2, 0, 16, 0, 2, 0, 80, 1,
- 4, 0,113, 0, 7, 0, 81, 1, 7, 0,112, 0, 7, 0, 82, 1, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 53, 0, 10, 0,
- 7, 0, 86, 1, 7, 0, 87, 1, 7, 0, 88, 1, 7, 0, 17, 0, 2, 0, 89, 1, 2, 0, 90, 1, 0, 0, 91, 1, 0, 0, 92, 1,
- 0, 0, 93, 1, 0, 0, 94, 1, 54, 0, 5, 0, 7, 0, 95, 1, 7, 0, 87, 1, 7, 0, 88, 1, 2, 0, 91, 1, 2, 0, 94, 1,
- 55, 0, 20, 0, 55, 0, 0, 0, 55, 0, 1, 0, 2, 0, 29, 0, 2, 0, 96, 1, 2, 0, 94, 1, 2, 0, 16, 0, 2, 0, 97, 1,
- 2, 0, 98, 1, 2, 0, 99, 1, 2, 0,100, 1, 2, 0,101, 1, 2, 0,102, 1, 2, 0,103, 1, 2, 0,104, 1, 7, 0,105, 1,
- 7, 0,106, 1, 54, 0,107, 1, 53, 0,108, 1, 4, 0,109, 1, 4, 0, 17, 0, 56, 0, 5, 0, 2, 0,110, 1, 2, 0, 96, 1,
- 0, 0, 16, 0, 0, 0, 17, 0, 2, 0, 48, 1, 57, 0, 4, 0, 7, 0, 4, 0, 7, 0, 5, 0, 7, 0, 7, 0, 7, 0,111, 1,
- 58, 0, 54, 0, 24, 0, 18, 0, 51, 0, 59, 1, 11, 0,112, 1, 11, 0, 78, 1, 39, 0,113, 1, 39, 0,114, 1, 39, 0,115, 1,
- 27, 0, 42, 0, 59, 0,116, 1, 29, 0,117, 1, 47, 0, 79, 1, 11, 0,118, 1, 7, 0, 81, 1, 7, 0,112, 0, 7, 0, 82, 1,
- 4, 0,113, 0, 2, 0,119, 1, 2, 0, 80, 1, 2, 0, 16, 0, 2, 0,120, 1, 7, 0,121, 1, 7, 0,122, 1, 7, 0,123, 1,
- 2, 0, 99, 1, 2, 0,100, 1, 2, 0, 52, 0, 2, 0, 57, 0, 2, 0, 27, 0, 2, 0,124, 1, 7, 0,125, 1, 7, 0,126, 1,
- 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1,
- 0, 0,135, 1, 0, 0,136, 1, 48, 0,137, 1, 48, 0,138, 1, 48, 0,139, 1, 48, 0,140, 1, 4, 0,141, 1, 4, 0,142, 1,
- 4, 0,143, 1, 4, 0, 17, 0, 57, 0,144, 1, 4, 0,145, 1, 4, 0,146, 1, 56, 0,147, 1, 56, 0,148, 1, 60, 0, 6, 0,
- 39, 0,149, 1, 2, 0, 25, 0, 2, 0, 30, 0, 2, 0, 29, 0, 2, 0, 16, 0, 0, 0,150, 1, 61, 0, 19, 0, 61, 0, 0, 0,
- 61, 0, 1, 0, 54, 0,107, 1, 53, 0,108, 1, 23, 0,151, 1, 23, 0,152, 1, 2, 0, 25, 0, 2, 0, 30, 0, 2, 0,153, 1,
- 2, 0,154, 1, 2, 0,155, 1, 2, 0,156, 1, 2, 0, 16, 0, 2, 0,157, 1, 7, 0, 10, 0, 7, 0, 11, 0, 4, 0,158, 1,
- 7, 0, 28, 0, 60, 0,159, 1, 62, 0, 8, 0, 9, 0,160, 1, 7, 0,161, 1, 4, 0,162, 1, 0, 0, 16, 0, 0, 0,163, 1,
- 2, 0,193, 0, 2, 0,164, 1, 2, 0,165, 1, 63, 0, 32, 0, 24, 0, 18, 0, 51, 0, 59, 1, 11, 0,166, 1, 27, 0, 42, 0,
- 29, 0,117, 1, 47, 0, 79, 1, 64, 0,167, 1, 62, 0,168, 1, 9, 0,169, 1, 65, 0,170, 1, 66, 0,171, 1, 67, 0,172, 1,
- 68, 0,173, 1, 69, 0,174, 1, 63, 0,175, 1, 70, 0,176, 1, 9, 0,177, 1, 4, 0,154, 1, 4, 0,178, 1, 4, 0,179, 1,
- 4, 0,113, 0, 7, 0, 81, 1, 7, 0,112, 0, 7, 0, 82, 1, 7, 0,180, 1, 7, 0, 17, 0, 2, 0,181, 1, 2, 0, 16, 0,
- 2, 0,182, 1, 2, 0,183, 1, 2, 0, 80, 1, 2, 0,184, 1, 64, 0, 8, 0, 4, 0,185, 1, 4, 0,186, 1, 4, 0,187, 1,
- 4, 0,188, 1, 0, 0, 17, 0, 0, 0, 96, 1, 0, 0,189, 1, 0, 0, 16, 0, 66, 0, 5, 0, 4, 0,185, 1, 4, 0,186, 1,
- 0, 0,190, 1, 0, 0, 17, 0, 2, 0, 16, 0, 71, 0, 2, 0, 4, 0,191, 1, 7, 0, 88, 1, 67, 0, 3, 0, 71, 0,192, 1,
- 4, 0,193, 1, 4, 0, 16, 0, 65, 0, 4, 0, 7, 0,194, 1, 2, 0,195, 1, 0, 0, 16, 0, 0, 0, 96, 1, 68, 0, 4, 0,
- 0, 0,137, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, 0, 69, 0, 1, 0, 7, 0,196, 1, 72, 0, 6, 0, 72, 0, 0, 0,
- 72, 0, 1, 0, 4, 0, 29, 0, 4, 0,193, 0, 0, 0, 34, 0, 0, 0,197, 1, 73, 0, 7, 0, 72, 0,198, 1, 2, 0,199, 1,
- 2, 0,200, 1, 2, 0,201, 1, 2, 0, 55, 0, 9, 0,202, 1, 9, 0,203, 1, 74, 0, 3, 0, 72, 0,198, 1, 39, 0,105, 0,
- 0, 0, 34, 0, 75, 0, 3, 0, 72, 0,198, 1, 39, 0,105, 0, 0, 0, 34, 0, 76, 0, 5, 0, 72, 0,198, 1, 7, 0,204, 1,
- 7, 0,205, 1, 4, 0,206, 1, 4, 0,207, 1, 77, 0, 4, 0, 72, 0,198, 1, 2, 0,208, 1, 2, 0, 16, 0, 7, 0,209, 1,
- 78, 0, 3, 0, 72, 0,198, 1, 7, 0,210, 1, 4, 0,211, 1, 79, 0, 12, 0, 72, 0,198, 1, 2, 0, 16, 0, 2, 0, 17, 0,
- 7, 0,212, 1, 7, 0,213, 1, 7, 0,214, 1, 7, 0,121, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1,
- 7, 0,219, 1, 80, 0, 5, 0, 72, 0,198, 1, 2, 0,220, 1, 2, 0, 69, 0, 4, 0, 48, 1, 39, 0,105, 0, 81, 0, 9, 0,
- 72, 0,198, 1, 39, 0,105, 0, 7, 0,221, 1, 7, 0,222, 1, 7, 0,223, 1, 4, 0,224, 1, 4, 0,225, 1, 7, 0,226, 1,
- 0, 0, 34, 0, 82, 0, 1, 0, 72, 0,198, 1, 83, 0, 4, 0, 72, 0,198, 1, 39, 0,105, 0, 4, 0,227, 1, 4, 0, 17, 0,
- 84, 0, 23, 0, 24, 0, 18, 0, 2, 0, 97, 1, 2, 0, 98, 1, 2, 0,228, 1, 2, 0, 16, 0, 2, 0,229, 1, 2, 0,230, 1,
- 2, 0,231, 1, 2, 0, 48, 1, 0, 0,232, 1, 0, 0,233, 1, 0, 0,234, 1, 0, 0, 29, 0, 4, 0, 17, 0, 7, 0,235, 1,
- 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 54, 0,241, 1, 27, 0, 42, 0, 29, 0,117, 1,
- 85, 0, 3, 0, 85, 0, 0, 0, 85, 0, 1, 0, 0, 0, 34, 0, 51, 0, 1, 0, 7, 0,242, 1, 70, 0, 2, 0, 7, 0,243, 1,
- 7, 0,112, 0, 86, 0, 4, 0, 2, 0, 22, 0, 2, 0,244, 1, 4, 0, 17, 0, 39, 0,245, 1, 39, 0, 95, 0, 24, 0, 18, 0,
- 2, 0, 29, 0, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 4, 0,249, 1, 0, 0,250, 1, 9, 0,251, 1, 39, 0,252, 1,
- 39, 0,253, 1, 27, 0, 42, 0, 59, 0,116, 1, 51, 0, 59, 1, 87, 0,254, 1, 88, 0,255, 1, 9, 0, 32, 0, 11, 0, 0, 2,
- 11, 0,166, 1, 11, 0, 1, 2, 11, 0, 78, 1, 11, 0, 2, 2, 11, 0, 3, 2, 47, 0, 79, 1, 7, 0, 81, 1, 7, 0, 4, 2,
- 7, 0, 5, 2, 7, 0,112, 0, 7, 0, 6, 2, 7, 0, 82, 1, 7, 0, 7, 2, 7, 0, 68, 1, 7, 0, 8, 2, 7, 0, 9, 2,
- 7, 0,221, 1, 7, 0,142, 0, 4, 0,231, 0, 2, 0, 16, 0, 2, 0, 10, 2, 2, 0, 11, 2, 2, 0, 12, 2, 2, 0, 13, 2,
- 2, 0, 14, 2, 2, 0, 15, 2, 2, 0, 16, 2, 2, 0, 17, 2, 2, 0, 18, 2, 2, 0, 19, 2, 2, 0, 20, 2, 2, 0, 21, 2,
- 2, 0, 22, 2, 2, 0, 23, 2, 2, 0, 24, 2, 7, 0, 25, 2, 7, 0, 26, 2, 7, 0, 27, 2, 7, 0, 28, 2, 7, 0, 29, 2,
- 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 7, 0, 33, 2, 0, 0, 34, 2, 0, 0, 35, 2, 0, 0, 80, 1, 0, 0, 36, 2,
- 30, 0, 80, 0, 11, 0, 37, 2, 11, 0, 38, 2, 11, 0, 39, 2, 11, 0, 40, 2, 9, 0,177, 1, 7, 0, 41, 2, 2, 0, 42, 2,
- 2, 0, 43, 2, 7, 0,162, 1, 4, 0, 44, 2, 4, 0, 45, 2, 2, 0, 46, 2, 2, 0,147, 0, 7, 0, 47, 2, 11, 0, 48, 2,
- 11, 0, 49, 2, 11, 0, 50, 2, 89, 0, 51, 2, 90, 0, 52, 2, 91, 0, 53, 2, 86, 0, 54, 2, 86, 0, 55, 2, 2, 0, 56, 2,
- 0, 0, 57, 2, 0, 0, 58, 2, 7, 0,181, 1, 92, 0, 59, 2, 93, 0, 60, 2, 93, 0, 61, 2, 94, 0, 14, 0, 94, 0, 0, 0,
- 94, 0, 1, 0, 39, 0,252, 1, 7, 0,221, 1, 7, 0, 62, 2, 7, 0,222, 1, 7, 0,223, 1, 0, 0, 34, 0, 4, 0,224, 1,
- 4, 0,225, 1, 4, 0, 63, 2, 2, 0, 29, 0, 2, 0, 64, 2, 7, 0,226, 1, 89, 0, 13, 0, 2, 0, 65, 2, 2, 0, 66, 2,
- 2, 0, 16, 0, 2, 0, 17, 0, 7, 0, 67, 2, 7, 0, 68, 2, 7, 0, 69, 2, 7, 0, 70, 2, 7, 0, 71, 2, 7, 0, 72, 2,
- 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 95, 0, 1, 0, 7, 0, 95, 1, 90, 0, 26, 0, 4, 0, 76, 2, 4, 0, 77, 2,
- 96, 0, 78, 2, 97, 0, 79, 2, 7, 0, 26, 2, 7, 0, 80, 2, 7, 0, 81, 2, 7, 0, 82, 2, 7, 0, 83, 2, 7, 0, 84, 2,
- 7, 0, 85, 2, 7, 0, 86, 2, 7, 0, 87, 2, 7, 0, 88, 2, 7, 0, 89, 2, 2, 0, 90, 2, 2, 0, 69, 0, 7, 0, 91, 2,
- 7, 0, 92, 2, 2, 0,187, 0, 2, 0, 93, 2, 2, 0, 94, 2, 2, 0, 48, 1, 95, 0, 95, 2, 4, 0, 96, 2, 4, 0, 44, 0,
- 92, 0, 26, 0, 2, 0, 29, 0, 2, 0, 97, 2, 2, 0, 98, 2, 2, 0, 99, 2, 7, 0,100, 2, 2, 0,101, 2, 2, 0,102, 2,
- 7, 0,103, 2, 2, 0,104, 2, 2, 0,105, 2, 7, 0,106, 2, 7, 0,107, 2, 7, 0,108, 2, 7, 0,109, 2, 7, 0,110, 2,
- 7, 0,111, 2, 4, 0,112, 2, 7, 0,113, 2, 7, 0,114, 2, 7, 0,115, 2, 63, 0,116, 2, 63, 0,117, 2, 63, 0,118, 2,
- 0, 0,119, 2, 7, 0,120, 2, 7, 0,121, 2, 98, 0, 56, 0, 24, 0, 18, 0, 2, 0,114, 0, 2, 0,194, 0, 2, 0,215, 0,
- 2, 0,122, 2, 7, 0,123, 2, 7, 0,124, 2, 7, 0,125, 2, 7, 0,126, 2, 7, 0,127, 2, 7, 0,128, 2, 7, 0,129, 2,
- 7, 0,130, 2, 7, 0,238, 0, 7, 0,240, 0, 7, 0,239, 0, 7, 0,131, 2, 4, 0,132, 2, 7, 0,133, 2, 7, 0,134, 2,
- 7, 0,135, 2, 7, 0,136, 2, 7, 0,137, 2, 7, 0,138, 2, 7, 0,139, 2, 2, 0,140, 2, 2, 0,193, 0, 4, 0,141, 2,
- 7, 0,142, 2, 7, 0,143, 2, 7, 0,144, 2, 7, 0,145, 2, 7, 0,146, 2, 7, 0,147, 2, 7, 0,148, 2, 7, 0,149, 2,
- 7, 0,150, 2, 7, 0,151, 2, 7, 0,152, 2, 7, 0,153, 2, 2, 0,154, 2, 2, 0,155, 2, 2, 0,156, 2, 2, 0,157, 2,
- 7, 0,158, 2, 7, 0,159, 2, 7, 0,160, 2, 7, 0,161, 2, 2, 0,162, 2, 2, 0,163, 2, 2, 0,164, 2, 2, 0,165, 2,
- 7, 0,166, 2, 27, 0, 42, 0, 38, 0,230, 0, 30, 0, 80, 0, 99, 0, 16, 0, 2, 0,167, 2, 2, 0,168, 2, 2, 0,169, 2,
- 2, 0, 16, 0, 2, 0,170, 2, 2, 0,171, 2, 2, 0,172, 2, 2, 0,173, 2, 2, 0,174, 2, 2, 0,175, 2, 2, 0,176, 2,
- 2, 0,177, 2, 4, 0,178, 2, 7, 0,179, 2, 7, 0,180, 2, 7, 0,181, 2,100, 0, 8, 0,100, 0, 0, 0,100, 0, 1, 0,
- 4, 0,231, 0, 4, 0,182, 2, 4, 0, 16, 0, 2, 0,183, 2, 2, 0,184, 2, 39, 0,105, 0,101, 0, 13, 0, 9, 0,185, 2,
- 9, 0,186, 2, 4, 0,187, 2, 4, 0,188, 2, 4, 0,189, 2, 4, 0,190, 2, 4, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,
- 4, 0,194, 2, 4, 0,195, 2, 4, 0, 17, 0, 0, 0,196, 2,102, 0, 5, 0, 9, 0,197, 2, 9, 0,198, 2, 4, 0,199, 2,
- 4, 0, 48, 1, 0, 0,200, 2,103, 0, 4, 0, 4, 0,201, 2, 7, 0,202, 2, 2, 0, 16, 0, 2, 0,203, 2,104, 0, 98, 0,
-101, 0,204, 2,102, 0,205, 2, 2, 0,206, 2, 2, 0,187, 0, 2, 0, 93, 2, 2, 0,207, 2, 2, 0,208, 2, 2, 0, 16, 0,
- 7, 0, 26, 2, 7, 0,209, 2, 7, 0,210, 2, 7, 0,211, 2, 7, 0,212, 2, 7, 0,213, 2, 2, 0,214, 2, 2, 0,215, 2,
- 2, 0,216, 2, 2, 0,217, 2, 2, 0,146, 0, 2, 0,218, 2, 2, 0,219, 2, 2, 0,220, 2, 2, 0,221, 2, 2, 0,222, 2,
- 2, 0,223, 2, 2, 0, 17, 0, 2, 0, 66, 0, 2, 0,224, 2, 2, 0,225, 2, 2, 0,226, 2, 2, 0,227, 2, 2, 0,228, 2,
- 2, 0,229, 2, 2, 0,230, 2, 23, 0,231, 2, 23, 0,232, 2, 2, 0,233, 2, 2, 0,234, 2, 2, 0,235, 2, 2, 0,236, 2,
- 2, 0,237, 2, 2, 0,238, 2, 4, 0,193, 0, 2, 0,239, 2, 2, 0,240, 2, 2, 0,241, 2, 2, 0,242, 2, 2, 0,243, 2,
- 2, 0,244, 2, 2, 0,245, 2, 2, 0,246, 2, 2, 0,247, 2, 7, 0,181, 2, 7, 0,248, 2, 7, 0,249, 2, 7, 0,250, 2,
- 7, 0,251, 2, 7, 0,252, 2, 7, 0,253, 2, 7, 0,254, 2, 7, 0,255, 2, 7, 0, 0, 3, 7, 0, 1, 3, 7, 0, 2, 3,
- 7, 0, 3, 3, 7, 0, 4, 3, 2, 0, 5, 3, 2, 0, 6, 3, 2, 0, 7, 3, 2, 0, 8, 3, 2, 0, 9, 3, 2, 0, 10, 3,
- 2, 0, 11, 3, 2, 0, 12, 3, 2, 0, 13, 3, 2, 0, 14, 3, 4, 0, 15, 3, 4, 0, 16, 3, 4, 0, 17, 3, 4, 0, 18, 3,
- 4, 0, 19, 3, 7, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3,
- 7, 0, 27, 3, 7, 0, 28, 3, 7, 0, 29, 3, 7, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, 7, 0, 33, 3, 0, 0, 34, 3,
- 0, 0, 35, 3, 0, 0, 36, 3,105, 0, 5, 0, 7, 0, 37, 3, 0, 0, 29, 0, 0, 0, 69, 0, 0, 0, 48, 1, 0, 0, 39, 1,
-106, 0, 5, 0,106, 0, 0, 0,106, 0, 1, 0, 4, 0, 38, 3, 0, 0, 39, 3, 4, 0, 16, 0,107, 0, 13, 0, 2, 0, 40, 3,
- 2, 0, 41, 3, 2, 0, 42, 3, 2, 0, 43, 3, 2, 0, 44, 3, 2, 0, 69, 0, 7, 0, 45, 3, 7, 0, 46, 3, 2, 0, 47, 3,
- 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 48, 1, 0, 0, 39, 1,108, 0, 31, 0, 24, 0, 18, 0, 39, 0, 50, 3, 98, 0, 51, 3,
-108, 0, 52, 3, 35, 0,140, 0, 11, 0, 53, 3,100, 0, 54, 3,109, 0, 55, 3, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3,
- 7, 0, 59, 3, 4, 0,231, 0, 2, 0, 60, 3, 2, 0, 17, 0, 2, 0, 61, 3, 2, 0, 62, 3, 7, 0, 63, 3, 9, 0, 64, 3,
- 99, 0, 65, 3, 9, 0,177, 1,105, 0, 66, 3,107, 0, 67, 3,104, 0,115, 0,103, 0, 68, 3, 30, 0, 80, 0, 11, 0, 69, 3,
-110, 0, 70, 3, 2, 0, 71, 3, 2, 0, 72, 3, 4, 0, 73, 3,111, 0, 10, 0, 35, 0,140, 0, 40, 0,106, 0, 7, 0,132, 1,
- 7, 0,133, 1, 7, 0, 66, 0, 7, 0, 74, 3, 7, 0, 75, 3, 2, 0, 76, 3, 2, 0, 77, 3, 4, 0, 78, 3,112, 0, 53, 0,
-113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3, 7, 0, 83, 3, 7, 0, 84, 3,
- 7, 0, 85, 3, 7, 0, 86, 3, 7, 0, 87, 3, 7, 0, 88, 3, 7, 0, 89, 3, 7, 0,196, 0, 2, 0, 90, 3, 2, 0, 91, 3,
- 39, 0, 50, 3,111, 0, 92, 3,112, 0, 93, 3, 2, 0,169, 2, 2, 0, 94, 3, 4, 0,231, 0, 4, 0, 95, 3, 2, 0, 96, 3,
- 2, 0, 97, 3, 2, 0, 98, 3, 2, 0, 16, 0, 7, 0, 72, 0, 7, 0, 99, 3, 7, 0,100, 3, 7, 0,101, 3, 7, 0,102, 3,
- 7, 0,103, 3, 7, 0,111, 0, 7, 0, 56, 3, 2, 0,104, 3, 2, 0,105, 3, 2, 0,106, 3, 2, 0,107, 3, 2, 0,108, 3,
- 2, 0,109, 3, 2, 0,110, 3, 2, 0,111, 3, 2, 0,112, 3, 2, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 51, 0,116, 3,
- 11, 0,117, 3, 2, 0,118, 3, 2, 0,163, 1, 2, 0,119, 3, 2, 0, 48, 1,115, 0, 16, 0, 23, 0, 22, 0, 23, 0, 24, 0,
- 22, 0,120, 3, 22, 0,121, 3, 22, 0,122, 3, 7, 0,123, 3, 7, 0,124, 3, 7, 0,125, 3, 7, 0,126, 3, 2, 0,127, 3,
- 2, 0,128, 3, 2, 0,129, 3, 2, 0,130, 3, 2, 0,131, 3, 2, 0,132, 3, 4, 0, 16, 0,113, 0, 6, 0,113, 0, 0, 0,
-113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3,116, 0, 6, 0,113, 0, 0, 0,113, 0, 1, 0,
- 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3,117, 0, 26, 0,113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3,
- 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3, 4, 0,133, 3, 4, 0, 48, 1,115, 0,134, 3, 9, 0,135, 3, 11, 0,136, 3,
- 27, 0, 42, 0, 24, 0, 43, 0, 0, 0,137, 3, 0, 0,138, 3, 2, 0,139, 3, 2, 0,140, 3, 2, 0,141, 3, 2, 0,142, 3,
- 2, 0, 26, 0, 2, 0, 25, 0, 2, 0,108, 3, 2, 0,143, 3, 4, 0, 16, 0, 7, 0,144, 3, 23, 0, 22, 0,118, 0, 31, 0,
-113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3, 2, 0,145, 3, 2, 0,146, 3,
- 2, 0,147, 3, 2, 0,148, 3,115, 0,134, 3, 2, 0,149, 3, 2, 0,108, 3, 2, 0,140, 3, 2, 0,150, 3, 9, 0,151, 3,
- 2, 0,109, 3, 0, 0,152, 3, 0, 0,153, 3, 2, 0,154, 3, 2, 0,155, 3, 4, 0, 78, 3, 2, 0,156, 3, 2, 0,157, 3,
- 2, 0,158, 3, 2, 0, 18, 2, 2, 0,159, 3, 2, 0, 69, 0, 4, 0,160, 3, 0, 0,215, 0, 0, 0,161, 3,119, 0, 10, 0,
-113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3,115, 0,134, 3, 2, 0,149, 3,
- 2, 0, 74, 3, 4, 0, 48, 1,120, 0, 24, 0,113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3,
- 2, 0, 82, 3,121, 0,162, 3, 4, 0,163, 3, 0, 0,164, 3, 0, 0,165, 3, 0, 0,166, 3, 2, 0, 29, 0, 2, 0,167, 3,
- 2, 0, 16, 0, 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3,122, 0,171, 3, 2, 0,172, 3, 2, 0,138, 0, 2, 0,173, 3,
- 2, 0,174, 3, 9, 0,175, 3, 2, 0,176, 3,123, 0, 19, 0,113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,
-114, 0, 81, 3, 2, 0, 82, 3,115, 0,134, 3, 11, 0,177, 3, 2, 0,140, 3, 2, 0,178, 3, 2, 0, 16, 0, 2, 0,157, 1,
- 9, 0,151, 3, 11, 0,179, 3,124, 0,180, 3, 2, 0, 29, 0, 2, 0,181, 3, 2, 0,182, 3, 2, 0,183, 3,125, 0, 17, 0,
-113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3,115, 0,134, 3, 35, 0,184, 3,
- 7, 0, 74, 3, 2, 0,193, 0, 2, 0,108, 3, 2, 0,185, 3, 2, 0,186, 3, 7, 0,132, 1, 7, 0,133, 1, 2, 0, 16, 0,
- 2, 0,143, 3,126, 0, 10, 0,113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3,
- 2, 0,108, 3, 2, 0,143, 3, 4, 0, 17, 0,115, 0,134, 3,127, 0, 22, 0,113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3,
- 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3, 32, 0,187, 3, 4, 0,188, 3, 4, 0,189, 3, 2, 0, 55, 0, 2, 0,108, 3,
- 4, 0,190, 3, 4, 0,191, 3, 4, 0,192, 3, 4, 0,193, 3, 4, 0,194, 3, 4, 0,195, 3, 4, 0,196, 3, 4, 0,197, 3,
- 7, 0,198, 3, 22, 0,199, 3, 22, 0,200, 3,128, 0, 9, 0,113, 0, 0, 0,113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,
-114, 0, 81, 3,129, 0,201, 3, 4, 0, 48, 1, 2, 0, 55, 0, 2, 0,108, 3,130, 0, 8, 0,113, 0, 0, 0,113, 0, 1, 0,
- 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3,115, 0,134, 3, 4, 0, 16, 0, 4, 0,202, 3,131, 0, 81, 0,113, 0, 0, 0,
-113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 0, 0,203, 3, 4, 0,204, 3, 2, 0,193, 0, 2, 0,205, 3,
- 2, 0,206, 3, 2, 0,207, 3, 2, 0,208, 3, 2, 0,209, 3, 2, 0,210, 3, 2, 0,211, 3, 2, 0,212, 3, 2, 0,213, 3,
- 2, 0,214, 3, 2, 0,215, 3, 2, 0,216, 3, 2, 0,217, 3, 2, 0,218, 3, 2, 0,219, 3, 2, 0,220, 3, 2, 0,221, 3,
- 2, 0,222, 3, 2, 0,223, 3, 2, 0,224, 3, 2, 0,225, 3, 2, 0,226, 3, 2, 0,227, 3, 2, 0,228, 3, 2, 0,229, 3,
- 2, 0,230, 3, 2, 0,231, 3, 2, 0,232, 3, 2, 0,233, 3, 2, 0,234, 3, 2, 0,235, 3, 2, 0,236, 3, 2, 0,237, 3,
- 2, 0,238, 3, 2, 0,239, 3, 2, 0,240, 3, 2, 0,241, 3, 2, 0,242, 3, 2, 0,243, 3, 2, 0,244, 3, 2, 0,245, 3,
- 2, 0,246, 3, 2, 0,247, 3, 2, 0,248, 3, 2, 0,249, 3, 2, 0,250, 3, 2, 0,251, 3, 0, 0,252, 3, 0, 0,253, 3,
- 0, 0,254, 3, 0, 0,255, 3,132, 0, 0, 4,132, 0, 1, 4, 4, 0, 2, 4, 4, 0, 3, 4, 4, 0, 4, 4, 4, 0, 5, 4,
- 4, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 2, 0, 10, 4, 2, 0, 11, 4, 2, 0, 12, 4, 2, 0, 13, 4,
-133, 0, 14, 4,133, 0, 15, 4, 2, 0, 16, 4, 2, 0, 17, 4, 4, 0, 48, 1, 37, 0, 18, 4, 9, 0,175, 3, 9, 0, 19, 4,
-134, 0, 19, 0, 0, 0, 20, 4, 0, 0, 21, 4, 0, 0, 22, 4, 0, 0, 23, 4, 0, 0, 24, 4, 0, 0, 25, 4, 0, 0, 26, 4,
- 0, 0, 27, 4, 0, 0, 28, 4, 0, 0, 29, 4, 0, 0, 30, 4, 0, 0, 31, 4, 0, 0, 32, 4, 0, 0, 33, 4, 0, 0, 34, 4,
- 0, 0, 35, 4, 0, 0, 36, 4, 0, 0, 37, 4, 0, 0, 38, 4,135, 0, 36, 0, 0, 0, 39, 4, 0, 0, 30, 4, 0, 0, 31, 4,
- 0, 0, 40, 4, 0, 0, 41, 4, 0, 0, 42, 4, 0, 0, 43, 4, 0, 0, 44, 4, 0, 0, 45, 4, 0, 0, 46, 4, 0, 0, 47, 4,
- 0, 0, 48, 4, 0, 0, 49, 4, 0, 0, 50, 4, 0, 0, 51, 4, 0, 0, 52, 4, 0, 0, 53, 4, 0, 0, 54, 4, 0, 0, 55, 4,
- 0, 0, 56, 4, 0, 0, 57, 4, 0, 0, 58, 4, 0, 0, 59, 4, 0, 0, 60, 4, 0, 0, 61, 4, 0, 0, 62, 4, 0, 0, 63, 4,
- 0, 0, 64, 4, 0, 0, 65, 4, 0, 0, 66, 4, 0, 0, 67, 4, 0, 0, 68, 4, 0, 0, 69, 4, 0, 0, 70, 4, 0, 0, 71, 4,
- 0, 0, 72, 4,136, 0, 18, 0,136, 0, 0, 0,136, 0, 1, 0, 0, 0, 34, 0,134, 0, 73, 4,135, 0, 74, 4,135, 0, 75, 4,
-135, 0, 76, 4,135, 0, 77, 4,135, 0, 78, 4,135, 0, 79, 4,135, 0, 80, 4,135, 0, 81, 4,135, 0, 82, 4,135, 0, 83, 4,
-135, 0, 84, 4,135, 0, 85, 4,135, 0, 86, 4,135, 0, 87, 4,137, 0, 5, 0, 4, 0, 16, 0, 4, 0, 17, 0, 7, 0,162, 1,
- 7, 0, 88, 4, 7, 0, 95, 1,138, 0, 45, 0, 4, 0, 16, 0, 4, 0, 89, 4, 4, 0, 90, 4, 0, 0, 91, 4, 0, 0, 92, 4,
- 0, 0, 93, 4, 0, 0, 94, 4, 0, 0, 95, 4, 0, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 0, 0, 99, 4, 2, 0,100, 4,
- 2, 0,101, 4, 4, 0,102, 4, 4, 0,103, 4, 4, 0,104, 4, 4, 0,105, 4, 2, 0,106, 4, 2, 0,107, 4, 2, 0,108, 4,
- 2, 0,109, 4, 4, 0,110, 4, 4, 0,111, 4, 2, 0,112, 4, 2, 0,113, 4, 2, 0,114, 4, 2, 0,115, 4, 0, 0,116, 4,
- 11, 0,117, 4, 2, 0,118, 4, 2, 0,119, 4, 2, 0,120, 4, 2, 0,121, 4,137, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4,
- 2, 0,125, 4, 2, 0,126, 4, 4, 0,127, 4, 4, 0,128, 4, 2, 0,129, 4, 2, 0, 69, 0, 2, 0, 48, 1, 2, 0, 39, 1,
-139, 0, 18, 0, 24, 0, 18, 0, 11, 0,130, 4, 11, 0,131, 4, 11, 0,132, 4,108, 0,133, 4, 2, 0,212, 1, 2, 0,134, 4,
- 2, 0,213, 1, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, 2, 0, 17, 0,
- 2, 0,141, 4, 2, 0,142, 4, 2, 0,143, 4,140, 0, 5, 0,140, 0, 0, 0,140, 0, 1, 0,140, 0,144, 4, 12, 0,145, 4,
- 4, 0, 16, 0,141, 0, 7, 0,141, 0, 0, 0,141, 0, 1, 0,140, 0,146, 4,140, 0,147, 4, 2, 0,232, 2, 2, 0, 16, 0,
- 4, 0, 17, 0,142, 0, 16, 0,142, 0, 0, 0,142, 0, 1, 0, 0, 0,148, 4, 0, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4,
- 2, 0,136, 4, 2, 0,137, 4, 2, 0, 16, 0, 2, 0, 64, 2, 2, 0,152, 4, 2, 0, 17, 0, 2, 0,153, 4, 2, 0,154, 4,
- 4, 0,155, 4,142, 0,156, 4,114, 0, 30, 0,114, 0, 0, 0,114, 0, 1, 0,140, 0,146, 4,140, 0,147, 4,140, 0,157, 4,
-140, 0,158, 4,139, 0,159, 4, 7, 0,160, 4, 22, 0,152, 1, 22, 0,161, 4, 22, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4,
- 2, 0,165, 4, 0, 0, 79, 3, 0, 0,166, 4, 2, 0,167, 4, 2, 0,168, 4, 0, 0,169, 4, 0, 0,170, 4, 0, 0,171, 4,
- 0, 0,172, 4, 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0, 16, 0, 30, 0, 80, 0, 11, 0,176, 4, 11, 0,177, 4,
- 11, 0,178, 4,143, 0, 7, 0, 9, 0,179, 4, 9, 0,180, 4, 2, 0,181, 4, 2, 0,233, 2, 4, 0,182, 4, 4, 0,183, 4,
- 4, 0, 17, 0,144, 0, 8, 0, 0, 0,184, 4, 37, 0, 82, 0,144, 0,185, 4,144, 0,186, 4,144, 0,187, 4, 2, 0, 84, 0,
- 2, 0,188, 4, 4, 0, 17, 0,145, 0, 11, 0,145, 0, 0, 0,145, 0, 1, 0, 2, 0,157, 1, 2, 0, 52, 0, 2, 0, 15, 0,
- 2, 0,189, 4,144, 0,190, 4, 0, 0,165, 3, 2, 0,191, 4, 2, 0,192, 4, 4, 0, 17, 0,146, 0, 10, 0, 0, 0, 57, 1,
- 9, 0,125, 0, 0, 0,126, 0, 4, 0,129, 0, 4, 0,136, 0, 9, 0,130, 0, 7, 0,132, 0, 7, 0,133, 0, 9, 0,134, 0,
- 9, 0,135, 0,147, 0, 38, 0,147, 0, 0, 0,147, 0, 1, 0,147, 0,193, 4, 9, 0, 13, 0, 0, 0, 14, 0, 2, 0, 16, 0,
- 2, 0, 29, 0, 4, 0, 52, 0, 4, 0,204, 1, 4, 0,194, 4, 4, 0,195, 4, 4, 0,196, 4, 4, 0,197, 4, 4, 0,198, 4,
- 4, 0,146, 0, 4, 0,199, 4, 4, 0,200, 4, 7, 0,201, 4, 7, 0,202, 4, 4, 0,187, 0,145, 0,203, 4,144, 0,204, 4,
- 27, 0, 42, 0,108, 0,133, 4, 36, 0, 81, 0, 7, 0,205, 4, 7, 0,206, 4,146, 0,189, 0,147, 0,207, 4,147, 0,208, 4,
-147, 0,209, 4, 11, 0,210, 4,148, 0,211, 4, 7, 0,212, 4, 7, 0,213, 4, 4, 0,214, 4, 7, 0,215, 4, 9, 0,216, 4,
-149, 0, 4, 0,149, 0, 0, 0,149, 0, 1, 0, 11, 0,217, 4,147, 0,218, 4,150, 0, 6, 0, 11, 0,219, 4, 11, 0,210, 4,
- 11, 0,220, 4, 2, 0, 16, 0, 2, 0,157, 1, 4, 0, 17, 0,151, 0, 4, 0, 7, 0,221, 4, 7, 0,222, 4, 2, 0,223, 4,
- 2, 0,224, 4,152, 0, 6, 0, 7, 0,225, 4, 7, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 4, 0,229, 4, 4, 0,230, 4,
-153, 0, 6, 0,153, 0, 0, 0,153, 0, 1, 0, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0,231, 4, 2, 0,157, 1,154, 0, 8, 0,
-154, 0, 0, 0,154, 0, 1, 0, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0,231, 4, 2, 0,157, 1, 7, 0, 52, 0, 7, 0,187, 0,
-155, 0, 41, 0,155, 0, 0, 0,155, 0, 1, 0, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0,231, 4, 2, 0,143, 0, 2, 0, 90, 2,
- 2, 0,232, 4, 7, 0,233, 4, 7, 0,234, 4, 7, 0,219, 1, 4, 0,235, 4, 4, 0, 44, 0, 4, 0,207, 1, 7, 0,236, 4,
- 7, 0,237, 4, 7, 0,238, 4, 7, 0,239, 4, 7, 0,240, 4, 7, 0,241, 4, 7, 0,217, 1, 7, 0,184, 0, 7, 0,242, 4,
- 7, 0,243, 4, 7, 0,244, 4, 7, 0,245, 4, 2, 0,246, 4, 2, 0,247, 4, 2, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4,
- 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0, 78, 1, 2, 0, 0, 5, 0, 0, 1, 5,
- 0, 0, 2, 5,156, 0, 3, 5,157, 0, 16, 0,157, 0, 0, 0,157, 0, 1, 0, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0,231, 4,
- 2, 0,143, 0, 7, 0,212, 1, 7, 0,213, 1, 7, 0,214, 1, 7, 0,121, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0, 4, 5,
- 7, 0,217, 1, 7, 0,218, 1, 7, 0,219, 1,158, 0, 5, 0, 2, 0, 29, 0, 2, 0,188, 4, 2, 0, 16, 0, 2, 0, 5, 5,
- 24, 0, 6, 5,124, 0, 3, 0, 4, 0, 31, 0, 4, 0, 7, 5,158, 0, 32, 0,159, 0, 12, 0,159, 0, 0, 0,159, 0, 1, 0,
- 2, 0, 29, 0, 2, 0, 16, 0, 2, 0, 34, 2, 2, 0, 94, 1, 7, 0, 4, 0, 7, 0, 5, 0, 7, 0, 8, 5, 7, 0, 9, 5,
- 24, 0, 6, 5, 11, 0, 10, 5,160, 0, 11, 0,160, 0, 0, 0,160, 0, 1, 0, 0, 0, 34, 0, 2, 0, 29, 0, 2, 0, 11, 5,
- 4, 0, 12, 5, 4, 0, 13, 5, 2, 0, 16, 0, 2, 0, 17, 0, 9, 0, 14, 5, 9, 0, 15, 5,161, 0, 5, 0, 0, 0, 34, 0,
- 7, 0,196, 0, 7, 0, 16, 5, 4, 0, 17, 5, 4, 0, 17, 0,162, 0, 4, 0, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0, 69, 0,
- 2, 0, 48, 1,163, 0, 4, 0, 0, 0, 34, 0, 47, 0, 18, 5, 7, 0,196, 0, 7, 0, 17, 0,164, 0, 6, 0, 2, 0, 19, 5,
- 2, 0, 20, 5, 2, 0, 29, 0, 2, 0, 21, 5, 0, 0, 22, 5, 0, 0, 23, 5,165, 0, 5, 0, 4, 0, 29, 0, 4, 0, 17, 0,
- 0, 0, 34, 0, 0, 0, 24, 5, 0, 0, 25, 5,166, 0, 6, 0, 0, 0, 34, 0, 0, 0, 26, 5, 2, 0, 27, 5, 2, 0,217, 1,
- 2, 0,193, 0, 2, 0, 48, 1,167, 0, 5, 0, 0, 0, 34, 0, 7, 0,222, 4, 7, 0,135, 2, 2, 0, 16, 0, 2, 0,208, 1,
-168, 0, 3, 0, 0, 0, 34, 0, 4, 0,207, 1, 4, 0, 28, 5,169, 0, 7, 0, 0, 0, 34, 0, 7, 0,135, 2, 0, 0, 29, 5,
- 0, 0, 30, 5, 2, 0,193, 0, 2, 0, 69, 0, 4, 0, 31, 5,170, 0, 3, 0, 39, 0, 32, 5, 0, 0, 33, 5, 0, 0, 34, 5,
-171, 0, 17, 0,171, 0, 0, 0,171, 0, 1, 0, 2, 0, 29, 0, 2, 0, 11, 5, 2, 0, 16, 0, 2, 0, 35, 5, 2, 0, 36, 5,
- 2, 0, 37, 5, 2, 0, 69, 0, 2, 0, 48, 1, 0, 0, 34, 0, 9, 0, 32, 0,172, 0, 38, 5, 39, 0,149, 1, 2, 0, 39, 5,
- 2, 0, 40, 5, 4, 0, 17, 0,173, 0, 10, 0, 0, 0, 34, 0, 2, 0, 29, 0, 2, 0, 17, 0, 4, 0,208, 1, 4, 0, 41, 5,
- 4, 0, 42, 5, 4, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 4, 0, 46, 5,174, 0, 1, 0, 0, 0, 47, 5,175, 0, 1, 0,
- 32, 0,187, 3,172, 0, 18, 0,172, 0, 0, 0,172, 0, 1, 0,172, 0, 48, 5, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0, 49, 5,
- 2, 0, 37, 5, 2, 0, 11, 5, 2, 0, 50, 5, 2, 0, 48, 1, 2, 0, 39, 1, 0, 0, 34, 0, 9, 0, 32, 0,176, 0, 38, 5,
-171, 0, 51, 5, 2, 0, 52, 5, 2, 0, 53, 5, 4, 0, 24, 1,177, 0, 3, 0, 4, 0, 54, 5, 4, 0, 17, 0, 39, 0,149, 1,
-178, 0, 13, 0, 87, 0, 55, 5, 2, 0, 29, 0, 2, 0, 16, 0, 2, 0,233, 4, 2, 0,234, 4, 0, 0, 34, 0, 2, 0, 56, 5,
- 2, 0, 57, 5, 7, 0, 58, 5, 2, 0, 59, 5, 2, 0, 99, 0, 2, 0,100, 0, 2, 0, 60, 5,179, 0, 9, 0, 2, 0, 16, 0,
- 2, 0, 61, 5, 2, 0,233, 4, 2, 0,234, 4,148, 0,211, 4, 2, 0, 29, 0, 2, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5,
-180, 0, 7, 0, 2, 0, 16, 0, 2, 0, 61, 5, 2, 0,233, 4, 2, 0,234, 4, 2, 0, 29, 0, 2, 0, 65, 5, 7, 0, 66, 5,
-181, 0, 9, 0, 4, 0, 54, 5, 2, 0, 29, 0, 2, 0, 16, 0, 39, 0,149, 1, 63, 0, 67, 5, 0, 0, 34, 0, 7, 0, 68, 5,
- 2, 0, 69, 5, 2, 0, 17, 0,182, 0, 5, 0, 2, 0, 29, 0, 2, 0, 16, 0, 4, 0, 17, 0,108, 0,133, 4, 39, 0, 50, 3,
-183, 0, 5, 0, 4, 0, 16, 0, 4, 0, 29, 0, 0, 0, 34, 0, 0, 0, 24, 5, 39, 0,149, 1,184, 0, 12, 0, 4, 0, 16, 0,
- 4, 0, 29, 0, 7, 0, 70, 5, 7, 0, 71, 5, 7, 0, 81, 1, 7, 0, 82, 1, 7, 0, 4, 2, 7, 0, 7, 2, 7, 0, 72, 5,
- 7, 0, 73, 5, 7, 0, 74, 5, 0, 0, 75, 5,185, 0, 9, 0, 2, 0, 16, 0, 2, 0, 29, 0, 2, 0,233, 4, 2, 0,234, 4,
- 0, 0, 34, 0, 2, 0, 69, 0, 2, 0, 24, 0, 2, 0, 76, 5, 2, 0, 77, 5,186, 0, 8, 0, 39, 0,149, 1, 7, 0,214, 1,
- 7, 0, 78, 5, 7, 0,244, 1, 7, 0, 79, 5, 2, 0, 16, 0, 2, 0,208, 1, 7, 0, 80, 5,187, 0, 7, 0, 2, 0, 16, 0,
- 2, 0,217, 1, 7, 0, 81, 5, 7, 0, 82, 5, 7, 0, 83, 5, 7, 0, 84, 5, 7, 0, 85, 5,188, 0, 10, 0, 2, 0, 16, 0,
- 2, 0, 29, 0, 2, 0,233, 4, 2, 0,234, 4, 0, 0, 34, 0, 2, 0, 69, 0, 2, 0, 24, 0, 2, 0, 76, 5, 2, 0, 77, 5,
-109, 0, 55, 3,189, 0, 7, 0, 4, 0,207, 1, 4, 0, 86, 5, 4, 0, 87, 5, 4, 0, 88, 5, 7, 0, 89, 5, 7, 0, 90, 5,
- 0, 0, 29, 5,190, 0, 7, 0, 0, 0, 91, 5, 39, 0, 92, 5, 0, 0, 33, 5, 2, 0, 93, 5, 2, 0, 69, 0, 4, 0, 48, 1,
- 0, 0, 34, 5,191, 0, 6, 0, 2, 0, 16, 0, 2, 0, 29, 0, 2, 0,233, 4, 2, 0,234, 4, 0, 0, 94, 5, 0, 0, 95, 5,
-192, 0, 1, 0, 4, 0, 16, 0,176, 0, 10, 0,176, 0, 0, 0,176, 0, 1, 0,176, 0, 48, 5, 2, 0, 29, 0, 2, 0, 16, 0,
- 2, 0, 11, 5, 2, 0, 96, 5, 0, 0, 34, 0, 9, 0, 32, 0, 39, 0,149, 1,193, 0, 10, 0, 7, 0, 27, 2, 7, 0, 97, 5,
- 7, 0, 98, 5, 7, 0, 99, 5, 7, 0,100, 5, 4, 0, 16, 0, 7, 0,101, 5, 7, 0,102, 5, 7, 0,103, 5, 7, 0, 17, 0,
-148, 0, 22, 0, 24, 0, 18, 0, 0, 0, 21, 0,194, 0,104, 5, 9, 0,105, 5, 33, 0, 95, 0, 33, 0,106, 5, 9, 0,107, 5,
- 27, 0, 42, 0, 7, 0, 66, 5, 7, 0,108, 5, 7, 0,109, 5, 7, 0,110, 5, 7, 0,111, 5, 7, 0,112, 5, 7, 0,113, 5,
- 4, 0, 55, 0, 4, 0,114, 5, 4, 0,115, 5, 4, 0,116, 5, 0, 0,117, 5, 0, 0,118, 5, 0, 0,119, 5,195, 0, 6, 0,
- 24, 0, 18, 0, 7, 0,120, 5, 7, 0,121, 5, 7, 0,122, 5, 2, 0,123, 5, 2, 0,124, 5,196, 0, 14, 0,113, 0, 0, 0,
-113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3,115, 0,134, 3,148, 0,211, 4, 2, 0,193, 0, 2, 0, 61, 5,
- 2, 0,132, 1, 2, 0,133, 1, 2, 0, 16, 0, 2, 0,143, 3, 4, 0, 48, 1,197, 0, 6, 0,197, 0, 0, 0,197, 0, 1, 0,
- 2, 0,187, 0, 2, 0, 93, 2, 7, 0,206, 2, 0, 0, 34, 0,198, 0, 31, 0,198, 0, 0, 0,198, 0, 1, 0,197, 0,125, 5,
- 2, 0,246, 1, 2, 0, 17, 0, 4, 0,247, 1, 4, 0,248, 1, 4, 0,249, 1, 39, 0,252, 1, 39, 0,253, 1, 27, 0, 42, 0,
- 7, 0, 81, 1, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0,112, 0, 7, 0, 6, 2, 7, 0, 82, 1, 7, 0, 7, 2, 7, 0, 68, 1,
- 7, 0, 8, 2, 7, 0, 9, 2, 7, 0,221, 1, 7, 0,142, 0, 4, 0,231, 0, 0, 0, 11, 2, 0, 0, 12, 2, 0, 0, 13, 2,
- 0, 0, 14, 2, 7, 0, 25, 2, 7, 0, 26, 2, 7, 0,126, 5,199, 0, 4, 0,199, 0, 0, 0,199, 0, 1, 0, 39, 0,149, 1,
- 11, 0,127, 5,109, 0, 4, 0, 24, 0, 18, 0, 11, 0,128, 5, 11, 0,129, 5,197, 0,130, 5,200, 0, 25, 0,200, 0, 0, 0,
-200, 0, 1, 0,200, 0,252, 1, 11, 0,131, 5, 0, 0, 34, 0, 7, 0,132, 5, 7, 0,133, 5, 7, 0,134, 5, 7, 0,135, 5,
- 4, 0, 16, 0, 7, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,196, 0, 7, 0, 88, 1, 7, 0,139, 5, 7, 0,205, 1,
- 7, 0,140, 5, 7, 0,141, 5, 7, 0,142, 5, 7, 0,143, 5, 7, 0,144, 5, 7, 0,112, 0, 2, 0,145, 5, 2, 0, 47, 3,
-201, 0, 8, 0, 24, 0, 18, 0, 11, 0,146, 5, 11, 0,147, 5, 4, 0, 16, 0, 4, 0,169, 2, 4, 0,220, 1, 2, 0,148, 5,
- 2, 0,149, 5,202, 0, 29, 0,202, 0, 0, 0,202, 0, 1, 0, 11, 0, 48, 2, 0, 0, 34, 0, 2, 0, 16, 0, 2, 0,150, 5,
- 2, 0,151, 5, 2, 0,119, 1, 2, 0, 16, 2, 2, 0, 17, 0, 2, 0, 69, 0, 2, 0, 48, 1,200, 0,152, 5,202, 0,252, 1,
-202, 0,153, 5, 11, 0,154, 5, 9, 0,155, 5, 7, 0, 81, 1, 7, 0,112, 0, 7, 0, 68, 1, 7, 0,156, 5, 7, 0,157, 5,
- 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, 7, 0,161, 5, 7, 0,162, 5, 7, 0,163, 5, 7, 0,116, 1, 88, 0, 3, 0,
- 11, 0,164, 5, 4, 0, 16, 0, 7, 0,165, 5,203, 0, 7, 0,203, 0, 0, 0,203, 0, 1, 0, 27, 0, 42, 0, 11, 0, 0, 2,
- 4, 0, 16, 0, 0, 0, 34, 0, 4, 0, 99, 0, 87, 0, 2, 0, 24, 0, 18, 0, 11, 0,164, 5,204, 0, 14, 0,113, 0, 0, 0,
-113, 0, 1, 0, 4, 0, 79, 3, 7, 0, 80, 3,114, 0, 81, 3, 2, 0, 82, 3,115, 0,134, 3, 87, 0,254, 1, 4, 0, 16, 0,
- 2, 0,140, 3, 2, 0,166, 5, 2, 0,143, 3, 2, 0, 17, 0, 7, 0,167, 5,205, 0, 5, 0,205, 0, 0, 0,205, 0, 1, 0,
- 27, 0, 42, 0, 2, 0, 16, 0, 0, 0,168, 5,206, 0, 8, 0,206, 0, 0, 0,206, 0, 1, 0, 9, 0, 32, 0, 2, 0, 29, 0,
- 2, 0, 16, 0, 2, 0, 99, 0, 0, 0,168, 5, 7, 0,169, 5,207, 0, 11, 0, 39, 0,170, 5, 7, 0,209, 1, 2, 0,171, 5,
- 2, 0, 16, 0, 4, 0,172, 5, 4, 0, 17, 0, 0, 0,173, 5, 7, 0, 88, 1, 7, 0,174, 5, 7, 0,175, 5, 7, 0, 48, 1,
-208, 0, 4, 0, 39, 0,170, 5, 4, 0, 99, 0, 4, 0,100, 0, 0, 0,173, 5,209, 0, 4, 0, 39, 0,170, 5, 4, 0, 16, 0,
- 4, 0, 99, 0, 0, 0,173, 5,210, 0, 4, 0, 39, 0,170, 5, 4, 0, 16, 0, 4, 0, 99, 0, 0, 0,173, 5,211, 0, 7, 0,
- 39, 0,170, 5, 4, 0,176, 5, 7, 0,186, 0, 2, 0,177, 5, 2, 0,178, 5, 7, 0,179, 5, 0, 0,173, 5,212, 0, 9, 0,
- 39, 0,170, 5, 2, 0, 29, 0, 2, 0,180, 5, 2, 0,204, 1, 2, 0,234, 4, 7, 0, 78, 5, 7, 0,244, 1, 87, 0, 55, 5,
- 0, 0,173, 5,213, 0, 4, 0, 39, 0,170, 5, 4, 0, 13, 2, 4, 0,181, 5, 0, 0,173, 5,214, 0, 5, 0, 39, 0,170, 5,
- 7, 0,186, 0, 4, 0,182, 5, 4, 0, 13, 2, 4, 0, 14, 2,215, 0, 6, 0, 39, 0,170, 5, 0, 0,173, 5, 7, 0, 69, 0,
- 7, 0, 48, 1, 7, 0,113, 5, 7, 0,183, 5,216, 0, 6, 0, 7, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0,
- 7, 0, 0, 3, 7, 0,184, 5,217, 0, 6, 0, 39, 0,170, 5, 4, 0,185, 5, 4, 0,186, 5, 7, 0,187, 5, 7, 0,188, 5,
- 0, 0,173, 5,218, 0, 17, 0,218, 0, 0, 0,218, 0, 1, 0, 2, 0, 16, 0, 2, 0,193, 0, 2, 0,189, 5, 2, 0, 17, 0,
- 27, 0, 42, 0, 87, 0, 55, 5, 7, 0,204, 1, 7, 0,234, 4, 7, 0,190, 5, 7, 0,191, 5, 7, 0,192, 5, 7, 0,193, 5,
- 7, 0, 56, 5, 7, 0,194, 5, 0, 0,195, 5, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
+100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,
+116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,
+116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,
+116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,
+111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101,
+ 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97,
+ 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,
+105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,
+105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,
+105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,
+114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,
+112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 98, 65, 99,116,
+105,111,110, 0, 98, 80,111,115,101, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,
+108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 82, 78, 71, 0, 83, 66, 86,101,114,116,101,
+120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104,
+ 0, 87,111,114,108,100, 0, 82, 97,100,105,111, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,
+117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116,
+ 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,
+100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,
+103, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0,
+ 66,114,117,115,104, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101,
+ 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,
+110, 0, 83, 99,117,108,112,116, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 86, 80, 97,105,110,116, 0, 84,111,
+111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103,
+ 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 98, 71, 80,100, 97,116,
+ 97, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119,
+ 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,
+105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111,
+ 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97,
+ 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 83,101,
+108,101, 99,116, 80, 97,114, 97,109,115, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,
+105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,
+101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0,
+ 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97,
+ 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0,117,105, 70,
+111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116,
+ 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,
+105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,
+101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,
+112,101, 0,117,105, 76, 97,121,111,117,116, 0, 72,101, 97,100,101,114, 0, 72,101, 97,100,101,114, 84,121,112,101, 0, 77,101,
+110,117, 0, 77,101,110,117, 84,121,112,101, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,
+101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,
+105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,
+112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,
+105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101,
+ 0, 98, 83,111,117,110,100, 0,104,100, 97,117,100,105,111, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 69,100,105,116,105,110,
+103, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,
+115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,
+115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,
+108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114,
+ 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,
+111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117,
+ 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,
+111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,
+115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,
+101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,
+114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65,
+ 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,
+111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 68, 65, 99,116,
+117, 97,116,111,114, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101,
+ 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101,
+ 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65,
+ 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,
+117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115,
+ 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,
+105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,
+114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114,
+ 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 98, 83, 97,109,112,108,101, 0, 98, 83,111,117,110,100, 76,105,115,116,101,110,
+101,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98,
+ 65,114,109, 97,116,117,114,101, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 98, 65, 99,116,105,111,110, 71,114,111,
+117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,
+111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,
+110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116,
+ 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,
+110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98,
+ 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,
+116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,
+111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,
+116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104,
+ 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,
+116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100,
+ 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,
+116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,
+111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98,
+ 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,
+111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,
+110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,
+111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0, 98, 78,111,100,101,
+ 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0,
+ 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68,
+ 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,
+101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115,
+ 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101,
+ 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101,
+ 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 84,101,120, 78,111,100,
+101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,
+114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 72, 97,105,114, 75,101,
+121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,
+105, 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,
+108,101, 69,100,105,116, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 76,105,110,107, 78,111,100,101,
+ 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101,
+ 0, 98, 71, 80, 68,108, 97,121,101,114, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,
+100,111,119, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,
+101, 0,119,109, 75,101,121,109, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77,
+ 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 70, 77,111,
+100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,
+112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115,
+ 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,
+105,115,101, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70,
+ 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,
+112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,
+121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,
+116,101, 0, 0, 84, 76, 69, 78, 0, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12,
+ 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52,
+ 2, 40, 0, 0, 0, 32, 0,140, 3, 80, 0, 92, 0, 36, 0, 56, 0, 84, 0,112, 0,124, 0, 40, 0, 16, 0, 24, 0, 40, 0,120,
+ 0, 12, 0,136, 0, 36, 4,248, 1,124, 0, 0, 0, 0, 0, 0, 0,136, 1, 24, 1, 84, 0, 24, 3, 8, 0,168, 0, 0, 0,140,
+ 0,132, 1,132, 1, 8, 0, 56, 2,112, 0, 76, 1, 60, 0, 0, 0,108, 0,104, 0,140, 0, 56, 0, 8, 0, 16, 1, 76, 0, 0,
+ 0, 0, 0, 0, 1, 24, 0, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 24, 0, 76, 0, 32,
+ 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 1, 0, 0, 32, 0, 12, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 56,
+ 0, 72, 0, 92, 0,100, 0, 72, 0,100, 0,120, 0, 68, 0, 64, 0,112, 0, 64, 0,152, 0,156, 0, 64, 0, 96, 0,108, 0,188,
+ 0,104, 0,184, 0, 56, 0, 76, 0, 0, 0,132, 0, 28, 0, 20, 0,104, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 0, 8, 0, 8,
+ 0,220, 0, 80, 1, 68, 0, 68, 0, 68, 0, 68, 0, 64, 1,164, 0,112, 0,108, 0,188, 0, 40, 0, 92, 0, 56, 0,112, 0,128,
+ 0,152, 0,208, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,104, 0, 40, 0, 28, 0,176, 0,144, 0, 52, 0, 16, 0, 72, 3,224,
+ 0, 56, 0, 16, 0, 80, 0, 16, 0,196, 0, 8, 0, 76, 0, 80, 0, 32, 0, 0, 0, 32, 1, 12, 0, 32, 0, 0, 0, 0, 0, 64,
+ 2,152, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 40, 0,136, 0, 48, 0,136, 0,196, 0, 20, 0,224, 0,204,
+ 0, 44, 0, 0, 0, 0, 0, 92, 0, 0, 0,248, 0, 12, 0, 12, 0,136, 0,184, 2,124, 2, 80, 0, 40, 0,168, 0,232, 2,136,
+ 1, 16, 0, 24, 0,192, 0, 32, 1,176, 1, 16, 0, 16, 19, 8, 0, 56, 11, 40, 0, 20, 0, 24, 0,240, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 8, 0, 0, 0,112, 0, 0, 0,236, 0, 0, 0, 32, 0, 80, 0, 28, 0, 16, 0, 8, 0, 52, 0,160, 0,240, 1,168,
+ 0,204, 1, 28, 0, 0, 0, 16, 2, 24, 0, 12, 0, 24, 0, 48, 0, 16, 0, 20, 0, 16, 0, 24, 1, 56, 0, 0, 0, 56, 0, 64,
+ 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 68, 0, 76, 0, 80, 0, 60, 0,128,
+ 0, 4, 0, 60, 0, 12, 0, 92, 0, 28, 0, 20, 0, 80, 0, 16, 0, 76, 0,104, 0, 84, 0, 28, 0, 96, 0, 60, 0, 56, 0,108,
+ 0,140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 40, 0, 0, 0, 68, 0,184, 0, 24, 1, 4, 0,120, 1,172, 0,104, 0,216, 0, 64,
+ 0, 44, 0, 64, 0,116, 0, 60, 0,104, 0, 52, 0, 44, 0, 44, 0, 68, 0, 44, 0, 64, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12,
+ 0,108, 0, 92, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0,120, 0, 32, 0,208, 0, 0, 0, 0, 0, 16,
+ 0, 40, 0, 28, 0, 12, 0, 12, 1, 16, 0, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 32,
+ 0, 12, 0, 44, 0, 20, 0, 68, 0, 24, 0, 56, 0, 72, 0,252, 1,224, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172,
+ 0,124, 0,144, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 88, 0, 0, 0, 0, 0, 88, 1, 20, 0, 16, 0, 20, 0, 8, 0, 8,
+ 0, 24, 0, 20, 0, 88, 1, 24, 0, 16, 0, 68, 1, 0, 0, 20, 0,160, 0, 88, 0, 96, 0, 88, 0, 20, 0, 56, 83, 84, 82, 67,
+ 0, 0, 1, 94, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2,
+ 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 4, 0, 5,
+ 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3,
+ 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3,
+ 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8,
+ 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6,
+ 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4,
+ 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15,
+ 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20,
+ 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25,
+ 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31,
+ 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 6,
+ 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, 31, 0, 6, 0, 32, 0, 45,
+ 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 48, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1,
+ 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 53, 0, 2, 0, 54,
+ 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 58, 0, 7, 0, 59,
+ 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, 24, 0, 64, 0, 2, 0, 46,
+ 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 67, 0, 7, 0, 61,
+ 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, 4, 0, 69, 0, 4, 0, 70, 0, 9, 0, 2, 0, 7, 0, 71,
+ 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 75, 0, 37, 0, 76,
+ 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, 36, 0, 80, 0, 27, 0, 81, 0, 2, 0, 17, 0, 2, 0, 82,
+ 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 5, 0, 27, 0, 84, 0, 2, 0, 85, 0, 2, 0, 86, 0, 2, 0, 87, 0, 4, 0, 37,
+ 0, 41, 0, 6, 0, 41, 0, 0, 0, 41, 0, 1, 0, 0, 0, 88, 0, 0, 0, 89, 0, 4, 0, 23, 0, 4, 0, 90, 0, 42, 0, 10,
+ 0, 42, 0, 0, 0, 42, 0, 1, 0, 4, 0, 91, 0, 4, 0, 92, 0, 4, 0, 93, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 94,
+ 0, 0, 0, 95, 0, 0, 0, 96, 0, 43, 0, 15, 0, 27, 0, 31, 0, 0, 0, 97, 0, 4, 0, 94, 0, 4, 0, 98, 0, 12, 0, 99,
+ 0, 41, 0,100, 0, 41, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 12, 0,104, 0, 0, 0,105, 0, 4, 0,106, 0, 4, 0,107,
+ 0, 9, 0,108, 0, 8, 0,109, 0, 44, 0, 3, 0, 4, 0,110, 0, 4, 0,111, 0, 9, 0, 2, 0, 45, 0, 21, 0, 27, 0, 31,
+ 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116,
+ 0, 7, 0,117, 0, 7, 0,118, 0, 7, 0,119, 0, 7, 0,120, 0, 7, 0,121, 0, 7, 0,122, 0, 2, 0,123, 0, 2, 0,124,
+ 0, 7, 0,125, 0, 36, 0, 80, 0, 40, 0,126, 0, 32, 0,127, 0, 46, 0, 13, 0, 4, 0,128, 0, 4, 0,129, 0, 4, 0,130,
+ 0, 4, 0,131, 0, 2, 0,132, 0, 2, 0,133, 0, 2, 0, 19, 0, 2, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,137,
+ 0, 2, 0,138, 0, 47, 0,139, 0, 48, 0, 31, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,140, 0, 49, 0,141, 0, 50, 0,142,
+ 0, 51, 0,143, 0, 2, 0,134, 0, 2, 0, 19, 0, 2, 0,144, 0, 2, 0, 17, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,145,
+ 0, 2, 0,146, 0, 2, 0,147, 0, 2, 0,148, 0, 2, 0,149, 0, 2, 0,150, 0, 2, 0,151, 0, 4, 0,152, 0, 4, 0,153,
+ 0, 44, 0,154, 0, 30, 0,155, 0, 7, 0,156, 0, 4, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 2, 0,161,
+ 0, 7, 0,162, 0, 7, 0,163, 0, 52, 0, 31, 0, 2, 0,164, 0, 2, 0,165, 0, 2, 0,166, 0, 2, 0,167, 0, 32, 0,168,
+ 0, 53, 0,169, 0, 0, 0,170, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0,173, 0, 0, 0,174, 0, 7, 0,175, 0, 7, 0,176,
+ 0, 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 2, 0,180, 0, 2, 0,181, 0, 2, 0,182, 0, 2, 0,183, 0, 7, 0,184,
+ 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0, 57, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191,
+ 0, 7, 0,192, 0, 7, 0,193, 0, 54, 0, 15, 0, 0, 0,194, 0, 9, 0,195, 0, 0, 0,196, 0, 0, 0,197, 0, 4, 0,198,
+ 0, 4, 0,199, 0, 9, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 4, 0,204, 0, 9, 0,205, 0, 9, 0,206,
+ 0, 4, 0,207, 0, 4, 0, 37, 0, 55, 0, 6, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,208, 0, 7, 0, 67,
+ 0, 4, 0, 64, 0, 56, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,209, 0, 55, 0,203, 0, 57, 0, 17,
+ 0, 32, 0,168, 0, 48, 0,210, 0, 58, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 2, 0, 17, 0, 2, 0,214, 0, 7, 0,114,
+ 0, 7, 0,115, 0, 7, 0,215, 0, 4, 0,216, 0, 2, 0,217, 0, 2, 0,218, 0, 4, 0,134, 0, 4, 0,145, 0, 2, 0,219,
+ 0, 2, 0,220, 0, 53, 0, 57, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0,221, 0, 7, 0,222, 0, 7, 0,223, 0, 7, 0,224,
+ 0, 7, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 7, 0,232,
+ 0, 7, 0,233, 0, 7, 0,234, 0, 7, 0,235, 0, 7, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 7, 0,239, 0, 7, 0,240,
+ 0, 2, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 2, 0,244, 0, 2, 0,245, 0, 2, 0,246, 0, 2, 0,247, 0, 2, 0, 19,
+ 0, 2, 0, 17, 0, 2, 0,214, 0, 7, 0,248, 0, 7, 0,249, 0, 7, 0,250, 0, 7, 0,251, 0, 2, 0,252, 0, 2, 0,253,
+ 0, 2, 0,254, 0, 2, 0,132, 0, 4, 0, 23, 0, 4, 0,129, 0, 4, 0,130, 0, 4, 0,131, 0, 7, 0,255, 0, 7, 1, 0,
+ 0, 7, 0,190, 0, 46, 1, 1, 0, 59, 1, 2, 0, 36, 0, 80, 0, 48, 0,210, 0, 54, 1, 3, 0, 56, 1, 4, 0, 57, 1, 5,
+ 0, 30, 0,155, 0, 0, 1, 6, 0, 0, 1, 7, 0, 60, 0, 8, 0, 7, 1, 8, 0, 7, 1, 9, 0, 7, 0,176, 0, 4, 0, 19,
+ 0, 7, 1, 10, 0, 7, 1, 11, 0, 7, 1, 12, 0, 32, 0, 45, 0, 61, 0, 81, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17,
+ 0, 2, 0, 19, 0, 4, 1, 13, 0, 2, 0,178, 0, 2, 1, 14, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187,
+ 0, 7, 1, 15, 0, 7, 1, 16, 0, 7, 1, 17, 0, 7, 1, 18, 0, 7, 1, 19, 0, 7, 1, 20, 0, 7, 1, 21, 0, 7, 1, 22,
+ 0, 7, 1, 23, 0, 7, 1, 24, 0, 7, 1, 25, 0, 62, 1, 26, 0, 2, 1, 27, 0, 2, 0, 70, 0, 7, 0,114, 0, 7, 0,115,
+ 0, 7, 1, 28, 0, 7, 1, 29, 0, 7, 1, 30, 0, 2, 1, 31, 0, 2, 1, 32, 0, 2, 1, 33, 0, 2, 1, 34, 0, 0, 1, 35,
+ 0, 0, 1, 36, 0, 2, 1, 37, 0, 2, 1, 38, 0, 2, 1, 39, 0, 2, 1, 40, 0, 2, 1, 41, 0, 7, 1, 42, 0, 7, 1, 43,
+ 0, 7, 1, 44, 0, 7, 1, 45, 0, 2, 1, 46, 0, 2, 0, 43, 0, 2, 1, 47, 0, 2, 1, 48, 0, 2, 1, 49, 0, 2, 1, 50,
+ 0, 7, 1, 51, 0, 7, 1, 52, 0, 7, 1, 53, 0, 7, 1, 54, 0, 7, 1, 55, 0, 7, 1, 56, 0, 7, 1, 57, 0, 7, 1, 58,
+ 0, 7, 1, 59, 0, 7, 1, 60, 0, 7, 1, 61, 0, 7, 1, 62, 0, 2, 1, 63, 0, 2, 1, 64, 0, 4, 1, 65, 0, 4, 1, 66,
+ 0, 2, 1, 67, 0, 2, 1, 68, 0, 2, 1, 69, 0, 2, 1, 70, 0, 7, 1, 71, 0, 7, 1, 72, 0, 7, 1, 73, 0, 7, 1, 74,
+ 0, 2, 1, 75, 0, 2, 1, 76, 0, 52, 1, 77, 0, 36, 0, 80, 0, 30, 0,155, 0, 40, 0,126, 0, 63, 0, 2, 0, 27, 0, 31,
+ 0, 36, 0, 80, 0, 64, 0,130, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 1, 78, 0, 2, 0, 19, 0, 7, 0,184, 0, 7, 0,185,
+ 0, 7, 0,186, 0, 7, 1, 79, 0, 7, 1, 80, 0, 7, 1, 81, 0, 7, 1, 82, 0, 7, 1, 83, 0, 7, 1, 84, 0, 7, 1, 85,
+ 0, 7, 1, 86, 0, 7, 1, 87, 0, 7, 1, 88, 0, 7, 1, 89, 0, 7, 1, 90, 0, 7, 1, 91, 0, 7, 1, 92, 0, 7, 1, 93,
+ 0, 7, 1, 94, 0, 7, 1, 95, 0, 7, 1, 96, 0, 7, 1, 97, 0, 7, 1, 98, 0, 7, 1, 99, 0, 7, 1,100, 0, 7, 1,101,
+ 0, 7, 1,102, 0, 7, 1,103, 0, 7, 1,104, 0, 7, 1,105, 0, 2, 1,106, 0, 2, 1,107, 0, 2, 1,108, 0, 0, 1,109,
+ 0, 0, 1,110, 0, 7, 1,111, 0, 7, 1,112, 0, 2, 1,113, 0, 2, 1,114, 0, 7, 1,115, 0, 7, 1,116, 0, 7, 1,117,
+ 0, 7, 1,118, 0, 2, 1,119, 0, 2, 1,120, 0, 4, 1, 13, 0, 4, 1,121, 0, 2, 1,122, 0, 2, 1,123, 0, 2, 1,124,
+ 0, 2, 1,125, 0, 7, 1,126, 0, 7, 1,127, 0, 7, 1,128, 0, 7, 1,129, 0, 7, 1,130, 0, 7, 1,131, 0, 7, 1,132,
+ 0, 7, 1,133, 0, 7, 1,134, 0, 7, 1,135, 0, 0, 1,136, 0, 7, 1,137, 0, 7, 1,138, 0, 7, 1,139, 0, 4, 1,140,
+ 0, 0, 1,141, 0, 0, 1, 47, 0, 0, 1,142, 0, 0, 1, 6, 0, 2, 1,143, 0, 2, 1,144, 0, 2, 1, 64, 0, 2, 1,145,
+ 0, 2, 1,146, 0, 2, 1,147, 0, 7, 1,148, 0, 7, 1,149, 0, 7, 1,150, 0, 7, 1,151, 0, 7, 1,152, 0, 2, 0,164,
+ 0, 2, 0,165, 0, 56, 1,153, 0, 56, 1,154, 0, 0, 1,155, 0, 0, 1,156, 0, 0, 1,157, 0, 0, 1,158, 0, 2, 1,159,
+ 0, 2, 1,160, 0, 7, 1,161, 0, 7, 1,162, 0, 52, 1, 77, 0, 59, 1, 2, 0, 36, 0, 80, 0, 65, 1,163, 0, 30, 0,155,
+ 0, 7, 1,164, 0, 7, 1,165, 0, 7, 1,166, 0, 7, 1,167, 0, 7, 1,168, 0, 2, 1,169, 0, 2, 0, 70, 0, 7, 1,170,
+ 0, 7, 1,171, 0, 7, 1,172, 0, 7, 1,173, 0, 7, 1,174, 0, 7, 1,175, 0, 7, 1,176, 0, 7, 1,177, 0, 7, 1,178,
+ 0, 2, 1,179, 0, 2, 1,180, 0, 7, 1,181, 0, 7, 1,182, 0, 7, 1,183, 0, 7, 1,184, 0, 7, 1,185, 0, 4, 1,186,
+ 0, 4, 1,187, 0, 4, 1,188, 0, 40, 0,126, 0, 12, 1,189, 0, 66, 0, 4, 0, 27, 0, 31, 0, 0, 1,190, 0, 67, 0, 2,
+ 0, 44, 0,154, 0, 68, 0, 26, 0, 68, 0, 0, 0, 68, 0, 1, 0, 69, 1,191, 0, 4, 1,192, 0, 4, 1,193, 0, 4, 1,194,
+ 0, 4, 1,195, 0, 4, 1,196, 0, 4, 1,197, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 1,198, 0, 2, 1,199, 0, 7, 0, 5,
+ 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 1,200, 0, 7, 1,201, 0, 7, 1,202, 0, 7, 1,203, 0, 7, 1,204, 0, 7, 1,205,
+ 0, 7, 1,206, 0, 7, 0, 23, 0, 7, 1,207, 0, 7, 1,208, 0, 70, 0, 16, 0, 27, 0, 31, 0, 69, 1,191, 0, 12, 1,209,
+ 0, 12, 1,210, 0, 12, 1,211, 0, 36, 0, 80, 0, 64, 1,212, 0, 2, 0, 19, 0, 2, 1,213, 0, 4, 0,177, 0, 7, 1, 8,
+ 0, 7, 0,176, 0, 7, 1, 9, 0, 7, 1,214, 0, 7, 1,215, 0, 7, 1,216, 0, 35, 0, 11, 0, 7, 1,217, 0, 7, 1,218,
+ 0, 7, 1,219, 0, 7, 1,220, 0, 2, 0, 55, 0, 0, 1,221, 0, 0, 1,222, 0, 0, 1,223, 0, 0, 1,224, 0, 0, 1,225,
+ 0, 0, 1,226, 0, 34, 0, 7, 0, 7, 1,227, 0, 7, 1,218, 0, 7, 1,219, 0, 2, 1,223, 0, 2, 1,226, 0, 7, 1,220,
+ 0, 7, 0, 37, 0, 71, 0, 21, 0, 71, 0, 0, 0, 71, 0, 1, 0, 2, 0, 17, 0, 2, 1,228, 0, 2, 1,226, 0, 2, 0, 19,
+ 0, 2, 1,229, 0, 2, 1,230, 0, 2, 1,231, 0, 2, 1,232, 0, 2, 1,233, 0, 2, 1,234, 0, 2, 1,235, 0, 2, 1,236,
+ 0, 7, 1,237, 0, 7, 1,238, 0, 34, 0, 49, 0, 35, 0, 50, 0, 2, 1,239, 0, 2, 1,240, 0, 4, 1,241, 0, 72, 0, 5,
+ 0, 2, 1,242, 0, 2, 1,228, 0, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 73, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6,
+ 0, 7, 0, 8, 0, 7, 1,243, 0, 74, 0, 62, 0, 27, 0, 31, 0, 39, 0, 75, 0, 69, 1,191, 0, 12, 1,244, 0, 12, 1,210,
+ 0, 12, 1,245, 0, 32, 1,246, 0, 32, 1,247, 0, 32, 1,248, 0, 36, 0, 80, 0, 75, 1,249, 0, 38, 1,250, 0, 64, 1,212,
+ 0, 12, 1,251, 0, 7, 1, 8, 0, 7, 0,176, 0, 7, 1, 9, 0, 4, 0,177, 0, 2, 1,252, 0, 2, 1,213, 0, 2, 0, 19,
+ 0, 2, 1,253, 0, 7, 1,254, 0, 7, 1,255, 0, 7, 2, 0, 0, 2, 1,231, 0, 2, 1,232, 0, 2, 2, 1, 0, 2, 2, 2,
+ 0, 4, 2, 3, 0, 34, 2, 4, 0, 2, 0, 23, 0, 2, 0, 99, 0, 2, 0, 67, 0, 2, 2, 5, 0, 7, 2, 6, 0, 7, 2, 7,
+ 0, 7, 2, 8, 0, 7, 2, 9, 0, 7, 2, 10, 0, 7, 2, 11, 0, 7, 2, 12, 0, 7, 2, 13, 0, 7, 2, 14, 0, 7, 2, 15,
+ 0, 0, 2, 16, 0, 76, 2, 17, 0, 77, 2, 18, 0, 0, 2, 19, 0, 66, 2, 20, 0, 66, 2, 21, 0, 66, 2, 22, 0, 66, 2, 23,
+ 0, 4, 2, 24, 0, 4, 2, 25, 0, 4, 2, 26, 0, 4, 0, 37, 0, 73, 2, 27, 0, 4, 2, 28, 0, 4, 2, 29, 0, 72, 2, 30,
+ 0, 72, 2, 31, 0, 78, 0, 39, 0, 27, 0, 31, 0, 69, 1,191, 0, 12, 2, 32, 0, 36, 0, 80, 0, 38, 1,250, 0, 64, 1,212,
+ 0, 79, 2, 33, 0, 80, 2, 34, 0, 81, 2, 35, 0, 82, 2, 36, 0, 83, 2, 37, 0, 84, 2, 38, 0, 85, 2, 39, 0, 86, 2, 40,
+ 0, 78, 2, 41, 0, 87, 2, 42, 0, 88, 2, 43, 0, 89, 2, 44, 0, 89, 2, 45, 0, 89, 2, 46, 0, 4, 0, 54, 0, 4, 2, 47,
+ 0, 4, 2, 48, 0, 4, 2, 49, 0, 4, 2, 50, 0, 4, 0,177, 0, 7, 1, 8, 0, 7, 0,176, 0, 7, 1, 9, 0, 7, 2, 51,
+ 0, 4, 2, 52, 0, 2, 2, 53, 0, 2, 0, 19, 0, 2, 2, 54, 0, 2, 2, 55, 0, 2, 1,213, 0, 2, 2, 56, 0, 90, 2, 57,
+ 0, 91, 2, 58, 0, 81, 0, 8, 0, 9, 2, 59, 0, 7, 2, 60, 0, 4, 2, 61, 0, 0, 0, 19, 0, 0, 2, 62, 0, 2, 1, 13,
+ 0, 2, 2, 63, 0, 2, 2, 64, 0, 79, 0, 8, 0, 4, 2, 65, 0, 4, 2, 66, 0, 4, 2, 67, 0, 4, 2, 68, 0, 0, 0, 37,
+ 0, 0, 1,228, 0, 0, 2, 69, 0, 0, 0, 19, 0, 83, 0, 5, 0, 4, 2, 65, 0, 4, 2, 66, 0, 0, 2, 70, 0, 0, 2, 71,
+ 0, 2, 0, 19, 0, 92, 0, 2, 0, 4, 2, 72, 0, 7, 1,219, 0, 84, 0, 3, 0, 92, 2, 73, 0, 4, 2, 74, 0, 4, 0, 19,
+ 0, 82, 0, 6, 0, 7, 2, 75, 0, 2, 2, 76, 0, 0, 0, 19, 0, 0, 1,228, 0, 0, 2, 71, 0, 0, 2, 77, 0, 85, 0, 4,
+ 0, 0, 0,208, 0, 0, 0,184, 0, 0, 0,185, 0, 0, 0,186, 0, 93, 0, 6, 0, 48, 2, 59, 0, 0, 0, 19, 0, 0, 2, 62,
+ 0, 2, 1, 13, 0, 2, 2, 63, 0, 2, 2, 64, 0, 94, 0, 1, 0, 7, 2, 78, 0, 95, 0, 5, 0, 0, 0,208, 0, 0, 0,184,
+ 0, 0, 0,185, 0, 0, 0,186, 0, 4, 0, 37, 0, 86, 0, 1, 0, 7, 2, 79, 0, 87, 0, 2, 0, 4, 2, 80, 0, 4, 0, 17,
+ 0, 80, 0, 7, 0, 7, 2, 60, 0, 48, 2, 59, 0, 0, 0, 19, 0, 0, 2, 62, 0, 2, 1, 13, 0, 2, 2, 63, 0, 2, 2, 64,
+ 0, 96, 0, 1, 0, 7, 2, 81, 0, 97, 0, 1, 0, 4, 2, 82, 0, 98, 0, 1, 0, 0, 2, 83, 0, 99, 0, 1, 0, 7, 2, 60,
+ 0,100, 0, 3, 0, 4, 2, 84, 0, 0, 0, 96, 0, 7, 2, 85, 0,102, 0, 4, 0, 7, 0,208, 0, 7, 0,184, 0, 7, 0,185,
+ 0, 7, 0,186, 0,103, 0, 1, 0,102, 2, 61, 0,104, 0, 5, 0, 4, 2, 86, 0, 4, 2, 87, 0, 0, 0, 19, 0, 0, 1,228,
+ 0, 0, 0,183, 0,105, 0, 2, 0, 4, 2, 88, 0, 4, 2, 87, 0,106, 0, 10, 0,106, 0, 0, 0,106, 0, 1, 0,104, 2, 89,
+ 0,103, 2, 90, 0,105, 2, 91, 0, 4, 0, 54, 0, 4, 2, 48, 0, 4, 2, 47, 0, 4, 0, 37, 0, 82, 2, 92, 0, 90, 0, 14,
+ 0, 12, 2, 93, 0, 82, 2, 92, 0, 0, 2, 94, 0, 0, 2, 95, 0, 0, 2, 96, 0, 0, 2, 97, 0, 0, 2, 98, 0, 0, 2, 99,
+ 0, 0, 2,100, 0, 0, 0, 19, 0, 89, 2, 44, 0, 89, 2, 46, 0, 2, 2,101, 0, 0, 2,102, 0, 91, 0, 8, 0, 4, 2,103,
+ 0, 4, 2,104, 0, 79, 2,105, 0, 83, 2,106, 0, 4, 2, 48, 0, 4, 2, 47, 0, 4, 0, 54, 0, 4, 0, 37, 0,107, 0, 7,
+ 0,107, 0, 0, 0,107, 0, 1, 0, 4, 0, 17, 0, 4, 1, 13, 0, 0, 0, 20, 0, 47, 0,139, 0, 0, 2,107, 0,108, 0, 7,
+ 0,107, 2,108, 0, 2, 2,109, 0, 2, 2, 93, 0, 2, 2,110, 0, 2, 0, 94, 0, 9, 2,111, 0, 9, 2,112, 0,109, 0, 3,
+ 0,107, 2,108, 0, 32, 0,168, 0, 0, 0, 20, 0,110, 0, 5, 0,107, 2,108, 0, 32, 0,168, 0, 0, 0, 20, 0, 2, 2,113,
+ 0, 0, 2,114, 0,111, 0, 5, 0,107, 2,108, 0, 7, 0, 92, 0, 7, 2,115, 0, 4, 2,116, 0, 4, 2,117, 0,112, 0, 5,
+ 0,107, 2,108, 0, 32, 2,118, 0, 0, 0, 72, 0, 4, 1, 13, 0, 4, 0, 19, 0,113, 0, 13, 0,107, 2,108, 0, 32, 2,119,
+ 0, 32, 2,120, 0, 32, 2,121, 0, 32, 2,122, 0, 7, 2,123, 0, 7, 2,124, 0, 7, 2,115, 0, 7, 2,125, 0, 4, 2,126,
+ 0, 4, 2,127, 0, 4, 0, 94, 0, 4, 2,128, 0,114, 0, 5, 0,107, 2,108, 0, 2, 2,129, 0, 2, 0, 19, 0, 7, 2,130,
+ 0, 32, 2,131, 0,115, 0, 3, 0,107, 2,108, 0, 7, 2,132, 0, 4, 0, 94, 0,116, 0, 10, 0,107, 2,108, 0, 7, 2,133,
+ 0, 4, 2,134, 0, 4, 0, 37, 0, 2, 0, 94, 0, 2, 2,135, 0, 2, 2,136, 0, 2, 2,137, 0, 7, 2,138, 0, 0, 2,139,
+ 0,117, 0, 3, 0,107, 2,108, 0, 7, 0, 37, 0, 4, 0, 17, 0,118, 0, 11, 0,107, 2,108, 0, 53, 2,140, 0, 7, 2,141,
+ 0, 4, 2,142, 0, 0, 2,139, 0, 7, 2,143, 0, 4, 2,144, 0, 32, 2,145, 0, 0, 2,146, 0, 4, 2,147, 0, 4, 0, 37,
+ 0,119, 0, 10, 0,107, 2,108, 0, 32, 2,148, 0, 48, 2,149, 0, 4, 0, 94, 0, 4, 2,150, 0, 7, 2,151, 0, 7, 2,152,
+ 0, 0, 2,146, 0, 4, 2,147, 0, 4, 0, 37, 0,120, 0, 3, 0,107, 2,108, 0, 7, 2,153, 0, 4, 2,154, 0,121, 0, 5,
+ 0,107, 2,108, 0, 7, 2,155, 0, 0, 2,139, 0, 2, 0, 19, 0, 2, 2,156, 0,122, 0, 8, 0,107, 2,108, 0, 32, 0,168,
+ 0, 7, 2,155, 0, 7, 1,220, 0, 7, 0,110, 0, 0, 2,139, 0, 2, 0, 19, 0, 2, 0, 17, 0,123, 0, 21, 0,107, 2,108,
+ 0, 32, 2,157, 0, 0, 2,139, 0, 53, 2,140, 0, 32, 2,145, 0, 2, 0, 19, 0, 2, 0, 37, 0, 7, 2,158, 0, 7, 2,159,
+ 0, 7, 2,160, 0, 7, 1,254, 0, 7, 2,161, 0, 7, 2,162, 0, 7, 2,163, 0, 7, 2,164, 0, 4, 2,144, 0, 4, 2,147,
+ 0, 0, 2,146, 0, 7, 2,165, 0, 7, 2,166, 0, 7, 0, 43, 0,124, 0, 7, 0,107, 2,108, 0, 2, 2,167, 0, 2, 2,168,
+ 0, 4, 0, 70, 0, 32, 0,168, 0, 7, 2,169, 0, 0, 2,139, 0,125, 0, 9, 0,107, 2,108, 0, 32, 0,168, 0, 7, 2,170,
+ 0, 7, 2,171, 0, 7, 2,164, 0, 4, 2,172, 0, 4, 2,173, 0, 7, 2,174, 0, 0, 0, 20, 0,126, 0, 1, 0,107, 2,108,
+ 0,127, 0, 6, 0,107, 2,108, 0, 47, 0,139, 0,128, 2,175, 0,129, 2,176, 0,130, 2,177, 0,131, 2,178, 0,132, 0, 14,
+ 0,107, 2,108, 0, 82, 2,179, 0, 82, 2,180, 0, 82, 2,181, 0, 82, 2,182, 0, 82, 2,183, 0, 82, 2,184, 0, 79, 2,185,
+ 0, 4, 2,186, 0, 4, 2,187, 0, 2, 2,188, 0, 2, 0, 37, 0, 7, 2,189, 0,133, 2,190, 0,134, 0, 3, 0,107, 2,108,
+ 0,135, 2,191, 0,136, 2,190, 0,137, 0, 4, 0,107, 2,108, 0, 32, 0,168, 0, 4, 2,192, 0, 4, 0, 37, 0,138, 0, 2,
+ 0, 4, 2,193, 0, 7, 1,219, 0,139, 0, 2, 0, 4, 0,130, 0, 4, 2,194, 0,140, 0, 20, 0,107, 2,108, 0, 32, 0,168,
+ 0, 0, 2,139, 0, 2, 2,195, 0, 2, 2,196, 0, 2, 0, 19, 0, 2, 0, 37, 0, 7, 2,197, 0, 7, 2,198, 0, 4, 0, 54,
+ 0, 4, 2,199, 0,139, 2,200, 0,138, 2,201, 0, 4, 2,202, 0, 4, 2,203, 0, 4, 2,204, 0, 4, 2,194, 0, 7, 2,205,
+ 0, 7, 2,206, 0, 7, 2,207, 0,141, 0, 8, 0,107, 2,108, 0,142, 2,208, 0,135, 2,191, 0, 4, 2,209, 0, 4, 2,210,
+ 0, 4, 2,211, 0, 2, 0, 19, 0, 2, 0, 57, 0,143, 0, 5, 0,107, 2,108, 0, 32, 0, 45, 0, 2, 2,212, 0, 2, 0, 19,
+ 0, 2, 2,213, 0,144, 0, 5, 0,107, 2,108, 0, 4, 2,214, 0, 2, 0, 19, 0, 2, 2,215, 0, 7, 2,216, 0,145, 0, 7,
+ 0,107, 2,108, 0, 82, 2,217, 0, 4, 2,218, 0, 0, 2,219, 0, 0, 2,220, 0, 0, 2,221, 0, 0, 2,222, 0,146, 0, 3,
+ 0,107, 2,108, 0,147, 2,223, 0,131, 2,178, 0,148, 0, 10, 0,107, 2,108, 0, 32, 2,224, 0, 32, 2,225, 0, 0, 2,226,
+ 0, 7, 2,227, 0, 2, 2,228, 0, 2, 2,229, 0, 0, 2,230, 0, 0, 2,231, 0, 0, 2,114, 0,149, 0, 9, 0,107, 2,108,
+ 0, 32, 2,232, 0, 0, 2,226, 0, 7, 2,233, 0, 7, 2,234, 0, 0, 1, 13, 0, 0, 2,129, 0, 0, 2,235, 0, 0, 0, 37,
+ 0,150, 0, 27, 0, 27, 0, 31, 0, 2, 1,229, 0, 2, 1,230, 0, 2, 2,236, 0, 2, 0, 19, 0, 2, 2,237, 0, 2, 2,238,
+ 0, 2, 2,239, 0, 2, 0, 70, 0, 0, 2,240, 0, 0, 2,241, 0, 0, 2,242, 0, 0, 0, 17, 0, 4, 0, 37, 0, 7, 2,243,
+ 0, 7, 2,244, 0, 7, 2,245, 0, 7, 2,246, 0, 7, 2,247, 0, 7, 2,248, 0, 34, 2,249, 0, 36, 0, 80, 0, 38, 1,250,
+ 0, 84, 2, 38, 0, 7, 2,250, 0, 7, 2,251, 0,150, 2,252, 0,151, 0, 3, 0,151, 0, 0, 0,151, 0, 1, 0, 0, 0, 20,
+ 0, 69, 0, 3, 0, 7, 2,253, 0, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,111, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17,
+ 0, 2, 2,254, 0, 4, 2,255, 0, 4, 3, 0, 0, 4, 3, 1, 0, 0, 3, 2, 0, 32, 0, 38, 0, 32, 3, 3, 0, 32, 3, 4,
+ 0, 32, 3, 5, 0, 32, 3, 6, 0, 36, 0, 80, 0, 75, 1,249, 0, 69, 1,191, 0,152, 3, 7, 0,152, 3, 8, 0,153, 3, 9,
+ 0, 9, 0, 2, 0, 12, 3, 10, 0, 12, 2, 32, 0, 12, 1,210, 0, 12, 3, 11, 0, 12, 3, 12, 0, 64, 1,212, 0, 7, 1, 8,
+ 0, 7, 3, 13, 0, 7, 3, 14, 0, 7, 0,176, 0, 7, 3, 15, 0, 7, 1, 9, 0, 7, 3, 16, 0, 7, 3, 17, 0, 7, 2,170,
+ 0, 7, 3, 18, 0, 7, 0,212, 0, 4, 3, 19, 0, 2, 0, 19, 0, 2, 3, 20, 0, 2, 3, 21, 0, 2, 3, 22, 0, 2, 3, 23,
+ 0, 2, 3, 24, 0, 2, 3, 25, 0, 2, 3, 26, 0, 2, 3, 27, 0, 2, 3, 28, 0, 2, 3, 29, 0, 2, 3, 30, 0, 4, 3, 31,
+ 0, 4, 3, 32, 0, 4, 3, 33, 0, 4, 3, 34, 0, 7, 3, 35, 0, 7, 3, 36, 0, 7, 3, 37, 0, 7, 3, 38, 0, 7, 3, 39,
+ 0, 7, 3, 40, 0, 7, 3, 41, 0, 7, 3, 42, 0, 7, 3, 43, 0, 7, 3, 44, 0, 7, 3, 45, 0, 7, 1,160, 0, 0, 3, 46,
+ 0, 0, 3, 47, 0, 0, 1,213, 0, 0, 3, 48, 0, 0, 3, 49, 0, 0, 3, 50, 0, 7, 3, 51, 0, 7, 3, 52, 0, 40, 0,126,
+ 0, 12, 3, 53, 0, 12, 3, 54, 0, 12, 3, 55, 0, 12, 3, 56, 0, 7, 3, 57, 0, 2, 2, 80, 0, 2, 3, 58, 0, 7, 2, 61,
+ 0, 4, 3, 59, 0, 4, 3, 60, 0,154, 3, 61, 0, 2, 3, 62, 0, 2, 0,219, 0, 7, 3, 63, 0, 12, 3, 64, 0, 12, 3, 65,
+ 0, 12, 3, 66, 0, 12, 3, 67, 0,155, 3, 68, 0,156, 3, 69, 0, 65, 3, 70, 0, 2, 3, 71, 0, 2, 3, 72, 0, 2, 3, 73,
+ 0, 2, 3, 74, 0, 7, 2, 53, 0, 2, 3, 75, 0, 2, 3, 76, 0,147, 3, 77, 0,135, 3, 78, 0,135, 3, 79, 0, 4, 3, 80,
+ 0, 4, 3, 81, 0, 4, 3, 82, 0, 4, 0, 70, 0, 12, 3, 83, 0,157, 0, 14, 0,157, 0, 0, 0,157, 0, 1, 0, 32, 0, 38,
+ 0, 7, 2,170, 0, 7, 1, 10, 0, 7, 2,171, 0, 7, 2,164, 0, 0, 0, 20, 0, 4, 2,172, 0, 4, 2,173, 0, 4, 3, 84,
+ 0, 2, 0, 17, 0, 2, 3, 85, 0, 7, 2,174, 0,155, 0, 36, 0, 2, 3, 86, 0, 2, 3, 87, 0, 2, 0, 19, 0, 2, 2,164,
+ 0, 7, 3, 88, 0, 7, 3, 89, 0, 7, 3, 90, 0, 7, 3, 91, 0, 7, 3, 92, 0, 7, 3, 93, 0, 7, 3, 94, 0, 7, 3, 95,
+ 0, 7, 3, 96, 0, 7, 3, 97, 0, 7, 3, 98, 0, 7, 3, 99, 0, 7, 3,100, 0, 7, 3,101, 0, 7, 3,102, 0, 7, 3,103,
+ 0, 7, 3,104, 0, 7, 3,105, 0, 7, 3,106, 0, 7, 3,107, 0, 7, 3,108, 0, 7, 3,109, 0, 7, 3,110, 0, 7, 3,111,
+ 0, 2, 3,112, 0, 2, 3,113, 0, 2, 3,114, 0, 2, 3,115, 0, 53, 0,169, 0,158, 3,116, 0, 7, 3,117, 0, 4, 0, 37,
+ 0,131, 0, 5, 0, 4, 0, 19, 0, 4, 3,118, 0, 4, 3,119, 0, 4, 3,120, 0, 4, 3,121, 0,159, 0, 1, 0, 7, 1,227,
+ 0,154, 0, 28, 0, 4, 0, 19, 0, 7, 3,122, 0, 7, 3,123, 0, 7, 3,124, 0, 4, 3,125, 0, 4, 3,126, 0, 4, 3,127,
+ 0, 4, 3,128, 0, 7, 3,129, 0, 7, 3,130, 0, 7, 3,131, 0, 7, 3,132, 0, 7, 3,133, 0, 7, 3,134, 0, 7, 3,135,
+ 0, 7, 3,136, 0, 7, 3,137, 0, 7, 3,138, 0, 7, 3,139, 0, 7, 3,140, 0, 7, 3,141, 0, 7, 3,142, 0, 7, 3,143,
+ 0, 7, 3,144, 0, 7, 3,145, 0, 7, 3,146, 0, 4, 3,147, 0, 4, 3,148, 0,156, 0, 44, 0,142, 3,149, 0, 4, 3,150,
+ 0, 4, 3,151, 0,160, 3,152, 0,161, 3,153, 0, 7, 0, 37, 0, 7, 3,154, 0, 7, 3,155, 0, 7, 3,156, 0, 7, 3,157,
+ 0, 7, 3,158, 0, 7, 3,159, 0, 7, 3,160, 0, 7, 3,161, 0, 7, 3,162, 0, 7, 3,163, 0, 2, 3,164, 0, 2, 3,165,
+ 0, 7, 3,166, 0, 7, 3,167, 0, 4, 0,131, 0, 4, 3,168, 0, 4, 3,169, 0, 2, 3,170, 0, 2, 3,171, 0,159, 3,172,
+ 0, 4, 3,173, 0, 4, 0, 82, 0, 7, 3,174, 0, 7, 3,175, 0, 7, 3,176, 0, 7, 3,177, 0, 2, 3,178, 0, 2, 3,179,
+ 0, 2, 3,180, 0, 2, 3,181, 0, 2, 3,182, 0, 2, 3,183, 0, 2, 3,184, 0, 2, 3,185, 0,162, 3,186, 0, 7, 3,187,
+ 0, 7, 3,188, 0,131, 3,189, 0,147, 0, 48, 0, 2, 0, 17, 0, 2, 3,190, 0, 2, 3,191, 0, 2, 3,192, 0, 7, 3,193,
+ 0, 2, 3,194, 0, 2, 3,195, 0, 7, 3,196, 0, 2, 3,197, 0, 2, 3,198, 0, 7, 3,199, 0, 7, 3,200, 0, 7, 3,201,
+ 0, 7, 3,202, 0, 7, 3,203, 0, 7, 3,204, 0, 4, 3,205, 0, 7, 3,206, 0, 7, 3,207, 0, 7, 3,208, 0, 78, 3,209,
+ 0, 78, 3,210, 0, 78, 3,211, 0, 0, 3,212, 0, 7, 3,213, 0, 7, 3,214, 0, 36, 0, 80, 0, 2, 3,215, 0, 0, 3,216,
+ 0, 0, 3,217, 0, 7, 3,218, 0, 4, 3,219, 0, 7, 3,220, 0, 7, 3,221, 0, 4, 3,222, 0, 4, 0, 19, 0, 7, 3,223,
+ 0, 7, 3,224, 0, 7, 3,225, 0, 82, 3,226, 0, 7, 3,227, 0, 7, 3,228, 0, 7, 3,229, 0, 7, 3,230, 0, 7, 3,231,
+ 0, 7, 3,232, 0, 7, 3,233, 0, 4, 3,234, 0,163, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,178, 0, 2, 1, 14,
+ 0, 2, 1, 47, 0, 2, 3,235, 0, 7, 3,236, 0, 7, 3,237, 0, 7, 3,238, 0, 7, 3,239, 0, 7, 3,240, 0, 7, 3,241,
+ 0, 7, 3,242, 0, 7, 3,243, 0, 7, 1, 85, 0, 7, 1, 87, 0, 7, 1, 86, 0, 7, 3,244, 0, 4, 3,245, 0, 7, 3,246,
+ 0, 7, 3,247, 0, 7, 3,248, 0, 7, 3,249, 0, 7, 3,250, 0, 7, 3,251, 0, 7, 3,252, 0, 2, 3,253, 0, 2, 1, 13,
+ 0, 2, 3,254, 0, 2, 3,255, 0, 7, 4, 0, 0, 7, 4, 1, 0, 7, 4, 2, 0, 7, 4, 3, 0, 7, 4, 4, 0, 7, 4, 5,
+ 0, 7, 4, 6, 0, 7, 4, 7, 0, 7, 4, 8, 0, 7, 4, 9, 0, 7, 4, 10, 0, 7, 4, 11, 0, 2, 4, 12, 0, 2, 4, 13,
+ 0, 2, 4, 14, 0, 2, 4, 15, 0, 7, 4, 16, 0, 7, 4, 17, 0, 7, 4, 18, 0, 7, 4, 19, 0, 2, 4, 20, 0, 2, 4, 21,
+ 0, 2, 4, 22, 0, 2, 4, 23, 0, 7, 4, 24, 0, 7, 4, 25, 0, 7, 4, 26, 0, 7, 4, 27, 0, 2, 4, 28, 0, 2, 4, 29,
+ 0, 2, 4, 30, 0, 2, 0, 19, 0, 7, 4, 31, 0, 7, 4, 32, 0, 36, 0, 80, 0, 52, 1, 77, 0, 30, 0,155, 0, 40, 0,126,
+ 0,164, 0, 16, 0, 2, 4, 33, 0, 2, 4, 34, 0, 2, 4, 35, 0, 2, 0, 19, 0, 2, 4, 36, 0, 2, 4, 37, 0, 2, 4, 38,
+ 0, 2, 4, 39, 0, 2, 4, 40, 0, 2, 4, 41, 0, 2, 4, 42, 0, 2, 4, 43, 0, 4, 4, 44, 0, 7, 4, 45, 0, 7, 4, 46,
+ 0, 7, 4, 47, 0,165, 0, 8, 0,165, 0, 0, 0,165, 0, 1, 0, 4, 3, 19, 0, 4, 4, 48, 0, 4, 0, 19, 0, 2, 4, 49,
+ 0, 2, 4, 50, 0, 32, 0,168, 0,166, 0, 13, 0, 9, 4, 51, 0, 9, 4, 52, 0, 4, 4, 53, 0, 4, 4, 54, 0, 4, 4, 55,
+ 0, 4, 4, 56, 0, 4, 4, 57, 0, 4, 4, 58, 0, 4, 4, 59, 0, 4, 4, 60, 0, 4, 4, 61, 0, 4, 0, 37, 0, 0, 4, 62,
+ 0,167, 0, 5, 0, 9, 4, 63, 0, 9, 4, 64, 0, 4, 4, 65, 0, 4, 0, 70, 0, 0, 4, 66, 0,168, 0, 13, 0, 4, 0, 17,
+ 0, 4, 4, 67, 0, 4, 4, 68, 0, 4, 4, 69, 0, 4, 4, 70, 0, 4, 4, 71, 0, 4, 0, 94, 0, 4, 4, 72, 0, 4, 4, 73,
+ 0, 4, 4, 74, 0, 4, 4, 75, 0, 4, 4, 76, 0, 26, 0, 30, 0,169, 0, 4, 0, 4, 4, 77, 0, 7, 4, 78, 0, 2, 0, 19,
+ 0, 2, 2, 77, 0,170, 0, 11, 0,170, 0, 0, 0,170, 0, 1, 0, 0, 0, 20, 0, 64, 4, 79, 0, 65, 4, 80, 0, 4, 3, 19,
+ 0, 4, 4, 81, 0, 4, 4, 82, 0, 4, 0, 37, 0, 4, 4, 83, 0, 4, 4, 84, 0,171, 0,131, 0,166, 4, 85, 0,167, 4, 86,
+ 0,168, 4, 87, 0,169, 4, 88, 0, 4, 4, 89, 0, 4, 0,131, 0, 4, 3,168, 0, 4, 4, 90, 0, 4, 4, 91, 0, 4, 4, 92,
+ 0, 4, 4, 93, 0, 2, 0, 19, 0, 2, 4, 94, 0, 7, 3, 36, 0, 7, 4, 95, 0, 7, 4, 96, 0, 7, 4, 97, 0, 7, 4, 98,
+ 0, 7, 4, 99, 0, 2, 4,100, 0, 2, 4,101, 0, 2, 4,102, 0, 2, 4,103, 0, 2, 0,218, 0, 2, 4,104, 0, 2, 4,105,
+ 0, 2, 3,115, 0, 2, 4,106, 0, 2, 4,107, 0, 2, 1, 34, 0, 2, 0,110, 0, 2, 4,108, 0, 2, 4,109, 0, 2, 4,110,
+ 0, 2, 4,111, 0, 2, 4,112, 0, 2, 4,113, 0, 2, 4,114, 0, 2, 4,115, 0, 2, 4,116, 0, 2, 1, 35, 0, 2, 4,117,
+ 0, 2, 4,118, 0, 2, 4,119, 0, 2, 4,120, 0, 4, 4,121, 0, 4, 1, 13, 0, 2, 4,122, 0, 2, 4,123, 0, 2, 4,124,
+ 0, 2, 4,125, 0, 2, 4,126, 0, 2, 4,127, 0, 24, 4,128, 0, 24, 4,129, 0, 23, 4,130, 0, 12, 4,131, 0, 2, 4,132,
+ 0, 2, 0, 37, 0, 7, 4,133, 0, 7, 4,134, 0, 7, 4,135, 0, 7, 4,136, 0, 7, 4,137, 0, 7, 4,138, 0, 7, 4,139,
+ 0, 7, 4,140, 0, 7, 4,141, 0, 2, 4,142, 0, 2, 4,143, 0, 2, 4,144, 0, 2, 4,145, 0, 2, 4,146, 0, 2, 4,147,
+ 0, 7, 4,148, 0, 7, 4,149, 0, 7, 4,150, 0, 2, 4,151, 0, 2, 4,152, 0, 2, 4,153, 0, 2, 4,154, 0, 2, 4,155,
+ 0, 2, 4,156, 0, 2, 4,157, 0, 2, 4,158, 0, 2, 4,159, 0, 2, 4,160, 0, 4, 4,161, 0, 4, 4,162, 0, 4, 4,163,
+ 0, 4, 4,164, 0, 4, 4,165, 0, 7, 4,166, 0, 4, 4,167, 0, 4, 4,168, 0, 4, 4,169, 0, 4, 4,170, 0, 7, 4,171,
+ 0, 7, 4,172, 0, 7, 4,173, 0, 7, 4,174, 0, 7, 4,175, 0, 7, 4,176, 0, 7, 4,177, 0, 7, 4,178, 0, 7, 4,179,
+ 0, 0, 4,180, 0, 0, 4,181, 0, 4, 4,182, 0, 2, 4,183, 0, 2, 1,160, 0, 0, 4,184, 0, 7, 4,185, 0, 7, 4,186,
+ 0, 4, 4,187, 0, 4, 4,188, 0, 7, 4,189, 0, 7, 4,190, 0, 2, 4,191, 0, 2, 4,192, 0, 7, 4,193, 0, 2, 4,194,
+ 0, 2, 4,195, 0, 4, 4,196, 0, 2, 4,197, 0, 2, 4,198, 0, 2, 4,199, 0, 2, 4,200, 0, 7, 4,201, 0, 7, 4,202,
+ 0, 43, 4,203, 0,172, 0, 9, 0,172, 0, 0, 0,172, 0, 1, 0, 0, 0, 20, 0, 2, 4,204, 0, 2, 4,205, 0, 2, 4,206,
+ 0, 2, 0, 43, 0, 7, 4,207, 0, 7, 0, 70, 0,173, 0, 5, 0, 7, 4,208, 0, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70,
+ 0, 0, 1,160, 0,174, 0, 5, 0,174, 0, 0, 0,174, 0, 1, 0, 4, 4,209, 0, 0, 4,210, 0, 4, 0, 19, 0,175, 0, 6,
+ 0,176, 4,211, 0, 2, 0, 19, 0, 2, 4,212, 0, 2, 4,213, 0, 2, 4,214, 0, 9, 4,215, 0,177, 0, 4, 0, 2, 0,110,
+ 0, 2, 2,141, 0, 2, 4,216, 0, 2, 4,217, 0,178, 0, 8, 0, 2, 0, 19, 0, 2, 4,218, 0, 2, 4,219, 0, 2, 4,220,
+ 0,177, 4,221, 0, 9, 4,215, 0, 7, 4,222, 0, 4, 4,223, 0,179, 0, 4, 0,179, 0, 0, 0,179, 0, 1, 0, 0, 4,224,
+ 0, 7, 4,225, 0,180, 0, 8, 0,181, 4,226, 0,176, 4,211, 0, 7, 4,227, 0, 4, 0, 94, 0, 0, 4,228, 0, 0, 4,229,
+ 0, 0, 4,230, 0, 0, 4,231, 0,182, 0, 9, 0,176, 4,211, 0, 7, 4, 47, 0, 7, 4,232, 0, 2, 1, 13, 0, 2, 0, 19,
+ 0, 4, 0, 36, 0, 4, 4,233, 0, 84, 4,234, 0, 9, 4,215, 0,183, 0, 64, 0,182, 4,235, 0,182, 4,236, 0,180, 4,237,
+ 0, 2, 4,238, 0, 2, 4,239, 0, 7, 4,240, 0, 7, 4,241, 0, 2, 4,216, 0, 2, 4,242, 0, 7, 4,243, 0, 7, 4,244,
+ 0, 2, 4,245, 0, 2, 4,246, 0, 2, 4,247, 0, 2, 4,248, 0, 7, 4,249, 0, 7, 4,250, 0, 7, 4,251, 0, 7, 0, 37,
+ 0, 2, 4,252, 0, 2, 4,253, 0, 2, 4,254, 0, 2, 4,255, 0, 2, 5, 0, 0, 2, 5, 1, 0, 2, 5, 2, 0,175, 5, 3,
+ 0,178, 5, 4, 0, 7, 5, 5, 0, 7, 5, 6, 0, 7, 5, 7, 0, 0, 5, 8, 0, 0, 5, 9, 0, 0, 5, 10, 0, 0, 5, 11,
+ 0, 0, 5, 12, 0, 0, 5, 13, 0, 2, 5, 14, 0, 7, 5, 15, 0, 7, 5, 16, 0, 7, 5, 17, 0, 7, 5, 18, 0, 7, 5, 19,
+ 0, 7, 5, 20, 0, 7, 5, 21, 0, 7, 5, 22, 0, 7, 5, 23, 0, 7, 5, 24, 0, 2, 5, 25, 0, 0, 5, 26, 0, 0, 5, 27,
+ 0, 0, 5, 28, 0, 0, 5, 29, 0, 4, 5, 30, 0, 32, 5, 31, 0, 0, 5, 32, 0, 0, 5, 33, 0, 0, 5, 34, 0, 0, 5, 35,
+ 0, 0, 5, 36, 0, 0, 5, 37, 0, 0, 5, 38, 0, 0, 5, 39, 0, 0, 5, 40, 0,184, 0, 8, 0, 4, 5, 41, 0, 4, 5, 42,
+ 0, 4, 5, 43, 0, 4, 5, 44, 0, 4, 5, 45, 0, 4, 5, 46, 0, 4, 0, 54, 0, 4, 2, 48, 0, 47, 0, 46, 0, 27, 0, 31,
+ 0, 39, 0, 75, 0, 32, 5, 47, 0,163, 5, 48, 0, 47, 5, 49, 0, 48, 0,210, 0, 12, 5, 50, 0,165, 5, 51, 0, 32, 5, 52,
+ 0, 7, 5, 53, 0, 7, 5, 54, 0, 7, 5, 55, 0, 7, 5, 56, 0, 4, 3, 19, 0, 7, 5, 57, 0, 2, 5, 58, 0, 2, 5, 59,
+ 0, 2, 5, 60, 0, 2, 5, 61, 0, 2, 5, 62, 0, 2, 0, 19, 0, 2, 5, 63, 0, 2, 1, 6, 0, 59, 1, 2, 0, 9, 5, 64,
+ 0,164, 5, 65, 0,173, 5, 66, 0,183, 5, 67, 0,185, 5, 68, 0,171, 0,184, 0,169, 4, 88, 0, 40, 0,126, 0, 12, 0,104,
+ 0, 12, 5, 69, 0, 2, 5, 70, 0, 2, 5, 71, 0, 2, 5, 72, 0, 2, 5, 73, 0,186, 5, 74, 0, 2, 5, 75, 0, 2, 5, 76,
+ 0, 2, 1, 64, 0, 2, 0,219, 0, 4, 5, 77, 0, 4, 5, 78, 0, 12, 5, 79, 0,187, 0, 9, 0, 48, 0,210, 0, 46, 1, 1,
+ 0, 7, 2, 13, 0, 7, 2, 14, 0, 7, 0,110, 0, 7, 5, 80, 0, 7, 5, 81, 0, 2, 5, 82, 0, 2, 5, 83, 0,188, 0, 34,
+ 0, 7, 5, 84, 0, 7, 5, 85, 0, 7, 5, 86, 0, 7, 5, 87, 0, 7, 5, 88, 0, 7, 5, 89, 0, 7, 5, 90, 0, 7, 5, 91,
+ 0, 7, 1, 20, 0, 7, 5, 92, 0, 7, 5, 93, 0, 7, 5, 94, 0, 7, 5, 95, 0, 7, 0,175, 0, 2, 5, 96, 0, 2, 5, 97,
+ 0, 4, 5, 98, 0, 2, 5, 99, 0, 2, 5,100, 0, 2, 5,101, 0, 2, 5,102, 0, 7, 5,103, 0, 69, 5,104, 0,189, 5,105,
+ 0,188, 5,106, 0,190, 5,107, 0,191, 5,108, 0,192, 5,109, 0,193, 5,110, 0,194, 5,111, 0, 7, 5,112, 0, 2, 5,113,
+ 0, 2, 5,114, 0, 4, 1,160, 0,195, 0, 54, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117,
+ 0, 2, 5,118, 0, 7, 5, 91, 0, 7, 1, 20, 0, 7, 0, 43, 0, 4, 5,119, 0, 2, 5,101, 0, 2, 5,102, 0, 32, 5, 47,
+ 0, 32, 5,120, 0,187, 5,121, 0,195, 5,106, 0, 0, 5,122, 0, 4, 3, 19, 0, 4, 5,123, 0, 2, 4, 35, 0, 2, 5,124,
+ 0, 2, 5,125, 0, 2, 5,126, 0, 2, 1,160, 0, 2, 0, 19, 0, 2, 5,127, 0, 2, 5,128, 0, 7, 0,116, 0, 7, 5,129,
+ 0, 7, 5,130, 0, 7, 5,131, 0, 7, 5,132, 0, 7, 5,133, 0, 7, 0,175, 0, 7, 5, 53, 0, 2, 5,134, 0, 2, 1, 64,
+ 0, 2, 5,135, 0, 2, 5,136, 0, 2, 5,137, 0, 2, 5,138, 0, 2, 5,139, 0, 2, 5,140, 0, 2, 5,141, 0, 2, 5,142,
+ 0, 4, 5,143, 0, 12, 5,144, 0, 2, 5,145, 0, 2, 2, 62, 0, 2, 5,146, 0, 0, 5,147, 0, 0, 5,148, 0, 9, 5,149,
+ 0,189, 5,105, 0,197, 0, 22, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 5,150, 0, 23, 5,151, 0, 23, 5,152, 0, 7, 5,153,
+ 0, 7, 5,154, 0, 7, 5,155, 0, 7, 5,156, 0, 2, 5,157, 0, 2, 5,158, 0, 2, 5,159, 0, 2, 5,160, 0, 2, 5,161,
+ 0, 2, 0, 19, 0, 2, 5,162, 0, 2, 5,163, 0, 2, 5,164, 0, 2, 5,165, 0, 2, 5,166, 0, 2, 5,126, 0, 7, 5,167,
+ 0,196, 0, 6, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,198, 0, 8,
+ 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,199, 5,168, 0, 47, 0,139,
+ 0,200, 0, 14, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,197, 5,169,
+ 0,201, 5,170, 0, 12, 5,171, 0, 2, 1, 13, 0, 2, 0, 19, 0, 2, 5,172, 0, 0, 5,173, 0, 0, 5,174, 0,202, 0, 28,
+ 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,190, 5,107, 0, 2, 5,175,
+ 0, 2, 5,176, 0, 2, 5,162, 0, 2, 5,177, 0,197, 5,169, 0, 2, 5,178, 0, 2, 0,138, 0, 2, 5,173, 0, 2, 5,179,
+ 0, 9, 5,180, 0, 2, 5,181, 0, 0, 5,182, 0, 0, 5,183, 0, 2, 5,184, 0, 2, 5,185, 0, 2, 3, 28, 0, 2, 5,186,
+ 0, 2, 5,187, 0, 0, 0, 19, 0, 0, 1, 47, 0, 0, 5,188, 0,203, 0, 16, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115,
+ 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,197, 5,169, 0, 7, 2, 13, 0, 7, 2, 14, 0, 2, 5,178, 0, 2, 0, 37,
+ 0, 2, 5,189, 0, 2, 5,190, 0, 4, 0, 19, 0, 7, 5, 80, 0,189, 5,105, 0,204, 0, 10, 0,196, 0, 0, 0,196, 0, 1,
+ 0, 12, 5,115, 0, 4, 5,116, 0, 4, 0, 37, 0,205, 5,191, 0,206, 5,192, 0,207, 5,193, 0,194, 5,194, 0,208, 5,195,
+ 0,209, 0, 17, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,197, 5,169,
+ 0, 12, 5,196, 0,210, 5,197, 0, 0, 5,198, 0,211, 5,199, 0, 4, 5,200, 0, 4, 5,201, 0, 2, 0, 19, 0, 2, 5,202,
+ 0, 2, 5,203, 0, 2, 0, 37, 0,212, 0, 29, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117,
+ 0, 2, 5,118, 0, 48, 2,149, 0, 46, 1, 1, 0, 62, 5,204, 0, 2, 0,138, 0, 2, 5,205, 0, 2, 0, 70, 0, 2, 5,206,
+ 0, 4, 0, 19, 0, 2, 5,207, 0, 2, 5,174, 0, 2, 5,173, 0, 2, 1,160, 0, 0, 5,208, 0, 0, 5,209, 0, 0, 5,210,
+ 0, 0, 0, 37, 0, 7, 2, 13, 0, 7, 2, 14, 0, 7, 5, 80, 0, 7, 1, 64, 0, 7, 5,211, 0, 7, 5,212, 0,189, 5,105,
+ 0,213, 0, 11, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0, 2, 0,138,
+ 0, 2, 5,174, 0, 2, 5,172, 0, 2, 0, 19, 0,197, 5,169, 0,214, 0, 24, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115,
+ 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0, 43, 5,213, 0, 4, 5,214, 0, 4, 5,215, 0, 2, 0, 94, 0, 2, 0,138,
+ 0, 4, 5,216, 0, 4, 5,217, 0, 4, 5,218, 0, 4, 5,219, 0, 4, 5,220, 0, 4, 5,221, 0, 7, 5,222, 0, 23, 5,223,
+ 0, 23, 5,224, 0, 4, 5,225, 0, 4, 5,226, 0, 0, 5,227, 0, 0, 5,228, 0,215, 0, 10, 0, 27, 0, 31, 0, 9, 5,229,
+ 0, 9, 5,230, 0, 9, 5,231, 0, 9, 5,232, 0, 9, 5,233, 0, 4, 0, 94, 0, 4, 5,234, 0, 0, 5,235, 0, 0, 5,236,
+ 0,216, 0, 10, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0,215, 5,237, 0, 2, 0, 94,
+ 0, 2, 0,138, 0, 4, 0, 43, 0, 9, 5,238, 0,217, 0, 8, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116,
+ 0, 7, 5,117, 0,197, 5,169, 0, 4, 0, 19, 0, 4, 5,239, 0,218, 0, 22, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115,
+ 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,197, 5,169, 0, 27, 5,240, 0, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,138,
+ 0, 7, 5,241, 0, 9, 5,242, 0, 7, 2, 13, 0, 7, 2, 14, 0, 7, 5,243, 0, 7, 5,244, 0, 59, 1, 2, 0, 59, 5,245,
+ 0, 4, 5,246, 0, 4, 0, 37, 0,189, 5,105, 0,219, 0, 42, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116,
+ 0, 7, 5,117, 0, 2, 5,118, 0,197, 5,169, 0,206, 5,192, 0, 0, 5,247, 0, 0, 5,248, 0, 0, 5,249, 0, 2, 0, 17,
+ 0, 2, 5,250, 0, 2, 0, 19, 0, 2, 5,251, 0, 9, 5,242, 0, 4, 5,252, 0, 4, 5,253, 0, 4, 5,254, 0, 4, 5,255,
+ 0, 23, 6, 0, 0, 23, 6, 1, 0, 7, 6, 2, 0, 7, 6, 3, 0, 7, 6, 4, 0, 7, 5,241, 0, 2, 6, 5, 0, 2, 0,209,
+ 0, 2, 1,103, 0, 2, 6, 6, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 6, 7, 0, 2, 6, 8, 0, 9, 6, 9, 0, 9, 6, 10,
+ 0, 9, 6, 11, 0, 9, 6, 12, 0, 9, 6, 13, 0, 2, 6, 14, 0, 0, 6, 15, 0, 58, 6, 16, 0,220, 0, 7, 0,220, 0, 0,
+ 0,220, 0, 1, 0, 0, 6, 17, 0, 2, 6, 18, 0, 2, 6, 19, 0, 2, 6, 20, 0, 2, 0, 37, 0,221, 0, 10, 0, 2, 6, 19,
+ 0, 2, 6, 21, 0, 2, 6, 22, 0, 2, 6, 23, 0, 2, 6, 24, 0, 2, 6, 25, 0, 2, 6, 26, 0, 2, 5,162, 0, 7, 6, 27,
+ 0, 7, 6, 28, 0,222, 0, 17, 0,222, 0, 0, 0,222, 0, 1, 0, 0, 4,210, 0,221, 6, 29, 0,221, 6, 30, 0,221, 6, 31,
+ 0,221, 6, 32, 0, 2, 6, 33, 0, 2, 6, 34, 0, 2, 6, 35, 0, 2, 6, 36, 0, 2, 6, 37, 0, 2, 6, 38, 0, 2, 6, 39,
+ 0, 2, 6, 40, 0, 2, 6, 41, 0, 2, 2, 77, 0,223, 0, 10, 0, 0, 6, 42, 0, 0, 6, 43, 0, 0, 6, 44, 0, 0, 6, 45,
+ 0, 0, 6, 46, 0, 0, 6, 47, 0, 2, 6, 48, 0, 2, 6, 49, 0, 2, 6, 50, 0, 2, 0, 37, 0,224, 0, 12, 0,223, 6, 51,
+ 0,223, 6, 52, 0,223, 6, 53, 0,223, 6, 54, 0,223, 6, 55, 0,223, 6, 56, 0,223, 6, 57, 0,223, 6, 58, 0,223, 6, 59,
+ 0,223, 6, 60, 0,223, 6, 61, 0, 0, 6, 62, 0,225, 0, 71, 0, 0, 6, 63, 0, 0, 6, 64, 0, 0, 6, 46, 0, 0, 6, 65,
+ 0, 0, 6, 66, 0, 0, 6, 67, 0, 0, 6, 68, 0, 0, 6, 69, 0, 0, 6, 70, 0, 0, 6, 71, 0, 0, 6, 72, 0, 0, 6, 73,
+ 0, 0, 6, 74, 0, 0, 6, 75, 0, 0, 6, 76, 0, 0, 6, 77, 0, 0, 6, 78, 0, 0, 6, 79, 0, 0, 6, 80, 0, 0, 6, 81,
+ 0, 0, 6, 82, 0, 0, 6, 83, 0, 0, 6, 84, 0, 0, 6, 85, 0, 0, 6, 86, 0, 0, 6, 87, 0, 0, 6, 88, 0, 0, 6, 89,
+ 0, 0, 6, 90, 0, 0, 6, 91, 0, 0, 6, 92, 0, 0, 6, 93, 0, 0, 6, 94, 0, 0, 6, 95, 0, 0, 6, 96, 0, 0, 6, 97,
+ 0, 0, 6, 98, 0, 0, 6, 99, 0, 0, 6,100, 0, 0, 6,101, 0, 0, 6,102, 0, 0, 6,103, 0, 0, 6,104, 0, 0, 6,105,
+ 0, 0, 6,106, 0, 0, 6,107, 0, 0, 6,108, 0, 0, 6,109, 0, 0, 6,110, 0, 0, 6,111, 0, 0, 6,112, 0, 0, 6,113,
+ 0, 0, 6,114, 0, 0, 6,115, 0, 0, 6,116, 0, 0, 6,117, 0, 0, 6,118, 0, 0, 6,119, 0, 0, 6,120, 0, 0, 6,121,
+ 0, 0, 6,122, 0, 0, 6,123, 0, 0, 6,124, 0, 0, 6,125, 0, 0, 6,126, 0, 0, 6,127, 0, 0, 6,128, 0, 0, 6,129,
+ 0, 0, 6,130, 0, 0, 6,131, 0, 0, 0, 96, 0,226, 0, 5, 0, 0, 6,132, 0, 0, 6, 87, 0, 0, 6, 89, 0, 2, 0, 19,
+ 0, 2, 0, 37, 0,227, 0, 20, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 20, 0,224, 6,133, 0,225, 6,134, 0,225, 6,135,
+ 0,225, 6,136, 0,225, 6,137, 0,225, 6,138, 0,225, 6,139, 0,225, 6,140, 0,225, 6,141, 0,225, 6,142, 0,225, 6,143,
+ 0,225, 6,144, 0,225, 6,145, 0,225, 6,146, 0,225, 6,147, 0,225, 6,148, 0,226, 6,149, 0,228, 0, 5, 0, 4, 0, 19,
+ 0, 4, 0, 37, 0, 7, 2, 61, 0, 7, 6,150, 0, 7, 1,227, 0,229, 0, 67, 0, 4, 0, 19, 0, 4, 6,151, 0, 4, 6,152,
+ 0, 0, 6,153, 0, 0, 6,154, 0, 0, 6,155, 0, 0, 6,156, 0, 0, 6,157, 0, 0, 6,158, 0, 0, 6,159, 0, 0, 6,160,
+ 0, 0, 6,161, 0, 2, 6,162, 0, 2, 0, 37, 0, 4, 6,163, 0, 4, 6,164, 0, 4, 6,165, 0, 4, 6,166, 0, 2, 6,167,
+ 0, 2, 6,168, 0, 4, 6,169, 0, 4, 0, 43, 0, 4, 6,170, 0, 2, 6,171, 0, 2, 6,172, 0, 2, 6,173, 0, 2, 6,174,
+ 0, 12, 6,175, 0, 12, 6,176, 0, 12, 6,177, 0, 2, 6,178, 0, 2, 6,179, 0, 2, 6,180, 0, 2, 6,181, 0, 2, 6,182,
+ 0, 2, 6,183, 0, 2, 6,184, 0, 2, 6,185, 0,228, 6,186, 0, 2, 6,187, 0, 2, 6,188, 0, 2, 6,189, 0, 2, 6,190,
+ 0, 2, 6,191, 0, 2, 6,192, 0, 2, 6,193, 0, 2, 6,194, 0, 4, 6,195, 0, 4, 6,196, 0, 2, 6,197, 0, 2, 6,198,
+ 0, 2, 6,199, 0, 2, 6,200, 0, 2, 6,201, 0, 2, 6,202, 0, 2, 6,203, 0, 2, 6,204, 0, 2, 6,205, 0, 2, 6,206,
+ 0, 2, 6,207, 0, 2, 6,208, 0, 0, 6,209, 0, 0, 6,210, 0, 7, 6,211, 0, 2, 5, 63, 0, 2, 6,212, 0, 56, 6,213,
+ 0,199, 0, 20, 0, 27, 0, 31, 0, 12, 6,214, 0, 12, 6,215, 0, 12, 6,216, 0, 12, 5,115, 0, 47, 0,139, 0, 2, 6,217,
+ 0, 2, 6,218, 0, 2, 6,219, 0, 2, 6,220, 0, 2, 6,221, 0, 2, 6,222, 0, 2, 6,223, 0, 2, 0, 37, 0, 2, 6,224,
+ 0, 2, 6,225, 0, 4, 0, 70, 0,194, 6,226, 0, 9, 6,227, 0, 2, 6,228, 0,230, 0, 5, 0,230, 0, 0, 0,230, 0, 1,
+ 0,230, 6,229, 0, 13, 6,230, 0, 4, 0, 19, 0,231, 0, 7, 0,231, 0, 0, 0,231, 0, 1, 0,230, 6,231, 0,230, 6,232,
+ 0, 2, 4,129, 0, 2, 0, 19, 0, 4, 0, 37, 0,232, 0, 20, 0,232, 0, 0, 0,232, 0, 1, 0,233, 6,233, 0,234, 5,195,
+ 0, 0, 6,234, 0, 0, 6,235, 0, 0, 6,236, 0, 2, 6,237, 0, 2, 6,238, 0, 2, 6,239, 0, 2, 6,240, 0, 2, 6,241,
+ 0, 2, 0, 37, 0, 2, 0, 19, 0, 2, 6,242, 0, 2, 6,243, 0, 2, 6,244, 0, 4, 6,245, 0,232, 6,246, 0, 9, 6,247,
+ 0,235, 0, 2, 0,236, 6,233, 0,234, 5,195, 0,237, 0, 2, 0,238, 6,233, 0,234, 5,195, 0,239, 0, 23, 0,239, 0, 0,
+ 0,239, 0, 1, 0,230, 6,231, 0,230, 6,232, 0,230, 6,248, 0,230, 6,249, 0,199, 6,250, 0, 23, 0, 52, 0, 0, 5,116,
+ 0, 0, 6,251, 0, 2, 5,163, 0, 2, 5,164, 0, 2, 6,252, 0, 2, 0, 37, 0, 2, 6,220, 0, 2, 6,253, 0, 2, 0, 19,
+ 0, 40, 0,126, 0,240, 6,233, 0, 12, 6,254, 0, 12, 5,115, 0, 12, 6,255, 0, 12, 7, 0, 0,241, 0, 21, 0,241, 0, 0,
+ 0,241, 0, 1, 0,197, 5,169, 0, 23, 7, 1, 0, 23, 7, 2, 0, 2, 5,163, 0, 2, 5,164, 0, 2, 7, 3, 0, 2, 7, 4,
+ 0, 2, 7, 5, 0, 2, 0, 19, 0, 7, 2, 9, 0, 2, 6,219, 0, 2, 6,223, 0, 4, 0, 43, 0,242, 6,233, 0, 12, 7, 6,
+ 0, 12, 7, 7, 0, 12, 6,255, 0, 0, 7, 8, 0, 9, 7, 9, 0,243, 0, 11, 0, 0, 7, 10, 0, 2, 7, 11, 0, 2, 7, 12,
+ 0, 2, 7, 13, 0, 2, 7, 14, 0, 2, 7, 15, 0, 2, 4,113, 0,199, 7, 16, 0, 47, 7, 17, 0, 4, 7, 18, 0, 4, 7, 19,
+ 0,244, 0, 1, 0, 0, 7, 20, 0,245, 0, 8, 0, 58, 7, 21, 0, 58, 7, 22, 0,245, 7, 23, 0,245, 7, 24, 0,245, 7, 25,
+ 0, 2, 0,134, 0, 2, 0, 19, 0, 4, 7, 26, 0,246, 0, 4, 0, 4, 5,214, 0, 4, 7, 27, 0, 4, 5,217, 0, 4, 7, 28,
+ 0,247, 0, 2, 0, 4, 7, 29, 0, 4, 7, 30, 0,248, 0, 7, 0, 7, 7, 31, 0, 7, 7, 32, 0, 7, 7, 33, 0, 4, 0, 19,
+ 0, 4, 0, 37, 0, 7, 3,246, 0, 7, 7, 34, 0,249, 0, 1, 0, 0, 7, 35, 0,250, 0, 21, 0,250, 0, 0, 0,250, 0, 1,
+ 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 7, 36, 0, 4, 7, 37, 0, 4, 7, 38, 0,244, 7, 39, 0, 0, 7, 35,
+ 0, 4, 7, 40, 0, 4, 7, 41, 0,249, 3, 4, 0,246, 7, 42, 0,247, 7, 43, 0,248, 7, 44, 0,245, 7, 45, 0,245, 7, 46,
+ 0,245, 7, 47, 0, 58, 7, 48, 0, 58, 7, 49, 0,251, 0, 12, 0, 0, 1,190, 0, 9, 0,195, 0, 0, 0,196, 0, 4, 0,199,
+ 0, 4, 0,207, 0, 9, 0,200, 0, 7, 0,202, 0, 7, 0,203, 0, 9, 7, 50, 0, 9, 7, 51, 0, 9, 0,204, 0, 9, 0,206,
+ 0,252, 0, 45, 0,252, 0, 0, 0,252, 0, 1, 0, 9, 7, 52, 0, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17,
+ 0, 4, 0, 23, 0, 4, 0, 92, 0, 4, 7, 53, 0, 4, 7, 54, 0, 4, 7, 37, 0, 4, 7, 38, 0, 4, 7, 55, 0, 4, 0,218,
+ 0, 4, 7, 56, 0, 4, 7, 57, 0, 7, 4,232, 0, 7, 7, 58, 0, 4, 0,131, 0, 4, 7, 59, 0,250, 7, 60, 0, 36, 0, 80,
+ 0, 47, 0,139, 0, 50, 0,142, 0, 7, 7, 61, 0, 7, 7, 62, 0,251, 1, 3, 0,252, 7, 63, 0,252, 7, 64, 0,252, 7, 65,
+ 0, 12, 7, 66, 0,253, 7, 67, 0,254, 7, 68, 0, 7, 7, 69, 0, 7, 7, 70, 0, 4, 7, 71, 0, 7, 7, 72, 0, 9, 7, 73,
+ 0, 4, 7, 74, 0, 4, 7, 75, 0, 4, 7, 76, 0, 7, 7, 77, 0, 4, 7, 78, 0, 4, 0, 37, 0,255, 0, 4, 0,255, 0, 0,
+ 0,255, 0, 1, 0, 12, 7, 79, 0,252, 7, 80, 1, 0, 0, 6, 0, 12, 7, 81, 0, 12, 7, 66, 0, 12, 7, 82, 0,252, 7, 83,
+ 0, 0, 7, 84, 0, 0, 7, 85, 1, 1, 0, 4, 0, 7, 7, 86, 0, 7, 0,113, 0, 2, 7, 87, 0, 2, 7, 88, 1, 2, 0, 6,
+ 0, 7, 7, 89, 0, 7, 7, 90, 0, 7, 7, 91, 0, 7, 7, 92, 0, 4, 7, 93, 0, 4, 7, 94, 1, 3, 0, 12, 0, 7, 7, 95,
+ 0, 7, 7, 96, 0, 7, 7, 97, 0, 7, 7, 98, 0, 7, 7, 99, 0, 7, 7,100, 0, 7, 7,101, 0, 7, 7,102, 0, 7, 7,103,
+ 0, 7, 7,104, 0, 4, 2,153, 0, 4, 7,105, 1, 4, 0, 2, 0, 7, 4,208, 0, 7, 0, 37, 1, 5, 0, 5, 0, 7, 7,106,
+ 0, 7, 7,107, 0, 4, 0, 94, 0, 4, 2,115, 0, 4, 7,108, 1, 6, 0, 6, 1, 6, 0, 0, 1, 6, 0, 1, 0, 2, 0, 17,
+ 0, 2, 0, 19, 0, 2, 7,109, 0, 2, 0, 57, 1, 7, 0, 8, 1, 7, 0, 0, 1, 7, 0, 1, 0, 2, 0, 17, 0, 2, 0, 19,
+ 0, 2, 7,109, 0, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,131, 1, 8, 0, 45, 1, 8, 0, 0, 1, 8, 0, 1, 0, 2, 0, 17,
+ 0, 2, 0, 19, 0, 2, 7,109, 0, 2, 0,214, 0, 2, 3,164, 0, 2, 7,110, 0, 7, 7,111, 0, 7, 0, 93, 0, 7, 2,166,
+ 0, 4, 7,112, 0, 4, 0, 82, 0, 4, 2,117, 0, 7, 7,113, 0, 7, 7,114, 0, 7, 7,115, 0, 7, 7,116, 0, 7, 7,117,
+ 0, 7, 7,118, 0, 7, 2,163, 0, 7, 1, 0, 0, 7, 7,119, 0, 7, 7,120, 0, 7, 0, 37, 0, 7, 7,121, 0, 7, 7,122,
+ 0, 7, 7,123, 0, 2, 7,124, 0, 2, 7,125, 0, 2, 7,126, 0, 2, 7,127, 0, 2, 7,128, 0, 2, 7,129, 0, 2, 7,130,
+ 0, 2, 7,131, 0, 2, 5,127, 0, 2, 7,132, 0, 2, 1,210, 0, 2, 7,133, 0, 0, 7,134, 0, 0, 7,135, 0, 7, 0,212,
+ 1, 9, 7,136, 0, 65, 1,163, 1, 10, 0, 16, 1, 10, 0, 0, 1, 10, 0, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 7,109,
+ 0, 2, 0,214, 0, 7, 2,158, 0, 7, 2,159, 0, 7, 2,160, 0, 7, 1,254, 0, 7, 2,161, 0, 7, 2,162, 0, 7, 7,137,
+ 0, 7, 2,163, 0, 7, 2,165, 0, 7, 2,166, 0,211, 0, 5, 0, 2, 0, 17, 0, 2, 7, 26, 0, 2, 0, 19, 0, 2, 7,138,
+ 0, 27, 5,240, 0,210, 0, 3, 0, 4, 0, 69, 0, 4, 7,139, 0,211, 0, 2, 1, 11, 0, 11, 1, 11, 0, 0, 1, 11, 0, 1,
+ 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 7,140, 0, 4, 0, 22, 0, 4, 7,141, 0, 2, 0, 19, 0, 2, 0, 37, 0, 9, 7,142,
+ 0, 9, 7,143, 1, 12, 0, 5, 0, 0, 0, 20, 0, 7, 1, 20, 0, 7, 7,144, 0, 4, 7,145, 0, 4, 0, 37, 1, 13, 0, 4,
+ 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 1, 14, 0, 4, 0, 0, 0, 20, 0, 64, 7,146, 0, 7, 1, 20,
+ 0, 7, 0, 37, 1, 15, 0, 6, 0, 2, 7,147, 0, 2, 7,148, 0, 2, 0, 17, 0, 2, 7,149, 0, 0, 7,150, 0, 0, 7,151,
+ 1, 16, 0, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 7,152, 0, 0, 7,153, 1, 17, 0, 3, 0, 4, 0, 17,
+ 0, 4, 0, 37, 0, 0, 0, 20, 1, 18, 0, 4, 0, 2, 7,154, 0, 2, 7,155, 0, 2, 0, 19, 0, 2, 0, 37, 1, 19, 0, 6,
+ 0, 0, 0, 20, 0, 0, 7,156, 0, 2, 7,157, 0, 2, 2,163, 0, 2, 1, 13, 0, 2, 0, 70, 1, 20, 0, 5, 0, 0, 0, 20,
+ 0, 7, 0,113, 0, 7, 3,248, 0, 2, 0, 19, 0, 2, 2,129, 1, 21, 0, 3, 0, 0, 0, 20, 0, 4, 2,117, 0, 4, 7,154,
+ 1, 22, 0, 7, 0, 0, 0, 20, 0, 7, 3,248, 0, 0, 7,158, 0, 0, 7,159, 0, 2, 1, 13, 0, 2, 0, 43, 0, 4, 7,160,
+ 1, 23, 0, 3, 0, 32, 7,161, 0, 0, 7,162, 0, 0, 7,163, 1, 24, 0, 17, 1, 24, 0, 0, 1, 24, 0, 1, 0, 2, 0, 17,
+ 0, 2, 7,140, 0, 2, 0, 19, 0, 2, 7,164, 0, 2, 7,165, 0, 2, 7,166, 0, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20,
+ 0, 9, 0, 2, 1, 25, 7,167, 0, 32, 0, 45, 0, 2, 4,217, 0, 2, 7, 69, 0, 4, 0, 37, 1, 26, 0, 11, 0, 0, 0, 20,
+ 0, 0, 0, 17, 0, 0, 7,168, 0, 2, 0, 19, 0, 2, 2,129, 0, 2, 7,169, 0, 4, 7,170, 0, 4, 7,171, 0, 4, 7,172,
+ 0, 4, 7,173, 0, 4, 7,174, 1, 27, 0, 1, 0, 0, 7,175, 1, 28, 0, 1, 0, 43, 5,213, 1, 25, 0, 18, 1, 25, 0, 0,
+ 1, 25, 0, 1, 1, 25, 7,176, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 7,177, 0, 2, 7,166, 0, 2, 7,140, 0, 2, 7,178,
+ 0, 2, 0, 70, 0, 2, 1,160, 0, 0, 0, 20, 0, 9, 0, 2, 1, 29, 7,167, 1, 24, 7,179, 0, 2, 0, 15, 0, 2, 7,180,
+ 0, 4, 7,181, 1, 30, 0, 3, 0, 4, 2,189, 0, 4, 0, 37, 0, 32, 0, 45, 1, 31, 0, 12, 0,152, 7,182, 0, 2, 0, 17,
+ 0, 2, 0, 19, 0, 4, 7,111, 0, 4, 0, 93, 0, 0, 0, 20, 0, 0, 7,183, 0, 2, 7,184, 0, 2, 7,185, 0, 2, 7,186,
+ 0, 2, 7,187, 0, 7, 7,188, 1, 32, 0, 10, 0, 2, 0, 19, 0, 2, 7,189, 0, 4, 7,111, 0, 4, 0, 93, 0, 2, 7,190,
+ 0,253, 7, 67, 0, 2, 0, 17, 0, 2, 7,191, 0, 2, 7,192, 0, 2, 7,193, 1, 33, 0, 7, 0, 2, 0, 19, 0, 2, 7,189,
+ 0, 4, 7,111, 0, 4, 0, 93, 0, 2, 0, 17, 0, 2, 7,194, 0, 7, 3,124, 1, 34, 0, 11, 0, 4, 2,189, 0, 2, 0, 17,
+ 0, 2, 0, 19, 0, 32, 0, 45, 0, 78, 7,195, 0, 0, 0, 20, 0, 7, 7,196, 0, 7, 7,197, 0, 7, 3, 37, 0, 2, 7,198,
+ 0, 2, 7,199, 1, 35, 0, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 47, 0,139, 0, 32, 5, 47, 1, 36, 0, 5,
+ 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 7,152, 0, 32, 0, 45, 1, 37, 0, 12, 0, 2, 0, 19, 0, 2, 0, 17,
+ 0, 2, 7,140, 0, 2, 3, 38, 0, 7, 7,200, 0, 7, 7,201, 0, 7, 1, 8, 0, 7, 1, 9, 0, 7, 3, 13, 0, 7, 3, 16,
+ 0, 7, 7,202, 0, 7, 7,203, 1, 38, 0, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 7,111, 0, 4, 0, 93, 0, 0, 0, 20,
+ 0, 0, 7,183, 0, 2, 0, 43, 0, 2, 0, 64, 0, 2, 7,204, 0, 2, 7,205, 1, 39, 0, 8, 0, 32, 0, 45, 0, 7, 2,160,
+ 0, 7, 7,206, 0, 7, 7,207, 0, 7, 2,155, 0, 2, 0, 19, 0, 2, 2,129, 0, 7, 7,208, 1, 40, 0, 12, 0, 2, 0, 17,
+ 0, 2, 1, 13, 0, 2, 0, 19, 0, 2, 2,163, 0, 2, 2,189, 0, 2, 7,209, 0, 4, 0, 37, 0, 7, 7,210, 0, 7, 7,211,
+ 0, 7, 7,212, 0, 7, 7,213, 0, 0, 7,214, 1, 41, 0, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 7,111, 0, 4, 0, 93,
+ 0, 0, 0, 20, 0, 2, 2, 77, 0, 2, 0, 64, 0, 2, 7,204, 0, 2, 7,205, 0, 65, 1,163, 1, 42, 0, 7, 0, 4, 2,117,
+ 0, 4, 7,215, 0, 4, 7,216, 0, 4, 7,217, 0, 7, 7,218, 0, 7, 7,219, 0, 0, 7,158, 1, 43, 0, 7, 0, 0, 7,220,
+ 0, 32, 7,221, 0, 0, 7,162, 0, 2, 7,222, 0, 2, 0, 43, 0, 4, 0, 70, 0, 0, 7,163, 1, 44, 0, 6, 0, 2, 0, 19,
+ 0, 2, 0, 17, 0, 4, 7,111, 0, 4, 0, 93, 0, 0, 7,223, 0, 0, 7,224, 1, 45, 0, 1, 0, 4, 0, 19, 1, 46, 0, 6,
+ 0, 0, 0, 96, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 7,225, 0, 7, 7,226, 0, 43, 5,213, 1, 47, 0, 3, 0, 0, 0, 96,
+ 0, 4, 0, 17, 0, 32, 0, 45, 1, 48, 0, 2, 0, 4, 0, 17, 0, 4, 5,152, 1, 29, 0, 10, 1, 29, 0, 0, 1, 29, 0, 1,
+ 1, 29, 7,176, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 7,140, 0, 2, 7,227, 0, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45,
+ 1, 49, 0, 10, 0, 7, 3, 37, 0, 7, 7,228, 0, 7, 7,229, 0, 7, 7,230, 0, 7, 7,231, 0, 4, 0, 19, 0, 7, 7,209,
+ 0, 7, 7,232, 0, 7, 7,233, 0, 7, 0, 37, 0,253, 0, 20, 0, 27, 0, 31, 0, 0, 0,194, 1, 50, 7,234, 0, 9, 7,235,
+ 0, 44, 0,154, 0, 44, 7,236, 0, 9, 7,237, 0, 36, 0, 80, 0, 7, 3,124, 0, 7, 7,238, 0, 7, 7,239, 0, 7, 7,240,
+ 0, 7, 7,241, 0, 7, 7,242, 0, 7, 7,243, 0, 4, 0, 94, 0, 4, 7,244, 0, 0, 7,245, 0, 0, 7,246, 0, 0, 7,247,
+ 1, 51, 0, 6, 0, 27, 0, 31, 0, 7, 7,248, 0, 7, 7,249, 0, 7, 7,250, 0, 2, 7,251, 0, 2, 7,252, 1, 52, 0, 15,
+ 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0,239, 7,253, 0,197, 5,169, 0,253, 7, 67,
+ 0, 2, 1, 13, 0, 2, 7,189, 0, 2, 2, 13, 0, 2, 2, 14, 0, 2, 0, 19, 0, 2, 5,174, 0, 4, 0, 70, 1, 53, 0, 6,
+ 1, 53, 0, 0, 1, 53, 0, 1, 0, 32, 0, 45, 0, 9, 7,254, 0, 4, 0,219, 0, 4, 0, 37, 0, 65, 0, 4, 0, 27, 0, 31,
+ 0, 12, 7,255, 0, 4, 0,136, 0, 7, 8, 0, 1, 54, 0, 25, 1, 54, 0, 0, 1, 54, 0, 1, 1, 54, 0, 38, 0, 12, 8, 1,
+ 0, 0, 0, 20, 0, 7, 8, 2, 0, 7, 8, 3, 0, 7, 8, 4, 0, 7, 8, 5, 0, 4, 0, 19, 0, 7, 8, 6, 0, 7, 8, 7,
+ 0, 7, 8, 8, 0, 7, 1, 20, 0, 7, 1,219, 0, 7, 8, 9, 0, 7, 2,115, 0, 7, 8, 10, 0, 7, 8, 11, 0, 7, 8, 12,
+ 0, 7, 8, 13, 0, 7, 8, 14, 0, 7, 0,176, 0, 2, 0,136, 0, 2, 4,245, 1, 55, 0, 20, 0, 27, 0, 31, 0, 12, 8, 15,
+ 0, 12, 8, 16, 0, 12, 8, 17, 0, 4, 0, 19, 0, 4, 4, 35, 0, 2, 2,167, 0, 2, 8, 18, 0, 2, 0,136, 0, 2, 8, 19,
+ 0, 2, 8, 20, 0, 2, 8, 21, 0, 2, 8, 22, 0, 2, 8, 23, 0, 4, 8, 24, 0, 4, 8, 25, 0, 4, 8, 26, 0, 4, 8, 27,
+ 0, 4, 8, 28, 0, 4, 8, 29, 1, 56, 0, 38, 1, 56, 0, 0, 1, 56, 0, 1, 0, 26, 8, 30, 0, 12, 3, 64, 0, 0, 0, 20,
+ 0, 2, 0, 19, 0, 2, 8, 31, 0, 2, 8, 32, 0, 2, 8, 33, 0, 2, 3, 22, 0, 2, 8, 34, 0, 4, 1,252, 0, 4, 8, 26,
+ 0, 4, 8, 27, 1, 54, 8, 35, 1, 56, 0, 38, 1, 56, 8, 36, 0, 12, 8, 37, 0, 9, 8, 38, 0, 9, 8, 39, 0, 9, 8, 40,
+ 0, 7, 1, 8, 0, 7, 0,176, 0, 7, 8, 41, 0, 7, 1,200, 0, 2, 8, 42, 0, 2, 0, 37, 0, 7, 8, 43, 0, 7, 8, 44,
+ 0, 7, 3, 18, 0, 7, 8, 45, 0, 7, 8, 46, 0, 7, 8, 47, 0, 7, 8, 48, 0, 7, 8, 49, 0, 7, 8, 50, 0, 7, 1,249,
+ 0, 32, 8, 51, 0,153, 0, 9, 0, 12, 8, 52, 0, 2, 0, 19, 0, 2, 8, 53, 0, 7, 3, 36, 0, 7, 8, 54, 0, 7, 8, 55,
+ 0, 12, 8, 56, 0, 4, 8, 57, 0, 4, 0, 37, 1, 57, 0, 7, 1, 57, 0, 0, 1, 57, 0, 1, 0, 12, 7,245, 0, 4, 0, 19,
+ 0, 4, 8, 58, 0, 0, 4,210, 0,226, 8, 59, 0,152, 0, 7, 0, 27, 0, 31, 0, 12, 8, 60, 0, 12, 8, 52, 0, 12, 8, 61,
+ 0, 12, 0,104, 0, 4, 0, 19, 0, 4, 8, 62, 0,201, 0, 4, 0, 27, 8, 63, 0, 12, 8, 52, 0, 4, 8, 64, 0, 4, 0, 19,
+ 1, 58, 0, 17, 0,196, 0, 0, 0,196, 0, 1, 0, 12, 5,115, 0, 4, 5,116, 0, 7, 5,117, 0, 2, 5,118, 0,197, 5,169,
+ 0,152, 3, 7, 0,201, 8, 65, 0, 0, 1, 13, 0, 0, 5,172, 0, 2, 0, 19, 0, 2, 8, 66, 0, 2, 5,173, 0, 2, 5,174,
+ 0, 2, 8, 67, 0, 7, 8, 68, 1, 59, 0, 8, 1, 59, 0, 0, 1, 59, 0, 1, 1, 57, 8, 69, 0, 36, 0, 80, 0, 12, 3, 10,
+ 0, 4, 0, 19, 0, 0, 0, 20, 0, 4, 8, 70, 1, 60, 0, 5, 1, 60, 0, 0, 1, 60, 0, 1, 0, 36, 0, 80, 0, 2, 0, 19,
+ 0, 0, 8, 71, 1, 61, 0, 12, 1, 61, 0, 0, 1, 61, 0, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 8, 72,
+ 0, 0, 8, 73, 0, 0, 8, 71, 0, 7, 8, 74, 0, 7, 8, 75, 0, 4, 0, 37, 0, 36, 0, 80, 1, 62, 0, 9, 1, 62, 0, 0,
+ 1, 62, 0, 1, 0, 32, 8, 76, 0, 0, 8, 77, 0, 7, 8, 78, 0, 2, 8, 79, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 37,
+ 1, 63, 0, 7, 0, 43, 5,213, 0, 26, 8, 30, 0, 4, 0, 19, 0, 4, 8, 80, 0, 12, 8, 81, 0, 32, 8, 76, 0, 0, 8, 77,
+ 1, 64, 0, 12, 0, 32, 8, 76, 0, 2, 8, 82, 0, 2, 0, 19, 0, 2, 8, 83, 0, 2, 8, 84, 0, 0, 8, 77, 0, 32, 8, 85,
+ 0, 0, 8, 86, 0, 7, 8, 87, 0, 7, 1,219, 0, 7, 8, 88, 0, 7, 8, 89, 1, 65, 0, 6, 0, 32, 8, 76, 0, 4, 8, 90,
+ 0, 4, 8, 91, 0, 4, 0, 94, 0, 4, 0, 37, 0, 0, 8, 77, 1, 66, 0, 4, 0, 32, 8, 76, 0, 4, 0, 19, 0, 4, 8, 90,
+ 0, 0, 8, 77, 1, 67, 0, 4, 0, 32, 8, 76, 0, 4, 0, 19, 0, 4, 8, 90, 0, 0, 8, 77, 1, 68, 0, 10, 0, 32, 8, 76,
+ 0, 4, 8, 92, 0, 7, 0,130, 0, 4, 0, 19, 0, 2, 5,209, 0, 2, 8, 93, 0, 2, 0, 43, 0, 2, 0, 70, 0, 7, 8, 94,
+ 0, 0, 8, 77, 1, 69, 0, 4, 0, 32, 8, 76, 0, 4, 0, 19, 0, 4, 8, 90, 0, 0, 8, 77, 1, 70, 0, 10, 0, 32, 8, 76,
+ 0, 2, 0, 17, 0, 2, 3,170, 0, 4, 0, 92, 0, 4, 0, 93, 0, 7, 7,206, 0, 7, 7,207, 0, 4, 0, 37, 0,152, 7,182,
+ 0, 0, 8, 77, 1, 71, 0, 4, 0, 32, 8, 76, 0, 4, 3, 23, 0, 4, 8, 95, 0, 0, 8, 77, 1, 72, 0, 5, 0, 32, 8, 76,
+ 0, 7, 0,130, 0, 4, 8, 96, 0, 4, 3, 23, 0, 4, 3, 24, 1, 73, 0, 6, 0, 32, 8, 76, 0, 4, 8, 97, 0, 4, 8, 98,
+ 0, 7, 8, 99, 0, 7, 8,100, 0, 0, 8, 77, 1, 74, 0, 16, 0, 32, 8, 76, 0, 32, 8, 36, 0, 4, 0, 17, 0, 7, 8,101,
+ 0, 7, 8,102, 0, 7, 8,103, 0, 7, 8,104, 0, 7, 8,105, 0, 7, 8,106, 0, 7, 8,107, 0, 7, 8,108, 0, 7, 8,109,
+ 0, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 1, 75, 0, 3, 0, 32, 8, 76, 0, 4, 0, 19, 0, 4, 5,127,
+ 1, 76, 0, 5, 0, 32, 8, 76, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 8,110, 0, 0, 8, 77, 1, 77, 0, 10, 0, 32, 8, 76,
+ 0, 0, 8, 77, 0, 2, 8,111, 0, 2, 8,112, 0, 0, 8,113, 0, 0, 8,114, 0, 7, 8,115, 0, 7, 8,116, 0, 7, 8,117,
+ 0, 7, 8,118, 1, 78, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 8,119, 0, 7, 8,120,
+ 0, 2, 0, 19, 0, 2, 5,127, 1, 79, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 8,119,
+ 0, 7, 8,120, 0, 2, 0, 19, 0, 2, 5,127, 1, 80, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12,
+ 0, 7, 8,119, 0, 7, 8,120, 0, 2, 0, 19, 0, 2, 5,127, 1, 81, 0, 7, 0, 32, 8, 76, 0, 0, 8, 77, 0, 7, 1, 20,
+ 0, 7, 1, 30, 0, 2, 0, 19, 0, 2, 1, 13, 0, 4, 0, 37, 1, 82, 0, 5, 0, 32, 2,224, 0, 7, 1, 20, 0, 2, 2,228,
+ 0, 0, 2,230, 0, 0, 8,121, 1, 83, 0, 10, 1, 83, 0, 0, 1, 83, 0, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 8,122,
+ 0, 7, 0,221, 0, 7, 0,222, 0, 2, 7,245, 0, 2, 8,123, 0, 32, 0, 45, 1, 84, 0, 22, 1, 84, 0, 0, 1, 84, 0, 1,
+ 0, 2, 0, 19, 0, 2, 1, 13, 0, 2, 8,124, 0, 2, 8,125, 0, 36, 0, 80, 0,152, 7,182, 0, 32, 0,168, 0, 7, 0, 92,
+ 0, 7, 0, 93, 0, 7, 8,126, 0, 7, 8,127, 0, 7, 8,128, 0, 7, 8,129, 0, 7, 2,156, 0, 7, 8,130, 0, 7, 7,184,
+ 0, 7, 8,131, 0, 0, 8,132, 0, 0, 8,133, 0, 12, 3, 12, 1, 85, 0, 8, 0, 7, 1,227, 0, 7, 7,206, 0, 7, 7,207,
+ 0, 9, 0, 2, 0, 2, 8,134, 0, 2, 8,135, 0, 2, 8,136, 0, 2, 8,137, 1, 86, 0, 18, 1, 86, 0, 0, 1, 86, 0, 1,
+ 1, 86, 8,138, 0, 0, 0, 20, 1, 85, 8,139, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 8,140, 0, 2, 8,141, 0, 2, 8,142,
+ 0, 2, 8,143, 0, 4, 0, 43, 0, 7, 8,144, 0, 7, 8,145, 0, 4, 8,146, 0, 4, 8,147, 1, 86, 8,148, 1, 87, 8,149,
+ 1, 88, 0, 33, 1, 88, 0, 0, 1, 88, 0, 1, 1, 88, 8,150, 0, 0, 0, 20, 0, 0, 8,151, 0, 2, 0, 17, 0, 2, 0, 19,
+ 0, 2, 7, 36, 0, 2, 7, 69, 0, 2, 8,152, 0, 2, 0,138, 0, 2, 8,141, 0, 2, 7, 26, 0, 12, 7,177, 0, 12, 8,153,
+ 0, 27, 5,240, 0, 9, 8,154, 0, 7, 8,144, 0, 7, 8,145, 0, 7, 1,254, 0, 7, 8,155, 0, 2, 8,156, 0, 2, 8,157,
+ 0, 7, 8,158, 0, 7, 8,159, 0, 2, 8,160, 0, 2, 8,161, 0, 9, 8,162, 0, 24, 8,163, 0, 24, 8,164, 0, 24, 8,165,
+ 1, 89, 0,155, 1, 90, 8,166, 1, 87, 0, 8, 1, 87, 0, 0, 1, 87, 0, 1, 1, 88, 8,167, 1, 88, 8,168, 1, 86, 8,169,
+ 1, 86, 8,148, 0, 4, 0, 19, 0, 4, 0, 37, 0, 59, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 8,170, 0, 12, 8,171,
+ 1, 85, 8,172, 0, 12, 8,173, 0, 4, 0, 17, 0, 4, 8,174, 0, 4, 8,175, 0, 4, 8,176, 0, 12, 8,177, 1, 90, 8,178,
+ 1, 86, 8,179, 1, 86, 8,180, 0, 9, 8,181, 0, 9, 8,182, 0, 4, 8,183, 0, 9, 8,184, 0, 9, 8,185, 0, 9, 8,186,
+ 1, 91, 0, 6, 0, 4, 0,129, 0, 4, 0,131, 0, 4, 7, 26, 0, 0, 8,187, 0, 0, 8,188, 0, 2, 0, 37, 1, 92, 0, 16,
+ 0, 2, 6,239, 0, 2, 6,240, 0, 2, 8,189, 0, 2, 7,229, 0, 2, 8,190, 0, 2, 0, 68, 0, 7, 2,155, 0, 7, 8,191,
+ 0, 7, 8,192, 0, 2, 1, 34, 0, 0, 8,193, 0, 0, 4, 47, 0, 2, 8,194, 0, 2, 0, 37, 0, 4, 8,195, 0, 4, 8,196,
+ 1, 93, 0, 9, 0, 7, 8,197, 0, 7, 8,198, 0, 7, 7,243, 0, 7, 0,113, 0, 7, 8,199, 0, 7, 5, 80, 0, 2, 8,200,
+ 0, 0, 8,201, 0, 0, 0, 37, 1, 94, 0, 4, 0, 7, 8,202, 0, 7, 8,203, 0, 2, 8,200, 0, 2, 0, 37, 1, 95, 0, 3,
+ 0, 7, 8,204, 0, 7, 8,205, 0, 7, 0, 15, 1, 96, 0, 7, 0, 0, 1,190, 0, 2, 4,115, 0, 2, 4,116, 0, 2, 4,117,
+ 0, 2, 4, 67, 0, 4, 0,131, 0, 4, 3,168, 1, 97, 0, 7, 0, 7, 8,206, 0, 7, 8,207, 0, 7, 8,208, 0, 7, 2, 9,
+ 0, 7, 8,209, 0, 7, 8,210, 0, 7, 8,211, 1, 98, 0, 4, 0, 2, 8,212, 0, 2, 8,213, 0, 2, 8,214, 0, 2, 8,215,
+ 1, 99, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 1,100, 0, 2, 0, 0, 0,170, 0, 0, 8,216, 1,101, 0, 1, 0, 0, 0, 20,
+ 1,102, 0, 10, 0, 0, 8,217, 0, 0, 8,218, 0, 0, 8,219, 0, 0, 8,220, 0, 2, 8,189, 0, 2, 8,221, 0, 7, 8,222,
+ 0, 7, 8,223, 0, 7, 8,224, 0, 7, 8,130, 1,103, 0, 2, 0, 9, 8,225, 0, 9, 8,226, 1,104, 0, 11, 0, 0, 4,117,
+ 0, 0, 0, 17, 0, 0, 8,200, 0, 0, 0,113, 0, 0, 8,227, 0, 0, 0,110, 0, 0, 0,183, 0, 7, 8,228, 0, 7, 8,229,
+ 0, 7, 8,230, 0, 7, 8,231, 1,105, 0, 8, 0, 7, 7,147, 0, 7, 0,130, 0, 7, 4, 47, 0, 7, 2, 81, 0, 7, 8,232,
+ 0, 7, 0,208, 0, 7, 8,233, 0, 4, 0, 17, 1,106, 0, 4, 0, 2, 8,234, 0, 2, 8,235, 0, 2, 8,236, 0, 2, 0, 37,
+ 1,107, 0, 1, 0, 0, 0, 20, 1,108, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 8,237, 1,109, 0, 10,
+ 0, 2, 3,150, 0, 2, 0, 19, 0, 7, 3,248, 0, 7, 8,238, 0, 7, 8,239, 0, 7, 8,240, 0, 7, 8,241, 1,108, 8,242,
+ 1,108, 8,243, 1,108, 8,244, 0, 62, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, 24, 8,245, 0, 24, 8,246, 1,109, 8,247,
+ 0, 7, 8,248, 0, 7, 8,249, 0, 7, 8,250, 0, 7, 8,251, 1,110, 0, 4, 0, 48, 2,149, 0, 7, 8,252, 0, 7, 1, 93,
+ 0, 7, 0, 37, 0,176, 0, 17, 0, 27, 0, 31, 1,110, 8,253, 0, 62, 8,242, 0, 52, 1, 77, 0, 2, 0, 19, 0, 2, 5, 81,
+ 0, 4, 0,110, 0, 7, 8,254, 0, 7, 2, 6, 0, 7, 8,255, 0, 7, 9, 0, 0, 7, 1, 93, 0, 7, 9, 1, 0, 2, 1, 47,
+ 0, 0, 9, 2, 0, 0, 3,112, 0, 0, 0, 96, 1,111, 0, 10, 0, 4, 0, 17, 0, 4, 0,130, 0, 4, 0, 19, 0, 4, 3, 85,
+ 0, 4, 9, 3, 0, 4, 9, 4, 0, 4, 9, 5, 0, 0, 0, 96, 0, 0, 0, 20, 0, 9, 0, 2, 0, 89, 0, 6, 1,111, 9, 6,
+ 0, 4, 9, 7, 0, 4, 9, 8, 0, 4, 9, 9, 0, 4, 0, 37, 0, 9, 9, 10, 1,112, 0, 5, 0, 7, 2, 75, 0, 7, 2,189,
+ 0, 7, 1,219, 0, 2, 9, 11, 0, 2, 0, 37, 1,113, 0, 5, 0, 7, 2, 75, 0, 7, 9, 12, 0, 7, 9, 13, 0, 7, 9, 14,
+ 0, 7, 2,189, 1,114, 0, 7, 0, 4, 9, 15, 0, 4, 9, 16, 0, 4, 9, 17, 0, 7, 9, 18, 0, 7, 9, 19, 0, 7, 9, 20,
+ 0, 7, 9, 21, 1,115, 0, 26, 0, 32, 9, 22, 1,113, 3, 81, 1,113, 9, 23, 1,112, 9, 24, 1,113, 7,136, 0, 7, 9, 25,
+ 0, 7, 9, 26, 0, 7, 9, 27, 0, 7, 9, 28, 0, 7, 9, 19, 0, 7, 9, 20, 0, 7, 2,189, 0, 7, 2,166, 0, 7, 9, 29,
+ 0, 7, 9, 30, 0, 7, 0,110, 0, 7, 9, 31, 0, 4, 9, 15, 0, 4, 9, 32, 0, 4, 0, 37, 0, 4, 0, 82, 0, 4, 9, 33,
+ 0, 2, 0, 19, 0, 2, 9, 34, 0, 2, 9, 35, 0, 2, 3,115, 1,116, 0,112, 0, 27, 0, 31, 0, 4, 0, 19, 0, 2, 0, 17,
+ 0, 2, 8,111, 0, 2, 9, 36, 0, 2, 9, 37, 0, 2, 8, 42, 0, 2, 9, 38, 0, 2, 9, 39, 0, 2, 9, 40, 0, 2, 9, 41,
+ 0, 2, 9, 42, 0, 2, 9, 43, 0, 2, 9, 44, 0, 2, 9, 45, 0, 2, 9, 46, 0, 2, 9, 47, 0, 2, 9, 48, 0, 2, 9, 49,
+ 0, 2, 1,210, 0, 2, 7,129, 0, 2, 7,105, 0, 2, 9, 50, 0, 2, 9, 51, 0, 2, 3,113, 0, 2, 3,114, 0, 2, 9, 52,
+ 0, 2, 9, 53, 0, 2, 9, 54, 0, 2, 9, 55, 0, 2, 9, 56, 0, 2, 9, 57, 0, 7, 9, 58, 0, 7, 9, 59, 0, 7, 9, 60,
+ 0, 2, 9, 61, 0, 2, 9, 62, 0, 7, 9, 63, 0, 7, 9, 64, 0, 7, 9, 65, 0, 7, 7,111, 0, 7, 0, 93, 0, 7, 2,166,
+ 0, 7, 7,117, 0, 7, 9, 66, 0, 7, 9, 67, 0, 7, 9, 68, 0, 7, 9, 69, 0, 7, 0, 57, 0, 4, 7,112, 0, 4, 7,110,
+ 0, 4, 9, 70, 0, 7, 7,113, 0, 7, 7,114, 0, 7, 7,115, 0, 7, 9, 71, 0, 7, 9, 72, 0, 7, 9, 73, 0, 7, 9, 74,
+ 0, 7, 9, 75, 0, 7, 9, 76, 0, 7, 9, 77, 0, 7, 9, 78, 0, 7, 3, 37, 0, 7, 0,110, 0, 7, 9, 79, 0, 7, 9, 80,
+ 0, 7, 9, 81, 0, 7, 9, 82, 0, 7, 9, 83, 0, 7, 9, 84, 0, 7, 2,115, 0, 7, 9, 85, 0, 7, 9, 86, 0, 4, 9, 87,
+ 0, 4, 9, 88, 0, 7, 9, 89, 0, 7, 9, 90, 0, 7, 9, 91, 0, 7, 9, 92, 0, 7, 9, 93, 0, 7, 9, 94, 0, 7, 9, 95,
+ 0, 7, 9, 96, 0, 7, 3,109, 0, 7, 3,107, 0, 7, 3,108, 0, 7, 9, 97, 0, 7, 9, 98, 0, 7, 9, 99, 0, 7, 9,100,
+ 0, 7, 9,101, 0, 7, 9,102, 0, 7, 9,103, 0, 7, 9,104, 0, 7, 9,105, 0, 7, 3, 44, 0, 7, 9,106, 0, 7, 9,107,
+ 0, 7, 9,108, 0, 7, 9,109, 0, 7, 9,110, 0, 7, 9,111, 0, 7, 9,112, 0, 0, 9,113, 0, 65, 3, 70, 0, 65, 9,114,
+ 0, 32, 9,115, 0, 32, 9,116, 0, 36, 0, 80, 0,155, 3, 68, 0,155, 9,117, 0,142, 0, 38, 0,142, 0, 0, 0,142, 0, 1,
+ 1,116, 9,118, 1,115, 3,149, 1,114, 8, 36, 1,117, 9,119, 0, 9, 9,120, 1,118, 9,121, 1,118, 9,122, 0, 12, 9,123,
+ 0, 12, 9,124, 0,156, 3, 69, 0, 32, 9,125, 0, 32, 9,126, 0, 32, 9,127, 0, 12, 9,128, 0, 12, 9,129, 0, 7, 0,212,
+ 0, 7, 4, 89, 0, 4, 2,117, 0, 4, 0, 19, 0, 4, 7,112, 0, 4, 9,130, 0, 4, 9,131, 0, 4, 9,132, 0, 4, 0, 57,
+ 0, 2, 0,219, 0, 2, 9,133, 0, 2, 9,134, 0, 2, 9,135, 0, 2, 3, 62, 0, 2, 9,136, 0, 0, 9,137, 0, 2, 9,138,
+ 0, 2, 9,139, 0, 2, 9,140, 0, 9, 9,141, 0,131, 3,189, 0,129, 0, 34, 1,119, 9,142, 0, 7, 3,161, 0, 7, 9,143,
+ 0, 7, 9,144, 0, 7, 3,251, 0, 7, 9,145, 0, 7, 3, 46, 0, 7, 3, 37, 0, 7, 9,146, 0, 7, 2, 8, 0, 7, 9,147,
+ 0, 7, 9,148, 0, 7, 9,149, 0, 7, 9,150, 0, 7, 9,151, 0, 7, 9,152, 0, 7, 3,162, 0, 7, 9,153, 0, 7, 9,154,
+ 0, 7, 9,155, 0, 7, 3,163, 0, 7, 3,159, 0, 7, 3,160, 0, 4, 9,156, 0, 4, 0, 94, 0, 4, 9,157, 0, 4, 9,158,
+ 0, 2, 9,159, 0, 2, 9,160, 0, 2, 9,161, 0, 2, 9,162, 0, 2, 9,163, 0, 2, 0, 37, 0, 4, 0, 70, 0,130, 0, 8,
+ 1,119, 9,164, 0, 7, 9,165, 0, 7, 9,166, 0, 7, 1,164, 0, 7, 9,167, 0, 4, 0, 94, 0, 2, 9,168, 0, 2, 9,169,
+ 1,120, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 9,170, 1,121, 0, 6, 1,121, 0, 0, 1,121, 0, 1,
+ 1,120, 9,171, 0, 4, 9,172, 0, 2, 9,173, 0, 2, 0, 19, 1,122, 0, 5, 1,122, 0, 0, 1,122, 0, 1, 0, 12, 9,174,
+ 0, 4, 9,175, 0, 4, 0, 19, 1,123, 0, 9, 1,123, 0, 0, 1,123, 0, 1, 0, 12, 0,129, 1,122, 9,176, 0, 4, 0, 19,
+ 0, 2, 9,173, 0, 2, 9,177, 0, 7, 0, 95, 0, 0, 9,178, 0,189, 0, 6, 0, 27, 0, 31, 0, 12, 4,131, 0, 4, 0, 19,
+ 0, 2, 9,179, 0, 2, 9,180, 0, 9, 9,181, 1,124, 0, 13, 0, 27, 0, 31, 1,125, 9,182, 1,125, 9,183, 0, 12, 9,184,
+ 0, 4, 9,185, 0, 2, 9,186, 0, 2, 0, 37, 0, 12, 9,187, 0, 12, 9,188, 0, 12, 9,189, 0, 12, 9,190, 0, 12, 9,191,
+ 0, 12, 9,192, 1,125, 0, 29, 1,125, 0, 0, 1,125, 0, 1, 0, 9, 9,193, 0, 4, 6,218, 0, 4, 0, 37, 0,199, 5,168,
+ 0, 0, 9,194, 0, 2, 9,195, 0, 2, 9,196, 0, 2, 6,239, 0, 2, 6,240, 0, 2, 9,197, 0, 2, 9,198, 0, 2, 3, 85,
+ 0, 2, 6,253, 0, 2, 9,199, 0, 2, 0, 70, 0, 4, 1,160, 1,126, 9,200, 1,127, 9,201, 1,128, 9,202, 0, 4, 9,203,
+ 0, 4, 9,204, 0, 9, 9,205, 0, 12, 9,206, 0, 12, 9,188, 0, 12, 6,255, 0, 12, 9,207, 0, 12, 9,208, 1,129, 0, 12,
+ 1,129, 0, 0, 1,129, 0, 1, 0, 0, 9,209, 1,130, 9,210, 0, 2, 0, 17, 0, 2, 0, 15, 0, 2, 9,211, 0, 2, 9,212,
+ 0, 2, 9,213, 0, 2, 9,214, 0, 2, 9,215, 0, 2, 0, 37, 1,131, 0, 6, 1,131, 0, 0, 1,131, 0, 1, 0, 12, 9,216,
+ 0, 0, 9,217, 0, 4, 9,218, 0, 4, 9,219, 0,207, 0, 8, 0,207, 0, 0, 0,207, 0, 1, 0, 0, 9,209, 0, 26, 0, 30,
+ 1,132, 6,233, 0, 9, 9,220, 1,130, 9,210, 1,133, 9,221, 1,134, 0, 8, 1,134, 0, 0, 1,134, 0, 1, 0, 9, 0, 2,
+ 0, 9, 9,222, 0, 0, 4,210, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 9,223, 1,135, 0, 8, 0, 0, 9,224, 0, 7, 9,225,
+ 0, 4, 9,226, 0, 2, 9,227, 0, 2, 9,228, 0, 4, 0, 37, 0, 2, 0, 19, 0, 2, 1, 13, 1,136, 0, 5, 0, 7, 7,206,
+ 0, 7, 7,207, 0, 7, 2,189, 0, 2, 1,223, 0, 2, 1,224, 1,137, 0, 5, 1,136, 0, 2, 0, 4, 0, 54, 0, 7, 9,229,
+ 0, 7, 7,206, 0, 7, 7,207, 1,138, 0, 4, 0, 2, 9,230, 0, 2, 9,231, 0, 2, 9,232, 0, 2, 9,233, 1,139, 0, 2,
+ 0, 43, 5,237, 0, 26, 8, 30, 1,140, 0, 3, 0, 24, 9,234, 0, 4, 0, 19, 0, 4, 0, 37, 1,141, 0, 6, 0, 7, 0,110,
+ 0, 7, 2,141, 0, 7, 9,235, 0, 7, 0, 37, 0, 2, 0,218, 0, 2, 9,236, 1,142, 0, 7, 1,142, 0, 0, 1,142, 0, 1,
+ 0, 27, 5,240, 0, 0, 9,237, 0, 4, 9,238, 0, 4, 0, 94, 0, 0, 4,210, 1,143, 0, 6, 0, 12, 8, 81, 0, 0, 9,224,
+ 0, 7, 0, 61, 0, 7, 9,223, 0, 4, 0, 17, 0, 4, 0, 19, 1,144, 0, 3, 0, 7, 9,239, 0, 4, 0, 19, 0, 4, 0, 37,
+ 1,145, 0, 15, 1,145, 0, 0, 1,145, 0, 1, 1, 57, 8, 69, 1,143, 0, 62, 0, 12, 3, 12, 0, 35, 0, 50, 1,144, 9,240,
+ 0, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0,254, 0, 4, 9,238, 0, 0, 9,237, 0, 4, 9,241, 0, 7, 9,242,
+ 1,146, 0, 2, 0, 0, 9,243, 0, 0, 9,244, 1,147, 0, 4, 1,147, 0, 0, 1,147, 0, 1, 0,152, 2,224, 0, 12, 9,245,
+ 1,148, 0, 24, 1,148, 0, 0, 1,148, 0, 1, 0,152, 7,182, 1,147, 9,246, 0, 12, 3, 12, 0, 12, 9,247, 0, 7, 9,223,
+ 0, 7, 9,248, 0, 7, 0, 92, 0, 7, 0, 93, 0, 7, 8,126, 0, 7, 8,127, 0, 7, 2,156, 0, 7, 8,130, 0, 7, 7,184,
+ 0, 7, 8,131, 0, 4, 9,249, 0, 4, 0, 19, 0, 4, 8,124, 0, 4, 0, 37, 0, 7, 8,128, 0, 7, 8,129, 0, 0, 8,132,
+ 0, 0, 8,133, 1,149, 0, 6, 1,149, 0, 0, 1,149, 0, 1, 0, 12, 9,250, 0, 4, 0, 19, 0, 4, 2, 80, 0, 0, 9,251,
+ 1,150, 0, 10, 1,150, 0, 0, 1,150, 0, 1, 0, 27, 5,240, 0, 0, 9,252, 0, 4, 9,253, 0, 4, 9,254, 0, 0, 9,237,
+ 0, 4, 9,238, 0, 2, 0, 19, 0, 2, 9,255, 1,151, 0, 6, 1,151, 0, 0, 1,151, 0, 1, 0, 12, 10, 0, 0, 0, 4,210,
+ 0, 4, 0, 19, 0, 4, 10, 1, 1,152, 0, 5, 1,152, 0, 0, 1,152, 0, 1, 0, 0, 9,237, 0, 4, 9,238, 0, 7, 2,133,
+ 0, 39, 0, 7, 0,152, 3, 7, 1,147, 9,246, 0, 12, 10, 2, 0, 12, 10, 3, 0, 12, 10, 4, 0, 4, 0, 19, 0, 4, 0,219,
+ 1,153, 0, 2, 0, 27, 0, 31, 0, 39, 0, 75, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0};
diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c
index e3fdee554f7..fa000034caf 100644
--- a/source/blender/editors/datafiles/blenderbuttons.c
+++ b/source/blender/editors/datafiles/blenderbuttons.c
@@ -1,4571 +1,5538 @@
/* DataToC output of file <blenderbuttons> */
-int datatoc_blenderbuttons_size= 146052;
+int datatoc_blenderbuttons_size= 177005;
char datatoc_blenderbuttons[]= {
-137, 80, 78, 71,
- 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 2, 88, 0, 0, 2, 0, 8, 6, 0, 0, 0, 94,187, 18, 70, 0, 0, 0,
- 4,115, 66, 73, 84, 8, 8, 8, 8,124, 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,
-155,120, 0, 0, 0, 25,116, 69, 88,116, 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,
-111,114,103,155,238, 60, 26, 0, 0, 32, 0, 73, 68, 65, 84,120,156,236,157,119,120, 20,213,254,198,223, 51,101,251,166,147, 30,
- 58, 4,129,208, 3, 74, 2,130,116, 17, 69,184,162,128,160,226,245, 94, 44,168, 88,126,130, 5, 21, 5,162, 94, 21, 69, 17,229,
- 90, 16, 68,175,168, 32,241, 42, 77, 1, 41, 82, 69, 18,138, 92, 74,164,133,146, 72,250,246,153,243,251, 99,119,134,205,102, 91,
- 96,163,128,231,243, 60,243,236, 78,123,231,156,169,239,124, 79, 25, 66, 41, 69, 67, 65, 8,233, 64, 41, 45, 96,154, 76,147,105,
- 50, 77,166,201, 52,153, 38,211,252, 43,193,213,119, 5, 66, 72,196, 29, 25, 33,132,122,134, 62,151,186,102,164,180,188, 53,149,
- 33,130,154,125, 60,154,207, 69, 80,179, 33,211,217,231, 82,213, 84,242, 27, 73, 93,239,125, 24,169,253,233,149,206,136,157,247,
- 13,173,121,177, 90,254, 52, 35,117,142,250, 57,238,207, 69, 80,179, 33,211,217,231, 82,211,244, 61,127, 34,161,235,239,156,188,
-216,253,233, 39,157, 23,125,222,255, 81,154, 23,170, 21, 70, 58, 35,189, 79, 35,254,108,186,148, 17,234,179,112, 67, 24, 12, 0,
-160,148, 18, 47,125,114,169,106, 42, 16, 66,168,162, 31, 9, 34,169,229, 97,109,164, 53,125,246,103,164,120,142, 82, 74, 8, 33,
-235, 0,244,137,144,230, 90,143,230, 69, 31,119,159,188, 70, 68,183, 33,205, 21, 16,185,243,190,161, 53,189,167, 93,204,185,234,
-171, 25,137,243,222,223,113,143,164,102,164,174, 37,159,245, 35,114, 45, 53,196, 57,239,231,252,185,104, 93, 95,205, 72, 92, 75,
-190,154,145, 56,239,255, 8, 77,101,250,197, 92, 75,254, 52, 35,113,222, 7, 58,246, 23,171,123,185, 80,175, 8, 86, 67,238, 24,
-207, 1,232, 27,105,205, 72,167,185, 33, 76,102,164,163, 56, 13,169,137,200, 30,163,231, 60,154,207, 69, 80,179,111,164,142,145,
-239,185, 19,137,183, 46,111,205, 72,157,155,126,210,121,209,199,201,159,230,197,166, 55, 64, 58, 47, 10,127,154, 23,123,222,255,
- 81,154,136,236, 49,138,200,181,228,163, 25,177,107,201, 55,191, 17,140, 8,246, 5, 34,119, 45,249, 73,231, 69, 31, 39,127,154,
- 23,155,222, 0,233,188, 40,252,105, 70, 48, 34, 26,113,221,203,129,122, 69,176, 26,138,134, 48, 66,128,251,162,139,164,118, 67,
- 68,113, 26, 42,210, 22,169, 40,142, 31,221,117, 17,148,139, 88,180, 73,193,147,190,136,188,209,250,209,126,142, 16,242,108,164,
-117, 35, 9,187,150,216,181,132, 75,236, 90,242,119,222, 92,236,181,212, 80, 47,207,222,154,145, 50, 66,126,242,126, 81,215,146,
-239,186,145,184,150, 66,104, 94, 84,132, 57, 80,254, 47, 70,247,114,161,222,117,176, 26,138, 72,148,247, 6,208,139,104, 84, 44,
-210, 52, 80, 58,251, 94, 14,121, 71, 3,164,147, 16,242, 92, 3,229,253,114,217,167,236, 90, 98,215, 82, 68,136,228,181,228,115,
- 78, 70, 36,173,145, 62,207,253,105, 70, 98, 27,222, 26,145, 58, 71, 27, 58,239,145,188,150, 26,226,216, 95, 46,212, 59,130,213,
- 80,111,199,151,131,102, 67,104, 55, 80,222,215,161, 1,222, 14, 26,160, 94,215, 58, 68, 62, 42,240, 28, 34, 88,228,168,228, 57,
-146,105,109,200, 98,194,134, 56, 55, 27,242,124,143,100, 61,143, 6,202,251, 58, 92, 30,199,125, 29, 34,156,206, 72, 93, 75,126,
-142,249, 58, 92,100, 90,253,237,191, 72, 23, 97, 71,242,220,108, 72,205, 72,104, 55, 68, 58, 3,232,174,195, 95, 32,114,165, 64,
-104, 3,118,211,192, 96, 48, 24, 12, 6,131,241, 87, 36, 96, 4,171,107,215,174,249,122,189,190, 85,160,249, 53, 53, 53,197,187,
-118,237,186,174, 97,146,197, 96, 48,174, 36, 8, 33, 28,206, 87, 73,144, 1, 80,202,222,238, 24, 12,198, 21, 76, 64,131,165,209,
-104, 90,172, 95,191, 62, 83,150,101,184, 92, 46, 72,146, 4, 73,146,224,114,185, 96,183,219,241,183,191,253,173,222,197,139,157,
- 59,119, 94,207,113, 92,179,250,172, 35, 73,210,209, 95,126,249,165, 87,160,249,201,201,201,155, 0,180, 32,228,124,212,145, 16,
- 2,101,220,123, 58,199,169, 85,206, 78, 30, 59,118,172,107, 48, 77, 66, 72, 11,111, 61, 95, 45, 63,186, 65, 53,175,186,234,170,
-237,130, 32,100,248, 91, 63,144,182, 44,203,135, 11, 10, 10,114, 2,105, 50, 34, 75,231,206,157,215,243, 60, 95,239,243,115,215,
-174, 93, 1,207,207, 14, 29, 58,252,204,113, 92, 26, 80,247, 24, 7, 56,159,120, 73,146,126,253,229,151, 95,122, 5, 50, 32,169,
-169,169,155, 40,165, 45,194, 60, 47, 21,142, 31, 59,118, 44, 59, 80, 58,149,235, 40, 88, 58,253,104, 7,213,244,210,224,210,211,
-211,243, 18, 19, 19,239,173,169,169,177, 2,160, 28,199,209,118,237,218,213,210,151, 36,233,236,190,125,251, 58,132,210, 99, 48,
- 24,140,203,129,128, 38, 73,150,101,206,102,179,225,192,129, 3,240,119,159,231, 56, 78,170,239,198, 40,165,153,107, 22, 47, 76,
- 50, 36, 38, 67,114,216,161,107,148,164,106,151,237, 45,128,228,112, 64,118, 58,208, 40,251, 26, 37, 13,232,219,183, 47, 31, 66,
- 54, 99,242,228,201, 73, 81, 81, 81,176, 90,173,176, 90,173,176,217,108,176,217,108,176,219,237,176,219,237,112, 56, 28,112, 56,
- 28,112, 58,157,176,217,108, 40, 40, 40, 8,154,118, 66, 72,198,131, 15, 62,168,106,218,108, 54, 88,173, 86, 85,203,102,179,169,
-154,118,187, 29, 54,155, 13,123,246,236, 9,170, 41, 8, 66,198,206,157, 59,147, 52, 26, 13, 40,165,144,101, 25,148,210, 90,131,
-207,190, 66,110,110,174, 35,212, 62,101, 68,148,204,165, 47,205, 72,210, 37, 52,130,236,116, 34,161,115, 55, 0,238, 99,113, 98,
-205,119,144,157, 78,200, 78, 39,154,222, 56, 82,157,222,167, 79,159, 80,231,103,211, 47,166, 77,141,213, 68, 69,193,101,181,162,
-249,176, 17,234,140,194,119, 94, 7,117, 58, 65, 93, 14,116,124,228,105, 0, 64, 73, 73,137,165,109,219,182, 39,225,174,167, 16,
- 40,194,147,113,228,200,145, 36, 37, 13,222, 16, 66,192,113, 92,173, 97,195,134, 13, 24, 55,110, 92,168,188,103, 60,245,212, 83,
- 73,202, 53,226,125,174, 59,157, 78,245,250,113,185, 92,112, 58,157,176,219,237,248,249,231,159, 67,105,130, 16,194,165,166,166,
-190,212,187,119,239, 9,139, 22, 45, 50,125,245,213, 87,166,230,205,155, 67,163,209,128,231,121,240, 60, 15,142,227,192,243, 60,
-134, 15, 31,254,151,169,155,193, 96, 48,174,124, 2, 26, 44,135,195,113,100,208,160, 65, 20, 0,236,118,123,186, 86,171,213,120,
-207,151,101, 57, 45, 55, 55,247, 87,223,245, 66, 21, 29, 26, 18,147,241, 65,243,120, 0,192,168, 67,165, 0,220, 15,133, 37,215,
-118, 81,151, 25,243, 91,185,123, 89,131, 1, 28,199, 5,189,233, 18, 66, 96, 54,155, 49,104,208, 32,104,181, 90,116,235,214, 13,
- 26,141, 6,162, 40, 6, 28,194,193,100, 50,225,249,231,159, 7, 0, 8,130, 0,147, 94,135,251,122, 95, 3, 61,161,248,224,151,
-253,176, 73, 50, 4, 65,128, 32, 8, 16, 69,177, 78, 68,202, 31, 26,141, 6, 5, 5, 5,224,121, 30,130, 32,212,250,229,121, 30,
-203,151, 47,199, 45,183,220, 2,158,231, 97, 52, 26,129,191, 80,101,192, 75, 5, 93, 66, 35,124,209,199, 29,136,188,253, 88,165,
- 58,253,187,209, 55,170,255,199,159,168, 6, 33, 4, 26,141, 38,188,227, 30, 21,133,255,222,114, 61, 0, 96,228,129, 51,234, 57,
-179,251,245, 25, 16,181, 90, 8,162, 6, 29, 38, 63,133,146,146, 18,203,200,145, 35, 55,232,245,250, 21,161, 52, 41,165, 56,122,
-244,168,170, 37,138, 98,157,243,158,227, 56,124,248,225,135,248,237,183,223,194,202,187,197, 98,193,204,153, 51,213,188,249,211,
-245,254, 31, 42,239,132, 16, 46, 37, 37,229,197,222,189,123,143, 91,180,104, 81, 28, 33, 4,115,231,206,133, 32, 8,184,225,134,
- 27,144,144,144,128,149, 43, 87, 66,163,209,224,241,199, 31, 15, 43,141, 12, 6,131,113,185, 16,208, 96,237,218,181,235,122,229,
-255, 53,215, 92,179,111,195,134, 13, 87,121,133,242,225,114,185, 52, 46,151, 43, 83, 41, 54,116,185, 92,176,217,108, 24, 51,102,
- 76,208, 55,122,201, 97,175, 53, 30,232, 38, 29,206,131, 75,193,110,183, 99,212,168, 81, 0, 16,210, 92,133,249, 96,128,205,102,
-131, 32, 8,104,217, 36, 17, 79,143,202, 70, 46, 79, 97, 41, 5, 80, 82,141, 59, 83, 5,236,202,200,196,156,163,165,248,173,162,
- 10,130, 16, 94,105,169, 44,203,181, 12,149,239,255,121,243,230, 97,244,232,209,224,121,190, 78, 17, 18,227,143, 65,118, 58,107,
-141,251, 59, 6,245, 61, 54, 46,171, 21, 0,192,123, 25,114, 81, 20,161,213,235,193,139, 34, 4,173, 6, 37, 37, 37,150,129, 3,
- 7,254,100, 48, 24, 22,164,164,164,156, 56,126,252,120, 64, 61, 66, 8, 40,165, 16, 69, 17,130, 32, 4, 60,231, 63,252,240, 67,
- 44, 92,184, 16, 61,122,244, 8,235,156,183,219,237,208,104, 52,152, 49, 99, 70,157,249,239,188,243, 78, 29,131, 21, 66,143, 0,
-224,146,147,147,239, 91,188,120,113,180,178,253,132,132, 4,136,162,136,172,172, 44, 68, 69, 69, 97,195,134, 13,144, 36, 41,108,
-179,202, 96, 48,254,178,136, 0, 58, 3, 72, 4, 32, 1,168, 4, 16,235, 53,255,172,231, 55,209,107,124,155, 31,157,238,158,101,
-148,249,202,184, 29,128,214,207,244, 82, 0, 6,207, 96, 3,176, 9, 64,150,215,118,148,245,188,211,177, 13,240, 24, 44,226,238,
- 85,117, 45,128,190,254, 58,191, 83,138, 11,247,239,223,239,183,184,208,155, 80,205, 59,117,141,146,212,200,213,231, 45, 19,212,
-233,163,139,202,212, 27,236,127,123,180,134,206,108, 66,246,115,175, 4,221,150, 39,237,176,219,237, 56,115,230, 76,157, 55,239,
- 11, 53, 88, 0,224,116, 58, 97, 48,232,240,195,187,215,162,248,176, 11, 51,242,143, 97,217,214, 35, 16, 4, 1,195,174,106,141,
-191,185,128,188,120, 61,254,233,146,224,144,105, 88, 15, 48, 74,105, 29,115,229,109,178, 8, 33,234, 52,246,176,249,115, 72,232,
-220, 77,141, 92, 45,106, 28,165, 78, 87,162, 86, 0,176,172, 75, 51,232,163,204,200,122,104, 74, 72, 61, 66, 8,154, 15, 27,161,
- 70,174,190,233,214, 2,130, 70, 3, 81,167,197,223,126, 57, 6,192, 93, 44,216,175, 99,187,117,101,188,246,163, 59,238,184,227,
-240,154, 53,107,140,225,164, 85,163,209,212, 50,108,254,204,149, 32, 8,112,250,152,198, 64,233,180,217,108, 1,141,147,114, 93,
-213, 39,130, 5, 0, 53, 53, 53,246,101,203,150, 97,206,156, 57, 72, 72, 72,192,160, 65,131,144,146,146,130, 37, 75,150,128, 82,
-138, 7, 30,120, 0, 6,131, 1, 6,131,129,157,243, 12,198, 95,156, 16, 94,228,218,169, 83,167,102,231,229,229,205,236,217,179,
-231,167,155, 54,109, 90, 76, 8,201, 87,102, 82, 74,135,121, 52,242,189,198,187,163,182,201, 18, 1, 36, 18, 66,242,149,229,189,
-199,189,166, 15, 0,160, 85,198,167, 78,157,154,149,151,151, 55,115,202,148, 41, 79,206,154, 53, 75, 51,117,234,212,142,121,121,
-121, 51,149,237,248, 75, 7,112, 62,130, 21,180, 23, 96,135,195,113,100,192,128, 1, 97,181,248,177, 88, 44,167,130,205, 87, 12,
-154,191, 74,222,202, 52, 93,148, 25,134,168, 40,144,224,165,131, 42, 78,167, 19,130, 32,128,227, 56,172, 90,181, 10, 6,131, 1,
- 67,135, 14,189,224, 34, 66,197,180,105,181, 26, 8,177, 28,238,120,109, 59,206,158,171, 81,139, 4, 87, 23, 29,195, 86,131, 1,
- 79,183,235, 8,115, 85, 17, 42,108,246,144,154, 64,224, 8,214,232,209,163, 97,181, 90,193,113,156, 58,141,227,184, 6,237,203,
-139, 17,156, 64,141, 16, 8, 33,208, 71, 71, 65,111, 54,131, 23, 66, 85,191,114, 67, 41, 61,111,132,180, 90,136, 58, 45, 4,141,
-187,196, 93,137, 92,149,241,218,143, 78,156, 56,241, 19, 0,125,184, 6, 75,137, 96, 5, 51, 87,130, 32,192,225,112,132,101, 94,
-108, 54, 27, 52,154,243, 53, 1,142, 30, 61,170,254,247,103,176, 66,228,153, 18, 66,100, 66,136,220,162, 69, 11,117,157,228,228,
-100,196,198,198, 66,150,101,200,178, 12,189, 94, 15,131,193, 80,107,187, 12, 6,227, 47, 75, 48, 47,162,203,203,203,155,233,109,
- 96,128,218,134,198,219, 56,249,152, 40,133,107,167, 78,157,154, 21, 44, 1,222,102, 75,153,166,108,151, 16,146, 63,107,214,172,
- 97, 33,210,161, 68,210,206, 23, 17, 6,235, 21,214,187,184, 48, 18,248, 43, 98,241,126,128, 25, 98,162,161, 53,153,224,169,126,
- 21,212,216, 17, 66,224,112, 56,212, 58, 39,247,222,123,111,192,183,122,239,186, 41,161,176,219,237,224, 57, 30,208, 53,135,140,
- 45,234,195, 74, 29, 52, 26, 20, 53,233, 4,114,234, 4, 4, 33,188,250,254, 74, 4, 75, 49, 81, 15, 60,240, 0,230,207,159,175,
- 86, 76, 6, 0,158,231,209,166, 77, 27, 28, 58,116, 40, 44, 77, 70,100,161, 52,112, 52, 82,153,174,143,142,130,206,108, 6, 31,
- 70,164, 81,153,175,214, 97,210,235,192,107, 52, 16, 52,238, 98,193,155,110,186,105, 93, 89, 89,217, 71,237,219,183,255, 31,220,
-221, 24,132,116, 66,202,245,227,239, 60,255,232,163,143,106,153,171,250, 68,176,148,235,200, 27,127,197,133, 35, 71,142, 12, 55,
-130, 69, 9, 33, 84, 20, 69, 12, 24, 48, 0, 29, 59,118,196,178,101,203, 32,203, 50,238,191,255,126, 24, 12, 6,204,158, 61, 27,
- 46,151, 11,121,121,121, 44,130,197, 96, 48,130,121, 17,203,148, 41, 83,158, 36,132,228,123, 34, 73,133,158,229,253, 25, 41,127,
-116, 71,109,147,118,214,223, 66,222,145, 44,111,147,229,253, 95, 97,234,212,169, 89,126,210,161, 70,204, 84,131,229,229, 26, 27,
-148,178,189, 5,106,133,118,165, 88,144, 16,130,239,114,174,130,214,108,130,222,108, 70,175,165, 63, 2,112,191, 53,227,197, 87,
- 67,106, 58,157, 78,213, 56,149,150,150,134, 44, 34, 12, 7,167,211, 9, 94, 35,226, 39,179, 8, 42,242,181, 30, 88,162, 40,130,
- 19, 68, 20, 37,102,130, 8, 43, 33, 72,174,176, 30, 14, 74, 36,195,187,245,212, 29,119,220, 1,142,227, 84,147,213,165, 75, 23,
-239, 85,216, 19,231, 15,230,228,247, 43,240,237,109,238,107,213,187, 88, 48,191, 71, 43,232,162,204,208,153, 76,232,179,124,147,
- 90,156,139,217,239,133,212,220,255,254,219, 40,124, 99, 22, 4, 81,196,136,157, 69, 0,220,145,171,220,171, 90,255,100, 55, 69,
-127,116,244,232,209,159, 0,112,183,221,118, 91,108,215,174, 93,195, 10,139, 17, 66,106, 85, 60, 23, 4,193,175,185, 18, 4, 1,
- 46,151, 43,172,188, 59, 28,142,176, 34, 73, 74, 20, 43, 20,148, 82,218,182,109, 91,240, 60,143,152,152, 24, 68, 69, 69,169, 45,
-104,149,200,149, 82,127, 51,220,235,146,193, 96, 92,217, 4,241, 34,182, 89,179,102, 21,206,154, 53, 75,141, 36,121,150, 15,101,
-174,110,128,219, 76, 37, 42,230, 12,238,186, 84,254,234,103, 41,105,168,163,233,107,184, 0,119,100,203, 79, 58,212, 98, 73,191,
-181,179, 59,119,238,252,173,209,104,108, 30, 34,209, 42,245,233,116, 84,114,156,239,121, 64, 49, 87,132, 16,232,205,102,104,163,
-204,208,153,205,181,230,133,130, 16,162, 22, 17,242, 60,175, 62,116, 22, 44, 88, 0,179,217,140,187,238,186,235,130, 42,185,187,
- 13, 22,143,175, 53, 7, 0,141, 80,231,161,197,139, 34,142,198, 52, 6, 39,138, 16,164,240, 34, 4,229,229,229,224,121, 30,207,
- 62,251, 44,242,242,242,212,102,244,222, 77,235,149,101, 25,127, 14,222,149,220,107, 69, 85,163,162,212,243,211,123,122,168, 58,
-137,132, 16, 64,114,185, 91, 11,234,220,245, 32,149,200,149,221, 20,253,209, 85, 87, 93,165, 68,174, 56,163,209, 24,178,213,172,
-162,233, 93,223,208,215, 92, 41, 81, 82,229,191,211,233, 12,235,156, 87, 12,214,252,249,243,131,190,140, 40,219, 13,247, 60,229,
- 56, 14,235,215,175,199,206,157, 59,113,239,189,247,194, 96, 48,224,205, 55,223,132,203,229,194,244,233,211, 97, 48, 24,160,213,
-106, 67, 11, 49, 24,140,191, 50,113,138,193,241,152, 36, 0,181,235, 92,121,155,160, 64, 69,133,158,136,211,250, 16,219,250, 6,
-110, 99,230, 23, 37,146,230, 61,205,119,187,128,199, 96,249,126,203, 75,171,213, 54,223,184,113, 99,166, 44,203,144, 36, 9,193,
-126,237,118, 59,110,189,245,214,176, 59, 29,149,157,110,131,197,249,180,148,211, 69, 71, 65,107, 62,255, 0,243,122,136,133,188,
-139, 43, 17, 44,111,131,245,236,179,207, 66, 16, 4,204,159, 63, 31, 0,240,216, 99,143,213, 59,130, 69,101, 96,147,180, 22,105,
-115, 59,129,126,164,199,233,245,251, 32,138, 34, 82,122, 12,132,156,253, 55,148,106,163, 97,242,212,171, 10,167,216,177,180,180,
- 20,191,253,246, 27, 8, 33,120,228,145, 71,130,154,171, 85,171, 86,177, 58, 88,127, 2,138,193,226,120,119, 32,201,223,249,233,
- 61, 61,156,243,147,186, 92, 16,117,186, 90,173, 5,203,202,202, 62, 58,122,244,232, 22, 0,100,220,184,113,177, 70,163, 17,239,
-191,255,126, 13, 0,205,210,165, 75, 13,161, 52,189,235,241,249, 70,174,124, 13,150, 36,133, 46,194, 86, 94, 42,194,137,246,214,
-199, 96, 41,231, 55, 33, 4,146, 36,169,145, 43,167,211,169,142,235,116,186,144, 58, 12, 6,227,202, 39,196,119, 69,207,250,212,
-115, 34, 62,145,166,179,158,117,107, 25, 43,239,226, 64,175,255,222, 81, 17, 69,215,238, 83,116,232, 59, 93,249, 45,157, 53,107,
-214, 15, 74,228,202,107,122,173,116, 0, 1, 34, 88, 28,199,193,102,179, 97,239,222,189,193,247,198,249,229,195,238,116, 52,161,
-219,213, 24,243, 91, 57, 8, 33, 88,217,187, 61,244,102, 51, 52,102, 19,114,190, 88,171,222,176,139,242, 30,135,198,100, 70, 66,
-175,129, 33,245,148, 27,183,175,193, 42, 43, 43,131, 40,138,120,241,197, 23,193,113, 28, 94,122,233, 37,164,167,167,163,184,184,
- 24,125,250,244, 9,169,233,116, 58,193,201, 28,244,119,198, 67,255,207, 40,112,247,182, 66,214,141,255, 68,121,101, 51,236,182,
-155,208,182,250, 0,226,190,127, 14, 14,217, 21, 86, 55, 13,132, 16,184, 92, 46,252,240,195, 15, 16, 69, 17, 46,151, 75,125,248,
- 80, 74,213, 94,242,149, 78, 29, 95,122,233,165,176,246, 39, 35,178, 52,190,225,102,220,113,178, 6, 0,240,109,206, 85,208,153,
- 76,208, 70,153,209,235,171,245,234,249,121,120,230,163,208,152,204,136,237,222, 59, 44,205,118,247, 63,134,182,247, 61,138,146,
-146, 18,203,128, 46, 89,235,203,121,221,135, 29, 58,116, 80,235, 92, 25,141, 70,232,245,122,226, 25, 15,233,212,189, 77,121, 40,
-115,165,252, 15, 7,167,211, 89,167, 21,174, 63,194, 45, 34, 84,224, 56, 14,119,221,117, 23, 82, 83, 83, 49,103,206,156, 90,145,
-171, 39,159,124, 18, 78,167, 19,179,103,207, 14, 91,143,193, 96,252, 37, 9, 88,164,231,135,238, 94,102, 41,212,122,129,230,215,
-103,123,126,241,123,231,181,217,108, 69,253,251,247,247,187,130,205,102, 75,215,233,116,181,238,174, 74,167,163,190, 69,133,132,
-144, 14,148,210, 2,239,101,149, 74,196, 74,107, 44,157,217, 12,173, 79,177,139,214, 28, 5,209,100, 6,231,231, 38,238, 79,211,
- 95, 4, 75, 41, 58, 41, 47, 47,135, 40,138,152, 51,103, 14,162,163,163, 97,179,217,252, 85,176,247,171,201,243, 60,106,126,171,
-193,145,103,118, 67,103, 58,136, 54, 3,163, 16, 37, 30, 66,235, 31,151,194,229,178, 3, 94, 69,134,225,104,182,105,211, 6,207,
- 62,251,108,157,238, 25, 2,209,173, 91,183,144,154, 23, 11,211,244,175, 73, 8,129, 46,202, 12,125, 84, 84,192,243, 83,240,211,
-119,147,175,166, 50, 95,137, 92, 85,105,140, 31, 30, 61,114,100, 11, 0,110,220,184,113, 49, 70,163, 17,243,230,205,171, 1,192,
-189,240,194, 11,198,166, 77,155,214, 57, 33,252,165,147,227, 56, 44, 88,176,160, 78,157,171, 64, 6, 43,156,116,186, 92,174, 58,
- 6,107,212,168, 81,117, 58, 26, 13, 20,193,242,151, 78,165,174, 90,163, 70,141, 96, 52, 26,213,207,110,233,245,122,232,245,122,
-181,119,248, 64, 69,173, 87,194,185,196, 52,153, 38,211,252,195,185,104,115, 20, 9,252, 26,172,159,127,254,121, 72,160, 21,114,
-115,115, 15,108,220,184,177,181,247,183, 9, 93, 46,151,198,102,179,101, 14, 31, 62, 60,228,171,178, 44,203,208,233,116,160,148,
-162,243,211,121,238, 87,120,238,124,145, 32,165, 20,177,185, 3, 64,120, 30,146, 36,195,233,116,134,108, 69,104,181, 90,107, 85,
- 64,247,215,124,189,170,170, 42,104, 63, 63,190,154, 22,139,165, 86,189, 46, 34, 81, 28, 94,189,164,110,107, 66,207,118,194, 69,
-175,215,215, 42, 54, 9,149,148,176,133, 25, 17, 65,233,192,147, 82,138,172, 7,167,184, 35, 69, 60, 87,107,126, 76,247,222, 32,
-130, 8,217, 93,111, 41, 84,195, 16,114,246,236, 89,203, 77, 55,221,180,142, 82,250,193,240,225,195,127,133,187,130, 37, 53,155,
-205, 58, 81, 20,101, 0,191, 3,160,231,206,157,139, 57,113,226,132,108,181, 90,155,132, 74,231,250,245,235,113,240,224, 65,116,
-237,218, 85,141,124, 42,131, 82,124,127, 33, 17, 44,223,174, 24,124,199,195,237,166,193, 27,142,227, 16, 19, 19, 3,173, 86,139,
- 23, 95,124, 17, 26,141, 6, 6,131,187, 20,116,246,236,217,234, 62,103, 48, 24,140, 43,137,122,127,176, 89,150,101, 62, 80,241,
- 97,168,162, 66, 73,146,142, 95,125,245,213,245,221,222,233, 96,243, 41,165,199,127,252,241, 71,141,119,132,193,251, 55,192,180,
-144,154,219,182,109, 83,155, 83, 5,211,244,250, 31, 84,211, 55,239,225,212, 95,113,185, 92, 39, 66, 46,196,136, 24, 46,151,235,
-120,143, 30, 61,252,207,124,214,127,145,173, 36, 73, 65,143,187,211,233,252, 95,102,102,230, 73,179,217,252, 77,114,114,114,233,
-198,141, 27, 19,186,119,239,158,224,189, 76,247,238,221, 83,125, 86,179, 35, 72,247, 36,132,144,227,119,220,113,135, 38,196,249,
-232,251, 63,112,215,240, 30,205,194,194, 66,141,247, 58,161,126, 41,165, 65, 53, 61,252,118,253,245,215,115,254,174, 33, 95, 36,
- 73,242,219,108,154,193, 96, 48, 46, 71,234,109,176,172, 86,235,177,254,253,251,251,109,247, 93, 83, 83,115,212,223,116,133,194,
-194,194,236,250,110, 47, 20,199,143, 31,207,185, 28, 52, 27, 34,239,140,200,210, 16,199,168,176,176, 48,128, 99,187,112,142, 30,
- 61, 26,241,243,179, 33, 52, 1, 96,207,158, 61, 61, 27, 66,151,193, 96, 48, 46,117,234,109,176,194,237,142,129,193, 96, 48, 24,
- 12, 6,227,175, 74,232,190, 5, 24, 12, 6,131,193, 96, 48, 24,245,130, 0,232,224,111, 70,125, 90, 7, 16, 66,252,106, 4, 35,
-148, 62,211,100,154, 76,147,105, 50, 77,166,201, 52,175, 60,205, 80,218,151,112,235,196,122, 65, 66,245, 68,125, 81,226,151, 73,
-211, 80,166,201, 52,153, 38,211,100,154, 76,147,105,254,185,154, 87, 26,172,136,144,193, 96, 48, 24, 12, 6, 35,194,212,187,146,
- 59, 35, 50, 16, 66,120, 74,105,216, 61,224,135, 65, 44,128, 64, 31,116,179, 3, 40,187, 64, 93, 45, 0,209, 51, 0,238, 79, 12,
- 56, 61,154, 12, 6,227, 10, 34, 59, 59,123, 2,165,116, 6,220, 95,129,122,113,251,246,237,111,253,217,105, 98, 48, 46, 87, 2,
- 26,172, 86,173, 90,109,231, 56, 46,195,223, 7,136, 3,245,139, 35, 73,210,241,125,251,246,133,213,212,157, 16, 34,164,166,166,
-142, 50,153, 76,215,241, 60,159,235, 89,127, 99,117,117,245, 15,197,197,197,159, 83, 74,253,118, 5, 17,138, 22, 45, 90, 68, 91,
-173,214, 91, 9, 33, 99, 1,128, 82,250,137, 94,175,255,207,225,195,135, 43, 46, 68,143, 16,210, 42, 37, 37,229, 19, 81, 20,249,
- 99,199,142, 93, 7, 0,141, 27, 55,254,193,110,183, 75,103,206,156, 25, 75, 41, 61, 88, 79, 61, 78,163,209,228,245,238,221,187,
- 23, 33,228, 99, 74,233, 59, 23,146, 46, 63,232, 56,142,251,205,223, 12, 89,150,155, 94,128,158, 6, 64,204,236,217,179,227, 23,
- 46, 92,216,165,184,184,184, 35, 0,164,166,166,238, 30, 55,110,220,207, 15, 63,252,240,239, 0,202, 1, 56,130,170, 48, 46,121,
- 50, 51, 51,183,115, 28,151, 81,159,190,228,136,251, 19, 85,199,247,236,217,227,247,122,207,204,204,220,206,243,124, 70, 48, 13,
-127,255,101, 89, 62, 92, 88, 88,232,183,203,136, 54,109,218,108,230,121,190,121,168,180,249, 75,103,160, 46, 56,218,180,105,179,
-157,231,249,140,250,106,202,178,124,184,160,160, 32, 80, 58, 47, 72,243,143, 78, 39, 0,244,237,219, 87, 87, 93, 93,253,137,217,
-108,238, 84, 93, 93, 61,129, 82, 58,109,237,218,181,201, 28,199, 97,192,128, 1,211,178,179,179,143,232,116,186,185, 86,171,245,
-103,179,217, 60,102,237,218,181,182, 64, 90, 12, 6,163, 54, 1, 13, 22,199,113, 25, 59,119,238, 76, 50,153, 76, 0,160,126, 47,
- 79,233, 37, 90, 25, 40,165,160,148,194,229,114,161,111,223,190, 97,109, 52, 35, 35,163, 67,155, 54,109,150, 60,240,192, 3, 77,
-110,188,241, 70,109,114,114, 50, 8, 33, 56,117,234, 84,102,126,126,254,237,115,230,204,121, 54, 35, 35,227,150,227,199,143,135,
- 91, 81,142, 75, 77, 77,237, 15,224,206, 14, 29, 58,140,124,236,177,199, 52,185,185,185,144, 36, 9,223,127,255,125,239,215, 95,
-127,125, 78, 90, 90,218,151, 0, 62, 42, 46, 46, 94, 67, 41,149,195,212,237,210,188,121,243,255,172, 95,191,190,121, 81, 81,145,
- 52, 98,196,136,143, 1, 96,227,198,141,157, 40,165, 36, 55, 55,247, 91, 66,200,173,148,210,159,195,202,184,155,225,147, 38, 77,
-186,229,254,251,239, 79,156, 48, 97,194, 56, 0,239,120,182,165,124,228,178,190,149,226,212,200, 21,165, 84, 19,100,185,100,132,
- 31,201, 50, 29, 62,124, 56, 54, 55, 55,247,254, 51,103,206, 76,246,214, 61,125,250, 52,118,237,218,229,120,233,165,151, 94,223,
-184,113,227,219, 45, 90,180, 40, 3, 80, 93,207, 52, 51, 46, 33,120,158, 79,223,190,125,123,146,209,104, 84, 63,228,238,125,157,
- 43,215,184,247,169, 73, 41,197,181,215, 94, 27, 76, 51, 99,199,142, 29, 73, 6,131, 65,189,119, 4,211,243,210, 12,104,216, 57,
-142,107,186,109,219,182, 36,163,209, 8, 74,105, 72, 61, 66, 8, 40,165, 65,191, 61,170,164, 83,175,215,135,165,169,144,155,155,
- 27, 48,250, 92, 95, 77, 37,157, 61,123,246, 12,120,237,243, 60,159,177,115,231,206, 36,229, 43, 24,245, 72,103,208, 23,160,234,
-234,234, 79, 62,255,252,243, 17,201,201,201, 24, 62,124,248,202,246,237,219,107,141, 70, 35,190,253,246, 91,100,100,100, 52,138,
-142,142,254,239,172, 89,179,240,234,171,175, 54, 89,181,106,213, 98, 0, 35,130,233, 49, 24,140,243, 4, 51, 88, 48,153, 76,248,
-244,211, 79,253,126,126,198,247,127,211,166, 77,195,218, 96, 74, 74, 74,118,179,102,205,214, 45, 93,186,212,144,148,148,164, 78,
-119, 56, 28,136,142,142,198, 93,119,221,165, 29, 48, 96, 64,235,219,111,191,253,167,148,148,148, 62,167, 78,157,218, 30, 76, 47,
- 53, 53,117,100, 86, 86,214, 91,147, 39, 79, 78,190,233,166,155, 16, 23, 23, 87,107,254,176, 97,195, 48,116,232, 80,205,225,195,
-135, 71,127,254,249,231,163, 63,254,248,227, 83,169,169,169,147,138,139,139,191, 12,166,107, 50,153, 6,116,238,220,249,253, 53,
-107,214,100,196,198,198, 34, 45, 45,141,123,230,153,103, 58,180,108,217,210,144,154,154,202,157, 60,121, 18, 95,126,249,101,203,
-113,227,198, 45,211,235,245, 19,172, 86,235,154, 80,121, 39,132,104,227,227,227, 31,255,231, 63,255,153, 80, 89, 89,233,218,185,
-115,231, 65,101,186, 78,167,155,118,205, 53,215,116, 37,132,124, 70, 41,253, 40,148,150, 23,106,228,138, 82, 90,129,243, 69,121,
- 10, 78,101,126,152,145, 44,237,206,157, 59,227,114,115,115,191,178,217,108, 93,255,254,247,191,159,120,229,149, 87,180,209,209,
-209,209, 0, 72, 89, 89,217,185,231,159,127, 94,122,243,205, 55,159,104,223,190,125,255,141, 27, 55,142,232,218,181, 43, 43, 50,
-188,204, 49, 26,141, 88,190,124,185,223,207, 76,249,187,230, 99, 99, 99, 67,126,141,192, 96, 48, 96,213,170, 85,234,122,222,159,
-150,242,247, 63, 54, 54, 22,148,210,160,162,122,189, 30, 27, 54,108, 80, 63, 3, 20,232,190,164,252, 26,141, 70, 16, 66,130,214,
- 53,213,235,245, 88,183,110, 93, 72, 45,229,215,108, 54, 3, 64,224,143,136,122,165, 51, 84,158,149,255, 38,147, 41,228,254,212,
-233,116,170,166,183, 70,160,113,207,203,113, 80, 81,131,193,208, 41, 57, 57, 25, 91,182,108,193,115,207, 61,167,205,202,202,194,
-129, 3, 7,192,113, 28, 38, 76,152,128,246,237,219,227,212,169, 83,104,223,190, 61, 54,108,216,208, 37,104, 2, 25, 12, 70, 45,
- 66,214,193, 10,116,131,245,253, 15,212,253, 12,134,111, 11,131,102,205,154,233,204,102,243, 23,203,151, 47, 55, 36, 36,156,255,
- 90,136,221,110, 71,101,101, 37,170,170,170, 80, 89, 89, 9,147,201,132,185,115,231, 26,198,142, 29,251, 69,179,102,205, 50,139,
-138,138,108,129, 52, 9, 33,175,239,218,181, 43,217,229,114, 65,171,245, 95, 5,137,227, 56,180,106,213, 10,147, 38, 77, 66,175,
- 94,189, 82, 70,143, 30,253, 58, 0,213, 96,249,107, 9,145,154,154,250,246,198,141, 27, 51,180, 90, 45, 14, 28, 56,128,227,199,
-143, 99,226,196,137, 77,101, 89,198,177, 99,199,112,224,192, 1,156, 60,121, 18,239,189,247, 94,198,216,177, 99,231, 2,104, 29,
- 44,239, 30,238,121,228,145, 71, 90,199,197,197,113,175,188,242, 74,121, 85, 85,213,123,158,233, 83,103,207,158, 61,166, 79,159,
- 62,137,127,255,251,223, 41, 33,228, 83, 74,105, 29,195,226,163,233, 47,114, 37, 81, 74,247,249,172,214,214, 39,178,149, 12,247,
-183,240,202,253,104, 18, 0,209, 67,134, 12,121,212,102,179,117,253,241,199, 31, 15,246,234,213,171, 41,128, 98, 74,233, 89, 0,
-136,139,139, 51,189,241,198, 27,201,195,134, 13,251,117,192,128, 1, 93,135, 12, 25,242,232,217,179,103,103, 0, 40,129,231,243,
- 46, 13,209,178,132,105, 54,156,166,167, 40, 9,130, 32,224,250,235,175, 7, 33,196,239,247, 54, 55,111,222,140,254,253,251, 67,
- 20, 69,220,125,247,221, 97,107, 14, 30, 60, 24, 46,151,171,142,158,175, 1, 33,158,111,116, 6,203, 59,165,180,214, 55, 66,253,
-153, 11,239,193, 87,207,159,166, 44,203,126,181, 2,153, 44, 66, 72,208,123,157,119,222,195, 53,151,161,210,233,173, 41,138, 34,
-114,114,114,176,115,231,206,160,102, 43, 84, 58, 1,160,186,186,250,206,225,195,135,175,156, 56,113,162, 30, 0, 74, 74, 74,106,
-125,136,126,255,254,253,176,217,108, 88,180,104, 17,108, 54,219,189,117, 18,233, 71, 51, 18, 48,205,191,166,102, 8, 68, 0,157,
- 1, 36, 2,144, 0, 84,194,253, 28,180,195,253, 44, 44, 5, 96,240, 12, 54, 0, 85, 0, 26,121,214, 45,129,251,249,230,253,153,
-178,179,168,253, 81,232,238, 30,109,229,147, 93,137, 94,243,148,109,248,142,251,254,214,210,230, 0,128, 16, 66, 61, 67, 31,101,
-174, 18,182, 14,199, 92, 41, 55,199, 80, 80, 74, 31,152, 58,117,106,178,183,185,178,217,108,168,168,168, 64,101,101,165,250,123,
-224,192, 1,104,181, 90,140, 26, 53, 42,153, 82,250, 64, 8, 89, 13,207,243,216,185,115, 39,150, 46, 93,138, 35, 71,142,212, 89,
-224,208,161, 67,120,227,141, 55,240,234,171,175,162,162,162, 2,112,215, 47,242, 75,231,206,157,159, 27, 59,118,236, 79,125,251,
-246,213, 9,130,128, 93,187,118, 33, 51, 51, 19,155, 54,109,194,209,163, 71,113,238,220, 57,236,223,191, 31, 29, 58,116,192,193,
-131, 7, 81, 81, 81,129,172,172, 44, 93,183,110,221,126,108,214,172,217,115,129,116, 9, 33,154,244,244,244, 39,255,249,207,127,
-234,138,139,139,229, 5, 11, 22,108,164,148,110, 34,132, 76,124,234,169,167,198, 15, 30, 60, 56,113,223,190,125, 21,219,182,109,
-219,238,207, 92,249, 65,199,113,220, 81,142,227,126,163,148, 86, 80, 74, 45,112, 87, 62, 87,241, 20,221,218, 44, 22, 75,121,105,
-105,105, 9,199,113,191,113, 28,119, 0,128, 46,144,230,184,113,227, 90,150,148,148,220,255,240,195, 15, 31,233,213,171, 87, 83,
- 74,233,126, 74,105, 41,220, 39,172,205,229,114,149,150,149,149,253,154,155,155,155, 58,102,204,152,131, 37, 37, 37,247,143, 27,
- 55,174,101, 16, 77,198,165, 15,149, 36, 9,162, 40, 98,237,218,181,216,176, 97, 3, 54,108,216,128,141, 27, 55, 98,211,166, 77,
-216,188,121, 51, 54,111,222, 12, 65, 16,176,105,211, 38,108,218,180, 9,147, 38, 77, 10,121,205, 75,146, 4, 65, 16,176,110,221,
- 58,108,221,186, 85, 29,182,109,219,134,173, 91,183,194, 96, 48,132, 52, 67,222,120,234, 41, 5, 52, 83,111,191,253,182,106, 14,
-149,123, 19,199,113, 65,163, 98,190,198,197,215,176, 52,109,214,172,206,188, 80,233, 4,160,106,254,251,223,255,198,137, 19, 39,
- 48,103,206, 28, 28, 58,116, 8, 47,191,252, 50, 10, 11, 11, 49,125,250,116,108,219,182, 13, 83,167, 78,197,143, 63,254,168,124,
-252, 61,104,245, 0,197, 8,230,228,228,192,225,112,168,233,217,191,127, 63,102,206,156,137, 93,187,118, 97,218,180,105,216,188,
-121, 51, 30,127,252,113,240,124,208, 32, 27,178,179,179, 39, 16, 66, 62,111,211,166,141,174, 95,191,126, 16, 4, 1, 51,103,206,
-148,167, 77,155,118,230,169,167,158, 58,147,159,159, 79, 91,182,108, 9,187,221,142,168,168, 40, 80, 74, 63,202,206,206, 14,117,
- 63,102, 48, 46, 24,127, 94,196,139,107,167, 78,157,218,143, 16,146,159,147,147, 51, 14, 64, 44, 33, 36, 31,128,214,243,155, 48,
-117,234,212, 30,132,144,252,169, 83,167,102, 3,104, 68, 8,201,247,140, 95, 7, 32, 65, 25,247, 44,239,109,160, 68, 0,137, 94,
-211, 19,125,150,213,250, 27,247,253,245,213, 86, 35, 88,148, 82,226,185,192,213,155,145,114,211, 13,215, 96,133,186,225,154,205,
-230,161, 67,134, 12, 81,205,141,205,102,171, 21,185, 82,126, 43, 43, 43,241,235,175,191,162, 67,135, 14, 26,179,217, 60, 20,192,
-191, 66, 29, 24, 65, 16,144,150,150,134,146,146, 18, 20, 20, 20,160,105,211,166,112, 58,157, 88,177, 98, 5,202,202,202,160,209,
-104,160,209,104, 96,183, 7,247, 46,109,219,182,189,126,225,194,133,217, 31,127,252,241, 57, 65, 16,176,127,255,126,124,242,201,
- 39,160,148,162, 81,163, 70,168,169,169,193,153, 51,103,240,250,235,175,195,225,112,192,108, 54, 35, 61, 61, 93,255,192, 3, 15,
-244,122,254,249,231, 69, 0,207, 5,144,190,122,228,200,145,209, 81, 81, 81,120,232,161,135,100,135,195,241, 42, 33,228,154,145,
- 35, 71, 62, 57,105,210,164,248,162,162, 34,251, 61,247,220,179,221,225,112,188, 14, 0,132, 16,145, 82,234, 12,160, 5, 32,120,
-228,202,229,114, 41,251,244, 72,101,101, 37,146,146,146,154, 80, 74, 53, 33,142,145,102,211,166, 77, 57, 0,248, 23, 94,120, 65,
- 79, 41, 61, 13, 47,211,230,112, 56, 20, 77, 87,121,121,249,153,199, 31,127,220,181,120,241, 98,222,179,206, 94, 0,214, 96,226,
-140, 75, 19,197,184,136,162,136,235,175,191,190,150,161, 88,191,126, 61,134, 12, 25,162, 94,239, 26,141, 70, 93, 46,148,166,119,
- 84, 76,137, 60, 41,186, 63,252,240, 67,157,200, 75,152, 47,105,106,132,197,159,241,241, 53, 93,202,139, 98, 48,252, 69,155,188,
- 35,243,254, 34, 67,225,164, 83, 20, 69, 76,154, 52, 9,130, 32,224,241,199, 31,135, 40,138,232,220,185, 51, 4, 65, 64,207,158,
- 61, 33, 8, 2,174,187,238,186,176, 95, 80,149,116,110,222,188, 25,221,186,117, 83,211,211,185,115,103,116,239,222, 29,130, 32,
-160,119,239,222, 16, 4, 1,131, 6, 13, 10,169,169, 84,104, 55,155,205,248,245,215, 95,193,243, 60, 8, 33,165, 59,118,236, 72,
- 6,128,231,158,123,174,196,106,181, 38, 88,173, 86,244,239,223, 31, 57, 57, 57,137,139, 23, 47,126, 6, 0,107, 89,200,104, 48,
-252,121, 17, 15,186,188,188,188,153,148,210, 97,129,214, 85,230, 19, 66,242,103,205,154, 53,204,163, 87,103,220,179,184,247,199,
-229,175,157, 58,117,106,150,215,248, 89,101, 61,239,237, 5,219,182,207,242,103, 1, 47,131,229,201, 80, 95,175,113,191, 6, 43,
-144,209, 10,231, 6, 97,181, 90, 59, 43,209, 43,171,213, 90,203, 80, 85, 85, 85,213, 50, 90,118,187, 29, 45, 90,180,128,213,106,
-237, 28, 82,216, 11, 66, 8, 82, 83, 83,225,112, 56, 48,127,254,124,213, 88, 41, 56, 28,193, 27,189,237,217,179,231,200, 79, 63,
-253,212,181, 91,183,110,113, 95,125,245,213,217, 1, 3, 6, 36, 14, 30, 60, 24,122,189, 30, 86,171, 21, 46,151, 11, 87, 95,125,
- 53,218,182,109,139, 51,103,206,224,219,111,191, 45,201,204,204,108,180,101,203, 22,249,212,169, 83,191, 5,145,238,223,191,127,
-127, 16, 66,240,237,183,223,254, 78, 41,221, 97, 48, 24,190,156, 57,115,102,172,205,102,147,199,143, 31,127,236,247,223,127,127,
- 28,128, 83,167,211,253,107,224,192,129, 87,243, 60,255,153, 36, 73,245,190,153,217,108,182, 90,251,182,178,178, 18, 70,163, 49,
-156, 46, 33,196,178,178,178,142, 0, 96, 52, 26,227, 1,168,249, 47, 19, 36, 0, 0, 32, 0, 73, 68, 65, 84, 45, 36, 45, 22,139,
-122,140, 60,199,199, 26, 31, 31,111, 2, 0,207, 58,190,117,191, 24,151, 17,202,195,123,237,218,181,181,174,111, 37, 2,229,123,
-205,107,181, 90, 44, 95,190, 60, 44, 77,111, 51, 21, 70,113, 94,208,104,147, 98,176, 4, 65,192,123,239,185, 75,216, 31,122,232,
- 33,117,125,223,109,132,194, 59, 82, 47, 8, 2,218, 62, 43, 3,112,224,248,107,122,136,162,251,148,246, 77, 51,128,176,163, 98,
-115,230,204,193,176, 97,195,144,159,159, 31,244,119,232,208,161, 97,165, 83, 16, 4,232,116,238, 96,177,146,158, 93,187,118,249,
-213,157, 55,111, 94,200, 58,109,178, 44,227,155,111,190, 1,199,113,181, 34, 94,207, 60,243,204, 63,163,163,163,205,235,214,173,
-195,233,211,167, 81, 93, 93,141,170,170, 42,196,197,197,197, 14, 24, 48, 96,215,169, 83,167,138,246,236,217,195, 42,188, 51, 34,
-142,175, 23,241,194, 50,101,202,148, 39, 9, 33,249, 83,166, 76,121,114,214,172, 89,133,158,229,243,125,214,207,247,179,110,173,
-249, 30, 19,164, 20, 15,118, 71,109,243,166, 20, 29,222, 16,100, 93,187,143,161,242, 45, 34,220, 6,132,136, 96,249,214, 77, 8,
-246,223, 19,226, 14,150, 47,200,178, 44, 16, 66,234, 24, 0,127, 17, 44,167,211,137,210,210, 82,200,178, 28,209,190,186, 66, 25,
-172,130,130,130,187, 38, 76,152,112, 50, 38, 38,166, 83,105,105,105,177, 78,167,235,189,126,253,250,198, 78,167, 19,209,209,209,
-136,142,142,198,127,255,251, 95,196,196,196,224,225,135, 31, 62,106,177, 88, 54,153, 76,166,100,139,197,242,203,169, 83,167,158,
- 14,164, 43,138, 98,255,222,189,123, 99,199,142, 29, 40, 43, 43,251,158, 16,210,233,239,127,255,251,160,198,141, 27,147, 25, 51,
-102, 88, 15, 30, 60,248, 22,128,179, 38,147,233,223, 11, 23, 46,236,211,181,107, 87,243,248,241,227, 65, 8,121,159, 82, 26,118,
-100,168,166,166,166,150,177, 82,246,105, 84, 84, 84, 88,125,110,121,246, 55, 37,132,168, 13, 26,189,141,149,151, 1,166, 60,207,
-203, 0,104,164,143, 17,227,143, 69, 49, 4,162, 40,226,198, 27,111,172, 83,185, 93,163,209, 96,229,202,149,184,249,230,155,213,
- 23,150,110,221,186,133,212, 85, 12,193, 77, 55,221, 4,192,109, 8, 86,174, 92, 25,208, 96,133, 42,210, 2,106, 71,155, 30,124,
-240, 65,136,162,136,183,222,122, 11,147, 39, 79, 6,207,243,120,237,181,215,192,113, 28,158,121,230,153,176,243,239, 93, 68,120,
-228, 37,247,111,198, 35, 21, 40,125, 39, 25, 0, 16, 21, 29,237,206,143, 28, 86,227,227, 90,121, 15, 21,185,242, 54, 86,161,138,
- 8,189,163,128, 7, 14, 28, 80,255,247,236,217,179, 86,228, 74, 16,132,144,134,205,179,189,233,253,250,245,155,145,145,145,145,
- 52,113,226, 68, 34, 8, 2,178,179,179, 27, 77,155, 54,173, 92, 20, 69,253, 99,143, 61,230,175, 42,133, 8,160, 83,187,118,237,
- 76, 97,239, 12, 6,163, 30, 4,137, 96,217,102,205,154, 85, 56,107,214, 44,191, 17, 42,175,245,135, 5, 51, 89, 94, 81,168,238,
-112, 27,161, 68,197,180,193, 93, 21,102, 91, 24,235,106, 21,115,229, 27,229,242,198, 55,130,245,188,247,204,112, 13, 86, 56,245,
- 39, 0,192,104, 52,238, 46, 41, 41,233,169,211,233, 80, 81, 81, 81,231,161,237,109, 10,120,158,199,153, 51,103, 96, 52, 26,119,
-135, 20,174, 7,161,138, 8, 61,102,230, 81,101,156, 16,210,125,212,168, 81,139, 63,251,236,179, 22,171, 87,175,198,150, 45, 91,
-208,168, 81, 35,204,156, 57,243,112, 81, 81,209, 24, 74,105,192,131,225, 77,203,150, 45,219,155,205,102,108,220,184, 17, 0,126,
- 4,112,231,125,247,221, 71, 28, 14, 7,230,206,157, 91, 3, 96,117, 76, 76,204,151, 75,150, 44,233,212,169, 83, 39,221,234,213,
-171, 43,183,108,217,178, 54, 76,115, 37, 81, 74,253, 26,171,202,202, 74, 84, 87, 87,195,108, 54,135, 99,176, 92,209,209,209, 5,
-149,149,149,183, 90, 44,150, 10,157, 78, 23, 85, 81, 81, 97,243,142, 48, 86, 85, 85,161,186,186, 26,130, 32,136, 7, 14, 28, 56,
- 9,160,101,116,116,116, 1,128, 11,234,183,140,241,231,195,113, 28, 85, 76,198,234,213,171,253, 94,235,162, 40, 98,197,138, 21,
-181,174,247,111,191,253, 54,160,166,119, 20, 71,105, 73, 24, 42,130,165,172, 26, 42,189,162, 40,130,231,121,188,243,206, 59,160,
-148,170,145, 43,142,227, 48,101,202, 20,232,116, 58,188,248,226,139,152, 50,101, 74, 88, 81, 44,239,168, 88,243, 39, 44,234,116,
-101, 93,135,221,238,142,210,115,156,183,201, 10, 43,210, 22,170,130,123,184,248, 70,218,116, 58, 93,192,202,237,190,171, 6,210,
-220,190,125,251, 7, 93,187,118, 61,152,152,152,184, 42, 39, 39, 71,183,125,251,118, 76,154, 52,137,216,108,182,232,213,171, 87,
-171,219,245,133, 82,138,234,234,106,125,216,137,103, 48,234,129, 63, 47,226, 33, 78, 49, 78, 30, 51, 20,174, 94,190,247,242,138,
-134,175, 41,242, 68,196,214,135,210,242,183,110, 32, 4,207,194,117,174, 34,223,155, 68, 40,163, 21,206,219,167,197, 98, 89,179,
-118,237,218,238, 55,223,124,179, 16,172,120,176,170,170, 10,201,201,201, 56,116,232,144,203, 98,177,132,236,254, 64,146,194,239,
- 16, 61, 84, 4,203, 23, 74,233,182,172,172, 44,151,195,225, 64,235,214,173,145,158,158, 14,139,197,130, 55,222,120,195, 21,174,
-185, 34,132,104,178,179,179,121, 0, 40, 47, 47, 7,220,173, 29, 50, 51, 51, 51,177, 99,199, 14,156, 59,119,110, 25,128,254,207,
- 63,255,124,151,107,174,185, 70,243,217,103,159,213,220,123,239,189,203,156, 78,231,140,112,244,101, 89,182,187, 92,174,230, 28,
-199, 57,202,202,202, 78,120, 27,171,228,228,228, 56,179,217,204,157, 57,115, 38,104,125, 46, 15,142,142, 29, 59,110, 61,126,252,
- 56, 94,120,225,133,179, 51,103,206,204,172,172,172, 60, 87, 94, 94,238, 82,140, 85, 69, 69, 5, 44, 22, 11,151,152,152,168,155,
- 55,111,158, 17, 0, 58,118,236,184, 21,172,195,209,203, 26,223, 6, 45,190,230, 42, 84,139,183, 64,154,130, 32, 96,248,240,225,
-117, 34, 98,202,176,100,201,146, 90,245,154, 66, 21,189, 41,154,111,191,253, 54, 30,122,232, 33,232,116, 58,204,158, 61,187, 86,
- 29, 44,127,171, 6,211, 4,220,166,173,249, 19, 22,156,122, 51, 30,162, 40, 34,225,222,211,181,138, 8,253,228, 45, 44, 35, 56,
-115,230,204,136, 20, 17, 42, 8,194,249, 46,113,230,207,159,143, 81,163, 70,225,199, 31,127,188,224, 34,194,230,205,155, 47,124,
-227,141, 55,116,123,247,238, 69, 69, 69, 5,206,158, 61, 11,171,213,138, 99,199,142, 41,249,244,187, 94, 77, 77,141, 33,172, 4,
- 51, 24,245, 32,196,249,122,214,167,254, 20,241, 46,174, 11,242,235,187, 60,188,166,121,235,158, 69,237,134, 98,222,211,125, 77,
-149,239, 54,188,151, 81,235,118, 5,125,133, 82, 34, 88,225, 26,172, 48,138, 8, 95,127,246,217,103,239,239,213,171, 87,124,116,
-116, 52, 78,158, 60,233, 55,130, 21, 29, 29, 13,135,195,129,181,107,215, 86,200,178,252,122, 80, 81,192,233,116, 58,145,148,148,
-132,146,146, 18,200, 1,194,248, 28,199,193, 96, 48,160,170,170, 10,240,105,109, 23, 10, 74, 41,156, 78, 39, 28, 14, 7, 28, 14,
- 7,156,206,122,173, 14, 0, 6,165,195,214,234,234,106, 0,168, 78, 75, 75,107,169,215,235,149, 86,143, 7, 0,244, 27, 60,120,
-176, 88, 90, 90, 74,239,185,231,158,205,148,210, 73, 52,120,111,246,246,181,107,215, 54, 3, 0,131,193,112, 0, 0,142, 29, 59,
-230, 44, 43, 43, 67, 85, 85,149, 26, 33, 52, 24, 12, 24, 49, 98, 68, 10,165, 20,107,215,174,109,166,209,104, 40, 2,155, 33, 91,
-126,126,254,158,152,152,152,197,121,121,121, 99,110,184,225,134,194,142, 29, 59, 54,175,170,170, 58, 83, 83, 83, 99,177, 88, 44,
- 84, 16, 4, 77, 66, 66,130,110,213,170, 85, 7, 55,111,222, 60, 48, 58, 58,122,113,126,126,254, 30,184, 67,171,140,203, 16,223,
-186, 77,254, 76,149,119, 69,242,112, 53, 1,183, 33, 88,177, 98, 69,208, 40, 78,184,154, 10,130, 32,224,209, 71, 31,197,155,111,
-190, 89, 39,130, 53, 99,134,251,157,228,169,167,158,170, 87,132, 72, 16, 4,156,122, 51, 30, 41, 15,254, 94,107, 26, 0, 16, 79,
-250,234, 83, 68,168,172, 63,125,250,116,136,162,168, 22,225, 13, 28, 56,176, 86,209, 96,184,198,202, 91,243,204,153, 51, 16, 4,
- 1,241,241,241, 24, 51,102, 12, 6, 13, 26, 84, 71, 47, 92,221, 99,199,142,253,252,234,171,175, 54, 73, 79, 79,199,103,159,125,
-102, 55,153, 76,218,126,253,250,209,242,242,114, 2, 4,142, 96, 89, 44, 22, 22,193, 98,252,209,132, 21,208,136,160,238, 69,111,
- 47,224, 29, 40, 18,221, 52, 16,159,175,109, 23, 21, 21,149,167,166,166,142, 29, 61,122,244, 87,239,188,243,142,161,101,203,150,
-216,191,127, 63,206,157, 59, 7,135,195, 1,141, 70,131,180,180, 52, 84, 85, 85,225,139, 47,190,168,169,169,169, 25, 91, 92, 92,
- 92, 30, 76,147, 16,242,212,245,215, 95, 63,239,233,167,159,214,183,111,223, 30,231,206,157, 67, 85, 85,149,250,230, 69, 8, 65,
-116,116, 52,140, 70, 35, 10, 10, 10,176,121,243,102, 11, 33,228,169, 96,154,190,200,178,172, 26, 43,197,104,133,106,153,228,163,
-105, 50, 26,141, 0,220,117,164, 0,184,154, 52,105,146, 12, 64, 49, 88,191,181,104,209,226,233, 86,173, 90,145,133, 11, 23, 82,
- 74,233,106,127,230,202, 71,243, 92,159, 62,125,202, 0, 36,219,237,118, 13, 0, 84, 84, 84, 56, 18, 18, 18,146,116, 58,157,172,
-211,233,100,189, 94, 47, 23, 23, 23,187, 92, 46,151, 6, 0,250,244,233, 99, 7,112, 26,158,254,170,252,104,202, 0, 42,231,206,
-157,251,220,157,119,222,217, 51, 55, 55, 55,235,158,123,238,217,123,239,189,247, 34, 61, 61, 61,174,170,170,202,122,224,192,129,
-178,119,222,121,199,186,117,235,214,129,162, 40,254, 54,119,238,220,231,224,238,143, 68, 14,160, 25, 17,152,102,195,105, 42,117,
-127,252, 25, 43,239,241, 48,186, 81,168,149, 78,197,180,221,122,235,173,106,235, 67,223,200, 85,125, 53, 1,168, 45, 8,255,239,
-255,254,175, 86,250,158,126, 58, 96, 21,200, 90, 55, 39,159,188, 67,201,187, 32, 8, 40,159,159, 94,203,252,133,107,170,252,105,
- 10,130,128,105,211,166,133, 29,193,242,173,131, 21, 44,157,125,250,244, 65,117,117, 53, 68, 81,196,202,149, 43, 3, 70,176, 66,
-237, 79,131,193, 48,102,217,178,101,159,232,116,186,142,118,187,253,238,146,146,146, 5, 53, 53, 53, 77,202,202,220, 31,124, 8,
-116,159,179, 90,173,106,183, 44,151,227, 57,207, 52, 47, 77,205, 43,141,160,175,120, 46,151, 11,141, 27, 55,174,245,109, 43,165,
- 50, 59,207,243,106,203,147,112, 90, 16, 42, 20, 23, 23,175, 76, 77, 77, 29, 57, 98,196,136, 69,119,222,121,103, 84,219,182,109,
-197,166, 77,155,194, 98,177,160,168,168, 8, 69, 69, 69,174,239,191,255,190,162,166,166,230,246,226,226,226,149,161,244, 78,156,
- 56,241,113,114,114,242,138,113,227,198, 77,235,210,165,203,196,201,147, 39,243, 45, 90,180, 64,121,121, 57,226,226,226,144,152,
-152,136,162,162, 34,124,241,197, 23, 82, 89, 89,217, 60, 73,146,166,159, 62,125,250,108, 40, 93,159,253,192, 59,157, 78,140, 30,
- 61, 26,178, 44, 99,246,236,217,112,185, 92,161,203, 68,207,227,112, 56, 28, 20, 0, 41, 41, 41, 1,128, 26,197,112,253,239,127,
-255, 3,128,163,205,154, 53, 51, 3,192,154, 53,107, 8,128, 77, 97,234, 82,120, 69,178,218,182,109, 91, 4,212,190, 41, 42,145,
- 43,207,168, 29, 94,230, 42, 0,214, 49, 99,198,156,181,217,108,131, 31,121,228,145,105,243,231,207, 31, 51,127,254,252, 58, 11,
- 69, 71, 71, 47,126,237,181,215,166,143, 25, 51,230, 44, 88,247, 12, 87, 4,190,209,170,250, 86, 1, 8,164,249,245,215, 95,251,
-141, 96,213, 55,114,165,116, 5,227,175, 69, 98,176,123, 80,168,151, 33, 37,157,190,186,245,185,175,249, 75,171, 32, 8,120,229,
-149, 87,212,200,149,119,229,243, 11,137, 96, 41,154,241,241,241, 0, 0,147,201, 4, 89,150, 49,116,232,208, 11,214,245,124, 91,
-112,164, 50,158,157,157, 61,253,211, 79, 63,157, 65, 41, 77, 0, 32,120,239,131,112,246, 35,131,193, 56, 79, 64,131, 37, 73,210,
-113,229,219,130,222, 6,203,251,215,247,191,203,229, 58, 30,206, 70,139,139,139, 87,180,104,209,162,197,252,249,243, 31, 50,153,
- 76, 3,172, 86,107, 71, 0,208,235,245,187,171,171,171, 87,115, 28,247, 70,113,113,113,216, 31,103,246, 24,166, 7, 50, 50, 50,
-102,143, 27, 55,110, 70, 78, 78,206, 45,247,220,115, 15, 17, 4, 1,159,127,254, 57, 61,113,226,196, 18,142,227,158, 58,121,242,
-228,161,112, 53,189, 49, 26,141,191, 46, 89,178,164,229,215, 95,127, 13,167,211,137,121,243,230, 65,167,211,253, 26,238,250,148,
-210,179,130, 32, 44,202,205,205, 29,179,121,243,230,197,148,210, 2,157, 78,247,201,181,215, 94, 59,118,211,166, 77,255,161,148,
-238, 21, 4,225,147,156,156,156,177, 91,183,110,253,146, 82,250, 75, 61,146,167, 70,178, 92, 46,255, 37,138,254, 34, 87, 33,168,
-152, 48, 97,130, 99,194,132, 9,143,220,114,203, 45,243,119,236,216,113,181,210,125, 67,108,108,236,238,110,221,186,109, 89,178,
-100,201,126,184, 35, 87,204, 92, 93,230, 40, 21,210,227,226,226,192,113,156, 58, 40,189,121,215,215, 8, 41,154,148, 82,196,197,
-197,249,125, 49, 11,162, 25,212,213, 80, 74, 97, 54,155, 85,205, 48, 91, 47,135, 12, 67,153,205,230, 90,105, 12,131,128,215,146,
-146,119,223,116,134, 34, 88, 62, 20, 77,147,201, 4,135,195, 17,182, 38,194,104, 52,224,205,246,237,219, 63, 0,240, 65,235,214,
-173,255, 7,160, 21, 51, 85, 12,198,133, 19,208, 96,237,219,183,207,239, 87,221, 35,197,225,195,135, 43, 0, 76,247, 12, 17,225,
-248,241,227,135, 0,220,154,146,146,242,175, 77,155, 54, 61, 3, 0,178, 44,191, 16,234,123,134,161,248,229,151, 95,110, 22, 69,
-113,238, 71, 31,125,148, 67, 41, 69, 76, 76,204,166,131, 7, 15,222, 87, 31, 13,151,203, 53,145, 16, 50, 89,105, 21,104,179,217,
- 38, 18, 66, 30,163,148, 86,123,205, 87,199,235, 9,133,187,178, 93,106,128,249,225, 68,174,124,177, 2,176, 47, 89,178,164, 10,
-192, 46,156,239,231,202,233, 25,108,240, 42, 22,100, 92,190,184, 92,174, 19,125,251,246, 21, 66,189, 64,249, 89, 47,224, 11,149,
- 36, 73,199,123,247,238, 29,242,165,204, 95, 90,130, 36,245,183,156,156, 28, 46, 92, 45, 5,167,211,121, 38,208, 60, 89,150,143,
-247,236,217,211,111, 58,131, 17, 42,239, 61,123,246,172, 87, 26, 61,105, 9,152,247, 11,213, 12,177, 63, 3, 98,177, 88,206, 37,
- 38, 38, 86, 89,173, 86,209,102,179,137,190, 17,123,131,193, 80,175, 82, 0, 6,227,175,200, 21,217,127,145,199, 80,221, 24, 41,
- 61, 79,125,168,127, 68, 64,199,234, 51, 94, 29,108,188,158,156,187,136,117, 3, 33, 3,176,132, 92,138,113, 89, 83, 80, 80,112,
-117,164, 53,247,236,217, 19,241, 23,180,130,130,130,158,161,151,170, 31,133,133,133, 17, 79,231,229,162, 25,140, 19, 39, 78, 68,
-252,156, 96, 48,254,106,212, 63,246,207, 96, 48, 24, 12, 6,131,193, 8, 10, 1,208,193,223,140,250,180, 14, 32,132,248,213, 8,
- 70, 40,125,166,201, 52,153, 38,211,100,154, 76,147,105, 94,121,154,161,180,175,148,214,137,164, 33, 43, 49, 94, 46, 77, 67,153,
- 38,211,100,154, 76,147,105, 50, 77,166,249,231,106, 94,105,176, 34, 66, 6,131,193, 96, 48, 24,140, 8,195, 12, 22,131,193, 96,
- 48, 24, 12, 70,132, 97, 6,139,193, 96, 48, 24, 12, 6, 35,194, 48,131,197, 96, 48, 24, 12, 6, 35,162, 16, 66, 72, 70, 70, 70,
-159,180,180,180,136,119,175,114,185,112, 69,246,131,197, 96, 48, 24, 12, 6,227,143,167, 73,147, 38,177,146, 36,221,153,150,150,
-118, 95,203,150, 45, 91, 2, 64,122,122,122, 1,165,244, 13,131,193,240,201,193,131, 7,237,127,118, 26,255, 40, 26,180, 21, 33,
-131,193, 96, 48, 24,140, 43,159,180,180,180, 46, 0,238, 51, 24, 12,183, 95,125,245,213,218,126,253,250, 33, 46, 46, 14, 46,151,
- 11,197,197,197,248,254,251,239,177,107,215,174,223,157, 78,231, 92,167,211, 57,247,236,217,179,167,255,236, 52, 55, 52,170,193,
- 34,132,172, 3, 0, 74,105,159, 63, 49, 61, 12, 6,131,193, 96, 48, 46, 35, 82, 83, 83, 95, 29, 50,100,200, 35,113,113,113,104,
-221,186, 53, 82, 82, 82, 96,179,217, 96,177, 88, 64, 41,133, 32, 8,160,148,162,178,178, 18,219,183,111,199,150, 45, 91, 92, 21,
- 21, 21,139, 9, 33,111,156, 60,121,242,103,111,173, 43,201,139, 16, 74, 41, 8, 33, 20, 64, 95, 0,160,148,174,251,115,147,196,
- 96, 48, 24, 12, 6,227,114, 33, 45, 45,237,244,154, 53,107,146, 36, 73, 66, 73, 73, 9,108, 54, 27,106,106,106, 84,131,197,243,
- 60, 40,165,112,185, 92, 0, 0, 89,150,177,119,239, 94,108,222,188, 25,199,142, 29,123,173,184,184,248, 81, 0, 87,156, 23, 81,
- 43,185, 83, 74,215, 93, 9, 25, 98, 48, 24, 12, 6,131,241,199, 98,179,217,176,112,225, 66,148,148,148,160,113,227,198, 72, 79,
- 79, 71, 76, 76, 12,244,122, 61, 0,168,230, 10, 0, 56,142, 67, 86, 86, 22,198,142, 29, 11, 66,200, 88,111,157, 43,201,139,176,
- 74,238, 12, 6,131,193, 96, 48, 46, 6,167,195,225, 64,118,118, 54,142, 28, 57,130, 29, 59,118,160,107,215,174,104,215,174, 29,
- 74, 74, 74,112,242,228,201, 90, 11,111,221,186, 21, 59,119,238,196,181,215, 94,251, 39, 37,247,143, 65, 41, 34,124, 14, 64, 31,
-224,202, 40,247,100, 48, 24, 12, 6,131,241,199,144,158,158, 62, 62, 49, 49,241,157,113,227,198, 25, 58,119,238,140,227,199,143,
-227,196,137, 19, 56,119,238, 28,186,116,233,130,172,172, 44, 28, 58,116, 8, 43, 86,172,192,206,157, 59,161,211,233,144,145,145,
- 1,243,226, 79,241, 77, 90,234,137,147, 39, 79,102, 0,184,226,188,136,119, 37,247, 62,192,149, 81,238,201, 96, 48, 24, 12, 6,
-227,143, 35, 45, 45, 45,129, 16,242, 84, 90, 90,218,253,183,223,126,187,216,170, 85, 43, 28, 63,126, 28, 37, 37, 37, 56,119,238,
- 28,126,250,233, 39, 0, 64,122,122, 58,210,211,211, 81, 84, 84,132,130,130, 2,139,205,102,187,247,196,137, 19, 31, 43, 58, 87,
-146, 23, 97,221, 52, 48, 24, 12, 6,131,193,136, 8,105,105,105,141, 1, 60,223,170, 85,171,241,163, 70,141,226,210,210,210,112,
-226,196, 9,124,255,253,247,104,217,178, 37,206,156, 57,131,237,219,183, 75, 21, 21, 21,243, 36, 73,154,126,250,244,233,179,127,
-118,154, 27,138, 6,237,201,157, 16,210,129,105, 50, 77,166,201, 52,153, 38,211,100,154,127, 13,205,147, 39, 79, 30, 59,121,242,
-228, 93, 7, 14, 28,200,154, 49, 99,198,178,119,222,121, 7, 60,207, 35, 45, 45, 13, 63,252,240, 3, 93,179,102,205,146,170,170,
-170, 54, 39, 79,158,124,224, 74, 54, 87, 0,171,228,206, 96, 48, 24, 12, 6, 35,194,156, 58,117,106, 31,128,155,211,211,211,175,
- 46, 44, 44,124, 18, 0,100, 89,126,225,212,169, 83,219,255,228,164,253, 97, 48,131,197, 96, 48, 24, 12, 6,163, 65, 56,113,226,
-196, 22, 0, 55,254,217,233,248, 51, 96, 31,123,102, 48, 24, 12, 6,131,193,136, 48,204, 96, 49, 24, 12, 6,131,193, 96, 68, 24,
-102,176, 24, 12, 6,131,193, 96, 48, 34, 12, 1,224,183, 37, 0,165,180, 32,108,145, 11,104,161, 16, 74,159,105, 50, 77,166,201,
- 52,153, 38,211,100,154, 87,158,102, 40,237,250,248,143, 75,153,176,250,193, 34,132, 16,122, 1, 29,102, 17, 66, 58, 68,122, 71,
- 49, 77,166,201, 52,153, 38,211,108, 24,205, 11,185,215,251,211, 36,132, 16,229,175,231,151, 2, 64,184,218,127, 84, 58, 27, 66,
-179, 33,242,254, 87,209,188,210, 8,218,138,144, 16,194,193, 93,140, 72, 8, 33, 50, 0, 57, 18, 59,202,115, 16,184, 72,233, 49,
- 34,143,231, 24,169, 23, 9, 59, 78, 12,198,149, 75, 36,239,245, 94,247, 14, 94,209, 4, 32, 1,144, 8, 33, 23,245,176,109,136,
-103,210,165,158,247,191,178,230,229,142, 95,131,165,236,168,196,196,196,149, 73, 73, 73,215,149,148,148,200,158,233, 72, 79, 79,
- 7,199,113, 16, 4,193,114,228,200,145,232,250,110, 48, 57, 57,249,253,172,172,172, 59, 75, 75, 75,101,142,227,208,184,113, 99,
- 16, 66,192,243, 60,120,158,183, 28, 60,120,176,222,154,145,166, 91,183,110,231,236,118,187,217,119,186, 86,171,181,238,216,177,
- 35,234,207, 72,211, 31, 9, 33, 68,200,204,204,188,205,104, 52, 26,148,105, 93,187,118,245, 94,132,238,220,185,115,126,184,122,
-205,155, 55,223,106, 48, 24, 98, 5, 65, 0,207,243, 16, 4, 1,213,213,213,101,123,247,238,237,225,153,191,209, 96, 48, 36,240,
- 60,175,156, 91,176, 90,173,165,123,246,236,201,141, 92,174,174, 28,250,246,237, 43,160,254, 93,172,184,214,174, 93,235, 10,189,
- 88,196,224,236, 59,162, 90, 17,151,165, 19,225,104, 12,149, 73, 57, 21, 12,191,104,187, 85, 30, 12,115,125,185, 65, 83, 23, 2,
- 66, 72, 19, 0, 46, 74,233,201,144, 11,251, 89,217,119,146, 0, 12,145,128,209,158, 81, 43, 7,148, 18,224, 64, 2,240,197,105,
-192, 82,107,225, 63,240, 65,164,220,235, 51, 50, 50,222, 72, 78, 78,190,171,178,178,178,134,231,121, 16, 66,104, 86, 86,150,178,
-140,247,242,144,101,249,120, 97, 97, 97,118, 48, 61, 0, 98,147, 38, 77, 94, 75, 76, 76,188,163,166,166,166,134, 16, 2, 66, 8,
- 37,132,160, 99,199,142,170,166,242, 43, 73,210,241,130,130, 2,191,154, 13,145,206, 63, 43,239, 29, 58,116, 80,181, 20,109, 89,
-150, 3,230,221, 91, 51, 35, 35,227,181,228,228,228, 59,170,170,170,106, 56,142, 83, 53,179,178,178, 46, 56,157,151,178,230,149,
- 64,160,155, 52,151,148,148,180,172, 71,143, 30,125,191,254,250,107,110,223,190,125, 92,219,182,109, 33, 73, 18,100, 89, 6,165,
- 20,221,186,117, 51,214,119, 99, 41, 41, 41, 11,186,119,239, 62,122,249,242,229,220,178,101,203,184,238,221,187,131, 16, 2, 73,
-146, 32, 73, 18,250,247,239,111, 8,173, 18, 24, 66,136, 89, 16,132,201, 90,173,182,143,203,229,106, 7, 0,162, 40,238,181,217,
-108,235, 92, 46,215,235,148,210,170,112,116,156, 78,167,177,176,176,176,206,190,233,209,163,135,246, 66,211,150,153,153,185,137,
-227,184, 22,158,116, 34,156, 95, 74,233,225,194,194,194,156, 64,154, 87, 93,117, 85, 72, 77,223,105,178, 44, 31, 46, 40, 40, 8,
-168, 73, 8, 17, 90,183,110, 61,186,125,251,246,250,207, 63,255, 28,199,142, 29,131,201,100,130, 44,203,144, 36, 9, 78,167, 19,
- 55,223,124,115,157, 7, 72, 48, 12, 6, 67,244,247,223,127,223, 42, 41, 41, 9,103,206,156, 65, 73, 73, 9, 38, 78,156,120,192,
-107,126,194, 15, 63,252,144, 25, 31, 31,143,154,154, 26,148,151,151, 99,236,216,177,245,217,196, 37,201,160,107, 91,190, 72,128,
-120,101, 92,146,241,251,234, 13,135,158,190, 88, 93,155,205, 86, 44, 73, 82,156,247, 52, 63,207,244, 90,240, 60,127, 14, 64, 98,
-176,101, 8, 33,205, 0,220,200,243,124,107, 81, 20,175,162,148, 54,115,185, 92,201, 0,160,209,104, 78,243, 60, 95,228,116, 58,
-247,219,237,246,255, 1, 88, 78, 41, 45, 10,164,101,223, 17,213, 74,178,213,220, 82,109,147,135,202, 20, 41, 28,193, 41,147,174,
-230,191,246, 29, 81, 75,234, 97,178,254, 20, 8, 33,205,211,210,210, 94,241,252,127,156, 82,122,228, 98, 53, 37, 96, 52,165, 52,
- 6, 0,202,203,203, 99,142, 29, 59,150,178,124,249,242,172,153, 51,103,246,211, 90,173, 47,219,129,189,193,214, 31,216,167,213,
-118,129,144, 12,101,220, 69,229,227,171,214, 29,138,196,131,137, 75, 79, 79,127,227,250,235,175, 31, 55,111,222, 60,227,150, 45,
- 91,140, 29, 59,118,132,251,193, 8,245,126, 79, 41, 85,207,177,107,174,233, 25, 76,143, 0, 16,210,210,210,102, 95,127,253,245,
- 99,230,206,157,107,220,191,127,191,177,121,243,230,170,166,186, 32, 33,158,105, 4,157, 59,119,249,163,211,217,160,121, 31, 60,
-120,240,152,121,243,230, 25,119,239,222,109,204,204,204, 84, 53,125,189, 51,199,113,200,206,238, 30,150,230,144, 33, 67,198,188,
-251,238,187,198, 29, 59,118, 24,219,181,107,231, 49,105, 80,211,120, 33,233,188,196, 53, 47,123,234,152, 8, 66, 8,151,152,152,
-184, 48, 59, 59,123,240,215, 95,127,205, 3,192,142, 29, 59, 80, 90, 90,138,244,244,116,152,205,102,232,245,122, 88,173,214,122,
-189,101, 37, 39, 39,191,223,163, 71,143,209, 95,127,253,181, 8, 0, 95,222,126, 51, 14,139,192,164, 51,118,104, 52, 26, 28, 60,
-120, 16, 60,207, 95, 76,232,248,218,168,168,168,143,151, 46, 93, 26,215,181,107, 87,174,164,164, 4,205,155, 55,199,239,191,255,
-222, 99,253,250,245,221,238,190,251,238,187, 9, 33,227, 41,165,235,195,213,252,230,155,111, 96, 50,153,212,193,225,112,212,203,
- 88,120,195,243,124,198,150, 45, 91,146,204,102, 51, 36, 73, 2,165,180,214, 5,236,123,225,201,178,140,222,189,123, 59,130,105,
- 10,130,144,177,101,203,150, 36,131,193, 80, 71, 75,146, 36,104,181, 90,112,156,187,161,168, 36, 73,112,185, 92,200,201,201, 9,
-168, 73, 8, 33,153,153,153,183, 41,230,138,227, 56,124,246,217,103, 72, 73, 73, 65, 82, 82, 18, 76, 38, 19, 12,134,250,123, 96,
- 65, 16,144,144,144,128,251,239,191, 31,183,221,118, 27, 22, 45, 90, 4, 81, 20,107,205,143,143,143,199,119,223,125,135,232,232,
-104, 52,109,218,180,214,252,203, 21, 2,196,175, 88,127, 72,141,200,222, 50,172,179, 48,160,119,139,185,202, 56,231, 94,136,202,
-238,101,169, 44, 73,231,214,108,252,109, 90, 40, 93,167,211,217,104,227,198,141,208,233,116, 97,165, 67,146, 36,244,232,209,163,
- 81,208,180, 18, 50,180, 67,135, 14, 95,222,127,255,253,154, 86,173, 90, 17, 81, 20, 33, 8, 2, 4,193,125,139,144,101,185, 41,
-165,180,169, 44,203,125, 79,159, 62, 77,231,204,153,243, 50, 33,100, 4,165,244,191,126,245, 92,150, 78,213, 54,121, 40,165, 72,
- 73, 30, 64,155,156, 89, 77, 80,109,147,135,198, 8,150,131, 0, 46, 89,131, 69, 8,137, 54, 24, 12,207,124,254,249,231, 26, 0,
- 24, 48, 96,192, 51,132,144,135, 41,165, 21,145,218, 70, 76, 76, 12, 98, 98, 98,208,161, 67, 7,140, 28, 57, 50,182, 75,151, 46,
-143, 53,179,217, 38, 22, 1,246, 64,235, 8, 28,151,241,237, 15, 7,146,148,241, 49, 55,119,213, 12,238,219,234,180,187,130,139,
-239,210, 20,178, 68,143,175,222,112, 56,168, 1, 35,132,112, 41, 41, 41,255, 26, 50,100,200,173,243,230,205,139, 2,128,247,223,
-127, 31, 67,135, 14, 69, 74, 74, 10, 12, 6, 3, 52, 26, 13, 52, 26, 13, 68, 81, 84,127,131,232, 17, 0,124, 74, 74,202,203, 55,
-220,112,195, 45,115,231,206,141, 2,128, 5, 11, 22, 96,216,176, 97, 72, 72, 72, 64,116,116, 52,116, 58, 29,180, 90,173, 71,139,
- 32, 84,188,206, 95, 58,239, 25,212, 15, 45, 12, 58,220, 56,227, 21,196,198,198,226,251, 71,239,131,200,113,184,239,187,117,136,
-142,142, 14,121,255,240,167,185, 99,199, 14,156, 62,125,218,111,222,121,158, 15,122,189,121,231,125,232,208,161,183, 40,154, 11,
- 22, 44,192,224,193,131,145,144,144, 0,179,217,172,230,253,188,118,224,134,252,222,154,131, 7, 15,190,229,221,119,223, 85, 53,
-251,247,239,143,248,248,120, 68, 69, 69, 65,163,209,168,251,179, 62,199,232, 82,214,188, 82,168,101,176, 60, 59,138, 75, 74, 74,
-186, 53, 63, 63, 95, 61,242,162, 40, 66,167,211,169, 39,135,247,131, 59, 28, 8, 33, 36, 43, 43,235,206,175,191,254, 90, 93,201,
-238,115, 81,233,245,250,122,105,250,232, 15,184,238,186,235, 62,205,207,207,215,107, 52, 26, 88, 44, 22, 20, 22, 22, 34, 38, 38,
- 6, 90,173, 22,195,135, 15,231,115,114,114, 18,174,187,238,186, 47, 8, 33, 99, 40,165,171, 67,105, 82, 74, 97, 54,155,107, 25,
-172,139,137,220, 19, 66, 96, 48, 24,176,108,217, 50, 8,130, 80,235, 36,243,119, 19, 75, 78, 78, 14, 25,149, 0, 0,157, 78,135,
- 77,155, 54,129,227, 56,136,162,168, 14,223,124,243, 13, 30,125,244, 81,156, 62,125, 90,157, 23, 21, 21,178,116,147, 24,141, 70,
-131, 98,174, 0,247,177, 55, 24, 12, 16, 69,145, 8,130, 64,120,158, 7, 0, 74, 72,248, 21, 66, 5, 65, 64, 81, 81, 17,110,191,
-253,118,124,244,209, 71,120,225,133, 23, 48,102,204,152, 90,243, 43, 42, 42, 16, 23, 23,135,216,216, 88,232,116,186, 11, 62, 23,
- 46, 37,100,159,189, 51,253,133,151,141,238, 10, 30, 50, 32, 3, 20, 84,253, 95, 92,124, 16,175,254,235, 77, 62, 92,109,157, 78,
-135,141, 27, 55,194,187,216,149,227, 56,104, 52,154, 90,211, 4, 65, 64,106,106,106, 56,122,207, 47, 93,186, 84,251,217,103,159,
-225,171,175,190,130, 36, 73, 16, 69, 17,122,189, 30,209,209,209,136,143,143, 87,135,166, 77,155,146, 15, 62,248, 64,211,169, 83,
-167,231, 1,248, 55, 88, 28,141,145, 61,230, 10, 0,146, 6,208, 38,135,190,230,227, 98,163,220, 81,156, 75, 17, 66,136, 0, 96,
-234, 91,111,189,149,208,173, 91, 55, 0,192, 91,111,189,149, 48, 97,194,132,169,132,144,167, 41,165, 23, 92,196,202, 3,159, 18,
- 66, 70, 3,128,193, 96,208, 15, 28, 56, 80,251,246,219,111,227,170,171,174,194,131, 15, 62, 24,255,234,203, 47,223, 8, 96, 73,
-160,245,101,159, 75,109,214, 43,111,198,122,191, 80,157, 31,128,223,207, 22,225,153,103, 94, 12,149, 87, 2,128, 75, 75, 75,187,
-251,189,247,222, 83,171, 67,196,199,199,171,247, 32,223,123,148,242, 27,228,190, 68,224,142, 10, 77,152, 55,111,158,170,153,152,
-152, 88, 75, 67, 20, 69, 20,237,253, 25,223,190,159, 7, 83, 66, 42,198, 62, 58,171,222,233, 76,215,105,145, 97,208,162, 83,167,
- 78, 48, 24, 12,216, 33,186, 31,101,138,185, 10,150,206, 64,154, 60,207,171,105,164,148,194,106,181,162,178,178, 18,146, 36,193,
-110,183,163, 91,183,110, 97,229,253,221,119,223, 85, 53, 27, 53,106,164,222,223,189,239,243,202,160,188,192, 4,211, 76, 75, 75,
-155,240,239,127,255, 91,213, 76, 72, 72, 80,181, 4, 65,128, 70,163,193,130, 5, 11,124,243,120,209,154,245, 61,238,190,154, 71,
-142, 28,193,204,153, 51,161,209,104,148, 42, 64,106,196, 50, 61, 61, 29,115,230,204, 9,235, 25,119, 57,227,239,232,146,146,146,
- 18,121,223,190,125,220,246,237,219,161,209,104,144,152,152,136, 30, 61,122, 0, 0, 28, 14, 7, 4, 65,128,193, 96, 32,153,153,
-153,167,149,157,166,252,122,151,165,123,181, 48,224,126,255,253,119,121,229,202,149,220,162,145,131, 97,167, 64,151,103,102, 97,
-240,176, 97, 88,145,174, 5, 15,160,199,190, 18,104,181, 90, 33, 53, 53,213,169, 28, 4, 69,215,187,110,150,159, 86, 11, 81, 38,
-147,233,131,229,203,151,235, 57,142, 67,101,101, 37,100, 89, 70,110,110, 46, 8, 33,216,189,123, 55,158,126,250,105,124,249,229,
-151, 88,186,116,169,161,107,215,174, 31, 16, 66,218, 81, 74, 43, 21, 13, 63,154, 0,220, 23,171,193, 96, 80, 13,150,193, 96, 32,
- 87, 93,117,213,105,165,252,220,167, 56,238, 68, 97, 97, 97,183, 64,154,128, 59,146, 48, 98,196, 8,181,206,153,242, 0,244,190,
-216,148,255,133,133,133,117, 14,140, 63, 77, 89,150,209,171, 87, 47, 0,128,201,100,130,217,108,198, 15, 63,252,160,206,239,218,
-181, 43,236,118, 59, 26, 53,106,132,189,123,235,150, 66,248,211, 60,117,234, 20, 22, 46, 92, 8, 81, 20,145,144,144, 0, 81, 20,
- 53,171, 87,175,126,193,100, 50,197,240, 60,143,216,216, 88, 12, 27, 54,108,222,141, 55,222,168,164, 65,250,230,155,111,132, 64,
-154, 60,207, 67,175,215, 99,193,130, 5,152, 57,115, 38,158,124,242, 73,248,206,183, 90,173, 72, 72, 72, 64, 92, 92, 28,226,226,
-106,149,126, 5, 76,231,197,210,208,154, 20, 20,133, 59, 87, 96,207,174,213,144,168, 4, 89,146, 65,101, 10, 73,150,177,115,213,
-214,204,226,195, 39,211, 41,168, 90,219, 72,170,170,118,245,109,164,187, 10,192,178,181, 37,182,217,161,210,201,243, 60, 28, 14,
- 7, 86,172, 88,129,131, 7, 15, 98,229,202,149,176, 88, 44,104,212,168, 17, 98, 99, 99,145,147,147,131, 9, 19, 38,248, 53, 88,
-190,154,146, 36, 45, 56,113,226, 68,151,156,156, 28, 82, 94, 94,142,146,146, 18, 84, 86, 86,194,225,112,192,225,112,168,199,208,
-100, 50, 33, 37, 37, 5, 22,139,133,218,108,182, 5,129, 52,169, 76,202, 57,130, 83,135,150, 9,141, 90, 14,119, 25, 78,255,144,
- 96,179,216, 53,174,119,150, 25, 39,124,243, 68,203, 65, 28,229, 40,224,206, 58, 33,160,178, 36,149,172,254,241,240,253,161,210,
- 25, 9,130,104, 78,156, 60,121,114, 59,239,226,233,177, 99,199,162,176,176,176,221,235,175,191, 62, 17,192, 91,245,213, 52, 0,
-233, 0,224, 2,190,131,123,192,243, 22, 11,121, 97,217,178, 17, 0,238, 88,186,116, 41,198,140, 25,131,127,189,252,114, 7,248,
- 24,172, 90,251,147, 82, 20, 29, 88,143, 35, 7, 54, 66,150,101,207, 64, 3,254, 15,244,230,227,147, 78, 82, 85, 85,101,221,178,
-101,139,249,195, 15, 63, 68,124,124, 60,154, 53,107,134,168,168, 40,232,116,186, 58,102, 64, 25, 66,229,189,166,166,198,186,111,
-223, 62,243,167,159,126,138,132,132, 4, 52,109,218, 20, 38,147, 9,122,189, 94,125, 65,223,178,114, 41, 38,142, 31,142,210,163,
-251,241,230,195,183,133,157,206,123, 6,246, 67,134, 65,139,225,211,103,161, 93,187,118, 88,114,219, 77,224, 8,112,239,247, 63,
- 65, 20, 69,124, 56,244, 90,232,116, 90,220,251,253,182,176, 53,183,109,219, 6, 74, 41,154, 54,109, 10,139,197,162, 70,217, 52,
- 26, 13, 86,175, 94,141,155,110,186, 9,139, 22, 45,194, 53,215, 92, 19, 50,239, 85, 85, 85,214,221,187,119,155, 63,249,228, 19,
-196,199,199,163,113,227,198, 48, 26,141,170,158,183,137,105,209,162, 5,202,202,202,208,178,101,203,160,154,213,213,213,214, 29,
- 59,118,152, 23, 45, 90,132,248,248,120,100,100,100,192,104, 52,214,138,132, 61,255,252,243,181, 52, 58,117,234,116,209,154,245,
- 61,238,190,154, 35, 71,142, 68,203,150, 45, 17, 29, 29,173,238, 3, 95,163, 93, 79,186,163,118, 53, 7, 59, 0,173,215,239, 89,
- 0,219,252, 44,167, 76, 23, 1,116,246,204,147, 0, 84, 2,136,245,163, 23, 72,167, 4,238,120,113,162,207,242,190,219, 81, 17,
- 0,128, 16,162, 92,143,125, 1,108, 0,128,182,109,219,162,180,180, 20, 58,157, 14, 61,122,244,192,217,179,103,213, 48,159, 44,
-203, 24, 53,106, 20,255,196, 19, 79, 36,113, 28, 7,167,211, 9, 74, 41,120,158,135,242,230,231,131,204,113, 28,114,114,114,176,
-199,179, 79, 7, 15, 27,134,140,140, 12, 40,149, 56,116, 58, 29,198,140, 25, 67, 30,125,244, 81, 65,137, 94, 80, 74, 97,177, 88,
-208,169, 83,167,128,229, 82,130, 32, 60,252,197, 23, 95,196,104,181, 90,213, 92, 41,105,217,183,111, 31, 94,125,245, 85,220,113,
-199, 29, 56,122,244, 40, 82, 83, 83,241,216, 99,143,153,243,242,242, 30, 6, 48, 61,144,166,130,217,108,174,101,176,198,143, 31,
- 47,228,228,228, 36, 25,141, 70, 53,186,229, 49,149,200,201,201, 9,106,197, 61,245,159,240,221,119,223,249,125, 59,244,125, 99,
- 32,238, 86, 23, 97,105,110,217,178, 69, 53,103, 74,244, 66,153, 95, 88, 88,168, 70,176, 60, 70, 48,152, 38, 5,160, 62, 68, 61,
-145, 43,205,150, 45, 91,102,164,166,166,154,199,143, 31,143,202,202, 74,164,165,165, 97,208,160, 65,144,101, 25, 14,135, 3,147,
- 38, 77, 10, 26,121, 17, 69, 17, 91,183,110, 69, 94, 94, 30,158,120,226, 9,204,155, 55, 15, 3, 6, 12, 80,231, 43,111,113,137,
-137,137,136,142,254,211,219, 56, 68, 14, 25,112,184,156,168,169,177,128, 82, 9,146, 76, 33, 75, 50,118,175,221,153,121,120,215,
-193,172,252,197, 11, 69, 0,176,174, 91,234,189, 86,234,200,185,255,105,211, 55, 94,179,101,237,239,142, 45,193,228,121,158,199,
-125,247,221,135,105,211,166,225,214, 91,111,197,170, 85,171,240,212, 83, 79,225,238,187,239, 86,205,187,114, 46,132,194,233,116,
-190, 55,118,236,216,127, 46, 89,178,228,170, 71, 30,121,132, 3,220,215,164,209,104, 4, 33, 4, 86,171, 85, 29,246,237,219, 39,
-255,227, 31,255,248,213,110,183,191, 23, 72,143, 10,134, 95, 76,186,154,255, 22,151,114,173, 79,125, 31,207, 17, 33,218,145,216,
-180,111,249, 13,153, 3,232,128,219,154,197, 81,217, 29,225,163,160,176, 89,171,241,228, 19,143,135, 29,189,107, 8, 8, 33, 67,
- 7, 14, 28, 56,104,198,140, 25,117,230,205,152, 49, 3,123,247,238, 29, 68, 8, 41, 10, 84, 36,234, 15, 3,144, 17,147,146,242,
- 58, 0, 24, 78,157,154,108, 1,142, 3,192, 11,192, 96, 9,184,105,213,170, 85, 0,128, 38, 77,154, 64, 6, 67, 43,125,112, 0,
- 0, 32, 0, 73, 68, 65, 84,218, 19,224, 99, 30,248,212, 5,124,235,171, 69, 41,133,195,233,130,197, 98,133, 76,221,231,145, 76,
-101,200,146, 59, 10,234,107,178, 66,149,187, 81, 74, 41, 33, 68,230,121, 30, 29, 58,116,192,224,193,131,161,213,106, 97, 54,155,
-213,251,188,239, 61, 41,140,135, 34, 5, 32, 19, 66,208,162, 69, 11, 12, 26, 52, 8, 26,141, 6, 38,147, 9,209,209,209,170,193,
-226,121, 30, 29,114,250,225,211, 69,175, 96,220,224, 44,140,191, 54, 25, 95,236, 46, 9, 43,157, 77,141, 90, 52, 53,232,208,182,
-109, 91, 68, 69, 69,129, 16,128,231, 57, 53,157, 38,163, 30, 26,181,248, 49,188,188,159, 58,117, 10, 69, 69, 69, 40, 42, 42, 2,
-199,113,200,205,205,133, 86,171,133, 32, 8, 56,112,224, 0,166, 79,159, 14,187,221, 30, 86,222, 57,142, 67,235,214,173,209,175,
- 95, 63,104,181, 90, 40,207, 10,239,162, 65, 81, 20, 81, 89, 89,137, 86,173, 90, 97,217,178,101,232,221,187,119, 72,205,118,237,
-218,161,111,223,190,208,104, 52, 48, 24, 12,106, 85, 29,173, 87, 94,171,170,170,212,253,208,165, 75,192, 58,109,126, 53, 87,110,
- 61,138,249, 43,127,128,205, 46,163,162,198, 89,107,133,212, 70,209,216,240,201, 19, 97,229, 93,209,124,239,189,247, 80, 86, 86,
-166,222,135, 56,142, 83, 7, 66, 8, 50, 50, 50,240,238,187,239,214, 17,242,246, 34,148,210,117, 62,179, 19, 9, 33,249,234, 70,
- 41, 29, 70, 8,201,247,254, 13,180,156,231,239,181, 83,167, 78,205,206,203,203,155,217,179,103,207, 79, 55,109,218,180, 56,144,
- 94, 32,157,169, 83,167,102,229,229,229,205,244, 94,222,207,118, 84,188,163, 14,196,147, 57, 78,137,204,164,167,167,171,229,206,
-102,179, 25, 26,141, 70, 93,209,229,114,225,131, 15, 62, 64, 82, 82, 18,146,147,147,213, 95,127, 80, 74,105,147, 38, 77, 64, 41,
-197,131,103,221, 85,128,190, 75,211,160, 8,192, 13,103,169,170, 39, 73, 18,150, 44, 89,130,168,168, 40,245, 66, 55,155,205, 65,
-139,139,180, 90,109,223,238,221,187,115, 54,155, 77, 13,147,115, 28,135,125,251,246, 33, 47, 47, 15, 99,198,140, 65,155, 54,109,
- 32, 73, 18,170,171,171,113,221,117,215,137,111,190,249,102, 95,132,105,176,140, 70,163, 90,239,200,102,179, 97,205,154, 53,136,
-141,141, 69, 92, 92, 28, 18, 18, 18, 16, 31, 31, 15,157, 78,231,125, 98, 4,132, 82,138, 17, 35, 70,212,138, 92,121, 71,173,188,
-111,104, 74,177, 95, 56,154,215, 92,115,141, 26,189, 50,155,205,248,246,219,243,247,231, 30, 61,122,128, 82,138,196,196, 68,108,
-222,188, 57,148, 22,237,218,181, 43,100, 89, 70, 82, 82, 18, 68, 81, 36,171, 87,175,126,193, 99,174,136, 40,138,248,249,231,159,
- 81, 88, 88,136,196,196, 68,245,173, 52, 20,213,213,213,197,111,190,249,166,244,246,219,111, 3, 0,250,247,239,143,242,242,242,
- 51, 94,243, 75,199,141, 27, 87, 43,191,231,206,157, 43, 13, 41,124,137, 35, 3,112, 57, 92,168,177, 88, 81, 85, 89, 13,167, 44,
-193,233,146,112,230,196,217,216, 39, 30,157, 44,254,107,210, 4, 0,192,163,179,223, 66,229,187,231,111, 96, 95, 61, 58, 58,105,
-196,171,159, 77, 1, 48, 60,152,126, 77, 77, 13,172, 86, 43,154, 52,105,130,109,219,182,161,178,178, 18, 3, 6, 12,168, 21,253,
- 13, 81, 4,161, 66, 41,181, 19, 66,114,135, 13, 27,182,237,181,215, 94,107,217,190,125,123, 82, 93, 93,141,234,234,106,212,212,
-212, 64,249, 95, 80, 80, 64, 23, 47, 94,124,184,166,166, 38,135, 82, 26,176,206,144,182, 91,229, 65,251,142,168, 37, 63,254,162,
- 25,246,183,145, 55,197, 28, 63,113,204, 85,106,209, 87,149, 91,126,181, 73,116, 47,168, 68, 33, 81, 10, 42,201,144,168, 28, 48,
-226,242, 71, 64, 8,201,200,204,204,252,199,162, 69,139,252, 26, 82,158,231,177,104,209, 34,244,234,213,235, 31,132,144,125,193,
- 42,247, 43, 52, 3,180, 46, 81,124,226, 63,255,249,143, 6, 0,250,245,235,247, 68, 51,167,243,209, 34,192,222,190, 99,199, 91,
- 54,109,218, 20, 99, 52,186,219, 9,197,196,196,128, 82,202,215,212,212,196,228,228,228,220, 2,127, 6, 75,166,112, 58, 93,176,
- 88,109, 40, 43,175,130,211,238,132, 75,118, 65,114,201,112,201,238,232,168, 75,146, 32,187, 36,184,100, 9,188,192, 71,245,189,
-166, 73,149, 59,150, 69,202,214,253,116,180,177,159,100,202,238, 22, 94, 64, 74, 74,138, 90, 36,236, 93, 87, 38, 84, 20,195, 15,
-146,251, 94, 72,213,123,227, 47,107,243,113,102,239, 6,104, 8,133, 44, 57, 33,187, 28,144,156, 14,240,144,177,247,208, 9,180,
- 79, 11,121, 15, 81,211, 57,228,153, 23,209,163, 71, 15,124, 49,122, 56, 8, 1,238, 93,179, 25, 26,141, 6,139,111, 30, 0,173,
- 94,139,191,175,252, 41,220,116,214,202,251,142, 29, 59,240,224,131, 15,226,165,151, 94,130,193, 96, 80, 95, 78,246,239,223,143,
-207, 62,251, 12, 3, 7, 14, 12, 59,239,132,184,139, 90,149,125, 56,117,234, 84,156, 60,121, 18,175,191,254, 58,178,179,179, 33,
-138, 34,202,202,202,144,147,147,131,211,167, 79,135,165, 73,169,140,248,248,120,181,186,142,111, 29, 49, 0,245, 62, 70,222,154,
-119,221,156,138,175, 55, 46, 6, 1,193, 79,159, 76,174,245, 60,122,231,179, 31,235,173, 57,109,218,180, 90,233,172, 79,244,202,
-203,139,248, 13, 6,248, 51, 50, 33,150, 83,118,178, 46, 47, 47,111,166,239,250,161,244,188,231,251,172,111,247, 49,101,117, 14,
-102,157,187, 47,165,148,166,167,167, 67,150,101,152,205,102,104,181,238, 8,152,239,131,212,100, 50,213,114,228,161,202,147,121,
-158, 7,165, 84,221,177,190,183, 49,158,231,177,121,243,230, 58, 38,224,223,255,254,119,208,114, 90,151,203,213, 46, 42, 42, 10,
-149,149,149,106, 29, 41,173, 86,139, 41, 83,166, 96,220,184,113,170,185,210,106,181,248,232,163,143,208,173, 91, 55,216,237,246,
-118, 1, 5, 1,104, 52,154,154,142, 29, 59,186,235, 32,187,235, 78,145, 49, 99,198,240, 14,135, 3,122,189,190, 86,212, 73,169,
-155, 22,202, 12, 41,209,166, 21, 43, 86,132, 21,193, 10,183, 14, 18,165, 20, 59,119,238,172,101,212, 60, 77,141, 1, 0,187,118,
-237, 82, 31,180,225,150,119, 75,146, 4,131,193, 64, 52, 26, 13, 49,153, 76, 49,227,199,143, 87,117,149, 99,174,228, 59,156,138,
-214,191,252,242,203,117,193,230,239,222,189,251,138,236,142, 65,150,101, 56,156, 78, 88, 44, 86, 84, 86,215,224,249, 89,158, 18,
-181,231,177, 5,192,150,220,137, 15,226,190,193, 3,251, 33, 68,235,190, 64,196,199,199,227,203, 47,191,132, 40,138, 88,182,108,
- 25,162,163,163,113,211, 77, 55, 33, 58, 58, 26, 79, 60,241, 4,110,187,237,182,176, 13, 22, 0, 80, 74,203, 9, 33,185,147, 39,
- 79,222,246,242,203, 47, 55,105,210,164, 9, 28, 14, 7,236,118, 59, 28, 14, 7, 14, 29, 58,132,197,139, 23, 31,171,169,169,201,
-165,148,150,135,210,211,118,171, 60,152,255, 72,203,226, 94, 35,111,182,238, 61,181, 18,167, 79,157,133, 75, 58, 14,151, 36,193,
-229,116,185, 13,129, 44,195,229,112,129,231,185,232,235,122, 54, 93,237,174,240, 79,236,107, 55, 23, 93,127, 33,251,228, 2,161,
- 7, 14, 28, 40, 77, 76, 76, 84,222, 32,163,237,118, 59, 1, 0,173, 86, 75, 1, 40, 21,220,171, 1, 4,109,120,162,112, 12,152,
-248,175,151, 94,106,172, 20,223,191,244,210, 75,141, 31,123,228,145,137, 0,222,216,187,123,247,194,187,238,186,107,242,231,159,
-127, 94,107,157,187,238,186, 11,123,119,239, 94,232, 55,129, 0,156, 78, 39, 44, 22, 27, 74, 74,126,199, 61,247, 62,163, 78, 7,
-168, 90,209,221,211,171, 35, 0,232, 1,160,228,244,255, 48,233,193,199,252, 94,164,148, 82,218,190,125,123,229,122,135, 40,138,
-117, 42, 33,123,223,223, 67,221, 63, 60,145,161, 90, 85, 44, 52, 26, 13, 14,110,202,199,228,137,183, 0,146, 11,112, 84, 3,142,
- 26, 80, 71, 13,168,189, 26, 68,107, 0,117, 90, 67,234, 42,233, 84,170,109, 8, 60, 7,157,246,252,125,211,104, 52, 64,171,215,
-134,149, 78,127,121,255,237,183,223,112,255,253,247,195,110,183, 99,228,200,145,176, 90,173,176,217,108,176, 90,173,104,209,162,
- 5, 44, 22, 75, 72, 61, 37,239,178, 44,171, 81,192,201,147, 39, 35, 59, 59, 27,211,167, 79,199,255,253,223,255,161, 69,139, 22,
-152, 56,113, 34, 62,253,244, 83,100,101,101,161,166,166, 38,164, 38, 0,245,121, 44, 8,130,122, 15,246, 62, 86, 0,234,117,140,
-252,105,186,187, 3, 67,157,227,254,208,248,254,245,214,156, 57,115, 38, 74, 74, 74,234, 68,174,188, 35, 88,115,231,206, 13,170,
- 27, 8,159, 40, 83, 56,203,237,240, 76,178, 76,153, 50,229, 73, 66, 72,254,148, 41, 83,158,156, 53,107, 86, 97, 56,122, 1,230,
-127,227,249,189,193,107,218, 14,159,101,252,119,211,192,113, 28, 40,165,106, 88, 19,112,239, 56,101, 30, 0, 24,141, 70,228,231,
-231, 99,201,146,243,213, 6,148,101, 2,105,202,178,140,255, 38,186, 15,196, 80, 79,228, 74, 25,191,254,140,140, 97,195,134,225,
-255,217, 59,239,240, 40,170,182,141,223,103,102,251,102,211, 32,148, 52, 18, 66, 4, 66, 66, 9,161,136,210, 85,164, 74,183,243,
- 89,105, 42,190, 42,205, 6, 1, 21, 80, 4, 4, 17, 17, 16, 81,124, 1, 21,233, 77, 64,186, 1, 36,116,144, 38,144, 78, 72, 32,
-125,235,148,243,253,145,108,220,148,205,238,134, 32,229, 61,191,235,218,107, 51, 51,103,238,121,102, 55,187,115,239,115,158,115,
- 38, 34, 34,162, 76,246, 74,167,211, 85,105, 54,100, 89, 70, 82, 82, 18, 78,157, 58,133, 14, 29, 58, 32, 47, 47, 15, 10, 0,239,
-156, 60,137,232, 97,195, 96, 41, 49,126,106,181, 26,195,135, 15,119,170,227,200,159,127,254, 89,166, 8, 40, 58, 58, 58,245,161,
-135, 30, 10, 78, 72, 72, 40,205,104,105, 52, 26,104,181,218, 82,147,225,230,135, 26, 67,134, 12, 41, 99,134,202, 27, 44,251,135,
-103,235,214,173,110,117, 17, 82, 74,209,165, 75,151,210,236,149,183,183, 55,214,172, 89, 83,218,166,115,231,206, 32,132,160,110,
-221,186,216,178,101,139, 75, 77,160,248, 53,181,191,247, 60,207,163,168,168, 8,137,137,137, 80,171,213,165,245, 25, 58,157,174,
-244,252, 25, 78,160, 50,172,130, 0,163,201,140,130,130,226, 47,210, 75,167, 86,151,105, 98,179, 84,127,112,154, 61, 19,154,159,
-159,143,157, 59,119,226,215, 95,127, 69,155, 54,109,202,116, 15,186,219, 69, 88, 26, 50,165, 89,132,144,142,227,199,143, 63,248,
-209, 71, 31, 5,213,174, 93, 27, 54,155, 13, 73, 73, 73, 88,186,116,105,186,209,104,236, 72, 41,205,242, 64, 16,162, 32,194,108,
- 52, 33,175,160, 8,241,159, 44,115,214,146, 3, 0,155,181, 0,125,123,117,169,246,116, 40,213,129, 82,154, 6,224,101,251, 50,
- 33,100, 57, 0,123, 49,126, 62,165,244,121, 79,244,148, 64,215, 65, 67,134,116,127,235,173,183, 74,215,189,245,214, 91, 56,120,
-240, 96,119,229, 47,191,156, 18,128,221,252, 47,191, 52,159, 51,103, 78,105,155, 57,115,230,224,215, 95,126,249, 93, 2,118, 59,
- 9,178, 56,131,101, 50,163,176,200, 4, 31,191, 64,164, 93,217,227, 50, 22, 21,111, 1,173,226,123,217,254, 29,226,172,238,198,
- 93,115,245, 79,152,148,182,104,209, 2, 0, 74,235,142,154,119, 31,130,217,115,151, 64,195, 81, 12,236, 30,141, 58, 58, 25, 68,
- 95, 11,170, 46, 19, 65,252,194,138,119,140,111, 85,165,174, 61,206, 61,239,191,131,191,189,180, 24,190,253, 0,148, 74, 37,126,
-125,186, 55, 84,106, 21,254,111,211,222,226,193, 61, 47, 13,132, 74,163, 70,143,175, 87,185,140,213,241,220, 47, 93,186,132, 3,
- 7, 14, 32, 42, 42, 10, 23, 47, 94, 44,173,177,181, 95,183,220,236, 77,160,246,121,174,236,223,227,215,174, 93, 67,223,190,125,
-161, 82,169,176,108,217, 50,236,217,179, 7,227,199,143,199,139, 47,190,136,110,221,186, 85, 90, 23, 91, 94, 51, 38, 38,166,204,
-123,228,172, 62,202,147,247,168, 50, 77, 59,213,125,223, 29, 53,237,197,237,149,153,245, 91, 45,108,119,200, 22, 85,214,101,214,
-167, 92, 59,160,184,150,234, 79, 0,150,233,211,167,159,158, 62,125,122, 95, 66,200,198,233,211,167,247, 45,215,206,149, 78,249,
-237, 46,191, 7, 75, 13, 86, 73, 74,174, 43,240,143,137, 82, 87,209,151,237,229,229,133,151, 95,126, 25, 19, 38, 76, 40, 45,100,
-172, 10,187,115,173,138,141, 27, 55, 86, 88,183,110,221, 58, 87, 93,132,127,249,250,250,182,233,222,189, 59,242,242,242,144,156,
-156, 12,131,193,128,232, 89,179,112,114,244,104,180, 90,184, 16, 92,247,238, 0,138, 63,240, 39, 79,158,132, 70,163,249,171,202,
- 64, 42,193, 96, 48,192,223,223, 31, 90,173, 22,222,222,222,240,246,246,134,151,151, 87,169,209,114,213, 69,104,255, 48,111,218,
-180,169,202,204,149, 99,202,215, 29, 51, 68, 41, 69, 66, 66, 66,133, 12,150,253,152,246,109,246, 76,134, 59,154, 0,160,213,106,
-169, 70,163, 1,207,243,208,235,245,165,233,126,173, 86, 91,250,112, 55,131,229,106, 34,209,240,240,240, 50, 19,145, 42,149,202,
- 50, 19,145,222,171,252,211, 69,104, 65, 81, 97, 81,141,235, 91,173, 86, 40, 20, 10,252,250,235,175,104,223,190,125,169,185,178,
- 27, 43,199,247,221, 19, 40,165,169,132,144,174,243,230,205, 59, 52,123,246,108,255,194,194, 66, 44, 91,182, 44,175,176,176,176,
- 43,165, 52,213, 35, 45, 0,130, 77,132,209, 98, 65, 97, 65,241,107,240,247,233,213, 46,118,186,183, 39,124,110,214,162,197,243,
-223,125,247, 93,133,245,223,125,247, 29, 46, 94,188,248, 60, 78,158,220, 29, 10, 44,156, 48, 97, 66,100, 92, 92, 92, 40, 0, 76,
-152, 48, 33, 37, 20, 88,232, 76,147,210,127,186, 8, 11, 75,204,186,185,168,242,186, 37, 79,145,101,185,194, 15,190, 91,189, 32,
- 18, 66, 74, 77,198, 99, 79,190,140,244,203,231, 16,165,207, 70, 93, 63, 47,200, 5,233, 80, 61, 18,143,147, 55,245,248, 98,225,
- 54,143,226,212,171, 85,208,234,254,233,110,210,234,180,208,148,244, 42, 16, 66,160,213,235,160, 84,187,239,207,237,231,126,238,
-220, 57,232,245,122, 72,146, 84,225,122,227,233,136,102, 74,105,233,181,115,246,236,217, 24, 55,110, 28,150, 45, 91,134,147, 39,
- 79,162, 85,171, 86,120,244,209, 71,113,253,250,117,156, 56,113, 2, 22,139,197,237, 56, 29,175, 23,103,207,158,197,142, 29, 59,
-112,254,252,121,164,164,164,120, 20,159, 51, 77, 59,246,229, 95,119, 28,195,224,199, 90, 87,161,224, 92, 51, 62, 62, 30,215,175,
- 95,175,144,185,114, 44, 63,114,150,193,114,244, 34, 85,144,136,178,217, 35,216,235,161,236,134,168,252, 50, 0,127,251,186,137,
- 19, 39,190,231,238,126,142,203,246, 12, 88, 57, 93,167, 40, 74, 26,150,249, 4,217,187,152,236, 47,186, 99,102,202,254,183, 94,
-175, 47,205, 50,133,133,133, 85,153,189, 42, 9, 18, 60,207,163,211,229, 2,168,213,234,210,238,188, 94,215,255,217,239,197, 23,
- 95, 68, 68, 68, 68,153, 26, 44,199, 55,165, 50, 44, 22,203,238,221,187,119,199, 62,241,196, 19,252,217,179,103,161, 80, 40, 32,
-203, 50, 44, 15, 62,136, 86, 11, 23,226,212, 91,111,161,243,149, 43,176, 8, 2,180, 90, 45,182,110,221,106, 51, 26,141,149,255,
- 74,116, 2,199,113,196,110,176, 52, 26, 13,188,189,189,225,227,227, 83,154,205,241,228, 75,200,217, 47, 68,199,135, 39, 31,104,
-123, 65,191,227,133,213,254,254,153, 76,166, 50,134,203, 93, 28,187, 12,236,166,200,215,215,183, 76,183,168, 61,139,231,142,193,
-114, 53,145,168, 70,163,241,217,187,119,111,164,143,143, 15, 40,165,200,206,206,198,211, 79, 63,125,161, 10,201,123, 2, 10, 90,
- 92,228,110, 50,163,208, 84,117, 55, 72,117,248,239,127,255,139, 75,151, 46,193,102,179, 97,250,244,233, 21,140, 85,117, 50, 88,
-118, 40,165,151, 90,183,110, 45,247,236,217, 19, 9, 9, 9,208,104, 52, 2,165,212,227,249,171,168, 44,195, 38,136, 48,155, 44,
- 40, 44,170,121,147,121, 55,114,230,228,201, 95,188,188,188,158, 6, 96,200,205,205,229,125,125,125,161,215,235, 97, 50,153,242,
-248,146,145,130, 87, 1,171, 78, 16, 62,125,242,201, 39,231, 0,128, 66, 16, 62,173,106, 30,172, 82,131, 85,195,175,163,253,123,
-203, 89,246,170,186,230,138, 16, 82, 60, 60,159,227,176,108,250, 56, 68,233,179,208,186,161, 23,204,215, 47, 65,227, 19, 0,226,
- 23,142, 47, 22,110,195,217,171, 55, 61,138,243,153,229,171, 17, 26, 26,138,141,255,215, 31, 26,141, 6, 79,175,222, 81, 92,164,
- 61,242, 41,168,180, 26, 60, 50,255,191,213, 58,119,163,209,232, 52, 83,229,110, 6,203, 81,211,110, 0, 91,183,110,141, 7, 30,
-120, 0,187,119,239, 70,235,214,173,113,241,226, 69, 92,188,120, 17, 87,175, 94,197,201,147, 39,145,147,147,227, 81,156, 74,165,
- 18,171, 86,173, 66, 86, 86, 22, 84, 42, 21,242,243,243,113,229,202, 21,167,245,207,238,106, 58, 26,172,166,125,226, 1, 0, 65,
-117,124, 61, 50, 88,142,154, 51,103,206,172, 96,214,221,236,229,169,170, 81,118,185, 90, 39,251,178,181,156,217, 41,191, 92,190,
- 61, 0, 92, 7,192,187,216,175,252,114,246,244,233,211,119,219, 51, 95, 37,186, 60,117, 82,127, 5, 56,233, 34, 84, 42,149,166,
-166, 77,155,234, 28,251, 79, 57,142,131,183,183, 55, 25, 59,118, 44, 79, 8,129,193, 96,128,175,175, 47, 26, 55,110, 12,155,205,
-117, 89,130, 74,165, 50,181,107,215, 78,231,152,122, 37,132,192,203,203,139, 31, 63,126, 60, 89,178,100, 73,165,251,173, 95,191,
-190,202,127,110, 81, 20,231, 12, 27, 54,236,149,212,212, 84,255,122,245,234, 33, 35, 35, 3, 42,149, 10,148, 82,144,110,221,208,
-233,242,101,216, 74, 12,195,185,115,231,176,120,241,226, 34,155,205, 54,199,101,192,229, 48, 24, 12,168, 93,187, 54, 52, 26, 77,
-153, 81, 49, 14,169, 85,183, 50, 88, 53,105,174,236,154,142, 23, 86,251,223, 35, 71,142, 44, 93,246,228, 75, 82,165, 82,209, 62,
-125,250,216,119,160,126,126,126, 8, 8, 8, 64,102,102,102,233, 7,197,158,185,115,215, 96,185,154, 72, 84,169, 84,194,102,179,
-149,118,103,206,159, 63,191,218,198,224,110,130,138, 50, 49, 24,234, 32, 40,168, 9,234,212, 53, 67,150,165, 26,211, 22, 69, 17,
-163, 70,141, 42, 51,231, 21,240,207,108,201,246,139,130, 32, 8,101,210,255, 30,197, 95, 3,153, 36,153, 2,130, 88,146,197, 51,
- 58,245, 15,119, 45, 97, 97, 97, 62, 37, 93,134,229, 89, 73, 41,173, 80,140, 14,252, 51, 37, 3, 15,124,156,156,156,220,220,215,
-215, 23, 61,122,244,192,134,181,107,215,127, 8,148,166,108, 76, 64,170,238,218,181,255,148,252,157, 86, 85, 28,148,162,180,139,
-176,200, 88,211,102,157, 84,200, 94,221,106, 87, 14,199, 21,255, 48, 91,243,205,167,136,210,101,162, 85, 3, 13, 14, 28, 60,129,
-246,161, 20,212, 82,189,255, 71,160,248,186,163, 84, 42,161,213,235,161,209,252, 83,115,165,209,235,160, 82, 87,167, 92,225,159,
- 68,130,253,187,247, 86, 51, 88,132,112,101, 94,199, 87, 94,121, 5, 19, 38, 76, 64,143, 30, 61,112,241,226, 69,236,221,187, 23,
- 23, 46, 92,192,152, 49, 99, 16, 19, 19,131,199, 31,127,220,237, 56,149, 74, 37,214,172, 89,131,188,188, 60, 80, 74,145,149,149,
- 5,179,217,140, 73,147, 92,206, 79, 92,165,166,227,119,196,229,237,211, 0, 0,171,183, 31,173,182,230,187,239,190, 91, 58, 7,
-163,253,154, 95, 85,214,202, 77, 14,187, 88,246,116,255,219, 78,165, 6,235,252,249,243,149,142,149,111,214,172, 89,230, 35,143,
- 60, 82,247,252,249,243, 48, 24, 12,104,220,184, 49, 44, 22,139,211,110, 8,226,112,183,237,211,167, 79, 87,170,217,168, 81, 35,
-219, 99,143, 61,166,172, 95,191,126,153,204,149,125,132, 77,137, 78,165,154, 0, 64, 41, 45, 32,132, 12,127,248,225,135,127,216,
-178,101,139,174,113,227,198,200,203, 43,174,191, 93,182,108, 25, 94,127,253,117,232,116, 58,156, 63,127, 30,253,251,247, 55, 26,
-141,198,225,212, 97, 14,172,202, 52, 43, 57, 15,168, 84,170,210,110, 50,123, 87,153,186,138, 84,116,101,154,132, 16,204,155, 55,
-175,210,185,160,202,179,112,225, 66,160,220, 40, 10,103,113,126,254,249,231, 53,166,121,240,224,193, 50,247, 24,236,215,175,223,
- 55,143, 63,254, 56, 82, 82, 82,202,116, 11, 86,101,176,202,107,186,154, 72,148,231,121,212,171, 87, 15, 31,125,244, 17, 2, 2,
- 2, 80,191,126,253, 10, 6,203,213,123, 84, 29,110,183, 38,229,104,226,220,217,241, 29,191,249,118,181, 82,163,230,144,176,119,
- 53,242,115,174,149,105,111,177,253, 51, 36, 90,221,250, 17, 88,143,238,116, 43, 78,139,197,130,207, 62,251, 12,241,241,241,136,
-143,143,175, 50, 38, 39,195,161, 93,158,187,163,193,114,199,108, 85,166, 41,203, 18,209,234,253,161,247, 10, 66, 76,140, 63,100,
- 55,230,234,116,204,133,223,161,247,221,152,146,146,226, 27, 26, 26,138, 11, 23, 46, 16,252, 83,143, 85,138, 90,173,126, 26, 14,
-163,253, 42,253,188, 3, 39, 87,172, 88,209,188, 69,139, 22,152, 63,127, 62, 0,252,223,103,191,253,246, 84,188,169, 56,157, 89,
- 50, 37,195, 86,119,226,148,168, 68,180,122, 63,232, 12, 37,175,163,236,254,156,167,142,239, 92,249, 56,237, 23,191, 91,252,161,
- 87, 65,211,190,255,223, 9,155,208,167, 87, 8,254, 56,116, 18, 59, 83,189, 16,170, 73, 71,160, 49, 11,114,214, 95,248,207,144,
-214,248,226,151,226,139,248,201, 35,174, 53, 9, 33,216, 63,118, 56, 12, 90, 13, 6,175,216, 12,165, 82,137,221,111,189, 0,149,
- 74,133, 46,179,139,187,100, 79,125,246, 46, 20, 26, 53,162,198,196,187, 21,103,249,158, 26,123,205,149, 29, 87, 53, 88, 85,157,
-123, 97, 97, 33,114,114,114,240,195, 15, 63,224,165,151, 94,194,245,235,215,113,229,202, 21,156, 63,127, 30, 43, 87,174, 44,115,
-141,115, 55, 78,165, 82,137,137, 19, 39,226,157,119,222, 1,199,113,104,222,188, 57,226,227,227,209,161, 67,213,183,156,113,231,
-125, 47,143,171,236, 85, 85,154,115,231,206,245,120,192,214,253,136, 71, 5, 26,246, 76, 86, 64, 64, 0,188,188,188, 0,160,204,
- 5,214, 85, 55,161, 51, 77, 81, 20,161,211,233,160,211,233,202, 76,139,240,196, 19, 79,184,204, 96, 1, 0,165,116, 43, 33,228,
-217,232,232,232,165,241,241,241, 94, 93,187,118, 85, 6, 5, 5, 33, 46, 46, 14,231,207,159,199,166, 77,155,108, 11, 22, 44, 48,
- 26,141,198,151, 40,165,219, 61, 14, 18, 32,246,194,111,199, 25,237, 61, 65,146,164,148, 43, 87,174, 4,126,254,249,231, 60, 33,
- 4,115,230,204, 41, 51, 65,107,249,115, 60,120,240,160,232,170, 75, 70, 20,197,148, 43, 87,174, 4,206,154, 53,171,140,166,253,
- 81,222,164,184,163,233, 12,251, 57,151,127, 13,220,249,240,184,154, 72, 84,161, 80,224,220,185,115,152, 60,121, 50, 8, 33,101,
- 6, 78,220,203, 28, 56,156,190,228,161, 54, 65,254, 79, 15,233,222,130,128,131,181,146, 76, 47,127, 35, 23, 64,177,185, 26, 56,
-107, 21,214,188, 83,113,210,197,242,104, 52,154, 43,123,246,236,105, 48,109,218, 52,158,231,121,204,156, 57,179,204,255, 82,249,
-247,253,247,223,127,151,116, 58, 93,114,117,207,195,102,179,185, 28, 69,229, 20,142, 59, 48,111,230,228, 30,223,124,183, 65, 73,
-136, 21, 9,123, 86, 35, 47,183,242,161,233,106,165, 2,203, 87,172, 23, 21, 60, 87,189,162,146,154,227,155, 71, 31,125,116,210,
-142, 29, 59, 20,161,161,149,205,110,224, 30, 33,192,134,121,243,230,245, 26, 54,108, 88,173,102,205,154,217, 7,159,168, 75, 30,
- 32,197, 51,187, 59, 53, 88,142, 80, 96,221, 23,159, 79,254,191, 69,223,109, 80,115,196,134,132,189,171,145, 87,206,172,151, 71,
-165, 82,226,199, 21,235,108, 10, 5,127,174,170,118,246,121,242,110,199, 5, 49,182,207, 75,248,106,243, 98,212,109,209, 11, 67,
-251,117,196,254,249,255,135, 39,155,153, 96,251,233, 25, 52, 31,186, 28,203,222, 45,206,222,180,250,249, 93,151, 90, 28,199,193,
-199,240,207,132,149, 28,199, 65,163,213, 65,169,254, 39,251,162,214,235,193,123,144,177,181,159,187,253,111,103,109, 60,129,231,
-121, 68, 68, 68,160, 81,163, 70,120,248,225,135, 17, 27, 27,139,110,221,186,225,196,137, 19, 56,113,226, 4,198,140, 25,227,212,
- 92,185,138, 83,165, 82,161, 71,143, 30,232,217,179,167, 71,251,187,210,116, 86,107,125,171,154,149,189,118,163, 71,143, 6,128,
- 91,205,102,221, 19, 84,203, 96,213,169, 83, 7,106,181,186, 90,134,170, 50, 77,171,213, 90,106,172,116, 58, 93,105,198,106,253,
-250,245,165,109, 92, 65, 41,221, 78, 8,137,249,224,131, 15,222,212,233,116,221, 76, 38, 83, 20, 0,232,245,250,191,140, 70,227,
- 46,155,205, 54,151, 82,154,123, 43,177, 58, 26,140,242,184, 42,114,207,202,202,122,252,249,231,159,223,206,113, 92, 67,251,249,
-149,127,118, 68,150,229,171,153,153,153, 85, 14, 85,207,202,202,122,252,185,231,158,171, 84,179, 50, 93,119, 52, 43, 67,146,164,
- 50,166,202,113,132,161, 59,184,154, 72, 84,169, 84,194, 96, 48, 96,237,218,181,168, 93,187,182,167,225,221,213,252,113, 36,253,
-179,170,182,119, 13,208,236, 1, 80,103,224,172, 85,201,187,179,173, 97, 93, 3,212, 73,107,222,121,170, 65, 85,251,216,108,182,
-135,102,204,152,177, 95, 16,132, 48,119, 98, 80,171,213, 73, 22,139,165,163,219, 65,151, 64, 41,197,185,115,231,228, 87, 94,121,
- 37, 59, 43, 43,107,168,167,251, 3,192,222,132,164,217, 29,219, 5, 5, 12,233,223,177, 45, 8,129,213,234,164,168,151,128, 82,
- 74,169,130,231, 82,246, 28, 76,121,165, 58,199,170, 41, 40,165,199, 9, 33, 83, 35, 35, 35, 71, 0,112,118, 37, 92,233, 74,231,
- 42, 96, 85, 91, 44,159,183,105,211,102,252,123,239,189,231,215,175, 95, 63,132,134,134,194,215,215,243,187, 5,237, 63,148, 58,
-162, 67,155,192,144,193, 79,116,124,156, 35,132, 90,156,189,142, 37, 16,251,235,169,224,207,237, 57,152,210,210,121,187,127,230,
- 76,187, 29,217,134, 71,134,188,136, 71,134,188, 8,160,248,255,105,231, 47, 93,145,152,246, 27,226,184, 52, 88, 22,117, 4,241,
-177,255,171,187,158,230,134,227, 56,244,251,110, 45, 84, 42, 85,105,156, 15,205, 40, 59, 46,160,241,107,238,223, 75,221,241,220,
- 1,231,181, 86,158,214, 96,241, 60,143,236,236,108,156, 63,127, 30,153,153,153, 48, 26,141, 56,123,246, 44,172, 86, 43,114,114,
-114, 96, 31,105, 88,157, 56,107,234, 61,186,147,154,255, 11,198,202,142, 71, 6,139, 82,154,218,190,125,251, 42,219, 72,146,228,
-209, 40, 35,133, 66, 97,238,216,177, 35,169,108,180,129,253,111,157, 78,231,214,207,231, 18, 3, 21, 15, 32,158,148,184, 11,171,
-181,252, 93, 15, 61, 71,146,164,244,118,237,218,241, 85,213, 36,200,178, 92,229,140,113, 89, 89, 89, 69, 0,106,244,214,225,183,
- 67,179, 60,132, 16,105,196,136, 17, 85, 58, 41, 47, 47,175, 42,139,139, 92, 77, 36,106, 52, 26, 51,158,127,254,121,201,177,171,
-217,113, 34,210,251, 26, 66,147,122, 63,253,114,216,238,108,107, 24, 0,216, 77, 22, 40, 77,114,182,203,159,127,254,153, 9, 32,
-242,118,135,118,249,242,101,107,251,246,237,127, 44, 40, 40, 24, 77, 41,117, 62, 97,143, 11,246, 31, 78,119,157,158,184,203,160,
-148, 30, 7, 48,242, 86,117,172,192,217,122,102,243,168,248, 15, 63, 28, 60,249,195, 15, 27,203, 64,109,148,204, 81,197,187, 97,
-210, 28, 73, 56,146, 81,227,115,131, 73,146,148,250,208, 67, 15,121,188,143,171,237, 85,204, 36,142,255, 34, 20, 40,215, 37,232,
-142,230,237,136,211,174,217,162, 69, 11,180,106,213,170,244,217,142,227,250,216,216, 88,183, 52, 91,183,110,141,102,205,154, 57,
-157,161,189,124,205,213,157, 62,119, 59,246,159,190,177,177,149,143,236,188, 19,113,222,235,144,154, 40,100,117, 42,126, 15,214,
-205, 48, 77,166,201, 52, 75,219,240,148, 82,183, 43,243,239,167,115,103,154, 76,147,105,254,251,154,247, 27,255,187,213,103, 12,
- 6,163, 74, 60, 49, 87, 12, 6,131,193, 40, 11, 1, 80,105,135,176, 39,206,148, 16,226, 89,167,178, 27,250, 76,147,105, 50, 77,
-166,201, 52,153, 38,211,188,255, 52, 93,105,223, 47,153, 49,214, 69,200, 52,153, 38,211,100,154, 76,147,105, 50,205, 59,174,121,
-191,193,186, 8, 25, 12, 6,131,193, 96, 48,106, 24,207,111, 84,198, 96, 48,238, 43,166, 16,114, 75, 63,180, 38, 83,122,235,243,
-181,184,193,189, 18, 39,131,193, 96, 0, 44,131,197, 96, 48, 24, 12, 6,131, 81,227, 48,131,197, 96, 48, 24, 12, 6,131, 81,195,
- 48,131,197, 96, 48, 24, 12, 6,131, 81,195,220,214, 81,132, 12, 6,227,238,231, 94,169,109,186, 87,226,100, 48, 24, 12,128,101,
-176, 24, 12, 6,131,193, 96, 48,106, 28, 5, 80,246, 70,197,148, 82,231, 55,220, 99, 48, 24, 12, 6,131,193,184, 13,220,111, 94,
-164,116,154,134,251,225,100, 24, 12, 6,131,193, 96,220,187,220, 79, 94,164,180,139,208,209, 57, 50, 24, 12, 6,131,193, 96,252,
-219,220, 79, 94,164,212, 96,221, 79,174,145,193, 96, 48, 24, 12,198,189,199,253,228, 69,202,100,176,238, 39,231,200, 96, 48, 24,
- 12, 6,227,222,226,126,242, 34, 10,224,254,114,140, 12, 6,131,193, 96, 48,238, 61,238, 55, 47,114, 91,167,105, 32,132, 52,103,
-154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252, 95,131,205,131,197, 96, 48, 24, 12, 6,131, 81,195, 48,131,197, 96, 48, 24,
- 12, 6,131, 81,195, 48,131,197, 96, 48, 24, 12, 6,131, 81,195, 40, 92, 55, 97, 48, 24,247, 51,247,202, 61,250,238,149, 56, 25,
- 12, 6, 3, 96, 25, 44, 6,131,193, 96, 48, 24,140, 26,135, 0,168,116, 36, 0,165,244,148,219, 34,213, 24, 77,224, 74,159,105,
- 50, 77,166,201, 52,153, 38,211,100,154,247,159,166, 43,109, 79,252,199,221, 12,161,244,246,205,231, 69, 8,105, 94,211, 47, 20,
-211,100,154, 76,147,105, 50, 77,166,201, 52,239, 63,205,251, 13,214, 69,200, 40, 3, 33, 68, 65, 8,113, 90,155,231,106,251,191,
-165,201, 96, 48, 24, 12,198,221, 12,187,168, 49, 74, 33,132,116, 0,208,183,228,239,141,148,210, 4, 79,182,255, 91,154,119,138,
-184,184, 56,157, 86,171,237,241,251,239,191,171,206,157, 59,135,131, 7, 15,210,255,254,247,191,130,217,108,254, 45, 49, 49,209,
-116,167,227, 99,212, 12,173, 91,183,126,156, 16, 50, 1, 0, 40,165,159, 30, 61,122,116, 91,117,181, 8, 33, 36, 50, 50,114,140,
- 90,173,238,173, 84, 42,131, 36, 73, 34, 22,139, 37,221,100, 50,109, 79, 75, 75,155, 69,171, 81,184, 79, 8,105, 27, 16, 16, 48,
- 50, 38, 38,166,241,229,203,151, 83,146,147,147,151, 3,216, 6,224,241, 6, 13, 26, 60, 31, 17, 17, 17,122,250,244,233, 11,217,
-217,217, 11, 41,165,127,222,169, 56, 25,140,255,117,220, 50, 88,132, 16,206,223,223,255, 49,157, 78,247,102, 97, 97, 97,107, 31,
- 31,159,211,162, 40,206,203,200,200,216,200, 62,120,247, 7, 37, 25,164,190,148, 82, 37, 0,240, 60,223,191, 67,135, 14, 97,132,
- 16,153, 16, 66, 41,165,132,227,184, 88, 73,146,184,146,246,125, 9, 33,127, 82, 74,197,234,106,138,162,232,177,230,237, 34, 38,
- 38,102, 26,165, 52,168,170, 54, 94, 94, 94,109,118,238,220,217,116,221,186,117,226,242,229,203,115,159,122,234, 41,195, 11, 47,
-188,160, 88,182,108,217, 87, 0,254, 83,190,125,116,116,244,108,142,227, 2,220, 57,190, 44,203,217,103,206,156,121,187,154,225,
- 51,106, 16, 66,200,132,151,103,236,238, 44, 83, 96,233,196, 46, 28,138,205, 75,181,136,141,141,253,126,192,128, 1, 79, 55,105,
-210, 68, 33,203, 50, 4, 65,128,197, 98,105,122,244,232,209,174,219,182,109,107, 3, 96,168,135,177,245,157, 56,113,226,226,169,
- 83,167,214, 81, 42,149, 68, 16,132, 7,127,250,233,167,158, 35, 71,142, 60,190,112,225,194, 86, 79, 62,249,164,183,125,253,228,
-201,147,123, 17, 66,222,162,148,174,252,183,227,100, 48, 24, 46, 12,150,183,183,247, 3,117,234,212,121,167,118,237,218,189,218,
-180,105,147, 55,124,248,240,191, 79,156, 56,113, 54, 38, 38,166,240,187,239,190,251, 68, 16,132, 5, 77,154, 52,249, 45, 63, 63,
-127,214,181,107,215,206,122,114, 96, 66,200, 3, 0,134, 3,232, 5, 32, 4, 64, 58,128, 45, 0, 22, 83, 74,207, 85,231,100,130,
-131,131, 91,120,121,121,141, 39,132, 60, 88, 84, 84, 20,226,229,229,149, 78, 41, 61, 84, 80, 80, 48, 51, 35, 35,227,104,117, 52,
- 67, 66, 66, 26, 1,120, 67,161, 80,116,146, 36,169, 33,207,243, 73,146, 36,237,147, 36,105,126,122,122,250,133,234,104, 62, 28,
-234,221, 79, 54,248,204, 18,120, 93,104,161, 89, 84, 25, 52, 10, 65, 41,155, 83,228,162,220,137,135,146, 11, 87, 87, 71,179,166,
- 81,171,213,220,242,229,203, 91,169,213,106, 0,128,213,106, 69, 76, 76,204, 45,221, 39, 74,169, 84,114, 51,103,206,108,165, 82,
-169, 0, 0, 54,155, 13,221,187,119,191, 43,238, 61, 69, 8, 9, 73, 76, 76,244,181,199, 86, 30, 73,146,208,191,127,255,112,181,
- 90,141,133, 11, 23,138,217,217,217,173,151, 46, 93,154,248,213, 87, 95, 5,124,255,253,247, 67, 80,137,193,226, 56, 46,192,153,
-166, 36, 73,176,217,108, 16, 69, 17, 86,171, 21,221,186,117,171,241,115, 98, 84, 15, 74,105, 24, 5,176,229,132, 25, 0,106,223,
-138,150, 78,167,139, 26, 56,112,160, 34, 43, 43, 11, 74,165, 18, 54,155, 13,215,174, 93, 67,163, 70,141,120,171,213,218,196, 83,
-189,166, 77,155,142,156, 62,125,122,221,205,155, 55,219,126,252,241, 71,203,163,143, 62,170,122,233,165,151,124, 58,119,238,220,
- 41, 36, 36,132, 91,186,116,169,101,199,142, 29,182,231,158,123, 78, 51,109,218,180,186, 91,182,108,121, 26,128, 75,131, 85,211,
-113, 50, 24,140, 42, 12,150,183,183,247, 30,131,193, 16,249,234,171,175,158, 27, 61,122,244,111, 6,131, 65, 2,128,107,215,174,
-105,250,247,239,159, 53,104,208,160,235, 70,163,145, 95,176, 96, 65,131, 47,191,252,114,187,183,183,119, 90, 65, 65, 65, 59, 87,
- 7, 36,132, 16, 0,111,114, 28,247, 70,143, 30, 61,246, 8,130,144,181,118,237,218,159,135, 12, 25,210, 81,150,101,175,223,127,
-255,125, 19, 33,228, 27, 0,159,187,155, 29, 35,132,240, 17, 17, 17,241, 33, 33, 33, 99,191,254,250,107, 77,195,134, 13,161,215,
-235, 81, 80, 80,208,224,194,133, 11,161,111,190,249,230, 19,141, 26, 53,154,231,235,235,251, 65, 98, 98,162,224,166, 38, 9, 10,
- 10,250,143,143,143,207,199,159,124,242,137, 54, 58, 58,154,232,245,122, 92,189,122,181,121, 66, 66, 66,204,183,223,126,251, 82,
- 72, 72,200,148,180,180, 52,183,227,236, 74,136,194, 18, 89,103,155, 95,211,118,221, 22, 46,254,150, 4,120,233,161, 32, 4,130,
-205,166,204, 52,154, 34, 94, 31, 53,226,231, 14,141,235, 31, 40, 80,102, 62,114,230, 12,181,185,163, 89, 83, 80, 74, 69, 66,200,
- 70,158,231,251,171,213,106,174,127,255,254,216,177, 99, 7, 49,155,205, 10, 0,208,106,181, 98,255,254,253,161,211,233, 96,181,
- 90,101, 0, 27, 75,246,209,148,236,111,169, 74, 83,169, 84,114,221,186,117, 51, 30, 57,114,228,134,209,104, 84,218, 53,187,117,
-235, 86, 75,163,209,232, 5, 65,112, 75,243,118,162, 86,171,113,233,210,165, 50,235, 36, 73,194,245,235,215,113,227,198, 13, 88,
- 44, 22,146,147,147, 3, 73,146, 96,177, 88,178, 36, 73, 2,199, 21, 39,223,156,105,170, 84, 42,156, 63,127,190,194,122,155,205,
- 6,147,201, 4, 65, 16,144,159,159,175,211,106,181,145,157, 58,117, 74, 5,176,174,176,176,112,214,241,227,199,147,106,246,236,
- 24, 30,144,188,233,152,185, 1, 0, 27,128,203,183, 34, 68, 8,145, 1, 96,223,190,125,200,204,204, 68, 86, 86, 22,178,178,178,
- 16, 26, 26,138,234,100,255,207,157, 59, 55, 55, 54, 54,150, 28, 63,126,124, 3,128,197,171, 86,173, 26,120,243,230,205,175,199,
-141, 27, 87,107,230,204,153, 55,199,143, 31, 63, 10,192,154, 85,171, 86,189,216,162, 69,139,126, 39, 79,158,252,226, 78,196,201,
- 96, 48,170, 40,114,167,148, 6, 61,240,192, 3, 55,231,204,153,211,116,226,196,137,181, 11, 11, 11,121, 0, 8, 10, 10, 50, 3,
-128,209,104,228, 39, 76,152, 80,103,198,140, 25, 77, 53, 26, 77,142, 40,138,117, 42,209,168,108,132,193, 27, 62, 62, 62, 79,252,
-253,247,223,171,154, 54,109, 90,107,250,244,233,199,188,188,188,232, 23, 95,124,113,180, 81,163, 70,129, 73, 73, 73, 63,248,248,
-248,116, 7, 48,214, 73, 92, 21, 52,195,195,195, 39, 15, 25, 50,100,236,129, 3, 7, 52, 45, 91,182,132,183,183, 55,120,158,135,
-159,159, 31,218,183,111, 79,246,238,221,171,233,221,187,247,152,188,188,188,153,238,106, 6, 7, 7,143,237,217,179,231, 39, 71,
-142, 28,209, 61,242,200, 35,220, 36, 14,212, 0, 0, 32, 0, 73, 68, 65, 84, 68,173, 86, 35, 55, 55, 23,106,181, 26, 29, 58,116,
- 32, 95,127, 53, 95,215, 60,186,217,228,144,144,144,169,238,106, 90, 30, 8,216,254,212,232, 9,221, 55,110,217, 70,234,213,171,
-135,191, 63,159,138,125,157, 99,112,241,163,137, 8, 12, 12,196,134,205, 91, 73,223, 97,163, 59,250, 8,245,126,119, 87,243, 86,
-113,212,164,148, 38,196,196,196, 36,158, 61,123, 22,157, 58,117,194,207, 63,255,220,114,220,184,113,163,199,141, 27, 55,250,231,
-159,127,110,217,169, 83, 39,156, 61,123, 22, 49, 49, 49,137,148,210, 4, 66,200,104, 0, 55, 1,220, 44,249,219,169,230,158, 61,
-123,208,189,123,247,156, 85,171, 86, 53,154, 52,105,210,180, 73,147, 38, 77,251,249,231,159, 35,186,119,239,158,179,103,207, 30,
-143, 52,111,199,185,219,145, 36,169,194,131, 82, 10, 89,150, 81,183,110,221,235,155, 55,111,166,125,251,246,229,235,215,175,159,
-222,191,127,127,205,161, 67,135, 40, 33,100,163, 39,113, 82, 74, 97, 50,153, 96, 50,153,112,249,242,101,221,188,121,243, 58,142,
- 29, 59,246,129,159,126,250, 41,120,204,152, 49,163,124,124,124,142,182,106,213, 42,204, 19, 77, 79, 97,154,206,225, 56,238, 26,
-138,205, 85, 17,199,113,201,213,213, 28, 60,120,112,243,176,176,176,122, 63,157,246, 71,142,170, 41, 36,165, 47,100,149, 31,164,
-218,109,113, 81,213, 19, 65, 65, 65,245,194,194,194, 58,120,162, 73, 41,221,126,236,216,177, 94,148,210,133,148, 82,137, 82,250,
-203,248,241,227, 95, 33,132,172, 30, 63,126,252, 8, 74,233, 47, 37,235,151,156, 56,113,162, 31,165,116,215,157,136,243, 86, 97,
-154,255,155,154, 46,104, 11,160, 79,201,163, 29,128,246,229,150,213,229,218, 61,234,228,185, 79,185,229,182,229,246,179, 47,223,
- 50,246,218, 23,106,127,216, 55, 16, 66,132,207, 62,251,236,224,183,223,126,187, 35, 35, 35, 35, 48, 34, 34,162,207,192,129, 3,
-195,242,243,243,185, 65,131, 6,133, 7, 6, 6,246,221,181,107, 87,253, 65,131, 6,253, 62,100,200,144, 4, 66,136,203,186, 25,
- 66, 72, 35,158,231,223, 58,126,252,248,254,240,240,112, 91,122,122,186,119,108,108,108, 1, 0, 52,110,220,216,120,227,198, 13,
-157,183,183, 55, 54,111,222,124,152, 16, 50,156, 16,210,212,149,102, 80, 80, 80,108, 64, 64,192,216,143, 63,254, 88,195,243,124,
-165,109, 52, 26, 13, 62,254,248, 99,141,143,143,207,171,193,193,193, 15,186,210,172, 95,191,126,148,183,183,119,252,188,121,243,
-180, 86,171, 21, 54,155, 13,245,234,213,131,193, 96, 64, 70, 70, 6,210,174, 92,193,245,171, 87, 49,230,229,151,117, 94, 58,221,
- 91, 65, 65, 65,173, 92,105,118, 10,247,238,111, 8,110,214,245,245, 55,222,196,153, 55, 95,198,142, 96, 53,234,191, 49, 1, 45,
-119,159, 66,200,148, 89,216, 21,225,131,196,161,143,225,173,183,222,129,170,110,196, 67, 15,133, 26,158,114,165,121, 59, 80, 40,
- 20, 84,163,209,192,108, 54, 43,246,237,219,215, 73, 20, 69,165, 40,138,202,189,123,247,118,253,237,183,223,122, 77,159, 62,253,
-113,157, 78, 55,170, 67,135, 14,223, 19, 66,230, 82, 74,117,148, 82, 29,128,153,246,204, 83,101,154, 74,165, 18, 38,147, 73,121,
-228,200,145, 17,146, 36,169, 37, 73, 82, 31, 57,114,228,181, 93,187,118, 61,191,112,225, 66,143, 53,255, 45,120,158,135, 66,161,
-128, 82,169, 68,171, 86,173,254, 94,177, 98,133, 16, 20, 20,164, 88,180,104,145,127,221,186,117,189,190,255,254,251,220,156,156,
-156,207, 60,209,180, 90,173,176, 88, 44, 48,153, 76,216,183,111, 95,195, 87, 95,125, 85, 97,181, 90,165, 97,195,134,221, 20, 4,
-193,242,218,107,175,249, 24, 12,134,119,110,215, 57, 49,170,134, 82, 42, 1, 40, 2, 80,104,207,162,134,135,135,107,130,131,131,
- 91,132,135,135,187,253,255, 88, 88, 88,248,205,236,217,179, 67, 56,141, 31,246, 91,123, 99, 21,157,138,237,126, 95, 33, 43,124,
- 28,234,133, 62,128,158, 61,123,214, 37,132,204,175,129,120,215, 81, 74,135, 80, 74,127,173,206,254,183, 59,206,182,109,219,118,
-106,211,166,205,145,184,184,184,140, 54,109,218, 28,105,219,182,109,167,234,106,217,153, 58,146, 60,250,233, 27,124,234, 71,163,
- 8,253,244, 13, 62,117,234, 72,242,232,173,106, 50,238, 60,149,121, 17, 7,234, 16, 66, 54, 18, 66, 54,190,251,238,187,221, 0,
-212, 46,183,252,144, 99, 59, 0,234,202,158,237, 15,135,245,117, 80,108,172,234, 56, 44,215, 8,165, 93,132,148,210, 74,187, 57,
-234,212,169, 99,125,239,189,247,142,155,205,230, 83,223,127,255,125,228,232,209,163, 99,195,194,194,206, 15, 26, 52,104,147, 94,
-175, 23,237, 53, 58,110,242,114,239,222,189, 55,215,170, 85,139,100,103,103,171,172, 86,171,226,218,181,107, 42, 73,146, 8,207,
-243,212,104, 52, 42, 46, 94,188,168,180,217,108,242,131, 15, 62,184, 62, 33, 33, 97, 56,128,183,170, 18,212,235,245,175, 45, 90,
-180, 72,235,204, 92, 73,146,132,194,194, 66,136,162,136, 41, 83,166,104,199,142, 29,251, 38,128,131, 85,105, 42,149,202, 49,115,
-230,204,209,218,187,128,100, 89,198,209,163, 71,145,125,253, 58, 44, 5,249,176, 22,228,195,154,151, 3,174, 48, 15,207,247,122,
- 92,187,240,215,181,111, 3,120,190, 42, 77,171,198, 48,227,251,197,223, 66,146, 36,164,175,173,188, 36,226,230,129,221,144, 68,
- 1,211, 62,157, 73,222,122,249,201,233, 0, 86, 85,165,249,111,162, 86,171,185,207, 63,255,188,169, 90,173, 6, 33,132, 90,173,
- 86, 68, 71, 71,223, 82,253,148, 90,173,230,231,206,157, 27,171, 82,169,136, 93,179,121,243,230,119, 69, 77,150, 35, 42,149, 10,
- 58,157, 14,225,225,225,166,126,253,250, 37,204,157, 59,183, 1,207,243,122,133, 66,177, 53, 47, 47,111,250,233,211,167, 61,234,
- 70,178, 88, 44, 48,155,205, 48,155,205, 72, 78, 78,174, 31, 25, 25, 73,254,243,159,255, 72, 69, 69, 69, 17, 75,150, 44,185,180,
-106,213, 42,253,252,249,243, 7, 1,120,227, 54,157, 18,195, 9,145,145,145,106, 31, 31, 31,223, 6,181, 21, 69, 74, 30, 69, 25,
-162, 88, 47, 36, 36,100, 2,128, 54,141, 27, 55,246,191,120,241, 98, 78,112,112,240, 65,142,227, 86,166,164,164,100, 84,165, 69,
- 41, 37,162, 40, 98, 68,187, 92,140,122,144,131, 40,138,200,205,205, 69,114,114, 50, 78,159, 62,141, 67,135, 78, 87, 43,198,134,
- 13, 27,190,172,213,106,123,168,213,234,112, 73,146, 56,163,209,152,100,177, 88,118,164,167,167,127, 67,171, 49,177,225,237,138,
-211, 65,127,214,192,129, 3,131,124,125,125,113,236,216,177,160, 19, 39, 78,204, 2,208,230, 86, 52,213, 74,110,233,176, 87,230,
- 7,215,242,243,195,213,179, 27,130,215,109,249,105, 41,138,107,121, 25,247, 56,206,188, 8,128, 44, 74,105,233,136,243,233,211,
-167,247, 45,105,223,215,113,217, 13,253, 10,237, 74, 70,176,187,181,191, 39,148, 26, 44,251, 72, 49,103, 13,181, 90,173, 52,114,
-228,200,243,235,215,175, 15,111,211,166,205, 95,206,138,129, 93,240,112,211,166, 77,147, 14, 31, 62, 76,235,212,169, 99,149,101,
-153,232,245,122, 73,167,211,201,121,121,121, 16, 4,129, 38, 37, 37, 41,146,147,147, 85, 1, 1, 1, 42,184,145,170, 83, 42,149,
- 29, 26, 54,108, 88,233, 54,171,213,138,194,194, 66, 20, 20, 20,192, 98,177,160, 94,189,122,132,227,184,246,174, 52, 57,142,235,
-216,180,105, 83,146,147,147,131,160,160, 32,236,223,191, 31,133,121,185,176, 20, 20,192,146,151, 11, 91,126, 30,164,252, 92,228,
- 94,207, 64,120, 96, 8, 41,153,106,160, 74, 68, 94, 23, 86,215,224,133,139, 83, 39,160,237,209, 36, 16,165, 10,135,155, 7,130,
- 10,197,165, 86,237, 78,166,131,168,212,248,107,204, 11,168,255,236,171, 16, 56, 77,176, 43,205,219,129, 40,138,196, 98,177, 64,
-171,213,138,157, 58,117,218,199,243,124, 87,181, 90,205,141, 26, 53, 10,215,174, 93,179, 55, 35, 0, 48,106,212, 40,232,116, 58,
- 88, 44, 22, 17,192, 56,103, 53, 83,162, 40, 18, 65, 16,160,211,233,132, 54,109,218,124,195,243,252,107,106,181,154,111,210,164,
- 73,230,140, 25, 51,210,189,188,188,188,146,147,147,111,170,213,234,212,240,240,240,118, 58,157, 46,204,149,230,191,137, 70,163,
-129, 66,161, 0,199,113,168, 93,187,118,209,141, 27, 55, 14,253,253,247,223,207, 84, 71, 75,146, 36, 88,173, 86, 8,130, 0,179,
-217, 12, 89,150,113,226,196, 9,104, 52, 26,165, 36, 73,167, 37, 73,210, 43,149, 74,240, 60,207,230,168,251,151,137,139,139,235,
-218,178,190,207,172, 81,129, 22,255, 70,125,189, 10,245, 26,190,232,233,181, 66,219, 71, 31, 29,250,248,184,113, 19, 12, 1, 1,
- 1,234, 43, 87,174,152,191,248,226,139,134,107,214,172, 33, 0, 62,175, 74, 47, 61, 61,125,245,140, 25, 51,106,117,237,218, 53,
- 66,169, 84,146,220,220, 92,100,101,101,225,250,245,235, 72, 78, 78,166, 87,175, 94,253, 91, 20,197,159, 61,137,177,101,203,150,
- 75,158,125,246,217, 97,209,209,209, 74, 74, 41, 4, 65,128,209,104,140, 61,116,232,208, 19,251,247,239,239, 4,192,227,255,203,
-140,140,140,159, 63,253,244, 83,175, 46, 93,186, 52, 85, 42,149, 92, 77,196,233, 8,165, 52,200, 96, 48, 96,199,142, 29,240,241,
-241,129,171,209,186,238, 96, 19,229,224, 90,126,181, 97,190, 48, 27, 65, 62, 97,176,137,242, 29,249,190,100,212, 60, 85,120,145,
- 63, 1,244,185, 85, 51,116,187,204, 84,101,184,204, 96,217,185,118,237,154,166,176,176, 80, 33,203, 50,103,177, 88,148,178, 44,
- 67,169, 84,186, 85, 48,238, 64,244,192,129, 3, 15,182,109,219,214, 8, 0,106,181, 90,244,245,245, 21,243,242,242, 80, 98,176,
-100,133, 66, 97, 54, 24, 12,230,136,136, 8, 0,112,217, 69,104, 50,153, 26,232,116,186, 10,235,141, 70, 35, 10, 11, 11, 75, 13,
-150,209,104,132,143,143, 15,138,138,138, 92,126,184, 37, 73, 10,215,235,245, 72, 79, 79, 7, 0, 20,230,230,192,156,159, 15, 91,
- 65, 30,108,185, 57, 16,242,114, 33,228,229,128, 51,153,224, 23, 18, 10, 81, 20, 67, 93,105, 22, 89, 36, 53, 15,138,235, 27, 87,
-163,222,107,227,156,182,187,185,111, 23, 12,145, 77, 96, 50,217,254,245, 57,202, 8, 33, 29, 56,142,139,107,214,172, 25,250,247,
-239,143,161, 67,135,158,208,233,116,117,231,207,159, 31,157,150,150, 86,161,253,128, 1, 3,240,198, 27,111, 96,224,192,129, 63,
- 28, 59,118,108, 65, 85,154, 93,186,116, 65,183,110,221,106, 13, 29, 58,244,170,193, 96, 72, 92,188,120,113,187, 41, 83,166,100,
- 26,141,198,180,196,196,196, 22,169,169,169,250,198,141, 27,239,142,137,137,225, 54,111,222, 28, 86,149,230,191,141, 40,138, 16,
- 4, 1, 54,155, 13, 22,139,197,229,103,197,145,242, 9, 5, 65, 16, 74, 71, 16,154,205,102, 8,130, 64,214,173, 91,139, 13, 27,
- 54,112,103,207,158, 9,153, 56,241, 93,228,230,230, 66,146,164, 26, 63, 15, 70,229,180,105,211,166,151,130,202,139,158,171, 47,
-106,159,171, 39, 22, 42, 56, 90,120,225,219, 15,138, 78,248, 41, 44,150, 34,226,253,254, 7, 31,248, 95,186,116,201,246,233,167,
-159,102,244,239,223, 95,251,202, 43,175, 52,219,188,121,115,167, 6, 13, 26,124,155,156,156,156, 91,153, 38, 33, 68,245,242,203,
- 47, 31,244,247,247,111,244,227,143, 63,102,166,167,167,215, 18, 4, 65,111,181, 90,109, 86,171,245,146,205,102,219,111,181, 90,
-119,100,100,100, 36,122, 18,171,193, 96,104,249,212, 83, 79, 41,115,114,114,160, 80, 40, 96,179,217,144,149,149,133,214,173, 91,
-243, 59,119,238,140,174,206,249,159, 57,115,102,118, 80, 80,208,238, 13, 27, 54,244,240,242,242,138, 83,171,213,245, 37, 73,146,
-204,102,115,166,217,108, 62, 94,157, 56, 29, 33,132,164, 31, 61,122, 52,200,219,219, 27,105,105,105, 32,132,164, 87, 87,203,142,
- 74,201,165, 92,253,107,125,104,144, 79, 67,156, 59,119, 16, 42, 37,151,114,171,154,140,187,131, 42,190, 95,219,150,108,239,235,
-194, 36,153, 38, 78,156,248, 30, 33,100,227,196,137, 19,223,171, 68,223,190,159,228,216,206,161,125,141,253,168,175,242, 34, 94,
- 80, 80,160,248,243,207, 63,107, 39, 39, 39, 27,234,215,175,111,140,137,137,201, 37,132, 80, 73,146,184,155, 55,111,122,165,166,
-166,106,253,253,253, 45,161,161,161,121,110, 30,239,194,235,175,191,222,101,210,164, 73,137,143, 61,246, 88, 54, 0,228,228,228,
- 32, 43, 43,203, 62, 74, 11,233,233,233,220,145, 35, 71,106,109,221,186, 53, 22,110,140,224,209,233,116,201, 5, 5, 5, 77,252,
-252,252, 0, 20, 95,208,236,166,202,241,217,102,179,161,160,160, 0, 94, 94, 94, 46, 63,220, 28,199,165,165,165,165, 69,154, 76,
- 70, 36, 93,188, 8, 75, 65, 30,108,249,121, 16,242,115, 33,228,230, 66,202,189, 9,174,176, 0, 6,157, 14, 5, 55,111,128,231,
-249,107,174, 52,189, 52,188, 85, 16, 37,117,157,158, 79, 0,196,249,245,217,175,125, 71,208,168,150,208,233,126,245,212,188,222,
- 18,246, 57,171,236,115, 82,233,116, 58,124,242,201, 39, 72, 76, 76,148,171,234, 6, 86,171,213,224, 56,174, 82, 55, 80, 94, 83,
-163,209,232, 38, 77,154,164, 59,126,252,184, 86,173, 86,195, 96, 48,232,143, 31, 63,222,226,143, 63,254,224,140, 70, 35, 31, 25,
- 25, 57, 48, 56, 56,184,176, 42,205,219,137, 40, 86, 44, 35, 20, 69, 17,133,133,133,165,117, 83, 55,111,222, 84,104,181,218,198,
-157, 59,119, 78,176, 90,173, 63,139,162,248, 93, 98, 98, 98,190, 51, 77,155,173,226, 96, 80, 89,150, 33,138, 34, 68, 81,132, 66,
-161,144,215,173, 91,143, 47, 23,204,197, 47,171,126,165, 93,186,116, 33,155, 55,111,134, 44,203,169, 53,123,118, 12,103,200,178,
- 60,107,215,132,193, 90, 72, 82,161,101,247,138,162,109, 55, 20, 69,223,158,218,117,228,134, 96,209, 60,240, 64, 68,148,143,183,
- 47,247,253,242,111,111,102,100,254,125,225,203, 47, 83, 67,167, 77,155,230, 23, 17, 17,225,123,254,252,249, 96, 0,149, 26, 44,
-131,193, 16,254,194, 11, 47,188,116,243,230, 77,229,226,197,139,151,165,165,165,237,165,148,254,237,216,134, 16,210,154, 16, 50,
- 19,128, 18, 64, 61, 0, 34,128,237,148,210, 31,156,197, 90, 50,135, 28,118,239,222, 93, 97,180,159, 44,203,213, 30,237,151,145,
-145,145,211,190,125,251,150, 23, 46, 92, 88,151,147,147,243, 99,249,237,122,189,254,137,152,152,152,167, 15, 31, 62,252, 33,165,
-244, 82,101, 26,206,160,148,190,117,246,236,217,207,100, 89, 14,227, 56, 46,137, 82, 58,190,186,113,218,177,218,228, 87,214,111,
- 89,181,216, 42, 72, 13,212, 74, 62,217,106,147, 95,189, 85, 77,198, 93,143,189, 70, 10,142,198,169, 18, 99,244,199,244,233,211,
-117, 51,102,204,192,244,233,211, 43,244,111,219, 53, 40,165,125,167, 79,159,126,218,222,206,161,253,222,154, 10, 88, 81,114,160,
- 10, 87,124, 81, 20, 13,239,190,251,238,195,177,177,177,233, 93,187,118,205,104,216,176,161,209,190, 77,175,215, 91,253,252,252,
-172, 22,139, 69,147,158,158, 94,231,175,191,254,106, 40,203,114,197, 52, 82, 69,126,247,243,243,171,117,228,200,145,218, 43, 87,
-174,124,224,232,209,163, 97,207, 62,251,108, 23,139,197, 2,171,213,138,203,151, 47,135, 45, 90,180, 72, 86,169, 84,185,132,144,
- 63, 1,184,188,200, 10,130,144,112,225,194,133,198,237,219,183, 39,130, 32,148, 49, 85,142,127,171,213,106,164,165,165, 81, 89,
-150, 15,185, 17,231,193, 35,135, 15, 71, 54,111,214, 12,150,188, 28, 88,243,115, 97,203,203,133,152,151, 11, 57, 63, 23, 92, 97,
- 1,106,215, 82, 66,167,243,194,133,244, 12,148,196, 90, 37, 74,209,116, 53, 45, 47,191, 73,100,252,231,216, 21,225, 3, 42,216,
- 74,187, 5, 1,148,118, 23, 62,244, 87, 22,246,253,145, 0,133,100,169,152, 50,250, 23,177, 90,173,242,160, 65,131, 14,115, 28,
-231,241,141, 62,157, 33, 8,130, 60,122,244,232, 82,205,148,148,148,155, 41, 41, 41, 90,147,201,196, 25, 12,134,194,154, 58,206,
- 45,196, 87, 97,157,205,102,131,213,106,133,201,100, 66, 70, 70,134,122,251,246,237,157, 18, 18, 18, 84,103,206,156, 65, 66, 66,
- 66,171,117,235,214,189, 27, 21, 21,213,242,175,191,254,170,212,100,151, 55,109,178, 44,195,126, 29,164,148,130, 82,202, 3,192,
-250, 53, 27,209,179,103, 79, 82, 80, 80,128, 13, 27, 54,212, 72, 55, 10,195,109,138, 32, 74, 58,235,158, 21, 69,239, 92, 84,231,
-159, 54, 42, 62, 78, 76, 76,220,214,187,119,239,125, 65,245, 34,124, 0, 64,163, 50,212,225,169,183,161, 78,157, 58, 26, 0, 8,
- 10, 10,138, 19, 4, 97, 1,128,142,149, 9, 14, 24, 48,224,161,186,117,235,198,110,217,178,229,120, 90, 90,218,190,242,230, 10,
- 0,154, 52,105, 50,229,212,169, 83,189,148, 74,101,233,247,111, 73,113,111,165, 6,107,240,224,193, 77, 66, 66, 66,106,111,190,
-224,139,124, 85, 36,100, 46, 23,148,215, 64,242,107,137, 36, 85, 52,234,213,251,171,118,100,100,100,171, 75,151, 46, 29,247,228,
-228, 9, 33, 13,158,124,242,201, 77, 75,150, 44,137,234,217,179,167, 26, 64, 5,131, 21, 21, 21, 53,104,231,206,157, 67, 70,141,
- 26,213,146, 16,210,143, 82,122,209, 93,253,196,196,196, 3, 0, 92,150, 81,120,194,164,133,116, 7,128,176,154,212,100,220,121,
- 92,244, 14,100, 57,100,159,178, 80,124, 47,101,199,101,251,255,189,213,161,109, 86,137,110, 95, 0,214,114, 89,175,202,182,101,
- 1,168,177,228,134,211, 12,150,205,102,219,126,249,242,229,182, 79, 62,249,100,150,163,185,114,124, 1, 12, 6,131,197,199,199,
-167,240,240,225,195, 65,146, 36,237,118,227,120,139,119,238,220,185,107,222,188,121, 43,106,213,170, 37, 60,255,252,243,220,132,
- 9, 19,246,221,184,113,131,222,184,113, 3,243,231,207,239,220,169, 83,167,125, 73, 73, 73, 82, 98, 98,226,139, 0,122,186, 18,
- 52, 26,141, 95,189,246,218,107, 79,239,219,183, 79,107,181, 90,145,155,155, 91, 33,123, 37, 8, 2,120,158,199,130, 5, 11, 44,
- 69, 69, 69,115, 93,105,138,162,248,205, 87, 95,125, 53,100,209,151,243,180, 10,193, 6, 99,110, 14,164,146, 7,111, 46,130, 65,
-203, 33, 50,182, 14,114,211, 53, 88,190,229,128, 73, 20,197,175, 92,105, 42,205,133,227, 70,141, 24,190,113,251,239,187, 80,187,
- 99,119,100,239,218, 90,161,141,186, 78, 61, 88,109, 54,124, 60, 53,158, 18, 83,238, 4, 87,154, 53,137,125,206, 42, 66,136,253,
- 31,112,227,177, 99,199, 18, 98, 99, 99,123, 89,173, 86,167,251, 89,173, 86,200,178, 92,233, 8, 3, 87,154, 26,141, 38,181, 73,
-147, 38,191, 55,106,212,104, 32, 0, 52,107,214,108, 13,199,113,221,171,210,188,157, 8,130,128, 73,147, 38, 97,198,140, 25,152,
- 56,113, 34,128, 98,131,100,255, 1, 96,177, 88, 26,110,221,186, 85,125,224,192, 1,186,124,249,242,236,193,131, 7,251, 61,251,
-236,179,126, 63,254,248,227,127, 0, 84,250,126, 9,130,128,241,227,199, 99,225,194,133, 24, 57,114,100,133,237, 60,207,203,105,
-105,169,176, 88, 45,116,253,250,245,233, 10,133,194,255,139, 47,190,208,141, 29, 59,246,174, 43,246,191, 95,145, 36,233,253,142,
-179,215,189, 9,232, 4, 81, 20,231,158, 56,113,100, 55, 0, 12, 29, 58,180,238,236,217,179,213, 0,240,249,204,207,149,148, 82,
-165,125, 98,216,143, 62,250, 72, 59, 98,196,136,186,206, 52, 87,175, 94,157,243,209, 71, 31,213,126,229,149, 87,122,238,218,181,
- 75, 75, 8,217,138,226, 26,146,108, 20,255,112, 12, 0,112,160, 78,157, 58,129,171, 86,173,138,236,209,163,135,151,171, 56,139,
-138,138,190,253,250,235,175,195,103,237,245,198,230,162,129, 72,161, 67, 65,107, 81,212, 82, 21,160,153, 33, 25, 93, 2, 83,130,
-126,252,241,199,197, 0,226,220, 61,119, 66, 72,244,224,193,131,215, 46, 89,178,164,225,240,225,195, 83, 15, 28, 56,144, 66, 8,
-153, 82, 73,211, 27, 47,188,240, 66,210,178,101,203, 34,101, 89,222, 70, 8,233, 73, 41,173,214, 68,203, 12, 70, 53,113,235,182,
- 79,213,104,123,219,112,106,176, 68, 81,124,153, 16, 18, 51,113,226,196,207,130,130,130, 26,196,199,199, 95,105,214,172, 89,145,
-125,251,141, 27, 55, 12,123,246,236,137,200,207,207, 47, 16, 69,113, 24,165,244, 68,121, 13, 82,238,110,219,148,210, 36, 66,200,
-103,173, 90,181,122,250,167,159,126,218,227,237,237,157,127,240,224, 65, 31, 31, 31,159,188, 51,103,206,120,241, 60,111,252,251,
-239,191,177, 99,199,142,206, 0,190,172,236, 87, 82,121,205,244,244,244, 99, 13, 27, 54,252,124,236,216,177, 99, 63,252,240, 67,
-173, 44,203, 48,153, 76, 40, 40, 40,128,217,108, 46, 45, 78, 94,185,114,165,197, 98,177, 44, 74, 75, 75,171, 48,130,176, 18,205,
-132,208,208,208,133,115,191,152, 59,250,213,167,159, 84,211,220, 27,200,203, 48,129,152,139, 96,208,170, 17,221, 61, 24, 69, 55,
- 8,150,236, 57, 98,189,105,181,173, 74, 75, 75,171, 96, 46,203,107,238, 79, 46,216,244,224, 3,117,119,124, 52, 53,254,209,119,
-191,251, 21,178, 44,227,175,215,158, 71,206,222, 29,208, 55,107,129,135,254,202,130,213,106,197,196,241, 99,193, 27, 51,247, 29,
- 76, 46,252,197,149,102, 77,224,168, 89, 50, 15,213,159, 37,127,139,132,144,209,132,144, 97, 81, 81, 81, 24, 53,106, 20, 6, 12,
- 24, 80,102,223,181,107,215,226,235,175,191,134,197, 98, 25, 70, 8, 57, 74, 41, 93,224,137,102,195,134, 13,219, 69, 71, 71,243,
- 65, 65, 65, 70, 0,224,121,190,251,233,211,167,219, 70, 69, 69, 85,169,121,155,206, 61,231,226,197,139, 62, 51,103,206, 36, 54,
-155, 13, 83,166, 76,129,221, 88,218, 51, 78,239,191,255,126,144,183,183, 55,102,205,154,101,205,206,206,126,228,198,141, 27, 59,
-231,205,155, 23,176,114,229,202,103, 80, 98,176,202,105, 94, 63,123,246,172,247,194,133, 11, 57, 81, 20, 49,123,246,236, 10, 25,
-173,183,222,122, 11, 54,155, 0,165, 66,105,181,152, 45,209, 58,157,238,146,191,191,191, 78,150,101, 90, 89,156,183,227,220,255,
-215, 53, 79,156, 56,177, 29,192,118,103,237,237,117,116, 38,147, 9,217,217,217,200,206,206,134,175,175, 47,224, 48,193,108,121,
- 77,147,201,116,124,252,248,241,137,223,124,243, 77,207, 63,254,248,227,201,189,123,247,246,222,177, 99,135, 57, 41, 41, 73, 20,
- 4,129, 6, 6, 6, 42, 58,118,236,168,237,221,187,183,151, 70,163,225,222,127,255,253,236, 79, 62,249, 36, 0,192, 13,103,154,
-148, 82, 94,150,101,188,221, 41, 31,227,187, 41, 96,177, 20,255,160, 76, 79, 79,195,233,211,167,145,144,112, 14,132,144, 42, 7,
- 71, 84,242,122,206,253,241,199, 31, 35,212,106, 53, 89,177, 98, 69,131, 21, 43, 86,140,113,245,250,253,240,195, 15,225, 43, 86,
-172, 88, 64, 8,121,148, 82, 42,223,171,239, 59,211,188,251, 52,239, 55,170,172,193,162,148,158, 6,208,147, 16,210,113,248,240,
-225,159, 70, 69, 69, 89, 68, 81, 84,110,219,182,173,105,118,118,182, 90, 20,197,241,148, 82,143,250, 43, 41,165, 11, 9, 33,232,
-223,191,255,248, 70,141, 26,237, 60,122,244,104,203, 62,125,250,108, 91,187,118,109, 71, 81, 20,255, 62,117,234,212, 48, 0,115,
- 1,124,233,174,230,213,171, 87,167,236,216,177,131, 28, 60,120,240,157,137, 19, 39,106,234,212,169, 67,252,252,252, 96, 50,153,
-144,146,146, 66,151, 45, 91,102,177, 88, 44, 95,250,250,250,126,224,174,102,157, 58,117, 38,236, 61,114, 68,125,254,210,197, 23,
- 95,236,245,152,182, 65,227, 38, 48, 16,160,240,230, 13,236,217,147,129,239, 14, 29, 55,103, 91,109,255,229,121,222,237,161,244,
- 33,151,178,122,110, 95,181,100,203,238,223,127,127,116,218,140,207, 72,208,115,175,194, 43,172, 33,228,240, 7,176,103,247,110,
-124,242,209, 20,202, 23,102,238, 21, 46,101, 62,230,174,102, 77, 67, 75,238, 3, 88, 50,255,212, 76, 89,150, 21, 64,113, 77,214,
- 27,111,188, 1,199, 91,231,124,253,245,215, 48,153, 76, 0,160, 32,132,204, 36,132, 44,173,108,212, 95, 21,154,161,155, 54,109,
- 10,117,212,140,138,138,114, 75,179,166,201,204,204,252,224,229,151, 95,158,161, 84, 42,125,101, 89,174, 80,156, 14, 0, 94, 94,
- 94,200,207,207,135, 36, 73, 98,173, 90,181,206, 9,130, 0,133, 66, 1, 56,249, 28, 21, 21, 21,125, 48,114,228,200,143, 9, 33,
- 78, 51, 29, 58,157, 46,105,255,254,253, 15, 60,251,236,179,220,170, 85,171, 46, 63,243,204, 51,154, 63,254,248, 67, 2, 80,173,
- 57,141, 24,183, 31, 74, 41,138,138,138, 0,192,233,148, 8,148,210,100, 66,200,248,196,196, 68,237,200,145, 35,227,158,123,238,
- 57,159,110,221,186, 25, 28,219,152, 76, 38,121,195,134, 13, 69, 11, 23, 46,188,177,119,239,222, 63, 95,122,233,165,129, 40,238,
-222,168,148,244,244,244, 77,243,231,207,247,237,210,165, 75, 99, 73,146,144,157,157, 93, 90,131,149,154,154,138,164,164,164, 36,
- 89,150,215,123,120, 58,175, 61,251,236,179,155,151, 45, 91, 22, 54,124,248,240,212,149, 43, 87,174, 7, 80, 89, 77,173, 97,208,
-160, 65, 79, 44, 91,182, 44,108,196,136, 17,201, 0,198, 80, 54,195, 59,131, 81, 37,110,141, 84,163,148,238, 7,208,129, 16,210,
-159,231,249,113,133,133,133,179, 41,165,235,170,123,208, 18,147,181,237,226,197,139,175, 0,104, 51,119,238,220,119, 1,164,160,
- 56,173,215,163,178,122, 5, 23,122, 18,128, 15,131,131,131, 87,199,199,199,215,200,189, 8, 75,110,169,243, 90, 80, 80,208,202,
- 79, 87,174,254,128, 82,218,154,163,114,109,153,112, 57, 28,199, 29,147, 36,233,147,212,212,212, 61,158,104,254, 92, 28,103,143,
- 7, 27,120,247, 29, 63,226,217,207, 68,165, 46,188,208, 44,170,189, 52, 10,171, 74,178, 36,113,166,156,247, 15, 38, 21,222,149,
- 23, 86,139,197, 34, 14, 28, 56,240, 91,142,227,100, 0,144, 36, 73, 97,177, 88, 94,132,155,255, 67,255,150,102,117,201,206,206,
- 46, 4,240, 90, 85,109, 58,117,234,244,195,150, 45, 91,158,237,209,163,135,180,113,227,198,204,190,125,251, 42, 18, 19, 19, 41,
-128, 29,149,181,191,122,245,170, 5, 78,238, 72, 96,167, 85,171, 86, 97, 75,151, 46, 61,250,202, 43,175,248, 44, 88,176,160,214,
-225,195,135,165, 37, 75,150,228, 23, 22, 22,206,170,246,201, 48,106, 20, 82, 50, 40, 69,169, 84, 66,175,215,195,199,199, 7, 89,
- 89, 89, 46, 71,122, 82, 74, 47, 17, 66,250,140, 27, 55,174,211,184,113,227,250,132,132,132, 68, 55,104,208,160, 1,199,113, 92,
- 70, 70, 70, 86, 74, 74,202, 85,155,205,182, 19,192, 38, 0,170, 70,141, 26, 29, 3,176,220,153,222,153, 51,103, 62, 14, 10, 10,
-218,181,102,205,154, 62, 26,141,166,153, 90,173,174, 37, 8, 2, 87, 84, 84,116,211,102,179,157,181, 88, 44, 27,211,211,211,255,
-240,228,220, 40,165,231, 9, 33,221, 20, 10,197,166, 37, 75,150, 68,101,100,100,132,239,217,179,167, 95,249,118,113,113,113,203,
-150, 45, 91, 22, 54,106,212,168, 75, 43, 86,172,240,168, 6,139,193,248, 95,197,163, 11, 89,137,169,170,182,177, 42,167,149, 4,
-224,131,146, 71,141,144,150,150,118, 18,192,179, 53,165, 7, 0,233,233,233, 7, 0, 60, 14, 20,207,230,156, 82,124,209,188, 37,
- 14, 38, 23,108, 4,176,209,101,195, 59, 8,165,212, 66, 8, 25, 87, 50,202, 9, 0,198,149,159, 54,129, 16,114,194,113,187,171,
- 76,211,237,208,252, 55,201,201,201,249,207,119,223,125,119,248,245,215, 95,215, 12, 29, 58, 20,103,207,158,197,130, 5, 11, 44,
- 57, 57, 57, 46,111,166,235,140,227,199,143, 39,181,106,213,170,245,226,197,139,223, 89,180,104, 81,127, 66, 8,187, 23,225, 93,
-130,213,106,253,251,169,167,158,178,223, 63,149,218,111,157,100,159,182, 67, 20, 69,151, 63, 4, 75,178,183,187, 74, 30,174,168,
-244, 86, 94,142,164,167,167, 39, 0, 72,112, 67,203,109, 74,178,109,125,174, 94,189, 58,237,252,249,243, 21,139, 67, 1,156, 62,
-125,122,109,143, 30, 61,244, 9, 9, 9,239,121, 58,138,144,193,248, 95,133, 84, 99,226, 95,247,197,239,145,126, 95,166,233, 92,
-147,184,184,241,114,101,219,239,132,102,117, 96,154, 76,147,105, 50, 77,166,121,247,104,222,111,252,235, 93, 49,140,123, 11,119,
-178, 82,119,131, 38,131,193, 96, 48, 24,119, 19, 4, 64,165,243, 28,121,226, 76, 9, 33, 30,207,149,228, 74,159,105, 50, 77,166,
-201, 52,153, 38,211,100,154,247,159,102, 37,218,131,203,109, 42, 51, 15, 36,165,116,145,167, 49,220, 13,176, 46, 66,166,201, 52,
-153, 38,211,100,154, 76,147,105,222,113, 77, 39,199, 25,126,175, 26, 44,118, 67, 89, 6,131,193, 96, 48, 24,140, 26,134, 25, 44,
- 6,131,193, 96, 48, 24,140, 26,198,173, 34,119,181, 90, 29, 67, 41,125,137, 16, 82,159, 16,114,141, 82,186,212,106,181, 86,184,
-137,226,253,142, 90,173,142, 33,132,188, 68, 41,173, 79, 41,189, 70, 8,185,179,175, 3, 33,100, 74,124,241,108,210,147,227, 65,
- 43,157, 29,147,193, 96, 48, 24, 12,198,191,142, 83,131, 21, 30, 26,250, 36,199,147,121, 54, 65,242,247,243,243,227,230,207,159,
-207,245,235,215, 15, 27, 54,108,192,152, 55,222, 24, 19, 28, 28, 36,171, 20,138, 28, 42,139, 99,174,166,164,255,228,206,193, 6,
- 13, 26,148, 41, 8,130,211, 89,173,121,158,191,190,118,237,218,122,213, 57, 17, 71,130,227,158,204, 20,108, 54,167,199, 81, 40,
-148,215,211,143,253,236,214,113, 66, 67,131,158,228, 9, 55, 79,144,100,127,127,127,127,238,203, 47,191, 44,125, 29, 94,127,253,
-245, 49, 33,193,193,178, 74,201,231,200, 18, 29,115, 53, 37,197,173,215,161, 70,112, 48, 87, 0, 48, 37, 30,100, 50, 33, 96, 38,
-139,193, 96, 48, 24,140, 59,143, 83,131, 69, 56, 44, 88,241,205, 76,255, 27, 55,115,176,114,237, 54, 68, 69, 69,225,204,153, 51,
-136,138,138, 66,199,118, 45,185,199, 59,180,226,120, 14,117, 38,125,185,124, 1, 0,183,140,133, 32, 8,117,215,172, 89, 3, 66,
- 72,233,132,125,246, 73,251, 10, 10, 10,240,230,155,111, 58, 53, 69,158, 32,216,108,117,255,254,243, 87, 40,121, 2, 65,162, 16,
- 68, 10, 65,148, 97,147, 40,242,141, 34,186,247,121,214,237,227,112,224, 22, 44,157, 55,211, 63, 55, 47, 15,191,110,222, 94,230,
-117,232,254,112, 91,110,104,239,174,156, 94,167,170, 51,124,194,167,110,191, 14, 53,129,163,185,114, 92, 55,185,138,219,119, 48,
- 24, 12, 6,131,193,248,119,112,106,176,172,130,228, 95,175,150, 47,190, 91,186, 20,227, 39,126,132,166, 77,155,130, 82, 10, 66,
- 8,222,251,112, 42,230,124, 52, 17, 79,245,234, 12, 65,148,253,157,105, 84, 54,194,128, 16,130, 43, 87,174,192,100, 50,149,121,
-196,196,196,184, 21,176,187,163, 22,148, 60,193,166,163, 5,176, 9, 50,108, 98,201, 67,144,209,173,185,183, 71,154,130, 36,251,
-251,249, 24,176,248,155,175, 49,126,234,204, 50,175,195,132,247, 62,196, 87, 51, 62,192, 91,163,254, 15, 86, 65,242,119, 87,179,
-186, 48, 77,166,201, 52,153, 38,211,100,154,247,171,230,253,134, 2, 0, 8, 33, 93, 0,236, 6, 0, 74,105,105,102, 68,176,154,
- 17, 29, 90, 27, 95,207,250, 24, 20, 28,100, 74, 1, 10, 80, 89, 64,195, 0, 61, 76, 70,163,199, 7,148,101, 25, 54,155, 13,130,
- 32, 96,209,162, 69, 40, 44, 44,132, 44,203,136,138,138, 2, 0,196,197,197, 57,102, 96,146, 19, 19, 19,195, 92,105,214,109, 49,
- 32, 9, 20, 13, 28,215, 77,158,249, 45, 14, 28,253, 27,148, 2, 26,157, 30, 67,158, 27, 1, 73,166,176, 9,158,223,159,212,108,
- 52, 34,208,160,196,156, 79, 62, 4,167, 84,129, 3, 1,199, 17,112, 68, 70,211, 16,127, 88,138,111, 78,252,175, 50, 57, 30,180,
-124, 22,107,114, 60, 40, 38,255,235,161, 48, 24, 12, 6,131,113,203, 56,243, 34,247, 42,246, 12,214,238,202, 78,198,106, 54, 33,
-196, 95,133,250, 6, 95,136,162,132,211,182, 64, 20, 24,205,176,217, 4, 36,217,108,184,116, 44, 3, 15, 61,244, 16, 6, 12, 24,
- 32,217,108, 54,168, 84,170,188,181,107,215,214,170,234,128,178, 44, 67, 16, 4,216,108, 54, 20, 21, 21,225,199, 31,127,132, 66,
-161,128, 44, 23, 27, 31,123, 9, 17,165, 20, 15, 63,252,112,131,170,180, 74,161,104,112,233,240,106,120,107,121,136, 50,133, 40,
- 82, 8, 18, 32,201, 20, 70,171,140, 65, 47,127, 0, 81,150, 33,202, 50,172,110, 24,172, 50,134,173, 86, 91,244,127,119, 37, 0,
- 67,233,118, 31, 13,197,248,135, 57,168,212, 26,168, 85, 60, 44, 38,207,141,230, 45, 67, 41,157, 76, 8, 88,145, 59,131,193, 96,
- 48,238, 19, 42,245, 34,247, 42,101,186, 8, 9, 33, 93, 40,165,123,236,203, 86,179, 17,162, 32, 65, 16, 37,136,130,136,188, 66,
- 19, 62,251,236, 51,104, 52, 26, 16, 66, 74,205,146, 44,203,156, 32, 8,232,221,187,183,211,238, 66, 59,146, 36,193,102,179,193,
-102,179,129, 82, 10,158,231,209,190,125,251, 10,237, 14, 30, 60,232,209,137,120,107,121, 52,124,244,221, 10,235, 15,173,254, 24,
-148, 82, 72, 82,241,195, 29,131,229,202,176,197,118, 25, 10,139, 85, 0,165, 0,104,113,134,235,142, 64, 41, 45,173,185, 98,153,
- 43, 6,131,193, 96,220, 7,148,247, 34,247, 42,229,107,176,118, 3,255,116, 59, 89, 76, 38, 8,130, 8, 81,148, 32, 8,197,198,
- 72,167,211,161,115,231,206, 0,202,102,155,182,109,219, 6,155,205,230,242,128,246,162,246, 18, 99, 6, 74, 41, 86,174, 92, 9,
-165, 82, 89,250, 80,169, 84, 30,159,136, 40, 81,188, 59,225,109,168, 20, 28,148, 10,174,244, 89,162, 20,148, 22,155, 35, 73,166,
-176, 8,238, 37,121,170, 50,108, 0, 96,181,216, 0, 74, 65, 65, 97, 42, 42,242, 56, 94, 6,131,193, 96, 48, 24,149, 82,198,139,
-220,171,216, 13, 86, 87, 66, 72, 5,231, 97, 53, 21,149,100,175, 36, 8,162, 88,106,160,102,205,154, 5,133, 66, 1,181, 90, 13,
-133, 66, 81,106,136,220, 49, 88,102,179, 25, 17, 17, 17,176, 90,173,136,138,138, 2,165, 20, 79, 63,253,116,133,118,135, 15, 31,
-246,232, 68, 4,137, 98,250,167,179, 43,172,223,255,243, 71,104,209,172, 33,218, 61,224, 5,179, 77, 70,190, 81,116, 75,175, 42,
-195, 6,160, 56,131, 5,128, 82,192, 84,116,135, 50, 88, 12, 6,131,193, 96,220, 63, 84,234, 69,238, 85, 20, 0, 80,146,138,171,
-224, 22,205, 70, 35, 68, 65, 44, 53, 89, 86,171, 21,178, 44,227,141, 55,222,168, 32,180,115,231, 78, 88,173,214,170, 15,166, 80,
- 92,127,245,213, 87,203, 76,145, 64, 41,197,234,213,171,161,209,104,202,100,177, 8,241,204,188, 10, 18, 69,252,251, 99,161, 86,
-242,101, 12,145, 44, 3, 27, 54,253,134, 13,155,126, 43,109,203,243,202,235,238,232, 57, 51,108, 0, 96,181,150,100,176, 40, 69,
- 81, 97,129, 71,177, 50, 24, 12, 6,131,193, 40,139, 51, 47,114,175, 82,229, 76,238,102, 83, 17, 4,135, 26, 44,155,205, 6, 81,
- 20,177,104,209,162, 50,221,121, 74,165, 18, 28,199,185,204, 96,173, 89,179,166,204,228,158,113,113,113,148, 82,138, 33, 67,134,
-148,118, 55,190,248,226,139, 24, 62,124,184,199, 6, 75,148, 40,166, 76,155, 85,170,211,251,209, 78,232,223,171, 11,228, 18, 47,
-124,253,212, 90,143, 4,171, 50,108, 0, 96,181, 20,215, 96, 81, 0,198, 2,214, 69,200, 96, 48, 24, 12, 6,227, 31,156, 26, 44,
-165,130,203,187,148,116,205, 55,192, 75, 11, 81,182, 64,148,139, 71,254, 73,146,132,225,195,135,151,182,123,230,153,103, 48,108,
-216,176, 74, 13,150, 59,119,219,150,101, 25,251,247,239, 7, 33, 4, 28,199,149, 62,156,225, 76,179,200, 34,227,192, 79, 83, 33,
- 83, 10,153, 2,114,201, 64, 4,171,232, 58,219, 88,153,166, 43,195,166, 49,248,129,231, 40, 8, 1, 46,165,102, 66,193,115,121,
-158,158,187,167, 48, 77,166,201, 52,153, 38,211,100,154,247,171,230,253,134, 83,131, 69, 37, 58,102,225,198,131,243, 4, 73,246,
-181,175,139,142,142,134,205,102,195,214,173, 91, 75,141, 7,207,243,165, 93,122,238,212, 96,149, 35,185,115,231,206, 85, 77,197,
-144,236,150, 10, 65,114,155,110, 79, 58,215, 33,110,234, 56,224,202,176, 45,217,251,207, 45, 8, 21, 28,151, 7, 74,199,120,122,
- 12, 6,131,193, 96, 48, 24,247, 39, 78, 13, 86,114, 90,218,114, 0,203, 29,215,245,233,211,167,240,137, 39,158,208,137,162, 8,
-171,213, 10,155,205, 6,171,213, 90,250,208,104, 52, 30,205,184,233,206, 36,162,238,112,253,228,218, 26,209, 41,197, 13,195,150,
-158,158, 94,179,199,100, 48, 24, 12, 6,131,113,223, 80,101, 13, 86,121,140, 70,163, 31, 33, 68,145,158,158, 94, 97,219,181,107,
-215, 0,192,189, 33,122,119, 57, 53,110,216, 24, 12, 6,131,193, 96,252, 79,225,145,193,218,189,123,183,136,251,196, 68, 49, 24,
- 12, 6,131,193, 96,220, 46,156, 87,147, 51, 24, 12, 6,131,193, 96, 48,170,235,122,100, 60, 0, 0, 32, 0, 73, 68, 65, 84, 5,
- 1,208,188,178, 13,158,140, 14, 32,132, 84,170, 81, 21,174,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,255,105,186,210,
-118,220,159, 16, 50,156, 82,186,200,211, 24,238, 6,200,237,188, 63,240,189, 50, 52,148,105, 50, 77,166,201, 52,153, 38,211,100,
-154,119, 86,211,201,113,238, 89,131,197,186, 8, 61,128,196,141, 80,222,233, 24, 24, 12, 6,131,193, 96,220,253,120, 84,228,126,
- 43, 76,153, 50,229,150,204,220,228,201,147,229,154,138,197, 83, 72,200,224, 72, 94,129,207, 90,199,182,232,197,133, 13,218, 76,
- 37, 50,129,166,174,190,116,167,226,185,215,137, 53,144, 0,129, 40,251,250, 27,180,253, 27,120, 43, 30,188,152,109,252,195,104,
-147, 55, 80, 34,172, 59,147, 79,115,238,116,124, 12, 6,131,193, 96,220, 42,183,108,176,218,182,109,219, 80,150,229,255, 3,240,
- 28,165,244,248,209,163, 71, 7, 87, 71,103,231,206,157,193,130, 32,180, 21, 69,177, 53,128,214, 58,189,161,149,197, 98,190, 78,
- 64, 95,232,213,171,215, 49, 79,245,226,226,226, 54, 1,232, 93,217, 54, 66,200,148, 35, 71,142,196,187,171,197, 43,240,217,111,
-235,150,244,207, 48,234,176, 39, 49,105,192,210,207, 39, 2,192, 64, 79, 99,250, 55, 8, 10, 10,210, 1,120,129,227,184, 71, 52,
- 26, 77, 99,179,217,124, 21,192, 73, 66,200,130,212,212,212,138,243,107,184, 1, 33,132,139, 49, 40, 95,214,235,244, 61, 3,189,
-213,173,211,114,242,211,204, 54,121,159, 76,108, 51, 61, 53, 68,145,132,168, 27, 53,240,219,243,206,160,142, 81, 45,163, 31,128,
-156,116, 28,230,220,172, 39, 18,211,140, 79,124,115,232,250,219,145,132,180,190, 68,105,213, 55,181, 44, 33, 52, 52, 52, 80,146,
- 36, 69,122,122,122, 10, 0, 68, 68, 68,248, 88, 44,150, 54, 0,162, 0,252,165,209,104,142, 92,190,124, 57,223,243, 51,254,135,
-123, 69, 51, 36, 36, 36, 72,150,229, 87,234,213,171,215, 39, 51, 51,115, 19,199,113, 75,170,251,126, 51,254,119, 8,127,112,216,
-108,194,145, 0, 79,246,161, 50,205,190,122,240,135,183,111, 87, 76, 12,198,253, 66,181, 12, 86,116,116,180,151, 90,173, 30,194,
-113,220, 11, 45,227, 58,116,124, 98,232, 11, 68, 32,122,124, 50,246, 25,143,167,112, 56,122,244,168, 38, 35, 35,227,163,134, 77,
-227,254,211,181, 71,127,174, 89, 84, 83, 4,212,246,135,204,169,177,108,235,133,218,187,191,121,113, 62,128, 14,213, 8,179,247,
- 79,155, 15, 33, 35, 87, 2, 33, 0, 33, 0, 71,128, 66,179,140,247, 94,234, 56, 25, 64,188, 59, 34, 36,110,132, 50, 38, 58,170,
-215,133,155, 90,108, 61, 37, 0, 8,130,222,191, 94, 47, 18, 55, 66, 73, 19,191, 17,170, 17,215,109, 35, 48, 48,176,117,237,218,
-181,191,122,241,197, 23,253, 27, 55,110, 28,168, 86,171,245,102,179,249,129,164,164,164,134,115,230,204,121, 44, 48, 48,112, 70,
- 70, 70,198,175,158,104, 70,249,105, 27,244,106, 26,246,211,132, 81,255,215,174,113, 68, 40, 20,214, 34, 80, 75, 97,104,210,149,
-191, 59, 76, 91,242,235,171, 49,190,202,167, 79,231, 9, 59,220,213,211,122,171,222,127,111,248,211, 81,145,222, 20,214, 51,251,
-161,224, 41,180,222,254,104,215,128, 7, 1,109, 22,255,123,250,123, 0, 38,187,210, 9, 10, 10,154, 10,224, 61, 0, 36, 48, 48,
-240, 39,165, 82,121,248,193, 7, 31,108,250,212, 83, 79,145, 22, 45, 90,224,216,177, 99,205, 54,108,216, 48,184, 65,131, 6,231,
-172, 86,235,161,218,181,107, 31, 63,115,230,140, 91,183, 26,136,142,142, 86,221,184,113,163,149, 90,173,110,127, 55,107, 6, 5,
- 5,233,172, 86,235,255,133,132,132, 12,127,226,137, 39, 90,244,235,215,143, 52,105,210, 4,231,206,157,139,219,178,101,203,228,
- 86,173, 90,157, 76, 77, 77, 93,164, 86,171,191, 79, 79, 79,119,107, 18,224,161,143,146,115, 63,239,160, 77,171,187,221, 17, 66,
-136, 31, 0, 45,165, 52,195,141,182,245, 0,232, 41,165,151,255,109,205,219, 65, 72, 72,200, 89, 66, 72,173,146, 56,236,241,148,
-249,219,241, 89,146,164,162,164,164,164, 70, 85,105, 54,104,208,160,153, 44,203,188,227, 58,165,210,121,213,130, 40,138,114, 74,
- 74,202,153,170, 52, 9, 71, 2, 22,125, 53,219, 87,193, 1, 18, 45,121, 8, 20, 18,165,144,101, 64,146, 1, 73,150, 33, 74, 20,
- 50,149, 33,136, 20, 83, 38,191,231,226,236, 25, 12, 6,224,129,193, 34,132,144,184,184,184,206,148,210, 23,194, 35, 34,135, 12,
-122,118,132, 46,252,129,230, 40,148,125,112, 37, 91,198,209, 93, 43, 0, 96,149, 39, 7,223,182,109, 91, 27, 74,241,221,168,137,
-179,155,182,140,109,139, 83,105, 34, 14,164, 72, 40,186, 36, 65,193,155, 32,203, 0,165,212,226,233, 73,217, 73,205, 17,177,239,
-156, 21, 60, 7,112, 28,192,115, 4,188,135,247,233,166,137,223, 8, 92,216,160,205,191, 29, 78, 27, 0,109, 61, 24,115,210, 96,
-204,201,220, 66, 83,214,220, 85,230, 42, 56, 56,184,123, 68, 68,196, 23,111,190,249,102,253,140,140,140, 90,135, 14, 29,130, 70,
-163,129,191,191,191, 34, 32, 32,160,233,196,137, 19,243,166, 77,155, 54,174, 94,189,122,199, 50, 51, 51,175,186,163, 25,109, 80,
- 71,117,105, 29,253,199,164,169,241,190,150,196, 45,200,253,229, 23,240,156, 12,149,151, 1,129, 58, 61,230,246, 9,175, 53,113,
- 91,202,175, 45,116,186,168,147, 38, 83,154, 59,154,161,117,107,245,136,108,220, 4,185, 27, 23,224, 98,174, 5, 9,153, 22, 60,
-209,165, 13, 34,253,117,136, 21, 37,212,214, 42,186,195,133,193, 10, 9, 9,241, 7, 48,225,234,213,171,156, 74,165, 34, 13, 27,
- 54,124,122,209,162, 69,180, 89,179,102,165,119,221,238,208,161, 3, 58,116,232, 64, 10, 11, 11,163, 14, 28, 56, 16,181,118,237,
- 90, 33, 56, 56, 56, 49, 45, 45,109,153, 51,221,136,136, 70,201, 22,139, 57, 84,163,213,153,231,204,153,243,223, 7, 31,124, 80,
- 86,171,213,184, 21, 77, 0, 8, 12, 12,252, 49, 36, 36, 68, 63,105,210,164,236,182,109,219,210,154,208,108,216,176,225,111,157,
- 58,117,234,214,163, 71, 15,197,195, 15, 63,140,160,160,160,210,109, 1, 1, 1,232,212,169, 19, 73, 73, 73,105,185,111,223,190,
- 5,191,253,246,219,188,134, 13, 27,238,186,114,229, 74,143,170, 52, 75,104,114,139,219, 29,225, 1, 76, 39,132, 44,166,148, 30,
-112,214,136, 16,210, 26,192, 51, 0, 62,187, 67,154, 85,162,211,233, 50,205,102,115, 93, 0,208,106,181,215, 77, 38, 83, 61, 87,
-251, 16, 66, 12,115,230,204,169,171, 82,169,192,113, 28, 36, 73,130, 36, 73,144,101, 25,148,210,210,103,251, 32,163,169, 83,167,
- 74,174, 52,101, 89,230,102,207,158,173,212,233,116, 0, 0, 65, 16,202, 60,219,177, 47, 79,157, 58,213,173,239, 40,157,154,199,
-135, 99,135,183,227, 36,171,182,202,227,243,106,243,203,227,190, 56,236,142, 38,131,193,240,192, 96,197,198,198,110,238, 53,112,
- 88,207, 7, 59,247,128,168,170,139,115,215, 9, 82,174, 80, 40,120, 17, 28,100, 92,254,115, 29,229, 56,238,123,199,125,170, 26,
- 97,176,121,243,230,183, 27, 68,182,154,241, 94,252,116,254, 84,166, 26,223,237, 51, 65,178,228,193,148,125, 9, 69,215, 47,160,
-224,218, 89,228,166,157, 58,201,113, 92,188,187,154,229,161, 20,144, 41, 5,161, 4,144, 1,128, 22,167,177, 42,180,171, 90,147,
- 74,100, 66,226,111,223, 13,136,237,255, 46, 46,236, 91, 14, 80,110,130,235, 99,215,252,232, 10,103,154, 65, 65, 65,143,133,135,
-135,207, 28, 49, 98, 68,200,137, 19, 39,124,140, 70, 99,209,225,195,135,247,100,100,100,212, 11, 8, 8, 72,121,234,169,167, 30,
-170, 91,183,110,221,206,157, 59,235,183,109,219,246, 62,128, 87, 92,105, 54,247, 82,199,116,106,215, 60,225,227,153,179,188,178,
-127,157, 7,235,149, 19, 72,200, 52,227, 68,150,137, 6,251,228,145, 39,155,251,195, 75,173,192,240,246,117, 13,255,217,112,245,
- 83, 0,207,186,115,238, 13,131,235, 53, 18, 76, 38,152, 77, 54,108,190,144,103, 74,200,201,171,203,121,167,102,141, 27,208, 70,
-203,103,167,163,190,183,242, 1, 79,206, 29, 40,206, 2,232,245,250, 74,183,249,250,250,162, 67,135, 14,104,212,168,145,242,153,
-103,158,121, 16,192, 50,103,154, 54,155, 45, 48, 45, 45, 29,141,155, 52,214, 60,242,200, 35,132,231,121, 88,173, 21,123, 43, 61,
-209, 4, 0, 47, 47,175,126,173, 91,183, 86,252,240,195, 15,185, 87,175, 94, 61, 61,104,208,160, 52,189, 94, 95,230,130,170,215,
-235,209,160, 65, 3,140, 30, 61, 90,249,234,171,175,186,212,172, 87,175,222, 99,203,151, 47, 7, 33,164,244,226, 93,158,176,176,
- 48,212,175, 95, 31,189,123,247, 86, 12, 30, 60,248, 49,199,109,229, 53,135, 62, 74,206,161,196, 60, 13,125,148, 84, 57,180,184,
-100,251,249,242,153,172,242,154,148,210, 27,132,144,133, 0,214, 16, 66,134, 84,102,136, 8, 33, 15, 3,248, 5, 64, 47, 74,233,
-245,242,219,171,210, 84,171,213, 42,155,205,230, 15,148, 53, 62,158,106, 58,196, 66, 19, 19, 19, 17, 23, 23, 7,199,103,179,217,
- 92,106,132, 8, 33,117, 43,219,183, 50, 77,158,231,241,245,215, 95,131,227, 56,168, 84, 42, 40,149, 74,168, 84,170, 10,143,216,
-216,216,202, 36, 43,213, 84, 42,149,248,250,235,175, 33, 73, 18,119,245,234,213, 23, 36, 73,234,111, 54,155,235,234,116,186, 44,
-149, 74,181,177, 75,151, 46, 75, 53, 26,141,232,137, 38,199, 3,156,100,213,238,216,182,222,171,210,157, 0, 88, 44, 22,244,237,
-255, 36, 56, 82,177,148,246,223,252,174, 99,154,247,183,166, 11,218, 2,168,227,176,108, 5, 96,255,181,154,141,226,105,167,106,
-151, 91,239,216,206,254,156, 85,178,190, 78,201,126,212, 65, 55, 11,192,159, 53, 21,176, 2, 40,254, 98,161,148, 18,251,179,147,
-182, 62,169, 38, 63, 20, 94, 9,128,130,147,161,224, 9, 20, 60, 0, 16,220, 72, 61, 11,107,209,141,253, 71,142, 28,185,226,206,
- 65,183,110,221,218, 33,188, 89,187, 79,227, 63,254,156, 91,186,215,132, 60,163, 25,217,103,214, 35,227,240,183, 25,178,104, 91,
-207,113,220, 17,142,227,142,182,110,217,226, 92, 96, 96,160,203, 95,118,206,144,105,113,138,187,212, 88,201, 0,129,231,211, 82,
-208,212,213,151,130,186,124, 80,102,185,186, 49,213, 52, 33, 33, 33,189, 34, 35, 35,167,143, 24, 49, 34,236,232,209,163,222, 5,
- 5, 5, 89, 59,118,236, 56,103,179,217,142,113, 28, 55, 55, 61, 61,189,203,242,229,203,245,227,199,143,239,209,164, 73,147, 38,
-191,253,246,155,209,149,102,180,151,170,229,176,231,159, 74,232, 63,124,140,246,244,234,249,208,156, 59,138, 69,103,114,164, 35,
-153,166,247,205,133,226, 23, 58,189,226,225, 92,179,184,253,157, 78,129, 92,160,183, 18,161,190,170,174,238,198,171, 86,106, 20,
- 84,161,133,213, 34,162,200, 42, 91,207,100,209,162,183,187, 54,183, 81,175, 0, 45, 0, 40,120,206,165,233, 79, 77, 77,205, 9,
- 10, 10,250, 52, 60, 60,252, 3, 66, 8,237,220,185,243,153,184,184,184, 34, 89,150, 97, 50,153, 96,179,217,160, 84, 42, 97, 50,
-153,144,148,148,132, 67,135, 14,193,215,215,215,149,108, 25,114,115,115, 17, 30, 30, 14,189, 94,127,203,154,178, 44,147, 5, 11,
- 22,104, 79,159, 62,173, 93,179,102, 77,173,183,223,126, 59, 47, 54, 54,246,236,128, 1, 3, 82,106,213,170,101, 59,126,252, 56,
- 18, 18, 18,144,147,147,131,118,237,218,185,165,105,179,217,160, 80, 40, 96, 50,153,160,209,104,160, 80, 40, 32,138, 34,100, 89,
- 46, 53, 93,133,133,133,184,121,243, 38,148, 74,165,203, 27,177,219,205,210,208, 71, 9,253,249,151, 63,174, 23,247, 13,229, 11,
-176,229, 9, 16,243, 4, 8,121, 2,132, 92, 97,232,155,179, 90,254,188,195,233,119, 68, 5, 40,165, 7, 9, 33, 67, 0,252, 82,
-222,100, 57, 24,161, 33,148,210,227,158,106,218,108,182,253,118,227,163,213,106,235, 18, 82,108, 12, 53, 26,141, 96,177, 88,186,
-121,162, 9, 0,137,137,137,104,221,186, 53, 95,162, 73,237,207, 37, 15,143, 32,132,128,231,121, 40,149, 74,240, 60,143,214,173,
- 91,163, 95,191,126,104,210,164, 9, 82, 83, 83,177,123,247,110, 92,184,112, 1, 42,149,170, 76,215,161, 43,148, 74, 37, 56,142,
-227,206,159, 63,191,244,145, 71, 30,137, 28, 51,102,140,186, 65,131, 6, 56,119,238, 92,253, 5, 11, 22, 12,219,185,115,103,151,
-129, 3, 7, 14, 3, 32, 86,213,125,232, 8, 95, 98,154, 44, 22, 11,206,158, 61, 91,117, 91, 79,187, 0, 24, 12, 15,112,225, 69,
-234, 16, 66, 54,218, 23, 40,165,125,237,203, 19, 39, 78,124,111,250,244,233,167, 9, 33, 27, 29,215, 59,182,115,124, 46, 57,214,
- 70, 74,105,223,119,223,125, 55,102,198,140, 25,211,236,109,107,242,124,220,206, 96,241, 60, 63,232,212,214, 47, 14, 62, 96,163,
- 97,245, 98,250,160,248, 59,135, 0,160, 72, 58,190, 21,178, 44, 47,115, 71, 39, 33, 33, 65, 43,202, 88, 58,254,189,169,220, 55,
-187, 76,200,188,150,142,244, 61,159,193,116,253,236,119, 58,157,238,157, 71,122,246,189,165, 98, 95, 0,136,139,139,139,241,171,
- 93, 31, 22, 27, 45, 49, 88,128,163,201,186, 95, 8, 10, 10,234, 23, 25, 25, 57,117,253,250,245, 97, 38,147,201,251,192,129, 3,
-185,219,183,111,191,104,179,217,150,100,100,100,252, 8, 0,132,144,245, 10,133,226, 35, 74, 41, 12, 6,131,130,231,121,157,253,
-191,183, 50,205,230,190,170,214, 47,190,240,220,254,183,231, 46,214, 94, 60,117, 28,243, 86,109,134,134,218,164, 51, 55,172, 3,
- 78, 21, 8,246,127,218,223,123, 7,235,211, 40, 69,168,146, 35,168,165, 87,214,239, 64,136, 54,129, 82,179,171,152, 3, 66,195,
- 56, 49, 56, 2,251,140, 22, 24,124, 84,106, 0, 8,110, 28,205, 31,207, 23,113,224,240, 95,208,106,253, 85,238,156,123,122,122,
-250,164,224,224,224,240,237,219,183,115, 70,163,177,232,196,137, 19,168, 93,187, 54,234,214,173, 11, 31, 31, 31,156, 59,119, 14,
- 59,118,236,192,249,243,231, 65, 41,117,154, 37,112, 70,102,102, 38,242,243,243,107, 68, 83, 20, 69, 2, 0, 49, 49, 49,136,137,
-137, 81,167,165,165,213,221,184,113,163,255,180,105,211,174, 5, 6, 6,110, 51,153,254, 41,143, 42,223,221,227, 12,139,165,184,
-231,220,108, 54,195, 98,177, 64,165, 82, 65,171,213, 66,165, 82, 33, 63, 63, 31,153,153,153, 40, 40, 40, 0, 0,248,249,249,149,
-182,119, 11, 73, 6, 14,118, 60, 82, 97,125,240, 11,149,102,111, 92, 65, 41, 61, 80, 98,178,126, 39,132,216,223,223,204,146,231,
- 74, 51, 91,110,106,150, 46, 91, 44, 22,199, 44,147,178, 58,154,113,113,113,118,141, 50,223, 18, 90,173,246,186, 61,115,165,213,
-106, 43,100,196, 42,195,222, 45,168, 86,171, 17, 19, 19,131,119,222,121, 7,231,254,159,189,243, 14,107,234,236,255,240,231, 57,
-217, 9,132, 61, 19, 16, 81,134, 32, 14,100, 41,136,162,213,186, 71,219, 87,235,104,107,109, 93,125,171,109,181,173,117,212, 45,
-142,106, 85,180,237,107,171,117,212,209,170,191,214,186, 87, 5, 7, 78,192, 45, 42, 42,136, 97, 35, 35, 64, 32, 36, 57,207,239,
- 15, 70,145, 50,194,176, 86,123,238,235,202, 5,156,156,220,231, 9,129,228,115,190,207, 56,241,241, 56,115,230, 12,236,236,236,
-208,167, 79, 31,240,249,124, 36, 39, 39,131, 97, 24,163, 2,150, 80, 40,132, 78,167,195,189,123,247,198,244,236,217,179, 85, 68,
- 68,132, 40, 49, 49, 17,241,241,241, 48, 51, 51,195,194,133, 11,197,211,167, 79,119, 58,114,228,200,184,142, 29, 59,126,103,236,
-243,230,145,178,238,191,129, 67,134,255,229, 62, 11,115, 19,193,214,205, 27, 69, 21,193,139,225, 22,246,225,120,206, 84, 15, 65,
- 21,193,105,201,146, 37, 3,171,111,171, 41, 48, 85,223,190,116,233,210,240, 42, 63, 55,235, 44,246,202,127,151,138,179,191,218,
- 96, 89,214,209,194, 86,105, 53, 97, 84, 31,176, 44,160,103, 1,189,129, 66, 83, 84,136,180,248,147, 69, 90,173,118,183, 49, 7,
-204,206,206, 94,248,238,199, 75,221, 46, 63,226, 35, 53, 71,139,199, 39, 22,208,146,172,248, 55, 6, 13, 26,244,254, 43,175,188,
-210, 44,225,202,210, 70, 17,249,229,242,141,184,244, 64, 11,150,254, 89,201, 50,176,101,223,191, 12, 40,149, 74,119, 75, 75,203,
- 21,123,247,238,109, 41, 18,137,228, 9, 9, 9,134,168,168,168, 20,157, 78,247,109, 69,184, 2, 0,133, 66, 49,186, 93,187,118,
- 58, 19, 19, 19,104, 52,154, 98,157, 78, 87, 80, 91,184,242,145, 74,157, 58,181,111,119,106,234,154, 31, 36,197, 90, 45,242, 52,
- 37,176,117,116, 52, 92,203, 46, 26,122, 77, 93, 82,121, 70,208, 86, 46, 8,246,247, 80, 42, 25,169, 28, 0,160,202,215,166, 24,
- 19,174, 0,192, 68,110,193, 56,249,135,193,255,163,181,208, 48,230, 20, 0, 44,236, 21, 76,143, 15, 22,163,239,234, 40,148,240,
-228, 13,137,192, 26, 15, 15,143,202,113, 87,217,217,217,184,117,235, 22,242,242,242, 16, 17, 17,129,248,248,248,202, 15,221,226,
- 98,163,154,247, 23,154,195,201,178,236, 83,159,158, 74,165, 18,147, 38, 77, 18,104, 52, 26,147,170,225,170, 33, 78,173, 86, 91,
-217, 14, 74, 41,180, 90, 45,242,242,242,160,213,106,113,239,222,189,202,112, 5, 0, 6,131,161,198,174,206,218, 27,156, 87,115,
-185, 75,151,221,232,113,135,229,129, 71, 88,101,220,145, 61, 26, 25,174, 42, 40, 15, 62, 70, 87,127,234, 35, 38, 38, 6,168,161,
- 90,165,209,104,236, 41,165, 36, 38, 38, 6,198,140,191,170,128, 82, 10,145, 72,132,193,131, 7,227,246,237,219, 80,169, 84,224,
-241,120, 40, 41, 41, 65, 73, 73, 9, 58,117,234, 84, 89,193,106, 8,148,210,126,147, 39, 79,150, 60,124,248, 16,217,217,217, 96,
- 24, 6,122,189, 30, 6,131, 1,227,198,141,147,104,181,218,190, 13,241,241,120, 4,189,198, 44,187,216,243,189,213, 81,213,111,
-185,121,133, 58,177, 88,252,231,190, 92,194,226,120,198,212,148, 69, 8, 33,227,171,124,191,191,250,253, 13,161,122,133,171,130,
- 25, 51,102,248, 0, 16,215,240,144, 70, 83,249,223, 82, 71,215, 32,252,252,252,124, 45,108,148, 39,103,132,255, 96,250,235, 85,
- 30,158,164,222, 65,114,236, 94,232, 89, 32,245,206, 89, 80,131,238,255,110,222,188, 89, 88,219,227, 43, 56,114,228,136,135,179,
-167,255, 71, 29,253,130,112,228,122, 9,158, 92,219, 9,109,206,195,239, 6, 12, 24,240, 91,115, 60, 25, 63, 63, 63, 31, 75,107,
-199,200,153, 75,127,176,218,119, 67,128, 71, 15,239, 32, 50, 98, 48,142, 46,127, 5,135,151,189,130, 3, 75,122,226,247,197, 61,
- 1,224, 96, 67,188, 97,132,240, 93, 45, 75,209,219,155, 64, 97, 83, 4, 18, 70,254,182,245,195,106, 67,165, 82,221, 3,176,229,
-135, 31,126, 80,159, 57,115,198, 48,113,226,196,187,121,121,121,139, 82, 82, 82,118, 86,236, 83, 62,240,253,211, 5, 11, 22,120,
- 26, 12, 6,156, 58,117,234, 30,143,199,171,181,127,249,134, 70,243, 56,238,218,205,111,207,108,223,128,184,203,151,240,211,156,
-169,250,232,235,183, 6,221, 84,235,255, 12, 87,166, 34,175, 46, 62,238,251,255, 59,229,191, 12, 17,155, 32, 62,171, 4,169, 5,
-186, 19, 70,183, 91, 93,164, 19,136,165, 48,117,104,137, 36, 13, 43, 84, 42,149, 23, 30,231,106,132, 12,143, 15,134, 47,196,131,
-156,146, 6,125,136,179,236, 95,243, 88,245,208, 2,160,222, 46,178,250,104,138,179,162,130, 85, 29,157, 78,247,151,237,198, 58,
-171, 6,172,170,212, 52, 22,139,101,217,134, 5,172,210,252,154, 95, 3,109,227, 3, 86, 85, 75,249, 13, 77, 9, 87, 64, 89,240,
-169,168, 40,137,197,226,202,174, 54, 99,171, 76,213,241,243,243,107,210,253, 85, 33,132,128,101, 89, 8, 4, 2,184,187,187, 35,
- 47, 47, 15,102,102,102,144,203,229, 48, 53, 53,133, 88, 44,134,189,189, 61, 68, 34, 17, 24,134, 1, 99,100,112,209,233,116,208,
-106,181, 14, 78, 78, 78, 40, 40, 40,128, 68, 34,169,188,137, 68, 34,120,122,122,162,160,160,160, 65,149,198,134,132, 38, 30,151,
-175, 56,158, 49, 53,101,145,170, 43,185, 55, 71, 55, 94, 77,142,242,110, 66,105, 83,221, 85,169, 55, 40, 84,132,171,233,139,191,
- 55,219, 21,203, 32, 55, 53, 30, 73,135,103,170, 13,165, 69, 57, 44,171,115,201,185,127, 6,168, 50, 32,183, 46, 88,150, 13, 8,
-238, 57,132,137,188,173, 69,169, 58, 5,249, 55,126, 78, 20,139,197, 95, 52,241, 57, 84,180,211,199,210,218, 49,242,139, 37, 63,
- 88,253,122,149,143, 39, 41,119,112,255,224,140, 60, 67,105, 81,207,152,152,152, 6,175,163, 53,129, 16,193,122, 74,117, 67,236,
-236,134, 58, 59,219, 47, 31,251,186, 28,221,122, 73, 97, 38, 52,195,130,175,152,219,246, 33,228,211,244,179,116, 31,241, 35, 2,
- 26, 67,159,203,140,194, 27, 55,110, 44,118,119,119,103,244,122,253,216,210,210,210,121, 41, 41, 41,149, 85, 68,133, 66,209,219,
-197,197,101,249,194,133, 11,157, 18, 19, 19, 69,231,207,159,127, 18, 23, 23,199, 26, 12,134,165,117, 57,175,229,149,124,222, 78,
- 46,228,185, 57, 43, 38, 39, 60,126, 60,248,122,190,254,112,197,125,237, 76, 68, 62, 93,125,189,206, 46,156, 63, 67, 94,122,126,
- 15, 10,211, 30, 99,221,249,180,124,214,160,155, 97, 76,123,149, 74,165, 85, 75, 33, 48, 99,220, 24, 86,173, 86, 67, 38, 18,178,
-143,227,239,243,222,238,213,205,176,108,250, 52, 38, 45, 45, 13, 69,133,133, 60,165, 82,105,165, 82,169,158, 24,227,172, 41, 80,
-212, 84, 5,106, 80,192,168,129,166, 56,171, 87,176, 42,168, 41, 96, 25,235,172,218, 37, 86,149,154,126, 31, 6,131,161, 97, 93,
-132,250, 90, 2, 86,105,102,211, 82, 42,240,136, 16,210,162,226,251, 38,186, 0, 0,197,197,197,118, 85,186, 6,235, 60, 81,172,
-143,242, 10, 86,163,239,175, 78, 69, 5, 43, 33, 33, 1,182,182,182,208,235,245, 48, 49, 49,129, 84, 42,133, 84, 42,133, 70,163,
-129, 72, 36, 2,143,199,171, 95, 86, 5,177, 88,156, 22, 31, 31,239, 98,105,105, 9,131,193,240, 84,200,122,248,240, 33,204,205,
-205, 51,140, 29,127, 5, 0, 60, 30,112,124,243,244, 26,103, 17, 90,152,155, 60, 37,226, 53, 83,181,144,131,163,177, 84, 84,159,
-170,142,165,250,226,139, 47, 26,189,118,200, 23, 95,124, 49,179,169, 85,177,218,224, 3,127, 38,198,234,111, 78,126,126,126,190,
- 22,214,138,147,159, 46, 92,111,182,253, 50,131,188,212,219, 72, 57, 62, 59,143, 45, 45,234,201, 48, 76,106,114,244,247,187, 1,
- 20,197,198,198, 70, 25,115, 48,131,193,208,169,141,135, 7,118,221,208,163, 56,237, 42, 24, 66, 55,247,234,213,171,222, 65,215,
-245, 81, 17,174, 62, 15,255,222,106, 87, 28, 31, 57,101, 33, 48,143,109, 68,184, 26, 37, 22,187, 9, 24,102,185, 91,151, 78, 3,
- 70,216,219, 20,244,119,147, 89,244,119, 19,131,119,254, 55,236, 83,100,224,137,205, 31,152,180, 74,233, 22,189, 55,255,247, 22,
-175,240,159, 12,238,214,209, 76,209,157,127, 64, 71, 13,159,103,158,162,127,251,224,247,123,247,238, 45,116,112,112,248, 53, 45,
- 45,173,114,116,170,147,147, 83,191,150, 45, 91,134, 47, 88,176,160,101,114,114,178,252,202,149, 43,249,187,119,239,126,200, 48,
-204,130,212,212,212,122,207,238,175,171, 75,167,249,152,138, 54,220, 40,208,199, 87,108,107,107, 34,236, 48,230,237, 17,231,122,
-141,120, 87,242, 32,114, 11,172, 30,223,196,234,139, 25,134,199,121,197, 35,111, 23,209,180,250,156, 74,165,210, 74, 36, 18,237,
-138,216,179,231, 94,187,118,237, 72, 81, 81, 17,116, 58, 29, 50, 51, 51,241,213,182, 93, 55, 88,150,133,165,165, 37, 78,156, 56,
-193,126,244,209, 71,187,148, 74,229, 48, 99, 66, 22,203,178,149, 31, 86, 21, 84,175, 2, 73,165,210,134, 5,140,242,199, 84, 13,
- 48, 77,113,214, 22,176,170, 87,182, 26,232, 4,128,202,193,237,213,183, 87,192,227,241,192,178,108,141,149,190, 90,209,229,214,
- 18,176, 50,154,116, 34, 65, 41,117,169,103, 34,205,115,163,124, 41, 6, 0, 96,107, 91,138,161,202, 24,173,122,169,232,246, 19,
-137, 68,136,142,142, 70,223,190,125,193,178, 44,196, 98, 49,164, 82, 41, 36, 18, 9, 46, 94,188, 8,161, 80, 8, 30,143,215,160,
-110, 66,129, 64,112,104,221,186,117, 99,150, 46, 93, 42,101, 89, 22, 34,145, 8, 82,169, 20, 98,177, 24, 95,127,253,181, 70, 36,
- 18, 29,110, 80,192, 66,253,179, 8, 43,247,109, 88, 22,228,224,104, 16,181,101,145,114, 50,171, 85,158,180, 85,126,206, 68,217,
-181,149, 7,150,127,143, 26,190,215,214,176, 45,123,201,146, 37, 39,171,140,223,202, 68, 51, 82,107, 5,203,215,215,215,203,202,
-214,233,228,212,133,235,205,182, 92,224, 33, 47,245, 22,178, 78,126,153, 71,245,154,170,161,165,107, 3,143,231,107,103,103,141,
-172,232, 98,232,114,238,129, 16, 18,219,248,166,151, 17, 24, 24,232,110, 97,229, 16,249,233,162,239,173,118,196,240,145,155,242,
-103, 8,108, 76,229,138,207, 48, 95,173, 60,242,243, 96,113,218,109,104,174, 70, 90, 8,158, 60,198,141,140, 82,236,138, 78, 83,
- 71,158,253,225, 12,227, 77, 67,123,142,180, 48,237, 57,210, 10,171, 39, 29,182, 74, 47,190,137, 11,119,247, 15, 9,159,177,159,
-226, 57,173,238, 94, 53, 92, 41, 20,138, 65, 78, 78, 78,243, 15, 28, 56,224,162,215,235,229,167, 78,157, 82,239,222,189,251,190,
- 94,175,143, 72, 77, 77, 61, 96,172,243, 70,129,182, 50, 92,181, 51, 23,118,122,255,189,119,206,124,180,234,127,146,155, 49,151,
-176,124,203, 1,200, 5, 58, 67, 76, 74,241,176, 27, 5,250, 67,198,248,248,124,254,130, 29, 59,118,152,120,123,123,147,236,236,
-236,202, 15,252,210,210, 82,228,231,231, 87,142, 31,106,215,174, 29, 51,119,238, 92,147, 57,115,230, 44, 0,240,223,186,156,148,
-210,140,249,243,231,219,141, 31, 63, 30,102,102,102,200,206,206,134, 78,167,171,172, 54,137,197, 98, 88, 88, 88, 32, 55, 55, 23,
-199,143, 31, 71, 77, 83,246,171, 34, 20, 10, 83,149, 74,133,179, 84,102,162,149,201,100,212,212,212,180,201, 78, 0, 32,132,164,
-245,239,223,223, 97,254,252,249,162,170,221, 76,165,165,165,164,177, 78, 74,105,209,171,175,190, 42,139,136,136,128,139,139, 11,
-180, 90, 45, 88,150,173,172, 96, 85, 44, 13,240,232,209, 35, 44, 94,188, 24,148, 82,227, 79,100,116, 57, 58, 56,189, 99,139,210,
-108, 29, 74,179,117,208,102,233, 80,154,161,131,190,232, 31, 55, 69,164, 49, 3,208,107,162, 90, 37,172,198, 46,182,134, 84,176,
-202,171,105, 16, 10,133, 72, 78, 78,198,137, 19, 39, 16, 24, 24, 8,185, 92,142,194,194, 66,156, 59,119, 14,105,105,105,141,170,
- 96,245,236,217,115,243,209,163, 71, 67, 63,252,240, 67,215,137, 19, 39, 74,189,188,188,144,152,152,136, 85,171, 86, 21,223,186,
-117, 75, 53,101,202,148, 31, 26,226, 99,202,151,174, 49,106, 22, 97, 13,203,220,112,112,252, 77, 52,219,242, 9,127, 23,181, 6,
- 44,134, 97, 62, 9,122, 99,150,217,230,243,124,228,168,110, 32,239,244,220,234,225,170, 94,170, 95,109, 91, 32,145,183,211, 83,
- 33,128, 98,232,115,239, 67, 36, 18, 53, 56, 0, 85,119,178, 44, 59,173,243, 27,179,172,182, 94,226, 35, 47,229, 22, 50, 35,231,
- 52, 56, 92, 85, 56, 39, 16, 34,112, 15,246, 31, 32, 78,191,131,226,200,157, 32, 0, 54,196, 21,226,220, 99,237,215,165, 90,237,
-162,155,121, 37,185, 78, 93,136,229,206,240,140, 57,253, 94,107,255,145,231,155,199,113, 33,243, 59, 64, 6, 88,218,242,251, 85,
-237, 46,124, 30, 87, 47, 87, 42,149,238,114,185,252,171, 67,135, 14,217,138, 68, 34,179,155, 55,111, 26,246,236,217,147,108, 48,
- 24, 86,166,166,166,238,172,233, 49,245, 57,125,164, 82,167,182,109, 92,163,166,172,252, 86,162, 46, 40, 68,161,182, 20,138, 22,
- 74, 67, 84,204,237, 55,110, 20,104,247, 26,227,180,183,183,239, 49,106,212,168, 14,126,126,126, 76,109,225, 42, 63, 63, 31, 5,
- 5, 5,120,252,248, 49, 66, 67, 67, 25, 47, 47,175,118,246,246,246, 61,210,211,211, 79,214,214,206,212,212,212,121, 59,119,238,
- 12,249,229,151, 95, 6,142, 27, 55, 78,254,250,235,175, 67, 42,149,162,176,176, 16,206,206,206, 96, 89, 22,167, 79,159,198,221,
-187,119,213, 0,246,167,166,166,158,173,171,157, 15, 30,220,111, 65, 8, 97,156,156,156, 66,250,246,237,219, 44, 78, 0,200,204,
-204,116,139,138,138,154, 62,100,200,144,143,251,244,233, 35,159, 57,115,166,208,213,213, 21, 6,131,129, 52,214,153,147,147, 99,
- 30, 27, 27,187,162,107,215,174,255,237,219,183, 47, 63, 60, 60, 28,230,230,230, 48, 24, 12,144, 74,165,200,207,207,199,130, 5,
- 11,112,230,204, 25, 61,165,244,155,188,188,188, 79,235,114, 62,181, 14,214,148,175, 59,214,244,186, 86,217,183,198,117,176,158,
-199,223,188, 70,163,177,111,104, 85,204,152,118,198,198,198,210,234,235, 97,213, 85,193,170,238,172, 24, 15, 38, 18,137,192,231,
-243,145,153,153,137,163, 71,143, 62,181,254,149, 72, 36,170, 92,198,161,166, 10, 86,109,237,148,203,229,236,127,254,243,159,177,
-135, 14, 29, 26, 51,109,218,180, 33,106,181,218,206,204,204, 44,211,196,196,100,255,148, 41, 83,126,180,176,176,168,117,137,134,
-154,156, 60,134,212, 58,139,176, 42, 44, 79, 84, 92,211,112,173,231,241,186,115,206,151,211,249,178, 81,215, 24, 44,201,217,152,
-187, 96,196, 25, 80, 95,248,170,193,225,170, 38,244, 37,133, 9, 11,127,126,224,107,208,106,160,207, 79,186,211,119, 64,255, 70,
-159,113, 86, 64, 41, 53, 57, 19,155, 0,190, 36, 27,185,231,151,229, 18, 67, 73,207,152,152,152, 6,173,127, 83,193,122, 74,117,
-163, 77, 76, 34,239,159, 57,241,138, 2, 64,210, 19, 45,174,196, 63, 57,250,107, 81,209,180,138,125, 30,159,163, 57, 0, 62,118,
-236,198,180,177,242,200,235,109,174, 0, 50, 30,233,144,147,169, 63,244,188,198, 98, 85,160, 82,169,238,249,248,248,108,217,184,
-113,227,164, 78,157, 58,153, 78,158, 60,185, 98,224,251, 47,141,117,222,208,104, 30,251,200, 69,223, 69,110, 88,245,153,196, 43,
- 16,123,194,103, 24, 78,197,196, 15,189,174,214, 26,221,103, 45, 22,139,195, 38, 77,154, 36, 44, 42, 42,170, 53, 92,229,231,231,
- 67,173, 86, 35, 63, 63, 31, 87,174, 92,193,235,175,191, 46,190,125,251,118, 24,128,147,181,121, 41,165, 44,128,211,110,110,110,
- 23,191,251,238,187, 94, 91,183,110,237,253,222,123,239,137,194,194,194,112,243,230, 77, 92,188,120, 81, 91, 90, 90,122, 76, 34,
-145, 28, 79, 72, 72, 48,106,112,211, 51,114,234, 1, 44,182,177,177,137,216,189,123,247,162, 63,254,248,227,173, 49, 99,198,152,
-232,245,122,210, 68,231,199,182,182,182,179, 15, 30, 60,184,249,232,209,163, 67,223,122,235, 45,102,202,148, 41, 88,187,118, 45,
-246,236,217,195, 26, 12,134,189, 2,129,224,157,204,204,204,122, 39,160, 60,181, 14, 86, 29,235, 92,213,119,191, 17, 60,139,179,
-208, 38, 59,171, 87,194, 58,117,234,100, 95,117,150,102,213,175, 13,161, 67,135, 14, 79,173,115, 85, 49,160,189,226,198,227,241,
-192,231,243, 27,212, 69,232,227,227, 3,129, 64,192,250,250,250,254, 8,224, 71,224,233, 75,230, 8, 4,130,202, 69, 77,141,161,
- 68,207, 98,195,198, 45, 23,245, 44,133,129,165,160, 44,160,163, 0,107, 96, 97, 96, 41, 12, 44, 91, 54, 11,155, 2,154,226, 70,
- 47, 75,200,193,241,175,163,174,128, 53,179, 32,102,141, 14,128, 53, 33,100, 70, 76, 76, 76,157,215,180, 50, 6, 30,143,153,145,
-177,239,221, 8, 10,228,240, 8,140, 26, 24, 93, 31, 6,131, 97, 86, 97,108, 4, 75, 41,181, 32,132,124,113,249,242,229, 38,181,
-147,234,245, 31,124,245,195,233,175,109,205, 69,189,179,114, 75, 14,130,144, 26, 87,109,215,131,126,248,211,178, 71,203, 44,109,
-249,253,114, 50,245,135, 88, 6,245,174,238,254,119,112,227,198,141,112,119,119,119,222,255,254,247,191,177, 90,173,246,169,129,
-239,141,118,170,181,159,183,147, 11,121,109, 92,157, 38,199, 39, 62, 26,114, 93,109, 92,183, 96, 21, 68, 74,165,242, 70, 81, 81,
- 17, 8, 33, 40, 41, 41,121, 42, 80, 85, 13, 88,165,165,165,200,200,200,128,171,171, 43,170,172,153, 84, 39,229,161,228,128,141,
-141,205,169, 53,107,214, 12, 88,187,118,109, 48,203,178,209,165,165,165, 7,178,178,178, 10, 26,254,140,159,141,179,252,113, 31,
-201,100,178,165,107,215,174, 93, 33,145, 72,252, 51, 50, 50,162,154,226, 44, 15, 79,111, 88, 91, 91, 43,182,108,217,178,107,227,
-198,141,157,249,124,254,121, 66,200,176,220,220,220,198, 92,236,249, 78, 19,239,175,143, 61, 77,124,252, 51,113, 54,100,249, 5,
- 99,208,235,245, 5, 51,102,204,200,168,126,205,193,170,107, 94, 85,253,170,213,106,235, 93,159, 67,175,215,179, 95,126,249,101,
-157, 39,113, 85,131, 86,113,113,113,189, 93,186,148,165, 89,253,135,127, 80,223,110,127,121, 76,131, 30,192,193,241, 47,165,214,
-128, 21, 19, 19,147, 12,224,221,230, 60, 88,223,190,125, 79, 0,240,106, 78,231,149, 43, 87,146, 0,188,213, 92,190,237, 37, 37,
- 9, 0, 6, 78, 32, 68,240, 19,173,189, 34, 85, 62,160,253,181,231, 57,139,176, 54,106, 26,248,222, 84,106, 26,248,110, 44,122,
-189,254,136, 88, 44, 38,249,249,249, 40, 45, 45,133, 90,173,174, 12, 87, 85, 67,150, 94,175, 7, 33, 4,106,181, 26,166,166,166,
-208,233,116, 13, 42, 25,148,135,148,157, 97, 97, 97,187, 35, 35, 35, 27,124,225,241,191,203, 89, 84, 84,148, 6, 96, 84, 88, 88,
- 24,191,185,156,217,217,217, 41, 0,130,221,220,220, 68,198, 86,193,106,162,190, 11, 57, 27,123,161,231, 58,248, 95, 19, 31, 95,
- 19,219,234,223,229,239, 37, 49, 49,209,187,185,157,143, 30, 61,106,182,255,231, 10, 18,207,111,157,218,220, 78, 14, 14,142, 50,
-254,182,245,156,230,206,157,251,143, 27, 32, 91, 23,235,235, 8, 87, 85,249,167,133,171, 10,154, 51, 92, 85, 80,117,224,123, 67,
- 80,169, 84, 39, 1,192,206,174,108,236,176,179,179,179,177,143,107,204,225,208, 92,161,229, 69,116, 54, 37, 92,253, 29, 80, 74,
- 27, 85,169,171,199, 89,239, 44, 86, 14, 14, 14,142,191, 27,110,217, 56, 14, 14, 14, 14, 14, 14, 14,142,102,134, 0,104, 87,211,
- 29, 13,153, 29, 64, 8,169,209, 81, 23,245,249, 57, 39,231,228,156,156,147,115,114, 78,206,249,242, 57,235,115, 87,155,145, 59,
-190,234, 74,238, 47, 18,164, 49, 51, 99,140,150,191, 32, 83, 67, 57, 39,231,228,156,156,147,115,114, 78,206,249,124,157,181, 28,
-231,133, 13, 88, 92, 23, 33, 7, 7, 7, 7, 7, 7, 7, 71, 51,243,220, 47, 90,204,241, 98,224,228,228,180, 36, 40, 40,232,131,
- 75,151, 46,173,124,244,232,209,130, 70, 58, 20,214,214,214,139, 1, 4, 83, 74,197, 60, 30,239, 86, 86, 86, 86,120,114,114,242,
-233,198,182, 75,161, 80, 56,219,218,218, 46, 6,208,153,101, 89,161, 64, 32,184,145,158,158,190, 72,165, 82,157,111,172,211,214,
-214,214,196,209,209,209,159, 82,106, 71, 41,101, 4, 2, 65,142, 74,165,186,146,145,145,209,228,117,219, 56, 56, 56, 56, 56,254,
- 29,212, 25,176,230, 79, 38,142, 40, 5,127,238,122,154, 12, 0,132, 16, 51, 0,254, 40, 91,106,225, 54,128,203,148,210,252,166,
- 52,224, 69,113,254,211, 33,132, 48, 22, 22, 22,175,202,100,178,143, 10, 10, 10,124,205,204,204,110,148, 95, 30,103,127,249,226,
-153,141,198,206,206,206,110,248,240,225, 95,172, 89,179, 6, 99,199,142,157,109, 99, 99,179,170,161,235, 54,121,123,123, 15, 86,
- 42,149,235, 23, 46, 92,100, 27, 24, 24, 72, 36, 18, 9, 18, 18, 18,148,179,102,205,236,212,169, 83,167, 93,177,177,177,117, 94,
- 22,167, 38,124,124,124,134,185,184,184, 68,132,135,135,219,250,251,251, 19, 62,159,143,107,215,174, 57,205,159, 63, 63,208,215,
-215,119, 75, 92, 92,220,180,250, 45, 79,211,174, 93, 59, 87, 55, 55,183,224, 69,139, 22, 73, 2, 3, 3, 33, 22,139,113,235,214,
- 45,147,153, 51,103,218,118,234,212,233, 94,108,108,236,133,134,248,252, 38,196, 10,132,178, 82, 62, 0,148, 22, 9,245, 49,235,
- 59,233,140,221,214,208,182,115,112,112,112,112,252,115,168, 53, 96, 45,152, 68, 22, 48,192, 76, 48, 32, 31,143, 36,191,172,253,
-133,185,216,171, 87,175, 54,239,189,247, 30, 41,191,116,132,247,206,157, 59,223,224,241,120,241, 44,203, 94, 0,112,133, 82, 90,
- 90,155,175, 42,229, 11, 72,118,100, 24, 38,232,159,236,124, 17,144,203,229,238,182,182,182,211,172,173,173,251,249,251,251,231,
- 79,156, 56, 49,241,252,249,243, 15, 2, 2, 2,138, 55,110,220, 24,174,211,233,190,245,240,240, 56,166, 86,171, 87, 52,118,233,
- 6,129, 64,224, 69, 8,129, 74,165,130, 64, 32, 16,136, 68, 34,111, 0, 70, 7, 13,103,103,103, 71,133, 66,241,191, 95,126,140,
-136, 96, 97, 0, 0, 32, 0, 73, 68, 65, 84, 59, 98,151, 95,194,224, 94, 38, 11,160, 8, 6,198, 6, 11,151,175,181, 94,177,120,
-246, 72, 15, 15,143, 51,119,239,222,253,217, 88,167, 66,161,112,118,113,113,137,248,227,143, 63,236,196, 98, 49, 88,150,133, 90,
-173,134,157,157, 29,150, 44, 89, 98,181,112,225,194,247, 92, 93, 93, 79, 61,124,248,112,159,177, 78, 91, 91, 91, 19, 55, 55,183,
-224,147, 39, 79, 74, 68, 34, 17,209,233,116,164,164,164, 4, 14, 14, 14,244,235,175,191, 22,207,154, 53,203,211,213,213, 53,237,
-225,195,135,143,140,241,249,125, 31, 43,200,207, 58,217,133, 38,107,102, 3, 0,145, 72, 23,133,205,183,186,152,159,117, 50,176,
-190,109,126,223,227, 92,204,120, 46,100,113,252,189, 40, 20,138, 16, 87, 87,215,223, 30, 61,122, 20,205,227,241,222, 76, 76, 76,
-108,216, 85,210,107,128, 16,226, 4,192, 21,128, 37,202, 38, 86, 61, 1,144, 72,105,217,137,123, 99,176,113,235, 49, 8, 98,217,
-187,160,180, 35, 3, 0, 12,115,133, 45, 45,220,148,117,231,164,209,255,239, 53, 58, 37, 38, 99,193,178, 29, 25, 80, 22, 12,239,
- 42,213, 23,254,144,121,251,100, 67, 23, 86,230,224, 0, 80, 75,192,154,255, 62,177,100, 4,152, 62, 99,226,120,134,207,227,145,
-240,245,223,143,184, 20,189,143, 58,182,232, 88,121,201,141,208,208, 80,132,134,134,146,229,203,151,123,253,241,199, 31, 94,219,
-183,111,215, 17, 66, 98, 40,165,155,107, 59,216,146, 41,178, 71,122,157,198,121,193, 7,210,226,150,157,191,221, 30, 28, 28,202,
-138,197, 98, 52,197, 9, 0,255, 29, 38, 56, 54,118,152, 43, 9, 27, 56, 39,169,185,156, 47, 2,114,185, 60, 74, 46,151,187, 77,
-152, 48,225,222,164, 73,147, 78,153,152,152, 80, 0,200,200,200, 48, 25, 48, 96, 64,206,208,161, 67,179,139,138,138,240,221,119,
-223, 57, 71, 68, 68, 28, 51, 51, 51, 83,229,231,231, 7, 26,235, 39,132,240, 29, 29, 29,151,246,238,221,123,234,168, 81,163, 32,
-151,203, 49,102,204, 24,148,148,148, 68, 43, 20,138,229,169,169,169,179, 41,165,245, 94, 59,195,210,210,114,238,252,249,243,237,
- 10,180, 60,204,222,154,128, 39, 5,101,185, 65, 38, 98,240,223, 87,196,120,251,237,119,204,227,226,226,150, 3, 48, 58, 96,217,
-218,218, 46, 14, 15, 15,183,173,120,173, 11, 10, 10, 80, 80, 80, 0,181, 90,141,130,130, 2,140, 26, 53,202,236,222,189,123,171,
- 1, 24,253,134,235,232,232,232,191,104,209, 34,137, 72, 36,194,190,125,251, 58, 20, 23, 23,243,117, 58, 29, 40,165,250, 54,109,
-218, 92,121,231,157,119,132,119,239,222,237, 2,192,168,128,229,152, 6, 65,158, 70,243,205,186,101,159,217, 2,192,135,211,191,
-250, 6,208, 4, 81, 35,182, 57,166, 33, 0, 0, 23,176,234,128, 16,194, 3,240,154, 64, 32,120,221,205,205,205,255,222,189,123,
-113,122,189,254,255, 0,252, 31, 53,114, 29,187, 58,220,175, 40, 20,138,197, 41, 41, 41,235, 40,165, 63, 53, 79,139,255,249,180,
-110,221,250,215,237,219,183, 91, 31, 60,120,112,240,194,133, 11,135, 3,216,210, 88, 23, 33, 68, 0,160, 11,202, 66,213,109,148,
- 5, 43,160, 44,104,181, 33,132,180, 6,112,182, 33, 39,188, 54,158, 33,166,224,155,237,236,210,179,111,215, 97,111, 12,149,219,
- 90,153,163,176,196,128,187,137,105, 45,142, 30,252,181,187, 67,187, 1,209,250,210,188, 17, 89,119,206, 26, 93, 97,175,112,246,
-232, 55,184,107,207, 87,122,201,205,205, 45,144,173,214,225,126,226, 99,151,168, 99,123, 67,237,219, 13, 56, 5,162,123, 43,253,
-218, 81,227, 47,152,206,193, 1, 35, 7,185, 19, 66, 96, 98,106, 82,227,125,230,230,230, 8, 11, 11, 67,120,120,184, 0, 64,231,
-170,247, 85,159, 97, 96, 48,104, 29,103,255,119, 50, 68,124, 42, 30,208,175, 15, 49, 51, 51,107,178, 19, 0,236,173,244,189,130,
- 60, 53,221,211,175, 76, 25,125, 37,106,113, 59,109,113,238, 95,174,116, 42,147,201,224,238,238,142, 89,179,102, 25,229,108, 42,
-127,135,147, 82,170,240,246,246, 86,175, 90,181,202,115,206,156, 57,150,197,197,197, 38, 0,156,188,125, 67, 20, 12,195, 56,107,
-181, 90,249,188,121,243,108,150, 45, 91,230,105,107,107,155, 75, 41,181,109, 72, 59, 29, 29, 29, 87,133,135,135, 79,219,180,105,
- 19, 9, 8, 8,128, 92, 46, 71,151, 46, 93,176,117,235, 86,102,238,220,185, 95, 56, 58, 58, 46, 53,166,157, 0, 66, 3, 3, 3,
- 9, 11, 32,167, 64,143,147, 75,252,112,246,171, 0, 20,105, 89,228,169, 11,160,209,104, 32,145, 72,164, 54, 54, 54,166,198, 62,
-119, 0,157,253,253,253, 9,128,202, 80,165, 86,151,221, 10, 10, 10,161,213,150,130, 97, 24,179,150, 45, 91,138,107,208,213,232,
-164,148,218, 5, 6,150,229,207,226,226, 98,254,224,193,131, 49,112,224, 64,168,213,106,126,126,126, 62,180, 90, 45, 24,134, 17,
-150,127,176,215,235,212,202, 4,132,165,172,189,137, 76,106, 99, 34,147,218,176,148,181, 7, 0, 99,182,105,101, 2, 82,147,179,
-185, 48, 98,106,182, 45,143,199,251,209,205,205,237, 22,143,199,219, 66, 8,113,104,138,147, 16, 18, 64, 8, 9,151,201,100,199,
-189,189,189,147, 77, 76, 76,254, 32,132, 44, 37,132,116,105,140,147, 16, 34,146,201,100,127,132,135,135,239,138,139,139, 27,126,
-226,196, 9,215,107,215,174,189,177,124,249,242,157,166,166,166,167, 8, 33,210,198,180,179, 2, 87, 87,215,141, 23, 46, 92, 8,
- 8, 14, 14,222, 64, 8,169,245,111,168, 33, 78, 66, 8,143, 16,226, 75,140,188,240,224,223,253,186, 59, 57, 57,185,249,250,250,
-218,240,120, 60,132,134,134,130, 82, 26,218, 68,103, 48,128, 52, 74,105, 20,165, 52,147, 82,106, 40,191,101, 81, 74, 79,163,236,
- 68,165,198, 99,212,234,228,155,237,252,232,147,207,251,126, 58,249,125,121,108,146, 1, 63, 28, 77,197, 47,103, 50,161, 82,139,
-209,123,200, 88,243,238,253, 71,245,225, 11,205,107,188,176,125, 93,206, 47,190,152,217,247,253, 49,163,229,215, 83, 24,236, 58,
-155,133, 51,183,243, 81, 68, 44, 17, 54,100,188,165,119, 96,191, 1, 4,194,205, 13,124,238,141,230,223,236,124,217,168,177,130,
- 53,119, 3,205, 89, 48,137, 44, 11,255,238,251,217, 12, 33,212,201,163,207, 77, 87,247,206,133, 44,203, 66,163,209,160,180,180,
- 20, 2,129, 0, 26,141, 6, 73, 73, 73,184,112,225, 2,204,205,205, 27,116,224,220,188, 60, 40,157, 92, 33,147,201,154,197, 57,
-238, 63, 67,249,143, 82, 83,249,209,177, 39,253,126, 94,179,221,207,185,117,239,219, 29,195, 62,191,110,106,222, 66,115,229,202,
- 21,156, 59,119, 14, 57, 57, 57,168,248, 0,125, 25, 32,132,232, 86,172, 88, 17,155,146,146,130,211,167, 79,251,206, 95,189,173,
-229,245,252,214,252,204, 2, 42,176, 53, 77,119,241,146,222, 49,228, 60,121,242, 96,218,180,105,127, 56, 58, 58,106, 39, 79,158,
-220,221, 24,175,147,147,147,132, 16,226,215,191,127,255,255,190,243,206, 59, 72, 76, 76,196,167,159,126,170,189,114,229, 74,174,
-159,159,159,229,138, 21, 43,132,227,199,143, 71,116,116,244, 52, 39, 39,167,221, 0,110, 60,126,252,184,174,107,169,137, 36, 18,
- 9,144, 87,118,162, 90,170,167, 0,202,134,133, 21, 20, 20,128,161,185, 16, 10,133, 12,195, 48,182, 0,140, 58,243,100, 89, 86,
- 40, 18,137, 80, 88, 88,136,130,130, 2,168, 50, 11,144,148, 94, 8,117, 97, 9, 52, 26, 29, 74,138, 41,196,114,123, 70,151,153,
-105, 13,192,168, 37,225, 41,165, 76, 69,119,163, 86,171,133, 70,163,129, 86,171,133, 86,171,173,188,156, 15,143,199,147, 43,149,
- 74, 51, 0, 57,245,249,120, 34,169,158,199, 8,195,103, 46,250,102, 30, 0,240, 24, 97,184, 41,138, 89, 99,182,241, 68,210,102,
- 95,229,221, 88, 8, 33, 98, 91, 91,219,147,187,118,237,242,118,119,119,199,195,135, 15,189,134, 13, 27, 22, 68, 8,241,165,148,
- 54,232, 44,158, 16, 34, 99, 24,102,217,187,239,190,251,193,200,145, 35,137,135,135, 7,248,124, 62,244,122,189, 83, 66, 66, 66,
-143, 95,126,249,101, 58,159,207,255,193, 96, 48, 76, 51,118,149,119, 66, 8, 35, 18,137,126, 94,191,126,125,183,160,160, 32,108,
-217,178, 5, 23, 47, 94,100, 3, 2, 2,152,183,223,126, 27, 46, 46, 46,157,223,126,251,237, 61,132,144,129,198, 84, 88,107,240,
-187,140, 30, 61,218,153,199,227, 33, 56, 56, 88, 24, 29, 29,221, 9, 64,116, 67, 61,213,156,166, 78, 78, 78, 81, 97, 97, 97,190,
-199,143, 31,143, 37,132,132, 53,100, 85,123,133, 66, 49,196,222,222,126,185, 92, 46,183, 52,246, 49, 5, 5, 5, 69,233,233,233,
-159,170, 84, 42,163,174, 71, 74, 41, 13,110,223,190, 61,244,122, 61,204,205,205,225,224,224,208, 85,169, 84, 78, 51, 55, 55,127,
- 45, 63, 63,127,234,227,199,143, 47, 26,123,108, 66,136, 18, 0, 67, 41,189, 87,254,115, 75, 0, 21,151, 89,186, 67, 41,125, 72,
- 41,125, 64, 8, 81, 16, 66,156,141,233, 46,180,113,235, 49, 40,184, 87,255,174,161, 65,237,152, 37,187, 19, 97, 96, 89,240, 97,
- 0,159,199, 34,203, 32, 0, 33, 4, 46,158, 1, 60,251,235,151, 59,219,120,246, 30,148,117,231, 88,189,213,107, 27,183, 30,131,
-250, 14, 30, 26,218,198,211,131, 89,249,219, 35,228,170,174, 27,210,111,255,145, 69, 24, 6,173, 58,246,182,113,241,244,229,185,
-249,190, 34, 72, 79,188,222,195,202,189,123,175, 39,247,162,142, 27,251, 59,224,224,168, 12, 88,132, 16, 74, 41,173, 60,179,154,
-243, 29,157, 99, 99, 73, 90,222,188,126,149, 73, 78,211, 22, 94,189,122, 21,214,214,214,176,179,179,131,153,153, 25,226,227,227,
-113,252,248,113,220,185,115, 7,148, 82,248,250,250, 54,232,192,233,105,105,200,126,162,110, 86,103, 11, 71, 71,180,112,116,228,
-103,229,228,226,220,213,107,222,251,126,232,213, 38,157,153,176, 73,163,209, 84,238,163,211,189,124,189, 46,118,118,118,134, 15,
- 63,156,156, 61,238,155, 7,173, 71,244, 84,242,134,116,113,192,111,209,169,188,157,145, 60, 58,251,189, 14, 89, 9, 9,119,141,
-126,210, 46, 46, 46,139,123,244,232,241, 25,159,207, 23,140, 31, 63, 30, 0, 48,101,202,148,146,107,215,174,181, 77, 78, 78,126,
-224,232,232,216,102,234,212,169,215,246,236,217, 35,120,255,253,247, 73,113,113,241, 69,129, 64, 64, 21, 10,197,130,148,148,148,
-121, 53, 57,121, 60, 94,220,205,155, 55, 91,234, 37, 10,216,200, 25,244,153, 29, 11, 0, 48, 21, 83,100,165,171,112, 35,225, 18,
-108,109,109,205,109,108,108,110,135,132,132,148,164,167,167,127,116,255,254,253,205,117,181, 83, 32, 16,220,184,118,237,154,147,
-189,189, 61, 10, 10, 10,144,156, 81,136, 31,207, 17, 20,149, 72, 1, 72,193,131, 28,114, 27,103,121, 43, 90,116,165, 93,187,118,
-165, 90,173,246,139,187,119,239,214,217,213, 35, 16, 8,114,110,221,186,101,162, 84, 42,193,227,241, 74,127,249,229, 23,161, 86,
-171, 5,165, 84,127,240,224,193, 55,115,115,115,131, 91,183,110,205,184,184,184,172, 8, 9, 9,209,164,166,166,142,123,248,240,
- 97,173, 23, 26, 62, 60,197,173,180,251,188,200,111,115, 31, 38,255, 2, 0,202, 32,239, 39,251,231,117,210,118,159, 87, 80,239,
-182,195, 83,220, 74, 49,249,217,173, 81, 87, 15,239,206,156, 57,211,219,202,202, 10, 19, 39, 78,196,252,249,243, 49,103,206, 28,
-247,137, 19, 39,142, 7,176,202, 88, 9, 33, 68,234,224,224,112,105,205,154, 53, 94, 33, 33, 33, 56,120,240, 32,118,236,216,129,
- 7, 15, 30,232, 93, 93, 93,249, 65, 65, 65,152, 59,119, 46,250,244,233, 51,110,242,228,201,221, 9, 33,157,140, 12, 29, 99,231,
-206,157, 59,164,107,215,174, 24, 51,102, 76, 73,100,100,228,112, 0, 71,143, 29, 59,214, 51, 42, 42,106,247,182,109,219,164,225,
-225,225,125,167, 78,157, 58, 9,192,186, 70, 60,255,161,221,186,117, 3, 0,116,237,218, 21,203,151, 47,239,131, 38, 4, 44, 66,
-136,200,218,218,250,192,150, 45, 91,124, 61, 61, 61,241,214, 91,111,117, 26, 62,124,248, 1, 66, 72,111, 74,169, 81,151, 54,114,
-116,116, 92,182,126,253,122, 55,169,180,214,194,220, 95,208,106,181, 86, 19, 38, 76, 88, 10,192,232,128,213,174, 93, 59, 68, 70,
- 70,162, 87,175, 94,240,241,241,113,155, 48, 97,194,138, 62,125,250,224,147, 79, 62, 57,227,224,224,160, 72, 75, 75, 51,246, 66,
-207, 46, 0,226, 1,128, 16,210, 2,128, 59,128,179,229,247, 5, 17, 66, 64, 41,125,136,178,139,135,183, 1, 80,255,120, 44,137,
-201,187,131, 7, 14,148,255, 95,116, 6, 12, 44, 11, 47,165, 4,222, 45,204,144,152, 81,140, 68, 85, 54, 4,164, 20,114,169, 24,
-237,131, 7, 88, 62, 73, 79,124, 23,198, 12, 15, 16,203,222, 29, 58,120,160,233,175,231, 50,144,171,186, 65,147, 46,253,242,135,
-174,184,112, 28, 0,220, 60,245,211,255,236, 45, 37,189, 61, 58,250,241,138, 66,135, 88, 70,253,246,221,187, 0,184,128,245,140,
-169,158, 69, 94,100,234,156, 69,152,157, 11,141,181,131, 55,146,211,226,202,126,206,206, 70,118,118, 54, 90,181,106,133,136,136,
-136,167,246, 45, 46,174,247, 98,240, 53, 31,227, 25, 56,109, 44, 45, 48,184, 71,119,222,245,248,239,120, 26, 86,243,212,125,141,
-117,254, 83,161,148, 82, 66, 8, 73,202,210, 89,100,229,235,132,111,246,112,166, 2, 30,131, 17, 61, 90,144,117,251,146,132, 89,
- 26,153, 5,143,199, 99,140, 57,147,247,243,243, 19,244,232,209,227,179,141, 27, 55, 10, 82, 83, 83, 97, 97, 97, 1,157, 78,135,
-184,184,184,148,148,148,148, 7, 0,144,154,154, 26,239,228,228,148,110, 48, 24,156,188,188,188, 48, 97,194, 4,180,105,211,134,
- 76,155, 54,109, 58, 33,100, 65, 77, 51, 22,211,211,211,195,103,205,154,213,109,241,242, 8,235,209, 65, 4,133, 69, 90, 20, 20,
- 20, 32,241,238, 13,208, 2, 45, 86,174,252, 26, 82,169,148, 0, 16,102,102,102, 10,231,205,155,187,193,223,223,127,224,229,203,
-151, 95,175,173,173,233,233,233,139,230,206,157, 27,184,114,229, 74,171,130,130, 2,104,138,139,161,214,136,112,225,235,178, 10,
-101,208,212,139, 88,247,213, 10,166,157,139,137,117, 65, 65, 1, 62,251,236,179, 53,190,190,190,157,227,226,226, 62,168,205,169,
- 82,169,174,204,156, 57,211,118,237,218,181,226, 54,109,218, 92,203,207,207, 71, 78, 78, 14,179,103,207,158,133, 46, 46, 46, 86,
-107,214, 68, 16,153, 76, 6, 0, 72, 78, 78, 22,206,158, 61,235,231,246,237,219,111,187,118,237,218,152,218, 94, 27, 0, 37,132,
- 32, 85,161,104,229, 86,116,142,153,167, 80, 20,159,137,156,171,218, 74, 8, 82,203,246, 1,117, 92,239, 56,250,209, 22,113,215,
-146, 18,118,117, 90, 90,210, 29, 74, 65, 49,247,185,133, 43,216,216,216, 76, 30, 50,100, 8,150, 46, 93,138,125,251,246, 77,181,
-178,178,250,122,254,252,249, 80, 40, 20, 31, 18, 66, 86, 83,227, 87, 39,254,106,213,170, 85, 94, 94, 94, 94,120,231,157,119,180,
-199,143, 31,159, 9,224, 55, 0, 73,167, 79,159,110,177,121,243,230, 65, 63,255,252,243,210, 53,107,214, 72,214,174, 93,235,246,
-198, 27,111,172, 6,240, 94,125, 82,123,123,251, 79, 70,142, 28,137, 21, 43, 86, 32, 50, 50,242, 13, 74,233,193,242,187, 14, 17,
- 66, 6,133,135,135,159,152, 61,123, 54, 86,173, 90,245, 49, 26, 24,176, 8, 33,166,222,222,222, 95,246,237,219, 23,167, 79,159,
- 70,104,104, 40,186,116,233, 50,149, 16, 18, 65, 41, 53, 54, 92, 84,245, 49,166,166,166, 63,111,218,180, 41,180,101,203,150, 88,
-180,104, 17, 62,251,236, 51,108,220,184, 49,244,173,183,222,250,153, 16,242,186, 49,179,124, 77, 77, 77, 77,165, 82, 41,150, 46,
- 93, 74, 31, 61,122, 84,111,245,212,209,209,209,242,203, 47,191, 36,230, 70,116, 3, 16, 66,120, 10,133,194,220,193,193,161,155,
-131,131, 3,214,172, 89, 3, 59, 59, 59, 76,157, 58, 21,214,214,214, 40, 44, 44,196,235,175,191, 46, 56,127,254,252, 8, 0, 17,
-245,249,202,177, 6, 80, 81,241,242, 70,217, 88, 43,117,249,241,206, 3,232, 10,224, 33,202,198,101, 89, 25, 35,100, 40,109,103,
-105, 97,134,148,107,233,224, 67, 15,175, 22,114, 92, 78, 40, 68,169,129, 66,102, 98,138, 66,117, 46, 58,186,217, 34,191,200, 9,
- 0,107,212,234,227, 66, 30,227, 39, 18, 75,145,145,159,135,180, 91, 39,178, 75, 13, 37, 19,114, 31,156, 73, 6, 0,171,214,221,
- 38,220,184,112,248,242,235,253, 66,237, 50,115, 90,128, 82,246,229,233,254,224,248, 91,168,119, 12, 22,203,254,245,127,191,106,
- 69,168,130,210,210,166, 77,204,123, 22,206,154,120, 22,206,127, 0, 84,105,201,207, 51,145, 48,250, 99,151, 51, 12, 58,189, 1,
- 71, 46,167, 25,100, 98,162,183, 20,107,243, 89,150, 53,234, 3, 49, 38, 38, 70,119,250,244,233, 45, 51,102,204,192,170, 85,171,
-112,255,254,125, 8, 4, 2,120,122,122,218, 59, 59, 59, 59, 2,101,179,247,124,124,124,108,120, 60, 30, 18, 18, 18,176, 99,199,
- 14,204,155, 55,143,198,196,196,108,172,237,131, 34, 37, 37, 37, 46, 61, 61,125,253,146, 5, 51,115, 5, 37, 41,144, 25, 50, 97,
-200,189, 15,129, 33, 15,147,167,206,192,195, 44, 3,226, 30,170, 17,247, 80,141, 52,141, 4, 95, 46, 90,201,115,119,119, 31,228,
-228,228,212,167,182,182,170, 84,170,243,169,169,169, 91,231,204,153,147,151,149,149, 85,249,247, 83,170,103, 81,170,127,186, 25,
-166,166,166, 88,178,100,137,133,163,163,227,155, 74,165, 50,172, 54,103, 70, 70, 70, 70, 74, 74, 74,194,140, 25, 51, 74, 51, 51,
- 51,145,159,159,143,195,135, 15,191,209,170, 85, 43,171,105, 51, 22,144,135, 89,180,178,157,121,172, 5, 86, 68,252,192,107,221,
-186,245, 40,133, 66, 81,231, 56, 34,133, 66,233,230,237,221,122,215,249,243,231,199,184,185,185,125, 0,148, 5, 43, 74, 65, 1,
-192,213,213,117, 98, 76, 76,204, 88, 95,223,182,187,236,237, 29,218,212,229,122,214, 16, 66,122,188,249,230,155,109, 88,150,197,
-174, 93,187,174, 81, 74, 87,253,250,235,175,151, 74, 74, 74, 48, 98,196, 8, 87, 0,125,141,244, 4,140, 26, 53,234,131,208,208,
- 80,124,252,241,199,165,199,143, 31,247,163,148,126, 77, 41, 77,164,101, 36, 81, 74, 35,162,162,162, 58, 78,158, 60,185, 36, 48,
- 48, 16, 99,198,140, 25, 75, 8,169,115,220, 15, 33, 36,120,228,200,145, 94, 44,203, 98,231,206,157, 87,171,132, 43, 0, 0,165,
-244,143,221,187,119,159,215,106,181, 24, 61,122,116, 43, 66, 72,207, 6, 60,119,161, 88, 44,222,181,112,225, 66, 11,149, 74,133,
-183,223,126,187, 36, 62, 62, 30,243,230,205,147,154,155,155, 31, 36,132,212, 58, 70,176, 54,196, 98,241,247,223,125,247,221,144,
-246,237,219, 99,210,164, 73,218,111,191,253,118,202, 7, 31,124,160,245,243,243,195, 55,223,124, 51, 68, 36, 18, 53,104,133,234,
-244,244,244,220,200,200, 72,235,250,110,105,105,105,233,198,248, 90,180,104, 97,225,227,227,115, 45, 32, 32, 32,171, 67,135, 14,
-173, 1,224,198,141, 27,153,187,118,237,162,214,214,214, 56,124,248, 48,190,255,254,123,132,132,132, 64, 46,151,143,104, 64, 83,
-105,249, 13, 85,190, 86,191,191,250,126,117, 67, 8,205, 43,210,131,207, 48, 16,240, 40,146,210,139, 81,106,160, 16, 10, 24, 8,
-120, 0,159,161,176,150, 11, 32, 16,240, 0, 16,163,156, 12, 33,200, 41,212,129,207, 35, 16,136,132,132,209, 27, 42, 75,132, 12,
-223, 32, 21, 75,196,196,206, 92, 8, 33,159,192,184,145,115, 28, 28,127, 82,239, 66,163, 6,195, 95, 11, 31, 53, 85,129,180, 90,
-163, 42,221,181,242, 44,156, 53,241, 44,156,207,147,252,252,124,126, 84, 84,148,185, 64, 32, 48, 25,216, 62, 36,123,217, 47,119,
-109,230,111,191, 3, 17, 15,100, 80, 7, 38, 53,242,228,113,146,147,147, 99,233,238,238, 94,239, 89, 47, 0,220,191,127,127,156,
-163,163,227, 34,134, 97, 2, 13, 6,195, 47,171, 86,173,194,186,117,235,100, 19, 39, 78,140, 87, 40, 20, 42, 15, 15, 15,231,213,
-171, 87,139, 1, 96,235,214,173, 56,114,228,200, 80,129, 64,112, 49, 41, 41, 41,173, 46,239,149, 43, 87,102,187,184,184, 68, 63,
-120,240, 32,130, 16, 98, 33,151,203, 45,127,253,245, 87,146,154,171,197,236,173,247, 43,103, 22,154,136,121,152,241,154, 45,254,
-243,159, 97,252,123,247,238,125, 5,224, 72,109,206,216,216,216,169,174,174,174, 81,119,239,222, 93, 37,180,246,180,150,180, 27,
- 47,239, 57,163,172,251,209,209, 74, 12,166,252, 13, 49, 47, 47, 15, 89, 89, 89, 24, 59,118,172,197,226,197,139,167, 3,136,172,
-205, 25, 23, 23,119,222,213,213, 53,245,238,221,187,157, 41,165, 34,115,115,243,144, 85,171, 86,145,164, 39, 90,124,177, 57, 1,
-234,226,178,118,202, 37, 2, 44, 24,233,132, 49, 99,198,240, 31, 62,124,184, 12,101,103,228,127, 65,169, 84,186,123,123,123,239,
-218,190,125,187,247,234,213,171,159,220,187,119,175, 80,161, 80,204,175,182, 91,201,146, 37, 75,178,183,110,221,234,249,246,219,
-111,239,114,112,112, 24,222,216, 37, 53,154,138,153,153,217,210, 9, 19, 38,224,231,159,127, 70, 78, 78,206,106, 0,200,207,207,
- 95,181,125,251,246,157,227,198,141,195,214,173, 91,151, 18, 66, 14, 27, 81,197,234, 55, 98,196, 8, 28, 58,116, 8, 39, 78,156,
-248,146, 82,122,179,166,157, 40,165,119, 9, 33,211,247,238,221,187,102,228,200,145,248,241,199, 31,251, 2,168,107,225,217,222,
-125,250,244,193,193,131, 7,145,157,157,253, 77, 77, 59,228,230,230,126,251,251,239,191,119,238,211,167, 15,150, 44, 89,210, 27,
-192, 31,245, 61,111, 66,136,151,185,185,249,166, 53,107,214, 4,180,111,223, 30,163, 70,141, 42, 46, 45, 45,237,251,217,103,159,
-237,219,177, 99,135,124,203,150, 45,254,227,199,143,191, 64, 8,121,159, 82,106,212, 34,182, 60, 30, 47,124,237,218,181,239,133,
-133,133, 97,234,212,169,250, 35, 71,142, 12,166,148, 30, 37,132, 36,124,254,249,231, 7, 86,174, 92,201, 91,177, 98,197,123, 60,
- 30, 47,211, 96, 48,204, 52,198,217,220, 16, 66, 86,172, 92,185,210,187,109,219,182, 40, 46, 46,198,253,251,247,145,158,158,190,
-253,240,225,195, 71,175, 95,191,190, 60, 45, 45,109,143,189,189,253,184,169, 83,167, 58, 5, 4, 4, 4, 56, 57, 57, 89, 62,126,
-252,216,152,247,146,138,202, 84, 6,128, 91, 0, 58,151, 87,174, 0, 32, 8,101, 93,131, 64,217,140, 66,163,222,155, 64,200,181,
-187, 15, 85,173, 44, 77,205,144,195,138,240, 80,149, 5,169,137, 9, 24,202, 64,175,201,129,187,139, 29, 88, 10,228,103,169,192,
- 48,228,154, 49, 74,157,129,141, 73, 76, 78, 87, 90,152, 72,224,238,215,223,250,234, 31, 63,254,100,222,186,235,120, 62,143,240,
-132, 98,179,245,163, 70,190, 99,163, 51, 80, 20,228,164,130,240, 24,163,199,160,113,112, 0, 70, 4, 44,150,101, 33,149, 74,159,
-170, 48, 85,175, 2, 73,165, 82,148,148, 52,108,185, 20,169, 84,138,210, 42,195,120,155,195,105,204, 49,155,219,249, 60,209,233,
-116,242, 15, 62,248,160,107,231,206,157,147,251,245,235,151,224,229,101,155, 56, 32, 88, 98,179,118,227, 94,223,126,221,125,226,
-242,159,164,103, 38,137,197,197, 57, 57, 57,214, 91,183,110,237,164,211,233,100,198,120, 83, 83, 83, 31, 1,120,164, 84, 42, 7,
-244,232,209,227,173,129, 3, 7,226,212,169, 83,242,194,194, 66, 47, 19,147,178,217,164,123,246,236,193,239,191,255,254, 67, 74,
- 74,202, 94, 99,219,155,148,148,116, 24,128, 91,139, 22, 45, 44, 90,180,104,145,110, 97, 97, 33, 84,169, 11, 43,103, 22, 10,249,
- 12, 66, 62,187,132,220,124, 53, 44, 44, 44, 32,147,201, 92,235,115,150,175,115,181, 47,240,205,133,237,121, 15,182, 71,173, 93,
-179,218, 28, 40, 59, 51,181,183, 16, 34, 55, 55, 23, 89, 89, 89,200,204,204, 4,165, 20, 6,131,193,219, 8,231, 35, 0,143,108,
-108,108, 28,221,221,221,137,169,169, 41,232,147, 66,228, 20,148, 62,213, 5,169, 46, 40,132, 82,169,132, 92, 46,175,177, 59,194,
-202,202, 74, 46, 22,139, 55,111,216,176,193, 75, 46,151,243,198,141, 27,103, 49,110,220,184,174,168, 37,140,201,100, 50,222,143,
- 63,254,232,225,235,235,187,169,101,203,150,189, 19, 19, 19,243,234,107,107,115, 81, 62, 51,114,226,167,159,126,234, 47,145, 72,
-176,110,221,186, 7, 0,182,149,223,189,235,219,111,191,157, 51,114,228,200, 54, 83,166, 76,241,153, 61,123,246,212,242,174,194,
- 90,187,157,133, 66,161,159,183,183, 55,126,253,245, 87, 0,248,181,158,195,239,142,142,142, 94, 51,112,224, 64, 72, 36,146,128,
-122,246,117,117,118,118,198,222,189,123, 1, 32,174,150,125,226,226,227,227,241,250,235,175,131, 16, 82,239,223, 16, 33,100,200,
-171,175,190,186,123,201,146, 37,124,185, 92,142,247,222,123, 79,123,225,194,133,254,148,210, 83,132,144, 30,163, 71,143,142,218,
-182,109,155, 73, 84, 84,148,215,226,197,139,163,121, 60, 94,184,193, 96,152, 93,143,115,236,162, 69,139,102, 12, 29, 58, 20,243,
-231,207,167,191,252,242,203, 40, 74,233, 81, 0,160,148, 30, 33,132,188,109,105,105,185,109,214,172, 89, 36, 47, 47,111, 6, 33,
-228, 49,165,244,187,218,124, 69, 69, 69,121, 6,131,193,161,168,168,200,168, 51, 68, 99,247,111,213,170, 85,191,182,109,219, 98,
-239,222,189, 24, 52,104, 16,142, 29, 59, 6,134, 97, 14,168, 84,170,147, 0,142, 2,128,163,163,163,121, 66, 66,194,212,208,208,
- 80,230,248,241,227,175, 3,248,193,136, 38, 60, 4,208, 30,192, 49, 74,105,114,249,196,201, 96,148, 45,217,112,139, 82, 90,177,
-212, 73, 59, 0, 9,198, 60, 39, 86, 91,176,229,196,193,221, 61,122,191,241,129, 57,143,199,128, 15, 33,138,212,249,128,193, 0,
- 55, 23,123, 4,122,219,227,106,162, 6,209,199,119,229, 22, 21, 20, 25,181,188,132,161,180,112,211,137,195,123,187, 7,188,250,
-142,185,216,173, 45,156,237, 63,246,189,113,241,232, 49,177, 72, 72,222,120, 99,152, 69,143, 64,119,156,184,150,143,243, 39,126,
-203, 41, 82,231,111, 50,198,201,193, 81, 65,101,192,170,101, 80, 89,198,212,169, 83,237,166, 77,155, 6, 51, 51, 51,100,103,103,
- 67,167,211, 85, 86,155,196, 98, 49, 44, 44, 44,144,157,157,141,157, 59,119, 2,101,103, 43,181,194,227,137, 82, 23,125,179,214,
-153,240, 76,180, 98,169,140, 90,201,154,238, 4, 0,173,142,159,241,221,206, 61, 86,253,186,117,225,183,112,116,252,203,253,141,
-113,190, 8,232,116,186, 99,105,105,105,254,109,218,180, 73,115,113,113,209, 20, 23, 23,131,106, 52,234,131, 59, 87,183,118, 54,
-159,116,159, 97, 24, 42,149, 74, 89, 11, 11,139,194,251,247,239, 19,189, 94,127,178, 33,126, 74,233,196,137, 19, 39, 50,167, 79,
-159, 30,245,214, 91,111,161,101,203,150,136,139,139,195,214,173, 91,177,123,247,238,205, 66,161,112, 74, 99,218,157,156,156, 92,
-224,237,237,253, 84, 5,164,250,204, 66, 93, 73, 38, 88,150, 53,122,112,126, 78,236,214, 59, 60, 27, 27,157, 79,139, 63,151, 19,
-201,201,201, 65,102,121,184,170, 18,178,140, 46, 97, 18, 66,212, 90,173,182, 90, 59,255,236,126, 44, 44, 44, 68,105, 73, 6, 12,
- 6, 67,141,206, 39, 79,158,168, 21, 10,197,218,136,136,136,149, 11, 23, 46,180, 91,181,106,213,147,219,183,111,231, 51, 12,243,
- 84,185,150,101, 89,137,155,155,155,124,197,138, 21,246, 17, 17, 17, 79, 88,150, 93,251, 55,135,171,161,237,219,183,223,220,175,
- 95, 63,249, 7, 31,124,128,136,136, 8,164,166,166,126, 65, 41,213, 3, 0,165,148, 37,132,124,254,205, 55,223,236,159, 62,125,
- 58, 74, 75, 75, 87, 28, 60,120,112, 62, 33,100, 34,165,116, 91, 77, 78, 91, 91, 91, 39, 62,159,143,216,216,216,124, 74,233,253,
-186,142, 79, 41, 77,243,244,244, 76, 39,132,216, 59, 58, 58,182,174,107, 95, 43, 43, 43, 55,185, 92, 14,149, 74, 5,148,125,136,
-215, 68, 98, 74, 74, 10, 21,137, 68, 68,161, 80,184,215,247,252, 45, 45, 45, 63,223,176, 97, 3,255,228,201,147,152, 59,119,238,
-227,164,164,164,209,229,203, 8,128, 82, 26, 75, 8, 9,237,209,163,199,142,233,211,167,123, 46, 91,182,140,196,199,199, 79, 2,
- 80,103,192,114,113,113,153, 56,118,236, 88,172, 93,187, 22,235,215,175,159, 68, 41,221, 85,237, 57,239, 32,132, 88, 90, 91, 91,
-175,157, 48, 97, 2, 54,109,218, 52, 26, 64,173, 1, 75,165, 82, 77,127,243,205, 55,231, 60,121,242, 36,188,190,231, 99,236,254,
- 10,133, 98,240, 91,111,189,101, 79, 41, 69, 68, 68, 68,218,218,181,107,139,242,243,243,183,165,164,164, 60,245, 62,193, 48,204,
-158,195,135, 15, 79,253,224,131, 15,112,242,228,201,117, 10,133,130,166,164,164,108,168,235,248,148,210, 84, 66, 72,107, 66,136,
- 55,165,244, 86,249, 44,193,167, 6,178, 19, 66, 60,203,247,125,108,204,115,202,186,115,114,159,189, 79,255,179, 87, 46, 70,190,
-234,234, 19, 42,176,179,148, 67,233,110, 3, 43, 83, 33, 40,128,235, 73, 26,156, 63,117, 84,151,145,250, 40,218,152, 25,132, 21,
- 78,135,118, 3,162,101, 54, 46,175,182,106,219,149,239,234,238,129,222, 33, 29, 44,173,205, 4,208,234, 40,142, 93,201,195,185,
-168, 67,186,140,244,228,147,220, 12,194,191,135,151,101,128, 59, 80,127, 5,107,222,250,245,235, 67, 54,110,220, 56,112,234,212,
-169,242,119,222,121, 7, 82,169, 20,133,133,133,112,118,118,134, 94,175,199,193,131, 7, 17, 27, 27,171,102, 89,118, 63,254,156,
- 37, 2,224,175, 87,219,158, 17, 81,212,130, 16,194, 0,133, 33,243,215,119,104, 22, 39, 0, 68, 63,208, 43, 21,169, 89,243,178,
-115, 14,126,226,162,116, 20,246,233,218,153,111, 99, 89, 54,155,185,177,206,166,242,119, 56,245,122,253, 88, 66,136,207,231,159,
-127,190, 92,169, 84, 42,230,207,159,255,168,109,219,182,154,252,252,124,170,213,106,217,204,204, 76,217,238,221,187, 93,179,179,
-179,213, 58,157,238,109, 74,233,213,134,180, 51, 37, 37, 69, 3, 96,180,131,131,195,222,140,140,140,221, 35, 70,140,192,166, 77,
-155,112,238,220,185, 1, 41, 41, 41, 7,107,122, 76,125, 78, 0,160,148,234,187,116,233,146,123,227,198, 13,123,158,185, 43,236,
- 45, 4,232,251,101, 89, 49, 66, 46, 6, 52,133,106, 60,184,123, 11,249,249,249,151,141,117, 38, 36, 36,104,125,125,125,115, 51,
- 51, 51,109,108,109,109,203,194, 85,149, 96,245,228,201, 19,228,229,229, 81,134, 97,206, 26,235,204,204,204, 44, 12, 14, 14, 46,
- 74, 72, 72, 16,241, 68,142,112,180, 20,163,172, 11,146,194, 86,206,135,166,168, 16,215,226, 46, 35, 63, 63, 63,178, 54,103, 74,
- 74,202, 78,133, 66, 1, 0, 43,231,204,153, 99,211,183,111,223,123, 23, 47, 94,236, 94,245, 56,126,126,126,191,205,159, 63,127,
-192,226,197,139,179, 54,111,222, 60, 61, 53, 53,245,169,217,142,207,250,111,201,218,218,122,218,129, 3, 7,228,165,165,165,136,
-136,136,192,215, 95,127,189,145, 82,250,212,236, 72, 74,233, 1, 30,143,247, 13,195, 48,255,253,240,195, 15, 49, 97,194, 4,153,
-191,191,255, 84,252, 89,229,122,202,169, 82,169,102,251,249,249,205,201,200,200, 48, 42, 16,220,189,123,119,188,159,159,223,236,
-140,140,140,229,181,181, 19, 0, 76, 76, 76, 76, 12, 6, 3, 30, 62,124,152, 67, 41,173, 49,132, 82, 74,139, 61, 60, 60, 84, 6,
-131,193, 73, 38,147,253,101, 0,117,117,103, 78, 78, 78,184,191,191,255,188,244,244,244,163, 0, 22, 81, 74,139,171,249,174, 16,
- 66,124, 62,250,232,163,201, 75,151, 46,125, 61, 45, 45,237, 47,235, 44, 85,119, 38, 37, 37,133,247,232,209,227,203, 59,119,238,
-108,166,148,174,175,165,157,235, 8, 33,165, 63,253,244,211,164,135, 15, 31, 46,169,203,153,146,146,178, 31,192,254,154, 60, 53,
- 81,219,254, 85,157, 86, 86, 86,211, 39, 79,158,140, 67,135, 14, 65,173, 86,175, 73, 73, 73, 89, 86,147, 75,165, 82,157,119,117,
-117,253,189, 75,151, 46,131, 87,172, 88, 33, 28, 48, 96,192, 36, 0, 27,106,114, 86,227, 28,128,144,242,113,112,183, 1,100,151,
-111,183, 66,217,204, 65,130,106,239,197,245, 57, 13,186,252,145,113,167,127,221,145,156,112,173,139, 95,247,161,150,121, 69, 78,
- 16,242, 25, 20,228,164,226,220,241,255,203, 73,121,124,255,156,182, 56,119,100, 67,156,250,210,188, 17,215,206,252,182, 51, 45,
-241, 86,231,162,144,254,150,185,106, 23, 8, 5, 4,185,153,143,113, 33,114,239,147,212, 71, 15, 79,235,216,146, 49, 13,113, 54,
-133,127,179,243,101,131, 24, 51, 33,136, 16, 34, 2,208, 75, 46,151,247,254,228,147, 79, 68,125,251,246,197,226,197,139,113,236,
-216, 49,173, 86,171, 61, 6,224,120, 77,149,129,186, 94,128,103,225,236, 23, 68,228, 14,246,204,234,150,142,204,232,182,238,110,
-228,198,221,120,254,229,148,129,223, 55,197,217, 88,254,110, 39, 33,164,171, 64, 32, 88,230,229,229, 85,146,152,152,216,214,202,
-202,234,142, 74,165, 18,233,116,186,207, 41,165,167,154,210, 78, 7, 7, 7,155,254,253,251,103,204,154, 53,139,204,159, 63, 31,
-167, 78,157,178,168,171,194, 98,140,179, 69,139, 22, 61,253,253,253,143,172, 90,183,129,159,148, 94,128,124,181, 26,106,181, 26,
-133, 5, 5, 40,206, 79,195,161,223,118,104,175, 95,191,238,153,150,150,150,100,172,211,197,197,165,111,135, 14, 29,118,108,216,
-176,193, 60, 59, 59,187, 50, 96, 61,121,242, 4, 44,203, 98,253,250,245, 79,178,179,179,219, 63,126,252, 56,197, 88,103,203,150,
- 45,135,132,132,132,236, 94,190,250,127,252,228,244, 2,168, 11, 11, 81, 84, 84,132, 98,141, 6,165, 5,233,216,252,125, 68,201,
-173, 91,183, 90,102,102,102,166,215,229, 84, 40, 20,111,118,237,218,117,193,181,107,215, 78,198,199,199, 79,172,122,159,135,135,
-199, 55, 29, 59,118,236,127,246,236,217, 57, 42,149,106,107, 99,126,159, 13,165,170,147, 16,210, 87,169, 84,126,157,153,153,249,
-160,180,180,116, 23,165,244, 47,109,168,242,184, 17,124, 62,127,132,141,141,141,125, 90, 90,218, 82, 74,233,175, 53, 57,159, 69,
- 59,203,127, 30,104,103,103, 55, 51, 35, 35, 99, 41,165,244,247, 58, 30, 87,177,223,114, 74,233,111,117, 57,159, 69, 59, 95, 4,
-167, 66,161, 24,104,103,103,183, 32, 61, 61,253,100, 90, 90,218,231,117,117,249, 58, 57, 57, 73, 88,150, 93, 96,111,111, 31,156,
-150,150,182, 50, 53, 53,245,255,140,109, 39, 41,187, 84, 78, 75,148,141,183, 2,202,198, 92, 37,209, 58,214,190,170,207,105,227,
-217,123,144, 88, 38,125,151,178,134,142, 0, 1,195,227, 93, 41, 46, 44,218, 84, 87,229,202, 24,167,196, 68, 54,150,101, 13, 29,
- 25, 16,150, 97,152,171, 26, 77,209, 15,153,183,143,213,122,169,156, 23,241,117,255, 39, 59,107, 57,206,120, 74,105,131, 38,131,
-252, 83, 48, 42, 96, 85,238, 92, 54,139,102, 0,195, 48,193, 44,203, 70, 3, 56, 64,235, 88,183,198,152, 23,224, 89, 56,251,133,
- 17,101, 75, 27,222,122,185,140,241, 95,186, 89,247, 81,115, 56, 27,202,243,114, 18, 66,134,240,249,252,207,244,122,253, 87,148,
-210,122,199, 71, 25,219, 78, 15, 15,143, 13, 97, 97, 97,239, 30, 57,114,228,219,164,164,164,201,205,225,108,219,182,237,202, 86,
-173, 90, 77, 30, 48, 96,128,192,206,206, 14, 89, 89, 89,184,123,247, 46, 98, 98, 98,180,105,105,105, 19,227,227,227, 55, 55,212,
-217,161, 67,135,133,214,214,214, 19,223,127,255,125,107, 66, 8,178,179,179,161, 86,171,233,158, 61,123,178, 52, 26,205,251,241,
-241,241,149,103,245,198, 58,219,183,111,255,189,171,171,235,152,161, 67,135, 10,148, 74, 37,178,178,178,112,243,230, 77,156, 61,
-123,182, 36, 45, 45,237,173, 59,119,238, 84, 86,123,234,114,186,185,185,137, 18, 18, 18,106,236, 78,244,243,243, 19,196,196,196,
-212,216, 37,250, 50,253,125,114, 78,206,201, 57, 57,103, 3,143,243,194, 6,172,122, 7,185, 87,165, 60,164,236, 36,132,236,174,
- 24,159,209, 84,158,133,243, 80, 36, 85, 1,232, 79, 8,225, 55,151,243, 69,161, 60, 84, 25, 61,240,220, 88,238,222,189,251,190,
- 66,161,152, 82,222,109,216, 44,220,188,121,115,154, 82,169,252, 41, 49, 49,113,133, 76, 38,243,101, 89, 86, 87, 82, 82,114, 38,
- 59, 59,123,106, 74, 74, 74,163, 46, 4,123,245,234,213, 47, 21, 10,197,111, 43, 86,172,248,130, 82,218,129, 16,162,213,235,245,
-209, 57, 57, 57, 11,146,147,147, 83, 27,227,188,118,237,218,120,165, 82,249, 99, 98, 98,226, 18,177, 88,220,129, 82,170,213,104,
- 52,145, 25, 25, 25,159, 84, 84,174,140,161,182,112, 5,148, 45,145,209,152,182,113,112,112,112,112,252, 51,105, 80,192,170,224,
- 89,132,150, 23,197,249,111,166, 57,195, 85, 5, 42,149,234, 42,128, 87,154,211,153,146,146, 18, 7, 96, 88,115, 58, 85, 42,213,
- 5, 0,181,174,161,197,193,193,193,193,193, 46,169, 84, 2, 0, 0, 32, 0, 73, 68, 65, 84, 81, 21,163, 46,246,204,193,193,193,
-193,193,193,193,193, 97, 60, 4,101,235,144,252,133,134,244,173, 18, 66,140,186, 44, 65, 67,252,156,147,115,114, 78,206,201, 57,
- 57, 39,231,124,249,156, 53,184,223,168,118,151,170,154,239,133, 28,131,213,160, 65,238, 13,150,191, 32, 3,235, 56, 39,231,228,
-156,156,147,115,114, 78,206,249,124,157, 47, 27, 92, 23, 33, 7, 7, 7, 7, 7, 7, 7, 71, 51,195, 5, 44, 14, 14, 14, 14, 14,
- 14, 14,142,102,134, 11, 88, 28, 28, 28, 28, 28, 28, 28, 28,205, 12, 23,176, 56, 56, 56, 56, 56, 56, 56, 56,154, 25, 46, 96,113,
-112,112,112,112,112,112,112, 52, 51,207,116, 22, 33, 7, 7, 7, 7, 7, 7, 7,199,191,145,167, 42, 88,132, 16, 46,109,113,112,
-112,112,112,112,112, 60, 55, 94,150, 44,194,117, 17,114,112,112,112,112,112,112,112, 52, 51, 92,192,226,224,224,224,224,224,224,
-224,104,102, 24,224,229, 41,199,113,112,112,112,112,112,112,188,152,188,108, 89,164,162,130, 21, 86,254,196,194,158,103, 99, 56,
- 56, 56, 56, 56, 56, 56,254,181,188, 84, 89,132,155, 69,200,193,193,193,193,193,193,193,209,204,112, 99,176, 56, 56, 56, 56, 56,
- 56, 56, 56,154,153,103, 26,176, 8, 33,237, 56, 39,231,228,156,156,147,115,114, 78,206,201, 57,255,109,112, 21, 44, 14, 14, 14,
- 14, 14, 14, 14,142,102,134, 11, 88, 28, 28, 28, 28, 28, 28, 28, 28,205, 12, 23,176, 56, 56, 56, 56, 56, 56, 56, 56,154, 25, 46,
- 96,113,112,112,112,112,112,112,112, 52, 51, 92,192,226,224,224,224,224,224,224,224,104,102, 8,128, 26,103, 2, 80, 74,175, 27,
- 45,105,196,108,130,250,252,156,147,115,114, 78,206,201, 57, 57, 39,231,124,249,156,245,185, 27,146, 63,254,201, 60,211,133, 70,
- 9, 33,237,154,251, 23,197, 57, 57, 39,231,228,156,156,147,115,114,206,151,207,249,178,193,127,222, 13,224,224,224,104, 34,187,
- 9, 15,118,109, 92,193, 82, 5,248,162, 84,252,113,237, 62,230, 82,182,201, 78, 69, 91, 23,104,117,246,144, 74, 50,113,228,234,
-131, 38, 59, 57, 56, 56, 56,254, 69,112, 1,139,131,227, 69,199,209,203, 19, 6, 44, 1, 15,142,160,165, 9, 8,105,187, 4, 64,
-211,206, 44,173,189, 60,161, 99, 23,129,207, 56, 65, 91,122, 7,221,218, 44, 5,112,179, 89,218,203,193,193,193,241, 47,224,185,
- 12,114, 15, 8, 8,136, 9, 8, 8, 88, 24, 22, 22, 38,126, 30,199,231,224,120,105,184,222, 94, 6,189,161,159, 86,199, 42, 15,
- 71,231,218, 21, 21, 27, 60, 33,212,247, 71,180,167,105,147,156, 2,242,106,177,142,109,241,211,177, 34,251,194, 98,189, 55, 24,
- 52,205, 89, 78,187,118,237, 44, 2, 3, 3, 15,251,250,250,218, 52,213,197,193,193,193,241, 79,230,185, 4, 44,150,101, 59,217,
-217,217, 77,213,104, 52, 73,254,254,254,131,159, 71, 27,158, 23,157, 59,119,142,238,210,165, 75,122,112,112,112,122,112,112,112,
-108,125,219, 95, 70, 20, 10,133,103,251,246,237,147,124,124,124,238, 84,221,110,215,241,245, 96,239,110,239,204,181,241, 25,218,
-253, 57, 53,237,197,163,144,181, 7,195,235,113, 51,177, 72,150,150,171,179,143,137, 47,146,131,242,194, 80, 10,199, 38, 57, 89,
-218,243, 74,130,198,228,220,125, 91,251,211,215, 75,204, 64,153, 30,160,196,161,169,205, 21,137, 68,147, 40,165,189, 5, 2,193,
-199, 77,117,113,188,216, 16, 66,218, 17, 66, 6, 19, 66, 2,154,209,185,204,203,203, 75, 69, 8,249,168,185,156, 28, 28,141,197,
-232,128, 53,172, 21, 9, 25,213,154, 68,189,217,138,168, 71,180, 38, 5,111,181, 38,103,254,227, 70,186, 55,246,192,123,246,236,
-145,110,221,186,213,174,109,219,182, 59,131,130,130,206,248,251,251,123, 52,198, 19, 16, 16,112, 56, 32, 32, 96, 88,245,109,254,
-254,254,111, 86,221, 22, 24, 24,120, 35, 48, 48, 48, 47, 32, 32,224,190, 49, 94, 63, 63,191,123,126,126,126,133, 1, 1, 1,247,
-170,110,247,247,247,127, 51, 48, 48,240,112,181,227, 13,171,190,173, 54, 24,134,113,218,183,111,159,221,129, 3, 7,236,248,124,
-190,125,245,237,251,247,239,127,106,123, 67, 9, 8, 8, 24, 23, 16, 16, 16, 93,237,185,188, 95,125, 91, 93,248,251,251, 71,251,
-249,249,189, 95,205, 27, 29, 16, 16, 48,174,177,237,170, 64,161, 80,120,118,235,214,237, 76, 92, 92, 92, 11,185, 92,110, 81,245,
- 62, 7,107,139, 62,209,251,191,153, 58,102,216,171,147,236,218,190,214,190,169,199,122,233,185,221, 86, 8, 61,219,141,101,169,
-237,205,251,197,182,253, 7,252,135,127,229,158,198, 86,167, 55, 88,129,240,194, 16,213,178,225, 21,226,219,109,133,208,233, 66,
- 89, 74,237, 79, 92, 17,218,134, 13,250,144,119,242, 26,223, 86,103, 48, 88, 67,135,238,141,114,150,227,231,231, 39,224,241,120,
- 83, 39, 76,152,192, 16, 66, 62,116,115,115, 19, 53,214,245, 34, 18,212,158, 40, 95,241,231, 95,244,107, 75, 66,154,203, 73, 8,
-241, 49, 49, 49,185, 76, 8,241,108, 46,231,223, 1, 33,164, 19, 0, 25,165,244,119, 0,246,132,144, 38, 15, 87, 33,132,172, 90,
-176, 96,193,231,215,175, 95, 87,180,106,213,106, 62, 33,132,215,244,150,114,112, 52, 30,163, 2,214,136, 86,100,158,189,131,242,
-232,172, 85,219,187,109,136,122, 96,250,237,190, 88,147,169,211,195, 67, 28, 44,109, 15,190,229, 70,150,214,246,184,186,102, 24,
-136, 68, 34,220,191,127, 31, 17, 17, 17,146,121,243,230, 5,155,155,155, 95, 13, 10, 10, 90,221,182,109, 91,147,186,218, 82,221,
- 73, 41, 13, 17, 8, 4, 27,130,130,130, 54, 85,188, 97, 19, 66, 66,196, 98,241,247, 65, 65, 65, 63, 85,116, 67,250,249,249,181,
-186,120,241,162, 25, 33,228, 47,225,165,166,118, 6, 6, 6, 58,198,196,196,200,128,178, 74, 64, 88, 88,152, 56, 48, 48,112,171,
- 82,169, 92, 15, 32, 4, 0,220,220,220, 68, 65, 65, 65,155,156,157,157,127, 32,228,233, 55,205,218,158, 59,195, 48,176,176,176,
-192,246,237,219,193,227,253,249,255, 79, 8,129,133,133, 5,182,109,219, 6, 66,136, 81,207,189, 42,109,219,182, 53, 9, 8, 8,
-216,227,232,232,184,154,101,217, 46, 0,208,190,125,123, 89, 96, 96,224,110,165, 82,185,166, 98,155, 49, 78, 74,105, 23,161, 80,
-184, 58, 48, 48,112,119,251,246,237,101, 0,192,178,108, 23, 62,159,191, 42, 32, 32, 96, 79, 67, 94,163, 78,157, 58, 77,232,208,
-161, 67, 74,135, 14, 29, 82,218,180,105,179,216,222,222, 62,114,237,218,181,214, 85,159,123, 69,229, 42, 61, 35, 59, 39,250,210,
-141,248,169, 19,254, 19,214,194,217,126,180, 69,199,161,230,198, 60,247,198,242,194, 59,179,137, 29, 8,237, 21,159,164,145,180,
-116,247, 55,177,243,250, 15,108, 45,248,226,115,183, 10,229,224,225, 21, 8,100,182,141,115,242, 95,185,241, 64, 35,181,108,213,
- 79, 22,208,185, 27,136,137,135, 56, 50,174,208, 12,124,166,113,206, 63,249, 79,151, 46, 93, 68,189,122,245,130, 66,161,224,153,
-155,155,143,174,103,255, 23,255, 53, 42, 39,168, 61, 81,202, 37,162, 11, 43, 23,124,226,175,176,150,237, 53, 38,100, 25, 49,125,
-222,199,206,206,238,228, 55,223,124,227, 39,151,203, 79, 25, 19,178,254, 9,191,207,242,112, 37,164,148,158, 47,223,116, 19, 64,
-104, 19,157,171,230,205,155,247,241,140, 25, 51,160, 86,171, 49,102,204, 24, 51, 0, 43,141,117,202,229,114,247, 14, 29, 58,252,
-228,227,227,243,200,215,215, 87,235,237,237, 93,220,166, 77,155,196,118,237,218,109,150, 72, 36,174,181, 61,238,159,240,251,124,
-153,156,245, 32, 2,208, 3,192, 0, 0,175, 0, 8, 44,255, 62,160,252, 54, 0, 64,175,106, 95, 43,170,163, 21,247, 7,213,226,
- 24, 80,195,227, 2,170,108,175,250,115,245,239,107,133, 1, 0, 66, 8,173,250,181, 42,195, 91,147, 96,107, 7,229,231,203,126,
-187, 36,101,239, 94, 65,204,123, 61, 17,255,209, 80, 72,239, 93,193, 23,147,191,144,202,229,150,147,135,181, 38, 61, 26,246,123,
- 42,227,206,157, 59,216,185,115, 39,108,108,108,200,198,141, 27,197,195,134, 13,155,100,102,102,150, 28, 16, 16, 80,239, 27,111,
- 5, 60, 30,207,176,105,211, 38,211, 33, 67,134,140,176,178,178,186,225,231,231,215,138, 97, 24,195,150, 45, 91, 76,223,124,243,
-205, 97, 90,173,246,150,191,191,191, 71,108,108,172,225,210,165, 75, 96, 24,227,138,118, 49, 49, 49,250, 67,135, 14, 1, 0,252,
-253,253, 61, 40,165,183,150, 46, 93, 58,226,215, 95,127,149,155,155,155,179,126,126,126,173,156,157,157,111, 44, 91,182,108,244,
-238,221,187,229,102,102,102, 70,205,176, 34,132,160,184,184, 24, 18,137,228,169, 32, 69, 8,129, 70,163,129, 88, 44, 54,186,141,
- 21,248,249,249,249, 88, 91, 91,223, 94,178,100,201,144,223,126,251, 77, 42,151,203, 17, 16, 16,224,109, 97, 97, 17,191,124,249,
-242,161,123,247,238,149,202,229,114,163,125, 66,161, 16,219,182,109,147,141, 26, 53,106,176, 88, 44,190, 29, 16, 16,224, 45, 20,
- 10,177, 99,199, 14,217,232,209,163, 7,202,100,178, 91,126,126,126, 62,198,184,116, 58,221,156, 75,151, 46, 57, 70, 70, 70, 58,
-186,184,184, 76,249,246,219,111,237, 5, 2, 1, 0,192, 96, 48, 0,248,179,114, 53,250,245,222, 65, 31,207,249,230,164,166,184,
- 68,187,232,139,177, 97, 2, 3, 58, 55,232, 23,241,111, 98, 55,225,129, 53,116, 2,224, 22,123, 71, 99,211,177,219,104, 62, 50,
-126, 71,160,183, 41, 63, 42,182,192,142, 82,234, 2, 61, 13, 68, 84,152,241,149,129,221,132, 7, 30,237, 8,194,122, 28,141, 35,
- 54,193,189, 70,243,147,146,146,224,234, 29,198,219,127, 9,246,148, 82, 87,176,240,111,144,179, 10, 2,129, 96,238,240,225,195,
- 77, 18, 19, 19, 17, 28, 28, 44, 19,137, 68,115, 26,227,121,138,219,109,133,184,208,198, 5,167, 60,195, 16,237,233,216,216,182,
- 61, 75,130,218, 19,165,153, 68,116,126,199, 79, 63, 43,218,135,142, 35,235, 63,113,177,178,149, 11,140, 10, 89,181, 81, 30,174,
-254,184,112,225,130,245,171,175,190,138,121,243,230,217,154,153,153, 25, 21,178,158, 39, 85,195, 21, 33, 68, 90,222, 61,168, 2,
-224,212, 4,231,154,121,243,230,125, 60,115,230, 76,156, 63,127, 30,203,151, 47, 71,191,126,253, 96,105,105, 89,239,251,199,219,
-111,191, 45, 11, 9, 9,137, 25, 60,120,240,149,143, 63,254,120,244,254,253,251,157, 55,109,218, 36,124,247,221,119,197,195,135,
- 15,119,249,228,147, 79,222,233,223,191,255,245,160,160,160, 11,195,134, 13,147, 52,182,137,229, 55,142,122,168, 43,139, 0,232,
- 48, 99,198,140, 64, 66,200,254, 25, 51,102,248, 3,176, 33,132,236, 7, 96, 11,192,182,252,123, 81,181,175,182, 40, 11, 77, 21,
-247, 91,215,228,168,184, 85,123,156,109,149,237, 85,143, 81,253,251, 90,169,252, 36, 39,132,116, 7,112,170,250, 14,124,138, 5,
- 19,166, 46,148, 60,220,252, 53, 82,127, 90, 5, 38, 75, 5, 94,110, 26, 74, 78,253, 14,221,233,125,120,187, 75, 23,169,148,144,
- 69, 13,250, 45,150, 35,151,203, 33, 20, 10,113,247,238, 93,220,186,117, 11,253,251,247, 23, 70, 68, 68, 88,248,248,248,124, 31,
- 18, 18,114, 37, 32, 32,160, 67,125, 14, 66, 8,220,221,221, 49, 98,196, 8,209, 71, 31,125,212, 90, 34,145,196, 82, 74, 5,174,
-174,174,120,243,205, 55,133,211,167, 79,111, 41,145, 72, 46,177, 44, 43,148,201,100,181, 86,135,106,242, 74,165, 82, 0, 16,120,
-120,120, 92,222,185,115,167,107, 72, 72, 8,255,232,209,163,200,207,207,231,123,122,122, 94,217,177, 99,135, 91,112,112, 48,255,
-204,153, 51, 40, 44, 44, 52,106, 65, 49, 66, 8, 10, 11, 11, 33,149, 74,255, 18,176, 10, 11, 11,255, 18,188,234, 35, 32, 32, 96,
-156,155,155,219,165,157, 59,119, 58,133,134,134,242, 78,158, 60, 9,181, 90, 13, 23, 23,151,203, 59,119,238,116, 10, 9, 9,225,
- 69, 71, 71, 67,173, 86, 27,237, 20,137, 68,112,117,117,197,240,225,195, 5,159,126,250,169,147, 64, 32,184, 36, 18,137,224,226,
-226,130,225,195,135, 11,167, 77,155,230, 36, 18,137, 46, 24,217,101,200, 3, 0,189, 94,143, 97,195,134,153, 72,165, 82, 36, 39,
- 39,131,101, 89,176,108, 89, 38, 77,205,204,190,118,246,210,245,219, 83, 39, 14,235, 94, 88, 82, 82,114, 36,242,242,173,182, 30,
- 46, 78,132,208,150, 70, 55,250,223,134,101, 91,107,240,208, 59, 41, 69, 43, 22,153, 56,201, 77,109,218, 0, 79, 78,161,149, 66,
- 12, 80, 34,185,116,187,200, 4, 12,237, 13,100, 89, 55,200,105, 96,123, 63, 80,105,197,165,210,118,166, 10,101, 11,100,103,103,
-195,217,213, 11, 37,176, 21, 69, 95, 47, 52, 5,109,160,179, 28, 95, 95,223, 80,103,103,103,135,150, 45, 91, 34, 43, 43, 11,238,
-238,238, 48, 53, 53,181,244,243,243,235,221, 80, 87, 37, 81, 45,197,200, 67, 8, 74,201, 74, 16,102, 62, 40,127, 9,248,153,157,
- 16,235, 39,104,180,179,153,169, 12, 87,219,126, 86, 90, 59,122, 1,215,223,131,189,149, 8, 27,103,116,180,178,149,139, 27, 21,
-178, 8, 33, 62,246,246,246,127, 92,184,112,193, 70, 34,145, 32, 38, 38, 6,109,219,182,197,215, 95,127,109,107,105,105,249,143,
- 13, 89,213,194,149, 21,165, 84, 3,128, 5, 48, 18,141,152,245, 74,202, 88,183,112,225,194, 41, 51,103,206,196,185,115,231,160,
- 84, 42,145,145,145,129,208,208,208,164,156,156,156, 58, 63,151,124,124,124,156,238,222,189,171,250,228,147, 79, 58,109,221,186,
- 85,106, 98, 98,130,220,220, 92,252,240,195, 15,152, 49, 99, 6, 8, 33,160,148,226,199, 31,127,148,141, 29, 59, 54, 48, 33, 33,
- 65,213,178,101, 75, 99,135,111, 16,148, 85, 92,100, 0, 76,202,191, 74,166, 76,153, 34, 34,132,136,203,195,165,132, 16,242,143,
-249, 91,253,167, 80, 91, 22, 1, 96,179,116,233,210,112, 74,233,192,165, 75,151,134, 87,217,127,127, 29,174,170,161, 9, 0, 80,
-221, 65, 41, 29, 88,245,107,213,199, 82, 74, 7, 82, 74, 7, 86,125,124, 93,199,171, 78,213, 82, 73, 36,165,180,123,245, 29, 40,
-208,193,161, 85, 27,228, 30,219, 5, 41,143, 60,117, 99, 30, 92,131,179,132, 15, 29,165, 70, 85, 51,170, 99,106,106, 90,121, 99,
- 24, 6,169,169,169,224,241,120,152, 51,103,142,100,242,228,201,237,133, 66,225,185,110,221,186, 45,169,203, 81, 17, 70, 46, 94,
-188, 8,119,119,119, 50,115,230, 76,179,238,221,187,243, 1,224,234,213,171,112,115,115, 35,139, 23, 47,150, 15, 26, 52,136,200,
-100, 50,163,171, 67, 12,195, 64, 42,149, 34, 44, 44,140,108,218,180,201, 84, 44, 22,227,192,129, 3,200,202,202,194,171,175,190,
-202,223,180,105,147,169, 68, 34, 65, 84, 84, 20,242,242,242,140,246, 18, 66, 80, 82, 82, 82, 99,192,170,169,178, 85, 23,193,193,
-193, 27, 29, 28, 28, 86,111,221,186, 85, 44,149, 74,113,242,228, 73,228,229,229, 97,196,136, 17,250,109,219,182, 73,204,204,204,
- 16, 29, 29,141,188,188, 60,163,124,213,185,120,241, 34,220,220,220,200,172, 89,179,164, 93,186,116,209, 1, 64, 92, 92, 28, 60,
- 60, 60,200,172, 89,179,164,102,102,102,171,186,118,237,186,177, 46, 7,203,178, 72, 77, 77,197,245,235,215,241,224,193, 3,100,
-101,101, 33, 51, 51, 19,106,181, 26,122,189, 30, 0, 32, 83,231, 31, 88,183,105,223, 21, 19,169, 84, 22,212,222,163,197,133,216,
-155, 25, 38, 82,169,204,195,181,133, 39, 33,243,185,203, 57, 85,135, 16, 2,129,214, 3,148,116, 58,127,179,192, 42,180,207, 72,
- 33, 50, 15, 1, 84, 7, 16, 62,122, 4, 57,241,247,158, 41,180, 7,139, 14, 16,194, 11, 48,226, 15,138, 16, 2,126,169, 59, 64,
-252,143,198,232,173,187,246,153, 36,124,252,248, 49,132, 66, 33,196, 98, 49,124, 67,222,224,239, 56,169,115, 0,208, 17, 2,180,
- 49,202, 89, 5,177, 88,252,229,216,177, 99, 77, 84, 42, 85,165,179, 95,191,126, 38, 50,153,108,110,163,126, 7, 81, 45,197, 96,
-100, 93,160,167, 31,223,120,160,113, 89,188, 57,213,235,126,178,198, 11, 20,211,160,211,249, 54, 53,100,185,184,184,132,121,122,
-122, 62,112,117,117,237,218, 88, 71,121,184, 58,183,115,219,207, 74, 43,135,178,112, 5, 67, 17,192,147,194,193,206, 18, 27,231,
-134, 89,217,154, 73, 27, 20,178,202,195,213,137,243,231,207,219, 72, 36, 18, 92,190,124, 25, 34,145, 8, 18,137, 4,237,219,183,
-199,250,245,235,109,173,172,172,254, 17, 33,139, 16, 98, 73, 8,233, 67, 8,249, 15, 33,228, 13,252, 25,174, 92, 1,244, 36,132,
-244, 6,224, 0, 32,138, 82,122,197, 72,103, 87, 62,159,127,160, 99,199,142, 41,124, 62,255,102,120,120,248,127,167, 79,159,142,
- 53,107,214, 32, 44, 44,236,254, 23, 95,124,129,248,248,120,125, 81, 81,209, 96, 74,105,157, 31,132, 5, 5, 5,191,207,154, 53,
-203,252,181,215, 94,171,248, 25,103,206,156,193,150, 45, 91, 96, 98,242,231, 40, 8, 74, 41, 6, 13, 26,132,113,227,198, 89,106,
-181,218, 61,117, 57,237,237,237, 95,137,140,140,244, 64, 89,184,146,224,207,128,101,114,252,248,113, 11,137, 68, 98, 21, 24, 24,
-104, 86,190, 93,246,218,107,175, 89, 11, 4,130, 70,255,141,189,164,212,152, 69, 42,168, 30,112,170, 7,160,154,238,171, 41, 60,
- 53,182,113,117, 29,175, 58, 85, 63,188,194, 8, 33, 81, 53,237, 84,250, 36, 29, 98, 24, 32,227, 17, 72,249,164,236, 43,143, 64,
- 74, 88,240,115,210, 27,248, 86,251, 39,166,166,166,144,203,229,127, 9, 90, 26,141, 6, 5, 5, 5, 70, 5,141,138,177, 60,150,
-150,150,149, 31,218,166,166,101,179,201,173,172,172, 80, 82, 82, 2, 66, 8, 76, 76, 76, 96, 98, 98,210,160, 10,150, 68, 82, 86,
- 17,142,142,142,198,217,179,103,193,231,243, 97,101,101, 5, 0,184,124,249, 50,174, 93,187, 6,145, 72, 4,107,107,235, 6,121,
- 75, 75, 75,107,236, 34,212,106,181, 13,234, 34,100, 24, 6,197,197,197,244,242,229,203,184,126,253, 58,196, 98, 49,108,109,109,
- 33, 18,137,144,156,156,140,219,183,111, 67, 36, 18,193,214,182,206, 42,102,173,152,153,153, 33, 55, 55, 23, 44,203, 86, 84,243,
- 96,102,102,134,130,130, 2, 48, 12, 99, 84, 59, 89,150,133, 74,165, 66, 86, 86, 22, 30, 61,122,132,204,204,204,202,144, 85,209,
- 69,200,209, 64,206,248,152,131, 8, 94,205,204,213,137, 51, 11, 68,230,246,110,189,128,172, 67, 0,225, 1, 2, 75,116,238,212,
- 10, 73,105, 6,147,248, 71, 90, 9,116,232,131, 63, 60, 45,141,114,242, 4,189, 51,242,116,226,196, 92, 91, 51,239,118,126,200,
-200,200,128, 88, 44,134, 88, 44,134,127,231, 87,240, 32,133,149,221,124,168,145,129,226, 85,163,156,229,116,234,212,169,181, 84,
- 42,237,210,169, 83, 39,146,158,158, 14,177, 88, 12,137, 68,130, 46, 93,186,128, 97,152,246,190,190,190, 94, 13,122,254,247,221,
- 68, 16,200, 58, 3,244,227,219, 15,139, 20,123,163, 53,158,131,134,190, 97,181,234,151, 12,175,219, 15,139, 93,161,213,127,138,
-194, 82,191,198,134,172,150, 45, 91,118, 55, 53, 53,221,255,229,151, 95,186,138,197,226, 67,174,174,174,161,245, 63,234,175,152,
-138,121,255,251,242,227,145, 74,203,138,112,165, 47, 4,120, 82,128, 39, 43, 11, 89,246, 54, 88,244, 81, 47, 43,153, 80,240,127,
-198, 58,165, 82,233,142,117,235,214,217, 86,132, 43,161, 80, 8,137, 68, 82,121,235,212,169, 19,230,204,153, 99,107,101,101,181,
-189, 49,109,110, 46, 8, 33, 86, 40, 27, 87,117, 21,192, 30, 0, 39,170,132, 43,119, 0,255,135,178,170, 85, 44,165, 52,201, 72,
-103,112,223,190,125, 79,222,191,127,191,255,149, 43, 87, 28,211,210,210,254,159,189,243, 14,143,162,218,223,248,123,102,182,151,
-244,108, 26, 9, 9, 1, 82, 9, 45, 32,132,222,164, 73, 87, 4, 20,165, 11, 40,138,130, 8,162,162,116, 17, 41, 98, 1,165, 35,
- 40, 32, 77,145, 34, 32, 32,210, 66,135, 16, 18, 66, 72,111,155,182,201,102, 55,219,102,206,239,143, 77, 48, 66,202, 6,184,191,
-123,175,119, 62,207, 51, 79,118,206,206,188,243, 61,179,155,221,119,191,167,133,207,152, 49, 3,171, 86,173,194,123,239,189,183,
-157, 82, 26,186,107,215,174, 86, 23, 47, 94,108,238, 72,255,160,156,156,156,151,102,207,158,157,159,159,159, 15, 0,136,138,138,
- 66,113,113, 49,102,206,156,137,233,211,237,131, 92, 91,181,106, 5, 0,200,203,203,195,242,229,203,115,115,114,114,198,212,166,
-201,113, 92,250,222,189,123, 99,204,102,115, 67, 0, 18, 0, 50, 0,202,212,212, 84,151,178,178, 50,103,150,101,157, 84, 42,149,
-179, 76, 38, 83,141, 27, 55, 78, 18, 23, 23, 23, 97,179,217, 50, 29,169,255,255, 16, 53,122, 17,224,209, 76, 83, 77,101,143,123,
-188, 35, 56,122,254,131,111, 72, 74,233, 41, 0, 93, 30, 62,128, 37,184,158, 22,123, 10,238,145,173,255,158,193, 18, 17, 40,157,
-156,145,156,153, 14, 9,200,173,199, 8,240,129,169,170,106,178,178,179,179, 49,123,246,108,195,182,109,219,110,152,205,230,152,
-211,167, 79,207,169, 77,167,210,164,120,121,121, 33, 45, 45,141,126,246,217,103, 37,135, 14, 29,178, 85,150,165,167,167,211, 15,
- 62,248,160,244,199, 31,127,164,245,105, 34,172,204, 96,157, 58,117,138,206,155, 55, 79,151,149,149, 69,221,221,221,225,225,225,
-129, 99,199,142,217,230,204,153,163, 75, 74, 74,162,238,238,238,112,119,119,175,151,193,178,217,108, 80, 40, 20,127, 51, 40,132,
- 16, 88,173,214, 71, 50, 91,181,113,230,204,153,241, 58,157,238,237,153, 51,103, 26,111,223,190, 77, 53, 26, 13, 52, 26, 13, 54,
-111,222, 44,122,245,213, 87,141,215,175, 95,127, 80,246, 56,120,122,122, 34, 33, 33,129, 46, 94,188,216,120,252,248,113, 49, 0,
-104, 52, 26,220,185,115,135,206,159, 63,223, 88, 92, 92,252,246,153, 51,103,198,215,166,193,113, 28,146,147,147, 81, 82, 82, 2,
-142,227, 96, 50,153,160,213,106,145,145,145,241,192, 96, 25, 85,206,125,223, 24, 59,176,101,153,209,104,184,112, 35, 49,173, 93,
-235, 72,175, 50,163,209,144,120, 63, 45,129,210,121,194,236,225, 15, 67,121, 31, 80,218,233,204, 13,189,235,179,207,141,144,146,
-146,139,128, 85, 15,136,221, 0,177, 43, 68,114, 15,244,235,217,138,221,116,164,196, 7,132,239, 0,185,172,238,254, 45, 60,245,
- 6,207,119, 62,118,169,220,173, 83,255,105,210,194,194, 66, 48, 12,243,192, 96, 41, 85, 42,244, 28, 48,154,217,120,196,228, 3,
-158,118, 4,203, 58,220,103, 70, 34,145,204, 26, 59,118,172,164,168,168,232,111,154, 10,133, 2, 67,134, 12,145, 57, 57, 57,125,
-224,112,221,227, 35, 37,200,149,181, 7, 79,167,223, 73, 49,250,237,253,211, 24, 58,227,163,141,138,102, 45,218, 97,242, 96, 47,
-197,162,173,121,145,215,146, 12,141,192,112,239,192, 96,110,131,111,235,103,178, 26, 53,106,212, 89,165, 82, 29,220,183,111,159,
-178,123,247,238,152, 49, 99,134, 74, 38,147, 29, 10, 10, 10,122,228,179,177, 46,202, 74,185, 55,230,175,220,154,123,125,103, 31,
-192, 86, 90, 97,174,254,218,242,116, 60, 62,250,242,119,157,149,163,163, 28,213, 52, 26,141,175, 78,152, 48,161,224,167,159,126,
-122,196, 92,201,229,114,220,191,127, 31,139, 22, 45, 42, 44, 44, 44, 28, 83,223,120,159, 50,173, 0, 92, 5, 80, 14,160, 43, 0,
-101,197, 72,193, 24, 0,199, 40,165, 28,165, 52,151, 82,154,237,168, 32,203,178,239,125,253,245,215, 34,163,209,136,137, 19, 39,
- 34, 61, 61, 29, 89, 89, 89,152, 59,119,238,125,158,231, 95,173,208,188, 70, 41,141,119, 68,207,108, 54,223, 41, 42, 42, 26,208,
-183,111,223,226,162,162, 34,180,104,209, 2, 3, 6, 12,128,143,143, 15,252,252,252, 48,104,208, 32,132,132,132,160,160,160, 0,
-163, 70,141, 42,212,106,181,125, 40,165,181,142, 66, 47, 40, 40, 72,218,185,115,103,210,235,175,191,222, 54, 61, 61, 61, 10,128,
-175,213,106,117, 55, 26,141, 78, 54,155, 77,237,236,236,236, 17, 29, 29,173,153, 60,121,178,107,108,108,108,100, 70, 70,134, 30,
- 64,170,163,247,224,127,129,154,188,200, 19,112,240, 49,227, 24, 80,217, 7,235,113, 13, 25, 83, 33, 68,170,254,173,138, 5,248,
-104,203,238, 45,229,210,192, 16,184,132,183,132, 82, 46,135, 66, 38,133,194,213, 29,229, 60,143,245,247,115, 12,101,148, 58,254,
- 1,249, 87,240,127,203, 92,241, 60,143,117,235,214,149, 47, 92,184,176, 56, 39, 39,103,242,233,211,167, 91,198,198,198, 94,175,
-179, 2, 12,131,146,146, 18,236,218,181,203,184,105,211,166,123, 70,163,177,181, 68, 34,177,154,205,102,108,223,190,189,124,213,
-170, 85, 41, 6,131,161,173, 88, 44,182,212,167,249,173,178, 15,150, 88, 44,182,150,151,151,183,254,225,135, 31,146, 14, 30, 60,
-104,116,118,118,134, 88, 44,182, 26, 12,134,230, 91,183,110,189,243,195, 15, 63, 24,157,157,157,235,101,220,120,158,175, 54,131,
-197,113, 28,100, 50, 89,189,250, 96,197,198,198,126,103,177, 88,218,109,223,190, 61, 99,227,198,141,229,206,206,206, 0, 0,171,
-213,218,118,203,150, 45, 25,107,215,174, 53,213,167,131, 59, 0,152,205,102,112, 28,135,173, 91,183,154,118,236,216,145, 97,179,
-217,218, 86,150,109,220,184,177,124,235,214,173, 25, 22,139,165, 93,108,108,236,119,117,105,113, 28,199, 21, 23, 23, 67, 36, 18,
-225,222,189,123, 38,153, 76, 6,150,101,145,152,152,248,192, 96,121,121,186, 71,118,108, 27, 21,190, 98,237,174, 83, 42,153, 76,
-214,167, 91,155,136,184,196,212, 12, 74, 73, 74,189, 2,255, 95,193, 2, 37, 8, 20,137,233, 38, 39,185,216, 74,144,179, 7,144,
-184, 85, 24, 44,251,230,215,192, 31,177,241, 6, 39, 16, 72, 97,182,122,213,169,105,165, 42, 16, 40,111,166,194, 73, 36, 81,144,
-156,156,156, 7,153,166, 74, 67,212,168, 73, 4,174, 36,234,213, 32, 84, 6,192,225,169, 68, 40,165, 3,212,106,181, 40, 59, 59,
-251,129,214, 3,205, 70,141, 88,171,213,218,199,225,186,107, 57, 95,240,252, 27, 9,105,229,126,251,254, 52,134,188,243,209, 70,
-133,130, 45, 2, 82, 86,163, 89,136, 15,102,140,105, 41,157,187, 94,219, 44, 54,206,208, 24,132, 78, 70, 51,189,195,191, 46, 26,
- 53,106,212, 73,169, 84, 30,218,183,111,159, 82,165, 82,225,222,189,123,104,209,162, 5, 22, 44, 88,160, 84, 42,149,191, 6, 6,
- 6,118,115, 56, 78, 0,231,239,208, 84,125, 41, 23, 51,107, 93,122,206,245,251,156,221, 88, 49,118,115,165,213, 81, 76,248,240,
-231,226,162,146,242,231,207,221,176,158,112, 84,147, 82,122, 85,167,211,245,254,240,195, 15, 11,242,243,243,255,102,174, 82, 83,
- 83, 43,141, 64, 55, 74,105,189,127,244, 62,101, 84,176,119, 94, 15, 3,208, 4, 64, 75, 74,169, 13, 64, 41,165,244,177, 82,215,
-145,145,145,173, 3, 3, 3,241,205, 55,223, 96,253,250,245, 69, 43, 86,172, 0,165, 20, 33, 33, 33,206,143,171,153,155,155,123,
-241,206,157, 59,125, 90,182,108,121,123,205,154, 53, 25,190,190,190,252,196,137, 19, 49,126,252,120,104, 52, 26,110,245,234,213,
-105,157, 59,119,190,153,148,148,212,171,172,172,236, 70, 93,122,148, 82,154,159,159,127,118,195,134, 13, 23,123,246,236,233, 52,
-118,236, 88,239,245,235,215,251,196,199,199, 55, 52, 24, 12, 13,242,242,242, 84,167, 79,159,150,109,217,178,197, 39, 46, 46,238,
-190,209,104,188, 72,255,149, 11, 2,255,151, 81,155, 23, 1,160,173, 48, 58,230,135,254,106,235,120,206,209,115,171,125,236,192,
-113, 53, 82,231,136,155,157,247,232,217,209, 77,200,178, 5, 27,215,189, 59,186,121,184, 34,168, 81, 4, 56,125, 49,110,228,228,
- 96, 75,182,206, 96,165,244,203, 93,247,232,239,117,233, 60, 76,165,193, 98, 89, 22, 71,142, 28,225,182,111,223,110,161,148,126,
- 91, 82, 82,242, 65, 92, 92, 92,153,163, 58, 60,207,179,227,198,141,211, 23, 21, 21,237,201,206,206,158,156,148,148,100,238,220,
-185, 51,251,210, 75, 47,233, 11, 11, 11, 15, 16, 66, 38, 94,186,116,201,212,169, 83, 39,212,231,125, 76, 8,129, 68, 34, 1, 33,
- 4,177,177,177,247, 35, 35, 35,155,157, 63,127,254,171,132,132,132, 23, 41,165,236,229,203,151,211,163,163,163, 91,156, 61,123,
-118, 77,124,124,252, 40,158,231, 29,154,115,133, 16,242, 32, 59, 86,213, 72, 49, 12,243,192,212,213,199, 96, 1,192,229,203,151,
-111, 69, 70, 70, 70, 92,188,120,113,243,164, 73,147,250, 0, 80,198,198,198,222,110,222,188,121,248,249,243,231, 55,191,250,234,
-171,125, 97,111,243,119, 8,139,197,130, 33, 67,134, 24,116, 58,221,225,210,210,210, 49, 55,110,220, 48, 68, 71, 71, 87,150, 29,
- 41, 46, 46, 30, 83,143,215,104,254, 23, 95,124,241, 17, 0,240, 60,191,121,229,202,149, 19,102,206,156,169,201,204,204,124, 96,
-176,242,242, 11, 79,116,120,110, 26, 87, 80,172, 51,111, 92, 57,235, 5,133, 92, 38,253, 96,233,198,147, 86, 22,231,107, 85,254,
- 95, 69,202,149,128, 50, 89, 47,244,112,147,173,254,114,131,100,236,160,198,242,168,240, 64,187,185,146,184, 33, 54,174, 24, 31,
-125,182,139,255,116,138, 38, 25, 60,210,193,225, 78,157,154,106, 81, 9,202,173,121, 19,250, 72,100, 75,190,157, 30,220,113,192,
-187,178,136,168,103, 30, 24,161,248, 91,151,176,114,209, 52,254,211,201,238,201,224, 73, 22,108,112, 40, 75, 0, 0, 54,155,237,
-133,165, 75,151, 30, 30, 59,118,172,170, 89,179,102, 15, 52,239,223,191,143, 79, 63,253,212,104, 50,153,158,119, 76,137, 16, 48,
-145,173, 56,142,243,250,254,104, 65,211,183,223,156,172, 84, 48,133, 64,242,114,187,121, 17,187,160, 85,148, 39, 62,122,211, 71,
- 60, 99,201,207,145,103,190, 10,214,195, 42,137, 0,144,229,136,186, 72, 36, 58,184,120,241, 98,165, 66,161, 64, 98, 98, 34, 20,
- 10, 5,228,114, 57,162,163,163,177,106,213, 42,229,235,175,191,126,168, 91,183,110,234,147, 39, 79,218, 28,173,251,249, 59, 52,
-181,125, 24,137,153,245,117,210,185,101,111,185,250,180, 8,243, 68,126, 41, 48, 97,222, 47, 69,133, 37,198,225,245, 49, 87,149,
- 80, 74,175, 18, 66,122, 79,159, 62,253,232,166, 77,155, 60, 34, 34, 34,144,158,158,142,145, 35, 71, 22,104,181,218,238,255, 1,
-230, 10, 0,202, 0, 52, 0,144, 0,123, 95,164,187,132, 16, 41,158, 96,121,182,184,184,184, 43,169,169,169,190,227,199,143, 71,
- 73, 73,137,219,136, 17, 35,112,239,222, 61, 36, 36, 36, 92,125,146, 64,141, 70, 99, 44, 33,164,249,219,111,191, 61,122,214,172,
- 89, 29,157,156,156, 26, 81, 74,105, 73, 73, 73, 50,199,113,103, 0,108,167,212,241,117, 56, 43, 12,211, 93, 66, 72,114, 82, 82,
-146,247,230,205,155, 93, 97,191, 7, 0, 96, 4,160, 3,144,251,184,166,240,127,152,216,127,211,185,143, 15,165,212,161,237,133,
- 70,232, 56,182, 49, 57,245, 82, 48, 74, 71, 5, 67, 63,182, 9, 57,243,124, 99,116,173,237, 28, 0, 81,213,149,183,110,221,154,
-218,108, 54,122,244,232, 81,218,175, 95,191,178, 78,157, 58,157,137,142,142, 14,113, 36,142,135, 53,187,117,235,118,184, 77,155,
- 54,195, 31, 46,123,230,153,103, 70, 84, 45,235,218,181,235,173,174, 93,187,234,186,116,233,114,207,145, 56,187,116,233, 18,223,
-177, 99,199,178, 46, 93,186,196, 87, 45,111,219,182,237,224, 30, 61,122, 28,172, 90,246,204, 51,207, 12,122,184,172,166,186,247,
-234,213, 43, 61, 33, 33,129,166,165,165,209,254,253,251,103, 85,150,247,236,217, 51,253,218,181,107, 52, 33, 33,129,246,237,219,
- 55,171,186,115,107,210,172,186,181,105,211,102, 98,231,206,157,207, 62, 20,243,132,135,203,106,211,236,220,185,243,217,182,109,
-219, 78,120,184,172, 77,155, 54, 19, 31,231, 53,170,186,249,250,250,134,182,106,213, 42,111,229,202,149, 52, 56, 56, 56,175,234,
-115,205,186,141,251,176,184, 68, 95, 50,115,254, 55, 59, 53, 17, 67,154,215,183,238,245,221,254,107, 53,111, 71, 72,232,159, 17,
- 29,233,233,136,131,241, 91, 3,111,143,233,173, 50, 93,222,222,151,210,248,119,233,249, 93,227,105, 76,132,148,251,243,171,128,
- 4,122, 58,252, 16,253, 35,180, 11, 61,212, 88,234,144,230,233, 38,157,233,233,240, 67,113,155, 3,111, 15,233,162, 49,111,223,
-186,142,222,189,123,151, 30,216,187,157,182,143, 80, 86,104, 70, 28,165,167, 35,186, 59,164, 89,101,107,221,186,117,199,152,152,
- 24,253,206,157, 59,105, 98, 98, 34,253,237,183,223,104,135, 14, 29, 12,173, 90,181,234,238,120,221, 65,232,169,200, 33,182,223,
-195,206,204, 25,169, 46,158,208, 71,110, 26,217, 93,106, 30, 28, 35,177,244,110, 45,177,117,140, 16,113, 45,130, 25, 62, 34, 0,
-180,119,180,194, 68, 79,135,253, 65,207, 68,244,113, 52,206,144,144,144,180,160,160, 32, 90,211, 22, 26, 26,170,237,218,181,171,
-232,113, 94,247,118,161, 8,236,213, 86,150,125,252,219,238,116, 96, 23,167,130,246, 81,162, 30, 79,250, 94, 2,208,202,211,211,
- 51,127,211,166, 77,212,219,219, 91, 11,160,217,127,196,251,211, 94,230, 14, 96, 48, 0, 77,197,190, 26,246,249,135,130,159, 64,
-179, 67,239,222,189,173, 87,174, 92,161,247,238,221,163,135, 15, 31,166, 29, 59,118,180, 1,232,246,184,154,255,138,186, 11,154,
-194, 86,185,145,138, 27,245, 47,129, 16, 18, 69,171,233,108, 24, 29, 29, 77,251,244,233, 99, 60,117,234,148,222,108, 54,191,118,
-233,210,165, 3, 79,170,249,175,136,243, 95,161,217,163, 71,143,179, 12,195, 4, 87, 12, 1,206, 58,118,236, 88,107, 0,232,222,
-189,251, 89,150,101,131, 1,128, 82,154,117,252,248,241,214,255,206, 56,255,149,154,126,126,126,161, 12,195, 28, 1, 96,202,200,
-200,120, 48,218,201,171,217,224, 24,119, 55,151,238,197,197,186,171, 57, 55,247, 31,250,119,199,249, 31,173,121,184,137, 20, 78,
-210, 54,224, 48,251,230, 61, 67,163, 15, 54,228, 55, 30,208,187,131,120,243,174,211,252,178,169, 94, 73, 29, 34, 85,247, 65,248,
- 79,193,153, 46,162,107,138,201, 97, 77, 37,121, 6, 16,207,190,150,100, 8,156,249,117, 81,211, 94, 3, 39,176, 63,239, 94,199,
-127, 54,213, 35,169, 67,164, 58, 13,192,167,224, 13,231, 28,214,172, 66,116,116,116, 71,153, 76,118,104,212,168, 81,234, 29, 59,
-118, 24,203,203,203, 7, 92,185,114,165,214,236,247, 35,154,231,194, 27,194, 70, 22, 1, 52,160,182,243,236, 48,119, 97,227, 23,
-160,123,124, 90,125,226,124, 28, 28,209,108, 31, 70, 2, 85, 78,178, 95, 12, 38,219,116, 71, 50, 87,142,104, 18, 66, 90,185,185,
-185,109, 43, 42, 42, 26, 65, 29,200, 92,253,127,214,157, 16,162,129,125, 34, 70, 17,236,211, 22,220,162,117,244, 97,114, 64,179,
- 19,203,178,239, 53,110,220,184,197,189,123,247,110,114, 28,247, 25,165,244,228,147,104, 62, 9,130,230,255,251,100,163,255, 85,
-252, 91, 12, 86,231,206,157, 47,115, 28,119, 88, 34,145, 44, 58,121,242,228, 35, 31,212,143,163,249, 36, 8,154,130,230,127,165,
-102, 21,147,117, 57,161, 44,120,201,247,133,129,239,140,112, 75,171,203, 92,213,169, 89, 97,178, 46,222, 49, 4,125,186,189, 52,
-112,198, 8,117, 90, 93,230,170, 86,205, 42, 68, 71, 71,119,148,203,229, 91,140, 70,227,196,186,204, 85,181,154,241,145, 18, 20,
- 89, 27,192,198, 70,129, 65,205, 75,237,240,212, 0, 49,123, 19,217,200,197, 11,113,150,250,198, 89, 95, 4, 77, 65, 83,208, 20,
-120,152,127,203,172,199,127,252,241, 71,244,191,227,186, 2, 2,255, 40,250, 38,153,113,184,201, 37, 56, 73,151, 70,135, 42,166,
-237, 89,164, 48,128, 39, 25, 32,252,170,218,204,149, 3,154, 23,161,180, 46,125, 38, 84, 49,125,239, 34,133, 1, 64, 14, 40, 86,
-214,102,174, 28,229,242,229,203,127, 2, 8,126,108,129,240, 56, 11,128,251, 0, 73,193, 39,181,204,142, 61, 15, 20,248, 23,254,
-122, 20, 16, 16, 16,168,131,255,184,101, 37, 4, 4, 4,234, 65,223, 36, 51,226, 35, 99, 81,192,206, 4,135, 96,200,108,169, 40,
-182,229,160,111,138,249, 9, 53, 47,160,128,188, 5, 30,161,144,218,146, 80,108,126, 50,205,167, 14,165,118, 19, 37, 32, 32, 32,
-240,159,137, 96,176, 4, 4,254,219,177,103,117, 50, 42,182,255, 92, 77, 1, 1, 1,129,255, 33, 8,128,168,234,158,168, 79,219,
- 42, 33,164, 90,141,218,112,160,243,166,160, 41,104, 10,154,130,166,160, 41,104, 10,154,255, 48,205,186,180,255, 41,125,187,254,
- 45,157,220, 5, 77, 65, 83,208, 20, 52, 5, 77, 65, 83,208, 20, 52,255,201, 8, 11,233, 10, 8, 8, 8, 8, 8, 8, 8, 60,101,
-254,173,125,176,148,158,161,190, 16, 49, 45, 8, 79,195, 1,128, 50, 36, 30, 54,254,186, 33, 63,193,225,245,169,106,130,120, 55,
- 87,170,197,236,118,189,149,123,137,230,222, 48, 60,121,180,246, 57, 88, 0, 4, 2, 72,165,148,158,121, 26,154, 2, 2, 2, 2,
- 2, 2, 2,255, 60,106, 52, 88,161, 29,134,254,161, 82,168,154, 2, 0, 79, 41, 56, 30, 40,183,246,204, 32, 0, 0, 32, 0, 73,
- 68, 65, 84, 41,202, 59,151,122,253,183,161, 0,224,215,172,231, 94,169,202, 51,134,231, 41,120, 74, 97,227, 41,108, 38,227, 93,
-109,220, 65,135, 86,158, 87,123,133, 13,237,213,187,215,176, 1, 3,158, 11,107, 30,213,188, 9, 0,220,184,121, 35,233,151, 95,
- 14,222, 81,123,133,237,209,231,221,217,251, 36, 21, 83,139,197, 31,182,125,166, 93,159,216,216, 11,115, 1,188,255, 36, 90, 85,
-144,208, 51,253,183,146, 78,191,246,124, 74,122, 2, 2, 2, 2, 2, 2, 2,255, 64,106, 52, 88, 42,133,170,233,137,253, 27,188,
-246,254,145, 14, 0,232, 21,237,131, 79, 62,223, 52,132, 16,114, 7, 0,158,127,253,243,208, 15,222, 30,131,179,183,180,160,148,
-162, 85, 83,119, 12,121,249,117,135, 46,170,240,137,108, 59,226,197, 23, 95,154, 57,115,198,160,187,119,239,166,236,216,177,227,
- 15, 0,232,220,165, 75,211,197,139, 23,191,184,220,205, 93,166,240,137,204, 52,230,196, 61,214,250, 65,106,159, 38,158, 17,205,
-218, 76,216,254,221,103,162, 30,253, 71,142, 87,251, 52, 89,169,207, 73,202,127, 28, 45, 89, 64,179, 96, 23,177,228, 19,194, 48,
- 34, 23,175, 32, 47, 0,112, 11,104,245,139, 95,179,126,156, 92,174,184, 81,102, 52,110,201,187,125,120, 61,253, 87,118,102, 19,
- 16, 16, 16, 16, 16, 16,248,175,162,214, 38, 66,181, 92,132, 59,247,237,173,117,174, 74, 96,210,171,207, 35, 55, 55, 39,212, 98,
-227, 49,122,196, 80, 92,185,147,141,132,251, 90, 80, 10,132,250, 59,188,150, 48, 88,240,109,198,141, 31,215,245,200,209,163, 23,
- 63,252,224,195,173,132,224, 28, 0,172,251,246,187,152,143,230,125, 52,113,244,171,163,159,221,189,123,247, 45, 60,230, 2,141,
-140,196,117,229,167,139, 62, 81,103,230,151,151,191, 57,227, 93,118,230,219,111, 45, 7,240,106,125,117,100, 1,205,130, 35, 2,
-252, 23,253,113,116,183, 82,169, 84, 98,253,250,245, 50, 96, 63, 62,158, 57, 78,254,220,128, 1,224,192,118,248,236,171, 29, 45,
-142, 74,165,227, 61, 67,159, 29,154,159,240,219, 19, 55,109, 10, 8, 8, 8, 8, 8, 8,252,247, 83,107, 39,119,142,167,136, 79,
-206, 65,124,114, 14, 46,196,107, 97,230, 68, 88,190,240, 61, 44,253,120, 22, 10, 12,192,190, 63,211,113,231,126, 14,238,220,207,
- 65, 65,177, 30, 15, 79,251,247,240, 8,131,207,223, 82,182, 94, 53,203,229,179,190,109, 84,221,220,221,220,220, 18, 47,110, 45,
-251,232,229,220,136, 79, 94, 76,151,136,229,222, 25,110,222, 13, 59,236,218,189, 59,210, 91,227,165,114,118,118,153,229, 30,222,
-123,131,107, 80, 55,151,218, 52, 31, 70,237,211,172,235,192,231,250, 63,231,227,227,205,189,182,234, 82,124, 84,120,168, 45, 36,
- 52,188,155,218, 39,172,107, 77,231, 84,167, 41, 11,104, 22,220,196,215,123,209,169,195,187,149,229,229,229,184,121,243, 38, 10,
- 10, 10,236, 79, 18, 2,134, 97,209,176,129, 47,214, 44,153,161,252,248,189, 41,209, 50,185,114, 63, 33,132,212,166,249,164, 8,
-154,130,166,160, 41,104, 10,154,130,230, 63, 85,243,159, 6, 3, 0,132,144,106,155,183,146,210, 11,112, 39, 57, 27,173,195, 27,
-160, 73,144, 15, 46, 38, 22, 97,251,137,116,108, 60,154,130, 19,215,181,224,197, 78,200, 41, 37,184,155,154,139,132,148,252, 58,
-167, 85,102,165,226, 17,211,151,233,102, 70, 6,151,180, 63,185,115, 26,252,212,137,145,239,125, 94, 60,141,149,138, 71,120,249,
-184,238,152,249,214,228,151,157,148, 10,169,217,100, 70,163,160, 0,249,148,137,227,198, 74,212,170, 29,142, 86, 70,163,137, 84,
- 73, 21,170,173,139, 62,154, 33, 95,177, 55, 49,173,204, 76,203,118,159,205,186, 55,115,246, 71, 37,172, 88,241,173, 70, 19,169,
-114, 68, 71, 22,208, 44, 56,208,195, 99,209,153, 35,187,149, 22,139, 9, 89, 89, 89, 48,155,205,176,217,108, 15,142,161, 0, 74,
-141, 54, 36,103, 27,209,181, 75, 71,182,117,171,102,225,154,240,126,175, 57, 26,171,128,128,128,128,128,128,192, 95,212,228, 69,
-254, 91,169, 49,131, 85,102, 44,187,251,202,107, 51,243,154, 58,101,155,135,118,143, 0, 40,160,205, 78, 65,220,197, 35, 72,188,
-124, 20,165,218, 52, 80, 10, 4, 5, 53,132,196,152,108, 94,183,246,235, 60,222, 86,126,183, 38,189,193,189,253,252,239,102,170,
-152,101, 51, 27,158, 75, 76,200,246,156, 58,115, 19, 18, 19,178, 61,151,205,108,120,238,110,166,138, 81, 74,184, 14,175,142, 28,
- 76, 6, 15,232,139,247,222,155,137,193, 3,250, 98,230,228, 23,137, 92, 42,110,239,104,101,202,165,242,165,179, 63,156,239,148,
- 83,108, 49, 95, 72, 40, 49,169,149, 74,217,159,241,101, 6, 19, 85, 88, 6,141,152,164, 53, 73, 68,243,235,210,144, 5, 52, 11,
-246,117,118, 94,116,246,216, 79, 74, 74, 41, 50, 50, 50, 96,177, 88, 96,181, 90, 97,181, 90, 31, 28, 87,172,183, 34, 77,107, 68,
-106,158, 1, 55, 83, 74,208,175,111, 95,165, 72, 44,125,217,209, 88, 5, 4, 4, 4, 4, 4, 4,254,185,212,104,176, 18,206,238,
-237,124,249,216, 86,239,252,220, 92,157, 74, 38,130,136, 97,144,151,113, 15, 91, 62,127, 11,187,191,156,129,226,236,187,160, 20,
- 80, 72, 88,152,244, 5,186,236,171,187,188,243,107, 25, 65, 72, 96,125,246,171,109,247, 27,165,100, 83,151,237,135,245, 98, 0,
-216,126, 88, 47, 78,201,166, 46, 95,109,187,223, 72, 74,181,224, 57, 14, 3, 6, 63,143,173,155,215, 35,166,199, 96,236, 62,157,
- 6,131,209,226,208,250,103,114,239,208, 32, 47, 31,159,231,167,143,238,233,244, 76,168,155, 58, 36,192,149,101,197, 18,155, 84,
- 44,227,127,190,164,203,236, 51, 96, 40,163, 84, 57,247,149,123,135, 6,213,166,227, 34,150,124,242,231,209,159,148, 44,203, 34,
- 45, 45, 13, 22,139, 5,102,179, 25, 38,147,233, 65, 6,171,196, 96, 69,102,129, 17,233, 90, 3,210,180, 6,220, 78, 43,129, 84,
-229, 6,171,213, 90,239, 25,111, 5, 4, 4, 4, 4, 4, 4,254,121, 56, 52,209,104, 86, 94, 33,220,157, 88,104,252, 26,225,165,
-183,150, 3, 0, 56,222, 6, 10,251,244, 12,142,228,244, 40,196,191,189, 49,186, 81,114,144, 47,209,189,220, 79,105, 4,128,151,
-251, 41,141, 65,190, 68,247,198,232, 70,201, 6,206,205,194,113, 28,206,220,202,195,178, 31,111,227,195, 77,215,113,228,146,227,
-125,198, 69, 98,197,244, 79,151, 44, 86,138, 88, 66,110,165,150,234,179, 11,109,122,137, 68,108, 17, 75, 69, 86,189,153, 24, 83,
-180, 92, 65,223,225, 83,239,179,172,120,106,157,177, 82, 30,148, 82,152, 76, 38,152,205,230, 7, 91,101, 6,171, 80,111, 65, 86,
- 65, 57,210,180, 70,164, 87,108,185, 69, 70, 8, 3, 9, 5, 4, 4, 4, 4, 4, 4,128, 42, 6,139, 16, 66,171,107,255,228, 1,
- 36,166,104, 33, 19,241,240,111,216,228,175,142,236, 20,160, 20,176,218,120,135, 46,180,255,104, 86, 70,112,131, 50, 58,107,121,
- 90, 76, 84,184,199,245, 41,163, 2,226,163,194, 61,174,207, 90,158, 22, 19,220,160,140, 90,121, 41, 71, 41, 5,229, 41, 40,165,
-160, 20,224,121,199, 13, 11, 33,108,251, 86,225,129,162, 79,118,220, 77,157,250,117, 66, 60, 17,137,172, 82,169,212,230,237,162,
- 32,254,158, 10, 81,169, 9,229, 97, 81,173,173, 4,104, 93,155,142,206,106,153,215,177,207,112,131,197, 98, 67, 64, 64, 0,204,
-102,243,131, 38,194,202, 12, 86,177,222,130,204,194,114,164,107,141, 72,211, 26, 97, 44,231,112, 35, 62, 5,132, 97,133, 78,127,
- 2, 2, 2, 2, 2, 2,143, 73, 77, 94,228,191, 17, 6, 0, 40,165,164,114,171,238,160,192, 0,111, 92,184,153,138,134,222, 50,
- 56,187, 56, 33, 62, 41, 3, 12, 43, 2,203, 16,216, 56,199,239, 3, 53, 91,127, 92, 49,203,101,121, 90, 54,119,254,235,109,247,
-238,166,101,115,231, 87,204,114, 89, 78,205,214, 31,237,113,216, 39, 53,229,171,252,117, 88,155,242, 94,158, 46, 50, 81,108,146,
-190,144,176, 34,147, 68, 44, 50,249,122,200,136,175,167, 66, 20,224,161,144,170,228, 98,198,215,219,155, 7,165,222,181,233,152,
-210,111, 37,231,148,148,204,237,220,251,121,131, 88, 44, 70,112,112,240,131, 12, 86,165,193,178,103,176,140, 72,211, 26,144, 83,
- 88, 14,133,140,193,181,115,199, 13, 28,103,221,226,120,196, 2, 2, 2, 2, 2, 2, 2,149,212,229, 69,254,219,168,123,169, 28,
- 74,161, 82, 42,192, 51,114,156,185,148,132,240,136, 22,216,116,224, 34,154, 68,181, 67,118,169, 13,180, 30,203, 25,206, 88,109,
-184, 2,224,202,224,222,126,254, 67,251, 53,120,150, 66,252,219, 87, 59,116, 25, 0,176, 33,102,104,133,177,178,103,174,120,106,
-159, 38,194, 81, 8,144,149,150, 87,166,110,228,163,194,237,116,179,201, 73, 41,183,185, 42, 37, 34,141,139,148,117, 86,136, 68,
- 34, 9,195, 20, 23,107, 75, 1,146, 85,151,150, 41,253, 86,178, 44,160,217,220, 46,253, 70, 46,250,227,240, 78,101,227,198,141,
-113,237,218,181, 7, 77,132,134,114, 27, 72,169, 5, 98, 5, 69, 72, 3, 53,226,175,252,193, 21,228,101,198, 21, 37, 28, 94,239,
-112,192, 2, 2, 2, 2, 2, 2, 2,255, 88, 28,114, 71, 60, 79,161,241,116,131, 76,237,130,100,173, 25,122,104,160, 51, 18,240,
- 28,192,217,106, 54, 65,132,144,106, 59,125,239, 63,154,149,177,239,168,118,195,254,163, 89, 25, 85,203,237, 77,131,246,230, 65,
- 74,105,181, 77,132, 53,105, 82,202, 29,250,229,183, 51,133, 67,218,123,185, 50, 98,177, 81, 42, 99, 45, 10,185,216,170,148,137,
-224,229, 34,145,250,187, 73,100, 39, 15,254,192, 16,158,158,112, 68,211,148,126, 43,249,126, 94,222,220, 30, 3, 70, 25,188,125,
-124, 48,122,244,104, 52,108,216, 16, 0,224,174, 98, 16,232,198, 64,100,202,193,169, 3, 27,202,226, 47,255,126, 25,156,105,104,
-213,217,220,107,138,243, 73, 16, 52, 5, 77, 65, 83,208, 20, 52, 5,205,127,170,230, 63, 13,135, 22,123,110,236,171, 66,211, 6,
- 42,148,155,189, 97, 52,115, 40, 51,217, 80,106,176, 66,103,176, 34, 37,199,128,132,147, 79, 30, 8,133,221, 84,129, 18,240,148,
- 2,196,222, 76,232,104,162,176, 76, 92,178,252,211,197,159,140,220,185,107, 47,125,179,191,175,255,133,187,198,116, 25, 43, 54,
- 43,101,140,200, 89,193,112,247,147,239,103, 29,253,229,135,102, 6,185, 97,140,163, 49, 85,102,178,194, 90,247,248, 4, 20, 34,
-179, 81,167,154,221, 49, 18, 71, 14, 31, 52, 74,207, 92,182, 18,145,244, 38,207, 89,182, 21, 37, 8, 75,229, 8, 8, 8, 8, 8,
- 8, 8,252, 69,157, 6,203, 96, 52,220,125,118,216,132,138, 5,159, 41, 56,206,158, 89,226, 42,155,242,120, 10,206, 98,172,113,
-254, 43, 71,225,120,254,226, 55,155,126,236,223,178, 85, 59, 54, 50,208, 9, 37,197,249,184,116,225,156,141,242,252, 57, 71,206,
-167, 41, 41, 38,181,119,248,139,195,159, 31,242,195,248,201,111,234, 59,119,237,174,244,240,112,182,229,231, 21,148,108, 89,191,
-179,104,239,206,239,155, 17,158,127,133,166,164,152,234, 19,151, 41,253, 86, 50,128,151, 1,128, 16,210, 3,136,236, 90,150,117,
-125,160,158, 62,154, 9, 19, 16, 16, 16, 16, 16, 16, 16, 0, 28, 48, 88,137,231,246,214, 56,183,213,211,164,176, 48,119,244,182,
- 31,246, 44,252,126,231,129,142, 38,139,165, 1, 15, 54,157,179, 90, 79,201, 74, 11, 62,114, 84, 67,159, 27, 31, 71,130,130,218,
-124,247,229,242,183,191,253,106, 69, 79,240, 92, 19, 16,114,159,240,244,132, 94,110, 24, 79, 51,235,103,174,170, 33,159,116,250,
-181, 55,128,199, 90, 56, 90, 64, 64, 64, 64, 64, 64,224,127, 3,135,154, 8,255, 63, 40, 76,186, 80, 10,224,205, 39,213,169,200,
- 80, 45,169,216,158, 42, 21,107, 47, 9, 83, 49, 8, 8, 8, 8, 8, 8, 8,212,138,227, 67, 0, 5, 4, 4, 4, 4, 4, 4, 4,
- 4, 28,130, 0,168, 97, 84,158,227, 43,101, 63,206,104,130,186,244, 5, 77, 65, 83,208, 20, 52, 5, 77, 65, 83,208,252,231,105,
-214,165, 93, 31,255,241,159, 12,249, 87, 14,126, 35,132, 68, 61,237, 27, 37,104, 10,154,130,166,160, 41,104, 10,154,130,230, 63,
- 79,243,159,134,208, 68, 40, 32, 32, 32, 32,240, 63,135,103,232, 32,181,103,232, 32,181,163,199,107, 34,135,123,107, 34,135,215,
-186, 18,136,128, 64, 85,254, 99, 58,185,255, 55, 67, 8,145, 1,224, 41,165,150,127, 87, 12,110,110,193,206, 54, 39,207,189, 12,
-111,250, 84,151,126,253,183,167,169, 77, 8,145, 69, 70, 70,182, 2,128,184,184,184,171,148,210, 39, 29,141, 9,149,119,216, 40,
- 55,103,215,215, 44,188,153, 51,148, 25,190,209,231, 36,236,126,242, 72,255, 66,163,137, 84,153,101,138,101, 32,180, 31, 40, 24,
-202,144,227,108,137,245,157,226,226,107,186,218,206,107, 56,120, 73,248,248, 23,158,251, 96,195,238,131, 11,211,246,207,137,127,
-248,121,247,126,107,156,222, 28,221,115,214,151, 63,254,242,105,254,129, 89,250,167, 25,243,255, 10, 13, 59,189,228,106, 19,249,
-176, 89, 39,151, 23,212,231, 60,255,176,152, 91, 98,177, 88, 99,177, 88,242, 50, 19,206, 59,212,108, 17, 16,222,225, 10,203, 50,
-126,156,141,207, 72,191,115,182,205,227, 69,252,191,133,210, 47,188, 21,225,184,247, 40,207,137,121,176, 43,203,181,137,103,158,
- 68,207,207,207, 79,225,226,226,210,197,217,217, 57, 64,169, 84,202,139,138,138,140, 69, 69, 69,105,169,169,169, 39, 40,165,182,
-167, 21,119,125,208, 52, 27, 50, 71, 36,101,230, 85, 60,254, 68,123,107, 95,173,131,162, 52,205, 6, 47, 36, 12,153, 83,241,120,
-137,246,214,254, 15,254, 63,226,172, 11,239,230,195,218,129,242,111, 51, 12,219,129,163,182,197,121, 55,246,127, 93,159,243, 99,
- 98, 98,134, 88,173, 86, 89,229,190, 88, 44, 54,157, 59,119,110,223,211,143,244,127,147,122, 27, 44,255,200,225,110, 86, 17,253,
- 88,196, 50,207,243,148, 58,101, 95,221,165,250, 87, 4,246,180, 8,108,247,202, 37,134, 97,252,171,150,241, 60,159,145,122, 97,
-235, 83,249,176, 37,132,248,127, 62, 61,250,189,220, 2, 99, 9, 33,100, 65, 77,230,195,187,213,168,179,132, 33,193,132, 16, 48,
- 4, 96, 25, 2, 0, 89,105, 23,182, 61,178,248, 52, 33,196,215, 89, 37, 10, 45, 41,179,221,164,148,214,249, 37,164,240, 8,241,
- 83,121, 52, 56,213,109,232,180, 70,151,142,108,138, 80,123,135,247,212,231,198,199, 61,133,186,105,154, 52,105,210, 54, 52, 52,
-212, 99,218,180,105, 18, 0, 88,185,114,101,211,166, 77,155, 22, 36, 37, 37,197, 82, 74,181,143,163,171,242, 10, 31,189,122,249,
-252,173,253,250,245, 67,150,182, 12,203, 86,126,221, 77,237, 19, 58,252,105,153, 44,226, 23,173,112, 85, 41,111,190,254,246, 71,
-254,253,187,183, 21, 21,235,173,248,245,196,249,209,187, 55, 46,235,225,234,218,178,121,109, 38,139, 55, 20,127,224,237, 68,251,
-242,134, 98, 0, 24,245,240,243, 13,212,214, 94,238, 74,244,243,149,137,174, 1,216, 83, 87, 44,126,109, 95, 61, 34,150, 72, 2,
- 9, 97,236,175, 59, 75,192, 84,188, 7,108, 86,115,234,221, 63, 54,246,121,162,202, 62, 37,188,163, 71,231, 16, 16, 15,166, 34,
- 62, 66, 0,134, 97, 32, 34, 0, 40, 45,185,119,118,147,199,147, 94,131, 16,226, 18,213,212,181,217,115, 29, 59,109, 56,149, 92,
-168,110,216,245,237,131,132, 50, 95,167,158,254,252,154, 35,231,203,229,114,183,159,127,254, 89,211,183,111, 95, 23,239,168, 33,
-167, 28, 57, 71, 45,149, 71,254,242,203, 1, 73,223,190,142,223,102,149, 87,216,179, 96,152,109, 4, 16,243, 60, 93,201,242,116,
-167,190, 32, 33,169,190,147, 9,123, 69, 13,153, 15,130, 8,135, 79,160,184,157,119,115,159,195,211,210, 84,133, 16,194, 42,188,
-194,198, 40,228,242,153, 77, 67,195, 67, 83,238,223, 75, 40, 41,209,173, 48,230, 37,108,160,148,242,245,210,178,113,211,143,158,
- 56,251,130, 72, 44, 38,125,186,183, 85, 17, 66,250,212, 87,163, 42,222,222,222, 67,214,172, 89,211, 56, 38, 38, 6, 0, 96,179,
-217,156,119,237,218,229,179, 96,193, 2, 21, 28,248, 31,170,142, 6, 13, 26, 52,112,113,113,105,168, 80, 40, 26, 0,128,209,104,
-204,212,233,116,105,153,153,153,153,117,157,235,211,106,184, 39,195, 96,254,225, 61,223,138, 0,160,207,176,215, 22, 54,234,246,
-174, 27, 97,197,198,234,142,231,108,102, 21, 67,200,219,199,127,222, 68, 0,160,231,160,177,179, 53,145,195,191,212,198,237,202,
-125,156,216,159, 20, 50,124, 56,235,153,104, 25, 66, 40,121, 39,186, 77,219,246,195, 6,247, 67,100, 19, 63, 12, 25, 57,101, 38,
-128,122, 25, 44,171,213, 42,219,189,123,183, 63,195, 48,172,197, 98, 41, 31, 57,114,100,222,147,196, 22,210,233,213,179, 32, 36,
-192, 98,179,125,151,122,190,201, 66, 74,231,253,237,125, 67,134, 15,103,125,239,139,230,130, 48, 19, 41,207,167,103, 95,217,209,
-225, 73,174,247,159, 78,189, 12,150,103,232, 32, 53, 43,147,220,236,214,185,189,199,156, 41, 67,165,107,119,254, 1,191, 86, 47,
-102,102, 93,221,217,224, 95, 21,224,147,194, 48,140,255,254,237,107,188, 20, 50, 22, 0,160, 55,114, 24, 54,122, 90,157,231, 53,
-104,251,242, 73, 16,132, 85,182,161,114,156, 77, 46, 18,137,203, 9, 0, 16,251,232, 0,133, 66,122,126,195,220, 24,221,216,129,
-193,175,188,247,229,149,205, 0, 92, 1,228, 84,167, 71, 24,198,255,135,141, 43,189, 26,120,200, 33, 98, 9,244, 70, 27,134,190,
-242, 14,247,200,113,132,248,111,152, 27, 51,127,116,191,160, 17, 94,125,127, 26, 6,224, 80,109,113,170,125, 34,195,157, 60,253,
-126, 27, 54,105,190,159, 17,206,248, 96,225, 10,175,179, 71,119,255,209,107,200, 4, 75, 90, 70,134,193,102,177,222, 41, 40,204,
-158, 81,154,149,144, 88,103,165,237,215,103,213,106,117, 99,181, 90,221,178, 95,191,126,242,153, 51,103,138,187,117,235,246,224,
-249, 73,147, 38, 73, 78,158, 60,233,187,124,249,242,254,126,126,126,229,122,189,254,154, 94,175,191, 71, 41,125,164, 46, 53,225,
-227,163,121,227,249, 33, 3,209,227,249,215,193,241, 4, 19,167, 78,199,145, 67,123, 38, 3,120, 42, 6, 75,205, 50,159, 76,156,
-246,190,127,215,152,104,209,210, 93,119,225,162,148,160, 79,187, 54, 34, 25, 59,203,247,135,141,203, 87, 0, 24,247,240, 57, 13,
- 7, 47, 9,231, 13,197, 31, 68,121, 90, 70, 14,234, 16,140, 3, 63, 88, 70,250,247,154, 5, 70,233,250, 32,147,213,164,223,155,
- 78,110, 10,249,154, 6,174,172,151,140,203, 91,211,164,223,155,199,146, 14,125, 81, 90, 91, 44, 98,137, 36,112,195,151,139, 66,
-220,213, 18,176, 44,129,136, 97,192,178, 4, 38, 51,135,209, 83,230, 60,141,234, 86,124,185,134,244,103,128,177, 0,192, 3,155,
-140,121,137,191,214,231, 53, 33, 12,235,177,107,227,114,145,151,139, 20, 44, 75,192, 50,246,237,126,142, 17,111,190,251,177,203,
- 19,198,167,233,215,209,171,237,201, 47,187,246,105, 31,229,222,226,199,115,196,181,125,191, 17, 30,249,229,138, 49, 63,236, 63,
- 57,178, 97,151,119, 46, 80,202,127,150,254,199,170,163,181,233,152, 76,166,220, 62,125,251, 57, 19,145, 74,121,108,239,230, 46,
-149,139,205, 91, 57,254,175,197,225, 41, 80,249, 35,134,167,192,164, 9,227,209,167,111, 63, 3,111,227, 51,106,211,254, 27, 12,
-179,237,240,177, 51,154,114, 43,197,231,107,214,207, 47,211,229,207, 79,142,247, 72, 81,122,135,190,109,200, 77, 56,224,120,197,
- 17,145,112,118,215,208,237,191,156, 67, 84,100, 4, 56,222,190,190,106,168,191, 10, 59, 14,158, 71,120, 88,184,125,242,102,158,
- 34, 44, 64,141,174,207,189,226,176,244,223, 46, 67,186,137, 84,222,225, 59,134,140, 24,251,194,208,231, 71,194,213, 89, 13,179,
-197, 20,122,226,232,161,111,191, 89,179,172, 35, 33,100, 76,125,204, 33,207,115,210,191, 30, 91,229, 0,196, 0,204,143, 21, 28,
- 0, 63, 63, 63, 77,219,182,109, 31,236,219,108, 54, 52,106,212, 8,153,153,153, 97,245,213,242,246,246, 86,250,249,249, 61,183,
-108,217, 50,175,238,221,187,139, 53, 26, 13, 0, 64,171,213, 54,248,253,247,223, 91,183,110,221, 58, 47, 43, 43,235, 96,110,110,
-174,161, 38, 13, 43, 95, 46, 97,169,136,149,201, 20, 0, 0, 10, 48, 51,167,189,212, 66,163,209, 84,251,227,184,160,160, 80, 58,
-111,222, 71, 68, 36, 18,219,143,167,148,161, 60, 87,227, 26, 35, 29, 58,116, 24,100,177, 88,228,213, 61,151,111,211,244, 47,231,
-165, 35, 96,255, 10,129,136,101,139,178,174,238,214, 56, 86,123,192,171,197,224,222,190,140,248,155,129,131, 7, 7, 13,233,223,
- 13,190, 26, 23,156, 56,127, 7,111,205,253, 28, 86, 27,183,202, 81,157,170,176, 44, 43,202,203,203, 75,113,115,115,243,121,156,
-243,171,194, 48, 76,240,254,237, 95,120,253,254,199,165,217, 95,202,126,152,210,184,211, 88,107,229,242,119, 28, 79, 17, 38,119,
- 22,119, 25,252,172,147, 71,131, 80,197,250, 47,151,138,159,244,122,255,233,212,203, 96,177, 82,118, 65,167, 14,109, 61,230, 76,
- 31, 47, 93,176,254, 20,206, 29, 61,104,204,186,186,235,169,152, 43, 39,175,176, 24,194,138, 94, 35, 44,171, 34, 12,145,242, 28,
-159,110, 51,155, 23, 26,242, 19,178,159, 84,155,227,129,159,254,172,167, 49,167,180,233,183, 95,125,238,229,237, 42,131,209,108,
-195,184, 55, 62,196,186, 85,243,157, 52, 46, 82,152, 44, 28, 54,237,143,205,111, 81,182,130,142,237, 31,252,202,162, 13,183,246,
-124,182, 45,126, 15,236, 43,254, 84, 11, 67, 24,120,185,200,176,112,199, 29, 56, 43,197,112, 87, 75,193, 60,212, 3,174,210, 92,
-141, 29,104,215, 44, 46, 53,219, 8, 33, 82, 74,105,181, 31,110,106,223,168,206, 78, 26,255,221, 67, 39,204,215, 36,106, 9, 40,
- 53,227,158,139, 12,195, 70, 79,113,109,226,163,128, 74,206, 34, 37, 61,187,209,187,179,102,181,145,251,134,183, 45,207,142, 79,
-171,171,218, 65, 65, 65,195, 6, 12, 24,160,156, 49, 99,134, 56, 32, 32, 0,219,118, 29, 9,124,246,133, 55, 7,102,230, 20, 4,
-240, 20,240,246,114, 79, 31, 63,162,255,207,191,254,250,107,106,122,122,186,120,217,178,101,237,246,238,221, 27,137,122,252, 18,
-229, 40,133,209,204,129,227,120,112, 60,129,182,184,254, 45,142,132, 16,166,230, 95,213,116,112,239,110,207,136, 86,238,187,135,
- 82,131, 21, 10, 9,139,187,217,101,136,137,105, 43,218,185,137,116,175,238,140,241, 47, 60,247,129,183, 19,237, 59,168, 67, 48,
-188,220,148,216,248,229, 34, 28, 56,155,220, 55,183,148,192,115,208,178,215,124,101,162,103, 53, 74,201,154,110,109,154,250,244,
-140, 14,196,165, 54, 77,125, 78, 95,142, 79,104,254,226,138,105,153,122,241,177,194, 67,211,170, 53, 90, 12, 97,224,174,150, 96,
-253,145, 20,168,100, 98,168,228, 34,251, 38, 19,129, 97,158,108,193,120,133, 95,100, 0,203,115,227,157,253, 34,199,143,124,113,
-184,223,168,145, 47, 80,194,176,216,181,231,231,193,223,127,191, 45, 91,237, 19,182,158, 99,216, 13,198,172,184,244,186,180, 8,
- 1,188, 92,164,120,247,187,155,112, 82,138,225,172, 20,195, 73, 33, 70,207,150,154,199,142,147, 16,226, 54,121,112,227,254,215,
-183,246,234, 30,214, 80, 29,114, 45, 73, 23, 55,126,225,165, 85, 39,139,187, 79, 95,179, 50,210, 67, 90,100, 18,125, 56,115,130,
- 40, 51, 43,187,251,174,159, 79,245,240,123,102,252, 29,155,165,236,253,188,107, 59,247, 87,167,151, 30,127,182,181,127,204,112,
-185, 69,111,189,113, 45, 33,163, 73, 97,185, 20,113,169, 37, 21,247, 84, 12,117,229,189,173,184,191,217, 25, 41, 40, 52,176,103,
- 50, 61,152,238,244,228,217,122, 53, 69, 25, 45, 60,174, 37,235, 17, 20,218, 26, 62,190,126, 48,247,127, 41,232,226,137,159,246,
-171,124, 35,150,148,101,223,126,223, 81,157,237,191,156,195,130, 37,171, 18, 65,112, 27, 0, 64, 17, 49,227,157,105, 33,159,175,
- 88,243,183,178, 41,175, 79, 13,169, 79,124,149, 16, 66, 88,165,119,216,247,189, 6,141,121,161, 69,187,103,145,152,116, 15,137,
-183, 46,161,103,175, 62,232, 55, 96, 40,204,166,242, 87, 54,124,187, 38, 22,192, 87, 15,159,235,228, 27,209,169,121, 84,196,247,
-126,190,126, 1,148, 86, 44, 77, 70, 41,186,119,239,142, 89,111, 79,132, 65, 95,138,176,176,168,142,174,157,123,155,250,142,120,
- 3, 60, 79, 81, 80,144, 95,118, 39, 62,174,151, 49, 55,254,130,163, 49, 26, 12, 6,171, 86,171,197,213,171, 87,145,144,144,128,
- 91,183,110,161,160,160, 0, 46, 46, 46,245,106, 98,119,115,115,115,110,211,166,205, 75, 59,119,238,148,187,184,252,229,249,205,
-102, 51,148, 74, 37,134, 12, 25, 34,238,212,169, 83,131,177, 99,199,190,234,230,230,182,189,168,168,168,164, 58,157,130,235,191,
-100,249, 52, 31,178,182,255, 11,147,166, 0,128, 68,166, 78, 94,253,221,158, 91,181, 93, 91, 34,119, 14,236, 53,100, 92, 19, 80,
- 10, 66,200,234,252,248, 61,213,254,144, 6, 0,139,197,162,248,241,199, 31, 27, 16, 66,254,246,253, 58,255,139, 31, 59,220, 72,
-204,238,245,205,199,239,137,156, 84, 50,228,235,204,120,109,202, 52, 79, 71,235,239,213,124,240,212,182,173, 91,127,245,225,204,
-137, 80, 41, 21, 56,122,254, 30,222,158,179,196, 86,152,159,183, 21,132,172,212,222,218,251,164,173, 22, 79,101,196, 91, 72, 3,
- 53,156,250,196,200, 39,190,216, 77,110,182,114, 40,210, 91, 97,178,112,224, 41,133,174,204,138,184,212, 82,120,186, 72,176,254,
-105, 92,236, 63,156,122, 25, 44,145, 88, 58,224,205, 49,253,165,203,183, 95,192,185,163,219,141, 89, 87,118, 41, 43,159, 11,104,
- 51, 50, 57,253,210, 15,193, 85,143,119,100,132,129,194, 47, 50, 64, 68,216, 21, 29, 58,119,232, 61,233,181, 41,180, 69, 88,160,
- 4, 96,112, 59,241,190,117,227,134,245, 99, 92, 2,154,175, 42,201,184,249, 65,229,151,105,125, 71, 45,240, 60,159,241,112,198,
-138,231,249,135, 23,153,126, 68,147, 16,192, 85, 37,198,218,131,201,246, 95,198,160,112, 81,138,177,227,247, 12,148, 20,102,230,
-183, 48,174,248,115,124,127,175, 65, 11, 55,196,237,255,250,231,220,203, 0,110, 81, 74,115,107,210, 36, 12, 32, 98, 9, 92, 84,
- 18,184, 40,197,112, 81,139,193, 16, 82,229,122,127, 55, 87, 31,126,123,125, 51,128, 59, 85,205, 85, 85, 77,149,119, 88, 51,103,
- 77,208,190,231, 39, 47,118,187,145,102, 1,195, 0,193, 62, 42,184,169,165, 48, 91,129, 20,173,165,162,174,206,152, 58,227, 99,
-205,236,119, 38,255, 74, 72,183, 22,148,158,252,219, 23,205,195,113, 26, 12, 6,233,232,209,163,197, 86,171,213, 50,246,173,133,
-189,179,115,243, 7,175, 90,252,174,204,211,211, 3,101,229, 54, 92,189,157, 18,177,228,179, 47,131, 15,157,188,184,119,246,228,
-193, 7,250,246,237,235,242,227,143, 63,242,181,105, 62,140, 54, 55,255,203, 77,219,118,111, 93,185,124, 9,226, 83, 10,177,241,
-219,175, 65, 57,219,218,218,206,121, 88,115,221,186,117, 94, 49, 49, 49,204,249,243,231, 11, 30, 54,160,132, 64, 85,168, 51,193,
- 85, 37,129, 82, 38,130,143,171, 12, 30, 78, 18,200, 36, 12, 24,230,175, 15,145,170,154, 27,118, 31, 92,200, 27,138,113,224, 7,
-203,200,141, 95, 46,194,184, 55,230,226,102,190,228, 48,163,116, 93,248,198,136,193,239,185, 43,209,175,129, 43,227,213, 51, 58,
- 8, 42,185, 4,115,222, 28,141,182,151, 83,188, 50,138,249,185,133, 6,180, 4,240, 65,117,113, 50, 44,129,136,101,224,164, 16,
-227,228,193, 29,121,134, 82,157,142,176,246, 12,139,213,108, 73,173,173,206, 53,213, 29, 0, 84,222, 97,179,163, 91,181, 88, 52,
-101,210,120,166, 99,204, 51,148, 97, 68,200, 47,177, 16, 10,138,233,111, 76,198,212,201, 19,125, 50, 50,115, 63,250,234,235,117,
- 31,168,189, 34, 22,232,243,110,127, 92,155, 38, 75, 24, 48, 12,129, 74, 33,134, 90,254,215, 86,110,230, 65, 8, 88,255,232,145,
- 58, 16,128, 16,146,149, 30,187,163,218,102,175,135, 53,253,154,247, 59,126, 42, 79, 18,110,248,181,252,220,221,196, 43, 11, 47,
- 94, 79,187, 72, 41, 45,108,216,245,157, 87,173, 86, 10,125,185, 13,247,115, 13,176,153, 41, 25,215, 55, 16,141, 94, 32, 97,139,
- 55, 94,217, 74, 8,113,174,204,184, 60,172,153,113,110, 87,185,103,243, 97, 35, 86,126,177, 46,118,249,162,185,108, 65,137, 25,
- 28, 5, 20, 82, 22,242,138, 77, 33, 97, 81, 94,166,195, 87,107,191,203,177,129, 12,163, 39,107,127,207, 63, 2, 79, 95, 30,214,
-191,203, 15, 4,144, 18, 70,146,225, 23, 24, 20,216, 99,192, 24,121,207,129,175,128,179, 89,102,171,188,195,127, 47,203,141, 63,
-238,136,102, 84,100, 4, 64,112, 59,239,198,190, 97, 0,224,213,124,200,158,240,176,240,144,135,203,154, 54, 13,125,196, 96,213,
-164, 73, 8, 97, 20,154,144, 73, 77,195,155,207,154,242,225,186,160,172, 2, 19,220, 26, 52,197,213, 43,151,113,100,215, 87, 87,
-140,165, 69,203,143,252,178,119,214,130,165,171, 90, 14, 24,242, 34,246,239,219, 57,131, 16,242, 53,181,243, 64,147,242,252,203,
-155,215,175, 11, 16, 75,100,176,114, 20, 86, 27, 15, 43,199,195,106,163,200,206,206, 66,169, 94, 15,185,194, 9, 42,103,119, 88,
-109,246, 76,161,201,100, 85, 77,126,101,192, 84, 0, 23,170,139,179, 81,187,209,151,192, 16,127,123,185,189, 76,194,184, 25,124,
-125,125,183, 2,128, 76, 38,131, 76, 38,131,205,102,195,141, 44, 76,247,107,251,242, 28,208,138,111,118,158,207,200,190,178,163,
- 77, 77,117, 15, 8, 8, 24, 88,157,185,210,235,245,248, 51,246,186,203,166, 31,143,246, 77, 73,207,105,204,115, 94, 38,133, 79,
-203, 62, 0, 6,214,116, 63,115,110,236,155,218,176,219,116,102,198,148,209, 77, 87,127,183,251, 98,226,225, 5,181,166,147,131,
-123,205, 54,207,154, 58,170,205,167,171, 55, 38,102,156, 90,245,118, 93,175,145, 68, 34, 17,107,181,218,212,202,253,249,107,126,
-234,151,150, 91,210,235,179, 69,115, 37, 87,239,233,113,253,126, 54,198, 60, 27, 88,237,181,170,211,244,109, 54, 52, 44, 48, 40,
- 96,213,170, 5,111, 33, 33,203,136, 53, 63, 93,196,169,131, 91, 47, 91,202, 75,159,203,187,117,160,206,236,129,131,223,155,245,
- 50, 88,213,105, 86,126, 17,252,126, 61, 31,165, 70,187,177,178,114, 60, 74,141, 54,228, 21,155,160, 43,179, 66, 95,110,197,152,
- 94,129,245,185, 84, 37,109, 1,104, 0,104, 1,196, 62,180,143,138,199,168,102, 63, 31,246,140,161, 7,236,153,216, 7, 25,218,
- 42,251, 53,149, 87,158, 31, 7, 32,162, 66,147, 3,112, 17, 64, 81, 93, 1,139, 8, 33,148,210,191,150, 84,126,120,191, 42,156,
-205,234,239,231,235, 11,158,102, 84,196,107, 39,168,221, 72,195,219,147,134, 43,252, 90,189, 80,150,117,117,183,195,125,178,156,
-188, 66, 59, 40, 20,202,131, 75,150, 46,163, 35, 6,118,149,230,232,172,198,184,204,114,173,222, 68,109, 62,154, 38,178,165,159,
-126,170, 94,188,116,249,235,123,247,240,197, 0, 62,171, 78,195,175,237,168, 75,132, 48,254, 15,146, 65, 4,160, 60,205,200,136,
-221,222, 6, 0,158,164,175, 85, 89,185, 13, 44, 75, 32,174,232,147, 98, 48,115, 48, 20,231, 20,180, 48,172,250,115,124, 95,187,
-185,186,144,233,115,143,101,181, 22, 74,105,173, 77, 16, 12, 33, 40, 49, 88,225,172, 16,195, 69, 37,129,171, 82,242, 32,131, 85,
-131,185,186, 85,155,166,196, 98, 73,231,172,166,114,202,113,232,223, 86, 3, 47, 23, 41,124,221,100,144, 75, 69,176,114,128,209,
-204,195,104,230,144,154,103, 64,169, 65,134,230, 93, 71, 54,245,244,189, 96,240, 12,106,187, 57, 63, 37,246,181,218, 98,229, 56,
- 14,223,239, 62,210, 52, 51, 59,111,240,254,109, 43,100,121, 58, 43,174,167,232,145, 87,100, 6, 37, 46,152,243,193, 7,178, 15,
- 63,156, 55,116,231,190,227,247, 59,180, 9,117,188,233,165,242,190,230,197,111,107,209,241,185, 47,159, 27, 56,196, 41,238,226,
- 33, 36, 94, 61,254,161, 62,183,126,253,175, 2, 3, 3,185,175,190,250,202,117,237,218,181, 77,189,188,188,210,243,242,242,146,
- 1,123,115, 84,163,200,152,172,223, 78,156,246,232,218,177,139, 40, 61,191, 28,158, 78, 18, 4,122, 43,113,249,236,239,102,134,
-144,195,213,233, 85, 52, 3,142,242,239, 53, 11, 7,206, 38,247,189, 85, 32, 59, 57, 97,226,184,148,223, 14, 94, 44,248, 98,219,
-241,101, 13,212,214,107,114, 62,111,205,229, 54, 77,125,102, 79, 27,141, 37, 95,108,195,169,203,241,121,101,140,223,162,108,147,
-237,183,121, 35,171,111,237, 96, 25, 64, 44, 34,112, 82,136, 97, 40,211,233,110, 30,251, 58,180,190,247,171, 6, 94, 61,178,111,
- 27, 83, 88,106, 69, 70,190,145,100, 21,148,194,198,243,112, 85, 73, 97,227,129,226,194,124,242,253,247,219, 16, 27,123,142, 1,
-203, 76, 0,240,113,109, 98,164,162, 95,160, 90, 46,130, 90, 97,207, 2,169, 21, 34, 88,108, 60, 66,130, 3,176,106,254,155,206,
- 26, 47,111,244, 30, 86,235, 91,231,111, 40, 84,110, 45,183,124,179, 0, 39,207, 93,235,246,251,221, 29,109,189,162, 90,126,225,
- 31, 57,124, 57,227,238,103, 52, 89, 57,148,232,138, 80,110, 74,199, 51, 13,242,225,174,226,144, 82,226,139,155, 57,137,234,186,
-154,179,242,111,236,185,170,137, 26,250,193,174,159, 79, 44,233,243,108, 55,220,186, 95, 98, 55, 87, 18,187,185, 18, 17, 30, 43,
-214,174,179, 22,233, 74, 7,228,223,220, 87,239,101,173,202,242,226,143,193,254, 97, 12, 0, 80,123, 55,214,124,191,230,131, 45,
- 19,103, 45,235,211,103,232,171,228,102,236,239,239, 3, 56, 94,179,194, 95,112,213,228, 88, 57,254,209,234, 85, 87, 86, 29,132,
- 16,198,171, 73,155,237,155, 54,239, 24, 17, 25, 18,128,220, 98, 43,178,138, 44,248,227,242, 93,236, 93,247,126,113,113,238,189,
-151, 97,209,235,121, 98,211, 29, 61,242,243,225,215,223,156,133,102,205, 90, 6,149,100,148, 56, 3,248, 91,223, 67,158, 37,235,
- 94, 25, 63,121,132,183,151,183, 19, 95,145,193,226, 41, 69, 88, 88, 36,250, 15, 28,134,147,167,207, 34,238,214,117,123, 57, 15,
- 80, 74, 81, 92, 84,144, 99,179,154, 55,215, 24, 31, 75,252, 55,173, 93,225,197, 16,192, 98,227, 97,182,242,152, 61,231, 67,243,
- 91, 31,173,233,212,167, 99,139, 91, 44,248,146,180,236, 98,215,216, 59,217,205,137,216,217,247,165, 73,239, 73,140, 22, 14, 37,
- 6, 43,142,239, 90, 93, 99,189,253, 26,183,140,105, 20,209,105,252,164,185,107,101, 50,150,177, 52, 11, 13, 72,238,218,190, 89,
-122, 67, 63,207,210,197,171,191,127,230,236,229, 59,253,135, 61, 63, 84, 62,162,113, 36,241,243,144, 59, 77,158, 58,173,133, 79,
- 72,167, 87,114, 18,207,108,173, 73, 83, 36,146, 21, 7,248, 7, 60,104, 74,244,138, 26,114, 29, 64,224, 67,135,165,230,221,220,
-215, 2, 0,188,188,125,202,137, 88, 86,107,151,128,170, 84,190,143, 63,249, 98,119,255, 12,173,254,133,207, 22,205,149, 92, 77,
- 46,195,213,123, 58, 72, 37, 44, 76, 22,199,187,181,113,132, 78,127,111,218, 56,113, 97,153, 13,191, 95,215,226,230,165, 19,212,
-102, 41, 25, 67,137,104,172, 38,106,200, 43, 4,104, 68,129,251, 12,193,183,102, 6,155,139,175,237,171,117, 48, 79, 77, 33, 3,
-128, 87,228,176, 14,132, 69,127, 86, 36,105, 11,240,225, 54,171,213,139, 97,217,252,156,107,187, 29, 30, 65, 73, 41,133, 33, 47,
- 17,203, 22,127,132, 85,235,247,226, 98, 66, 33, 92,108,233,216,191,113, 17,102, 44,249, 30, 6,115,245,189, 23,234,240, 35, 26,
- 66,200, 47,148,210, 1, 0,122, 1,144, 86,217, 7, 33,228,151,138,107,255,109,127,246,236,217,239, 47, 89,178,228, 86,229,177,
-149,229,149,199,214, 86, 94,229,124,143, 57,115,230, 68, 45, 93,186,116,113, 76, 76,204, 15,103,207,158, 77,134, 35, 6,171,106,
- 37, 8, 33, 53,254,151,123, 55, 31,252, 12,192,176, 62, 30,106, 52, 13, 14,128,106,248, 88,133,127,244,136, 50,150,101,152,205,
-171,222,151, 23, 24, 69, 16,177,108, 89, 93, 23,172, 68,225, 29,222,206,201,201,233,215, 31,119,254, 68, 67,130,124,164, 63,157,
- 47, 78,187,156,108,120,144,210, 45,209,166, 74,155,186,155,216, 17, 47, 14, 83, 29, 62,250,219,116,212, 96,176, 8, 97,252,191,
- 88,241,169,151,147, 66, 12,134, 0, 37, 70, 27,166,191,243,158,163, 97,212, 8, 5,101,167,190, 51, 15, 12,177,127,249,232,117,
-133, 88,180,114,147,126,152,255,137, 51,227,251,122, 14, 90,184, 33,110,255,209,219,138,187, 67,135,246,208,165,164,164,212,121,
-163, 9,229, 50, 94,120,245, 45, 9,195,216,155,141, 8, 33, 0,184,220,199, 49, 87, 0, 80, 84,148, 92,162,240,105, 49,116,219,
-138,105,235, 27,250, 55,112,119, 82,202,161, 86,201, 72,120, 88, 19,121,251,118, 49,138,192, 38,205, 36,167,111,235,145,166, 53,
-226, 94,102,255, 91,126,158, 0, 0, 32, 0, 73, 68, 65, 84, 9,100,154, 40,241,136,110,207, 98,219,234,247,250, 59, 82,255, 19,
-231,110, 14,252,122,249, 92, 89,110,145, 5,183,211, 75,145, 83,104, 66, 78, 81, 57,114,138, 76, 80,203, 69,104,223,115,152,236,
-192,241,221, 67, 58,180, 9,253,194,161, 27,250, 16,247,146,146,247,166,102,102,143,105,209,234, 25,124,191,101, 83,123,226,239,
- 47,167, 25, 25,229,142,158,191,126,253,250,194,214,173, 91,123,126,246,217,103,101, 97, 97, 97, 45,195,194,194,130, 19, 18, 18,
- 78, 54,110,220,120,224, 55,171, 23,156,124,107,238,242, 64, 17,108, 46,237, 59,118,100,149, 82,130,243,167,143,154, 54,175, 95,
-155,101, 41,214,207,170, 77,151, 81,186, 46,204, 45, 37,208,248, 5,220, 84,137,173,189,197, 74, 75, 66,225,214,105,219, 0,236,
-105,210,239,205, 99,191, 95,186,147, 16,125, 57,197,235,196,229,132,188, 66,131, 53, 52,233,208, 59,181,126,224,178,164, 34,131,
-165,252, 43, 99,233,221,114,248, 93, 74,136, 6,176,191,183, 8,236, 25, 45, 2,128, 0, 89, 25,151,127,116,160, 99, 52,161, 60,
- 15, 36,100,232, 81,106,180,161,220,106, 67,128,167, 10,218,220, 12,124,243,197,102, 92,185, 20,139,222,253, 6,225,171,239,190,
-199,196, 87,134,215,121, 95, 25,134,128, 97, 72, 69,230,202,110,174,212,114, 17, 64,128,226, 50, 43,246,156, 73, 71,147, 96, 6,
-164, 30,173,133, 78,106, 5,116,165,229, 96,196,106,196,255,177, 85,121,232,196,197, 57, 31, 47,223,240,110,137, 62, 55, 45, 41,
-238, 28,194,220, 10, 16,236,103,198,173, 92, 23, 92, 42, 12, 66, 88,147,198, 96, 36,177, 14,105,231,223,106,190,236, 0,243,211,
-128,182,173, 34, 99, 26,122,185,192,104,230, 42,178, 88, 34,108,222,180, 9, 41,247, 51,198,231,223,218,119,197,241,104,107, 70,
-159,123, 79, 43,247, 14,121,253,198,249,227,201, 67, 94,158, 10,159, 6, 13, 91, 58,122,174,163,102,138,119,192, 96, 17, 66, 24,
-247,160, 86, 91,182,108,219, 53, 34,184,161, 15,126,187,120, 31, 87,146,138,224,236,228, 10, 86,229,139,208,174, 99, 93,111, 28,
- 94,253,188, 49, 95,191, 69, 44, 81, 78,120,166,125, 71, 80, 74,113, 39,254, 86,161, 78,231,242,200,103,179, 33, 43,254, 42, 0,
-231,170,101, 74, 77, 68, 75, 39, 23,247,171,229, 22, 14,153,153, 25,248,243,236,201,214, 21,199, 57,140, 76,194,224,232,229, 60,
- 88,108, 60, 44, 86, 30,173,155,135,151,139, 37,138,206,159,174, 63,216, 62, 39, 55,143, 81,170, 93,120, 23,207,198, 18, 87,107,
-142,233, 90,178, 78, 98,177,241,104,236, 91,251,239,114,165,123,227,197,111,191,243, 86,132, 72,170, 64, 73,153,201,156,157,145,
-233,243,237,142,223,245,183,239,196, 53,104, 20,212,208,121,193,130,143, 37, 37,229, 20,121,197, 38,228,151, 90,200,139,163,198,
-251,109,221,248,213,203, 0,106, 52, 88,213,208,252,135,173,107,173,238,106, 9, 41, 53, 88,169,182,164,156,155,250,250,244,230,
-245,169,251,195,252,205, 92,221, 43,195,213,228, 98,200, 36, 44,100, 18, 22, 86,155, 99, 93, 36, 53,145,195, 85, 26,141,235,203,
-237, 90, 53,197,145,203, 90,136, 88, 2, 99, 89,137, 89, 46, 83,223, 12, 15, 15, 97, 90,181,140, 66,183, 78, 29,144,148,156, 18,
-118,228,183, 19, 43, 47,198, 94, 89,164,137, 26, 58, 75,123,115,239, 35,205,194,181,145,154,169, 85,229,218, 2, 70,122,249,120,
- 70, 13, 26, 52, 80,214,176,129, 55,241,244,112, 5, 7, 9,166, 76,125,195,203, 81, 29,158, 82, 80, 0, 75,231,207,129,201,108,
-134,151,171, 20,148, 2, 27,215,124, 2,179,217, 12, 63, 15, 57,116,101,214, 26,207,175,203,143, 84,103,136, 30, 54, 90,149,143,
- 43,143, 91,178,100,201,128,170, 26,149,207, 63,204,195,229, 85,207, 95,186,116,233,226, 42,207,215,216,199,175, 42,162, 10, 17,
- 82, 91,165, 52, 45,134,118, 84,200, 84, 71,191, 90, 50,157, 41, 46,179, 64, 38, 97,208, 56,184, 17,166,189,249,150,178,103, 43,
- 47, 24,225,140,159,118,108, 46,177,113,214, 95, 30,189,196,163, 40,125, 66,218,168,149, 78,135, 55,110,217,193,251,120,121,146,
-111,143,105,147,181, 37,182, 7, 83, 28, 36, 92, 56,192, 95, 58,242,173, 47, 5, 57,172,148, 43,154,154,204, 38,183,154,180, 24,
-216, 95,208,141, 71, 83,192, 50, 12,216,167, 52,179, 23,195, 48,220,119, 95, 44,128,167,179,189,207,213, 39,171,182,149, 14,212,
- 28, 62, 81,213, 92,181,106,213, 74,215,178,101,203, 98,230,225,206, 84,213,144,118,241,251, 71, 70, 75, 60,174,185,170,196,152,
-115, 61, 22, 15,205,196, 79, 72,180,216,179,209,174, 25, 35, 95,122,121,142,119,179,129, 78,247,179,117,144, 50, 86,180,141,240,
-197,201, 35,123,248,244,228,219,147, 29,209,206, 43,208, 5,120,122,120,224,202, 61, 61,178, 10,202,145, 93,104, 55, 87, 57,133,
-229, 40, 49,218,208,170,145, 23,138,117,250, 0, 71,180,170,131, 18,186,239,200,225, 35, 99,250, 13, 30,129,105,239,126,220,111,
-253,215,159, 95, 87,120, 71,188, 98,204,189,125,209,145,243,119,237,218,197, 5, 5, 5, 37,231,231,231,183,157, 53,107, 86,105,
-163, 70,141,124, 22, 44, 88, 48,169,113,227,198,126, 61,187,119,215,197,254,222,126,203, 91,239,126,220,253,253,183,214, 7, 51,
- 12,147, 75,121,122, 32,171,204, 58,143,106,227,170, 29, 41, 84, 73,218,254, 57,241, 36,242,147, 49, 61, 59,123, 28,240, 80, 48,
-145, 98, 98, 26, 69, 34, 63,217, 73,227,230, 89,146, 14,125, 81,218,252,197, 21,211, 50,139,249,185,229,140,207,162,186,204, 21,
- 96,207, 10,153, 45, 60,156, 21,226,202,145,163, 0,133,239,215,107, 62, 87,106, 92,100, 16,177, 4, 98,150,129,206, 96, 69, 65,
-137, 25,239,206,170,213,255, 85,129,242, 28,207,195, 96,226, 96, 52,219, 64, 64, 80, 90,146,143, 57,239,190,141,126, 3,135, 97,
-252,228,119, 80,108, 4, 46, 37,151,194, 98,181,214,105,139, 88, 2, 24, 76, 54,140,239, 19,136,130, 82, 11,202,202,109, 48, 91,
-120, 40,229, 34,136, 68, 12, 84, 50, 17,156, 20, 98, 16, 66, 37,190,190,190,147, 0, 64, 44, 22,151,167,165,165,109,171, 73,147,
-231, 41,130, 2,188, 97,180, 48,120,102,196,114,244,138, 9,197,213,223, 54,136, 78, 95,184, 17,252,238,199, 43, 49,117, 84, 12,
-118,223,105, 2,119,175, 32,168,149,114, 88, 41, 3,192,177, 41, 64, 40,157,199,251,134, 15, 27,181,246,187,141,119,230,127,248,
-158,188,168,140, 64, 38, 17,225,196,137, 99, 56,119,225,210,106,237,173,125, 53,198,245, 56,136, 41,227,237,236,226, 12,185,148,
-133,197, 98,114,184,195, 55,199, 83,128, 34,194,171,249, 16,123, 31, 69,138, 8,190,154,178,186, 50, 88,132, 16,226,226, 23,181,
-105,237,250,239, 95,246,245,241,194,222,227,215,177,101,253,151,104, 16,213, 15,119, 47,175, 69, 64,244, 16,168,131,123, 64,234,
-180,107, 18,195,138,154, 79,125,107,206,176,232, 54, 49, 56,251,199,239,200,203,201, 94, 75,105,188, 67,125,208, 88, 49,121,179,
-123,175, 1, 48, 89, 56,116,238, 49, 0,135,127,222, 59, 13, 21,131, 39, 30, 23,150,101,248, 55, 38,142, 20,231, 21,155,197,121,
- 58, 19, 50,243,141, 72,206, 41,195,254, 31, 55, 56,220, 36, 69, 88,166,109,215,150,254,226, 73,203, 78,164, 7,248,251,154,196,
- 38,163, 34, 33, 41, 41,124,194,152,151,197,141,154,134, 49,218, 98, 19,180, 58, 51,180, 58, 51,202,202,173,104,226,215,144, 49,
-217, 68, 49,245,141,213,203, 69, 46,254,234,151,100, 56, 43, 69,232, 16,225,241,216,157,176,121,158,255,203, 92, 45,180,103,174,
-174, 37,235, 32,151,176,144,138, 89,200, 36, 12,172,156, 99,213,103, 24,219,200,215,198,188,168, 48, 91, 41,242, 75,204, 96, 25,
- 2, 31, 79, 15, 89,128,111, 40, 54, 46,127, 3, 0, 48,241,189,175, 49, 97,220,104,132,133, 54,133, 78, 87,170,152, 48,229,173,
- 21,168,166,223, 93,117, 80, 74,233,247,251, 79, 71, 94,186,153, 58,227,213, 49,175,136, 71, 12,234,194, 92,185, 87,130,236, 66,
- 19,238,221, 53,192,108,173,223,108, 52, 54,206,222,230,187,105,231, 47, 80, 74, 88,104,117,246,127,151,133,107,118, 66,173, 16,
- 33,167,200, 12,158,175, 57,123, 87,151, 31,169, 41,235, 84, 31,170,154,176,218,202, 9, 33,191,204,158, 61,251,125, 0,116,246,
-236,217,239, 87,238, 47, 89,178,196, 8, 32,171,174,235, 60,232,131, 85, 83,179,160,166,197,208,142, 10,169,252,232,214, 53,239,
- 43,142, 39, 80,172, 62,122, 25,253,219,251, 66, 34, 34,144,171,125,112, 53,185, 24,199,143,239, 47,253,227,220,133,114,194, 88,
-235, 28, 22,165,244, 13,107,173,148, 59, 29,251,114,221, 22,155,183,143, 15,118,156, 41,202, 42,208,219, 30,216, 89,142,179,146,
- 75, 71,190, 13,182,241,214,190,198,156,196, 58,127,206,242,148, 74,150,124,115, 0,148, 82,128,231,192,131, 7, 43,145,169, 2,
-219,141,206, 5, 1, 56,142,151,139, 88,166,188,226,110,217,235,202,115, 25,169, 23,182,215,218,116, 72, 0, 56, 43,197,248,241,
- 84, 6,116,133, 89,249, 3, 53,135,255,172, 52, 87,135,111,201,238, 70, 71,183,210,181,107,215,174, 88, 38,147,129,101,217,186,
-194,124, 84,255, 9,205, 85, 77, 80,122,217, 10, 96,169, 95,120,151, 65,253, 84, 81,237,164, 68,140,232,112, 95,156, 60,186,151,
- 63,119,104,195, 80, 67,110,194, 65,199,116,236,125,100,178, 10,141,200,204, 55, 34,187,168, 34,131, 85,104, 2, 33, 64,185,249,
-201,166,175, 49,228, 38,252,172,110,208,108,173,201,138,201,157,123, 15,193,140,143,191,108,186,109,237,178, 63, 84, 94, 33,109,
-203,242, 18,111, 56,162,145,146,146, 98,242,246,246,190, 82, 90, 90,250,236,138, 21, 43,244, 17, 17, 17, 82,133, 66, 81, 0, 64,
-158,120,231,142,228,196,175,187,238,107,179,178, 94,179, 88, 44,142,165, 69, 0, 4,117, 27, 43, 11,119, 46,156, 20,168,236,208,
-167,177,143, 18,129,202,178, 62,225,234,107,159,121,245,156,190, 56,239,248,170,188,108,147,237,183, 66, 3, 90,102,234,197,199,
- 28,209,179, 89,204,169, 47,189, 54, 27, 44, 67, 96, 49,153, 83, 43,203, 53, 46, 50,124,188,237, 54,156, 20, 98,168, 21, 98, 56,
- 41, 68,232, 24,225,129,122, 36,136,168,213, 70, 97, 52,219, 96, 52,113, 48,154,108,240,108,232,138,239,182,238, 70,154,214,136,
- 3,177,249,136, 79, 41, 65,104,128, 10,148,214,157,119,226, 41, 87,246,226,164,185, 78, 44,195,128, 37, 96,194,155, 6,161, 80,
-111,134, 68,196, 64, 42,149, 66, 41, 23,193, 89, 41,134, 88, 36,198,197,235,215, 97, 50,153,208,174, 93,187,106, 71, 74,253, 21,
-161, 61,139, 21, 18,236, 7,139,213,134, 95, 79,199, 97,225,244,161,120,182, 75, 27,188,203, 74, 17,111,106, 5, 39,119, 39,240,
-132,133,197,198,195,100,229, 0,144, 26, 13, 48, 33,164, 3,236,253, 34,202, 41,165,231,179,227,247,164,121, 53, 27, 50,233,208,
-209, 19,219, 6,246,239,141, 43,215,110,225,167,189, 7,254,200,247,208,205,172,114, 78,115, 84,140,130,163,148,214,218,145,185,
-150,235, 18,149,119,248,244,152,142,221,160, 47,202, 67,110,250,125,135, 63,212, 35, 27, 58,225,237,233,211, 66,194,194,194, 66,
- 56,158,130,231, 41, 34, 3,157,240,218,148, 41, 33, 77,154,134,134,240, 21,163, 8,195, 3,156,106,213, 81,121,135, 77, 93,180,
-226,155, 87, 2, 2, 2,112,248,204,109, 44,153, 59,249,138, 82,169,110,212,198,221,201,149, 15,107,137,228,155,191,193, 61,168,
- 24,206,222, 33,254,131,158, 29,227,223,239,185, 33,184,113,237, 50, 86,125,182,224, 92, 25,171, 88,236, 72,172,106,239,198,154,
- 86,109,187,188,228,236,238,141, 34,157, 30,106, 55, 47, 68,180,104,243,146,218,187,241,123,250,220,123,143, 53, 37, 11, 96,255,
- 1,108,178,240, 40,212, 91,144,161, 53,226,126,174, 1,247,115, 12,224,249,191,154,130,235,122,135, 18, 16,162,146,137, 68,238,
-214,187, 13,175, 31, 59, 65, 3, 3,188,201,178, 5,179, 88, 11,149, 33, 79,103,134,182,196, 12,173,206, 4,109,137,221, 96,185,
-169, 69,224, 41, 95,239,209, 25,133,122, 11,156, 20, 34,184,168, 36,224, 28, 52, 64,213,241,241,202, 29, 29, 50,180,250,158,159,
- 45,156, 43,185,122,191, 12,215,147,117,144, 73, 24,123,246,170,194, 96, 57,218, 44,204,138,152,105,207,245,106,135,116,109, 57,
- 68, 44, 3, 17,203,160,105,179,214,240, 84,242,232, 57, 98, 54, 0, 96, 96,127,251, 52, 36,201,217,101,248,249,124, 54, 0, 72,
- 28,141, 53, 47,191, 68,190,247,183, 43,111,237,248,110,153,180,156, 19,227,155,131, 41, 40, 55,115,144, 73, 42,154,221,165,245,
-251,126,179,113,246, 12, 86,186,214,130, 50, 19,135, 18,131, 5,148, 2, 23,239,150,194, 96,226,160, 51, 88,208, 62,204,189, 86,
-141,154,252, 72,149,231,171,205, 64, 57, 74,197,249, 90,252,213, 79,171, 90,221,170, 25,172, 37, 75,150,220, 90,178,100, 73,181,
- 25,177,154,168,181,147,187,166,197,208,142, 10,137,252,232,150, 47,222, 87, 28,187, 67,113,242,122, 1, 94,232,236,143,130,188,
- 12,172,255,122, 53, 79, 41, 32,147, 75,115, 56, 27,127,168,156,183,205, 42,190,246,115,173,237,190, 42, 77,100, 11,133, 82,121,
- 98,201,170,181, 22, 31, 95,127,126,207,249,226, 60,157,129,251, 91,174,144, 51,153, 24,202, 83,137, 35,230, 10, 0, 24,134, 88,
- 62,158, 54, 20, 60,165,152,183,122, 39,150,204, 24, 9,181, 92,164, 36,132, 40,203,202,109,152,190, 96, 3, 86,124, 48,206, 73,
- 41, 19, 85, 24, 3, 14,147,167,189,235,136, 52,140, 38, 14,101, 69, 57, 5,205,245, 43, 31, 50, 87,209,186,182,109,219, 22,187,
-185,185, 65,165, 82,213,219, 96, 85,103,174,124,124,124,252,148, 74,165,123, 72,136,189,175, 43,203,178,224, 56,174, 44, 49, 49,
-241,177, 38,125, 43, 41,206,223,151,117,255,102,187,142,221,158,195,169,163,251,248,115,191,174, 31, 90,159, 33,230,174, 46,206,
-233,151,227, 82, 35, 0, 53, 50, 11,202,145, 83, 84,142,236, 66, 19, 44, 54, 30,129,222, 74,100,164,167,193,213, 69, 93,231,232,
-180, 74,148, 62, 33,125, 25,202,190,198, 19,124,103,200,137,255, 21, 0,244,153,183,166, 40,189, 66,111,220,186,117,109,213,128,
-145,211,164,207, 62, 63, 69,178,110,233,235,179, 1,140,116, 84, 55, 55, 55,215,224,229,229,117,206,207,207,111,192,188,121,243,
- 76, 0,164, 38,147, 73, 57,110,220, 56,101,106,106,234,219,148, 82,135, 98,236, 60,110,147, 39,145,211,190,141,195,162, 71, 5,
- 42,203,122,247,232, 18,131, 14, 81, 1,200,232, 18, 3, 0,111,166, 26,212,161,157, 38,175,255, 49, 88,227,118,232,155,205,191,
- 46,153, 56,162,199,219,126, 3, 63, 89,145,245,243,188, 90, 51, 98,119, 78,111,120,116, 2, 38, 2,136, 43, 58,190, 87, 53, 88,
- 54,142,214,167, 9,142, 90, 57, 30, 6,147, 13, 6,147, 13,250,114, 43,142, 95,205, 67,110,177, 25, 69,101, 22,148,155, 56, 80,
- 0, 22, 43,173,156, 85,164, 86, 82,206,110,118,173,124,236, 31, 61, 82,183,122,254, 52,231,159,206,100, 64, 37,179,247,199,114,
- 81, 73,225,172, 20, 3,160, 56,121,242, 36, 42,135,199,215, 6,207,243,248,233,240, 69,172,216,124, 2,135, 55,204,130, 92,202,
-162,229,144,249, 24, 51,164, 29,120,158, 34,233,206,205,220,144,136, 86,222,140, 90, 9,134, 65,101,159,148,218,238,167, 7,165,
-244, 0, 33,100, 0, 33,228, 57,216,251,140, 20,237,227, 10,202, 78, 28,220,161, 42, 51,154,108, 69,169,183,191, 68, 89,126, 87,
-123, 19, 60,120,216,127,160,159, 36,132,116,169, 51,224,106, 32,132, 48, 10,175,208,213, 19,166, 76,127,161, 73,147,198,216,185,
-125, 35, 40, 37, 63, 57,122,254,182,159,207, 97,229,170,191,143, 24,124,109,202,148,144,117,223,124,243,183,178, 87,198, 77,170,
-113, 20, 33, 33,132,248, 71,245,152, 21, 22, 30,137,243,183, 50,176,236,195,169, 87,202,243,146, 71,153,213, 30,175, 89,202,178,
-223,137,140,106, 5, 31,111, 15,228,100,231,162,251,224,103,209,175, 79, 31,220,184,118, 25, 11, 63,122,247, 28, 12,230,222,117,
-101,109, 43,225,169,120,114,183, 62, 67,196, 6,147, 5,107,150,125,132,215,102, 46, 66,251,238, 3,197, 55,175, 94,152, 12, 96,
-190,163,117, 54, 91,121,116,111,161,129,217,202,193, 98,229,113, 32,153,125,228,123,134, 16, 64,196, 50, 76,171,198,246,230,221,
- 18, 99,205, 77, 70, 0,192,136, 72, 78, 81, 73,105,208,151,139,222, 98,203, 76, 28,180, 58, 19,242,138,205,208,150,152,144,175,
- 51,217,205,149,206,140,124,157, 9, 34,150, 32, 49, 57, 19, 44, 75,234,221,255,174,184,204,130,103, 66,221, 0, 16, 48,143,217,
- 28,146,111,211,244,187,150,144,209,115,217,130,185,146,171,201,122, 92,191, 95, 82, 97,172, 24, 72,171, 24,172, 90,146, 56, 15,
-240,138, 28,212,225,149,145,131,155, 57,171,228,200,188, 83, 10, 17, 67, 32, 98, 9,156, 53, 1,112,145,151, 99,218,212,215,224,
-225,238,130,180,252,114,172,222,155,128,235,113,119,193, 27,235, 87,237,175,191, 63, 60,244,149,151, 71,200, 24,177, 28,219,142,
- 38, 67, 42, 97, 33,130, 25,113, 23, 78,155,114, 51,238, 91, 74, 75,138, 85, 34,145,216, 33, 81, 2, 80, 27,199,131, 82,138,197,
-159,204,193, 15,155,191,198,225, 75,185,160,176, 79,213,240,231,158,207, 49,125,246, 66,104, 75,204, 0,106,238,146,228, 0, 7,
- 1, 60, 87,185, 83, 53,155, 85, 67, 6,170, 58, 98,171,106, 84, 30,255,176,198,195,207, 85,232, 57,148,105, 23, 61,236, 20, 43,
-247, 53, 45,134,118,148, 75,165, 71, 55,175,158,163, 56,158,128, 7,230,202,168,207,199,214, 13,235,244, 20,124,175,220,155,251,
- 29,106,206, 1, 0,149, 87,104,148, 76,165, 58, 53,119,225,106,147,159,127,176,237,215,171, 37, 5,165,229,220, 35,105, 16,137,
- 82,197,169, 92, 52,229,174,129,173, 87,136,141,230,143,180,218,184, 58,250,117, 17,240,148,226,231, 11, 57, 0,111,127, 17,119,
-158,206,180,207,227,195, 18,112,188,189,157,251,183, 43,121, 15,202, 28,129, 16,224,199,163, 87,242,107, 50, 87,174,174,174,112,
-117,117,133, 90,237,240, 74, 11, 21,186,213,103,174,148, 74,165,251,145, 35, 71,228,206,206,206, 96, 89, 22, 38,147, 9,207, 62,
-251,108,189,180, 43, 81,121,135,141,108,223,115,216,146, 78,221,159,195,239, 71,246,240,231,126,221, 52,204,144, 87,143,249,123,
- 0,244,235,210,226,231,101,159,175, 9,158, 57,123,174, 76, 37, 23,161, 72,111, 1,203, 16, 4,122, 41,224,161,102,113,238,196,
- 47,229,163,250,182,114,216,252, 5,248, 7,109,253,124,245, 90,143, 21,159,126,210,219,205, 45,216,187,168, 40,185, 4, 0, 12,
-121, 9,107,213, 62, 97,119,252, 27, 30, 61,213,178,203, 80,120, 53,104,234, 80, 31,177,170,228,229,229,229, 69, 69, 69,221,142,
-140,140,108, 51,108,216, 48,186,120,241, 98,183,140,140,140, 93,142,154, 43, 0,232,209,167,195,116,149,216, 26,227,161, 96, 34,
- 27,251, 40,209, 33,202,222,250, 57,226,185, 78,240, 15,104,136,123, 57,134, 86, 5, 70, 94, 82,102, 21, 55,254,102,237,198,216,
- 64,119,209, 68,155,222, 24, 7,160,218, 41, 5,106,131,160,226, 67, 82, 89, 97,174,228, 34,168, 21, 98,240,212,254,156,131, 80,
-171,141,135,217,194,195, 96,182,193, 96,226,236,102,203,204,129,231,237,157,149, 9, 33,176, 88, 57,251, 37,235, 23, 32,156,221,
- 60, 17, 28,100,143,241,193,166, 16,131, 16, 64,163,209,192,195,163,238,121, 71,121,158,135,217, 98,255, 23, 55, 91,185, 7,131,
- 58,204, 22, 27, 40,165, 72, 72, 72,156,149,146,156, 50,184,105, 72,147, 46,145, 45, 90,185, 43,164, 12, 0,212,214, 95,140, 16,
- 66, 70, 1,176, 82, 74, 31, 12,138, 8,106,214,169,124,239,158,159, 84, 3, 6, 14, 44, 50,235,181,187,171, 28,204, 2,232, 91,
- 97,198, 28, 50, 25, 85, 47,164,210,132, 14, 9, 8,239,176,104,244,216,215, 66,187,247,234,131,147,199,127,195,129, 61, 59,182,
-148,229,221,169,117,190,174,170,132,133,133, 61, 50,138,176, 73,211,208, 71, 70, 17, 6, 5,135,212,104,176, 92, 92, 90, 56,183,
-104,219, 45, 32, 53,223,130, 67,135,126, 69,153, 46,231, 67,179, 89,111,128,152,174, 63,182,231,219,241,163, 38,207,115,110,223,
-182, 13, 92,157,148,240,116, 83,227,242,165,115,248,116,254,220,115, 48,152,123,215,253,249, 89, 81,223,200, 72, 73,211,134, 65,
-111, 5, 54,110,134,203, 23,206, 32, 41,225,230,173,171,177,231,154, 53,141,106, 7,141, 95,224, 91, 36, 50,114, 41,141,139,171,
-115,165, 10,202,209,140, 87, 39,189, 99,127, 92,241,245,217,190,101,176, 20,120,248, 77, 72, 96,179, 90,184,109,235, 62,205,171,
- 58,138,176, 38,221,242,210,226,221,127, 92,184,241,238,160, 62,157, 73,101, 83, 96,165,169,122,120,191,105, 3, 21,146,110,196,
-243,214, 50,157,195, 70,184, 34,250,220, 41, 83,223, 84,216, 99,231, 65,237, 19,171,213,235,125, 3, 0,229,156,228,165,111, 62,
-121,159, 92, 75, 41,195,141,251, 37,246,102,193, 10,131, 37,147,176,144, 86,252,117,104,106, 50,134, 89,246,202,240, 62,200,215,
-153,193, 83, 90, 49,151, 30,129, 72, 36, 70,106, 9,144, 94,162,135,182, 56, 23,201,247, 83,160,203, 73, 6,195,176,240,104,208,
- 20,134, 58, 39,228,177, 83,202,169, 67,173, 60,154, 12, 31,208,153,221,119, 54, 27, 10,153, 8,165,249,233, 56,115,100,167,145,
-114,220, 90,179,213,252,131, 23,149,222,140,187,177,203,161, 85, 74, 8,160, 45, 41, 51,123,203, 36, 44,118,110,250, 18, 47,142,
-153, 98,127,162,162,170,239,206, 93, 0, 66, 8,138,116,122, 0,228,145,172,104, 77,126,164, 2,109,149,204,211, 35,251, 85, 76,
- 81,117,251,164, 98,223, 92,131,134,249, 33, 83,101,126,168,220,252,144,158, 67,147, 35,215,152,193, 18, 51,236,111,155, 86,189,
- 47,191,149, 39,195,197,248, 28,188,208,217, 31,134,146,124,172,251,106,165,190,220,106,233,167,189,225,184,185, 2, 0, 48,255,
-199,222,121,135, 69,113,173,127,252,123,182,179, 75, 47,130, 44, 69, 1, 21, 16, 80, 81,209, 24, 75,176, 36,246, 24, 73,212, 36,
-154,104,138, 37,215,154, 98,139,209, 24, 77, 52,198,154,102, 44,177,183,196, 88, 98,139,133,136, 37, 18, 11, 54, 64, 68,186,192,
-194,210, 97,217,101,219,204,156,223, 31,128, 33,132,178,139,222,252,238,205,157,207,243,240,184, 59,156,249,206, 57,187, 43,243,
-238,123,222, 34, 24, 60,246,141,247, 18, 2,218,119, 52, 70,199,107,210,203,180,230, 70,227, 24,122,190,180, 48,225,230,137,175,
-135,149,155,211,223,177, 83,134,178, 28,195,172,210, 21,220, 95,218,208, 88,142,163,210, 37, 27,126,168, 54,174, 56, 14,243, 62,
-223, 5,202,177, 53, 5,252, 88, 80,150,195,244,143,190, 5, 83,243,152,229, 88, 16, 51,171,104, 72,171, 46,118, 54,146, 51,157,
- 42,215, 57,214, 55,174,186,118,237, 90,230,228,228, 4, 87, 87, 87, 56, 59, 59,163,214, 32,178,132,166,182, 5, 59,116,232, 0,
- 59, 59, 59,196,196,196,192,206,206, 14,182,182, 45, 43,144,111,231, 17, 60,182,231,128,209,123,250,143,124, 67,112,238,240, 38,
-246,106,204,241,151,170, 10,146, 44, 54, 2, 88,150, 37,102,179, 25,131, 35,187,101,221,186,255,240,151,101, 75,151, 14,137, 24,
-240,162,236,233, 32,119, 84, 25, 25,228,100,103, 35,246,252,207,250,246,190,110,191, 60,221, 61, 48,199,108, 54,131,101, 27, 47,
-186, 87,139,193, 96, 44, 22,136,109, 92,199,189,252,170,236,250,181,107,123,108, 61,130,246, 9,132,220,109,202, 10, 59, 3,116,
-108,231, 78, 29, 97, 98, 56, 84,233, 42, 74, 90,178,238,132,132,132,235,107,214,172, 9, 18,139,197,222, 7, 15, 30, 44, 42, 45,
- 45,181,170, 93,208,217, 19,215, 54,136,236,204, 15, 36, 84,255, 74, 27,133,246,185,236,190,189,240,242,136, 62,216,127,226, 50,
-206, 95,140, 69,150,206,238,150,214, 40, 60,146,147,163, 50,132, 56,151, 31,122,161,183,159,240,167, 93, 21, 63,185,247,159, 55,
-134, 82,249,217,194,152, 37, 22, 39,120, 16, 2, 84, 84,153,235,120,176,170,227,155, 4, 2, 98,177, 7,139, 0,233, 23,175,196,
-133,117, 11,236,136, 91,105, 21, 40, 44, 53, 64,103,172,254,220, 83, 80,184, 58, 72, 32,147, 8,145,149,145, 14,142,154, 50,172,
-121, 45, 64, 81, 56,244,165, 41,213, 9, 48,224, 68, 98,177, 8, 20, 53,197,117,109,164,149,238,238,238, 22, 25, 88,102,150, 69,
-212,224,158,120, 42,162, 51, 70, 77, 93, 3, 0,136,222, 57, 15,206,118, 18, 28, 60,120, 16, 15, 47,175,219, 29,240,244,180, 51,
-241,119, 19, 95, 76,184,121,229,213,161,221,228,225,173, 69,121,141,110,109, 80, 74,143, 18, 66,164, 0,250, 19, 66,158, 5, 16,
- 67, 41, 53,179, 12,247,112,200,144,193, 28,203,114,143, 98, 34, 8, 33,206, 0,122, 1, 40, 1, 16, 71, 41,109,210, 69, 98,235,
- 30, 60, 8, 2,236, 3, 33, 54,118,114, 69, 86,175, 65, 47, 43, 35,158,234,233,248, 66,212, 24, 72, 37, 82,156, 59,123, 26, 95,
-174, 91,249, 67,101,222,189,191, 20,169,109,138,134,130,215, 27, 58,214,212,118, 81,121,185,163, 54, 57,241, 86,105,186,218,232,
- 44,114,234, 0,177,204,126, 10,113, 84,110, 16,202,236,150,120, 61, 53,209, 33,250,242, 53, 36,220,186, 2,165,155, 28,233,169,
- 41,186,248,219, 55,191,213, 17,241, 82, 90,152,104, 81, 32, 46, 0, 40,138,217, 23,159,154, 48,196, 89,111, 98,113,233,215, 19,
-122,142,225,134,252,126,225,100,170, 79, 96,132, 77, 88,196, 64,231,162,163, 91,163, 0,236,111, 78, 39,227,234,238,191,132, 94,
- 4,244, 28,171, 58,121,246,162,157,210,183,189, 16, 68, 0, 67,149, 22,133, 89,241,140,190, 66,173, 83,223, 61,162,180,100,126,
- 89, 76,238, 71,139, 87,126,247, 78,183, 46,161,182,148, 74,255,228,177,170,125, 92,172, 49, 86,199,204,106,203,144,118,247,178,
-190, 48,165,188,201,144, 21,150, 53, 43,138,139, 75, 30,165,230,203, 43,157,218,150, 59,150, 87,183,141, 33, 0,132,128, 99,185,
-211, 35, 79, 69,113,113,137,148,101,205,205,222, 59, 0, 16, 39,123, 27,220,205, 80, 61, 10,104,151, 73, 4, 53,177, 87,127,120,
-178, 44,129, 0,221, 68, 82, 91,228, 22,235, 33,160, 20, 28,199,128, 49, 27, 81, 89, 81, 1, 85,110, 62,212,234, 2, 84,106,202,
- 33,183,115, 66, 88,120,119,216,219,219,227,222,141,243, 0,200, 49, 75,244,245,156,164, 67, 68,247,238,226,132, 76, 13, 76,102,
- 14, 98,152,112,233,151, 3,122,198,108, 28,169,190,123,228, 87,139, 38, 89, 7,134,163,231,226,239,103,133,250,184,121,146,155,
-105,101,216,181,249,171,234,108, 82,166,218,155,153,240, 80, 11, 85,177, 22,185,217, 89, 20, 28,107, 81,152, 69, 29,234,239,106,
- 89, 28,250, 97,133,230, 19,165, 81, 3,139, 97, 24, 27,223, 54,109,241,242,148, 9,248,246,219,141, 72, 78,203,194,230,111,214,
- 87, 27, 87,119, 14,255,102,137,120,221,110,219,218,252,164, 85,111,124,155,145,115,236,118,169,160,202,216,116,255, 41, 69, 43,
- 63,244,125, 99,237,233, 42, 77,137,148, 53,232, 68,199,118,191,177,175, 33, 77, 0, 16, 10,136,177,102, 91, 16,132, 16,212,110,
- 11,126,251,201,219, 80,200,132, 32,132, 64,103, 96,240,218,156,181,216,185,182,250,155,213, 91,239,188,247,167, 63, 60,245, 53,
-107, 12, 33, 50,105,136,255,243,203,191, 79, 60,122, 57,211, 53,109,248,240,103,202,195,195,195,203,228,114, 57,108,109,109,225,
-224,224, 0, 7, 7, 7, 56, 57, 57,161, 33, 26,208,244,104, 46,230, 74, 32, 16,192,193,193, 1,114,185,188, 65,195,173,185,238,
-229,118,173, 3,199,244,232, 63,122,223,128,231,223, 20,156, 59,188,153,187, 17,115,108, 76, 85,193,253, 38,189, 76,245, 53, 57,
-142,187, 29, 21, 21,213,105,202,148, 41,146,133,239, 68,157, 62, 29, 19,151,124,232,236, 79, 35, 75,202, 52, 62,148, 82, 56, 57,
-218,101,191,244,108,167, 99,125, 35,130,178,162,163,163,185,125,251,246, 25, 8, 33,119,155,210, 4,128,162,162,130,237,209,209,
-191,126,222,239,153, 72,108,222,177,111,120, 98,226,189,225,169, 41, 15,224,211, 38, 0,126, 1, 29,160, 35, 78,136,190,112, 9,
-154, 18,245,118, 75,230, 89,151, 78,157, 58,121,117,233,210,197,187,172,172, 76,255,209, 71, 31, 5,177, 44,251,115, 88, 88, 88,
-247,208,208,208,188,132,132,132, 70,191, 21,215,213,188,178,107, 66, 33,128, 93,109, 35, 39,253,168, 50,149,205, 2,176,210,199,
-215, 23,231, 47,198,226,247,223,174,110, 44, 82,248, 46,157,244,234,235,111,183,117, 21,191, 61,234,233,182, 66,119,103, 5,246,
-110, 94, 35, 60,122, 37,115, 93,102,177,121, 11,128,229,205,205,179, 46, 37, 26, 19,122,135,184,130, 97, 40, 88, 74, 33, 32, 4,
-246,114, 81,131, 6, 86, 67,154, 34,163,236,141,105, 83,167,164,134,117, 14,159,253,234,196, 41,146,240,118,190,184,246,160, 20,
- 0,129,171,131, 2, 42, 85, 30, 46,253,188,133, 41,205, 77,218, 40, 20,114,127,217,222,105,106,158, 57,113,251,219,215, 62,246,
-244,244,156,124, 43, 62, 30, 49, 49, 49,112,117,117, 69,173,113,213,208, 22, 97,125,205,210, 82,205,111,203,214,108,233,253,246,
-248, 81, 24, 17, 25,138, 11,215, 83, 97, 52,115, 48, 49,220,163, 32,215,244,216,239,164,179,198, 5, 24,223,137, 10,172,208,153,
-165,153, 75, 50, 43, 46,212, 45, 34, 91, 95,147, 82,106, 36,132,156, 6,208, 19,192, 40, 66,200, 25, 74,105,247, 58,115, 32, 0,
- 58, 1, 8, 5, 16, 75, 41, 77,183,104,237, 2,236,141,187,126,195,213,196,112,184,116,245,118,199, 1,189,195, 65, 57,138,235,
-215,111, 96,235,182,173,250,187,119,110,173,214,170, 91,127, 66, 27, 41,110,219,216,235,105,105, 22, 97, 67,199,106, 53, 41,141,
- 97,236, 60,130, 55, 94,185,124,225, 67,153,178, 59,130,135, 45,124, 62,247,246,207,207,183, 14, 25, 12,183,118,189,161,186,125,
- 4, 55,127,219,123,242, 6,195,204,183,225, 4, 89,218,194,164, 70,141,253,198,230, 41,179, 81,204, 8,237,250, 12,178, 31,102,
- 34,227, 65,252,206,170,226, 7, 42,187,214,193, 59,115,115,178,166,250,133,244,198,229,211,251,103,162, 17, 3,171,185,207,188,
-155,180,124, 99,204,229, 43, 47,231,254,248,179,135,166,178, 74, 46, 18, 9,116, 50, 33,212, 18, 93,234, 1, 75,231, 73, 19, 19,
- 77,238,237,158,142,122,117,202,162, 19,235, 62,255, 72,236,238, 36, 67,126,169, 30, 21, 58, 51, 42,170,204, 16, 18,160,189,210,
- 14, 85,218, 10,252,126,114,151,153,154, 74,162,106,226, 81, 27,212,108, 21, 58,106, 57, 33,152,190,104,209, 2, 8,165, 14, 74,
-255,129, 11, 77, 2,255,214,112, 70,189, 98,230, 46,128,255,192,133, 48,104,212, 35, 23, 45, 90, 16, 68, 41, 29,216, 42,116,148,
-166,182, 23, 97, 99,107, 47,214,152, 48,190,191, 15,140,230,234,250, 97, 44, 91, 29,107,199,213, 84, 53,175,158, 80,243,107,167,
-128,228,135, 19,177,200, 85,151,162,202, 96,134,209,196,192,200,176, 16, 8,132,112,118,118, 70,123,255,174,112,114,116, 64, 65,
- 81, 49,174,199, 94,198,239,201,183,210, 41,176,188,200,165,124,143, 37,239, 17, 17,217,182,247,112,119, 35,106,141, 17, 54, 50,
- 33,126,143,185, 96, 6,176,221, 18,227,170, 33,205,114, 93,217,218,249,203, 54,188,242,237,154, 37,173, 59,251, 57, 32,187, 72,
-143,156,194, 42,104,244, 12, 0, 10,134,165, 48,234,203,113,255,250, 47,249, 12,116,107,155,187,198,127, 59,141,123,176,196, 98,
-195,245, 59,201,178,249, 31,127,129,123, 41,233,216,186,241, 43,173,193, 10,227,170, 33,182,189,227,215,236, 55,160, 63, 83, 83,
-183,244,147,204, 38, 71, 53,180, 45,200, 81,138, 99,191,231, 63,106,251, 81,187, 85, 24,151, 82,214,164, 22, 33, 68,252,197,140,
-240,185,181,134,208,151,135,115,127,151,201,138,184,135, 15, 31,150,238,217,179,231,145,209, 35, 20, 10, 81,155, 61,104, 52, 26,
-155,205, 42,114,118,144,134, 78, 24,218,118, 92, 99,198,149, 80, 40, 4,199,113,143,188, 87,214,110, 61,218,186, 7, 61,219, 99,
-192,232,253, 3, 70,189, 37,136, 62,178,133,187, 17,243,243, 75,149, 5,247, 15, 91, 37, 2,160,180,180, 52,129, 16,242, 96,245,
-234,213,225, 91,183,110,245,127,255,253,247,211,182,172,152,250, 37, 0, 20, 23, 87,183, 69,188,121,243, 38,157, 54,109,154, 65,
-175,215,167,151,150,150,198, 81, 11,154, 92,235,212,247, 87,111,255,118, 85, 80,118,110,222,196,118,161, 61,225,230,215, 3,173,
-219,245, 68, 73,165, 9, 87, 83,114,145,150, 24,141,123, 87, 14, 30,168, 42,244,176, 40, 32,183,150,240,240,112, 95,177, 88, 60,
-146, 82, 26,104,107,107,235, 71, 41,149,138, 68,162, 49,132,144, 7, 12,195, 36,134,132,132, 68, 39, 38, 38, 90,220, 51, 44, 51,
-102,187,161,109,228,164, 13, 89, 58,219,200,180,124, 93,215, 44,157,237, 77,157,204,241,221,130,232,245, 6,143,231, 86,175,131,
-185, 56,225,224,206,242, 67,123, 55,175, 17,142,159,252, 30, 27, 95,226, 48, 75,100, 39, 63,187,114,146,197,153,251, 16, 16,146,
-247,254,251, 31,252, 81,166,129, 84,111, 12,214,148,108,104, 54, 51, 5, 0,106,250, 41,206,147, 43, 67,191,142,159, 61,117, 89,
-167,136,222, 19,158, 25, 50, 78, 96, 39,177,197,217,195,223,209,244, 59,231,127, 20, 81,246, 67, 93, 65,234, 95, 12, 12,107, 49,
- 26,141,127, 50,172, 44,241, 94, 1, 64,161,107,121,228,137, 51, 49, 19,143,255,114, 97,197,208,103,251,184,126,243,209, 88,172,
-218,116, 20,118, 10, 25, 40,199, 98,220, 0,223,151,238,237, 27, 60,210,199,195,198,235,167,243, 57, 23,167,175,139,159,167,211,
-153,146, 27, 51, 98,106,169,169, 47,244, 59, 33,164, 61,128,145,132, 16, 14,128, 45, 0, 45,128, 74, 84,111, 72, 28,161,148, 90,
-236, 85, 4,170,235, 54,101,168,245, 56,122,232, 32,110, 95,141,198,189,123,247, 53,247, 18,239,125, 69, 68,116, 93,101,126,114,
-139, 60,171, 13,101, 17,178, 28, 26,206, 44,108, 2,173, 80,254,217,205,227, 95, 68,118, 24, 48,179,151,107,187,222,112,110, 83,
-109, 83,150,231,196, 35,251,250,193,163, 26,149,100, 12,165,241, 77, 7, 50, 53,129,210,199,191, 3, 39,148,226, 74,204, 73, 80,
-142,219, 8, 0,148,227, 54,222,186,124,114,106,207,161,111,194,197,189, 77,151,218,212, 46,107,181,229, 34,166,252,196,142,207,
-126,204,200,200, 64, 82, 82, 18, 82, 82, 82, 80, 82, 82,130,189,123, 47, 89, 85,171,169, 32,245,202, 89,143,192,126,131, 95,153,
- 52,251,216,232, 23, 71,219,248,250,181, 19, 4,121, 59,192,213, 94,132,251,169,185, 72,141,127,192,165,220,185,168,167, 85, 5,
- 47, 20,164,252,214,168,119,164, 85,200, 24, 15,129,144,204,143,254,185,186,183,224,160, 81,111, 4,205,157,254,254, 83, 46,174,
-206, 13,254, 29, 47, 41, 46,149,126,252,241,226,160,218,241,205,245, 34, 20, 8,133,154,201, 83,103,216, 10,136,224,209, 54, 32,
-173,221, 35,171,253,135, 82,128, 0, 18,177,168,217,207,232,196,209,125,192,112, 28, 42,171, 76,168,212,153, 80, 86,169, 71,126,
- 81, 25, 18, 18, 83,113,237,210, 41,100,164,166,104, 24,134, 57, 15,138, 67,133,174,229, 7,234, 23,214,109, 10, 14, 66, 95, 23,
-103,123,100,148,234, 33,151,136,160,122,152,194,152, 24,125,139,139,172, 23,221,250, 57,207, 35,108,212,115,147,222, 89,248, 75,
-191,126,125, 29, 58,119,237,110,235,230, 96, 15,137,136, 32,245,161, 26,119,111, 94,215,102, 37,223,170, 96,205, 85, 67,138,226,
-127,126,236, 46, 45,255,233, 52,106, 96,153, 88,102,208,123, 11, 87,158, 97, 89, 86, 46, 18, 10,171,204,148, 27,242, 56,198,213,
-191, 11, 74,185,156,119,102, 85, 7,173,215,126, 33, 48,179,156,252,173,119,222,175,170,251, 5,129,152, 89, 69,173,231,170,153,
- 76, 61, 97, 97,153, 65,179,224,219,219, 59, 63,223,153,120, 16, 64,226,227,102,246, 1, 64,105,133,241,182,235,179, 63,140,210,
-232, 24, 2,224, 94, 3,154,218, 1, 3, 6, 84, 79,160,198,136, 99, 89,214,226, 27,132,212, 70, 49,181,255,200, 55, 4,209, 71,
-183,114,215,207, 31, 29,211, 18,227,170,150, 26,131,233, 42, 33, 36,254,195, 15, 63,140,240,240,240,240, 88,188,120,177, 77, 69,
- 69,133,248,155,111,190,209, 23, 21, 21,229, 87, 84, 84,196, 82,106,121,124, 66,205, 77,115,146,220,163,227,119,228,224,247,207,
- 57,187,123, 13,118,114,243, 9, 44, 45,204, 73,173, 40,206,249,133,112, 56,171, 41,184, 31,107,237, 92,111,221,186,245,176, 83,
-167, 78, 71,132, 66,161, 55,203,178,110,132, 16, 59, 74,105, 41,195, 48,165, 28,199,229, 89, 99, 92,213,146, 25,179,221,208,239,
- 95,219,246, 21, 87,113, 82, 19,177,217,151, 25,179,221, 0, 0,234, 51,239,235, 0,252,236,209,127,222,232,163, 87, 50,190, 74,
- 40,117,152, 81, 16,243,185, 69,174,248,186,228,222, 60,208,220,165,181, 73, 0, 0, 32, 0, 73, 68, 65, 84,190,249, 81,150, 81,
-165, 74,200, 1, 48,209,214, 35,104, 77,252,205,216, 37,132, 66,204,130, 89,174, 83, 63,184,241, 36,244,197, 98,177,190,123,247,
-238, 13,102, 11,202,100,178, 38,235,107,213,252,161,223, 74, 34, 35,119,252, 18,125,105,226,169,179,151, 87, 60,213,171,143,171,
-141, 76,137, 54,206, 38,236,248,160,219,204,232,155,133,215,158,255,224,226,183,105, 42,253, 29, 74,169,197,117,208, 0,128, 82,
-154, 66, 8, 41, 7, 48,138, 82,186,153, 16, 50, 25,192, 61, 0,241, 86, 27, 2, 28, 94,237,213,171,199, 94, 66,136,136, 50,220,
-170, 88,177,112,159, 62,239, 94, 78, 75, 12,138,186,116,246,115,192,228,169, 83, 59, 4,180,251, 35,139, 48,180,173, 61,198, 79,
-124,187, 67, 27,255, 14,143,142, 5,249, 52,253,133,138,170,226,170,136, 71,167,103,239,159, 89,253,145,107,234,111,239,200, 93,
-188,237,180, 69,153, 37,165,153, 55, 86,235, 10, 60, 86,215,239,208, 96, 45, 25, 41, 9,235,190, 95, 51,239,253,188,220,212,173,
-218,130,228,234, 93,135,130,228,120,133, 71,224, 71, 69,249, 57,239, 23, 23,164,173,110,233,107,161,213,106, 85,123,246,236,113,
-234,221,187,183,192,195,195, 3,133,133,133, 56,127,254, 60,199,113, 92,179,141,153,235,163, 78,190,120,158,180,107,231,178,111,
- 71,249, 42,145,220,126, 24,195, 66, 73, 41,133, 72, 64,242, 76,134,242, 95, 10,157,170, 62,160,119, 98,155,254, 92,114, 44,161,
- 2, 42,168,237, 45,200,113, 28,249,226,235, 93,153, 66,177,180,193, 45, 85,214,108, 84,112, 28,103,113, 47, 66,181, 48,203, 53,
-204, 28,220,124, 22, 31, 5,226, 73, 82, 51, 95, 78,233,233,167,135,190, 54,152, 97, 88, 51,170,227, 19,107,127, 10, 40, 37,191,
-130,176,103,138, 92, 52,177,214, 24, 85,117, 49,153, 76, 78, 16, 72, 96,175, 48, 67, 0,130,138,242,114, 89, 43, 86,122,175, 37,
- 90,181,168,227,143, 38,144,200,200, 54,198,115,191,190,126,225,210,111, 99, 40,199,249,177, 20, 0, 37, 25, 70,147,254,199, 2,
-135,162,157, 45,157,239,127, 27,228, 49,255,126, 52, 45,110,225,118,201,127,154, 38, 33, 68, 2,192, 13, 0, 75,235,180,191,121,
- 28,205, 58,199, 27,237, 45,216, 82, 77,160,186,175,152,204, 70,241,129, 78,167,217,170, 83, 39, 91,124,211,183,228,245, 36,132,
- 56,202,100,178,174,118,118,118,226,162,162,162,171,148,210, 38,191,121,254,183,190,239,117,233,251,198,118,183, 1,131,159,158,
-125,246,196,181, 13, 53,219,135,143,240, 30,179,206,102,252,176,126,239,238, 58,116,124, 93,253, 44,194,127,194,218,255, 93,154,
- 36, 50, 82,228, 94,234, 48,145,101,185,229, 3, 58,104,116,249,233,247,167, 93,186, 91,120,149, 82,218,104, 61, 49, 11, 63,159,
-175,160,198,131, 69, 41,221,215,212, 88, 75, 53,173,165, 33, 77,247,176, 23, 62, 1,129, 5, 69, 99,107,160,184, 87, 16,127,100,
-113, 83,154, 64,117, 64,186,162, 16,206,186, 34,183, 98,107, 13,171,255,151,247,157, 16, 97,167, 78,157,250, 74, 36, 18, 95,150,
-101, 21, 70,163, 81, 87, 85, 85,149,145,153,153,121,133, 54,210,144,252,223, 61, 79,143, 78, 47,172, 19,139,197,179, 0,192,108,
- 54,111, 80,223, 61, 50,167,169,115, 27, 27,255,183,220,143,198,140, 17,210, 31,127,180,184,113,187, 37,154,181,120,117,125,169,
-204,108,102, 30,245, 30,146,136, 69,229, 57, 55, 15, 54, 28,247, 98,161, 38,207, 31,240, 6, 22,175,201,107,242,154,127,187, 38,
-105,178, 89,119,203, 52, 45,133,215,228, 53, 1, 64, 25, 50,210, 7, 0, 84,137,199, 44,202, 54,110,104,252,127,235,218,255, 83,
- 53,255,105, 88,213,236,153,135,135,135,231, 73, 96,137,113,197,195,243,239,196, 82,195,170,165,227,121,120, 8,234,181, 90,169,
-197, 26,203,148, 16,210,160, 70, 83, 88,224,246,231, 53,121, 77, 94,147,215,228, 53,121, 77, 94,243, 31,166,217,156,246, 63,197,
- 51,198,111, 17,242,154,188, 38,175,201,107,242,154,188, 38,175,249,255,174,249, 79,227, 9,181, 70,254,231, 65, 8,241, 32,132,
-120, 60,233,177, 60, 79, 6, 66,136, 23, 33,196,203,202,241,158, 45,188, 22,255,254,242,240,240,240,240, 88,197,223, 30,131, 85,
-123,163,106, 46, 59,207,210,113, 79,250,220,154,243, 87, 16,130,185, 53,143, 87, 81, 74, 27,173, 8,108,225,216,102,235,115, 7,
- 6, 6,218,202,229,242,151, 88,150, 13,224, 56, 14,132,144, 84, 66,200,143,119,239,222,173,194,163,234, 41, 77,227,235,235,235,
-103, 99, 99, 51,145, 16,210, 17, 0, 40,165,247,244,122,253,142,135, 15, 31, 90, 87,201,187, 1, 8, 33, 4,192,100,153, 76, 54,
-214,201,201,169,125,105,105,105,138,209,104,252, 17,192,166,150,164,111, 43,149,202, 64, 0,175,115, 28, 39, 18, 8, 4,251, 84,
- 42,149, 69,173, 7,106,230, 98,241,251, 83, 51,102, 45, 1,102,131,128, 90, 50,254,113,174, 85,143,199,253, 2,195,199, 41,241,
-240,240,240,252,151, 98,149,129,229,237,237, 61,148,227,184, 87, 0, 64, 32, 16,236,203,201,201, 57,101,205,249,150,222,172, 30,
-231,166, 86,239,220,117,148,210,247,173,156,163, 7, 33,152,203,113, 84, 0, 0, 2, 1,153,231,225,225,225, 34, 18,137,254, 82,
-243,137, 97, 24, 57, 33,120,139,227,170,251, 37, 9, 4,100, 46, 33,100,131,181,134, 93, 96, 96,160,173,131,131,195,162,141, 27,
- 55, 58,116,236,216,145, 0, 64, 92, 92,156,211,140, 25, 51, 58,116,234,212,105,217,221,187,119,155,109,121, 17, 16, 16,240, 66,
-120,215,136,153,115, 62,152,231,225,238,234,102,207,176,140, 41, 55, 55, 79,185,126,221,231, 79, 5, 4, 4,124,155,150,150,102,
- 81,223,192, 90, 67, 74, 36, 18,141,181,177,177,105,167,215,235, 83, 25,134, 57, 40, 20, 10, 7, 47, 95,190, 60,108,248,240,225,
- 54,229,229,229, 82,134, 97,218,239,217,179,231,221,109,219,182, 13, 37,132,140,106, 42,104,185,214,211, 68, 41,173, 91,247,230,
-149,171, 87,175, 14, 20,137, 68,164, 71,143, 30,114, 66,200, 12,250, 71,245,238,134,198,215,106,253,229,253, 33,132,124, 73, 41,
-205,247,241,241,233,206,178,236,107, 0, 32, 20, 10,119,101,103,103,223, 32,132,180,182,145,201,102, 87,233,245, 4, 0,177,230,
- 61,106,232, 90,118,118,118,187, 42, 43, 43,239,215,254,190,102,158, 45, 50,228,121,120,120,120,120,254,185, 88,101, 96, 81, 74,
- 95, 75, 73, 73, 81,112, 28,135,160,160,160, 9, 0, 44, 54,176, 26,186, 89, 13, 28, 56,176,171, 92, 46,255, 83, 77,168,170,170,
- 42, 41, 33, 24,216, 18,163,165,246, 26, 70,163, 65, 32, 22, 75, 33, 20, 10,222,235,210,165, 75,247,162,162,162,104,150,101,191,
-203,207,207,183,186,187, 58, 33, 4,223,127,255,125, 71, 15, 15,143,191, 20,132, 83,171,213,146,145, 35,255,210,116,219,106,228,
-114,249, 75,223,125,247,157, 67,112,112, 48,209,233,116, 48,155,205,240,245,245, 21, 44, 90,180,200,241,211, 79, 63, 29, 3,160,
-193,246, 49,181,248,248,248,248,119,139,232, 57,115,199,246,237, 61,203, 75, 74,244, 91,215,110,188,105, 16,201,116,109, 58, 6,
- 74, 62, 90,178,220,241,147,197, 11,166,248,248,248,196,103,103,103, 55, 89,213,155, 16, 34, 0,112,120,246,236,217,161, 35, 70,
-140,144,106, 52, 26, 27,157, 78,215,118,207,158, 61,139, 34, 34, 34,236,186,118,237, 42,221,191,127, 63, 41, 43, 43, 3,165, 84,
- 17, 28, 28, 76,199,140, 25,163,255,225,135, 31,166, 3,248,178, 17,205, 6,141,101,150,101,197,181,142, 47,134, 97,164,168,254,
- 44,154, 90,224,157, 34,174,174,174, 19, 1,172, 96, 24,230,173,243,231,207,119, 5,128,254,253,251, 75, 0,220,112,112,112,232,
-109, 50, 26,173,107,118,220, 8,195,135,143, 0,128,205,158,158,158, 23, 11, 11, 11,189, 9,193,120, 75,231,201,195,195,195,195,
-243,191,133,181, 6,150, 4, 0, 46, 94,188, 8, 74,169,180,185,241, 13,240,232, 70, 71, 8,193,172, 89,179,224,233,249,231,176,
-152,188,188, 60,196,196,156,111,129,244, 95,175, 1, 0,159,126,250,169, 99,113,113,241,243,223,127,255,253,224,214,173, 91, 47,
-202,207,207,143,105,234,100, 74,169,154, 16,178,170,198, 51, 2,169, 84,150, 49,101,202,148, 27, 53,191, 11, 56,118,236,152, 98,
-228,200,145, 58, 66, 72, 26, 0, 72,165, 50,119,161, 80,224, 71,171,123, 76,173,106,137, 55,195,100, 50,181, 11, 14, 14, 38,149,
-149,149, 48, 26,141,200,204,204, 68, 97, 97, 33, 90,181,106, 69, 24,134,105,215,220,249, 10,133,226,205,217,115,222,111, 85, 94,
- 82, 90,101,214,104, 76,118, 28,203, 56,216,136, 73, 69, 97,113, 89, 70,182,131,238,205,105, 51, 69,139,231,191,251, 38,128,133,
-205, 72, 77,159, 51,103, 78,199, 30, 61,122,120, 29, 56,112,128,148,151,151, 67, 36, 18,217,133,135,135,163,123,247,238,108,116,
-116, 52,241,247,247, 71, 88, 88, 24, 46, 95,190,140,223,126,251,141,116,237,218, 85,113,248,240,225, 9,104,192,192,170,111, 84,
- 11,133,130,249,227,198,141, 27,170, 80, 40,204,145,145,145,120,251,237,183,161,213,106,209,177, 99,199,206,145,145,145,177, 81,
- 81, 81, 98,129,128,132,177,108,181, 51,172, 33,227,186,222,251, 67, 38, 78,156,164,182,179,179,139, 82, 42,149,247, 9, 33, 34,
-137, 68, 82,123,109,161,135,135, 71,171,206,157, 59, 79,115,113,113, 41, 16, 10, 4,238,180,186,201,138,197,239, 81,237,181, 70,
-142, 28, 49, 15, 32, 24, 48, 96, 64,241,204,153, 51,217,123,247,238, 69, 70, 69,141,126,234,193,131,148,199,242, 92,242,240,240,
-240,240,252,115,177,202,192, 34,132, 20,221,186,117,203, 83,175,215,131, 16,210,172, 55,168,110,134, 1,165, 84, 45, 20, 10,191,
- 21, 8,200, 59,132, 16,132,133,117, 74, 95,191,126,125, 67, 21,205,141, 97, 97,157,210,133, 66,129, 63,165, 20,132, 8, 54,114,
- 28,171,110, 72,179,129,235,169, 9, 33,171,164, 82,217, 92, 0,240,244, 84,170,143, 31, 63,110,126,233,165,151,240,197, 23, 95,
- 72,231,207,159,191, 92,169, 84,142, 83,169, 84, 57,245,206,139,175,247,124,129,135,135,135,203,247,223,127,223,113,202,148, 41,
- 55,114,115,115,103, 3,128,151,151,215,122, 0,157, 8, 33,105,117,142, 97,211,166, 77,221,223,124,243,205,123,106,181,122, 65,
- 99,154,141,209,174, 93, 59,191,145, 35, 71,202, 0,192,108, 54, 35, 59, 59, 27,217,217,217, 40, 46, 46,134,217,252,231,214, 98,
-141,105, 18, 66,130,157,157,156,109,183,174,217,120,163,149, 76, 72,220,124,148, 68,226,224, 36, 18,216,217,203,168, 80, 88,213,
-198, 71,105, 79, 8, 9,110,228, 53,123,164, 41,145, 72, 38, 12, 30, 60, 88,177,127,255,126, 18, 22, 22, 6, 39, 39, 39, 92,188,
-120, 17,183,110,221, 66,105,105,169,128, 97, 24, 68, 68, 68, 96,213,170, 85,240,241,241, 65,121,121, 57, 50, 51, 51,221, 36, 18,
- 73,171,198, 52, 81,207,224,157, 59,119, 46,220,221,221,193,178, 44,242,242,242, 80, 89, 89, 9, 91, 91, 91, 56, 58, 58, 66,165,
- 82,225,232,209,134,119, 50,235,125,150, 22,200,100,178,239,219,180,105,179,118,230,204,153,158,174,174,174, 48, 24, 12,139,138,
-139,139, 49,119,238, 92, 0, 64,143, 30, 61, 58, 83, 74, 79,189,249,230,155,240,243,243,203, 45, 41, 41,121, 24, 23, 23,247,182,
- 86,171,141,111, 72,179, 49,188,188,188,206, 20, 20, 20,246,237,223,191, 63,202,202,202, 76, 75,150, 44, 65,120,120, 56, 58,116,
- 8,108,118,158, 79, 10, 94,147,215,228, 53,121,205,255, 5,205,127, 26, 34, 0, 32,213, 61, 60, 73,253,199,245,161,148,150,122,
-121,121,121,202,229,114, 80, 74, 75,173,189, 24,203,178,211,221,220,220, 10, 22, 44, 88,208, 39, 48, 48,208, 56,125,250,244,248,
-140,140,140, 15,235,142,241,243,243,251,244,235,175,191, 70,114,114,114,230,138, 21, 43, 46, 23, 21, 21, 45,179,230, 26,148,210,
-249,132,144,245, 0,160, 82,169,138,142, 29, 59,214,227,194,133, 11,243,215,175, 95,239, 57,125,250,116,233,204,153, 51,167,161,
-121, 79, 14, 68, 34, 81, 85, 67,219,130, 13,225,225,225, 97,106, 40, 70,171, 41, 34, 35, 35,133, 15, 31, 62,236, 40,151,203, 95,
-126,247,221,119,229, 38,147, 9, 42,149, 10,217,217,217, 40, 43, 43,131, 64, 32, 64,114,114, 50, 71, 8,185,111,129, 92,165,209,
-108, 54,216,250, 40,205, 35, 71, 13,238,116,247,218,173,100,185,139,139,160, 83, 68,120, 72, 82, 74,102, 28, 1,140,168,254,105,
- 18, 71, 71,199,192,162,162, 34, 84, 84, 84,160, 85,171, 86,216,176, 97, 3, 60, 60, 60,160,211,233,144,144,144, 64,189,189,189,
-201,165, 75,151,160, 84, 42, 81, 88, 88, 8,163,209, 8,157, 78, 87, 96, 52, 26, 27, 92, 59,165, 84, 45, 18,137,182, 10, 4,228,
-109, 66, 8,218,183,239,160,254,242,203, 47,205,148, 82, 4, 7, 7, 99,244,232,209,184,120,241, 34, 18, 18, 18, 64, 41, 5,199,
-113,102, 63, 63,127,181, 64, 64,220,171, 79,111,220,219,100, 48, 24,210, 60, 60, 60,222,122,239,189,247,246,124,247,221,119,206,
- 11, 23, 46, 4,165, 20, 44,203,130,101, 89,112, 28, 7,142,227, 64, 41,197,225,195,135,145,154,154,250,105, 93,227,170, 57,188,
-189,189,109, 88,150,157, 26, 20, 20, 52,226,149, 87, 94, 49, 73, 36, 18,232,116,186,218,215,194, 52,100,200,144,226,145, 35, 71,
-184,158, 56,113,194, 42,175, 24, 15, 15, 15, 15, 79,195, 88,106,139,252,183,240,200,131,245,119, 45, 70, 40, 20,110, 58,115,230,
- 76,120,191,126,253, 68, 3, 7, 14, 12,243,246,246, 14,203,201,201,137, 7, 0,111,111,239,176, 33, 67,134,132,185,187,187, 99,
-195,134, 13, 58,161, 80,184,169, 37,215,168,119,179,139,245,242,242,250,232,208,161, 67,223, 79,153, 50, 5, 30, 30, 30,225, 79,
-100, 33, 45, 96,233,210,165,228,171,175,190, 90, 43,151,203,163,164, 82,169, 67,171, 86,173,202,135, 14, 29,154, 98,111,111,159,
-158,145,145, 1, 74, 41, 92, 92, 92, 80, 89, 89,137,228,228,100,238,204,153, 51,101,118,118,118, 63, 53,167,107, 50,153,174, 63,
-204,202, 10,236,221,183,183,231,197, 27,137, 55,163, 94, 24,209, 95, 32, 18, 8, 50,178,242,174,183,114,117,177,253,237,202,229,
- 10,147,201,116,189, 57, 29,173, 86,155,193, 48,140, 11,165,180, 85, 76, 76, 12,220,220,220, 80, 90, 90, 10,179,217, 12,147,201,
-100,212,233,116, 54, 73, 73, 73, 48, 24, 12, 48, 24, 12,112,112,112,192,221,187,119,213, 12,195,252,218,152, 38,195, 48,147, 9,
- 33,159, 80, 74,113,255,254,253, 92, 0, 80, 42,149, 29,156,156,156,246, 50, 12, 3,149, 74,133,152,152,152,241, 42,149, 42,185,
-246,156,166,130,220,235,162, 86,171, 11,189,188,188,166, 79,158, 60,249,147,160,160,160, 0, 74, 41,218,183,111,143,193,131, 7,
-227,228,201,147,120,240,224, 1,180, 90, 45,251,251,239,191,239, 83,169, 84,199,154, 91,127, 45,238,238,238, 97,182,182,182, 11,
-102,204,152,225, 17, 26, 26, 10,189,190,186,119,172,157,157, 29,116, 58, 29, 28, 28, 28,240,244,211, 79,223, 91,182,108,153,137,
- 82, 76,164,148,230, 91,170,205,195,195,195,195,211, 56,255, 4,195,170,150, 71, 6, 22,165,148, 16, 66,254,125, 85, 71,107, 80,
-171,213,133,222,222,222,191,196,197,197,141, 24, 59,118, 44, 98, 98, 98, 38, 2,120, 23, 0,100, 50,217,196,177, 99,199, 34, 46,
- 46, 14, 73, 73, 73,191,168,213,234,194,166,213, 44,131, 16,162, 51, 26,171, 29, 56, 54, 54, 54,114,107,206,165,148, 6,212,108,
- 13,130, 82, 26,208,216,177,230, 88,186,116, 41,249,250,235,175, 31,204,158, 61,187,205,140, 25, 51, 68, 14, 14, 14, 40, 43, 43,
-179,219,185,115,167,251,235,175,191,174, 92,182,108,217,165,252,252,124,108,223,190,189, 42, 41, 41, 73, 47, 20, 10,147,164, 82,
-233,225,216,216, 88, 67,115,218,122,189,254,251, 79,151,125,212,127,247,158, 31,130,131,130,219, 59,159, 60,115,254,166,171,171,
-131,220,207, 47, 64, 86, 94, 86,102,248,122,253, 23, 34,173, 86,187,173, 57,157,170,170,170,195,209,209,209, 47,248,248,248,180,
-138,143,143,135,209,104, 4,203,178, 24, 52,104, 16, 40,165, 50, 0,156, 72, 36,194,189,123,247, 96, 50,153, 10, 30, 60,120,144,
-155,154,154, 42, 3,176,178,153,215,240, 79,134,146, 64, 32, 24, 55, 98,196, 8, 48, 12,131,193,131, 7,227,200,145, 35, 99, 1,
- 44,109,108,124, 83,228,230,230,166, 0, 24, 23, 18, 18, 34, 41, 43, 43,235,254,236,179,207,110,120,246,217,103,113,243,230, 77,
- 92,190,124,249,101,153, 76, 86, 96, 50,153, 24, 79, 79,207,201,132, 16, 7,147,201,180,183,168,168, 40,175, 49, 61, 79, 79,207,
- 62,129,129,129, 75, 87,175, 94, 69, 60, 60, 60,193,178, 12,204,102, 19, 10, 11,139,161,209,104, 16, 18, 18, 2, 95, 95, 95,172,
- 92,185, 18, 0,142,240,198, 21, 15, 15, 15,207,147,227,239,178, 69,254, 14,254, 20,131,213,212,194, 60, 60, 60, 20, 21,101,197,
-179,252,252,252,108, 0, 64, 38, 17, 14,112,115,115,251,172,168,168,168,210,218,139,234,116,186, 31,246,236,217,243,220,218,181,
-107, 37,195,134, 13,107,231,237,237,221, 3, 0,162,162,162,218,217,219,219, 99,207,158, 61, 38,157, 78,247, 67, 75, 22,212, 16,
- 28,199, 13,142,136,136, 64, 73, 73, 9, 50, 51, 51,111, 88,115,238,177, 99,199, 20, 0, 58, 53,119,172, 57,190,250,234,171, 13,
-179,103,207,110,179, 96,193, 2,145, 94,175, 71, 69, 69, 5,196, 98, 49, 38, 77,154, 36,209,104, 52,126,235,215,175, 87,253,254,
-251,239, 55,140, 70,227,214,212,212, 84,171,234, 86,169, 84,170, 42,165, 82, 57,115,249,167,203,247,174,254,226, 11,247,146,226,
-210,100,137, 84,174, 87,200,101, 46,243,222, 95, 70,213,106,245,123,106,181,186,217, 82, 15, 0, 86,238,221,187,119,200,115,207,
- 61,119,199,199,199,199,189,168,168,168,117, 69, 69, 5, 45, 41, 41, 33,168,142,165, 34, 0,112,231,206, 29,100,101,101, 49, 44,
-203, 94, 2,240, 9,165,180,217,237,199, 90,188,189,189,157,123,244,232, 49,196,213,213,245,209, 86,100,215,174, 93,135,120,123,
-123,127,149,147,147, 99,245,182,115, 45,229,229,229,163,158,126,250,233,247,166, 77,155, 6,179,217,140, 23, 94,120, 1, 57, 57,
- 57,107, 50, 50, 50, 14, 40,149,202,241,147, 38, 77,106,229,234,234,138,247,223,127, 95,142, 58,198, 92,125, 8, 33,175,141, 27,
- 55,142,200,229,182, 96, 24, 6, 50,153, 4, 50,153, 12,118,118, 14,112,113,113, 65, 86, 86, 22, 6, 12, 24,192,165,167,167, 31,
- 85, 40, 20, 77,102,119,242,240,240,240,240, 88,207, 63,197,200,178, 40,200,221,219,219, 59,194,221,221,125,122, 65, 65,129, 77,
-109,106, 61, 33,196,166, 75,187,118,155,148, 74,229,183, 42,149,234, 55,107, 46, 90, 90, 90, 90,225,233,233,121, 52, 54, 54,118,
- 76, 84, 84, 20,206,158, 61,251, 58, 0, 68, 69, 69, 33, 54, 54, 22,233,233,233, 71, 75, 75, 75, 43,172, 94, 77, 3,120,121,121,
-189,216,191,127,255,215,123,244,232,129, 99,199,142,129,101,217, 70,183,179, 26,162,110,198, 96, 67, 89,132,181,199,154,211, 17,
-137, 68, 47,205,152, 49, 67,164,215,235, 65, 41,133, 68, 34, 65, 69, 69, 5,242,243,243,209,183,111, 95,201,236,217,179,219,107,
-181,218, 15,178,178,178, 90, 84, 20, 84,165, 82,229, 4, 6, 6,166, 86,233,245, 98,103, 87, 23,157,189,173,148, 86,104, 52,130,
- 59,119,110,230,169,213,234, 76, 75, 52, 40,165, 70, 66,200, 51,167, 79,159, 94, 44, 20, 10,199,122,121,121, 97,204,152, 49,100,
-224,192,129,144, 74,165,168,170,170, 66, 89, 89, 25,142, 29, 59, 6,134, 97,252, 1,160, 85,171, 86, 30,109,219,182,253, 73, 32,
- 16,168,211,211,211,223,108,238, 26, 44,203, 70,141, 26, 53, 74,100, 54,155,177,108,217, 50,124,252,241,199, 24, 58,116,168,232,
-250,245,235, 81, 0,182,180,100,237,222,222,222,147, 39, 78,156, 56,121,204,152, 49,208,104, 52,136,141,141, 69,239,222,189,177,
-114,229, 74,207,203,151, 47,191, 27, 17, 17, 1,145, 72,132, 11, 23, 46,128, 97,152, 70, 27,182, 70, 70, 70,138,132, 66, 97,128,
-151,151, 23, 50, 51, 51,161, 80, 40,224,225,225, 1, 39, 39, 39,184,185,185, 97,237,218,181, 88,183,110,221,109,161, 80,184, 81,
-165, 82,165,182,100,174, 60, 60, 60, 60, 60,255, 27,136,128,106,107,177,246, 64,221,199,206,206,206, 14, 54, 54, 54, 83, 70,140,
- 24,209,231,133, 23, 94,192,224,193,131,255,116,242,134, 13, 27,236, 98, 98, 98,230,121,121,121, 61, 3, 96, 99,110,110,110,137,
-165, 23,230, 56,238,240,222,189,123,135,245,234,213, 75,209,191,127,255, 0, 0,144,201,100,198,189,123,247,234, 56,142, 59,108,
-237, 66,234, 23,125,244,246,246,142, 16, 10,133, 19, 71,142, 28, 25,241,198, 27,111, 32, 33, 33, 1,123,246,236,185, 23, 24, 24,
-120,214, 74,221,180,102,178, 8,215,195, 2,111, 22,195, 48, 78, 14, 14, 14,168,168,168,128, 68, 34, 1,195, 48, 40, 46, 46,198,
-253,251,247,225,234,234,138,242,242,114,135,182,109,219, 38, 88,187,238,186,200, 37, 92,183, 69,115, 39,183,215,235,171, 66,202,
-203,203, 25,145, 72, 36,146,137,217, 38,107, 95,213,135, 82,106,240,245,245, 29,197,178,172,155,209,104, 52,123,120,120,136,207,
-157, 59, 7,169, 84,138,234,236,207, 48, 72,165, 82,163,183,183,183, 6, 0, 92, 93, 93, 5, 43, 86,172, 16,207,153, 51,167,217,
-185,119,235,214, 77,220,182,109,219,113,129,129,129,184,114,229, 10, 18, 19, 19,211,174, 92,185, 18,208,173, 91, 55,248,248,248,
-140,235,214,173,219,142,184,184, 56,115,115, 58,117, 9, 9, 9,145,132,135,135,191, 62,102,204, 24,164,165,165, 97,197,138, 21,
- 69,121,121,121,231, 79,159, 62,253,226,180,105,211,132,189,123,247, 70, 81, 81, 17,118,236,216,193,220,184,113, 99, 91,126,126,
-254,174,198,180, 46, 92,184,192, 41,149, 74, 16, 66, 32, 20, 10,161,211,233,144,158,158,142,167,159,126, 26,219,182,109,195,250,
-245,235,119,229,229,229,241, 94, 43, 30, 30, 30,158,127, 3,141,217, 34,255,173, 52,234,193,242,242,242, 26,238,226,226,242,214,
-184,113,227,132, 65, 65, 65, 80,171,213,176,183,149, 25, 9, 33, 82, 0,176,183,181, 49,154,205,102, 76,155, 54, 13,225,225,225,
- 61,230,205,155, 23,209,186,117,235, 93,249,249,249,205, 6,101, 3,128, 90,173,214,121,122,122, 30,124,231,157,119, 86,222,186,
-117,211, 31, 0,174, 93,187,150,174, 82,169,230, 91,184,157,245,136, 58,197, 41,137, 66,161,184,211,190,125,251,226, 33, 67,134,
- 56,143, 30, 61, 26,110,110,110,184,121,243, 38, 86,172, 88,145,160,215,235,167,199,196,196, 48,214,104, 63, 41, 68, 34, 81, 89,
- 73, 73,137,187, 84, 42, 69,121,121,249, 35,227, 74,171,213,162,164,164, 4,148,210,138,152,152, 24,182,165,250,222,222,222,207,
- 12, 27,242, 76,216,234,181, 95,162, 74, 87,137,107,177,199, 81, 90, 82,132, 77, 91, 14,117,242,246,246,126, 38, 39, 39,231,130,
-165, 90, 12,195, 4, 28, 60,120, 16, 0, 32,149, 74,241,201, 39,159, 64,169, 84,194,193,193, 1,149,149,149,152, 60,121,178,116,
-214,172, 89, 0,128,196,196, 68,216,217,217, 89,164,155,151,151,215,127,202,148, 41, 14,102,179, 25,167, 78,157, 50,176, 44, 59,
-243,236,217,179,135,187,116,233, 34,235,215,175,159,195,238,221,187, 7, 0, 56,109,205,186, 25,134,145, 42, 20, 10, 41,203,178,
- 56,120,240, 32,178,178,178,222, 40, 42, 42,202,247,240,240, 56,244,193, 7, 31,188,223,161, 67, 7,191, 7, 15, 30,100,105, 52,
-154, 85,106,181,186, 73,239, 32,165,148, 83, 42,149, 15,207,156, 57,227, 59,102,204, 24, 72, 36, 18,148,150,150,194,222,222, 30,
-171, 87,175,166, 38,147,201,162,207, 54, 15, 15, 15, 15, 15, 79, 83, 91,132,175,254,242,203, 47, 66,142,227,176,121,243,102,196,
-197,197, 81, 59, 7,151,217,246,142,100,167,131,131, 3, 91, 86, 86,246,234,170, 85,171, 94, 88,188,120, 49,233,219,183, 47, 98,
- 99, 99,137,191,191,127, 20,128, 71, 55,161,230,186,109,151,151,151, 95, 87,171,243,253,235, 84,109,247,151,201,108,154,204,118,
-171,175,217, 64, 49,203, 46,159,126,250,105,188,187,187,187, 57, 62, 62, 30, 27, 55,110,228,226,226,226, 78, 0, 88,173, 86,171,
- 27, 44, 39,240,119,116, 26,103, 24,230,224, 23, 95,124, 49,101,254,252,249,226,188,188, 60, 36, 39, 39, 67,171,213,194,108, 54,
-227,228,201,147,140, 78,167,107,214,107,215,212, 60,115,114,114, 46,116,104,231,139, 29, 91,214,194,100, 50, 32, 47, 55, 11, 0,
- 80, 84, 92,142,166,140,171,134, 52, 5, 2, 65,217,196,137, 19, 21, 70,163,145,140, 27, 55, 78, 92, 80, 80,128,118,237,170,235,
-157, 86, 84, 84,224,196,137, 19, 8, 14,174, 46,171,117,247,238,221, 71,143,155,155,167, 66,161, 24,219,167, 79, 31,100,102,102,
- 34, 33, 33,225,164, 90,173, 46,244,244,244, 60,153,149,149, 21,213,189,123,119, 28, 62,124,120, 12, 26, 49,176,154, 90,123,109,
-121, 6,142,227,224,226,226,162, 5,128, 26, 99,234,157,198,214,221,152, 38,195, 48,243, 14, 31, 62, 60, 37, 54, 54,246,153,119,
-223,125,151, 12, 28, 56, 16, 0,160,213,106, 89, 75,226, 13,255, 91,186,214,243,154,188, 38,175,201,107,254,167,105,254,211,104,
-202,192, 98, 56,142, 67, 76, 76, 12, 14, 29, 58,196, 26,141,198, 5,121,121,121,117,107, 50,109,247,241,241,185, 20, 21, 21,181,
- 38, 57, 57, 89,152,152,152, 8, 74,169, 85, 30, 24,189, 94,111, 38,228,175,199,172,209,104,136,109,219,182, 33, 63, 63,223,152,
-149,149,245,179,201,100,218,211, 84,214, 88,115, 60,169, 44,194, 25, 51,102,204,250,250,235,175, 7,107, 52, 26,223,168,168, 40,
-177,139,139, 11, 74, 74, 74,112,234,212, 41,230,230,205,155, 89, 51,102,204,120,183,165,115, 4, 30,121,176, 48,241,173, 57,168,
-170,170,196,239, 87,142,163,172,164, 8,177,215,147, 97,173, 7, 75, 36, 18,249,154,205,102, 25,195, 48,185,148, 82,188,246,218,
-107, 96, 89, 22,122,189, 30, 26,141, 6, 37, 37, 37,250, 25, 51,102, 8, 0, 64,161, 80,224,185,231,158,179,168,170,127, 64, 64,
-128,175, 72, 36,194,233,211,167, 33, 20, 10,127, 2, 0,161, 80,248, 83,116,116,116,212,184,113,227,224,229,229, 21, 72,106,114,
-116,173, 89, 59,199,113, 96, 24, 6, 86,158,214, 32, 5, 5, 5, 5, 0, 62, 81, 42,149, 63,206,157, 59,119, 90,143, 30, 61,194,
-150, 46, 93, 10, 0,194,199, 22,231,225,225,225,225,249,159,161, 81, 3,139, 16,178,191,127,255,254, 47, 83, 74,133, 2,129, 96,
- 79, 61,227, 10, 0,144,157,157,157,238,237,237,189,217,207,207,239, 81, 3,104,107, 46, 94, 83,121,253,115,129,128,204,173,126,
-110,125,193, 70,250, 71,235,148,185, 0,136, 72, 36,222,115,245,234,213,133, 42,149, 42,223, 90,131,175, 33,158, 84, 22,225,146,
- 37, 75, 40,128, 14, 95,125,245,213,134,195,135, 15,191, 84, 85, 85,229, 36,151,203,203, 24,134, 57, 56, 99,198,140, 89, 53,191,
-111, 49, 57, 57, 57, 23,218, 5,120,159,121, 41,106,216,115, 1,126, 74, 0, 64, 90,134, 10, 69, 37,229,103,172, 49,174, 0, 32,
- 51, 51,211, 0,192,224,233,233, 25,245,195, 15, 63, 28,172, 49,122,192,113,143,250, 57, 27, 68, 34, 81, 7, 0,208,104, 52,109,
- 14, 31, 62,188, 87, 36, 18,229, 52, 42, 88, 67, 98, 98,226,254, 37, 75,150,140, 79, 79, 79,255, 57, 39, 39, 39,181,102,222,169,
- 74,165,114,163, 74,165, 26,159,149,149,181,219, 90,227,202,104, 52,154, 13, 6, 3,195,178,172,200,100, 50, 81,163,209,248,216,
- 6, 58, 0,212,212,229,154,165, 84, 42,123, 13, 30, 60,120, 34,165,180,224, 73,232,242,240,240,240,240,252,111, 64,158,196,183,
-254, 70,197, 45,116, 33,214, 15, 80,111,137,166, 53, 26,150,104, 42,149,202,233,132, 16,139,188, 83, 53,215, 77, 83,169, 84, 95,
- 55,162,249,184,193,122,180,177,121, 54, 68,135, 14, 29,104, 74, 74,138, 69, 65,130,205,105,122,123,123,219,136, 68,162,250, 30,
- 42, 67,141, 17, 86,171, 65, 0, 8, 41,165,140, 53,243,180,134,166, 52,253,252,252,254, 21, 18, 18, 50,225,214,173, 91, 7,114,
-115,115,215, 63, 9,205,150, 82, 79, 83,240,152,114, 92, 3,154, 79, 4, 94,147,215,228, 53,121,205,255, 52, 77, 11,136, 0, 80,
-219,154,173,182, 78,102,171,122,143,141, 0,234,222,179,106,159, 23, 2,184, 94, 71,163,238,241,230,206, 5,128, 34, 0,119, 96,
- 65, 87,148, 90,172,234, 69,248,239,226, 73,180, 25,121,210,173, 74,234, 26, 75, 79,128,191,181,158,199,131, 7, 15,158, 88,246,
- 69, 78, 78,142, 30,128,190,169, 49, 53, 94,167,255,151,228, 1, 0,200,200,200,248, 38, 50, 50,114, 83,110,110,238,255,219, 28,
- 26,129,107,126, 8, 15, 15, 15, 15,143, 5, 68, 0,104, 69, 8, 57, 14, 0,148,210, 17, 0, 64, 8, 57, 94,255,113,237,152,218,
-113,117,199,212,106,212, 63,222,212,185, 0, 48,127,254,252,133, 43, 86,172, 80, 0, 56,111,233,132, 31,247, 27, 54, 15,207,127,
- 4,255, 95,217,161, 60, 60, 60, 60, 60,127, 11,143, 12,163,250,134, 80,125,106,141,166, 58, 70, 85,163, 52,164, 83,123,141,186,
-207, 87,174, 92,249, 25, 0,171, 58,193,136, 8, 33, 97,141, 76,208, 98,215, 95, 99, 26, 77,253,174, 57,125, 94,147,215,228, 53,
-121, 77, 94,147,215,228, 53,255,121,154, 79,234,252, 39, 65, 67,198, 90, 61,143, 23, 8, 33,199,231,207,159,191, 16, 86,108, 15,
-214,138,255,219,126, 0,132,241,154,188, 38,175,201,107,242,154,188, 38,175,201,107, 62,230,207,240,106,147,133, 14,175,251,184,
-161, 99, 77, 61,110,238, 92, 11,198, 90, 60,231,255,136, 24, 44, 30, 30, 30, 30, 30, 30, 30,158, 38, 40,164,117,188, 77,180,218,
-195,196,206,159, 63,127, 97,221, 56, 41, 0, 6, 0,178,250, 39,215,143,221,106, 10,107,198, 54, 5,111, 96, 53, 66,120,123,225,
- 50, 95, 95,247,238, 64,141,151,175,166, 68, 1, 87, 19,175, 78,107, 76,120, 80, 14,148,163, 80,229,149,197,221, 73,163, 31, 53,
- 34,215,108,172, 91,223,190,173, 93,132, 85,149,235, 88,142,237, 13, 0, 4,130,139, 98,177,211,187,209,215,114,203, 96, 97,176,
-116,199,118,164,163,141, 8, 31,112, 28, 58, 19, 2, 16,130, 59,122, 6, 95,220, 75,165,247, 44, 57,191, 41, 8, 33, 36,212, 31,
-147,165, 50,197, 56, 71, 39,231,246,165,197, 69, 15, 76, 38,195,143,137, 25,216,244,232,181,176,130,224,118, 36, 28, 44,230,177,
- 28,196, 34, 1,214,221,203,160,151, 31,119,142, 60, 60, 60, 60, 22,242, 68, 50,124,235,241, 68,178,197,121, 26,229, 58,128,136,
- 58, 70, 79, 33,128,187, 43, 86,172, 40, 93,177, 98, 69,221, 99,183, 1,116,169, 25, 87, 8,252,197, 80, 50,214, 60, 55, 54, 48,
-198,104,201, 88, 75,177,202,192, 10,245, 33,211, 64,241, 49, 8, 40,128,165, 9,217,116,163, 85,231,183, 39,131,108, 68,194,173,
-160, 16,234,205,236,123,148,197,197,134,198, 17, 33,250,217,136,133,107, 64,192,233, 25,246,205,132, 20,122,206,210,107,132,117,
- 32, 67, 68, 68,176,155,227,168,152,229,232, 78,112, 56,110,103,198,111,177, 57,180,201, 76,184,250,248,250,186,119, 63,114, 46,
-239,185,243,251,103,162,103,120,123, 80,206, 12, 80, 6,138,224, 15, 16,189,235, 53,244,236,228, 91,125,140, 51,195,174,235, 26,
- 12,237,227,216,226,255, 28,125,251,182,118,145,115,220,157,141,223,239,110,237,219,190, 23,161,156, 1, 41,183, 78,189, 58,107,
-238,135,253, 7,246,240,234, 28,125,173,249, 30,143, 93, 58,144,183,218,181, 13,250, 96,206,135,107, 5, 74,165,183, 29,199, 24,
-153,188,236,196,110, 95,173, 93,242, 83,151, 14,100,205,237, 7,116,171, 37,115, 33,132,144, 16, 63, 76, 17,137,165, 99,228, 10,
-219,246, 58,157, 38,133, 53,155,127, 12,107, 39, 26,242,197,170,245,225,207,244, 31,106,199, 25,242, 5,102,134,132, 28,248, 97,
- 95,155,175,191,221, 56,140, 16,242, 60,165,212,186,140, 57, 22,179,239, 30,157,252,146, 88, 36, 36,193,195,183,216, 18, 66, 6,
- 91,173, 1, 32,204,159,132, 82,224, 95,205,174, 11,248, 38, 62,157,182,168,215, 99, 71,127,242, 61, 1, 2, 1, 28, 36, 20,251,
- 19, 50,248,154, 88, 60, 60,255, 52,188,188,188,206,231,230,230,246,127,194,154, 61,115,115,115,175, 62, 73,205,255,113, 26,234,
-244,114,205,194,113,127, 59,214,122,176,150, 39,164,100, 59,131, 51, 33, 52, 48, 96, 25, 0,171, 12, 44, 27,145,112,231,245, 59,
-234,214,160, 38,108, 89,251,206, 1,163, 25, 96, 24, 19, 88,198, 12,150, 49, 87, 63,102,205,224, 24, 61,150,172,139, 1, 24, 13,
-186,135,119,216, 9,192,211,210,107,136, 33,216, 29,247,219, 25, 23,194,148,227,192,142, 21, 51,178, 84,149, 51,206, 93, 83, 21,
-133,250,145, 5,137,153,216,110,205, 77,252,252,254, 89,216,243,211,201,156, 13, 91,126, 72,226, 64,225,108, 39, 11,154, 16,149,
-224,179,235,167,243,217,235,183,233,147, 40, 71,225,100, 47, 11,122,253,249, 20, 95,107, 94,135,250, 8,171, 42,215,125,187,101,
-123,107,223, 54,109,136, 57, 99, 57, 96, 54,192,199,119,152,240,195, 57,111,121, 46, 93,245,205, 90, 0,175, 55,117,126,112, 0,
- 9, 9,236,208,241,189,157, 7,174,248,106, 43, 11,140,191,158, 88,152, 74, 40, 53,187,185, 5, 75, 62, 89,190, 90,190,104,193,
-156,119,131, 3,200,213,164, 52,154,216,148, 14, 33, 68,208,209, 15, 71, 63,251,236,139,206, 3,159, 29,105,199, 26, 11,133,250,
- 74, 77,224,214,237,223,127, 28, 28,218, 67,209,167,171,183,164,240,183,169, 68,167, 41,129,137,202,101, 3,186, 15,116,208, 77,
- 24,107,254,126,215,190,233, 0,190,180,102,205, 44,243, 71,173, 17, 19, 3, 27, 0, 98, 88, 27, 64, 8,128, 2,255,186, 21,123,
-126, 10, 83,122, 29,224, 76, 53, 70,175, 9,224,204,160,117,254,125,234,149,237, 0, 48,213, 90,125, 0, 16, 16, 60,119,238,220,
-117, 79,181, 58, 47, 98,221,186,207, 22,132,248,147, 83, 32,216,125, 47, 29, 23, 90, 98, 20,242,240,240,252,103,162, 84, 42, 89,
-149, 74,245, 68,187, 54,120,121,121, 13,203,205,205, 61,249, 56, 26, 74,165,242, 3, 0,111,213, 60,221,170, 82,169,190,120,220,
-121, 69, 68, 68,120, 83, 74, 91, 3, 0, 33, 36,255,250,245,235,205, 22,139,230,177, 14,107, 13, 44, 27, 80, 14,248,237, 5,128,
- 88,151,174, 8, 0, 20,176, 1, 17, 2,230, 74,140, 26, 49, 8,110,174,158, 0,171, 5,216, 42,128,209, 1,108,245, 79, 81, 97,
- 22,192,104,129,194, 83, 96, 40,253,203, 94,106,179,152,203,129,130, 31,241, 92, 47, 95, 56,217,219, 96,214,203, 33,110,155,143,
- 36,111,221,122,228,254, 32, 0,227, 44,154, 43,165,232,217,181, 61, 54,108,209, 38,253,124,190, 96, 48, 0, 12,143,116,251,165,
-103,167, 54, 62,235,183,233,147, 78, 92, 40, 25, 2, 0, 67,251, 56,158,234, 17,214,218,151,179,126,151,236, 17, 44,199,246,241,
-109,215,149, 48, 15, 87, 65, 32, 40, 69,101,101, 17,178,211,118,192,205, 99,176,128,225,184,126,205,157, 47, 23, 97,254,172, 15,
- 86,138,180,149,106, 35,101, 10, 56, 15,187, 34,137, 24, 68,200,105, 47, 25,171,242,203, 42,103,255,107, 2,243,222,252,207,230,
- 3, 24,223,148, 78,136, 63,166,175, 89,181,190, 83,239, 30, 65,238,249,151,103,145,202,114, 53,204, 84, 46,123,254,153,222,112,
-110, 19,194,169,111,173, 33, 50,207, 65,112,246, 11, 64,206,221, 61,200,186,115,136,244,237, 17, 37,219,185, 87, 50, 1,141, 24,
- 88, 29, 60, 73,159,193,207,245, 56, 16,208, 70,233, 73, 41, 7,142,227, 64, 41,135,215,199, 13,193,130,175, 83,161,173, 98, 48,
- 98,208, 83,189, 93, 29,133,134, 21,239, 69,130, 82, 14,217,170, 98,221,175, 87,146, 6,166,230,210,102,191,249, 17,224,155, 46,
-189,250,247,185,115, 45, 54,216,164, 58,142,136,209, 43,146, 8,240,104,187,145, 2,125,110, 70,111, 15, 6,182, 55, 39,213,176,
- 62, 33,164,163, 31,216,135,191,175,132,119,215,201,194, 77,219,127,105, 85, 94,156,251,250,161, 31,190,125,233,219,205,155,246,
-160,133, 70, 27, 15, 15,207,127, 30, 42,149,234,137, 27, 89, 87,174, 92, 81, 61,142,145, 21, 17, 17,209, 15,192, 42,149, 74, 5,
- 0, 80, 42,149,171,122,246,236,185, 24, 0, 26,136,206, 40,167,148,142,191,126,253,122,131,187, 67,181,188,251,238,187, 74, 0,
-126, 55,110,220,168,189,134, 95, 68, 68,132, 95, 67, 99, 21, 10, 5,219,165, 75,151,204,181,107,215,170, 90, 50,255,255,101,172,
- 53,176,146,242, 47,205,238,106, 44,209, 1, 64, 82,115,131,105,189, 84, 75,189,153, 93,185, 99,253,235, 43, 67, 3,157, 81,161,
- 49,226,236,165,204, 26, 15, 22, 3,150, 53, 63,250,119,112, 47, 55, 60,205, 76,197,151,251,239,131, 97,185, 21, 77,105,214,199,
-196,113,175,132,247, 27,251, 3, 71,169, 84,161, 16,148,183,243,113,117,127,111, 66, 23,193,172,151, 67, 81, 84,101, 50, 10, 0,
- 0, 32, 0, 73, 68, 65, 84,165,103,198,134,248,145, 95, 19, 51,232, 22,139, 52,185,191,150, 86,170, 41, 86,254,231, 99,220, 95,
- 59,242, 52, 55,207, 90,186, 4,201,123,142, 30,218,215, 1,230, 18,176,218, 12, 24, 89, 14,121,121, 90,164,171, 36,112,228,254,
- 92, 59,181, 49, 77,142, 67,231,214,173, 61, 21, 87,206,204,203,112,183, 47,149,184,202, 89,137,132,112, 84, 96,166, 66,163, 49,
- 73,239,172, 28, 36,230, 56,116,110,232,220,186,154,114,185,253,107,125,251, 15,119,124, 24,253, 22,145,251, 12,133,187,191, 55,
- 50,226,118,160, 32,254, 56,138, 11,178,136, 35, 45,133,162, 67, 0,134, 70,189,140, 85,211,187,163,162,162, 18,164, 48,205, 81,
- 42,149, 57, 53,166, 73, 5, 24,191,230,243, 79, 61, 69, 34, 65,245,235, 73, 25,128,154, 1,106,134,166,210, 0,163,209, 8, 27,
- 9,133,173, 13, 5,106,182, 97, 89,214,168,232, 60,112,254, 59, 0,174, 54,164, 89,151,248,116,154, 16,234, 79, 46,131, 50,193,
-148,173, 2, 1, 46, 39,164,211, 71, 70, 79,152, 63, 9,237, 54,112,210,191, 8,240, 77, 83,107,111,140,176,182, 24,209, 61,216,
-206, 86,206, 36, 33, 39,102, 6, 82, 89, 27,234,209,233, 45,188, 60,126,186, 98,211,214,205, 35, 9, 33,211,234,198,160, 89,250,
-190, 91, 3,175,201,107,254,183,106, 58, 58, 58,250,183,109,219,118,177,217,108,238, 39,145, 72, 60, 76, 38, 19, 56,142,203,151,
- 74,165,151, 50, 51, 51, 63, 41, 47, 47, 79,255, 79,152,103, 93, 78,157, 58,101,177,145,101,137,166, 88, 44,198,201,147, 39, 83,
- 44, 53,178,234,107, 10, 4,130,221, 7, 15, 30,196, 15, 63,252, 0, 0, 56,127,254, 60, 58,116,232, 96,219,208,185,217,217,217,
-182, 47,190,248,226,110, 0, 62, 77,105, 62,120,240,192,255,211, 79, 63,197,193,131, 7, 1, 0,187,118,237, 66, 96, 96, 96,131,
-243,185,125,251,182,112,209,162, 69,254, 0,254,100, 96,253, 59,222,163,127, 26,143, 12,172,154, 30,187,205, 5,233,165,181,182,
- 23,119,133,217, 12, 0,105,214, 94, 44, 49,149,126,222, 37, 80, 60, 36,250,208, 55,253,108,164, 2,124,188,238,189,236,194, 66,
-205, 83, 34, 97,117,192, 32,195, 66,224,236, 36,141, 93, 49,163,139,111,105,185, 30, 63, 95,200,189,152,144, 70,173,114,133, 38,
-164,210,179, 0, 30,221,240,195,218,146,192,215, 63, 60,187,127,255,231, 67, 58,207, 25,223, 25, 71, 99, 50,231, 0,216,210,184,
- 66, 53,148,227, 64, 41,243, 40,168,189,230, 96,205,150,211, 31,199, 56, 74, 1,106, 6,181, 50, 62,113,233,210, 49,162,163,251,
- 15, 15,177,149,137,190,154,250,246, 20, 7,115,113, 34,202,203, 88,228, 23,105,145, 85,232, 4, 86,222, 14,201, 9, 87, 89,161,
- 64,208,108,252, 25, 17,160,130,154,181,246,206,114,185, 32,164,199, 59,158,229,241, 11, 43,100, 66,179,208, 41,252, 83,123,245,
-221, 53, 15, 25, 67, 65, 37, 17,192,212,156,142,131,163, 99, 7,131, 38, 83, 88, 94, 86, 12,167, 78, 33, 24,250,252, 72,124,252,
-102, 71,104, 52, 90, 20, 22, 95,161,237,219, 56, 18,253,205,189,248,240,181, 96, 20, 23,229,193,104, 6, 4, 21,250, 18,189, 81,
- 95,217,152, 38,165,216, 52,251,189,185,175,180,241,110,101, 91,155, 44, 64, 57, 22, 93,194, 2,240,108,255,158, 56, 27,123, 5,
-215,111, 38,131,163, 92, 77, 50, 1,139,156,130, 50,181,222,196,238,176,230,245,164, 28, 83,237, 9,173, 71, 77,220,149,213, 94,
-166, 78,157,136,130,213,226,163,167, 66,236,223,156,247, 90, 27,123,123, 41,129, 94,206, 66,175, 55, 67,147,244, 53, 92,189, 59,
- 65, 97, 99, 67,186,118,173, 18, 1,120, 34,253, 15,121,120,254, 41,140, 25, 51,198, 70,173, 86,199, 12, 31, 62, 60,100,208,160,
- 65,138,126,253,250, 65,171,213,226,244,233,211,208,233,116,109,124,124,124,218,156, 57,115, 38,170,103,207,158,137, 62, 62, 62,
-145, 63,254,248,163, 85, 49,178, 53,212,222,175,158,104,112,184, 84, 42, 69,108,108,236, 19,245,100, 73,165, 82, 92,187,118,205,
- 98, 35,171, 46, 90,173, 86,210,186,117,107,184,186,186,130,101, 89,104,181, 90, 28, 57,114, 4, 21, 21, 21,224, 56, 14,114,185,
- 28,107, 78,149, 67,127,255, 32,182,126,245, 41,202,203,203, 37,205,105, 22, 21, 21,145,160,160, 32, 24, 12, 6, 48, 12, 3,189,
- 94,143,115,231,206, 61,122, 46, 18,137,176,236,160, 26,134,228,253,216,185,105, 13,138,138,138,158, 88,119,144,230,176,208, 22,
-249,175, 64, 4,252,177,160,191, 99, 97, 44,203, 44,216,188, 99,127,236,130, 25,227, 48,253,181,129, 62,159,124,121,120, 80, 98,
- 26,221, 9, 0, 33, 1,228,245, 9,195,218,251, 58,217,138,177,244,187, 27, 0,232,130,199,189, 94,124, 38, 77, 14,109, 71,230,
- 28,142,201,138, 89,248,102, 87, 4,248, 56,116,104,215,142, 72, 83, 83,105,243,241, 62,156, 25,206,118,178,160,225,145,110,191,
-128,114,112,178,147, 5,131,178,112,178,151, 5, 13,237,227,120,138,163, 20, 78,182,146, 96,218,128,167,171, 49,122,132,201,222,
-150,139, 5,111,219,218, 59,249,206,158, 58, 65, 62,124,248,139,114, 91, 41, 69,113,226, 73, 84,208, 80, 24,109,109, 65,117,101,
- 72,127, 16,207,158,186,112, 35, 87,230,234,249,126,179,211,100,113, 81,149,125,111,116,219,246,131,156, 10,111,124, 88,224, 63,
-112,175,159, 0,172, 64, 27, 27, 85, 96,107, 31, 34,185,124, 59,158,225, 88, 92,105, 78, 71, 83, 81,145,105, 54,193, 83,111, 22,
-219,167, 94,219,142,249, 19, 66, 81, 86, 90, 8,189,129, 65,153,150, 49,121,186,153,100,250,210,187, 48, 24, 25, 24, 76, 20, 98,
-133, 18,103, 98,227,139, 56,198,124,170, 49,205, 84, 21,189, 5,192,174,238,177,118, 74,210,101,158,179,252, 22,216, 42,100, 61,
- 84, 97,231, 79,177, 93,107,198,181, 28,202,128, 50,127,252,141,174, 13,126,111, 73,112,123,199,182,164,135, 92, 46,254,106,233,
-252,225, 33,145,161,172,140,232,243, 64, 0, 40,108, 68, 48,216,176,112,180, 9, 0, 53,105,168, 78,175, 47, 75,136,255,255,107,
- 17,196,195,243,159, 72,112,112,112,107, 71, 71,199,132,247,222,123,207,101,244,232,209,143,140,129, 29, 59,118, 96,253,250,245,
-248,248,227,143, 97, 54,155,177,121,243,102,197, 79, 63,253,212,227,155,111,190,201,105,211,166, 77,104, 86, 86, 86,190, 5,242,
- 4,128, 4,213,247, 46, 1,170,141, 43,118,233,210,165,244,227,143, 63, 70,221, 99,148,210,102,191, 84, 54,132, 84, 42,133, 84,
- 42, 69, 82, 82,210, 19, 49,178,196, 98, 49, 36, 18, 9,164, 82, 41,238,223,191,111,181,145,197, 48,140, 48, 39, 39, 7, 21, 21,
- 21,120,118,228, 72,172, 95,185, 18,253,250,245,195,160, 65,131, 64, 41, 69,116,116, 52,158,118, 78,134,203,200,103,112,239,222,
- 61,152,205,102,139,118,166,114,114,114, 80, 92, 92,140, 33, 35, 71, 98,203,183,223,162, 91,183,110, 8, 10, 10, 2, 0,196,196,
-196, 96,160, 87, 38,236,130, 6, 33, 57, 57,185,133, 43,183,158,191,211, 22,249, 59,248,219,203, 52,196,167,210,223, 67,252,201,
-241,151,135, 71,140, 24, 57, 32, 4, 91,246,255,250,105, 72, 8,217, 15, 0,174,142,178,229,175, 13, 15, 64, 98, 90, 41,162,175,
-169,142, 39,166,211,223,159,196, 53, 57, 22,110,174, 78, 10, 64, 32,133,206,200, 50, 14, 14,205,151, 61,224, 64,161,232, 56, 31,
- 19, 70,223,243,233,217,201,199,135, 82,166, 38, 99,112, 45, 94,127, 62,197, 55, 34,212,195,183,122,203,203, 12,135,167,247, 2,
- 92,131, 30,219, 63,209, 55,220,230,204,251, 51,103,244, 26, 62,242,101,185, 68,225, 10,174, 42, 27,230,146, 59, 40, 78, 63, 15,
-131, 60, 28,133, 57, 25,216,127,244,231,242,164,116,117,133, 80, 40, 56, 43,114,244,152,123,238, 92,122,163,222,161, 90,244, 66,
-172,248,120,241,130,225,251,247,236,115,148, 43,251,226,193,209, 97,101, 82,161, 89,230,238, 21,136, 42,198,158, 93,189,237,184,
-147, 22, 88,217,156,142, 78, 91,113,232, 92,244, 47,227,218,123,246,177,207,136, 63, 14,157,206, 8,131, 25, 8,235,214, 31, 44,
- 71,165, 68, 64, 56, 7,161,144,168,213, 37, 32,102, 78,125,233,102, 70,222,229,235,105, 66,131,160,121,237,186,136, 36,194,153,
- 35, 7,117, 1,216, 42, 60,255,108, 24,214,109,139,158, 1, 96,146, 53, 26,127,129,154, 65,217, 42, 80,160, 79,168, 63,249,142,
- 2,125,226, 78,173, 11,238, 62,116, 14, 96,133, 7, 43,204,159, 12,237, 20,172,220,190,238,211, 5, 46, 46,238, 62, 66,176, 85,
- 32, 76, 5,229, 74,126,135, 72,251, 0, 14,222,195,193, 58,246,198,166,111, 87, 87,114, 28,221,223,146, 18, 21, 60, 60,255,100,
-244,122,253,161,149, 43, 87,186,140, 24, 81,157,237, 94, 89, 89,137, 43, 87,174, 96,235,214,173,176,181,253,227,239, 36,165, 20,
-195,134, 13, 3,165,212,101,201,146, 37,135, 0,244,106, 76,179,119,239,222, 35,215,174, 93,251, 48, 34, 34,226, 1,170,107, 28,
- 73, 0, 8, 1,208,115,231,206, 9, 0,160, 71,143, 30,236,181,107,215, 56, 0,116,252,248,241, 98, 59, 59,187, 14,149,149,149,
- 23,172,157,127,173,129, 37,149, 74,145,155,155,251,216, 70,150, 88, 44,126,164, 39,145, 72,144,155,155,107,149,145,197, 48,140,
-232,196,137, 19,184,121,243, 38,150,118,237,138, 89,158,158,112,117,117,197,133, 11, 23, 64, 41,133,173,173, 45, 74, 74, 74,176,
-127,255,126,244,239,223, 31, 12,195, 52,235,193, 2,128, 35, 71,142, 32, 46, 46, 14,203,186,119,199, 12, 91, 91, 56, 57, 57, 33,
- 38, 38, 6, 0, 32,147,201,144,155,155,139,115,231,206, 33, 50, 50,178,165, 75,255,159,199, 98, 3, 43,146, 16, 17,241, 65,107,
-179,169, 10,148,161, 0,129, 50, 36,132, 72, 18, 19,173,255,150, 32, 0, 62,220,176,237,248,240,117, 11,158, 39,147, 95,234,170,
-252,228,155,243,211, 0,224,205,177,129, 94, 10,153, 8, 27,246, 39, 82, 1,240,161,181,186, 13, 17, 18, 66, 36, 2, 1,166, 61,
-219, 59, 8,170, 34, 35,210, 30,150,255,154,152, 78, 45,218,210,137,222, 57, 1,187, 14,197,100,175,223,254,231,140,193,237, 71,
-226, 30,174,217,169, 79,162,160,112,146,139,131, 39, 61,255,116,179, 89,132, 61,194,100,111,207,155, 51,167,215,168, 87,231,202,
-205, 57,135, 97,200, 60, 1,176, 58,232,180, 4, 21, 76,123,228, 61,204,193,210,117,251,178, 13,102,193, 43, 55, 18,245, 86, 25,
-150,201,201,180, 50, 36,128,140, 94,249,249,226,179,159, 45, 93, 98, 39,203,141,174, 16,139,160, 21,184,246, 19, 47, 95,188, 81,
-164, 41, 55,190,152,154, 69, 53,205,233, 24, 4, 88,249,249,154, 47,135,191, 53, 97,116, 82,160, 79,164, 43,155,159,230,170, 43,
- 47, 47,216,123, 42,174, 53,170,191, 57, 18, 0, 72,205, 40, 70, 97,137,150, 97, 25,243, 5,123, 19, 62, 73,200,177,192, 27, 88,
- 67,128, 7,105, 53,122,120,231, 87, 91, 57, 73, 81,165, 45,133,187,179, 4,131,251,180,123, 53,192,131,204, 75, 83, 83,171,106,
-140,212,165,118,139, 48,118,235,128, 96,112,166, 96,202,153, 97,204,218,109,189, 14, 48,103,206,184, 54,142, 46,182, 70, 1, 97,
-181,128,216, 25,144,182, 34, 2,185, 31,132,114, 95,100,166,220, 96,230,188, 51,174, 56, 51, 51,255,123, 55,138,199,206,228,225,
-225,249,167,145,149,149,245,218,194,133, 11, 47,247,236,217,211,195,205,205, 13, 97, 97, 97, 56,118,236, 24,222,127,255, 15,103,
-124,120,120, 56, 0,160,184,184, 24,159,127,254,121,190, 74,165,122,173, 41,205,132,132,132,164,221,187,119,247,233,220,185,179,
- 81, 34,145,148,162,198,200,202,202,202, 18,105,181, 90, 98, 52, 26,169,173,173, 45, 39,147,201,204, 99,198,140, 49, 93,187,118,
-173,131, 86,171,205,106,201,252,107,141,161,238,221,187,223, 45, 43, 43, 43, 39,132, 60,118, 9,135, 90,227, 42, 56, 56,184,149,
-209,104,100, 1,148,180,164,132, 3,195, 48,232,222,189, 59,206, 93,188,129, 83, 23,239,162,178, 48, 13,227, 95, 28,140,224,224,
- 96,156, 62,125,186,165,211,171,214, 60,119, 25, 49, 55,238, 67,157,149,136, 9, 47,191,128,160,160, 32,156, 59,103,113,133, 36,
-158, 6, 16, 1, 64,115, 46,185,142,109, 72, 23,143, 48,233,174, 15,159,111, 23, 34, 10,251, 24, 68, 36,199,225,237,199,122, 47,
-248,236,187,164, 78, 94,100,252, 93, 11,178,189,234, 82, 19,152,188,239,118, 98,240,171,207,247,243,193,150, 31, 21, 31, 1,192,
-216,103,253,113, 45,177, 16, 87,227, 11,246, 37,180,176,102, 81, 93, 58,121, 16, 5,108,177,239,243,185,163, 34,219,120,183,198,
-214, 31, 46,131, 80, 28,178,228, 92, 74, 41,237,217,217, 23,235,183,215,207, 24,244,244, 93,179, 83,159,116,250,183,138,161, 0,
-240, 92, 47,219, 83, 17, 29, 93,124,155,243,100,216,136, 5,147,135, 62,255,154,156, 81,159, 6, 87,242, 35,196, 82, 9,170,180,
- 44,242, 10, 12,168, 82,200,241,235,165, 11, 85,149, 58,102,206,157, 20,166, 69, 94,187,196, 52,154, 22, 30, 72, 30,106,171,170,
- 60,237, 92,218,105, 5, 4,180,210, 40,166,113,137,185,218,132, 44,122,223, 18,141,212, 84,106,236,229, 77,250,110,218,249,227,
- 98,177, 88, 58, 86, 40, 4,113,119,178,109,245,221,134,101,176,183,183, 3,101, 52,160,134, 34,140,126,243,179,194,187, 15, 76,
-254, 0, 16, 24, 72,236,250,117,145,236, 20, 9, 72,206,175, 55,141,139,154,187, 6, 17, 98,234,248,231,187,136, 57,179, 22, 51,
-151, 28,192,166,229,207, 99,194,200,142,226, 19,191, 38, 79, 5,240, 73, 75,214, 14, 0,224,170,183, 8,123, 77,190,152, 68,128,
-203, 20,232,115,227,248,242, 96,192,242,157,199,110,221,136, 88, 36, 34, 29, 59,122, 25,197,108,206,126, 16, 27, 47, 42,116,139,
- 4,108, 59, 16,106, 23,134,175, 55, 44,174,220,178,117,235, 25,142, 96,105, 82, 70,211, 37, 47,120,120,254, 87,161,148,166, 57,
- 57, 57, 13, 25, 54,108, 88,244,233,211,167, 93,194,194,170,219,205,197,197,197, 1,192,163,173, 40,181, 90,141, 87, 94,121,165,
- 40, 47, 47,111, 8,165,180,201,152, 94,141, 70,147,126,248,240, 97,143,170,170,170,136, 69,139, 22,169,219,182,109,171, 49,155,
-205, 84,163,209,128, 97, 24,218,170, 85, 43,113,183,110,221, 72,104,104,104, 85,116,116,180,107,118,118,182, 6, 64,102, 75,230,
-255,214, 91,111,225,167,159,126, 2, 0, 60,137,186, 88, 18,137, 4,195,134, 13,243,186,114,229, 74,110,141,102,139,235, 98, 81,
- 74,113,231,206, 29, 92, 74, 97, 33,181,117, 70,102, 82, 5,206,253,124, 20,227, 39, 79, 1,195,180, 60, 90,225,246,237,219,216,
-127,238, 54, 60,188,218,161,220,112, 7, 71,142, 28,193,180,105,211, 30, 75,179, 37,252,147,182, 7,129, 58, 30,172,134, 22,212,
-174, 29,145,202,140, 88, 50,248, 41,175,185, 99, 6,182, 19, 50, 58, 21, 56,142,131, 16,128,155,189, 0,219,182,108,242,255,241,
-240,201,216, 78,190,194, 47, 97,228, 62,188,171,166, 58,139,175, 44,192,146,181, 59,126, 27,187,123,217, 51,162,105, 47, 5,187,
- 0,128, 68, 44,192,134,125, 9, 12, 4, 88,242, 56,139,234,229, 77,108, 42, 37,152,220,218,207,241,163, 5,239, 12,119,137,236,
- 25,136, 11,177,241,248,114, 79,236, 69,169, 51,118, 89,170, 67, 57,230, 79, 1,237,213,199, 26,112,126, 53,144, 89, 88, 31,150,
-163,173,165, 10, 55,232, 51, 79, 66, 36,149,129, 97, 76, 40, 84,235,144,145,207,193, 70, 41,198,181, 59, 89, 85, 47,188, 58,250,
-132,165,115,171, 15, 33,132,244, 9,183, 81, 46, 89,190,218,187,170, 74,195, 84,148, 21, 49, 34, 73,172, 72, 33,151, 89, 18,215,
-240,136,216, 28,170,127, 38, 92,210, 13,148, 19,202,132, 84,183, 96,206, 68,219,220,228,211,104,223, 74, 5, 2, 10,185,114, 56,
-236,109,133,146,190, 93, 36, 15, 1,192,207,213, 81,250,249, 39,239, 59,206,158,183,244, 82,115,218, 33, 33, 68,210, 41,176,245,
-236,176,246, 46,184,112,245, 30, 46, 94,207, 74,184,248,123,114,104,255, 30, 74, 4,250, 59,205, 10, 9, 33, 43, 91,226, 17, 5,
-240,104,139,176, 54,139, 48,204,159,132, 70,140, 88,212, 96,246, 96, 99,248,221, 4,151,236, 79, 65,136, 16, 20, 4,208,231,130,
-201,222, 13,161,255, 12,122,232,232,242,170,173, 91,182, 46, 75,204,176, 46,233,130,135,231,127,145,178,178,178, 59, 10,133, 98,
-112,151, 46, 93,118,204,156, 57,211,254,213, 87, 95, 85,190,245,214, 91, 2, 0, 80,171,213,220,250,245,235, 85, 95,125,245, 85,
-121, 81, 81,209, 36,147,201,116,183, 57,189,154,192,156, 43,219,182,109, 43,188,124,249,114,232, 83, 79, 61,165,136,136,136,224,
-220,221,221, 37, 58,157,142,205,206,206,174,138,141,141,101, 83, 82, 82, 28,203,202,202, 82, 0,164,182,100,251, 94,169, 84, 66,
- 32, 16,124,226,227,227,179, 56, 55, 55,183,211,147,136,193,106,223,190,189, 18, 64,138,151,151, 87,123,107,183, 7,235, 35, 18,
-137, 80, 90, 90, 10, 77, 78, 42,116,197, 69, 8, 18,234, 16,238,226, 6,123,123,251,199, 50,134,202,203,203, 33, 50,168,145,118,
- 39, 11,101,249,153, 8,105,211, 29,182,182,182, 48, 24, 12, 45,214,108, 41,255, 20,227, 10,104, 98,139, 48,212,135, 76,115,150,
- 98,253,196, 49,254, 18,255, 54,222, 48, 22,198,225, 86,106, 37, 22,125,223, 35, 81, 40,177, 55, 76,127,253,217,110,253, 7,181,
-194, 51,145, 61, 72,219, 54, 78,179, 86,174,220,248,175, 80, 95,242,126,194, 67,186,193,146, 11, 39,164,210,244,142,254,100,235,
-249,235,185, 83,189, 91, 85,129,130,226,252,141, 60,220, 77, 45,221,122, 47,157, 54,152,186,219,232, 92,219,147, 65, 34, 34, 56,
- 64, 89,106,227,104,111,171, 9,239, 23,236, 54,168, 79,103,193,144,254, 17,144,136,128,203, 87,111, 99,206,242, 67,191,115, 82,
- 58, 60, 46,206,178,237, 65, 80,238, 47,134, 83,117,198, 32,243,167,140, 65, 74, 41, 5,199,160,185,122,147, 66, 1,201,215,170,
-111,180,150,218,135,192, 84,252, 43,212,234, 74, 36,164,153, 80, 9, 31,148,230,228,128, 82,246,225,146, 37, 63,182,248,127,136,
-155,155,155,187,127,135,192,118, 95,109, 57, 8,147,161, 28,105,137,219, 81, 89,145,143,229, 43,126,110,231,237,237,253, 76, 78,
- 78,206, 5, 75,181, 8, 72, 96,244,175,251,220, 65, 1,161, 72,134, 19,155,127, 64,145, 72, 14, 55, 71, 9, 56,125, 1, 38,191,
- 61,222,113,216,240,241,142, 0,240, 48,245, 54,124, 93, 44,179,171, 77,101,136, 26, 59, 41,200, 9,172, 14,187,142,220,214, 11,
- 8,134,236,250, 57, 33,181,127, 55, 39,155,177,207,182,113,254,100, 83,217,139, 0,246,181,100,253,148, 99,255,148, 69,216,146,
-236,193, 31, 41,101, 59,250,147,212,125,231, 10,237,198, 12,235, 42,151,136, 8,161,250, 92,112, 68, 66, 54,124,179, 77, 35, 37,
-216,220,146,185,241,240,252, 47,162,211,233,226, 8, 33,157, 62,248,224,131, 87, 22, 46, 92,216,207,214,214,214, 31, 0,180, 90,
-109,186,217,108,190, 8, 96, 31,165,244,175, 53,110, 26,161,198, 96, 74, 33,132,164,167,166,166,122,236,218,181,203, 9,128, 77,
-205,175,245, 0,202, 0,168,173,209,172, 79,173, 49,165, 84, 42, 23,183, 84,163, 62,181,198,148,151,151, 87,251,150,156, 47, 20,
- 10, 89,129,160,186,179,143, 76, 38,195,165, 75,151, 48,180, 79, 95,220, 62,151,133, 96, 15, 31,244, 31, 63, 17, 71,206,159,135,
- 80, 40,172, 29,111,213,125, 68, 36, 18,225,242,229,203,120,105, 68, 36,142, 28, 57,130,128,238, 93, 48, 99,198, 12,252,242,203,
- 47, 16,137,248,110,122,143, 67,227,175, 30,197, 39,103, 15,124, 38, 1,103,198,193,189,171,112,246,186,206,120, 63, 23, 31, 6,
-229, 96,253, 65,104,184,130,162,159,166,158,136, 73,251,226,141, 73, 35, 20, 3,158,121, 22, 3,250,245, 23,133,118,121,230, 35,
- 0,143, 12, 44, 66, 72, 88, 83,181, 50, 88, 51,150,109,254, 41,105,202,129,147,201, 4,140, 6,227,158,143,160,172, 25,203,154,
-154,112, 67,154,142, 10,187, 3,151, 47,197, 58,131,173, 68,126,198,121,155,214, 30,254, 0, 53,227,193,131,100,124,189,237, 8,
- 23, 19,123,127,183, 81,136,153,169,137, 84,107,169, 38, 0,128, 99,224,104, 39,253, 75,198,160,147, 92, 28,252, 92, 47,219, 83,
-148, 82,106,175, 16, 7, 55, 84, 27,171,190,166,222,204,109,222,189,115,203,234, 55,223,124,203,182,216,144,139,228,236, 4,232,
-133, 94, 16, 42,218, 33,225,198,233,170, 42, 51,215,108,233,136,166, 94,207,162,162,162,130,184, 27, 37, 56,176, 99, 5,204,102,
- 3, 10,242,170,109,212, 60,117, 5, 28, 28,188, 98,173,209, 52, 49, 92,121,212,232,201, 18,185, 13,228,227,199, 14,151,166,170,
- 12,232, 26,100, 15, 0,160,166, 34, 36,197, 92, 66,127,247,234, 96,200,212, 36, 33,124,159, 82, 90, 52, 79,123,123,201,204,161,
-125,189,144,158,149,143, 75,113,185, 59,211,114,169, 42,192,139,236, 76,125, 88, 54,117, 84,127, 95,172,219,157, 56, 3,141, 24,
- 88,141,105,214,100, 11,246, 1, 53,131, 50,122, 80,160, 79,152, 63, 9,181, 36,115,176, 33, 77,145, 0,175,174, 61,144,185,232,
- 96, 76,225,168,185,111,245,117,232,221,107,168, 20,156,153,106,116, 6,115, 98, 58,173,104,137,230,227,194,107,242,154,255,173,
-154, 53,198,206,238,154,159, 39,169,169, 66,189,186, 76,143,163, 9,252,121, 59, 80,165, 82, 9,149, 74, 37,219, 92,144,187, 5,
-154, 87,235, 60, 62, 89,227,189,106,210,139,213,128,166,170,103,207,158, 46, 35, 71,142, 4,195, 48, 72, 73, 73, 65, 86, 86, 22,
- 70,190, 49, 9,206,206,206,184,154,152,136,148,148, 20, 44, 94,188, 24, 12,195,224,218,181,107,127,169,200, 94, 95, 83, 44, 22,
-155,186,116,233, 34,121,225,133, 23,192, 48, 12,210,210,210,144,153,153,137, 25, 51,102,192,209,209, 17,137,137,137, 72, 75, 75,
-195,226,197,139, 97, 48, 24,144,158,158,254,151,157,133,127,199,103,233,159, 70,227, 6, 22, 1, 11,206,140,242,235, 75,240,221,
-113,152, 76, 12,130, 19,178,105, 70,157, 17, 27, 59,123,147, 99,119, 18,146,210,227,174, 14,144,162,226, 46, 0, 88,245,205, 33,
- 57,155,230, 69, 4,137, 52, 96, 52, 14, 40, 60,133,140, 92, 77,101,114, 54,205,179,118, 17,148, 99, 9, 88, 29, 80,126, 3, 71,
-142,199, 64,102,115, 11,215,111, 38,177, 87,226,146, 15, 8, 40,150, 37,102,208, 7,214,107, 82,216,117, 91,143,137,207,167, 86,
-103, 12, 82, 51, 40,199,192,177,247, 62, 76,122,254,105,223,136, 96, 39, 95,112,102, 80,106,134,243,192,243,192, 34,155, 38,245,
-174,197, 27,182,244, 13,183,121, 81, 83, 81,212,243,217,254,145,182,173, 2,199,162,252, 65, 34, 18,110,158,173,186,113, 55, 57,
-246, 90,188,161, 89, 3,171, 41,188,188,188,250, 13, 28, 24,132,113, 19, 23,192,100, 40, 67, 90,194, 54,104, 42,242,113,233, 55,
- 59, 36, 61,172,232, 5,224,130,165, 90, 87,226,205,161, 0,208,167,147,228,161,131,212,216,250,181,151, 70, 64, 38,210,131, 51,
-107, 64, 76, 69, 72, 45, 49,149,191,184, 36,135, 5, 0,133, 13, 17,217,138,202, 29, 44,209, 13, 9,112,237,160,144,152,177,235,
-104, 2, 56, 82,221,102,137, 35,216,184,235, 88,234,212,101,211,187, 34, 36,192,185, 75,237, 6,188,165,115,165,192,191,110,252,
-188, 52, 88,159,240, 17, 40,103,198,229, 47,156,131,251,126, 80,250, 47,180,176,194,250,221, 84,154, 11, 96,106,199, 54,100,211,
-172, 79,127,249,168,123, 88, 98,159,247,166,142,114, 0,225, 27,163,243,240,240,252,253,232,116,186, 41,243,230,205,219, 36, 20,
- 10, 91, 1, 32,148, 82, 24, 12, 6,209,214,173, 91,197, 12,195, 8,132, 66, 33,107, 99, 99,195,196,197,197,153, 57,142, 43, 52,
-153, 76, 83,154,211, 52, 26,141,169, 95,127,253,117, 59,179,217,252, 40,227,208, 96, 48, 96,247,238,221, 48, 24, 12,144,201,100,
-176,179,179, 67, 90, 90, 26, 8, 33, 38,150,101, 83,255,173,139,252,135,210,212, 77, 99,105,239,168, 37, 75, 64, 65, 64,240,113,
- 61,227, 10, 0,112, 39,135,170, 66,125,200,156,208,240,103,170, 99,166, 8,150, 90, 59, 1, 61,203,190, 20,209, 45,112, 63, 0,
- 24, 56,118,130,181,231, 3, 64,133,190,106,108,120,143, 94, 7, 56, 74, 69, 12, 75,183, 10, 4,248, 73, 15,220, 75, 77,111, 62,
-115,174, 49, 84,121,101,113, 67,251, 56,210,218, 22, 56,143,182, 5,107,202, 49, 80, 74,255,104, 67,183,200, 6, 69,197,134,102,
-163,169, 47,221,210, 63,215, 35, 76,246,246,233, 11, 55, 39,179, 28,109, 45, 20,144,124,189,153,219,252,184,198, 21, 0,228,228,
-228, 92, 8, 9, 32,103,238,244,241,120,206,173,166,204,106, 81, 25, 80, 84,142, 51, 57, 57,154, 11, 45,209, 44,173, 50,143, 90,
-248,197,209,159,165, 34,161, 8,160,224,184,234,245,234, 77,108, 73,173, 17,214,249,255,216, 59,239,240, 40,170,182,141,223,103,
-182,101,147,108,122,221,146,132, 36, 36, 33,161,134,208, 67, 7, 33,161,136, 32,138,136, 40,136, 40,160,188,190,160,130, 2, 34,
- 2, 2,162,136, 8, 34,160, 47,160, 72, 47, 74,239, 77, 58,129,132, 18, 66, 11,105,155,205,166,144,190,125,103,206,247, 71,216,
- 24, 32,101, 3, 40,202, 55,191,235,218,107,179, 83,238,125,102,119, 51,115,207,115,206,115, 78, 56, 81,124,248,163,117,157, 64,
- 64,210,235,210, 59,115, 73,243,205,144, 15, 15,124,112,229,102,225,143,119,178, 42,238,124,238,100,209,203, 97, 74, 50,237, 86,
-102,233, 7,151,111, 22,126, 85,223,126, 19, 4, 88,210,250,249,233, 15, 45,171,143, 70,117, 36,167,211, 68, 0, 3,155, 4,147,
-231,134,140,249,110, 34, 33,245,187, 91,230,225,225,249,119, 99,203, 98, 49, 12,243,232,197, 55, 15, 96,203, 98, 1,184, 89,143,
-125,206, 0,104,246,164, 98, 0,128,132,132,132, 2, 0, 5, 79, 82,147,231, 97,200, 95, 57,140,207,179,144,226,126, 66,154,204,
- 99,202,113,213,104,214, 72,120,120, 56,189,121,243,166, 93,157, 5,255,165,159, 39,175,201,107,242,154,188,230,227,104,254, 21,
-231,228,199,237,156, 77,171,209,124, 34,252, 91, 52,159, 53,248,102,143,191,135, 58, 7, 54,125,146,220,184,113,227,153,169,194,
-224,225,225,225,249, 11,248, 43,206,201,252,160,195, 60,247,241,184, 46,158,135,135,135,135,135,135,135,135,231, 1, 8,128,166,
-213,173,168, 79,234,143, 16, 82,173, 70,109,212,165,207,107,242,154,188, 38,175,201,107,242,154,188,230,179,167, 89,151,246,179,
-210,244,200,247,193,226, 53,121, 77, 94,147,215,228, 53,121, 77, 94,243,169,107, 62,107,240, 77,132, 60, 60, 60, 60, 60, 60, 60,
- 60, 79, 24,222, 96,241,240,240,240,240,240,240,240, 60, 97,120,131,197,195,195,195,195,195,195,195,243,132,225, 13, 22, 15, 15,
- 15, 15, 15, 15, 15,207, 19,134, 55, 88, 60, 60, 60, 60, 60, 60, 60, 60, 79,152,191,180,138,144,135,135,135,135,135,135,135,231,
-255, 35, 12, 0, 16, 66,232,189, 71,151,167, 28, 15, 15, 15, 15, 15, 15, 15,207,255, 67,158, 53, 47, 82, 57, 85, 14,165,148, 16,
- 66, 40, 30,127, 62, 37, 30, 30, 30, 30, 30, 30, 30,158,122,243, 44,121,145,202, 62, 88,247, 14,168,235, 83,140,133,135,135,135,
-135,135,135,231,255, 49,207,146, 23,185, 47,131,245, 52, 3,225,225,225,225,225,225,225,249,255,205,179,228, 69,248, 42, 66, 30,
- 30, 30, 30, 30, 30, 30,158, 39, 12, 95, 69,200,195,195,195,195,195,195,195,243,132,225, 51, 88, 60, 60, 60, 60, 60, 60, 60, 60,
- 79,152,191,212, 96, 17, 66,154,242,154,188, 38,175,201,107,242,154,188, 38,175,201,107,254,127,131,207, 96,241,240,240,240,240,
-240,240,240, 60, 97,120,131,197,195,195,195,195,195,195,195,243,132,225, 13, 22, 15, 15, 15, 15, 15, 15, 15,207, 19,134, 55, 88,
- 60, 60, 60, 60, 60, 60, 60, 60, 79, 24,222, 96,241,240,240,240,240,240,240,240, 60, 97, 8,128,106, 43, 1, 40,165,151,237, 22,
-121,132,106,130,186,244,121, 77, 94,147,215,228, 53,121, 77, 94,147,215,124,246, 52,235,210,174,143,255,248, 39,243,151, 14, 52,
- 74, 8,105,250,164, 63, 40, 94,147,215,228, 53,121, 77, 94,147,215,228, 53,159, 61,205,103, 13,190,137,144,135,135,135,135,135,
-135,135,231, 9,243,212, 12, 22, 33,132, 33,132, 8,239, 61, 24, 66,200, 99, 79,240,248, 87,104,242,240,240,252, 51, 33, 15,240,
-180,227,225,225,249, 55,115,254,252,121,154,159,159, 79,229,114,249, 53, 66,200,152,167, 29,207,179,128,240, 73,138, 53,242,117,
-108,215, 32,192,167,239,238,243,233, 83,106,219,142, 16,194, 40,149,202,185, 62, 62, 62, 99,116, 58,157, 1, 0,101, 24,134, 70,
- 69, 69,129, 16, 2,219,185,146,101,217,188,107,215,174,217,213,254,251, 36, 53, 35, 34, 34,206, 51, 12,163,170,122,206,174,235,
-111,142,227,178,174, 94,189,218,170,174, 56,229,114,121,111,134, 97, 38,215,181, 29,199,113,115, 53, 26,205,222,218,182,105,214,
-172,217, 5,103,103,103, 63,134, 97,106,188,184, 84,109, 2,182, 90,173, 84,167,211,105,175, 92,185,210,178,174,247,127, 16,165,
- 82, 57,133, 82,218, 18,192, 42,141, 70,179,139, 82,202,214, 87,227, 1,189, 23, 41,165, 83, 1,128, 16, 50, 75,173, 86,111,174,
-207,254,225,225,225,231,197, 98,177, 74, 32, 16,144,123, 26,247,173,127,240, 53,199,113,212,100, 50,101,165,164,164,212,249, 29,
-241,252,243, 33,132,144,128,128,128,104, 63, 63,191, 96,189, 94,207, 2, 64,147, 38, 77,168, 64, 32,184,111, 59,179,217,108,190,
-118,237,218,174,167, 18, 36, 15,207,191,136,253,251,247, 99,244,232,209,184,116,233, 82,163, 93,187,118,125,175, 80, 40,198,105,
- 52,154,110,148,210,188,167, 29,219,191,149, 39,102,176,194,228,178, 70,254,222, 94, 59,230,205,158, 1, 0, 53, 26, 44, 66, 8,
- 35,151,203,231,117,234,212,105,228,154, 53,107,156,183,110,221,234, 28, 28, 28, 12,177, 88, 12,129, 64, 0,129, 64, 0,134, 97,
- 32, 16, 8, 48, 96,192, 0,187,238, 74, 31,212, 60,120,240,160,115, 68, 68, 68,229, 69,150, 82, 90,105,178,250,244,233, 83,167,
- 38,195, 48,170, 11, 23, 46,248, 74,165,210,202,253, 57,142,187,239, 65, 41,173,124,176, 44,139, 78,157, 58,217, 19, 42, 24,134,
-153,156,156,156,220,185,188,188,252, 62, 13,219,123,216,254,238,220,185, 51, 0,212,106,176, 24,134, 81,156, 56,126,208,151,152,
- 83, 1,235, 93, 80,129, 39, 32, 9, 1, 24,135,106,183,191,123,247, 46,186,117,235, 38,168,118,101, 29,248,248,248, 12, 63,114,
-228, 72,216,157, 59,119, 94,248,226,139, 47, 10, 20, 10,197,247, 0,126,202,206,206,206,124, 20, 61, 74,233,172,212,212,212,112,
- 74, 41, 66, 67, 67,103, 2,168,151,193, 18, 8, 4,170,253,251,247,251, 74, 36,146,202,239,185,166,103,150,101, 97, 54,155, 17,
- 23, 23,103,125,148, 88,121,254, 89,216,204, 85,124,124,124,208,210,165, 75,133,201,201,201,194,168,168, 40,176, 44, 91,249,224,
- 56,174, 94,255,151, 60, 60,255, 31, 9, 26,244,227,247,156,213,124, 47, 91,229, 14, 96, 57, 74, 75, 75, 49,106,212, 40,252,246,
-219,111, 81,237,218,181,155, 11, 96,228,211,140,241,223,204, 19, 49, 88, 13,149,142, 74, 23, 7,231,125,203,126,248,142, 88, 74,
-181, 30, 53,109, 71, 8, 97,252,253,253,103,117,234,212,233,181, 53,107,214,120, 16, 66,112,240,189, 55,225,110, 54, 64,241,233,
-151,240,240,246,129,105,242,104,184,176, 86, 52, 59,148,104,215,123, 87,167,153,146,146,130,187,119,239,194,199,199, 7, 78, 78,
- 78,112,112,112,128, 88, 44,134, 68, 34,177, 87, 19, 82,169, 20,251,247,239,135, 80, 40,172,124, 8, 4,130,106, 95,251,249,249,
-217,247, 65,161, 34, 51, 21, 25, 25,217,252,250,245,235,174,133,133,133,104,223,190,125, 9, 33, 36,201,182,158, 82,218, 60, 41,
- 41,201,213, 94, 61, 98, 78, 69, 89,198, 15,160,133,155, 1,247, 65, 96, 93,135,192,128,144,251, 46, 50, 54, 83,200,178,143,158,
-116,202,203,203, 51, 31, 59,118, 12,209,209,209, 88,191,126,189, 87, 97, 97,225,167,171, 86,173,154,170, 80, 40,166,100,103,103,
-207,125, 4, 73, 79, 0, 72, 73, 73, 1,128, 26,127, 51,181, 33,145, 72,112,250,244,105, 80, 74, 43, 77, 57,195, 48, 96, 24, 6,
-219,111,122,163,220,196, 64,167,189,140,241,253,131, 16, 28, 28,252, 80, 86,139,231,223, 7, 33,132,200,229,242,230,189,122,245,
- 10, 88,186,116,169, 24, 0, 46, 95,190, 12,141, 70, 3, 95, 95, 95, 72,165, 82,136, 68, 34, 8, 4, 2,136,197,226,167, 29, 46,
- 15,207, 63, 26,206,106, 30,211,162, 85,135,202,215,171,247, 47,130,209,173, 37,212,159,125,134,133, 11, 23, 34, 60, 60,188,205,
- 83, 12,239, 95,207, 99, 27,172,166,129,110,238, 14, 68,180,239,199,165, 11, 36, 48,151,123,164,156, 59,129, 38,241,111, 3,184,
-191,212,242, 94, 31, 9,198,207,207,111,236,218,181,107, 93,109, 23,187, 8,194,194, 29,102, 52,104,220, 24, 78,110,238,208, 90,
-205,160, 22, 51, 36, 98,113,181, 23, 68,123, 52, 25,134,129, 72, 36,186,239, 33,145, 72, 80, 53,219, 81,147,102, 85,108, 38,106,
-255,254,253,176, 88, 44, 24, 60,120,112,181,102,171, 58,106,210,212,104, 52,123,149, 74,101, 18,165,180, 51,199,113, 32,132, 36,
-169,213,234, 46,182,245,114,185,188,119,139, 22, 45, 38,115, 28,247,144,105,121, 80,147, 82, 10, 88, 11, 64,239,174,133, 75,251,
-124,148,156,242, 6,113,238, 9, 22, 65,184,124, 51, 7, 7,207,167, 33,255,110, 25, 98, 34,124,209,171,125, 40, 56,142,179, 59,
-206,170, 40, 20,138,240,198,141, 27, 71, 90, 44, 22, 28, 59,118, 12, 44,203,162, 89,179,102, 24, 49, 98, 4,179,104,209,162, 17,
- 0,238,139,213,206,202,146,196,132,132,132,158, 57, 57, 57, 0,112,169,174,141,171,211, 36,132,224,231,159,127,134,193, 96,120,
-104,123,143, 46, 95,224,131, 65, 65, 24,241,222,106,124,121,125, 35,150, 44, 89,114, 95,115,105, 61,226,172, 23,188,230, 95,175,
- 41,151,203, 67,150, 47, 95, 46,170,186, 76, 44, 22, 87,102,193,171,102,195, 31,108, 50,252, 59,227,228, 53,121,205,127,186, 38,
- 35, 20, 47, 77, 60,127,114, 12, 0,148, 36,111,193,127,134,118, 64,105,233, 77,188,243,206, 52,168,213,106,220,184,113, 35,225,
-239,140,243, 89,163,210, 29, 16, 66, 40,165,180, 94,183,248, 42, 21,145,186,176,142, 59,190,255,102,174,155,139,204,201,231,252,
-190,109, 72, 79,207,169,117, 31,157, 78,103,250,237,183,223,176,111,220, 72,132, 19, 43, 60, 62,157, 15, 95,133, 2,197, 35, 7,
-160,204, 98, 70,195,221,103,225, 32,147, 65,226, 44,179, 59,227,160,211,233, 76,135, 15, 31,198,149, 43, 87, 32, 20, 10, 33,147,
-201,224,236,236, 12, 7, 7,135, 74, 99,101, 59, 1,219,171, 73, 41,133, 80, 40,196,229,203,151,145,158,158, 14,119,119,119,156,
- 56,113, 2, 61,123,246,188,207, 92, 9, 4,130,251,250,120,217,139,173,105,241, 65,238,245,187,170,181,105,240, 62, 68,222,128,
-231,107, 40, 61,173, 0, 60,134,193, 66,221,192, 81, 14, 23,111, 22,224,237, 97,125, 1, 0, 99,167,254,128,158,109,131, 43,155,
- 32,235,131, 82,169,124,187,121,243,230, 11,198,140, 25,195, 56, 59, 59,195,104, 52,194,104, 52, 34, 37, 37, 5, 94, 94, 94,112,
-114,114,122,164, 52, 1,165,244,142, 66,161,128, 84, 42, 5,165,244,206,163,104, 16, 66,176, 97,195,134,106,215,189,177,224, 42,
-132, 21,221,179,176,116,233, 82, 88,173, 86,212,247,247,205,243,207, 68,167,211,177,201,201,201,162,196,196, 68, 8, 4, 2,184,
-186,186,194,201,201, 9, 98,177, 24, 14, 14, 14,149,198,138,207, 96,241,240,212, 78,250,150, 81, 99, 9, 33, 51, 3, 3, 3,143,
-254, 48,103, 78, 88,143, 30, 61, 0, 0, 7, 15, 30,196,255,134, 14,197,103,192,240, 69,132,104,198, 83,250,241,223, 21,211,163,
-120,145,127, 42, 66,224,207, 3,170,207,129, 17, 66, 72, 67, 63,151,141, 51, 62,121, 55, 56, 48, 36,212,255,204,206, 13, 72, 77,
- 85, 67,171, 45,172,118,251,123,111,192, 17, 66,184,144,144, 16,184, 90, 12,112,163, 38,248,202, 21,112,241,244, 66,161,229, 94,
-230,202,217, 25, 18,103,153, 93, 39,199,170,154,141, 27, 55,134, 86,171,133, 88, 44,134, 76, 38,131,139,139, 75,165,193,178,153,
- 43,123, 79,184,132, 16,112, 28, 7,161, 80,136,164,164, 36,116,236,216, 17, 1, 1, 1, 88,191,126, 61,122,247,238,253, 80, 22,
-235, 81,154,158,108,125,174,108,216, 58,191,219,211,185,253, 62, 36, 13, 97,117,121, 25,140, 83, 15,152,169, 43,140, 84,126,175,
- 73,144, 98,231, 89, 45,174,167,231,223,215, 92,104, 47, 42,149, 74, 33,149, 74, 87,207,156, 57,179,123,171, 86,173, 96, 54,155,
- 1, 0, 78, 78, 78, 48, 26,141, 16,137, 68, 48,155,205,208,235,245,106,251,143,250,201, 97,251,204,247,237,219, 7, 66, 72,165,
-209,181, 53, 21,150,107, 50, 49, 98,252, 26, 72,132, 64, 82, 82, 18, 34, 35, 35,159, 70,152, 60,127, 17, 17, 17, 17,200,205,205,
-133, 64, 32,128,139,139, 11,155,116,163, 79, 0, 0, 32, 0, 73, 68, 65, 84,156,157,157,209,168, 81, 35,100,102,102,222,151,197,
-226,225,225,169, 29,129, 64, 48,119,219,182,109, 97, 82,169, 20,179,103,207,134,139,139, 11, 78,207,156,137,255,137,197,112, 4,
-176,212,108,158, 12,224,111, 49, 88,143,226, 69,254,201, 60,114, 19,161, 74,165,250,186, 93,108,219,206, 33,141, 91, 75,207,236,
-217,130,155, 55,210,145,159, 95, 12, 10,232,107,217,141, 18, 66,168, 72, 36,130,239, 71,159, 35,176, 89, 51,232, 70,191,136, 66,
-139, 25,161, 59, 79,195, 65, 38,195,181,231, 90,130,154, 76,232,148,172,181,215,184, 80, 66, 8, 5, 0,111,111,111,136,197, 98,
- 72,165, 82, 72,165,210,202,190, 87, 85, 31,246,154, 33,142,227, 80, 82, 82,130, 59,119,238, 96,244,232,209,112,114,114, 2, 33,
- 4, 90,173, 22, 65, 65, 65, 16, 8, 4, 80,171,213, 56,116,232, 16, 66, 66, 66, 32,145, 72,234,245, 99,168,210,169,189,185, 82,
-169, 60, 74, 8,105,126,254,252,121,215, 86,173, 90, 1,245,201, 96, 17, 49,140, 8, 2, 11, 21, 56,250,103, 95, 43,139,245,254,
-254,220, 54,147,101, 15,254,254,254, 81, 77,155, 54, 61,245,221,119,139, 92,124,125,253,192,113, 44, 44, 22, 11,138,139, 75,160,
-211,233, 16, 24, 24, 8,103,103,103, 58,127,254,124,194,178,236,210,122, 28,246, 19,197,102,168,108, 25, 68, 91,255, 43,134, 97,
- 48,254,249, 64, 20, 22,186, 64, 32,168,120,109,239,177,243,252,179,161,148,210,166, 77,155, 82,129, 64, 0, 95, 95,223, 74, 51,
- 37, 18, 85,180, 24,250,249,249,161,164,164, 4, 2,129,160,114, 25, 15, 15, 79,205,132,135,135,199, 40,149, 74,188,255,254,251,
- 48,172, 93,139, 50, 0,253, 0,108,187,119, 83,237, 2, 76,124,170, 1,254,139,121, 36,131,165, 82,169,222,109,209,162,197,168,
- 21,171,214,200,230, 77,251,168,164, 48,249,146,192,164, 55, 59, 27, 45, 22,211, 45, 77,193,162,154,246,163,148,210,200,200,200,
-138,187, 78,119, 15, 56,185,186,193,248, 64,230,138,154, 76,224,204, 38,136,237, 60, 57,218, 52, 41,165,112,116,116,132, 68, 34,
-169, 54,115, 85,159, 12, 22, 0, 20, 21, 21, 97,195,134, 13,104,211,166, 13,156,156,156, 32, 16, 8,208,188,121,115, 36, 39, 39,
- 35, 52, 52, 20, 0,176,109,219, 54, 12, 26, 52, 8, 55,111,222, 68, 84, 84,148,204,110,113,252,217, 68,184,111,223, 62, 87, 74,
-105,103, 74, 41,242,242, 30,173, 26,150,101, 89,148,151,151, 99,223,190,125,200,206,206,134,191,191, 63,138,139, 93,224,170,168,
- 48, 21, 85,171, 31,237,129, 16,242,209,155,111,190,233, 34,147,201,192,178, 86,136, 68,162, 74,227, 42, 18,137,145,146,146,130,
-161, 67,135, 22,167,165,165,125,152,157,157,189,182,190,241, 18, 66,136, 74, 37,247, 43, 46, 46, 68,105, 73, 17, 4, 2, 4, 16,
- 66, 4,143, 50,244, 3,195, 48,149,207,182, 7, 33, 4, 98,145, 0,254,126, 62,149, 29,223,239,101,239,254,245,119, 68, 60, 21,
-176, 44,139,115,231,206,225,216,177, 99,248,227,143, 63,112,231,206,159,173,204,174,174,174,216,191,127, 63,186,117,235,246, 20,
- 35,228,225,249,119,112,227,198,141,179,233,233,233,145,211,166, 77,195, 74,165, 18, 46, 46, 46,152, 48,125,250, 41,171,213,218,
-161,238,189,121,106, 67, 8, 0,245, 73,201,169, 84,170,129,114,185,124,222,154, 53,107, 28,179,179,179,161, 8,111,226,186,125,
-211, 6,163,175, 76,172,215,220, 45,124,253,162,186,172,206,114,123,134, 97, 96,157, 57, 1, 5, 86, 19,130,183,159,132,131, 76,
-134,235,189, 91,129,154, 76,232,144,144, 6, 7,153, 12, 66,169, 99,189, 15,166,186,140, 85,213,135,237, 98, 92, 23, 38,147,201,
-189,103,207,158,232,209,163, 7, 94,124,241,197,202,166,192,232,232,104,172, 91,183, 14, 3, 7, 14, 68, 98, 98, 34, 20, 10, 5,
- 26, 53,106,132, 70,141, 26,225,240,225,195,245,138,213,150,193,234,221,187,119, 9, 33, 36,137, 82,218,252,236,217,179,118, 87,
- 15,218, 52,128, 10, 3,181,111,223, 62,244,237,219, 23,161,161,161,184,112,225, 2,246,127, 62, 31, 66,153, 55,192,248,130,114,
-180, 50,179,101, 79, 31, 44,177, 88,220, 49, 36, 36, 4, 57, 57, 90, 56, 56, 56,192,195,195, 29,142,142,142,112,112,144, 98,206,
-156, 57,220,242,229,203, 23, 19, 66, 62,207,206,206,190, 91,175,131, 6,160, 82,169, 26,182,104,209,226,231,215,135, 15,107,235,
-229,229, 13, 63, 63, 57, 38, 79,250, 56,110,237,186,245, 87,148, 74,229, 43,106,181,186,206, 14,239, 54, 8, 33, 48,153, 76, 16,
- 8, 4,216,118,221, 7,229, 38,130,146,172, 4,252,231,249,160, 74,179,101,107,234,181, 13,127,193,243,108,192,178,108,229,119,
- 92, 29, 53,117,112,231,225,225,185, 31,150,101, 39, 15, 24, 48,160,245,236,217,179,163, 38, 76,152, 0, 0, 80, 40, 20,237, 21,
- 10,197,213,191,123, 28,172,103,169,121, 16,168,146,193,170,235,192,186,118,237,186,194, 98,177,188,224,236,236,236, 49,106,212,
- 40,115,126,126, 62,182,110,221,138,255,253,239,127,186,114,139,224,124, 81,129,117,248,237,236,178,172,186,222,208,214,148, 35,
-182, 88, 64,173,127,102,174, 56,163,177, 50,147, 37,114,116,170,215, 65, 16, 66, 64, 41,173,214, 84,217, 50, 89,245, 57,217, 58,
- 56, 56, 20,253,241,199, 31,190, 89, 89, 89,247,117,104, 15, 14, 14, 6, 0,156, 61,123, 22,167, 79,159,198, 43,175,188, 2,161,
- 80, 8,177, 88,140,164,164,164,210,250,196,108, 51, 60,182, 42, 66,185, 92,222,187,109,219,182,213, 86, 15,218,163,149,145,145,
-129,208,208, 80, 24,141, 70,184,187,187,163, 64,115, 7, 25,119, 82,161, 51, 94, 71,136,191, 20,185,185,185,112,112,168,126,124,
-172, 7, 97, 89,150,181, 93,184,140, 70, 35, 52,154, 28, 40, 20, 10,252,242,203, 26,172, 88,177,226,149,236,236,236,141,245,141,
-145, 16, 34,148,203,229, 19,251,245,235, 55,235,133, 23, 94, 16,234,202,203, 64,185, 10,195, 35,150,136,241,237,183,223, 54, 58,
-116,232,208, 69,165, 82,249,133, 84, 42,157,117,235,214, 45, 83, 29,122, 0,128,149, 43, 87, 2, 0,156,218, 77,199,228,151, 26,
-224,181,177,171,241,245,215, 91,238, 59, 86,129, 64,128, 25, 51,102,212, 55,100,158,127, 56, 61,123,246, 68,239,222,189, 43,155,
- 9,189,189,189, 97, 54,155, 97,181, 90,121,115,197,195, 99, 7, 65,131,126,252, 94,213,127,201, 24, 0,152,248,237, 65, 76,153,
-249, 13,134,189,216, 27, 35, 70,140,120,106,227, 96, 61, 75, 38,235,190, 38,194, 90,204,213, 27, 30, 30, 30, 67, 71,142, 28,233,
-120,246,236, 89,204,156, 57, 83,184,127,255,126,243,185,115,231,172, 44,203, 78, 84,171,213,203,234,243,166, 12,195, 32,100,205,
- 78, 40,252,253,113, 35,174,245,125,153,171,163,205, 85,224,140, 70, 60,151, 90, 92,239,131,177, 53,101,217,140,149,205, 92,213,
- 52,148, 66,109,216,238,128, 31, 28,247,234,157,119,222,193,138, 21, 43,208,161, 67, 7,132,133,133, 65, 40, 20, 86, 54, 75,213,
-135, 7, 59,185,215,187,122,176, 10, 44,203, 34, 48, 48, 16,151, 46, 93,130,155,155, 27,126,254,249,103, 4,168,148, 24,222, 43,
- 24, 38,147, 9, 22,139, 5,229,229,229,182, 12, 86,157,129,114, 28,119,101,235,214,173,161, 47,189,244, 18, 21, 10,133,196,104,
- 52, 2, 0, 22, 45, 90,148,155,157,157, 93,175, 1, 65,129,138, 81,219, 67, 66, 66,126,122,229,149, 87, 92, 26, 53,106, 4,173,
- 86,139, 51,103, 78,225,227,143, 39,159, 17,137,132,134,184,248, 62, 93,163,162,154, 96,236,216,177, 76,116,116,244,212,143, 63,
-254,120, 98, 64, 64,192,136,204,204,204,234, 75, 4,239, 65, 8,193,186,117,235, 0, 0,111,126,123, 13, 38,147, 5, 64, 69,213,
-160,191,191,255,125,219,222,186,117,139,175, 34,124,134, 96, 89,246,190,106, 65,155,161,226,205, 21, 15,143,253,220, 55, 14, 86,
-171, 14, 56,177,101, 62,214, 93, 15,132,122,230,204,167, 58, 14,214,179,114,174,174,211,121,180,109,219,214,197,104, 52,126,251,
-223,255,254,215,177,188,188, 28,249,249,249, 40, 40, 40,192,153, 51,103,246, 91, 44,150,255,104,181,218, 26, 75,236, 73, 53,179,
-109,219, 42,190, 60,125,124,225, 32,115, 1, 53,153, 42, 51, 87, 98, 39,103,112, 70, 35, 56,179, 9,168,161, 57,167, 38, 77, 66,
-200, 67, 89, 43,123,205,213,131,154,182,140, 88,117,131,138, 6, 4, 4,224,139, 47,190,120,104,152, 6,123,226, 4, 42,170, 5,
- 9, 33,205, 1, 84,118,114,151,203,229,189,237,169, 28,172, 73,147,227, 56,116,233,210, 5,251,247,239,199,165, 75,151,192, 48,
- 12,226,227,227, 65, 8,129,155,155, 27,132, 66, 97,165,153,179, 21, 4,212,166,201,178,236,107,255,251,223,255, 62,216,189,123,
-247, 71,239,189,247,158, 99,231,206,157,109,253,188,242, 40,165,117,118,228,122, 80,147,227,184,207,146,146,146, 92,172, 86, 43,
-102,207,158,141,243,231,207,151,223,186,117,235,191, 26,141,230, 39, 74, 41,149,203,229,195,110,223,190,179,228,211, 79, 63,117,
-233,222,189, 59,206,158, 61, 43, 13, 8, 8,248, 20,192,134,154, 52,109,156, 57,115, 6, 2,129, 0,214,187,233, 24, 59,121, 61,
-100, 78, 34,164,164,164,160,160,160,160,242,183, 86, 83, 83, 82, 77,154,143, 3,175,249,247,105, 86, 53, 87, 34,145, 8,122,189,
-222, 46,115,245, 44, 28, 59,175,201,107, 62, 9,205,199, 25, 7,235,175,136,243, 89,163, 78,247,161,211,233,102, 70, 68, 68, 72,
-146,147,147,113,235,214, 45, 92,191,126, 29, 44,203,222,204,202,202,234,247,168,111,202, 48, 12,220,220,220, 32,145, 72,208,254,
-146, 26, 18,177, 24, 18,231,138, 62,226,207,165, 22, 3,148,130,145,216,215,156, 85, 85,243,193, 49,175, 30,167,138,136,101,217,
-202, 17,218,109, 6,174,186,106,181,250,102,174, 24,134,153,124,234,212, 41,215,244,244,116, 80, 74,177,101,203, 22,215, 23, 95,
-124,113, 50, 30, 33,123, 69, 41, 69, 65, 65, 1, 56,142,131, 72, 36, 66,247,238,221,209,178,101, 75,148,149,149,129,101,217,202,
-230, 75,177, 88, 92,175, 42, 66,173, 86,171, 3, 48,195,199,199,103,217,212,169, 83,103, 52,109,218,116,212,251,239,191,207,224,
- 17,139, 34, 8, 33, 86,171,213,138,141, 27, 55, 98,243,230,205,165,148,210,136,236,236,236,202, 1,211, 52, 26,205, 26, 63, 63,
-191,253, 3, 7, 14,188,121,251,246,109,215,226,226, 98, 0,168,115, 90, 27,157, 78,135,176,176, 48,176, 44,139,121, 99, 85, 40,
- 45,109, 6,150,101, 97,181, 90,225,228,228,116,223, 20, 68,252, 40,238,207, 30, 85,205, 21,223,231,138,135,167,254,164,111, 25,
- 53, 22,192, 88, 66,200, 43,211,167, 79, 95, 59,118,236, 88,112, 28,135, 35, 71,142, 96,201,164, 73,248,140,101,135, 47, 34, 68,
- 55,158,210,177, 79, 59,214,127, 35, 53, 94, 48,219,180,105,211,160,188,188,252,103,139,197, 18,205,113,156,228,232,209,163, 48,
- 24, 12, 72, 78, 78,214,115, 28,183,233, 49,222, 51, 61, 62, 62,158,121,112,190,184,234, 96, 89,214,222,206,117,233, 61,123,246,
-124, 98,154, 28,199,101, 85,157,195,172, 38,221,170,175,173, 86,107,157,253,207,238,105,207,109,223,190,253, 67,203,236,217,183,
- 26,173,212, 30, 61,122,152,171, 46,171,218,145,187,186, 78,221, 44,203,218, 21, 39, 0,228,229,229,105, 1,188, 45,151,203, 23,
-142, 24, 49, 98, 58,128,155,143, 18, 39, 33,100, 86, 84, 84,212,212,138, 63,201, 76,181, 90,253,208,104,180, 90,173, 54, 79,169,
- 84,142, 10, 8, 8,168,156, 0,186, 54, 77,142,227, 82,159,123,238, 57,115,109,223, 9,128,251, 50, 87, 28,199,217,125,236, 60,
-255, 92, 8, 33,101, 15,254, 15,213, 4,165,244,225, 97,254,121,120,120,238,195, 65, 44, 30, 62,110,220, 56,252,242,203, 47,216,
-186,112, 33,122,103,101, 97,157, 88, 12, 71,177, 24, 75,205,230, 49, 0,120,131,245, 8,212,104,176, 74, 75, 75,191,184,123,247,
-110,187,146,146, 18,107,106,106,170,158, 16, 98, 37,132,232, 57,142,251,156,227,184, 31, 30,245, 13,175, 94,189,106,223,153,241,
- 41,106, 94,189,122,181,213,147,212,171,202,227,244,181,122,144,171, 87,175,254, 45,101,180, 26,141, 38, 5,192,144, 71,221, 95,
-173, 86,111,134, 29,147, 57,219,187, 29, 0, 92,187,118,141, 47, 33,254,127,202,165, 75,151, 14, 61,237, 24,120,120,158, 37, 18,
- 47, 93,234, 13, 0,241,241,241,208, 79,172, 24,246,106,245,159,227, 96, 61,181,177, 14, 31,160, 53, 0,159,123,127,231, 3, 72,
- 1, 16, 3,192, 17,128, 17, 64, 25, 0,239, 42,219, 23,220, 91,103, 91,127, 12,128,229,239, 10, 22, 0,106, 28,183, 32, 37, 37,
-229,149,188,188, 60,161,201,100,114, 96, 89,214,201,106,181,186, 90, 44, 22,127,150,101,151, 82,190,222,157,135,135,135,135,135,
-231,153, 32, 34, 34,130,120,123,123,147,136,136, 8, 50,149,210,251, 30,255,160,230, 65, 31, 66,200, 14, 66,200,142,143, 63,254,
-184, 27,128, 14, 31,127,252,113,155,123,175, 91, 1,240,182,173, 39,132,236, 0,224,245,192,250, 22,127,119,192,246, 13, 12,197,
-195,195,195,195,195,195,195,243,148,161,148,246,155, 59,119,238, 23, 0, 4,115,231,206,253,162,202,107, 80, 74,251, 85,125,126,
- 96,189, 79,205,170,127, 13, 4, 64,211,234, 86,212,167, 58,128, 16, 82,173, 70,109,212,165,207,107,242,154,188, 38,175,201,107,
-242,154,188,230,179,167, 89,151,118, 13,251,247, 37,132,236,160,148,246,171,250, 92,101,159,126,247, 52,119, 84,253,251,129,245,
- 59,235,115, 28,143,141,173,210,234,175,120, 0,104,202,107,242,154,188, 38,175,201,107,242,154,188, 38,175,249,152,143,190, 21,
-150,165,230,231,154,254,174,178,236,239,140,183,150,178,251, 77,155, 4,234, 40,184, 74, 28,157,196, 0, 96,210,235,204,202,100,
-148, 96,240,224,122,207, 23,199,195,195,195,195,195,195,195,243,184, 16, 66,118, 76,158, 60,249,147,167, 29,135, 61, 84,111,176,
- 54,109, 18,228,183,114,242, 22, 26, 11, 35, 88,171, 57, 18, 0,132, 12,189,150,223,202,227,186,247,166, 77,249, 79,218,100,197,
-199,199,127, 66, 41,245, 19,137, 68, 59,253,253,253,143, 44, 91,182,236,111,237,233,207, 83, 73,157,125,242, 98, 98, 98, 60,140,
- 70,227,124,142,227,186,223,155,231,239,136, 88, 44,254,224,226,197,139,119, 1,212, 56,208, 86, 80, 80,208,218,208,208,208, 8,
- 90, 1, 0,220, 55, 46,151,109,153,109,125, 70, 70,198,141,204,204,204, 87,237, 13, 60, 48, 48, 48, 88, 42,149,190, 65, 8,137,
-186,167,147,108, 48, 24, 86,101,100,100,212, 56, 16,238,179,138, 66,161,112,164,148,190, 32, 18,137, 94,247,244,244,108,147,151,
-151,247,153, 90,173,254,230, 81,180, 8, 33, 66, 0, 19,221,221,221, 95,113,119,119, 15,185,123,247,238,237,146,146,146, 13, 0,
-190,166,148,214,249,127, 58,243, 93,101,187,206,125,186, 76, 59,182,235,232,204,105,139,213,167, 31, 92, 63,227, 3,133, 87,247,
- 30,177,211,118,239, 60,249,249, 23,139,213,245,154,219,146, 16,194,224,207,223, 44,135,123, 63,159,250,104,252,157, 40, 20,138,
-104, 0,147, 88,150, 21, 49, 12,243,141, 70,163,249,227,105,199, 84, 23,145,145,145, 31, 73, 36,146, 49, 12,195,220,214,106,181,
- 35,179,179,179,159,200, 80, 39,132, 16, 38, 40, 40,200, 37, 61, 61,189,148,218, 49,120, 49, 79, 5,237,219,183,215,154,205,102,
-223,218,182, 17,139,197,185,167, 78,157,242,251,187, 98,250, 27,201,167,247,154,254, 0,228, 2, 16,220,123,109,186,247,172,173,
-178, 76, 91,195,250,191,149,106, 13,150, 58, 10,174, 66, 99, 97, 68,129,246,234,144, 60,205,197,151, 1,192, 71, 30,189,193,203,
-175,241,122,117,148,196,220, 58,114,144, 76,228, 36,252, 94, 32, 16, 69, 27, 76, 70,111,145, 80,148,111,182, 90, 46, 50, 38, 58,
- 86,115,109, 75,134, 61,111,220,191,127,255, 8, 0,110, 45, 91,182, 60,103, 50,153,218,124,243,205, 55,242,205,155, 55, 55, 79,
- 72, 72, 24,250,252,243,207,111,167,148,238,221,190,125,187,190, 62, 7, 67,186,118, 21,250, 22,121, 14, 23, 8,133,253, 1, 52,
-167, 20, 0, 17, 36,113, 22,243,206, 92,143,130, 85,244,200,145, 58, 7,175,172,137,246, 49, 94, 17,132, 51,127, 40, 18,208, 78,
- 22,150, 28,167,140,120,254,169,132,130,235,246,238, 31, 24,168,232, 41, 17,146, 31, 1,192,100,165,163, 50, 50,178, 15, 60,206,
-118,213,161, 80, 40,158, 3,176,134, 16, 34, 2,176,148,101,217,109, 90,173, 54,145, 82,250,200,199, 93,149,198,141, 27,251, 16,
- 66,146, 22, 44, 88,224,213,182,109, 91, 1,199,113, 56,116,232,208,171, 83,167, 78,237,221,164, 73,147,166, 87,174, 92,201,173,
-105,223,208,208,208,136,131, 7, 15,182,216,179,103, 15, 58,116,232, 0,142,227,192,113, 28,220,221,221,241,251,239,191,163,109,
-219,182,149,203,252,252,252,208,165, 75, 23,187,227, 10, 13, 13,125, 33,186,101,235,241,255,253,112,146,159,175,151,183,139,149,
-181,154,213,106,141, 98,225, 55,243,218,133,134,134,126,127,251,246,237,109,245, 61, 86, 66, 8, 81,169, 84, 67, 68, 34, 81, 63,
- 0, 81,247, 22, 39, 91, 44,150, 29, 89, 89, 89,235,237,189,144,183,104,209,226, 24,195, 48, 13,234,243,222, 44,203,102, 36, 37,
- 37,117,172,111,204, 0,160, 84, 42, 95, 82, 42,149,255,107,215,174,157, 83,116,116, 52,196, 98, 49,190,252,242,203,137, 0,106,
- 53, 88, 54, 35,229,228,228, 52,196,217,217, 57,180,172,172,236,150, 94,175,223, 44,145, 72,122,126,251,237,183, 1,177,177,177,
- 46, 90,173,150, 8, 4, 2,191,237,219,183, 15,255,238,187,239,122, 19, 66,122,212,245,219, 42,188,205, 77,115, 16, 69,118, 42,
-188,117,120, 26,128,248, 7,215, 91, 13,210,215, 5,162,128,126, 2,122, 33, 19,192,215,246, 30, 39, 33,132, 81,169, 84,223,250,
-249,249,141,208,235,245, 6, 66, 8, 37,132,208,102,205,154,217,214, 3, 0, 76, 38, 83, 97, 74, 74, 74,163,218,180,130,219,123,
-158, 23, 48, 2, 85, 77,235, 89,142,205,186,115,234,238, 99, 15,221, 66, 41,125, 63, 49, 49,113,176, 80, 40, 36, 45, 90,180,112,
- 38,132,244,182,215, 92, 40, 20,138, 8, 66,200, 20, 74,233, 57,141, 70,243, 61,165,148, 85, 42,149,221, 40,165, 31, 1, 0, 33,
-228, 75,181, 90,125, 24, 0,148, 74,229,247, 97, 97, 97,207,223,188,121,115,169, 90,173,174,117, 60,185,218, 8, 15, 15, 31,251,
-159,255,252,103,250,152, 49, 99, 28, 11, 10, 10,130,122,245,234,245, 43,128, 78,117,238, 88, 11, 49, 49, 49,162,156,156,156,137,
-205,155, 55,127,175,117,235,214,242,171, 87,175,230, 40, 20,138, 69,254,254,254, 95, 39, 36, 36,212,105,216,155, 55,111,174, 16,
- 10,133, 35, 0, 12, 71,197, 5,116, 29,128, 85, 23, 46, 92,184,253, 56,113,253, 91, 48,155,205,190, 7,102, 77, 3, 17, 8, 32,
-237,212, 19, 28,199, 33,127,254,116, 88,239,230,195,123,214, 34, 88,173, 86,244,236,217,179, 86, 3,246, 47,230,236,211, 14,160,
-190, 84,107,176, 36,142, 78, 98,214,106,142,204,211, 92,124,185, 77,220, 34, 55, 0, 56,187,103,252,203, 94,202, 38,151, 37, 66,
-167,235, 14,174,210, 45,131,250,247,140, 30,220,175, 11, 81,201,125,145,165,201,245,251,105,221,222,184, 29,123, 15,111, 65,197,
-184, 20,117, 82, 82, 82, 50, 59, 40, 40,200,231,224,193,131,105, 18,137,196, 81, 42,149,146,151, 94,122,201,113,232,208,161,141,
- 15, 29, 58, 20,186,103,207,158,193, 3, 6, 12,216, 35, 22,139,119,110,220,184,177,176, 46, 61,191,102, 3, 27,251, 11,253, 55,
- 13,120, 33,190, 65,223,231,124, 37, 65,254, 62,224, 56, 41, 82, 82,205,129,251,143, 95,136,219,181,103,223,135,190,141, 7,190,
-148,123,117,235, 37,123, 63,156,166, 77,221,220, 29, 25, 58,193, 81, 66, 95,137,235,212, 56,184,127,124, 7, 18,210, 48, 4,215,
-147,175,135, 30, 62,122,110, 68,183, 54, 46,119,244, 38,178, 78,207,145, 5,151, 47, 23, 23,213,166, 37, 17,146,149, 73, 87,110,
- 42, 88,150,197,151,243,190,216, 63,101,202,148,202,209,213,109, 15,150,101,209,183,239, 0,124,245,213, 87, 48, 26,141,104, 29,
-221,100, 37, 0,165,189,241, 2,248,245,234,213,171, 94, 58,157, 14,123,246,236,249, 88,163,209,124,188,119,239, 94,141, 66,161,
-248, 80,163,209,172,123, 2,119,247,139,151, 46, 93,234,213,166, 77, 27,129,249,222, 24, 41,177,177,177,130, 79, 62,249,196,115,
-206,156, 57, 11, 1,188, 82,211,142,148, 82,186,103,207, 30,252,252,243,207,249,243,230,205,203, 2, 0,111,111,111,229,171,175,
-190,234,179,102,205,154,188, 5, 11, 22,100, 81, 74,225,229,229,165, 26, 50,100,136,143,189,161, 6, 4, 4,132,196,180,110, 59,
-126,213,202,149,109,139,239,222, 53,252,184, 96,233, 5,163,208, 65, 23, 20, 21, 33,158, 54,125,150,219,231,159,126,252,118, 64,
- 64,192,229,204,204,204, 84,123, 15, 82, 46,151, 7, 54,104,208, 96,203, 39,159,124,210,180, 99,199,142, 34, 95, 95, 95,104,181,
- 90,164,164,164, 52, 61,113,226,196, 11,219,182,109,155, 40,151,203, 7,105, 52,154, 58,111, 38, 40,165,225,191,125,249,133,175,
-131,151, 55, 56,139, 5, 30,205,162, 43,215,101, 31,218, 11,206, 98, 1,103,177, 32,160,239, 11,182,237,209,173, 91,183, 71, 26,
-146, 92,165, 82, 41, 34, 34, 34,126,153, 60,121,178,216,104, 52,226,226,197,139, 56,117,234, 20,151,155,155, 91,235, 64,182,132,
- 16, 33, 33,100,223,244,233,211, 85, 29, 59,118,116,201,207,207, 7,203,178,222,219,182,109, 27,219,178,101, 75, 87,149, 74, 37,
- 89,189,122,181,109,134, 0,207,208,208, 80,207,161, 67,135,154,126,254,249,231,137, 0,230, 85,167, 57,243, 93,101,187,162, 91,
-220,180, 28, 97,104, 92,163, 86,111, 32, 71,184, 55,110, 66,111,249,110,247, 80,166, 50,147, 21,223,176,161, 75, 72,164,211, 36,
-153,107, 83,207, 98,245,254, 73,241, 13, 27,174,216,125,235, 86,157,147,166, 19, 66, 24,165, 82,249,109,159, 62,125, 94, 93,186,
-116,169, 83,114,114,178, 83, 84, 84, 20, 56,142,131,213,106, 5,203,178,182,121, 55, 81,117,192,224,154, 16, 48, 2,213,137, 45,
- 87,124, 29, 29, 29, 43,255, 15,109,207,229,229,229,232,253,122,187, 58, 53,236,129,227, 56,137,237,119,109,181, 90,165, 0, 68,
- 0,106,157,212,188, 10, 51, 78,158, 60,249,210,238,221,187,135,205,154, 53, 43, 28,192,187, 28,199, 77, 75, 78, 78,238, 2, 0,
- 81, 81, 81, 18, 0,135, 21, 10,197,200, 49, 99,198,140, 25, 55,110, 28, 94,127,253,245,105,132,144,217,143,250,127, 47,145, 72,
- 62,125,231,157,119, 28, 45, 22, 11, 28, 29, 29, 97, 54,155, 27, 62,138,142,141,198,141, 27,139,117, 58,221,230, 25, 51,102,244,
- 27, 48, 96,128,109, 10, 47,255, 99,199,142,205,249,224,131, 15, 58,196,196,196, 12,172,201,100,197,196,196, 68, 3,248, 60, 44,
- 44,172,247,235,175,191, 46,136,141,141, 69, 89, 89, 25,246,237,219, 55,101,203,150, 45, 83, 98, 98, 98, 78, 2,152,150,144,144,
-112,228,113, 98,124,224, 61,211, 1, 4,222,123,153,145,144,144, 16,244,164,180, 31, 7,129,204, 5, 41,131,186, 33, 52,185, 0,
- 0,144,243,253,124, 0,128,235,167, 95, 61,205,176,120,170,225,145,166, 62,209,233,116, 45, 63, 30, 63, 28, 12, 83,113,151, 24,
- 22, 18,136, 57,159,140, 38,191,237,216,219,178,182,253,218,183,111,191,128,101,217,112, 79, 79,207, 15, 13, 6,131,116,225,194,
-133, 82,181, 90, 29,185,121,243,102,154,152,152, 8,177, 88, 12, 55, 55, 55,116,239,222,221, 33, 46, 46,174,225,201,147, 39, 3,
-183,108,217, 50,160,111,223,190,171,118,238,220,185,189, 38, 93,239,102,207,135,251,249,248, 31,253,106,214, 91,158, 77, 67, 66,
- 97,178, 88,144,149,171, 6,133, 4,254,190,206, 24,246, 66, 11,113,108, 43,113,216,215, 75, 14, 30,241,107, 58,160,179,246,242,
-111, 87,234, 58,198, 78, 49,206,103, 7,118,105, 24,243,124,239, 14, 76, 88, 84, 99,136, 29,156, 42,215, 53,107,217, 18,205, 90,
-182, 36,163, 71,151,134, 36, 94, 72,156,186,231,224,153, 79, 58,197, 56, 39, 28, 79, 40,175,121, 98, 76, 10, 7,219,220,105,131,
- 94,124, 25, 17, 17, 17,247,157,204,109,127,167,165,165,129, 16,130,252,252,124,112, 20,146,186,226,124, 16,157, 78,135,211,167,
- 79,163, 69,139, 22,232,213,171, 23, 94,121,229, 21,249,182,109,219,126, 93,188,120,113, 23, 0,163,235,171, 87, 21,150,101, 99,
- 91,182,108, 41, 48,155,205, 16, 8, 4, 40, 40, 40, 64,106,106, 42, 66, 67, 67, 5, 44,203,118,173,109, 95, 74, 41, 58,116,232,
-128,121,243,230,101, 29, 61,122,180, 37, 0,116,238,220,249, 66,219,182,109,125, 22, 44, 88,144,117,252,248,241, 24, 0,136,141,
-141, 77,104,213,170,149,221,229,180, 78, 78, 78,111,190,255,223, 15,124,138,239, 22,234, 45,165,165,102, 25,199, 90, 93,165, 34,
- 82,146, 87, 80,116, 39,211, 85,247,230,152,241,194, 79, 39, 79,120, 19,128, 93,109,246,114,185, 60, 48, 50, 50,242,236,138, 21,
- 43,124,189,188,188, 80, 84, 84,132,130,130, 2,156, 61,123, 22, 28,199, 33, 46, 46,206,161,101,243,230, 45,191, 94,176,224,148,
- 92, 46,111,111,143,201,114,240,242,198,230, 46, 21,255, 26, 47,221,174, 56, 41, 18, 66,176,231,149,254,149,219, 12, 77,175,152,
-220, 92, 42,149, 62,242,180, 62,148,210,246,177,177,177, 98, 0,152, 56,113, 98, 73,121,121,249, 28, 66,200,175,217,217,217,234,
- 58,118,157, 56,117,234, 84,101, 72, 72, 72,208,175,191,254,138,178,178, 50, 0,240, 13, 9, 9, 65,120,120, 56,123,244,232, 81,
- 68, 68, 68,192,197,197, 5, 71,143, 30,197,233,211,167, 17, 29, 29,237, 34, 22,139, 95, 70, 13, 6,171,115,159, 46,211, 28, 68,
-145,157, 26,181,122, 3, 50, 87, 57, 86,172, 93,143,148,243,171, 58, 25, 45,215,166,125,242,174,242, 53, 1,117,120, 67, 25, 46,
-155, 28,220,170,171, 87, 88,147, 1,104, 16,115,209,219,200, 30, 75,157, 54, 46,116,174, 80,106, 88, 61,253,171,236,130,234,116,
- 9, 33,140,191,191,255,252,248,248,248,151,150, 46, 93,234, 14, 0,151, 46, 93, 66, 78, 78, 14,124,124,124, 32,149, 74, 33, 18,
-137, 32, 20, 10,235, 53, 85,150,163,163, 35, 52, 26, 13,108, 55, 14, 44,203,162,180,180,180,114,210,240, 25, 51, 8, 51,125,186,
-125,217, 38,185, 92,222,177,101,203,150,107, 84, 42, 85, 64,213,229,241,241,241, 24, 61,122, 52,202,203,203, 17, 29, 29, 29,235,
-231,231,103,124,235,173,183,192,113, 28,180, 90,109,217,165, 75,151,158, 83,171,213,103,106, 56,110,125, 78, 78, 14,198,140, 25,
-131,140,140,140,113, 10,133, 34,157, 97, 24,169, 68, 34,177,173,151, 40, 20,138,136,136,136,136,111,223,122,235, 45,164,165,165,
-225,250,245,235,103, 31,231,166,202,193,193,161,156,101, 89, 95,171,213, 10,189, 94,143,184,184, 56,105,100,100,164, 86, 36, 18,
- 93, 43, 42, 42, 26,150,153,153,169,177, 71,135, 16, 34,148,203,229,254, 34,145,104,233,248,241,227,251,116,233,210, 5,215,174,
- 93,195,158, 61,123,240,252,243,207,163,107,215,174,152, 50,101, 74,223,105,211,166, 77, 4, 80,211,205,192,166,205,155, 55, 7,
-171, 84,170,202, 41,145, 92, 93, 93,241,230,155,111, 98,248,240,225,216,181,107, 87,135, 47,190,248, 98,115,215,174, 93,125,143,
- 60, 70, 75,197, 3, 4, 38, 36, 84, 76,197, 23, 19, 19, 19, 88,199,182,127, 27, 14,173, 58, 32, 52,185, 0,183,163,188, 0,160,
-210,104,217, 94, 67, 89,235,101,152,231,111,164, 90,131,101,210,235,204, 66,134, 94,243,145, 71,111, 56,187,103,124,101, 19, 33,
-172,244,154,201,172, 51, 3, 0,203, 81,148,232,172,112,116, 96,144,166, 41,197,229,219,249, 15,233,208, 7, 74, 45,117, 58,221,
-127, 23, 45, 90,132, 47,191,252, 50, 94,175,215,151,165,166,166,106,202,202,202,202,135, 13, 27, 70, 68, 34, 17, 78,156, 56,129,
- 59,119,238,160, 89,179,102,112,119,119, 71,199,142, 29,197,189,122,245, 10, 24, 57,114,228,107, 0,182, 87,167, 73, 94,122, 73,
- 32,151, 56,252, 62,127,214, 16, 79, 34,184,142,235, 25, 69,104,168,106, 3, 47,183, 0,168,243,202,144,112,117, 23,174,223,218,
-137,134,170, 64,140,126,181,161,251, 55, 63,228,237, 32, 49,111, 55,164, 9,127,246,243,122, 80, 19, 0,164, 98,182,245,103,139,
- 18,193,150,223, 2,181,100,128,154, 31,154,221, 5, 78,238, 1,136,108,225, 7, 39,137, 15,115, 41,249,155,214,181, 29,187,209,
- 74, 63,154, 61,115,198, 79,205,163, 99, 80, 92, 92,140,239,190,251,174,210, 88, 81, 74, 43,239,184,219,181,107, 7,139,197,130,
-159,126,250, 9, 22,174, 34,253, 95, 91,156, 15, 48,180,109,219,182,235, 41,165, 18, 71, 71,199,156, 22, 45, 90, 4,189,251,238,
-187,194, 33, 67,134, 64,175,215,191, 37,151,203,247,106, 52,154,173,245,212, 4, 0, 52,104,208,160, 99,215,174, 93, 29, 5, 2,
- 1,204,102, 51,138,139,139,145,149,149,133,212,212, 84,120,123,123, 3, 85,250,111,213,164,249,224, 92,136,148, 82,106, 59,254,
- 42,203, 42, 63, 23,123,226, 36,132, 68,122,184,123, 56,255,248,245,210,243, 62, 14, 2,226, 29,160, 32, 98, 87,119, 33, 35,115,
-113,160, 2,129, 62, 40, 64,225, 66, 8,137,172,110,223,135,126, 75,132,144, 6, 13, 26,108, 89,185,114,165,175, 72, 36, 2,203,
-178,240,241,241, 65,106,106, 42,138,138,138, 80, 90, 90,138,212,107,201, 8, 86,169,240,159,209,163,228, 51,190, 90,176,133, 16,
-210,170,234, 69,172,186, 56, 57,203,253, 55,229, 53, 25,168,154,150,219,251, 29,113, 28,119, 39, 59, 59, 27, 78, 78, 78,136,138,
-138,146,157, 59,119,238,184, 90,173,174,214, 92, 85,213,148, 74,165, 47,199,198,198,186,172, 93,187, 22, 49, 49, 49,112,115,115,
-195,225,195,135,113,233,210, 37,152,205,102,166,180,180, 20, 50,153, 12,115,231,206, 69, 96, 96, 32,138,139,139,145,158,158,238,
- 37, 18,137,188,107,210, 60,182,235,232,204,194,219,135,167,229, 8,246,198,173, 88,187, 30,111, 13, 29, 2,127,235,237,227, 30,
- 13,153,153,241,125, 59,124, 42, 16, 5,244,115,118,105,234, 17,222,116, 0,196, 18, 25,222,253,232,115, 92,191,252,187,135,174,
-244,210, 56,214,146, 25, 0,224, 63, 15,106,146,138, 15,136, 81, 40, 20,163,150, 45, 91,230, 98, 91,206, 48, 12, 68, 34,209,125,
-198,202, 54, 25,123,117,159,105,117,159, 39,203,178, 48,155,205, 48,155,205,224, 56, 14,121,121,121, 40, 45, 45,133,135,135, 71,
-197, 6,211, 1, 2, 66, 40,170, 55, 44, 85, 53, 25,134, 25,182,126,253,250, 0, 39, 39,167,135,182,203,204,204, 68,113,113, 49,
-156,157,157,225,238,238, 14,139,197, 2,171,213, 10,163,209, 40,235,218,181,235, 88, 0,103,170,211, 20, 8, 4, 19,198,140, 25,
- 19,187, 99,199,142,208, 89,179,102,193,108, 54,207,207,203,203,131,205,160,117,236,216,177, 29,165, 52,101,252,248,241, 0,128,
- 25, 51,102, 88,202,202,202,222,177,231,216,171,195,207,207,175,113,255,254,253, 61, 14, 28, 56,128,142, 29, 59,194,104, 52, 98,
-236,216,177,174,163, 70,141,114, 61,121,242,164,207,194,133, 11, 87, 3,232, 89,155,102, 76, 76,140, 72,171,213, 78, 26, 54,108,
-216,196,158, 61,123,186,229,231,231,195,193,193, 1, 27, 54,108,192,143, 63,254,184,219,108, 54, 79,221,188,121,243,236,229,203,
-151,199, 13, 24, 48, 0,203,151, 47, 31, 79, 8,249,146, 82,202, 85,163,169, 8, 8, 8, 64, 82, 82, 18, 60, 60, 60,224,237,237,
-141,226,226, 98,156, 62,125, 26,103,207,158, 69,100,100, 36, 8, 33, 30,168,184,166, 85,107,176,106,137, 51, 29,143,152,169,178,
-247,243,172, 15,117,105,218, 42,212,108,103, 72,150,173,232, 18,205, 2,168,201, 77,219, 19, 39, 33, 68,168, 80, 40, 6,184,187,
-187,143,163,148, 10, 11, 11, 11,151, 57, 57, 57,109,186,117,235, 86,181, 89,214,191,226,216,159, 53,132, 0, 64, 8,177,125, 47,
- 93, 41,165, 71,149,201, 40,201,111,229,113,221,203,175,241,122, 47,101,147,138, 15,209, 74,175, 9, 28, 60,174,251,157,215,149,
- 0,128,217, 66,113,242, 90, 33,146,110,106,145,116, 35, 7, 50,105,221,119,221, 94, 94, 94,232,208,161, 3,126,251,237, 55,100,
-102,102,202,230,206,157, 27,110, 54,155,205,253,251,247,207,110,208,160, 65, 97,199,142, 29, 33, 18,137,112,230,204, 25,148,148,
-148, 64, 32, 16, 64, 34,145,128,227,184, 26, 51,109,190, 55,216, 55, 94, 31,221, 50,212,219,157,193,246, 19,123,209, 46,114, 32,
-156, 28, 68,200, 43,212,131, 33, 4,183,238, 28, 0,203, 58, 35,241, 90, 6,218, 55,117, 70,167,182,110,170,178,131,119, 71, 3,
- 88, 98,207, 7,100, 86, 31,129,164,193, 32, 64,218, 4,212,116, 11,156, 73, 13, 42,242, 69,185, 78,138,252,180,116, 92, 59,189,
- 9,212,170,171, 83, 39, 51, 51,251,127, 10,133,162,227,145,225,111,188,193,113, 28,230,205,155,119,228,198,141, 27,221,170,110,
-211,176, 97,195,195, 83,166, 76,233, 90, 88, 88,136,189,123,247,174,202,206,206, 94,105, 79,140, 54,178,179,179, 15, 0,240,180,
-189,150,203,229,129, 23, 46, 92, 88,251,203, 47,191,180,127,237,181,215,176,113,227,198, 15, 1,108,173, 89,225, 97,198,143, 31,
- 47,250,237,183,223,122, 59, 58, 58,126, 55,109,218, 52,153,201,100,130, 70,163, 65, 78, 78, 78,101,182,237,202,149, 43,172, 80,
- 40, 60, 89,155, 78,117,166,201,182,252,193,155,236,123,203,236,189,243, 46, 51, 89, 44, 70,231, 0,133,165,255,128,222,205, 46,
-157,189,120,221,209,211,147,105,214, 58,186,241,181,155,105, 9,164,162, 9,198,174,102, 24,149, 74, 53,100,250,244,233,205, 92,
- 93, 93,193,113, 28,220,220,220,144,151,151, 87,105, 40, 77,165, 37, 48,151, 20, 35, 41, 61, 21, 29,187,118, 71,175,246,237,162,
-118, 90, 44, 67, 0,172,171, 77,215,179,121,203,202,204,213,198, 80,175,202,229,175,164, 21, 85, 26,128, 93,109,194,224, 32,115,
- 70,211,247, 63,182,243,176, 31, 70,163,209, 92, 8, 10, 10,218, 21, 23, 23,215,103,244,232,209, 76, 78, 78,206, 30, 63, 63,191,
- 88,173, 86,123,181,182,253,100, 50, 89,195,252,252,124,148,150,150,194,205,205, 13, 11, 23, 46,132,175,175, 47,116, 58, 29,206,
-157, 59, 71, 85, 42, 21, 57,124,248, 48,148, 74, 37, 10, 10, 10, 96, 54,155,161,211,233,114, 76, 38, 83,141,125, 36,239, 53, 3,
-198, 79,232, 37,223,157,114,126, 85, 39, 37, 82,207, 13,254,176,211,141,196,179,215, 51, 15, 29, 60, 49,211,106,144,102, 22,101,
-237,159, 20,210, 58,209,123,220,135, 51,176,120,254,116,164,156, 57,122,215, 47,176,116, 9, 75,140,171, 98,123,215, 28,175, 78,
-167, 51, 36, 39, 39,187, 36, 38, 38,130, 97, 24,184,186,186,194,217,217,185,114, 98,115,155,185, 18, 10,237, 79,208,219,110,112,
-108,230, 42, 47, 47, 15,183,210,175, 99,243,161,213,176, 88, 45,222, 43,219,186,230,132,138,197, 73,222,197,228,147,252,203,244,
- 66,109, 90,148,210,101,175,188,242,202, 16,165, 82,233, 82,117,121,139, 22, 45,240,234,171,175, 98,207,158, 61, 56,127,254,252,
-125, 55, 88,121,121,121, 26,150,101, 87,213,164,153,145,145, 81,164, 82,169,226, 70,141, 26,149,176,117,235, 86,215,175,190,250,
-170,114, 98,115, 91,179,168,237,121,237,218,181, 72, 72, 72,152,150,147,147,115,205,238, 15,160, 10,254,254,254,145,253,251,247,
- 63,182,100,201, 18,119,173, 86,139,252,252,124,148,151,151, 67, 36, 18,193,106,181, 34, 44, 44,140,176, 44, 27, 92,155, 70,227,
-198,141,197, 12,195,252,126,232,208,161,222,225,225,225, 0, 0,139,197,130, 19, 39, 78, 96,244,232,209, 5, 78, 78, 78, 47,167,
-165,165,149, 43, 20,138, 41, 59,118,236,136,107,209,162, 5,154, 53,107,230,159,155,155,235, 2,160,184, 58, 77, 91,150,223,246,
-253,252,244,211, 79,149,235, 12,134,138, 41, 39, 77, 38, 19,105,221,186,117,240,185,115,231,234, 83,220, 82, 83,166, 42,163,202,
-107,187,250, 22,255, 29,164,255,178, 2,105,159,188,135,160,227, 41, 0,128,132,198, 21, 93,174,130,142, 38, 87,108, 48,124,120,
-189,244, 20, 10,133, 23,165,244,173,158, 61,123,190, 31, 23, 23,231, 35,151,203,225,229,229,133, 75,151, 46,197,238,221,187,247,
- 59,149, 74,245, 3,203,178, 63,216,147,173,127, 92, 30,244, 34,127,245,251,253,213, 84,158,129, 40,165,228,222,193, 17, 12, 30,
-204,122,111,218,148,175,142,146,152, 37, 66,167,235, 0, 96, 50,235,204,126,231,117, 21,195, 52,204, 92, 11, 10, 10,150,187,151,
-109,160, 20,172,157,117, 32,134,107, 47,130, 43,250, 29,190, 30, 3,176,124,249, 86,228,230,230,138, 23, 46, 92,216, 96,235,214,
-173,170, 97,195,134,101,132,133,133, 21,119,239,222, 29,171, 87,175,134,191,191, 63, 76, 38, 19, 56,142,171,209,189,185,120,178,
-131,219, 54, 11, 19, 92, 79,191,132, 86,225, 47, 34, 88,222, 17,183,212,197, 3,211, 49,224, 0, 0, 32, 0, 73, 68, 65, 84, 40,
- 44, 53,162,160, 88,143,136,136, 15,161,189,171, 67, 73,185, 1,151, 82,126,133, 74, 30,194, 8, 68,183,226, 96,167,193, 50,222,
- 90, 3, 99,234,122,136,229,221, 32, 9, 25, 2,145,119,123,100,166, 28,193,197, 3, 11,144,117,227, 15, 80,142,133, 95, 64,181,
- 9,146,135,160,148,126,182,104,209,162, 97,115,230,204, 17,190,247,222,123, 93,149, 74,101, 87,181, 90,125, 4, 0,148, 74,101,
-215, 49, 99,198,116,117,113,113,193,236,217,179, 45,148,210,207,236, 18,173, 5,141, 70,147,161, 84, 42,199, 29, 56,112, 32,113,
-228,200,145,136,140,140,108, 73, 8, 97,236,233, 88, 27, 22, 22, 54, 90, 34,145,140,176, 90,173,225, 67,135, 14,101,222,122,235,
- 45,153,175,175, 47,210,210,210, 96, 52, 26,193, 48, 12,196, 98, 49,174, 92,185,194,253,254,251,239,197, 98,177,120,124, 93,154,
- 28,199,193,219,219, 91,217,169, 83,167, 4, 0,240,244,244, 84,113, 28, 7, 47, 47, 47, 85,135, 14, 29, 18, 0,192,195,195, 67,
- 89,157, 17,171, 9,179,217,124, 46, 35, 61, 61, 34,182, 83,172,252,216,249,171, 23, 6,189,208,175, 27, 35,100,152, 59,233,154,
-115, 62, 94,158,206, 39, 78,254, 81, 98, 54,155,207,217,163, 37, 18,137,250,117,236,216, 81, 88, 88, 88, 8,133, 66,129,188,188,
- 60,168,213,106, 88, 44, 22, 24,138, 11, 97, 46, 41,129,185,184, 8, 84, 87,134,219,231,206, 32, 42, 64,233,176,175,162, 19,124,
-173, 6,203,230, 21,171,155,152,218,182,204,193, 69, 6, 71, 23,151,202,230, 15,123, 81, 40, 20, 3, 92, 93, 93, 39,149,150,150,
-238, 82,171,213,179, 76, 38,211,187,115,230,204,105,253,249,231,159,123, 79,154, 52,201,117,210,164, 73, 27, 27, 52,104, 16,157,
-150,150,102,172, 73,163,172,172,236,150,197, 98,241, 2,224,119,240,224, 65,248,248,248,160,164,164, 4, 22,139, 5,122,189,222,
-228,225,225, 33, 45, 40, 40,128,193, 96,128,201,100,130,171,171, 43, 18, 18, 18,238, 90,173,214, 26,155,237,109,184, 55,100,102,
- 26, 45,215,166,121, 54,118, 86,179,212,171, 75,169,158, 43,156,254, 85,246, 76, 0, 95,199, 55,108,184,194,196, 29, 77,189,126,
-249, 55,143,212,115,135,239,102,223,208,133,174,216,121,187,198, 62, 88,180,226, 36,197, 17, 66,104,163, 70,141,144,151,151, 7,
-129, 64, 0,103,103,103,200,100, 50, 68, 70, 70, 34, 51, 51,243,145, 13, 86, 85,115,117,224,212, 14,228,151,105,176, 98,254, 90,
- 40,253, 3, 24, 0, 62,234,156,204,231, 70, 78,124,169,109, 72, 71,143, 57,169,127, 20,214,216,175, 45, 59, 59,251, 34, 0,215,
-170,203,148, 74,101, 55, 15, 15,143, 67,102,179, 25,105,105,105,216,183,111, 95,215,172,172,172,163,118, 7, 8, 32, 43, 43,235,
-182, 82,169,140,123,225,133, 23, 86, 55,107,214,172, 33,165, 20,145,145,145, 24, 48, 96, 0, 54,111,222,140,171, 87,175,162,164,
-164,132, 59,126,252,248, 74,141, 70,243, 72, 29,114,228,114,121,163,190,125,251,254,177,120,241, 98,143,252,252,124, 24, 12, 6,
-148,149,149, 97,211,166, 77,136,141,141,133, 84, 42,197,162, 69,139, 74,172, 86,235,226,154, 52, 26, 55,110, 44,166,148,254,182,
-117,235,214,222,161,161,161,184,118,237, 26,142, 31, 63, 14, 31, 31, 31, 56, 58, 58,162,127,255,254, 94,235,215,175,127,183,113,
-227,198, 11, 68, 34,209,204, 62,125,250,128,101, 89,156, 63,127, 94,147,158,158, 94,227,247,111,203,212, 84,135,193, 96, 0,165,
- 20, 22,139,101, 33,195, 48, 47,199,196,196,244, 74, 72, 72,120,172, 78,209,255,148, 62, 87, 0,160, 82,169,154,136, 68,162,255,
-120,120,120, 32, 47, 47, 15, 69, 28, 32,187, 91, 81,116, 91,124,239,116,121,247,238,221,202,115, 77,120,120,248, 78,189, 94,255,
- 73, 86, 86, 86,141, 89, 38,165, 82,217,220,201,201,233,253,254,253,251, 15,235,219,183,175,192,108, 54, 99,199,142, 29, 88,188,
-120, 49,226,226,226, 16, 22, 22,134, 15, 63,252,208,205,104, 52, 78,222,179,103,207,164,168,168,168, 61,165,165,165, 31,215,166,
-249, 36,184,207,139,252,203,169, 60, 3,221, 59,160, 63,251,209, 12, 30,204, 42,129, 66, 0,240,247,247,247,246,244,244, 92,204,
-178,108, 55,124,250, 41, 92,132,110, 72,187,117, 3,165,133, 28, 44, 38, 35, 56,142,130,214,236,129,238,131, 43,250, 29,174,157,
- 41, 74,142, 17,152,205,102,248,250,250, 98,238,220,185, 40, 46, 46, 22,142, 28, 57, 50,120,198,140, 25, 23, 13, 6, 3,202,203,
-203,161,215,235,161,215,235,107, 53, 88, 98,169,177, 89,144, 95, 56, 74,245,109,224, 36,145,160,160,196,136,194, 82, 35,242,139,
- 12,216,242,219, 80, 24,245, 58, 88, 77, 38,176,102, 43,100,126, 3, 17,230,217, 13,192, 77,187, 70,166,173, 76,162,112, 86,152,
-213,251, 97, 86,239,135, 83,139, 41,248,109,209,107,247,109,103,181,218,215,228,175,209,104, 50, 20, 10,197,247, 35, 70,140, 24,
-255,194, 11, 47,224,135, 31,126,248, 18, 64, 43, 0,144,201,100, 95, 14, 28, 56, 16, 87,174, 92,193,177, 99,199,150, 62,169,187,
- 5, 74,169,151,167,167, 39, 24,134,129, 78,167, 51,214,101,174, 54,109,218, 68,102,204,152,177,167,127,255,254,237,223,125,247,
- 93, 39,127,127,127, 80, 74, 97, 50,153,144,149,149, 5,134, 97, 80, 84, 84,132,159,126,250,169,252,252,249,243, 84, 34,145,156,
- 20,137, 68,111, 95,185,114, 37,187,174, 88, 60, 60, 60, 48,116,232, 80,159, 54,109,218,248, 84,173, 24,124,249,229,151,125, 90,
-181,106, 85,185, 76,165,170,177,160,235, 33, 12, 6,195, 79,179,103, 78,235,246,203,154, 13,145,141, 34,195, 60,118,237, 59,124,
-193,203,203,213, 49, 56, 56,212,161,184,168,200,184,120,225,124, 97,121,121,249,255,236,148,139,242,246,246, 70, 78, 78, 14,110,
-222,188, 9,163,209, 88,209,132,163, 43,131,169,168, 8,230,226, 66,192,160,135,132,101, 97,204,215, 34, 56, 52, 24,248,179,194,
-176, 86,170,154,169,170,203,108,207,142,110,174,144, 56, 59, 67, 32,170,190, 89,171, 58,228,114,121, 76,203,150, 45, 55, 44, 95,
-190, 92, 60, 97,194,132,182, 13, 26, 52, 88,156,147,147,147,174, 82,169,122,204,159, 63,255,236,172, 89,179, 28,134, 13, 27,214,
-104,217,178,101,175, 3, 88, 86,147,142,193, 96,216,176,107,215,174, 87, 3, 3, 3,253, 46, 95,190, 12,131,193, 0,142,227, 16,
- 31, 31, 15, 0, 82,219,118, 41, 41, 41,122,189, 94,175,189,114,229, 74,105,122,122,186, 25,118, 84,253, 77, 91,172, 62, 61,225,
- 37,213, 32,185, 92,113, 74,226, 16, 20,194,232, 18, 6, 78,120, 73,245,213,130,141, 89,134,221,183,110,149, 78, 27, 23, 58, 87,
- 87,122,121,156,135,170,124,201,146,237, 53,155,171, 42,208,123, 21,131,240,246,246,174,108, 18, 20,139,197, 0, 0, 63, 63, 63,
- 20, 23, 23,215,218, 68, 88, 29, 44,203,162,184,184, 24,197,197,197,184,113,231, 26,242, 74, 53,216,191,238, 20, 88,150,173,204,
-142, 40,252, 84, 56,176,238,172, 75,215,193,173, 63,241,106, 78, 14, 23, 36, 81,187,140, 59, 0, 48, 12,243,254,139, 47,190, 8,
-179,217,140, 1, 3, 6, 96,237,218,181,239, 3, 56,106,239,254, 54,212,106,245,105, 66, 72,248,205,155, 55, 93, 45, 22,203,243,
-253,251,247, 95,213,167, 79, 31,156, 58,117, 10, 7, 15, 30,236,106, 50,153,174,179, 44,171,151,203,229,115,228,114,185, 47, 33,
-100, 78,118,118,118,173,213,206, 17, 17, 17,195, 92, 92, 92,102, 59, 58, 58,150,246,233,211, 71, 97,203, 92,149,151,151,195,106,
-181, 34, 43, 43, 11,187,119,239,214,236,218,181, 75, 67, 41,117, 42, 43, 43,155,158,145,145,177,169, 58,173,152,152, 24,145,197,
- 98,217,246,251,239,191,199,133,134,134,226,232,209,163,152, 55,111, 30, 26, 54,108,136,149, 43, 87,162, 67,135, 14, 8, 14, 14,
-134,167,167,231,127, 74, 74, 74,218,207,155, 55,175, 79,203,150, 45,177,117,235, 86,228,230,230,126, 87,219,249,169,182,243,172,
- 94,175, 7,165, 20,221,187,119, 31, 61, 97,194, 4,244,239,223,127, 95,171, 86,173,218,156, 63,127,254,134, 29, 31,235, 63, 50,
- 83,101, 67,161, 80,204,237,217,179,231,164,230,205,155, 99,205,154, 53, 48,182,234, 8,231,149,219,113,185, 95, 44, 40, 0,197,
-202,223, 0, 0,151,159,175, 40,232, 8,238, 49, 24,147, 38, 77,234, 51,112,224,192, 64, 0, 77,106,208,252,234,181,215, 94,155,
-248,218,107,175,225,194,133, 11, 88,182,108, 25, 46, 94,188, 88,121,205,179, 88, 44, 72, 78, 78, 70,114,114, 50,228,114, 57,250,
-245,235, 71,222,126,251,237,248,248,248,120, 31,220,187,102,253, 85, 60,228, 69,254,197, 84,159,193,170,130,191,191,191,183,135,
-135,199,149,197,139, 23,123,181,109,219, 86, 96,181, 90,113,240,208, 33,124,240,222, 72,196,245, 27, 7,131, 81, 2,171,129,128,
- 21,203,236,123, 71,215,126, 40, 57, 70,192,201,250,192,100, 50, 97,244, 90, 49,220,137, 22, 11,223,240, 3, 0,162,215,235, 97,
- 52, 26,161,215,235, 81, 94, 94,142,242,242,114,176, 44, 91,227, 89,178,180,200,217,108,182,112, 80,231,166, 35, 75,115, 25,110,
-178, 64, 80, 38, 0,218,187, 58, 16,248,194, 98, 72, 1,119,239, 31,211,168,207, 66,185,241,241, 76, 49, 91,250,112, 49, 26,199,
-217,223,167,146,101,217,217,243,231,207, 31,189,120,241, 98,135,113,227,198,197, 40, 20,138,231, 1, 96,226,196,137, 49, 82,169,
- 20, 75,150, 44, 49,178, 44, 59,251,177,130,188, 7, 33, 68,160, 84, 42,223,239,220,185, 51, 74, 74, 74,112,229,202,149, 29,117,
-237, 51,101,202,148,177, 47,190,248, 98,251, 25, 51,102, 56, 25, 12, 6,232,116, 21,205,159,197,197,197, 40, 47, 47,135, 86,171,
-197,196,137, 19, 11,205,102,243,152, 59,119,238,108,182, 55, 22, 74, 41,126,255,253,119,252,242,203, 47,247, 85, 12,190,252,242,
-203, 62,107,215,174,205, 93,180,104,145,154, 82, 74, 61, 61, 61, 85,131, 7, 15,246,181,183,133, 48, 59, 59, 91,175, 80, 40,198,
-207,154, 61,235,215,175,230,207,247,189, 91, 80,120, 93, 44,113, 52, 56, 57, 58,120, 78,250, 96, 38,213,106,181, 19,181, 90,109,
-221,109,184,247, 40, 44, 44, 68,106,106, 42, 28, 29, 29, 33, 22,139,193,234,202,192,149,151,195, 88, 88, 0,198,100,132, 3,203,
-194,211,201, 1, 1,126,126, 8,244,181,175, 47,190,230,240, 62,236, 30, 82, 49,124,139,173, 89,144, 16,130, 61, 29, 26, 65, 34,
-115,134, 84, 38, 67,199,109,199, 1,160,194, 40, 44, 92, 94,167,166,191,191,191,183, 66,161,248,253,187,239,190, 19,231,231,231,
-227,202,149, 43,137,105,105,105,197,158,158,158, 46, 34,145,136,187,113,227,198,129,148,148,148,126,193,193,193,160,148,214, 85,
-253,245,245,150, 45, 91,158,139,141,141,181, 6, 7, 7, 59,231,229,229, 5, 22, 22, 22, 18,141,230,254, 62,204,231,206,157,147,
-102,100,100,232, 56,142,219,138,138,113,176,234,252,225, 79,120, 73, 37, 61,121, 1,227,187,120, 7, 55,119,243,105,142,124,203,
-197,230,167, 19,115,198, 79,120, 73,181,104,193,198, 44, 3, 75,140,171, 88, 75,102,128, 80,106, 88, 93,231, 65,163, 34,139,213,
-184,113, 99, 80, 74,113,238,220, 57, 28, 63,126, 28,199,143, 31, 71, 90, 90, 90,229, 54,110,110,110,216,191,127, 63,186,117,235,
- 86,139,210,253,232,116, 58,200,229,114,184,187,187, 99,235,145,159,241,227, 87,107, 43, 59,186,219,200,207,207,135,147,147, 19,
-102,127,176, 64, 54,242,163,193, 51, 1,244,178, 71, 59, 32, 32, 32, 36, 54, 54,182,175,159,159, 31, 10, 11, 11,225,227,227,131,
-214,173, 91,247,247,243,243, 11,214,106,181,143, 52, 78,155,201,100, 26,219,173, 91,183, 89, 19, 39, 78,132,197, 98,193,144, 33,
- 67,144,154,154,186,225,246,237,219, 11,131,130,130,198,143, 27, 55,206,207,219,219, 27, 99,199,142,117, 6, 48,168, 38,157,200,
-200,200,255, 78,158, 60,249,139,225,195,135, 59, 88, 44, 22, 28, 60,120,176, 50, 75,109,181, 90,145,158,158,142,233,211,167,107,
- 74, 74, 74,186,100,101,101,221,170, 43,174,156,156,156,137,219,182,109,139,143,136,136,192,158, 61,123, 48,102,204,152,157, 50,
-153,172, 73,223,190,125, 3,157,157,157,145,152,152, 8,179,217, 12,185, 92,238, 55,121,242,228,126,189,123,247,198,129, 3, 7,
- 48,115,230,204, 29,254,254,254,181, 26,118,150,101, 33, 20, 10, 97,121,160, 79,163, 64, 32,192,197,139, 23,209,189,123,119, 76,
-154, 52, 9, 0,112,224,192, 1,215, 94,189,122, 93,238,218,181,171,235,145, 35, 71,106,204,222, 2, 53,103,170,254, 41, 85,132,
-206,206,206, 35, 86,174, 92,137,155, 55,111,226,143, 63,254, 64, 65, 65, 1, 76, 38, 19,138,185,138, 62, 87, 14,247, 50, 87, 84,
- 25,132, 14, 19, 63,193, 43,253, 6, 65,163,209,128, 97, 24,239,154, 52, 9, 33,195, 62,249,228, 19,236,222,189, 27,115,231,206,
- 69, 73, 73, 73,181,219, 57, 58, 58,162,117,235,214,136,142,142, 70,106,106, 42, 0,212,168,249,164,120, 38, 51, 88, 53,225,225,
-225,177,240,251,239,191,247,138,141,141, 21,148,151,151,131,227, 56,180,111,215, 14,175,191,241, 58,246,110,221, 4,121, 72, 55,
- 8, 12,142,176,186, 60,220,161,179, 58,216,128, 85,184,123,247, 46, 28, 28, 28, 32,189,215,161, 52, 41,171, 50,189, 11,131,193,
- 80,105,174,108,207,181, 97, 53, 73, 18,146,111,179, 1, 37,101, 23,113, 38,225, 23, 88, 76, 38, 4,135,127, 12,163,213, 27,206,
-190,111, 66,111,254, 29,230,162,138,202, 93,137,107, 87,104,181,249, 0,136, 93, 41,206,234, 46,242,156,254,225,206,238, 28,107,
-191,193,210,106,181,121,114,185,252,235,139, 23, 47, 78,137,143,143,199,143, 63,254, 56,151, 82,138, 62,125,250,224,220,185,115,
- 72, 76, 76,252, 90,171,213,230,217, 45, 88, 3,132, 16,161,191,191,255, 79, 75,150, 44,233,227,231,231,135, 45, 91,182,128, 82,
- 90,167, 33,146, 72, 36,111,141, 31, 63,222,201,150,197,144, 72, 36,208,235,245,200,201,201,129,217,108,198,214,173, 91,141, 38,
-147,105, 66, 90, 90,154,221,230, 10,168,184, 48,182,105,211, 6, 11, 22, 44,200,250,227,143, 63, 98, 0,160, 67,135, 14, 9,173,
- 90,181,242, 89,180,104,145,250,244,233,211, 49, 0,208,182,109,219,243,209,209,209,245, 26,199, 37, 59, 59, 59, 43, 34, 34,226,
-150,222, 96, 16,121,120,121,234, 92,156, 37,180,164,180,148, 73, 74,186,160,209,106,181,105,117, 43, 84,146,124,229,202,149,166,
-106,181, 26,233,233,233, 96,117,101, 96,140, 70, 16,163, 30, 61,218,183,131, 35, 40, 28,192, 65,204, 89, 32, 18, 8, 81, 90, 90,
- 6, 0,201,117,137, 86,237,228,110, 51, 87,132, 16, 72,101, 50, 72, 92,100,112,144,201, 42,215, 1,213,255,238, 30,196,209,209,
-241,215,101,203,150,201,229,114, 57,190,249,230, 27,200,229,242,200,158, 61,123,234,186,116,233,226,232,237,237,141,136,136, 8,
-180,106,213, 10,135, 15, 31, 6, 33,164,214, 11, 35,165,212, 74, 8,233,245,199, 31,127, 76, 60,121,242,228, 75, 10,133,130, 12,
- 31, 62, 28,113,113,113,112,112,112,128, 94,175, 71, 97, 97, 33,118,238,220, 73, 88,150,109, 9, 0,254,254,254, 65, 13, 26, 52,
- 88, 75, 8,201,186,115,231,206,203, 15,106,254, 48,187,185,162, 84,207,141,148,251, 43, 6,117,233, 29,220,172,123,239,158, 8,
- 9,239,129,238,189, 51, 1, 96,174,183,232,206,144, 47,167, 52,221, 26, 28,224,185,242,228,182, 3,159,118,140,239, 54,117,198,
-120,207,153,211, 23,221,181,103,152,134,202,139, 45,195, 48,213,102,169, 4, 2, 1, 24,198,190,185,236, 89,142,205,138,123,163,
-125,229,107,139,213,236,173,244, 15, 96,108,153, 43, 0, 40, 41, 41, 65, 70, 70, 6, 44, 22, 11,188,188,188, 96,177,152,155,219,
- 37, 14,128,101,217,241, 67,134, 12, 33, 6,131, 1, 19, 39, 78,196,252,249,243, 49, 96,192, 0,114,230,204,153,241, 0,222,183,
- 87,199,134, 66,161,152, 63,118,236,216,137, 35, 70,140, 64, 81, 81, 17, 14, 29, 58,132,110,221,186,225,251,239,191,247, 57,116,
-232,208, 23, 29, 58,116,128, 64, 32,192,254,253,251, 97, 54,155, 83,106,211,146, 72, 36,239, 13, 31, 62,220, 33, 51, 51, 19, 98,
-177, 24,173, 90,181, 66, 86, 86, 22,202,203,203,145,155,155,139,207, 63,255, 60,167,184,184,184,171, 90,173,174,211, 92, 17, 66,
-152, 78,157, 58,253, 39, 44, 44, 12, 7, 15, 30,196,216,177, 99,119, 59, 59, 59, 15, 42, 44, 44,124,219,104, 52, 46,234,215,175,
- 31, 58,116,232,128,148,148, 20,244,239,223, 31,173, 91,183,198,161, 67,135, 48,105,210,164,157, 78, 78, 78, 47,214, 49, 14,214,
-141, 35, 71,142, 52,109,213,170, 21,202,203,203, 81, 90, 90, 10,145, 72, 4,119,119,119, 36, 39, 39, 35, 60, 60, 28,147, 38, 77,
-194,130, 5, 11, 48, 97,194, 4,174, 87,175, 94, 86,179,217, 44,182, 85, 89, 62, 34,255,136, 42,194,242,242,114,170,209,104,224,
-234,234,138,141, 27, 55,226,210,129,189,216,245,222,155,144, 78,157, 15, 74, 41,178,102, 77, 70,247,143,166,162, 93,226,109,104,
- 52, 26,172, 94,189, 26, 12,195, 84, 86,196, 86, 7,165, 20,197,197,197,136,142,142,198,185,115,231,176,122,245,106,124,243,205,
- 55,149,217, 90,145, 72,132,174, 93,187,226,185,231,158,195,141, 27, 55,176,108,217, 50,184,186,186,214,168,199, 83, 61, 66,160,
-194, 49, 86,125,174, 10,199,113,221, 91,183,110, 45, 40, 43, 43,131,193, 96,128, 86,171,197,157, 59,119,224,232,232, 8,117,110,
- 6,218, 52, 44, 67, 14, 49,225,202,197,235, 44, 17,136, 46,214,246,102,182, 74, 29,147,201,132,164,164,164,138,210,247,240, 57,
-149,157,159,239,245,249,128,193, 96,192,145, 35, 71,168,163,163, 35,156,157,157, 73,109,109,239,156,213,184,251,240,137,196, 62,
-175, 13,236, 46,217,127,228, 71, 88,140, 86,148, 25,221, 81,110, 48,161, 84, 47,130,201,161, 55, 8, 57, 14, 70,224,128, 14,209,
- 13,113,232,143, 27, 6,214, 98,222, 99,215,167, 67, 89, 8, 60,155,131,189,155,244,231,251,233,239,191,171, 23, 59,200,192,218,
-217, 68,104, 67, 42,149,206,255,250,235,175,223,251,233,167,159, 92,222,126,251,237, 8,219,197, 98,201,146, 37,165, 82,169,116,
-126,189,196, 30,224, 94, 73,244,107,177,177,177,159, 79,159, 62, 93, 25, 29, 29,141,132,132, 4,204,153, 51,103,103, 78, 78,206,
-111,117,237,111, 50,153, 84, 94, 94, 94, 40, 43, 43,131, 68, 34, 1,203,178,200,205,205, 69, 70, 70, 6, 28, 28, 28,112,246,236,
- 89, 83, 80, 80,208,150, 71,137,205,158, 14,237, 85, 43, 42,235,131,163,152,139,153,250,209,232, 48,131, 65,223,184,180,180,212,
- 42, 20, 10,133, 14, 34,214,238,177,175, 0,192, 98,177,236, 56,126,252,248, 11, 29, 59,118,116,184,158,116, 17,230,226, 98, 88,
- 74,138, 32,102,173,240,140,137, 6, 99, 50,128,152, 44, 80, 70, 81,232,139,156,113,226,194,109,139,197, 98,169, 51, 43,104, 51,
- 88,140, 64,112,127,191, 43, 87, 23, 72,100, 21, 6,171,234,114, 82, 71,187,150,159,159,159, 83,124,124,124,143,150, 45, 91,130,
- 82,138,249,243,231,195,100, 50, 73, 44, 22, 11, 44, 22, 11,204,102, 51, 74, 75, 75,177,121,243,102,252,252,243,207, 39,220,220,
-220,234, 44,150,160,148, 90, 85, 42,213,187, 28,199,249, 90,173, 86,179,143,143,143,120,195,134, 13,144, 74,165, 96, 24, 6,209,
-209,209,144, 74,165, 70,133, 66, 97,190, 23,131,229,235,175,191, 22,142, 26, 53, 74, 92,157, 94,139, 54, 17, 31,176,212,171,139,
-196, 33, 40,216,205,167, 57, 66,194,123, 0, 0,158,235, 55, 18, 33, 97, 1, 40,206, 75, 10, 49, 25,211, 7, 10, 72,129,199, 47,
-167,212,201,157,156,154,142, 40,200, 58,114, 29,192, 79,213,233, 61,244,153,114, 28,122,244,232,129, 94,189,122, 85, 54, 7,250,
-250,250,194,100, 50,193,106,181,218,109,174, 0,192, 54,136,232,140, 25,132,193,116, 96,101, 91,151, 28, 0,149,233,201,226,226,
- 98,100,102,102, 34, 61, 61, 29, 64,197,121,138,163,246,221, 93, 43, 20, 10,199,144,144,144, 55,154, 52,105,130, 67,135, 14, 33,
- 41, 41, 73,125,244,232, 81,101,155, 54,109,160, 82,169, 70, 40, 20,138, 79,178,179,179,237, 30, 80,217,199,199,199,185, 83,167,
- 78,239,141, 24, 49, 2, 41, 41, 41,152, 52,105, 82, 65, 78, 78,206,214, 29, 59,118,140,250,239,127,255,203,116,233,210, 5,185,
-185,185,248,225,135, 31,216,179,103,207,126,229,225,225,241,121,109,122, 28,199,165,102,103,103, 55, 48, 24, 12, 40, 40, 40,128,
-109, 72,134, 61,123,246, 96,239,222,189,218,162,162,162,174,217,217,217, 55,237,137, 45, 40, 40,200, 37, 38, 38,198,239,250,245,
-235, 88,183,110, 29,204,102,243,212,180,180, 52,179,155,155,219,154, 37, 75,150, 76, 15, 13, 13,245,236,220,185, 51, 58,116,232,
- 0, 74, 41,182,111,223,142,207, 62,251,108,167,163,163,227,160,171, 87,175,214,236, 6, 42, 24, 56,115,230,204,153,222,222,222,
- 47,191,250,234,171, 76, 76, 76, 12,206,159, 63, 15,150,101,209,163, 71,143, 74,115,181,103,207,158, 95,247,236,217, 51, 24,128,
- 88, 38,147, 73,235,202, 94, 1, 0, 33,164, 63, 0, 91,134, 64, 71, 41,173,179,111,225,223,141,193, 96,192,245,235,215,225,231,
-231,135,176, 54,237, 49,233,242, 29, 28, 63,121, 10,148, 82,116,188,114, 7,101,101,229, 88,185,114, 37, 18, 18, 18, 32, 16, 8,
- 16, 26, 26, 90,167,166,217,108,198,205,155, 55,145,151,151,135, 1, 3, 6, 96,216,176, 97,248,242,203, 47, 97, 54,155, 49,101,
-202, 20,220,189,123, 23,203,151, 47,199,205,155, 55, 33, 20, 10, 33,147,217,217, 74,245, 24,212,230, 69,254,141,216,213, 11,212,
-106,181,130,227, 56,100,103,103,227,220,185,115,184,115,231, 14,156,157,157,161,183,114,220,119,167, 19, 57,134,136,212, 44,197,
- 31,212,138,143,106,211, 41, 47, 47,167, 22,139,133, 8,133, 66,156, 60,121, 18,183,110,221,130,107, 24,173,204, 94, 89, 44, 22,
- 24,141, 70,232,116, 58,136, 68,162,178, 83,167, 78,165,157, 63,127, 62, 68, 40, 20,214, 88, 5,150, 27, 46, 88,181,255,192,193,
- 15, 98,162, 27, 71,244,236,242, 25,118,236,248, 20, 69, 37, 37, 40, 55, 10, 81,166, 55,163,220, 64,161,112,105,136,182,205, 91,
- 34,175,192,132, 27, 87, 18,178,242,197,158,117,182,193, 88, 88,166,248,215,197,111,187, 61, 63,120, 44,164,254,157, 97,186,179,
- 1,156, 94, 91,105,176,196, 82, 23,184,122, 7,162,164, 76,143, 19,201,169,176,176, 76,181,149, 47,213,145,154,154, 90,162, 80,
- 40,102,159, 56,113, 98,158,173,242,231,216,177, 99,184,125,251,246,236,236,236,236,234,115,181, 53,160, 80, 40,122, 2, 88, 11,
- 64,234,235,235,171,125,251,237,183,229,189,122,245,146,118,233,210, 5, 2,129, 0, 23, 46, 92,192,219,111,191,189, 79, 38,147,
- 13,178,167, 50, 79, 34,145,104,139,139,139,221, 28, 28, 28, 96,177, 88,144,147,147,131,148,148, 20,232,245,122,104,181, 90, 16,
- 66,178,143, 28, 57, 82,175, 17,246,129, 63,135, 95,168,138,173, 42,232, 65,234, 89, 69, 8,149, 74,213,165, 79, 92,151,166, 95,
- 45, 88, 4,189,174, 12,103, 79,237, 64,225,221,124, 44, 91,177,165,153, 74,165,234, 98,111,103,226,172,172,172,245, 91,182,108,
-153,216,162, 73,147,150,161, 1, 1,184,148,126, 7, 98,142,133,132,101, 33, 48, 25,192,176, 70,168,154, 82, 48,140, 12,218,156,
- 82, 44,221,119,232,114, 86, 86,214,250,186,116,149,241,207, 99,104,122, 49, 8, 33,216,215,169, 49,164, 50, 25,196, 50,103,116,
-216,124,164,210, 84,165,205,253, 16, 98,103, 25, 60, 90,215, 61, 48,166, 86,171,213,133,133,133,157,191,118,237, 90,235, 70,141,
- 26, 97,198,140, 25,200,204,204, 4,165, 20,185,185,185,134,188,188, 60,117, 65, 65, 65, 26, 33,100,107,118,118,246, 10,123,138,
- 26, 0,128,227, 56,223,237,219,183, 3,128, 24, 0, 14, 30, 60, 8,133, 66, 1, 55, 55, 55,148,148,148, 96,248,240,225, 14,211,
-166, 77, 3, 0, 92,184,112, 65, 36,149, 74,107,212,186,114, 49,229,235,194, 18, 90,200,148, 39, 12,202,183, 94,108,214,189,119,
- 22,158,235, 55, 2,251,119,172,196,161,189, 7,224, 45,186,147,202, 58,150,237,206, 75,205, 47,213,148,135,255,208,184,213, 40,
- 65,118,217,222,101,227, 6,120, 8, 85,114,110,227,228,239,107, 31,184,151, 82, 10,129, 64,240, 80,135,246,250,154,171,170, 76,
-159, 78, 57, 2, 66, 66, 68,194,139,234,156,204,222, 10, 63, 85,229,205, 69, 70, 70, 6, 50, 51, 51, 17, 22, 22,134, 59,233,183,
- 33,145,136,107,189,153,172, 18,231,171,253,250,245,115, 49,153, 76,216,182,109,155,149, 16,210,111,251,246,237,231, 91,180,104,
- 33,236,214,173,155,203,202,149, 43, 95, 5,176,162, 30, 97, 58,203,100, 50,177,197, 98,193,170, 85,171,160, 86,171,187,228,228,
-228, 36, 43, 20,138, 31,222,121,231,157,239,163,162,162,194,146,147,147,111,232,245,250,177,217,217,217, 73,117,137, 21, 21, 21,
-189, 30, 23, 23,183,145,227,184,160,216,216, 88,231,161, 67,135,186, 82, 74, 17, 21, 21,133, 93,187,118,101,103,103,103,219,211,
-135, 9, 0,144,158,158, 94,122,252,248,113,109,227,198,141,253,228,114, 57,196, 98,241, 92,185, 92, 62, 75, 38,147,125,213,191,
-127,127,207, 13, 27, 54, 96,211,166, 77,112,118,118, 70,106,106,106,246,181,107,215, 22,250,251,251,127,107,207, 8,238, 9, 9,
- 9,169, 0,134,182,105,211,230,179,111,190,249,102, 42,195, 48,175,237,219,183,175,114,172, 51,155,185, 10, 14, 14,126,125,227,
-198,141,195,236,141,249, 30, 78,182, 33, 7, 8, 33, 85,251,231,254, 83,250,102, 89, 76, 38, 19,188,188,188,144,151,151,135,220,
-220, 92, 4, 6, 6,162,125,251,246,176, 88, 44,248,109,199, 78, 28, 63,126, 28,148, 82,120,123,123,195,213,213, 21,137,137,137,
- 0, 80, 91,245,176,197,108, 54,195,211,211, 19, 69, 69, 69, 72, 76, 76,132,175,175, 47, 38, 76,152, 0,147,201,132, 13, 27, 54,
-224,226,197,139, 96, 24, 6, 62, 62, 62,112,113,113,193,197,139, 23,235,210,228,121,128, 58, 13,150, 64, 32, 56,124,248,240,225,
-193,205,155, 55, 23,222,184,113, 3, 55,110, 84,252,191,233,245,122,171, 80,128, 77,218,164,109, 67,107,218,151, 16,210,180,234,
- 88, 25, 18,137,100,233,224,193,131,199,142, 28, 57, 18,227,198,141, 3,195, 48,248,233,130, 17, 25, 25, 28,204,102, 51,180, 90,
- 45, 46, 93,186, 68, 91,183,110, 77, 56,142, 51,119,237,218,245,173,132,132,132, 54, 2,129,160,164, 38, 77,186,113, 35,235,221,
-236,249, 1, 75,150,174, 56,249,198, 27,111,120, 62, 63, 96, 9, 46, 92,189,130,162,242,138, 86, 38,133,183, 51,218, 54,250, 16,
-185, 5, 70,236,221,189,163,144,179, 26, 94,164,151,215, 89,106,139, 19, 0,242,116,122,223, 31, 86,111,153,191,110,243,214,183,
- 70,191, 62, 84,218,181,235,235, 16,149, 94, 2, 91,144, 0, 69,120, 44,136,192, 9,103, 18, 47, 32,233,102,166, 65,103, 16,172,
- 40, 49,235, 63,172, 75,179, 42, 12,195,124,183,124,233,162, 47,246,236, 63, 34, 48,155,205,232, 19,215,131,101, 24,230,187,218,
-190,139,234, 52,157,156,156,214, 37, 38, 38,122, 26,141, 70,100,101,101,133, 68, 68, 68,128, 82,138,244,244,116, 44, 92,184,208,
-186,107,215,174, 37, 82,169,116, 82, 77,119,136, 15,106, 90, 44,150,181,171, 86,173,250,248,221,119,223,149,230,230,230,226,218,
-181,107, 40, 47, 47,135,217,108, 70, 66, 66,130,193, 98,177,212, 90, 49, 87, 83,156, 54,131,229,233,233,169,108,215,174,157,173,
-138, 80,201,113, 28, 60, 60, 60, 84,109,218,180, 57, 15, 0,110,110,110,213, 86, 17,214,246,121,102,101,101, 29, 13,111, 24,136,
- 85, 43, 22,192,108, 54, 66,163, 78, 7, 0,228, 23, 20,163, 54,115,245,208,111,137, 82, 42,151,203, 7,125,179,112,225,255,177,
-119,230,113, 81, 85,239, 31,255,156,123,103,135, 1, 17,100, 27,192, 61, 77, 16, 69, 64,113, 43,113, 43, 51,115,169,204, 37,151,
- 44, 45,247,114,203,165,114, 23,210, 50,119, 77,203,180, 82,203, 45,203, 29, 83,220, 21,217, 20, 81,113,151,101, 64, 64,100, 17,
-102,159,123,126,127,192, 16,203,108, 40,125,179,126,247,253,122,241,154,185,219,231,158, 59,119,152,249,204,115,158,243,156, 11,
- 99, 71, 12,243,122,169, 91,119,164, 93, 78,132, 54, 47, 7,140,209, 0, 33, 21,160, 36, 91,134,135, 15,159, 96,201,193, 99,217,
- 42,181,186,154,105,181,212,206,242,110, 65,103, 39, 72,228,114,136,203,162, 86,166,109, 98,185, 19,132,142,114,176, 34,145,185,
-100,248,106,154, 37, 37, 37,111,141, 25, 51,230,242,193,131, 7,235, 14, 25, 50, 4,125,251,246,141,207,207,207,239,154,151,103,
-187,139,205,146, 38,195, 48,217,189,123,247,246,208,106,181,134, 65,131, 6, 9,114,115,115, 97, 26, 98, 95, 84, 84,132, 67,135,
- 14,225,197, 23, 75,103,157,185,122,245, 42, 2, 2, 2, 44,106,126, 48,227, 74, 6,128,133, 83, 6,250,126,117, 33, 49,107, 18,
-128,200,198, 47,248,226,248,145, 99, 56,125,252,220,204,246,129,220,170,215,135,182, 91, 32,237,246,206,244,128,144, 15, 88,185,
-179, 55,182,238,217,205, 38,199,125,183, 88, 93,156,212, 4,192,116, 75,237, 36,132,148,206, 84, 95,193, 92, 9, 4, 2,148,148,
-148,216,101,174,172,189,151, 40, 40,173, 87, 72, 62, 27, 57,101, 96,135, 63,119, 92,116,114,116,116, 44,207,249,105,218,180, 41,
- 4, 66, 1,190,223,187,186, 56, 63, 63,247,115,123, 52, 29, 29, 29, 39,116,237,218, 21,119,238,220,193,229,203,151,119, 43,149,
-202,203, 10,133, 98,247,221,187,119, 7,181,107,215, 14,191,252,242,203, 4, 88, 48, 88,150, 52, 77, 21,235,203,162,189,121, 0,
-160, 84, 42, 19, 1,216, 44, 57, 95, 85,179,172, 88,104, 39, 0,240,247,247, 79, 27, 48, 96,128,179,193, 96, 64,153,121,118,179,
- 32, 99, 86,147, 82,202, 41, 20,138,149, 49, 49, 49, 17,109,218,180,193,224,193,131,123,198,198,198,246, 12, 10, 10, 66,147, 38,
- 77,240,248,241, 99, 68, 71, 71,255,196,113,220, 71,153,153,153,106,107, 63,162, 44, 93,123, 76, 76,204, 45, 0,195, 67, 66, 66,
-222, 17, 8, 4,112,118,118,102, 51, 50, 50,216,163, 71,143, 2,192,152,157, 59,119, 90,236,238,176,245,153, 92, 21,123,114,174,
-106,170,105, 15, 85, 53, 9, 33,115, 70,140, 24,177,225,195, 15, 63,148,182,107,215, 14, 5, 5, 5,229,166,255,224,193,131, 40,
- 27,137, 13, 55, 55, 55,220,186,117, 11,123,247,238,213, 22, 20, 20,172, 16,137, 68,145,214, 52,135, 15, 31, 94, 73,211,100,222,
-246,239,223, 15,211, 32, 18, 55, 55, 55,220,188,121, 19,123,246,236, 81, 23, 20, 20, 44,215,106,181, 75,255,206,107,255,175, 97,
-211, 96,229,229,229, 77,158, 53,107, 86,215,247,223,127,223, 77,165, 82,177,245,234,213,131, 82,169, 52, 28, 57,114, 36,175,168,
-168,104,114, 77, 78,118,238,220,185,241,125,250,244, 89,177,121,243,230,141, 27, 55,110,236, 50,120,240, 96, 12,239,221, 27,227,
- 58, 56, 66,163,209,128, 16,130, 35, 71,142,220, 56,113,226, 68, 99,145, 72,164,153, 59,119, 46, 7,160,218, 4,177, 85,201,189,
-242,251, 77,207, 86, 3,186,172, 90,189,110, 87,112,104,251, 6, 13, 27, 53,148,116,242,171, 3,157,222,136,135,217,143,112,242,
- 92,178,230,102,114, 98, 26,167,211, 14,204, 78,182, 93,197, 29, 0,146,147,169, 14,192,228,128, 0,231,249, 75,215,111, 91,255,
-227,206,221, 3, 70, 15,126, 83, 16,210,170, 43,238,101,237,195,169,216, 19,134,199, 69,116,111,145,150, 29,155,156, 92,104,115,
- 42,159,170,164,167,167,171, 95,104,228, 83,160, 86,171, 93,239,221,187,135,135,153,202,194,244,244, 12,181,237, 35, 43,195,113,
- 28, 52, 26, 13,238,220,185,131, 99,199,142, 33, 62, 62, 30,103,207,158,213, 29, 61,122,116, 51,195, 48,139, 45, 21,154,180, 68,
- 96, 96,224,151,223,125,247,221,219, 70,163,177, 73,120,120,184,212,213,213, 21,185,185,185,136,137,137,209, 38, 36, 36,220, 9,
- 12, 12, 92,106, 91,197, 60, 94, 94, 94, 24, 56,112,160, 71, 72, 72,136,135,105,196,160,159,159, 31,222,122,235, 45,143,160,160,
-160,242,117,245,235,215, 55, 91, 51,203, 18,101, 17, 44,140,252,224, 19,168, 84, 79,112,225,220,126,228,231,229,226,252,165, 20,
-212, 36,130, 5,148,142,244,244,246,246,110,191,104,197,170, 61,189,194,218,250, 55, 87,120, 73,220, 26, 53,132,163,187, 23,242,
- 30, 61,194,133,196,219,250, 53, 81, 39,147, 84,106,181, 93, 83,229, 0,165,247,200, 52,202, 45, 96,210, 76, 48, 12, 83, 62, 11,
-130,105,187,115,104,103, 48, 2, 33,140, 20,208,233,116, 54,163,119, 74,165, 50,221,199,199,231,173,137, 19, 39,254,185,101,203,
- 22, 38, 60, 60,188,205,239,191,255,254, 76,147,230,166,167,167,251, 2,128, 66,161, 40,116,118,118, 22,188,247,222,123,208,235,
-245, 40, 41, 41, 65, 97, 97, 33, 30, 61,122,164,249,248,227,143, 37, 0, 32, 18,137,244,189,122,245,178,249,249,177,124,103,186,
-122,202, 64,223, 85,245,132,247, 6, 21,228, 92,110, 92, 79,120,239,110,251, 64,110,213,242,157,233,234, 47, 63,172,187, 40, 35,
- 39, 58, 69,249,228,200,183, 91,247,236,102, 71, 12,120,203,232, 45,191, 57,179,158, 31,118,118,237,107,187,189, 85, 13,214,211,
- 70,174,170,146,155, 68,227, 27,119,168, 19,209,117, 96,187,217,139,166,126, 45,175,231, 94, 15, 6,131, 1,119, 83,239, 96,243,
-158, 53,197, 69,154,199,139, 31, 37,211, 88,123,180, 26, 55,110,220,136,101, 89,236,219,183, 15, 0, 76,165, 13,214, 28, 58,116,
-104,208,208,161, 67, 81,191,126,253,128,134, 13, 27, 74,172,149,209,168,138, 41,226, 95,211,110,116, 91, 16, 66,238, 36, 38, 38,
-250,248,248,248,144, 29, 59,118, 60,209,233,116,243,106,170,225,229,229,245,245,129, 3, 7, 94,162,148,246, 10, 14, 14, 70,131,
- 6, 13, 0, 0,201,201,201, 56,125,250,244,246,140,140,140,145,246, 70, 84,109, 64, 9, 33, 40, 44, 44, 52,213, 53,209,201,229,
-242,167,213, 45,169, 16,185,178,123, 64,204,255,138,140,140,140, 31, 61, 61, 61,143,204,155, 55,239,139,166, 77,155,126, 52,102,
-204, 24,182,121,243,230, 40, 40, 40,128,179,179, 51,188,189,189,145,145,145,129, 31,127,252,209,152,157,157,189,153, 97,152,249,
- 74,165,210,234,168,110,107,154,117,235,214,133,183,183, 55,210,211,211, 77,154, 27,245,122,253,130,156,156,156,255,249,100,201,
-255,118,136, 61,255,164,101,101, 26, 86, 26,141,198,174, 64,105, 84, 43, 47, 47,111,114, 86, 86, 86,245,242,237, 21,197,173, 56,
-220, 62,125,250, 52,205,205,205,221,168,211,233,186,244,237,219, 23,131, 7, 15,198, 27,111,188,129,193,131, 7,179,166,168,213,
-190,125,251,170, 21,202,179,166,105,154,236,153, 97, 69,125, 40,165,173, 1, 16,194, 48, 54, 39,123,182,199,137, 7, 7, 56, 55,
-145, 73,184, 77, 50, 49,215, 89,165,101,206,168, 52,204,232,248,228, 66,139, 19,140,218,163, 89, 54,177,243,207, 0,160,209,211,
- 97,105,105,202, 40,107,251,155,211, 44,235, 34,220, 65, 8, 97, 41,165,171, 41,165, 59,188,189,189,239,216, 19,118, 55,163,201,
- 0,165,197, 69,143, 29, 59,246, 5, 33,100,152, 70,163,113,151, 72, 36, 57,148,210,159,122,244,232,177, 96,213,170, 85,214,116,
- 57, 75,237,244,243,243,219,166, 80, 40,154, 1,168,150,115,101,122, 52,173, 47,171, 71,116, 59, 61, 61,125,168,181,107,175, 72,
-211, 38,190, 71,154, 52,242,121,165, 73, 35, 5, 0,224,206, 61, 37,238,220,203, 56,122,251, 78,186,197,146,149, 86,223, 75,228,
-175,201,158, 73, 89, 41, 6,106,199,100,207, 85, 53, 91,182,108, 25,203,178,150, 39, 18, 54, 7,199,113,202,164,164,164,242,249,
- 46,172,181, 83,161, 80, 12,241,243,243,139, 84, 42,149,123,210,210,210, 62,177,247, 28, 54, 52, 59, 50, 12,115,144,227, 56, 89,
-197,245, 12,195,100,155, 76,152,151,151, 87, 3,137, 68, 82, 41,201,221,154,230,210, 57,129,159,119,234,242,210,128,179, 39, 79,
-239,157,177, 56,105, 97,197,109, 19, 6,184,142, 26, 58,126,242,210,109,107, 87,206, 88,179, 55,175, 82, 73, 13,115,154,173, 91,
-183,142, 6,208,172,108,187,213,235, 52, 26,141,202,164,164,164, 74,195,202,237,253,229,237,214,154,180,117,113,172,183, 80,171,
-211, 5, 49, 4, 84, 40, 18, 37,230,231,231,126,110,206, 92, 89,210,244,245,245,141,124,225,133, 23, 38,223,190,125,123,123, 90,
- 90,218,251,166,245, 10,133,226,171,134, 13, 27,142, 79, 75, 75, 91,147,150,150, 54,189,234,113,150, 52, 27, 55,110,236, 28, 20,
- 20,244,120,254,252,249,204,220,185,115, 17, 19, 19,227,154,158,158,110,247, 15, 60,107,215,222,160, 65, 3, 47,169, 84,186,149,
-227,184, 38, 70,163,113,237,157, 59,119,236,154,124,187,170,102, 64, 64,128, 40, 63, 63,127,178,159,159,223, 20, 79, 79, 79, 19,
- 69,177,168, 0, 0, 32, 0, 73, 68, 65, 84,207,135, 15, 31, 62, 72, 77, 77,141,200,202,202,250,206, 94,115,101,207, 61, 10, 9,
- 9,209, 0,165,211,137,217,147,111,245,191,136, 54,253,221,154,190,190,190, 77, 56,142, 91, 28, 20, 20,244,246,168, 81,163,200,
-181,107,215, 16, 21, 21,133,251,247,239,239,165,148,206,182,212,165, 91, 83,205, 35, 71,142,208, 7, 15, 30,236,100, 24,230,179,
-244,244,116,179,223,115,124, 4,203, 14,202,190,216,254,150, 63, 0,129,182,246,121,253,245,215,155,182,107,215, 46,186, 85,171,
- 86, 92,171, 86,173,138,106, 67,243,239,104,167,233,175, 75,151,122,142,181,173,249,119,180,243, 41, 53,153,103,252,251,199,175,
-253,133, 23, 94,160, 40,243,112,207,193,235,201,107,150,253,173, 95,212, 74,113,241,216, 59,223,108,250, 50,208,167,234,182,121,
- 19,235, 58,253,185,239,205,165,243, 38,214,117,250,167,219,249,119,104, 2, 96, 44,172, 39, 79,163,233,231,231,183,161,127,255,
-254, 70, 63, 63,191,141,207,243,181, 3, 32, 13, 26, 52,144,252, 27,238,209,191, 77,211,211,211, 51,212,219,219,251, 15,111,111,
-239, 63,124,124,124,218,213,178,230,111, 94, 94, 94,193,255,196,181,255,215,254,158,106,178,231,218,100,255,254,253,183, 1,132,
-247,237,219,215,131,101,217,218,154,164,243,111, 35, 58, 58,199,122,221,136,127, 55,181, 17,186,255, 71,185,121,243,230,127, 98,
-244,201,127,141,143,230, 92, 86, 2,248,164, 93,247,234,219,202, 74, 51,204,232,102, 71,183,224,191, 17,106, 33,106, 67,203,190,
-165,106, 74,106,106,234, 71, 10,133, 98, 74, 77, 70, 31,254, 19,148, 93,159,221, 93,159, 60,246,147,149,149, 21, 11,224, 13,155,
- 59,254,195,154,255,223,249,199, 13,150,137,223,127,255, 61,251,159,110, 3, 15, 15, 15,207,191,129,231,221, 92,241,240,240,148,
- 86, 74, 53, 59,109, 12,173, 65,223,106,149,161,173,118, 97, 75,159,215,228, 53,121, 77, 94,147,215,228, 53,121,205,255,158,166,
- 45,237,154,248,143,231, 25,187,146,220,159, 90,252, 63,144, 84,200,107,242,154,188, 38,175,201,107,242,154,188,230,223,175,249,
- 95,163,118,198, 53,243,240, 88, 97,245,104,226,179,122, 52,241,249,187,246,231,225,225,225,225,225,121,222,120,110,114,176,106,
-139,208,208,208, 0, 74,233, 80, 66,200,219, 0, 64, 41,221, 69, 8,217, 22, 27, 27,107, 87, 5, 90,153, 76,150,165, 86,171, 61,
- 0, 64, 42,149,102,171,213,106,239, 10,155, 73,133, 63,160,116,174, 77,211,168, 53,139,161,192,198,141, 27,103,105, 52, 26,123,
-230,215, 75, 32,132,196,115, 28, 23, 39,151,203,207,220,188,121, 51,197,158, 54, 3, 64,207,158, 61, 63,114,116,116,252, 92,165,
- 82, 45, 61,114,228,200, 74,123,143,123, 90, 8, 33, 97,126, 10,175, 31,244, 6, 29,151,149,157, 55,135, 82,106,118, 26,158,117,
-239,147, 8, 1, 41, 45, 26,185,238,125,178,108,220,247,116,150, 53,221,154,238,111,165,125,161, 66,161,112,130,167,167,231,107,
-233,233,233,177, 0,102, 80, 74,249, 42,196, 60, 60, 60, 60, 60,255, 19,106,100,176, 58,132,184, 53, 39,156,110,186,144,165, 47,
-233,141,228, 52,101, 68,203,206,199, 61,178,219, 4,152, 67,161, 80,248, 17, 66,194, 41,165,254, 12,195, 92,225, 56,238,168, 82,
-169,124, 84, 19,141,144,144, 16, 63, 0,131, 1, 12,105,223,190,125,224,216,177, 99,241,194, 11, 47, 64,173, 86, 35, 38, 38,102,
-230,207, 63,255, 60, 51, 36, 36, 36, 9,165, 83,202,236,136,139,139, 75,179,164,165, 86,171, 61, 76, 94,137, 16,226,241,246,219,
-111,199,144,191, 38,225, 37,166,201,101, 41,165, 23, 0,156, 39,132,156,219,177, 99, 71,250,139, 30,178,246, 13,253,220, 95, 63,
- 20,251, 96, 78, 85, 77,141, 70,227,145,240,199, 94, 80,131, 17, 79, 50, 82,209,244,205,193,229,219,162,222,236, 14, 90, 92, 8,
-161, 68,148,208,245,247,115,241, 0,226, 82, 83, 83,227,235,215,175,159, 98, 77,179, 42,109,218,180, 89, 48,111,222,188,122,125,
-251,246,157, 0,192,162,193,170,137,166, 37, 8, 33,146,246,161,173, 79,252,177,123,135, 20,132, 65,255, 1,111,111, 39,132, 12,
-167, 85, 38,147, 94,247, 30,241, 36, 44,166,143,253,120, 44, 11, 0,235, 86,172,159,177, 98, 24, 89,245,241, 79, 52,203,199,199,
-167, 43,165,116, 70,153,222,210,140,140,140, 19,235,222, 35,158, 96,240,233,216,143,199, 18, 0, 88,191, 98,253,244,117,239,145,
-149,227,126,160, 53, 42,112, 71, 8, 25, 55,114,228,200, 85,139, 23, 47,102,203,138,240,245, 10, 8, 8,104, 78, 8, 9,160,148,
-242,201,193, 60, 60, 60, 60, 60,127, 59, 54, 13, 86, 96, 96, 29, 23, 25, 67,167,200,196,116,112,175,151, 2, 26,189,241, 90, 71,
-210,184,105, 99,164, 92, 75,105,114,226,228,165,247,186,182,115,186,167,210,146, 29, 42,142, 44, 79, 74,178, 62,127,216,231,163,
-137,222, 96, 40, 61,167, 64, 0,227,214,163,190,123,123,244,232,209,104,212,168, 81, 8, 14, 14, 70,108,108,108,215,157, 59,119,
- 78,246,243,243,187,164,215,235, 15, 74, 36,146,104, 91, 21,142, 67, 66, 66, 34,125,124,124,102, 76,157, 58,149,132,134,134, 66,
- 34,145,148,111,147,203,229,232,222,189, 59,186,119,239,142,172,172,172,192,232,232,232,192,109,219,182, 69,132,132,132, 44,141,
-139,139,155,105,207, 11,244,249,231,159,135,152, 89,125,132, 16,114,155, 97,152,184, 22, 45, 90,164,191,224, 45,127,209,211,221,
-109,255,151,139,231, 3,128, 69,227,242,219,171, 29, 1,160,146,193,210,229, 62,132,212, 73,158, 32,146,201,226, 1,196, 1,136,
-175, 95,191,126,130,189,154, 0, 16, 30, 30, 46,113,114,114, 34,148, 82,180,107,215,206,245,213, 87, 95, 77, 97, 24,102,229,161,
- 67,135,214, 87,220,175, 38,154, 54, 8,155, 55,125,188, 40,247, 78, 2,174,159, 59,138,126, 33, 62,210,248,171, 55, 22, 1,216,
-109,237, 32, 66, 24,102, 75,108,189,153, 31, 3,147, 57,142,251,252,218,181,107, 93, 0,192,223,223, 95, 12,224,196,214,152,186,
-189, 71,118, 44,120,234, 50, 11,132, 16, 17,203,178,107,183,110,221,250,193,240,225,195,241,224,193, 3,156, 57,115, 6,114,185,
- 28, 11, 22, 44,104, 56,117,234,212, 8, 0, 53,154,125,128,135,135,135,135,135,231,105,176,106,176, 94, 10,113,140, 25,208,165,
-105, 72,223, 87, 59, 50, 47,248, 7, 64, 36,113, 40,223,214, 42, 56, 24,173,130,131,201,152, 49, 69,141, 19,227, 19, 63, 59,252,
-231,197,217, 47,133, 56,198,157,142, 43,110,103, 73,207, 96,128, 32, 98,241, 54, 0,192,214, 77, 67,217,148,148,148, 70, 50,217,
- 95,197,162,187,116,233,130, 46, 93,186, 48, 17, 17, 17, 97, 39, 78,156, 8,219,177, 99,135,206,199,199,103, 69, 70, 70,198, 78,
- 43,205,156,177,115,231, 78,194,178, 44, 88,150,181,184,147,151,151, 23,122,246,236, 9, 47, 47, 47, 50,125,250,244, 25, 0,204,
- 26, 44,169, 84,154, 77, 8,241, 0,128,186,117,235, 26,231,205,155,151, 72,203, 0, 0,142,227, 46,176, 44,123,158, 16,114, 97,
-207,158, 61, 25, 77,125,100, 62, 78, 18,135,163, 27, 55,172,134,190,240,161,171,165,243,151, 40,211, 75,159, 84,169, 60, 45,118,
-116, 72, 16, 59, 58,198,139,229,242, 56, 0,241, 0, 18,236,213, 4, 74,205,149, 76, 38, 59,181, 97,195,134,186, 0, 48,113,226,
- 68,151,146,146, 18,151,209,163, 71,207, 4, 80,110,176,106,162,105, 9, 66,136,203, 75, 29, 66,239,175,138,252,194, 57, 56,172,
- 51, 46,236, 90,135,252,252, 98, 20, 23,149,128,227,184,106, 51,255,142,251,129, 62, 92,247, 62, 89,182,238,155,245,159, 18,134,
- 33, 65,175,206,192,171,174,116,146, 66,161,184, 74, 8, 17,138,197, 98,147,174,192,215,215, 87,209,188,121,155,101, 47,116,126,
- 17,235, 87,174, 5,229, 56, 10, 96,153,189,209, 43, 66,136,135,147,147,211,190,163, 71,143,134,181,109,219, 22, 23, 46, 92,192,
-157, 59,119, 48,126,252,120,237,248,241,227, 69, 35, 70,140, 32, 83,166, 76,153, 72, 8,217, 69, 41, 61,251, 52,215,207,195,195,
-195,195,195, 99, 47, 86, 13,150, 84,100,108, 59,111, 85, 34,140,197,183, 65,245,169,160,186,172,106,251, 56,184,248,161, 69,144,
- 39, 28,196,238,204,149,107,223,180,173,184,205,214, 8, 3,147,185,218,245,181,162,165,170, 56, 83, 4, 0, 50, 71,111,221, 91,
- 83, 50,174,182,109,219, 22,238,238,238,162,115,231,206, 77, 1, 80,110,176,204,104, 18,237,229, 88, 92,127,163, 19,154, 94,207,
-131,131,131, 3, 76, 95,220, 38, 82, 82, 82,112,234,212, 41, 60,120,240, 0, 77,154, 52, 1,254,202,161,170,166,169, 82,169,188,
-122,245,234, 21,189,116,233,210,151, 35, 35, 35,175,108,223,190, 61,156, 82,106,118,126,170,192,250,117, 92,196, 84,120,116,211,
-250,111,132,208, 22,187,222,184,116, 22, 45, 95,251,208,108, 59, 27,189,241, 22,198,230,151,118, 61,254, 26,160,128,212, 89, 14,
-137,220, 41,161,231,145, 75,229,145, 43, 0, 9,246,106,118,235,214,237, 61,129, 64, 48, 7, 64,157,111,191,253,214,197,197,197,
-133,217,183,111,159,110,195,134, 13, 69, 34,145, 72, 75, 8, 89,242, 52,237,180,134,144,101, 23,126, 53,111,186,179, 3, 99, 64,
-252,193,159,144,254, 32, 21,151,111,101,232,127, 57,157,108,212,234,141,163,204,189,158,227,190,167,179,166, 14,144,252, 16,155,
-217,228,143, 62,115,199, 55, 91,212,215, 19, 58,157,110, 83, 78, 78, 14, 70,143, 30, 13,142,227,208,185,115,231, 78,148,210,140,
- 73,147, 38,161, 73,147, 38,216,244,251,205, 18, 65,225,197,240,159,255, 44,140, 53,167, 89, 21, 66, 72, 96,131, 6, 13,142,158,
- 56,113,194,211,199,199, 7,209,209,209,200,202,202,130,183,183, 55,198,143, 31, 47,142,140,140,220, 90, 88, 88, 56,112,241,226,
-197,210,164,164,164, 29,132, 16,191, 50,207, 92,235, 35, 96,120, 77, 94,147,215,228, 53,121,205,191,133,182, 0,220, 1,228, 0,
-184, 84,101, 25,101,207, 97,102, 57, 23,165,223,249, 21, 39, 47,207, 69,105,254,180, 59, 0, 35,128, 24, 0, 53,158, 83,216, 22,
- 2, 0, 32,132,116, 1, 16, 13, 96, 62,165,116, 94,213,157,116, 25,209, 16, 55,124, 19,144,182, 4,213,222, 6,167,205, 0, 21,
-122,160,184, 68,138,220,251, 15,112,253,194, 46, 80,131,237, 57, 50, 5, 2, 24, 86,175, 24, 42,112,114, 0, 68, 18,119, 93, 81,
- 81, 17, 28, 29, 29,161, 42,206, 20,141, 24, 93, 30,217, 18,157, 56,113, 2,113,113,113, 80, 40, 20,229,109,180, 6,213,150,246,
- 34,106,181, 90,104,181, 90,100,245,110, 7,199,246, 47,227,241,176,241, 56,118,236, 24,114,114,114, 32, 18,137, 32, 18,137, 96,
- 48,216, 46, 22,207,148,205,196,107, 10, 90,153,219,199,215,151, 72,157,140,178,253,171,151, 47,113,118,150, 59,120,198, 30,253,
- 13, 15, 30, 84, 55,160,230, 16, 59, 58, 64, 44,115, 72, 16, 59,202, 42,153,171,154,104,178, 44,187, 96,247,238,221, 62, 26,141,
- 6, 34,145, 8,187,118,237,210,109,217,178,229,106,113,113,241, 75,113,113,113,229,121, 70,207,210,206,170,184,185,187, 31,120,
-243,221, 15,199, 47,122,191, 39, 84,197,106,236, 61,157,140, 63,175,220,235, 11,224, 12,165,212, 98,133,251,175,247,106,110,249,
-248,248,116, 31, 61,122,116,194,158, 61,123,234,125,245,213, 87, 48, 26,141, 48, 24, 12, 48, 24, 12,229,207,141, 70, 35,182,111,
-223,142, 51, 23,147, 39, 41,149,133,118, 77,166, 75, 8, 81, 52,106,212,232,216,197,139, 23,221, 29, 28, 28, 16, 21, 21,133,252,
-252,124,140, 27, 55,174, 60,114,149,159,159, 63,120,253,250,245,111,221,191,127,255,171,211,167, 79, 63, 2,192, 2,120,238,103,
- 13,224,225,225,225,249,255,132, 13, 47,226, 78, 8,217, 79, 41,237, 3,160, 7, 0,113,133,101, 16, 66,246, 3, 64,213,229,153,
- 51,103,206,142,136,136,184,106, 90, 54,237, 51,107,214,172,150,145,145,145, 75, 58,116,232,176,227,220,185,115,119,241,119, 25,
- 44, 0,209,148, 82,139,185, 47,154,219, 63, 67,115,247, 23,136,188,187, 66,220,120, 16,132,245, 58, 32,237, 70, 52, 18,142, 45,
- 71,250,205, 51,160,156, 17,158,126, 45,108,158,108,225, 38, 42, 84, 40, 20,113, 74,165, 18,241,241,241,184,125,251, 54,164,210,
-106, 61, 75,248,243,207, 63, 1, 0,158,158,158,118, 93,132,184,109, 39,248, 37,102, 34, 45,168,116,192,159, 95, 98, 38, 0, 96,
-201,172, 89, 16,139,197, 16,137, 68,229,251, 26,141, 70,155,122,164, 44,171,189,172, 91,176,218,232, 64, 66, 8,105,234,233,180,
-115,238,204, 9, 13, 26, 53,121, 65,113,241,192,175,184,123, 55, 3, 15, 31,218,119,127, 36,114,199, 4,137,147, 99,188, 88,246,
- 87,183,224, 83,104,254, 58,112,224,192,247, 6, 12, 24, 32,107,223,190,189,228,251,239,191,207,175,106,174,158,181,157, 21,241,
-246,246,126,245,245,215, 95, 63, 48,102,204, 24,244,235,213, 3, 67, 59,251,211,244,236, 2, 21,128, 40, 74,169,205, 23, 53, 35,
- 35, 35,195,199,199,167,231,155,111,190,249,115,203,150, 45,253, 41,165,104,209,162, 5,250,245,235,135,221,187,119, 35, 57, 57,
- 25, 69, 69, 69,186,211,167, 79,175, 80, 42,149,155,109,233,149, 93,159, 67,221,186,117, 15, 31, 63,126,220,221,193,193, 1, 71,
-143, 30, 69, 73, 73, 73,181,200,213,146, 37, 75,164,247,238,221, 91,115,228,200,145,134, 40,157, 23,142, 55, 87, 60, 60, 60, 60,
-207, 31, 86,189, 8, 80,106,156, 40,165,125, 42, 26,166,170, 70,203,244,220,180, 95, 68, 68, 68,249,178,233,152,200,200,200, 37,
- 21,150,109, 71,136,158, 2,147,193, 10, 39,132, 80, 0,225,148,210,147, 21,119, 40,175, 62,192, 25,160,203,136,130, 46, 35, 10,
- 14, 65,115,176,111,213,176, 74, 66,246, 68,134,204,161, 86,171, 33, 20,187,233,182,110, 26, 42, 2, 0, 35,117,212, 85, 59,183,
- 13,106, 82, 44,213,158,118, 18, 66,152, 10,186,213,204,131,175,175,239,215, 29, 58,133,117,126,161, 85, 59,135,139,135,247,224,
-214,205, 7,200,205, 45, 0, 40,212,150, 52,163, 6,189,134,226, 59, 41,144, 57, 59, 39,188,122, 60,177, 82,228,234,105, 52,163,
-162,162,166,117,232,208,225,243, 93,187,118, 41,155, 52,105, 34, 17, 8, 4,186,138,230,234,105,219, 89, 17,133, 66,209, 73, 32,
- 16, 28,101, 24, 70,214,171, 87, 47, 76,154, 52, 9, 43, 87,174, 52,112, 66,105,159,245,135, 99, 7, 62,209,232,230,216, 99,174,
- 76,100,100,100, 92, 6, 16,208,176, 97, 67,137,193, 96,232,250,198, 27,111, 28,236,221,187, 55,206,159, 63,143, 99,199,142, 53,
-211,233,116,153,101,231, 93, 0,192,147, 97,152,165, 86,102,114,103, 68, 34,209,142, 99,199,142,181, 84, 40, 20,136,138,138, 66,
- 73, 73, 73,121,228,106,228,200,145,149, 34, 87,231,206,157,123, 4,222, 92,241,240,240,240, 60,207, 88,244, 34, 38, 76,166,169,
-170,201,178,135, 10,230, 75, 53,115,230,204,217,132,144,253,101, 17, 46, 21, 0,229,179, 55,191, 50,130,178, 6,159, 44, 61, 55,
-161,168,146,159,100, 14, 99,209,221,106,235, 56,238,233,191,183,154,245, 56,114, 85, 38,147, 97,253,250,245,112,112,248, 43,145,
-222, 94,227, 84,124,112, 15,210,198,191, 91, 30,185, 50, 69,178,240,234,136,106,251,218,105,176, 76, 17,172, 11,168,210, 69,232,
-235,235, 59,161,117,235,214,239,111,220,242,179, 83,228,231, 51, 10, 10,175, 95, 21,168, 75, 52,142, 26,189, 65,119,251, 97,174,
-197,242, 8,134,194,124, 72, 28, 29, 19,132, 14, 50,115,230,234,169, 52,207,159, 63,175,238,222,189,251, 15, 75,150, 44,105,207,
-113,220,150,218,104,167, 9,133, 66,209,201,205,205,237,200,154, 53,107,100, 50,153, 12, 26,141, 6, 75,151, 46,197,159,127,254,
-217, 39, 51, 51,243, 8,128, 35,182, 52, 44,161,211,233, 62,232,209,163,199, 55,211,166, 77,131, 94,175,199,160, 65,131,112,255,
-254,253,163,183,110,221, 90,233,235,235, 59,109,220,184,113,138,122,245,234, 97,236,216,177, 34, 0, 35, 45,200,124,185,109,219,
-182, 62, 65, 65, 65, 56,121,242, 36, 10, 10, 10,224,237,237,141, 9, 19, 38,136, 35, 34, 34,182, 22, 21, 21, 13,140,136,136,224,
- 35, 87, 60, 60, 60, 60,255, 18,236,245, 34, 21, 35, 81, 53,212, 55, 29, 39,140,136,136,184, 26, 17, 17, 81, 41,194, 85,219,152,
-114,176, 76, 78, 38,220, 76,131,170, 29,196,169,170,231,240,112, 70,251,191,187,236, 53, 78,246,116,231, 1,127,229, 96, 85,133,
- 84, 25,177, 71, 8,169, 73, 14,214, 17, 74,233, 57, 84, 48, 88,190,190,190,253,189,188,188,190,220,182,109,155, 76,169, 84,194,
-183,121, 96,157, 3,187,127,209,120, 58, 74,212,233,121,121, 35, 18, 51,158,236,178,164,201,169,139, 19,164,142,242,120,169,131,
-188,170,185,122,106, 77, 0,248,243,207, 63,167, 86, 93,247,172,154, 10,133,162, 83,189,122,245,142,172, 89,179,198, 65,169, 84,
- 66, 36, 18, 65, 46,151,227,248,241,227, 40, 51, 87, 79,141,175,175,239,188,137, 19, 39,206, 29, 57,114, 36, 30, 63,126,140, 99,
-199,142,161,107,215,174, 88,179,102, 77,131,227,199,143,127,211,177, 99, 71,176, 44,139,168,168, 40,232,245,250,155,230, 52, 8,
- 33, 3,198,140, 25, 51,237,173,183,222, 66, 76, 76, 12, 50, 51, 51, 49,118,236, 88,237,132, 9, 19,202,115,174,214,173, 91,247,
-214,189,123,247,248,200, 21, 15, 15, 15,207,191, 4,107, 94,164, 10, 7, 0,188,110, 90,168, 24,205,170,104,190, 76, 17,170,138,
-203, 85,247, 47,219,110, 87,175, 78, 77, 49, 69,176, 44, 71,173,168, 17,172,107,107, 24,243, 46,151,175,226, 84,153,149,118, 17,
- 73,228, 48,218, 97, 92, 62, 31, 77,244, 51,135, 66,240,227, 2, 6, 66,177,155,174, 89,143, 35, 87, 45,237, 43,151,203,193,113,
-102,243,203,171, 98, 20,245,126,139,109,250,106,127,220,105,229, 5,170,215,149, 71,178, 48,187,252,117, 5, 33, 4, 34,145, 8,
- 90,173, 22, 48,211,237, 87,133, 24, 66,200,125,150,101,207, 83, 74,105,120,120,248, 38,189, 94,223, 95, 46,151,215, 29, 61,122,
-180, 46, 55, 55, 23,123,247,238,197, 15, 63,252,160,122,162, 19,196, 62,126,164, 31,118, 71,249, 36,221,138, 94,194,235, 39,175,
- 86,138, 92,213,130,102, 53,106, 67, 83,161, 80,116,242,240,240, 40, 55, 87, 18,137, 4,114,185, 28, 25, 25, 25, 16, 8, 4,207,
- 84,164,179, 97,195,134,146,176,176,176, 79, 71,140, 24,129,235,215,175, 99,230,204,153,153, 74,165,114,207,190,125,251,198, 78,
-153, 50, 69,208,165, 75, 23,100,103,103, 99,195,134, 13,250,152,152,152, 37, 89, 89, 89,203,204,233, 8, 4,130, 15, 22, 46, 92,
- 72,149, 74, 37,185,115,231, 78,165,200, 85, 97, 97,225,192,136,136, 8,233,221,187,119,249,200, 21, 15, 15, 15,207,191, 8, 27,
-249, 87,185,101,230,233,161,153,101,182,130,177,170,186,156, 93,101, 25, 0,180, 85,182, 39,214,206, 21, 84,198,234, 8, 61,189,
-145, 41,216,182,230,195, 58,125,223, 30, 7,169,215,203,208,222,251, 21,156,234, 97,185,193, 18, 73,157,224, 92,175, 62, 10,159,
-168,112,246,218, 93,232,141, 76,129, 53, 61,131, 1,130,137, 31,255, 53, 90,208,197,197, 5, 5, 5, 5,149, 34, 90, 14, 14, 14,
- 80, 40, 20, 40, 44, 44,196,174, 93,187, 96,171,102, 17,165,116,225,136, 17, 35,190, 24, 55,110, 28,211,116,200, 40, 60,185,112,
-186,210,118, 66, 8,164, 82, 41,100, 50, 25, 50, 50, 50,112,227,198, 13,142, 82,186,208,154, 38, 33,228, 34,195, 48, 9, 59,118,
-236, 72, 15, 15, 15, 31, 89,183,110,221, 33,163, 70,141,146,197,196,196, 96,225,194,133,130,168,168, 40,221,165, 75,151, 12, 70,
-163,113,106, 70, 70,198, 6,107, 90,101,122, 85,205,213, 51,107, 86,165, 54, 52, 21, 10, 69, 71,133, 66,113,100,229,202,149, 14,
- 89, 89, 89,144, 72, 36,112,114,114, 66,106,106, 42, 22, 46, 92, 88,108, 48, 24,122,213,180, 93, 85,144, 56, 58, 58, 74,244,122,
- 61,182,108,217,130,140,140,140, 14,153,153,153,169, 94, 94, 94, 27, 62,250,232,163, 85,254,254,254, 45,110,220,184,113,243,201,
-147, 39,227,179,178,178,174, 91, 18,113,113,113,233,224,238,238, 78,206,159, 63,143,177, 99,199,106, 39, 78,156, 88,158,115,197,
- 71,174,120,120,120,120,254,147,196,216, 88,126,238,176,106,176,114, 74, 84, 30, 27,182,238, 89,182, 99,247,222,209, 99, 70, 12,
-145,134,135,143,128,176,232, 10,140,143,226,160,104,214, 9,132,117,192,197,132,120, 92,190,157,166, 46, 81,179,155, 10,117,170,
-233, 21,143,183, 53,219,118, 65, 65, 1, 26, 54,108,136,163,155, 94,108,169, 85,103,139,130, 93, 1,130, 58,186,168,227,189,175,
-158, 58,117,234, 9,128, 77,205,154, 53,171, 84,100,180,170,102,124,124,252,252, 54,109,218,236,155, 53,107, 86, 68,179,102,205,
-122,141, 89,176, 22,162,143, 71, 64,149,124, 25, 14,225, 3,225,226,226,130,188,188, 60,196,198,198,162,168,168,232, 48,165,116,
- 86, 66, 66,194, 21,107,154,148,210, 11, 45, 90,180, 72, 15, 11, 11,115,210,106,181, 43, 63,249,228, 19, 89,113,113, 49,114,115,
-115,241,232,209, 35, 92,188,120, 49, 74,175,215, 79,126,248,240,225, 61, 75,215, 86, 81,147,227,184,114,115, 85, 91,154, 21,169,
- 45, 77, 71, 71,199,233,123,247,238,173, 20,185,122,240,224, 1, 22, 44, 88, 80,172, 86,171,123, 41,149, 74,187, 10,116, 90,187,
-239, 28,199,193, 96, 48,128, 82, 10,177, 88, 92, 8, 0,101,102,170,187,189,154,185,185,185,209,247,239,223,239,231,232,232,136,
-137, 19, 39,138,151, 44, 89,178,181,160,160,160,198,145,171,127,203, 12,243,188, 38,175,201,107,242,154,255, 31, 52,255,107, 88,
- 53, 88,201,201, 84, 7, 96,114, 64,128,243,252,165,235,183,173,255,113,231,238, 1,163, 7,191, 41, 8,105,213, 21,247,178,246,
-225, 84,236, 9,195,227, 34,186,183, 72,203,142, 77, 78, 46,180, 57,246, 95, 32,128, 97,214,156,161, 2, 0, 16, 10, 97,152,221,
-167, 79,116,203,150, 45, 59,247, 13,202, 22,141,157, 88, 26,217, 90,191,122,168, 40, 58, 58,122,167, 68, 34,249,246,238,221,187,
-133,246, 92, 68,153, 97,122,173,109,219,182, 47, 79,155, 54,237,203,222,141,124,219, 13,232, 16, 14,161, 80,136, 75,151, 46, 33,
- 47, 47, 47,134, 97,152, 79,227,227,227, 79,217,163,183,111,223,190,116, 0, 40, 41, 41, 89,216,172, 89, 51,241,181,107,215,112,
-251,246,109,164,164,164,192,104, 52,222, 74, 79, 79,175, 81, 66,156, 84, 42,189, 8,224,106,109,106, 86,164,182, 52, 85, 42,213,
-146, 69,139, 22,189, 50,127,254,124,137,147,147, 19, 18, 18, 18, 48,127,254,252, 26,153, 43, 91, 80, 74,161,215,235,107, 52,242,
-211, 12,159, 6, 5, 5,189,184,104,209,162,102,101,185, 92,124,228,138,135,135,135,135,231,185,194,174,201,158,203,204,211, 59,
-193, 1,206, 77,150,172,253,121,147, 76,204,117, 86,105,153, 51, 42, 13, 51, 58, 62,185,208,236, 48,122,115, 44,220, 68,133, 21,
-151, 23, 0, 8, 8, 8,112, 76,243,194, 19,211,186,180,135,128, 82,169, 92,106,175,102, 69, 46, 93,186,116, 10, 64, 88,112,112,
-240,128,131,132,204, 6,238,130, 82,186, 36, 62, 62,126,111, 77,116,218,181,107,215,176,184,184,248, 71,157, 78,215,134,227, 56,
-241,201,147, 39,161, 86,171,113,237,218, 53, 21,199,113, 86, 19,196,205,113,247,238,221,171,181,173,249,119,180, 51, 61, 61,253,
-146, 66,161,232, 65, 8, 57,246,233,167,159, 74,106, 26,185,178,133,171,171,107, 73, 86, 86,214, 35,181, 90,237,246,240,225, 67,
-173,171,171,235, 83,213, 30,161,148,222, 34,132,180,250,228,147, 79, 22, 76,155, 54,109,250,151, 95,126, 41,226,115,174,120,120,
-120,120,120,158, 39,236, 50, 88, 38,202,204, 84,120,120,184,187,227,153,115, 57, 22, 43,119,215,132,228,228,228,226,207, 71,147,
-242,200,150, 64,240,236, 21,182,203, 12, 85,141, 76, 85, 69,138,138,138,150,228,229,229,181, 47, 44, 44, 52,220,187,119, 79, 69,
- 8, 49, 16, 66, 84, 28,199, 45,224, 56,174,198,249, 81,255, 38, 77,165, 82,121,214,203,203,235,165,179,103,207, 78, 41, 46, 46,
- 94,163, 84, 42,207, 61,141,142, 57,226,226,226,244,222,222,222,239,190,241,198, 27,163, 56,142,219,144,145,145,161,127, 90, 45,
- 74,169, 22,192,167,132,144, 61, 87,174, 92,249,245,220,185,115,153,224,205, 21, 15, 15, 15, 15,207,115, 66,141, 12,150,137,232,
-232,218, 49, 87, 38,170, 70,182,254,105,110,220,184, 49, 24,192,224,255,143,154, 0,144,149,149, 21,251,119,232, 2, 64,102,102,
-230, 81, 0, 71,107, 75,143, 82,122,137, 16,210, 8,165,163, 68,120,115,197,195,195,195,195,243, 92,240, 84, 6,139,135,231,121,
-162,108, 74, 35,222, 92,241,240,240,240,240, 60, 55, 16, 0,129,230, 54,212,100,116, 0, 33,196,172,134, 53,108,233,243,154,188,
- 38,175,201,107,242,154,188, 38,175,249,223,211,180,165,253, 95, 25,157, 72,158,113, 52,151,117,241,127,201,208, 80, 94,147,215,
-228, 53,121, 77, 94,147,215,228, 53,255, 89,205,255, 26,204, 63,221, 0, 30, 30, 30, 30, 30, 30, 30,158,255, 26, 53,206,193,106,
-215,174,221, 11, 0, 16, 19, 19,115,171,246,155, 83, 10, 33,100,130,183,183,247,232,214,173, 91,251,139, 68, 34,166,160,160, 96,
-126,116,116,244,124,115,251, 6, 5, 5,197,190,242,202, 43, 77, 78,156, 56,161, 45, 59, 22, 21, 31,141, 70, 99,122,108,108,108,
-232,223,213, 86, 30,235,120,123,123, 31,145, 74,165, 13, 74, 11,140, 82, 24, 56, 35,140, 28,133,209,200, 65,111,164,208,105,213,
- 15, 52,197, 5,175, 62,149,118,155, 55,235, 27,141, 92, 4, 5, 93, 79, 40, 25, 75, 9, 93, 79, 40,249,136, 50,100, 61,225,232,
-135, 16, 24,190,130, 65, 48, 77,192, 9,231, 40,147,119,166,213,246,181,253, 19,204,159, 63,255,153,126, 20,205,157, 59,215,236,
-252, 83,193,193,193,251,165, 82,105, 83, 75,199,149,148,148,100, 38, 38, 38,118,125,150,115, 63,239,120,121,121,189,204, 48,204,
-106, 0, 45,171,108,186, 14, 96,178, 82,169,252,243, 31,104,150, 85, 60, 60, 60, 78,177, 44,219,172,184,164,164,184,168,176,176,
-137,147,147,211, 29,153,131,163,163,209, 96,188,153,155,155,253,242, 63,221, 62, 30,158,255,207,216, 52, 88, 33, 33, 33,205, 1,
-116, 33,132,116,161,148,190,220,162, 69, 11,207,146,146, 18,132,132,132, 60, 36,132,156, 42,155,253,250,100, 92, 92, 92, 74,109,
- 52,136,101,217,101, 43, 87,174,156, 58,113,226,196,114,147,148,148,100, 57, 10,201,178,172,111,100,100,100,157,212,212, 84,136,
- 68, 34,136,197,226,242, 63,150,101,209,190,125,251, 26,157,223,213,213,213,201,195,195, 99, 62, 33,100, 32,195, 48,172,173,253,
- 57,142, 51, 82, 74,119,102,103,103,207,205,203,203, 43,170,201,185,218,134,182,214, 3,196,194, 57,168,241, 82,236,101,171,163,
- 43, 95,124,241,197, 88,129, 64,224, 11,152,159,216,218,220,115,163,209,152,126,245,234, 85,187, 12,167,171,171,171,147,212,193,
- 97, 58, 97, 4, 61, 64,185, 22,165, 98,204,117,202, 25,142,169, 75, 74,150,217,115,189, 18,137,164, 65, 92,124,124,179,228, 27,
-119,209,164,113,125,104,117, 6,104,180,122,236, 59,118, 9, 65,254,141,208,183,119, 79,123,154, 98, 22, 3, 71,230,205,153, 48,
-172,219,146,213,219,219,206,158, 56, 68,190,100,245,246,208,217, 19,135, 56, 45, 89,179, 61,116,206,164,161, 78,139, 86,111, 11,
-157, 51,105,104,157,197,171,183,105, 1,124,240, 52,231,120,191, 85,131, 98,198,104,144,152,219,198,177, 2,205,247, 87, 30, 56,
- 62,245, 5, 60, 3, 75,150, 44,105,174,211,233,174,141, 28, 20,186,176,197, 11, 30,217,230,246, 41, 40,200,246,184,125, 61,246,
-115, 8, 69,254,254,237,102, 91,253,255, 20,137, 68,141, 79,157, 58,213,204, 84,105,223,104, 52,194,104, 52,194, 96, 48, 64,171,
-213,226,173,183,222,170,149, 1, 49,161,161,161,163, 40,165,139, 1, 16, 66,200,162,216,216,216, 53, 79,171, 69, 8,145, 11, 4,
-130, 79,196, 98,113, 23,131,193,224, 15, 0, 66,161,240,154, 70,163, 57,105, 48, 24,190,161,148, 62,177,165, 81, 17,134, 97, 86,
-196,196,196, 4, 56, 57, 57, 65,167,211,149, 79, 12,207,178,108,139,176,176,176,181, 0,154,217,171,229,235,235, 27, 75, 8,241,
-173,201,249, 41,165,233,233,233,233, 53,250, 49,200,178,108,179,251,169, 74,143,134,245, 21, 0, 0, 7, 7, 71,199, 75, 73,247,
- 60, 66, 90, 54,172,137, 12, 15, 15,207,223,128,197, 15,205,144,144,144,131, 0,186,180,104,209, 66,214,179,103, 79, 4, 7, 7,
-163, 65,131, 6,144, 74,165, 0,128,188,188, 60,207,228,228,228,119, 18, 18, 18,222, 57,127,254, 60, 66, 66, 66, 84, 0,206,196,
-197,197,153,141, 70,244,120,227,165,137, 82,185,100, 37, 0,228,100, 60,202, 76,191,147,189, 58, 51, 51,115, 25,165,180,252, 23,
- 53, 33,164,201,200,145, 35,167, 76,154, 52, 9,251,247,239,199,246,237,219,161,209,104, 80, 80, 80,128,232,232,104,179,237, 52,
- 26,141,233,195,135, 15, 23,164,164,164, 24,202, 52, 80,241,209,104, 52,214,104,194,100, 15, 15,143,249,131, 6, 13,250, 56, 32,
- 32,160,124, 90, 23,189, 94, 95,254,248,248,241, 99, 76,153, 50, 5, 64,105, 85,114,142,227,112,252,248,241,137, 51,102,204, 0,
-128, 79,204,105,246,236,210, 52, 86, 64,136,175,233, 66, 57,142, 75,143, 58,117, 39, 20, 32,236,165,216,196, 74,206,200,148, 19,
-215,174,109, 27,155,230, 78, 32, 16,248,198,199,199,123,136, 68, 34,187,174,141,227, 56, 4, 7, 7,219,181,175,143,143, 79, 87,
- 71,185,243,246, 1,131,223,175,219, 38, 56, 88,232,171,240,134,222, 96,192,221,123,169,237, 18, 19,226,218, 28,253,227,151,209,
- 62, 62, 62, 67, 50, 50, 50, 78, 88,211,209, 27, 57, 36, 94,189,133,168, 51,241,120, 67, 36, 69,137, 90,139,162, 18, 45,126,252,
-253, 44,210,179,173, 78, 93,105,149,176,176, 48, 31, 71, 65,189,176, 73, 31,244,119,252,106,221, 86,199, 73, 31,244,199,215,235,
-127, 44,127,156,248,126, 63, 44, 91,183, 85, 62,233,253,126, 88,189,225,135, 14, 97, 97, 97, 62, 23, 47, 94,204,176,164,103,233,
- 30, 49, 70,131,100, 83,114, 6, 11, 0, 57, 27, 54, 64,247,240, 33, 20,115,231, 2, 0,198,180,244, 53,107,188, 44, 17, 24, 24,
- 88,110,136,173, 97, 48, 24,210,147,146,146, 44,126,209,154,204,149,193, 96,160, 2,129,224,243,211,135,230,239,234,216,174,121,
-165, 23, 51,229,102, 74,157,121, 95,204,125,251,215,195, 69,244,157, 94, 78,215,174,197, 44,177,106,178, 56,142, 99, 52, 26, 13,
-110,222,188,105,182,202, 62,195, 48,182, 38, 72, 55, 75,120,120,184,164,184,184,120,155, 92, 46,111, 93, 92, 92, 60,138, 82,250,
- 69,116,116,180, 39,195, 48,232,209,163,199, 23,161,161,161,247, 36, 18,201, 58,181, 90,157, 32,151,203,135, 68, 71, 71,107,236,
-209, 37,132,188,236,228,228,244,227,111,191,253, 86, 55, 56, 56,152,201,205,205, 69,163, 70,141,144,151,151,215,238,212,169, 83,
- 33,239,191,255,254,251,132,144,225,148, 82,187,102,111, 40,227, 69, 71, 71, 71, 58, 98,196, 8, 98, 52,254,117,185,223,127,255,
- 61, 66,154, 62,108, 58,246,109, 89,137, 90, 71, 11, 78, 95,150,126, 68, 25,122,230,254,253,124,139,111, 96, 66,136,239,252, 77,
-147, 61,196, 98, 49,244,122,125,249, 31,229, 0, 80,128,114, 0,229, 40, 40, 5, 64, 9, 56, 35,135,175,103,109,170, 65, 83, 43,
-227,224,232,232,224,229,229,253, 80,230,224,224,240,247,101,213,242,240,240,212, 4,107,191, 74, 95,139,142,142,134,193, 96,128,
-147,147, 19, 88,182,242,247,189,171,171, 43, 94,126,249,101,132,133,133,161, 71,143, 30,184,113,227,134,236,203, 47,191,180, 24,
-142, 24, 58,181, 15,252,154,121, 2, 0, 40,165,222,167,247,199, 71,124, 55,127,119, 61, 0,211, 42,236, 54,106,204,152, 49,228,
-209,163, 71, 24, 56,112,224, 41,141, 70,211,143, 82,106,117,186,156,196,196,196, 90,237,254, 35,132, 12,244,246,246,198,142, 29,
- 59,160,213,106,171,109,119,118,118,198,213,171, 87,203,151, 89,150, 69,155, 54,109, 88, 66,200, 64, 88, 48, 88, 12, 33,190,135,
-162,111,121,152,150, 7,245,109, 35,122,165, 75,211,135, 2, 70, 76, 1,144, 57,115,230, 0, 40, 53, 87,148, 82, 44, 88,176,192,
-238,246,138, 68, 34, 92,191,126, 29, 44,203,226, 78,231,230, 0,128,192,248, 52,176, 44,139,196,214,165,191,106, 59,220,124, 12,
-129, 64, 0,185, 92,110,151,166,143,143, 79,184,167,183,239,111,179,230, 70, 56,169,245, 20, 7,142,199, 32, 85, 25, 5, 74, 41,
-188, 61, 92,209, 49, 36, 88,232,223,170,181,199,230,181,203,126,243,241,241,233,151,145,145, 97,222,253, 2, 48, 24,140,240,111,
-222, 24, 91,126, 59,133,197,235,118,225, 81,161, 26, 69, 37,165,175,107,143, 14, 1,248,254,107,187, 47,181, 18, 44,203, 46,107,
-209,184,177,223,150, 95,143,160, 99,251,118,216,242,235, 97,116,104,223, 14, 91,118,150, 46,111,221,121, 4, 47,117, 8,195,214,
-157, 71, 16,232,223,172,254,163,251, 5,203, 96,165,182, 87,181,123,212,175,244, 30, 53, 98, 69, 4, 40,189, 55,247,199,142, 5,
-128,114,131, 85, 83, 76,134,216,214,126,214, 76,112, 5,115,133,236,236,108,146,159,159, 79, 93, 92, 92,222,174,104,178, 76,230,
-234,151, 67,133, 80,165,172, 38, 63,255,124,146,123,247,221, 46,215,174,197, 44,241, 7,230,154,157, 68, 91,167,211,221,123,229,
-149, 87, 40, 0,104,181, 90, 31,177, 88, 92,201,181,115, 28,167,232,212,169, 83, 53,131,102,171,235,176,184,184,120,219,206,157,
- 59, 7,120,122,122,162, 95,191,126, 71, 3, 2, 2,196, 14, 14, 14, 56,116,232, 16,124,125,125,235, 57, 59, 59, 31,140,136,136,
-192,242,229,203,235, 31, 61,122,116, 59,128, 1,182, 94, 31, 66, 72,143,174, 93,187,238,216,191,127,191, 84, 36, 18, 65,165, 82,
-225,234,213,171,168, 83,167, 14,196, 98, 49,250,245,235,199,118,236,216,209,173,107,215,174,187, 9, 33, 67, 40,165,199,108,105,
-154, 80,169, 84,116,214,172, 89,112,112,112,128,163,163, 99,249,159, 76,108, 36,235,231, 53,150,125, 28,153, 37,155, 51,227,221,
-200,141,155,255, 56, 81,191,126,157, 47, 82, 83, 11,242, 45,105,249,178,173, 48,115,218, 76, 0, 0,195, 48, 16,139,197,149,162,
-236,166,231, 34,145, 8,109,218,180,177,217, 54,127,127,255, 13, 44,203,186, 87, 92,199, 48, 12,251,249,103,179, 13, 87,174,222,
-112,212, 27,224,168,214,234,177,104,193, 23, 6,150, 97,217,192,192,192,189,148,210,156,171, 87,175,126,100,239,245,243,240,240,
-212, 30, 86,195,254,114,185, 28,151, 46, 93, 2, 33, 4, 78, 78, 78,112,118,118, 70,157, 58,117, 80, 88, 88,136,228,228,100, 92,
-191,126, 29,247,238,221, 3,195, 48,104,210,164, 9, 80, 90,246,161,156,138, 35, 12,182,125,189, 31, 82,185, 4,132, 0,109,123,
-182, 70,104,183, 32, 36, 93,188, 51, 89,161, 80,108, 82, 42,149, 55, 9, 33,130,192,192,192,247,219,183,111,143,229,203,151, 67,
-163,209,124, 99,206, 92,153, 27,181,240,209, 0,225,105,145,128,241,211, 25,184,180, 13,123,245, 47,181,105,211, 38, 54, 56, 56,
-184,209,149, 43, 87,244, 64,105, 52,171,106, 55, 89,197,188,172,170,154,185,185,185,224, 56,179,169, 42,213,224, 56, 14,249,249,
-213, 63, 99,171, 76, 30, 93,105,219,162,136,229, 46, 69, 5,217, 88,184,244, 39,232,245,122, 76,157, 58, 21, 28,199,129,227, 56,
- 24,141, 70, 60,126,252, 24, 48,243, 51,180,106, 59, 77,215,196,178,108, 37, 3,108,107,217,154,166,187,187,187,163, 68,234,176,
-125,218,156,133, 78,151, 83,210,177,255,120, 12, 40,165,216,183,241, 11, 0, 64,191, 49, 11,144,145,153,131,142, 33, 45, 48,242,
-195, 79,156, 86, 68,204,217,238,238,238,222, 52, 39,231,175,226,179, 21, 53,245, 6, 14,187, 14,159, 71,230,163, 39, 24, 62,160,
- 27, 52, 90, 61,178, 31,102,226,135,117, 95, 97,220,123,123, 80, 87, 46,243,106,210,164, 73, 74,197,215,200,201,201,137, 85,171,
-213,167, 82, 82, 82, 62, 48,167, 9, 0,122,189,254,181, 89, 31,143,198,138, 77,187,208,178,137, 39,246, 71, 93, 64,219,192, 6,
- 56,120, 60, 6, 29, 90, 53,194,225,147,177,232, 24,212, 4, 39,206, 39, 97,242, 71,239, 98,250,228, 83,175, 89,187,246,106,247,
-104,201,114,151,162,194,108, 28, 88,178, 21,217,107,214,224,193,196,137,104, 91,246,158,184,196, 48, 16,249,248, 0,206,182, 95,
- 79,115, 92,191,126, 29, 26, 77,245, 64,141, 68, 34, 65,139, 22, 45,172,106,154, 34, 87, 15, 31, 62, 36, 15, 31, 62,132,163,163,
- 35,185,118, 53,201,232,223, 50,240,109, 99,222,175,155, 0,160, 52,114, 85,136,146, 27,171,160,186,185, 26,162,252, 43,204,198,
- 5, 31,106,199,124,241,237, 53,148,253,143, 86,109,103, 98, 98, 98,249,235,211,190,125,251,235,103,206,156,121,177, 66, 20, 24,
- 6,131, 65,100, 48, 24,154,153,186, 13, 13, 69,136,103,115, 0, 0, 32, 0, 73, 68, 65, 84, 6, 3, 52, 26, 13,134, 12, 25, 82,
-254,198, 50,119,237, 50,153,172,181,167,167, 39, 46, 94,188,136,121,243,230,137, 91,182,108,137,155, 55,111,130, 97, 24,140, 26,
- 53, 10, 1, 1, 1,200,201,201, 65,219,182,109,113,250,244,233,106, 46,195,204,123,222,201,209,209,113,243, 31,127,252, 33,101,
- 24, 6, 69, 69, 69,224, 56, 14,157, 58,117, 2, 33, 4, 87,174, 92,193,103,159,125,134, 61,123,246,224,183,223,126,147,133,132,
-132,108, 38,132,248, 83, 74,139, 44,105, 86, 60,157, 70,163,161, 82,169, 20, 82,169, 20, 18,137, 4, 18,137, 4, 34,145, 8, 42,
- 45,139, 15,231,222,211, 8, 37,114,174,117,171, 38, 77,199,141, 25,192, 44,140,252,225, 56,128,125,150, 52,149,244, 42, 92, 91,
- 18, 28,253, 33, 22,253,198,190, 12,145, 80, 12,145, 80, 4,177, 72, 12, 97,217,115,145, 80, 4,177, 80, 2,182,158,186,122, 99,
-170,104, 10,133,194,122,241,241,241, 46, 21,255,151, 13, 6,195,181,137, 19, 39, 54, 25,208,183,143,231,175,123,246,179,195, 6,
-245, 51,122,121,122,228,166,165, 61,184, 5,192, 37, 36, 36,132, 90,211,172, 13,120, 77, 94,243,127, 68, 91, 0, 21,127, 96,104,
- 1,136,203,158,231,162,244,179,205,173,202,122, 0,200, 41,123,116,183,176,156, 11, 32, 25,128,127,217, 58, 35,128, 24, 0, 54,
-231, 87,182,133, 0, 0, 8, 33,229,255,132,148, 82, 82,117, 39, 74, 41, 10, 11, 11, 81, 88, 88,136,180,180, 52,172, 95,191, 30,
- 66,161, 16, 2,129, 0, 2,129, 0, 12,195,148,231, 43, 88,226,216, 31,167, 87, 3, 88, 29, 18, 18, 34,252,238,252,174,131,115,
-182, 76,238, 30,214, 51,132,141,141,186,242, 54,128, 69, 0, 94, 27, 49, 98, 68, 61, 0,216,186,117,107, 46,128, 67,246, 94,132,
- 72,192,248,173, 90,249, 83,253, 73,147,135, 1, 40,205,203,218,180,105, 83,221,244,244,244, 74,191, 18, 69, 34,145,205,188, 44,
- 74,233,206, 91,183,110,125,236,237,237, 93,254, 69, 82,177,155,208, 96, 48, 64, 42,149,150,155, 33,141, 70,131,109,219,182, 25,
- 40,165, 59,173,104, 34,229,234,159,184,121,245, 4,140, 70,174,146,153, 82,171,213,152, 55,111, 94,121,244, 10, 0,198,150, 69,
- 74,236,197, 90,228,138,101, 89,156,105, 82,234, 4,122,231,208,106,185, 90, 85, 17,138,165, 83,123,191,249,174,171,129,178,229,
-230,170,244, 26, 74,205,133, 88, 40,128, 76, 34,196,205, 59,105,104,228, 19,130,238,189,250,215, 61,118,112,247, 84, 0,102, 7,
- 33,232,141, 28,122,135,135, 96,221,142, 19, 40,124,162, 70, 97,126, 30,114,211,174,227,218,229, 24,136,197, 98, 92,184,112,193,
-169, 78, 29, 23,167,198,141, 27,193,104,228,112,230, 66, 44, 28, 28,100,216,177,253,231, 70, 13, 26, 53,198,131,123,119,205,230,
- 78,113, 28, 39,232, 24,234,143,194,220, 84, 8, 4, 2,116, 12,110, 10,129, 64,128, 78, 33,205,192,178, 44, 58,183,125, 17, 44,
-203,162, 75, 88, 0,154, 54,109, 10,142,227,172,254,152,160,148, 34, 37,233, 79,164, 36,159, 0,229, 56, 24,185,210,238, 95, 10,
- 64,151,153, 89,253,186,178,178, 64,157,109, 6,163,204,158,231,211, 79, 63,205, 87, 42,149,186,170,219, 20, 10,133,104,207,158,
- 61, 46,214, 74,167,136, 68, 34,127,129, 64,112, 45, 47, 47,143,115,112,112, 96,140, 70, 3,231,223, 50,144, 61,125,104,126,249,
-220,147,243, 22,204,223,245, 78, 47,231,183,127,250,225, 15, 42,114,239, 68, 8, 43, 49,140,254,226, 91, 49,132, 34,127,123,218,
-104,234, 46,188,113,227,134,205, 73,185,205,125, 94, 84,164,184,184,120,100,191,126,253,142,126,244,209, 71, 82,160,244,199,139,
- 64, 32, 40, 55,253,183,111,223, 6,195, 48,216,184,113, 35, 52, 26,141,205, 55,190, 64, 32,248,120,247,238,221,117,196, 98,113,
-185,185,162,148,130,101, 89, 92,191,126, 29, 95,127,253, 53, 70,140, 24,129,212,212, 84,120,123,123, 99,234,212,169,242,200,200,
-200,143, 81, 58,245,169, 45, 46,107,181,218, 80,153, 76, 6,137, 68, 2,147,209, 2,128,184,219,158, 73,119,239,222,109,213,160,
- 65, 61,175, 70, 1, 87,126, 15,239,220, 58,200,205,205,165, 3,202, 12,150, 57,228, 79,234,163, 40, 69,128, 46, 93,186,224,228,
-201, 83,232,211,167, 15,140, 34, 17, 56,177, 24,156, 88, 12, 42, 18, 1, 98, 49,136, 88, 12,234,224, 96, 71,243, 64, 89,150, 69,
- 86, 86, 86,165,117, 99,198,140,121,240,238,187,239,122, 0, 20, 74,101, 6,253,228,227, 73, 25,185,185,185,212,211,211,211, 30,
- 77, 30,158,231, 6, 27, 94,196,157, 16,178,191,194,246, 62,166,229,153, 51,103,206,142,136,136,184, 74, 8,217, 95,113,189,105,
-191, 50,237,253,230,150,203,142,117,155, 53,107, 86, 96,100,100,228,146, 14, 29, 58,236, 56,119,238,220, 93,212,150,193,162,148,
- 18, 66, 8,181,245, 97,105,194,220,151,180, 45,131,101, 34, 46, 46, 78,239,227,227,243,221,245,216,187,221, 95, 12,109, 6,153,
-163,164, 39, 33,100,181, 68, 34,249,100,248,240,225,184,112,225, 2,146,146,146,190,167, 53,152,246, 68,103,224,210, 38, 77, 30,
- 6,157,129, 75, 3, 74, 35, 84, 83,167, 78, 21,157, 57,115, 70,103,106,111,213, 8,150, 37,173,236,236,236,185, 49, 49, 49,176,
-150,228,254,206, 59,239,148, 63,175,152,228,110, 73,147,114, 20, 58,157, 30,197,197,170, 82, 99, 85,246,229,109, 52, 26, 81, 92,
- 92,140, 65,131, 6,149,155, 46,142,227,144,157,109, 54,103,217, 38, 12,195,216, 29,185,178,168,193,178,175,182, 14, 10, 22, 30,
- 63,119,185,210,151,107,255, 15, 23, 65, 44, 42, 53, 87, 50,169, 8, 50,137, 16,105,202,135,104,225,223, 82,116, 50,106,255,171,
-176,100,176, 12, 70,172,254, 57, 10, 32, 4,187,246, 31, 71,104, 35, 7,204,255,236, 83, 12, 28, 56, 16, 98,177, 20,187,119,239,
-196,178,181, 91, 48,182, 65, 3, 80, 0, 97,161,109,176,116,195, 14, 44, 92,176,128,217,249,235,174,206,182,218, 43, 20, 10,193,
-178,108,249,151,118,213, 71,150,101,109,154, 4,160,236, 30,233,245, 40, 41, 86,193,200,113,224, 56, 10,202,113, 0,165,240, 89,
-188, 24, 62,139, 23,227, 18, 83, 58,128, 47,160,184, 24, 42,149, 10, 8,111,109,231,171, 90,118, 14, 74,161,213,106,161, 84, 42,
-117,137,137,137,213,190,253,130,130,130, 30,106,181, 90,171,237,157, 61,123,118,202,146, 37, 75,252, 93, 93, 93,175, 93,190,156,
-168,111,221, 58, 72, 88, 53, 7,171,121,179,230, 5,243, 22,204,223, 53,236,189, 55,222,222,240,217, 96,195, 71,115,127, 20,216,
-147,232,110, 66,167,211,221,235,209,163,135, 93,169, 60, 42,149, 42,203,210,182,208,208,208, 81,132,144,197,205,155, 55,151,116,
-235,214, 13,167, 78,157,194,226,197,139, 57,131,193,144, 11, 0, 29, 59,118,116, 95,184,112, 33, 73, 78, 78,134,139,139, 11,178,
-179,179,183,132,134,134, 46,180,150,248, 46, 22,139,195,219,182,109,203,104, 52,154,242, 31, 37, 12,195,224,250,245,235,136,140,
-140,196,144, 33, 67,208,188,121,243,242,255,173,174, 93,187, 10, 87,173, 90, 21, 14, 59, 12, 22,195, 48,147,187,119,239,254, 21,
- 74, 71, 17, 86,252,144,187, 6, 96, 58, 0, 60,120,144,155, 53,228,173,142, 87,187,119, 9, 14,109,218,200,199,219,154,222, 35,
-225,109,120, 7,203, 32, 18,138, 48, 98, 70, 95,236,223,191, 31,227,231,189, 91, 22,201, 42,141, 96, 9,133, 34,136,132, 98,136,
-221,159,110, 34,130,178,207, 17,226,236, 92, 7, 0, 80,167, 78,233,163,209,104, 36, 0, 40,195, 48,124, 74, 22,207,191, 6,123,
-188,136,201, 32, 85, 92, 38,132,236,143,136,136,232, 83,117, 93, 69, 51,101,238,121,197, 99, 35, 35, 35,151, 84,208, 46,169,141,
-235,169,181,169,114,244,122,235,243,246,118,235,214,109,162,147,147,211, 74, 0, 8, 13, 13,197,253,179, 25,184,127, 54, 3,254,
- 47,182,236, 20, 28, 20,154, 63,100,200, 16,184,185,185, 97,250,244,233, 20,192,230,154,156,123,195, 94,253, 75, 21,151, 19, 18,
- 18,158, 58, 47,171,108,100,220, 39,176,144, 79,245, 52, 80, 74,161,215,233, 81, 92,162,134, 78,167,131, 94,111,132,193, 96, 68,
- 72,128, 19,126,252,246, 83,104,181, 58,232,141,165,235, 74, 35,101, 70, 72, 68, 26,116,105,239,167, 7, 97, 84, 39,207, 63, 48,
-211, 25,245, 23, 45,227, 82,193,178, 44, 46, 7,249, 0,168, 30,185,234,169,212,217,109,180, 40,103,124,209,211,211, 3,169,135,
- 47, 2, 0,228, 14, 82, 28,217,186, 16,142, 14,165,191,228, 95, 27, 49,187,212,100, 73, 68,208,233,180,240,240,108, 8,131, 81,
-255,162, 37, 61,131, 94,167,109,221,204, 7, 46, 78, 50, 36, 94, 58,143, 79, 38,124,128, 81,163,222,135, 72,234,132,147, 39, 79,
- 32, 85,153,141,219,233,143, 49, 97,238, 58,232,245, 70,232, 12, 70,232, 13, 28, 86,252,176, 31, 58,163,109,103, 36, 18,137, 48,
-117,234, 84,153,165,237, 59,118,236, 80,217,101,176,104,153, 9, 46, 81, 65,163,214, 64,171, 43,189, 23,198,198, 66, 44,250,236,
- 93,232,245,122,168, 6,119,128, 78,175,135,113,242, 0,232,116, 58,164, 57, 8,152,206,161, 10, 61, 8,163, 58,115, 41,221,234,
- 61, 50,157,195,154,129,162,148,154,237, 58,172,138,201,100,181,110, 29,116,109,196,160,208,136,179,231, 46,229,156, 61,119,169,
-218,126,141,155,135,222,249,104,209,142, 89, 53, 49, 87, 64,229,238,194,103,193,148,208, 46,151,203,145,146,146, 2,150,101, 65,
- 8,121, 20, 23, 23,231, 9, 0,243,230,205,203, 21, 10,133,110, 44,203,226,227,143, 63, 6,203,178,238,227,199,143,255, 28,128,
- 69,131,101, 48, 24,252,157,156,156, 80, 84, 84, 84,254, 58,138,197, 98,204,156, 57, 19,195,134, 13, 43, 55, 87, 98,177, 24, 91,
-182,108, 65, 72, 72, 8,180, 90,173, 93,145,187,244,244,244, 75, 0, 94,178,181, 31,199,113,165,221,172, 28,103,245,141, 37, 47,
-246,131,250,158, 24, 70,145, 8, 59,246,237,195,176, 97,195, 32, 22, 75,202, 35, 87, 16,137, 64,196, 98, 48, 34, 17,140,108,141,
-198, 75,152,218,129,194,194, 66,118,203,150, 45,141, 91,182,108, 73, 40,128, 22, 45, 2,200,254, 3, 7,234,203,229,242,187,174,
-174,174,213,162,164, 60, 60,255,118, 42, 26,164,218,208,154, 57,115,230,108, 0,116,230,204,153,179, 77,203, 17, 17, 17, 42, 0,
-202,103,213,175, 53,131,101, 43,130,181,124,249,114,180,106,213,202,226,118, 74, 41, 86,173, 90,133, 31,127,252,113, 57,165,244,
- 78, 77,206,253, 97,127,225, 69, 7,153,200,187, 68,165,203,252,246, 55,125, 88, 80, 80, 80,108,135, 14, 29, 26,199,198,198, 90,
-140, 96, 89,170,141,245,119,148,105,160,148, 66,171,211,163,164, 68, 5,181, 86,139, 41,159,174,181,231,178,136, 78, 91, 36,120,
-189,215,203, 22,205, 67, 77,114,176,108,117, 13, 86, 68,175, 55,192,228, 1,158,148,168,209,117,200, 76, 92,250,125, 37, 0,148,
-155, 43,153, 68, 8,169, 88, 8,134, 0, 4,150,181,245,170,194,190, 51, 38,126,112,122,253,247, 63,250,246,127,121, 52, 38, 77,
-154, 4,129,216, 1,117,221,220, 97, 48, 82,212, 87,120,224,118,250, 99,236, 94,243,105, 89,218, 25,197,203, 67,231, 97,249,103,
-163,177,108,158,237, 95,245, 44,203, 98,205,154, 53,170,170, 81,171,138,145, 44,123, 40, 55, 88,197, 42,168, 52, 90, 76,155,181,
-206,158,195, 74,239,209,171, 47, 89,188, 71, 85, 49, 55,112,162, 98, 27,108, 69,176, 76,204,158, 61, 59, 5, 0, 11, 0,150,190,
- 69, 37,110,128,127,167,222,159,217,219,182,191, 3,142,227,112,224,192,129,106,209,213,138,152,238,153, 61, 63, 2, 56,142,195,
-131, 7, 15,144,148,148,132, 14, 29, 58,160,160,160, 0, 2, 0, 83,175, 92, 65,192,240,225,208,148,165, 46,136,197, 98,140, 25,
- 51,166,150,175,166,140,178, 55, 60, 37,214,111, 84,177, 67, 58, 60, 3, 37,216, 28,185, 23, 19, 23,140,128,123, 11, 41,190,158,
-181,177,124,251,178,239,230,149,229, 97,137, 33,181,111,252, 73, 37, 10, 11, 11, 5, 95,125,253,117,235,176,118,237,101,195, 70,
-140, 98,180, 6, 14,139,190, 92,201,254,186,125,171,219,214,173, 63,201,164, 82,233,181,154,171,242,240, 60,223,212,150,185, 50,
-105,153, 34, 88, 17, 17, 17, 87, 35, 34, 34,170, 69,195,158, 5,155,223, 62, 44,203,162,226,144,229,170, 16, 66,236,202,193,154,
- 50,101, 10,156,156,156,204,110,211,233,116,244,242,229,203,201,153,153,153,155, 40,165, 53,174,139, 35, 22, 50,158,203,191,250,
-193,119,210,228, 97, 28, 80, 58, 90,107,237,218,181, 46,166, 28,172,138,121, 88,182,114,176, 60, 60, 60,230, 47, 93,186,116,210,
-107,175,189,198, 48,204, 95, 53, 29, 77,221, 17, 21,187,242, 56,142,131, 94,175,199, 31,127,252, 49, 41, 34, 34, 2,176, 16,245,
-162,180,180,251,169,184, 68, 5,181,166,244, 11,246,118,210, 46,115,187,154, 59,216,230, 46,166,200, 85,251,148, 60,179,145,171,
-195,158,165, 95, 92,189,115,108,107, 17,134, 77,185,247, 32,173,157, 87, 61, 23, 60, 46,120, 2, 73, 89,183,160, 9,147,185,146,
- 73, 68,168, 91, 71,142,188, 71,217, 16, 10,133, 22,163, 35,148,210, 7,132,144,151, 6, 13,232,125,148, 97, 5,210,138,219,132,
- 50,103,135,168,179, 87,234, 62,124, 92, 2,174,194,117,114,148, 98,226, 66,251,130,152, 66,161, 16,227,199,143,183,104,112,246,
-237,219,167,178, 71,167,178,193, 42,141, 34,217,125,143,236,196,158, 8,150,189, 6,171, 42,166,209,133, 34,145,200,191,204,124,
-217, 77, 80, 80,208, 33, 7, 7,135, 70,246,238,111,111,209, 81, 66,200,130,110,221,186, 45,246,245,245,245,248,232,163,143,136,
- 64, 32, 64,104,104,104,189, 47,190,248,162, 0, 0,252,253,253,157,128,210,207,152, 21, 43, 86,224,218,181,107, 57,132,144,133,
-214, 52,197, 98,241,245, 58,117,234,132,118,235,214, 13, 5, 5, 5, 72, 77, 77,133, 92, 46, 71,192,215, 95,227,202,184,113, 8,
-218,176, 1, 76,183,110, 0, 74, 7, 13, 92,185,114, 5, 18,137,196,236,200, 73, 0,240,241,241, 9,163,148, 46, 5,208, 9,127,
-117, 11, 82, 0,103, 9, 33, 51, 50, 50, 50, 46, 86, 59,136, 33, 12, 0, 24,109, 68, 88,197, 5,158,208,164, 73, 48,114,228, 72,
-136, 68, 98, 64, 44,198,180,105,211, 42,124, 30,137,193,150,229, 99,113, 70,177, 53, 41, 0,149,243, 83, 0, 64,171,213, 18,137,
- 88, 44, 25,241,222,251,204,140,105,159,112,122,131,129, 19, 8,132,204,212, 57, 75,152,155, 55,146, 36,197,197,197, 12,169,201,
- 47, 43, 30,158,127, 1,230,114,169,202,162, 80,150,200,169,152,151,101,201,160, 85,204,201, 2, 96, 87,185, 24, 91,148, 27, 44,
- 51,125,158, 55, 19, 19, 19,155,181,108,217, 18,169,169,169,102, 71,202, 1, 40, 29,194, 44,147,225,214,173, 91, 0,112,211,210,
-137,142, 31, 63,190, 26,192,106,211,178, 66,161,232, 16, 62, 48,252,108, 80,183, 96,236,250,230,215,130,204,204,204, 32, 83, 77,
- 44, 66, 8, 81, 40, 20,195,132, 98,193, 59, 77, 3,235,119, 49,114,220,210,227,191,159, 49,155,227, 3, 84,207,193, 50, 24, 12,
- 79,157,131, 69, 8, 25,248,218,107,175, 49,201,201,201, 24, 52,104, 16,126,250,233, 39, 75,187, 98,216,176, 97,216,177, 99, 7,
- 94,125,245, 85, 38, 50, 50,210, 98,153, 6, 74, 1,189,206,128,226, 18, 53,212,234, 90,185,111,102,121,214,200, 21, 0, 80,206,
-112,236, 74, 66, 92,155, 86, 33, 29,132,247,210,178, 32, 21, 11, 43, 25, 44, 7,137, 8, 82, 73,233, 58, 47,247,186,136, 57,119,
- 82,103, 48,232,173, 14,131,167,148, 62,128,153, 34,141, 18,167,122, 41, 61, 59,181,170,107,238,152,229,179, 70,160,213, 47,203,
-109,182, 87, 40, 20,226,251,239,191, 87, 89,138, 94,217,251, 26, 80,138,242, 46,194, 18, 85,237,222, 35, 79, 79, 79,119, 15, 15,
-143,245, 46, 46, 46, 82, 83,238,144,165,237,214, 34, 92,150,168, 82, 23,235,218,146, 37, 75,106,100,178,196, 98,113,163,179,103,
-207, 54, 51,229, 5, 90,123,212,106,181,120,231,157,119,236, 10, 11,198,198,198,110, 14, 14, 14,190,237,238,238, 30,213,177, 99,
- 71, 73,114,114, 50, 22, 45, 90, 68,132, 66,161, 51, 80,250,127, 89, 84, 84, 4,129, 64,128,199,143, 31,131, 16, 50, 50, 54, 54,
-246,176, 53, 77,141, 70, 19, 29, 29, 29,221,166,111,223,190,236,181,107,215, 32, 16, 8,192,113, 28, 52,237,219, 35,104,195, 6,
- 36,125,242, 9, 94,190,119, 15, 26,189, 30, 82,169, 20,135, 15, 31,214,149,148,148, 88, 44, 35, 34, 22,139, 55,158, 63,127,190,
-165, 84, 42,133, 78,167, 3,199,113, 96, 24,134,176, 44,219,185,101,203,150,171, 80, 58,114,169,156, 70,141, 60, 60,198,127,208,
-251, 69, 35,199, 25, 51,148, 57, 57, 22,100, 1, 0, 90,167, 28,184,251, 75,202,243,173, 68, 66, 17, 68,130, 82, 99,101,138, 92,
-137,132, 34,136, 68, 98, 72,196,118,117,225,211,170,239, 29, 83,238,149,163,163, 3,247,194, 11, 47, 36,223,188,117, 59, 0, 0,
- 83,167,142,139,221,121,177, 60, 60,207, 19, 86,242,175,114,170,152, 35,109,133,229, 28,148,206,173,220,167,236, 57, 42, 60,191,
- 4,160,109,149,125, 77,219,181, 85, 30, 77,219, 19,107,227, 90,172,125, 80,246,254,224,131, 15, 54,188,242,202, 43,221,167, 78,
-157, 10,185, 92,142,204,204,204,242,127, 90,177, 88, 12, 63, 63, 63,168, 84, 42,156, 58,117, 10,249,249,249,199, 1,124,104,239,
-137, 51, 51, 51, 47,220, 74,184,249,168,115,223, 48, 55,255,176, 23, 93,210, 83,210,219, 3, 56, 71, 8, 33, 62, 62, 62,223, 13,
-254,228,181,247,186,190,217, 14, 34,177, 16,105,183, 44,230,209, 2,168,158,131,245, 44,181,177, 24,134, 97, 9, 33, 24, 52,104,
-144, 93,251, 15, 30, 60, 24, 39, 79,158,132,181,238,196,210, 46, 66, 29, 74,138, 85, 40,169, 69,131, 69, 8,129,209,104, 44,143,
- 92,153,254,122, 42,117, 96, 24,166,220, 88,188,150,109, 95,201, 9, 0, 80,151,148, 44, 59,125,108,223,152, 23, 3, 90,187,119,
- 8,110,142,155,119,211,176,108,246, 95, 93, 45,211,198, 14,198,150, 29,127, 64,225,229, 6,141,234, 9,142, 28,252,163,160,176,
-176,112,217,211, 94,195,150,189, 39, 1, 0, 47, 13,173, 60, 70, 96,208,199, 43,236, 58, 94, 32, 16, 96,212,168, 81, 22, 35, 88,
- 81, 81, 81,170,138,145, 72, 75,152,238, 81,113,177, 26, 37, 42,187,130, 94,118,161, 80, 40,130,218,183,111, 31,245,237,183,223,
-186,213,171, 87, 15, 74,165,178,146,193, 82, 40, 20, 65, 97, 97, 97, 81,223,126,251,173,155,187,187, 59, 82, 83, 83,237, 46, 17,
- 2, 84,174,139,149,147,147, 67, 30, 63,126,204,213,173, 91,183, 70, 38,139, 97, 24,104, 52, 26, 92,187,102, 95,143, 82, 77,138,
-142, 54,106,212,232,167,149, 43, 87, 74,238,223,191, 15,189, 94,143,228,228,228,106,131, 16, 88,150,197,204,153, 51, 49,103,206,
-156,245, 0, 26, 88,211, 51, 24, 12,223, 12, 31, 62,252,131,140,140,140,186,158,158,158,200,204,204,132, 72, 36, 2,165, 20,164,
-107, 87,188,116,247, 46,116, 70, 35,100, 50, 25,110,220,184,129, 77,155, 54, 21,235,116,186,111,204,105, 53,109,218, 84,204, 48,
- 76, 51,145, 72,132,119,223,125,183,210,182,173, 91,183,162,131,255,227,208, 15,223, 20, 63, 49, 82,145,230, 9,252, 15, 49, 12,
- 67, 38,140,238,221,188,115,135, 86,129, 87,147,239,221, 86,102,231,157,181,214, 86, 97,129, 27,116, 74, 9, 32, 18,253,149,111,
- 85,150,115,197,138,197,229, 35, 10,169, 88, 12, 78,108, 95,177,224,138,166,137, 16, 2, 55, 55, 55,205,138,111,150, 73, 28, 29,
- 29,141, 0,224, 36,119, 52,254,186,117, 45,220, 92, 93, 53,213,220, 24, 15,207,191,155,234,137,166,255,155, 99,159, 26,139, 6,
- 43, 46, 46,238, 46,128, 30,193,193,193, 67, 79,157, 58,181,124,202,148, 41,238,157, 59,119, 70, 94, 94, 30, 26, 52,104, 0,111,
-111,111,196,198,198, 34, 49, 49, 49,151, 82, 58, 53, 54, 54,182, 90,168,199,218,108,219,148, 82,170, 80, 40,118,234, 74, 74,198,
- 5,117,126, 17, 39,119,157,142,240,246,246,254,208,215,215,119,242,136, 89,125,223, 11,239,223, 22, 41,241,247,112,225,232, 21,
-100,166,230, 98,228, 75, 51, 44,106,218,147,131, 85,241,177,106, 14, 86, 69, 77,142,227,140, 90,173, 22,191,252,242,139, 93, 38,
-107,251,246,237, 80,171,213,224, 56,174,210,151, 78, 69, 77, 35,103, 36, 78,206,238,240,169,239, 15,157,182, 24, 28,103,255, 47,
-203,138,159,144,230,174,221, 96, 48, 96,254,252,249,152, 62,125, 58, 22, 46,180,220,187, 34, 16, 8,176,118,109,245,220,175,170,
-154,121,121,121, 69, 10,133, 98,216,142,239, 87,238, 26, 58,122,146,147,111,199, 32,108,254,245, 32,244, 58, 61,164, 18, 1,234,
- 58,203,241, 66, 35, 31,104,213, 37, 88,183,122,121,161, 90,173, 26, 86, 53,247,172, 38,179,172,143, 28,208, 5, 95,110,250, 29,
-167,183,253, 21,160,124,105,232, 92,252,252,213, 68, 4, 7,255, 96, 85,211,104, 52, 66, 40, 20, 98,219,182,109, 42, 75,163, 9,
- 89,150,133, 37,131, 85,245, 30, 57, 59,187,195,183, 97, 0,180,234, 39,181,118,143,220,220,220,166,127,247,221,119,110, 42,149,
- 10,215,175, 95,199,245,235,215, 65, 8,185, 86,117,123,113,113, 49,146,146,146, 76, 38,167,146,211,177,246,122,154, 34, 87, 57,
- 57, 57, 36, 51, 51, 19, 14, 14, 14,204,229,203,151,213,173, 91,183,190,134,178, 28, 45, 91,215,174,209,104,238,119,239,222,221,
-236,126, 26,141,198, 71, 34,145, 84,154,178,201, 84,116,180,106, 87,161,185,118,166,165,165, 37,172, 92,185,178,126,243,230,205,
-177,113,227, 70,141,147,147,147,120,202,148, 41, 96, 89,150,172, 88,177,130,230,229,229,233,102,206,156, 41, 62,115,230, 12,138,
-139,139, 19,172,181, 19, 0, 40,165, 69,132,144, 49, 29, 59,118,252,241,208,161, 67,178,102,205,154,161,160,160,116, 0,229,150,
- 45, 91, 48, 97,194, 4,200,100, 50,164,164,164,160, 95,191,126, 37, 37, 37, 37, 99, 42,214,192,170,168,105, 48, 24,136, 80, 40,
-164, 28,199,225,179,207, 62,171, 84, 88,212,193,193, 1, 50,177, 17,223, 46,104,226,248,201,151, 89,142,147,198, 13, 31, 14, 0,
- 70,142, 51, 94, 77,190,119,251,219,205,191,159, 0,112,202, 82, 59, 1,128,171, 83,128,122,205, 74, 35, 88, 66, 83,205, 43,145,
-164,210,232,193,210, 58, 88,165,117,177,108, 93,123,213, 84, 12, 87, 87, 87, 67, 72, 72,112,178, 74,165, 98, 77, 94,170, 94,189,
-122, 73,101,251, 82, 63, 63, 63, 45,170, 84,212,171,201,255,166,189,240,154,188, 38,143,121,108,134,250,227,227,227,183, 5, 6,
- 6, 30,138,140,140,140,220,187,119,239,232, 73,147, 38, 17,103,103,103,236,220,185,147,230,229,229,253, 32, 22,139,167,159, 63,
-127,254,169,234, 69, 80, 74,183,156,249,227,194,216, 33,159,188, 65, 38,125, 53,178, 83, 66,116,210,181,214,157,154,161, 85,199,
-102,136, 61,158,140,181,179,119,252,100,208, 27,190,200,204,204, 76,181,166, 99, 79, 14,150,233, 79, 32, 16,216,172,131,181,119,
-239,222, 73,189,123,247,102, 98, 98, 98,170,229, 92, 85,204,195,138,138,138,130, 78,167,195,206,157, 59, 57,107,117,176, 56, 96,
-223, 55, 95,125, 49,226,251,173, 7,196, 12,209,225,252,169,221, 40,120,108, 61, 42, 39, 18, 9,241,243,246,125, 58,129,128,189,
- 97,165,173, 15,226,226,226,220,190,252,242, 75,150, 97, 24,172, 93,187,182, 82,228,170, 42, 87,174, 92,225,244,122,189,205,123,
-165, 84, 42,163,188,188,188, 6,111,248,102,193,150,174,175,246,117,105,209,162,165,192,195,163, 62, 4, 12,131,252,188, 28, 92,
-186,112,198,112,248,192,111,249, 90,173,118,164, 82,169,140,178,165,103,141,136,111,127, 51,187,254,173, 73,214,187, 7, 25,134,
- 49,232,245,122,129,163,163, 35, 12, 6,131, 89,115,213,189,123,119,217,217,179,103, 85, 58,157, 14, 44,203, 90,117, 76,165,247,
-104,238,136,239,127,172,221,123,100, 52, 26,253, 31, 63,126,140,226,226, 98,196,198,198,210,181,107,215,230,228,231,231,207,174,
-184, 61, 47, 47, 15, 69, 69, 69,184,116,233, 18,221,184,113, 99, 78, 97, 97,161,181,124,130, 42,109, 40,173,139,245,248,241, 99,
-206,193,193,129,209,235,245,250,214,173, 91, 75, 69, 34,251,106, 94, 1, 64, 66, 66, 66, 47, 75,219, 58,117,234,116,243,236,217,
-179, 47, 84,156,155,208, 96, 48,136, 52, 26, 77,179,126,253,250,217,252,252,144,201,100, 67,118,239,222,189, 77, 42,149,182, 82,
-171,213, 31,100,103,103,111, 1, 80,159,101, 89,220,186,117, 43,215, 96, 48, 12,252,236,179,207,190, 47, 46, 46,190, 34,151,203,
-135,218,211, 94, 74,233, 97, 66,200,208,128,128,128,205,243,230,205,115, 12, 15, 15, 23, 42, 20, 10,132,132,132, 32, 37, 37, 5,
- 7, 14, 28,208,173, 91,183,174,164,164,164,100, 20,165,212,226,251, 83, 32, 16, 80, 0,196, 96, 48, 84,154,195, 84, 44, 22, 67,
- 40, 20,162, 68,195, 96,244,103,119, 84, 28,132,170, 37,203,126, 58, 64, 41,136, 50, 51, 55, 55,235, 97,254, 69,129, 94,127,234,
-190,178,200,234, 92, 79,198, 92, 7, 52,116, 14, 4,240, 87,154, 2,195, 49, 32, 58, 2,214,200,130,213,179, 32, 2, 65,105,116,
-203,190,233,174,168,193, 96, 64,159, 62,125,176,127,255,126,244,239,223,159,194, 74,174,200,254,253,251, 45,254,184,224,225,225,
-249,251,177, 43,151, 34, 41, 41, 41, 31,192,135,109,219,182,221, 58,113,226,196,253, 28,199, 9, 57,142,123, 61, 33, 33,225,244,
-179,156, 60, 51, 51, 51, 78,161, 80,204,118,247,113,137,232, 53,180, 19, 90,182,109, 0,163,193,136,179, 7, 19,240,195,146,223,
-118,164,167,165,191, 71, 43,204, 85,104, 9,123,114,176, 42, 62,218,170,131,181,104,209, 34, 44, 94,188,184,198,163, 8, 45,237,
-115,238, 82,198,135, 29, 66,189,125,223,234,219,233, 85,134, 16,170,177,146,103, 67, 8,168, 41,211, 66, 32, 96,111,156,188,144,
-102,177,216, 82, 86, 86, 86,247,113,227,198,253,201, 48, 76,131,191,142,183,156,111,100, 52, 26, 51, 31, 61,122,244,138,173,107,
- 42,211, 62,228,235,235,219,252,228,225,223,103,157, 57,118, 40,220,104,212, 53, 37, 32, 16,137, 68,183,245, 70, 67,180, 94,171,
-141, 72, 79, 79,127,230, 66,108,179, 62,236,143, 7,202, 92, 8, 4,108,105,237,169,178,219,189,123,213, 20, 4, 7,255,108,241,
- 56,137, 68,114,104,243,230,205,125,134, 15, 31, 78, 4, 2, 65,121,183,155,233,250, 25,134,193,133, 11, 23, 84, 90,173, 22, 63,
-252,240, 3,149,201,100, 86, 11,215,254, 93,247,232,201,147, 39,163,250,245,235,183, 5,128, 4,192,173,130,130,130,143,148, 74,
-101,122,197,237,253,251,247,223, 2, 64, 66, 8,169,182,221, 22,166,146, 13,117,235,214,189, 86, 22,185,146, 62, 77,162,187, 37,
- 56,142, 99, 45,117, 31,218,211, 85, 88, 54,183,224,155,166,229,208,208,208, 5, 99,199,142,173, 56,217,243, 41, 0, 77,106,218,
- 46, 74,105, 20, 33,164,229,103,159,125, 54, 89, 38,147,117, 85,169, 84, 45, 0,192,193,193,225,122, 73, 73,201, 9,157, 78,183,
-146, 82,106,113, 26, 27, 0,184,125,251,182,182,113,227,198, 41, 6,131, 33,208,195,195,163,124,244,161, 88, 92, 26, 77,186,112,
-221, 53, 54, 35, 35,163,173, 53, 13, 43,237, 75,183, 22, 81,182,116,140,181,237, 90,173, 54,231,220,185,115,174,199,142, 29, 99,
-141, 70, 35, 14, 31, 62, 92,254,163,207, 92,111,224,157, 59,119,160,213,106,171,151,136,231,225,225,249,159, 64,254,206,110,122,
-123, 67,136, 10,133, 98,144,212, 81, 50,174, 65,115,239,214,202,187,217,201, 69,249, 37, 63,103,102,102,126, 75, 41,173,246, 1,
-254,111, 9,117,242,154,182, 53,197, 14,206, 71, 8, 43,106, 96,105, 59, 53,234, 30,104, 75, 10, 95, 53,167, 25, 22, 22,230, 35,
- 18,137,150,105, 52,154,215,172, 85,105,103, 89,214, 32,147,201, 14,169,213,234,233, 85, 39,123,254, 55,190,158,243,231,207, 55,
- 27,146,176,119, 20,225,220,185,115, 77, 3, 73,236,106,103, 80, 80,208, 9, 7, 7, 7,179, 5, 53, 75, 74, 74, 82, 19, 19, 19,
-203, 13,251, 63,249,122,154, 70,203,217,147,119, 84, 81,243,169, 70, 17, 62, 67, 59,107, 66, 85, 77, 95, 95, 95,169,179,179,243,
- 50,134, 97,172, 22, 56, 53,193,113,156, 54, 59, 59,123, 74,110,110,110,121, 40,246,223,248,158,231, 53,255,255,104,254,215,168,
-181, 58, 88,207,130, 82,169,252, 5,192, 47,255,116, 59,120,254,183,152,204,211,211, 80,102,150, 44, 78,222,252, 95,197,100,144,
-204,172,191, 14, 88, 41, 72,246,148,216, 83,142,225,121,224,105, 19,186,203, 12,148,205,226,162,207, 3,233,233,233,106, 0, 19,
-254,233,118,240,240,240,216, 7,223, 65,207,195,195,195,195,195,195,195, 83,203, 16, 0,129,230, 54,212, 36,244, 71, 8, 49,171,
- 97, 13, 91,250,188, 38,175,201,107,242,154,188, 38,175,201,107,254,247, 52,109,105,255, 87,186, 30,159,139, 28, 44, 94,147,215,
-228, 53,121, 77, 94,147,215,228, 53,255,127,107,254,215,224,187, 8,121,120,120,120,120,120,120,120,106, 25,187, 13,150,220,203,
-223,223,189, 97,208, 22, 87,191,214,151, 93,253, 90, 95,118,111, 24,180, 69,238,229,111,119,173,157,255, 18, 10,133, 66,230,237,
-237, 61,180,126,253,250, 81,109,218,180, 41,244,241,241, 49, 59, 69, 14,143,117,194, 9, 17, 12, 38,100,252, 8, 66, 82, 71, 16,
-146, 58,152,144,241,225,132, 60, 23, 3, 47,106,147,133, 19,124,218,159, 62,252,238,161,133, 19,124,204, 22, 96,155, 63, 77,225,
-118,246,200, 59, 43,103, 79,240,113,173,141,243, 17, 66,156, 60, 61, 61, 55,122,121,121,221,247,244,244,124,224,233,233,185,153,
- 16, 82,167, 54,180,121,120,120,120,120,236,195,174, 47, 51,215, 6,173, 62,240,111,241,226,244, 5,115,103, 17, 31, 47,119, 7,
-189,193,168,187,119, 63, 61, 96,238,162,200, 93,174, 13, 90, 45,207,123,112,229,187,154,158,152, 16, 66,124,125,125, 7, 9,133,
-194, 62, 0, 76, 70,237,154, 94,175,223,159,158,158,254,139,189,163,130, 90,183,110,125,134,101,217,250, 53, 57, 55,199,113,247,
- 19, 19, 19, 95,174,105,155, 1,192,199,199,103,160,143,143,207,230,246,237,219, 59,180,105,211, 6, 34,145, 8, 75,151, 46,157,
- 10,192,236,116, 28,230, 32,225,225, 2,143,124,215,225,172, 64,240, 6,128,214,148, 2, 32,236,101, 78,175, 59,144, 93,247,209,
- 22, 26, 29,109, 87, 25,113,111,111,239,217,132,144,145, 40, 29, 86,254,157, 82,169,124,234, 41,107,172,161, 80, 40,252, 8, 33,
- 93, 41,165, 45, 24,134,185,194,113,220, 81,165, 82,249,232, 89,117, 61,129, 15, 59,118,238,188,114,196,212,169,172,234,212, 41,
-172,220,188,121, 5, 10, 11, 1,160,122,201,121, 43, 16, 66, 72, 88, 88,155,183,157,156,208,135, 0,193, 32, 32, 12,104, 66, 94,
- 62,115,240,210,165,248, 95,236,169,165,102,137,144,144,144, 3, 0,122,151, 45, 30,140,139,139,123,189,166, 26,143,239,112,159,
- 75,132, 45, 94,122,124,251,196,231, 0, 94,171,186,221,160,150,142, 96,133,126,125, 88, 26,159, 6,224,235,167,109, 43, 0, 16,
- 66, 28,220,221,221, 47,255,246,219,111,190, 97, 97, 97, 2, 0,136,141,141, 29,222,167, 79,159,110,101, 33,253,194,103,209,127,
- 90, 58,116,232, 80,215, 96, 48,108,101, 9,105,207,113,156, 11, 0, 48, 12,147,111,164,244,130, 64, 32, 24,241,180,197,138,121,
-120,120,120,158, 87,108, 26, 44,185,103,139,128,150, 45,253,167, 30,222,187,213, 47, 63, 47, 95,189,118,217,150,120,149, 64, 92,
-210, 40,160,153,104,213,242, 47, 93, 38,124, 60,237, 99,185,103,139,139, 79, 30, 94, 79,182,247,164,222,222,222,245, 27, 54,108,
-184,103,246,236,217,129,157, 59,119, 22,122,120,120,224,225,195,135,184,113,227, 70,224,217,179,103,251,255,246,219,111, 83,189,
-189,189,223,180, 85,193, 29, 0, 28,197,162,198,191,124,185,196, 75,236, 82, 23,212,104,128, 75,203, 32, 0, 0,229, 56,100, 70,
- 71,129,211,235, 65, 57, 35,124,123,245, 45, 93, 79, 41,218,181,107,103,223,196, 95, 85,240,245,245, 85, 52,111,222,252,167,153,
- 51,103,138, 52, 26, 13, 18, 18, 18,112,254,252,121, 46, 59, 59, 59,210, 94, 13,207, 86, 3, 2,188, 4, 94,187,250,245,127,173,
-225,235, 61, 61,196, 13,188,220,193,113, 82,220,184,171,171, 31,117, 58,190,215,193,195, 71,167,123, 4, 12, 24,152,157,188,247,
-138, 53,157,192,192,192,246, 12,195, 44,206,200, 40, 45,237,164, 80, 40,150,134,133,133,125, 81,113,159,170, 30,149,227, 56, 8,
- 4,130,135, 37, 37, 37,131,146,146,146,226,205,233,126, 62,154,232, 13,134,210,247,133, 64, 0,227,214,163,190,123,123,244,232,
-209,104,212,168, 81, 8, 14, 14, 70,108,108,108,215,157, 59,119, 78,246,243,243,187,164,215,235, 15, 74, 36,146,232,251,247,239,
- 63,213, 4,139, 34, 96,198,136,169, 83, 89,249,253,251,144, 39, 36,224,221,194, 66,193,151,192, 12,212,192, 96,133,132,132, 52,
-126,165, 71,240,174,254,111,118,241,247,242, 10, 16, 9,133,245, 64, 41,133, 94,159,215, 60, 39,231,218,219,117,234, 96,102,187,
-118,237,222,138,137,137,185,101,143, 94,219,182,109, 61, 57,142,219, 64, 41, 21, 17, 66, 38, 2,232,125,248,240, 97, 24,141, 70,
-188,254,250,235,189, 67, 66, 66, 26, 83, 74, 87,203,229,114,170, 82,169,222,191,116,233,210, 67, 75, 90, 11, 39,248,180,207,191,
-205,125,158, 37,104,210,235,197,208,145,200, 18, 28,233, 53,229, 85,239, 67, 46, 77,152,133,159,175,201,184, 0, 0,175, 53,109,
-234,212,184,133,195,167,114,231, 64,215,130,140,168, 79, 95,107,218,116,211,161,219,183,139, 44,105,218, 66,161, 80, 44,219,186,
-117,171, 95,251,246,237,203,139,228,182,105,211,134, 93,186,116,169,207,148, 41, 83, 86, 0,120,207, 78,157,230,110,110,110, 71,
- 56,142,211, 92,189,122,181,185,105,189, 71,208,155, 29,221,156, 28,187,231, 60, 46, 58,149,123,245,183,147,246,104,133,134,134,
-142, 18, 49,255,199,222,121,135, 71, 81,117, 97,252,189,179,125,179,155, 77, 79,216, 77,161, 36,132, 18, 2,132,132, 94, 2,138,
- 72, 9,130, 10, 40, 69,138,130, 72,147, 15, 69,193, 70,149, 32, 72, 71,138,160,128,128, 32, 77,145, 46,189,151, 36,212, 0, 9,
- 73, 8,164,247,158,205,182,153,251,253,145,108, 12, 49,201,110, 40,130, 58,191,231,217,103,103,118,102,222, 57, 51, 41,243,238,
-185,247,158,203,124,191,248,139, 9,130,166, 45, 90,192,198,217, 21,134,228,100, 20,153,140,142, 23,175,221,234,243,205,146,239,
- 51,130,130,130,198,132,133,133,253, 88,219,235,229,225,225,225,121, 81,177,104,176,164, 82,201,180, 25,159,127, 74,114,178,114,
-181,134,130,124,131, 13,213,155, 84, 54, 50,146,159,158,145,123, 95,101, 83, 60,101,242, 36,217,167,211, 62,159, 6, 96,168, 37,
- 45,160,212, 92, 53,105,210,228,242,186,117,235, 92, 29, 29, 29,145,151,151,135,172,172, 44, 92,190,124, 25,148, 82,244,234,213,
- 75,218,178,121,243, 86,139,151, 44,185,160, 86,171,219, 91, 50, 89, 66,145,144,136, 20, 10,236, 10,110, 5, 70, 44,198,155,119,
- 82, 0, 0,212,104,192,161,183,251, 2, 0, 4, 18, 9, 6, 69,167, 3, 0,100, 50,153, 53, 97, 86, 9,165,180,125,199,142, 29,
-197, 0,240,209, 71, 31,229, 23, 21, 21,133, 18, 66,182, 38, 39, 39, 39, 89, 58, 22, 0,156,155,191,230,235,230, 82,231,212,183,
-115, 71, 59,250, 55,240,134,222,104, 68, 98,122, 18, 40, 36,168,227,170,192,208,254, 45,197, 29,131,196, 13, 23,125,119,236,164,
-155,127,191, 46,105, 55,127,187, 85,157,150, 66,161,216,180,116,233, 82,252,242,203, 47, 0,128, 19, 39, 78,192,215,215, 87, 97,
- 41,134,187,119,239,122,143, 24, 49, 98, 27,128,134, 85,109, 55,153, 32, 12,253,122, 43, 0, 96,211,186, 33,130,168,168,168,250,
-114,249,159,115, 41, 7, 7, 7, 35, 56, 56,152, 9, 13, 13,109,123,226,196,137,182,219,182,109, 51,184,187,187, 47, 77, 74, 74,
-170,118,170,160,154,208,158, 62, 13,229,213,171,192,233,211,150,119,174, 68, 64, 64,128, 87,179,102, 46, 23, 22,125,251,149,203,
-239,251,110,225,219,111,127, 68, 76, 76, 12, 0,192,219,219, 27, 67, 6, 15, 20,109,221,178,166,217,180,105, 51,207, 7, 6, 6,
-118, 10, 15, 15,183, 88,221,156,227,184, 53,161,161,161,175, 41,149, 74, 76,155, 54, 45,170, 65,131, 6, 80,169, 84, 88,187,118,
- 45, 28, 28, 28, 96, 52, 26,163, 22, 44, 88, 32, 76, 78, 78,198,242,229,203,127,192,159,217,173,191,208,165,119,240,151, 82, 81,
-147,206,141,131, 70, 64,169, 82, 99,221,207,219,113, 55,108, 99,103,157,241,206,151,159, 77,112, 31, 38,160,210, 17,238,190,202,
-105,245,131,186, 58, 53,108,214, 15,245, 2,175, 58,235,216,211,113, 95,142,247,158, 47,148,149,108,154,241,237, 95,179,132,100,
-224, 78,129,127,254, 21,199,155,127, 40,178, 40, 45, 47, 26, 74, 80, 86, 3,171,142, 90,211,174,113, 81, 38, 0, 0, 32, 0, 73,
- 68, 65, 84, 55, 56, 56, 88, 0,148, 26,236,248,248,120,232,245,122,248,249,249, 49,122,189,222,170,154, 86, 26,141,166, 81,151,
- 46, 93,206,110,222,188,217,169,115,231,206, 25, 21,183,213,113,178,127,245,212,238,165,147,190, 94,182,165,137,171,223,235,185,
-150,190, 8, 4, 5, 5,141,106,222,200,123,253,210, 5, 51,136,160, 40, 17, 66,251, 44,128,203, 66,202,182, 31, 0, 27, 71,244,
- 25, 59, 5,173,219,182, 21, 76,154,252,217,250,214,173, 91,211, 43, 87,174,108,168, 73,143,135,135,135,231,159,130, 69,131,197,
- 81,174,133,139,139,163,108,249,194,141, 97,106, 25, 67,234,120,104,136, 68,101, 47,132, 82, 33,101, 4, 34,173,183,183,135,152,
-163, 92,149, 83,133, 84, 30, 97, 64, 8, 33,245,234,213,219,189, 97,195, 6, 87,145, 72, 4,142,227,224,226,226,130,184,184, 56,
-228,228,228,160,176,176, 16, 49,183,111,163,158,167, 7, 38,141, 25,173,158,243,237,162,221,132,144,160,138,205,133,149, 53, 41,
- 71,193,153, 30,109, 81, 35,132,160,170,246,197,234,166,145,177,118, 36, 4,199,113,247,147,147,147, 97, 99, 99,131,166, 77,155,
- 42,175, 92,185,114, 38,201,156, 66,178,116,237, 3, 7, 10,212, 18,233,222,133,115,223,114, 36,130, 40, 68, 61,204,133,143, 71,
- 27, 56,217,121, 34, 41,163, 16,225,145, 7, 16, 21,179, 31, 62, 30, 94, 24, 51,196,199,126,201,154,140,125, 36,240,125, 31, 26,
-190,214, 88,149,102, 65, 65,129,210,203,203, 11,238,238,238,224, 56, 14, 44,203,226,214,173, 91,229,203,230,249, 18,205,203, 75,
-183,158,131,131, 32, 19,111,189,222, 27,217,217,217, 74,107,175,221,108,174,118, 46,210, 52,211, 22,165,136, 1, 64,174, 80, 27,
-222,156,146,116,171,117,235,214,112,113,113, 17,159, 63,127,126, 10,128,114,131,101,237,253, 52, 0, 11,150,109,216,176,124,104,
- 94, 30, 3, 0,235, 9,225, 12,165, 85,181, 45,223, 79, 66, 72,143, 87, 2,246, 44, 89,242,165, 11,161,145,112,180,251, 6,151,
- 47, 63,128,193, 80,250,147,207,202, 74,199,196,241,249, 16, 10,109,177,104,209, 12,167, 65,111,125,176,171,172,137,140,171, 78,
-179,236, 51,241,157, 59,119,208,172, 89, 51,108,219,182, 77, 40, 16, 8,112,233,210, 37,200,229,114,140, 24, 49, 2,254,254,254,
- 66,185, 92,142, 51,103,206, 32, 63, 63,255, 47,191, 80, 21, 53, 79, 31, 56, 53, 39, 39,246,196,151,169,130,195, 61,215,253,188,
- 29,163, 7,191,133, 58,166,216, 51, 14, 62,204,156, 94,125, 58,124, 37, 16,121,134, 40,108,253, 29,124,253,251, 65, 44, 81, 98,
-194, 39,179, 17,117,115,175, 67,113,193,141,241,172, 49,193, 19,192,135,149, 53,233,142, 1,236,226,141,174,129, 71,189, 34,234,
-106, 2,223,191,148, 18,241,253,245, 63,207,222, 84, 8, 70,107, 95,118, 12,238,221,187,135,152,152, 24, 8, 4, 2,104,181,218,
- 71, 38, 10,174,168,217,170, 85,171,247, 89,150,253, 10, 0,244,122,253, 70, 55, 55,183, 81, 43, 86,172,112, 18, 8,254,156, 41,
-202,156,185,202,206,205,207, 57,127,229,214,221, 41,239, 15,232,122,250,226,205, 4,251,150,253, 31,230, 94,251, 53,175,170,251,
-217,190,125,123, 7,137, 64,240,253,178,111,103, 17, 54,246, 24,164, 77,187, 66,168,244, 5,107, 76, 66, 73, 78, 33,180,113,169,
- 48,172, 93, 9,239,177,147,177,112,193,215,100,240,176,119,191,247,241,241,217, 29, 83, 33,131,247, 44, 70, 41,241,154,188, 38,
-175,249, 98,106,254,219,176,104,176, 8, 97,242, 13, 6,163, 72,229,233,110,124,243,141, 46,205, 35, 46,221,140, 82, 58,218, 49,
- 45,219, 52,247,187, 25,149, 24, 14, 19,107, 32,132,177,170, 95,135,135,135,199, 91, 51,102,204,104,174, 82,169,192,113, 28,236,
-236,236,144,145,145, 1,131,193,128,252,252,124,232, 10, 11, 96, 40,200,199,181,135,241,232,212,181, 43, 94,105,223,190,233, 1,
-163,241, 45, 0,219,170,211,100, 25, 1,117,106,213, 6, 3, 99,179,192, 25,244,216,225,237, 4,160, 52,107,245,118,124, 46, 8,
- 33, 96,245, 58, 28,104,211, 16, 82,165, 2, 45,166, 86, 59,101,160, 69, 82, 82, 82, 34,234,214,173,123,176,103,207,158,189,198,
-140, 25,195,164,166,166, 30,114,115,115,235,152,150,150,102,177,121,212, 53,154, 29, 49,124, 76, 43,111,103,123, 6,191,159, 59,
-140,118, 77, 94,135,141, 84,132,140, 28, 45, 24, 66, 16,115,255, 40, 88, 86,129,107,119, 30,162,189,191, 2,157,219,218,121, 20,
- 30,203, 30,131,234,155,203, 72, 78, 78, 14,210,211,211, 97, 52, 26, 97, 50,153, 48, 96,224, 64,108,218,184, 17, 69, 69, 69, 40,
- 41, 41,129, 94,175, 7,199,149,250,137,212,140, 66, 92,190,118, 8, 65,205, 27, 1, 53, 84,252, 22, 10, 97, 90,177,116,136,208,
-214, 6, 16, 75, 93, 12, 5, 5, 5, 80, 40, 20,208, 22,165,136,135,143, 46,207,108,137, 79,156, 56,129,240,240,112,104, 52, 26,
-224, 49,103, 4,136, 1,190,191,207,178, 95,244,218,179,199,245,220,158, 61,220,197,223,127, 79,148, 22, 20,172,181,230,216,182,
-109, 3, 6, 76,152,208,167,169, 92, 38, 71,226,195,165,104,210, 68,140,143,254,231,132,208,111, 50, 1, 0,147, 38,120, 32, 40,
-200, 9,249,185, 59,225,236,250, 25, 62,154,210,223,167,176,144,190, 3, 96, 99, 77,186,132,144,137, 91,182,108,137,234,209,163,
-135, 48, 34, 34, 2, 82,169, 20,114,185, 28, 50,153, 12,114,185, 28,169,169,169,208,235,245,216,177, 99,135,169,172, 9,177, 90,
-202,154, 1,123, 77,233,161, 62,120, 55,108, 99,103,119, 38,238, 90,255, 41, 29,238, 71, 92,186, 86,120,252,216,185, 57,166, 18,
- 89, 66,110,226, 31,159, 54,104,125,205,121,252,212, 89, 88,185,112, 6,238, 94, 58,149,237,230, 85,240, 29, 75,116, 27, 59, 86,
- 81,231,190,107,215, 89,194,113, 95, 12, 54,142, 27,245,166,221, 62,245,249,209,251,132,200, 76,203,190,241, 45, 98, 47,107,165,
-190,205,134, 53,106, 64,244,199,143, 31,151,119,233,210, 5, 90,173, 22, 0, 32, 16, 8,176,101,203, 22,206,100, 50,157,168, 42,
- 78,163,209,248, 85,120,120,184,186,184,184, 24,131, 7, 15,158, 52,115,230, 76,133, 72, 36, 2, 0,176,108,233,108, 85,230,204,
-213,220, 37, 63, 29,158,252,213,119, 39, 14,111,251, 70, 51,119,218,168,174, 67, 39,124,125, 2,192,161,170,116, 77, 38,211,166,
- 37,223, 76, 23, 72,237, 13, 32,173,123,192,144,174,197,131,245, 99,160,207,211,162,209,156,217, 0,196,208, 27, 4,216,215,127,
- 32, 4,142, 26,188,215,165,163,112,237,169,179,155, 0,244,175,233,190,242,240,240,252, 39,105, 13,192,165,108, 57, 19,165,207,
- 49, 39, 0,230, 44,187, 11, 0, 61, 0, 73,133, 99, 42,175, 87,220,183,242,122,197,229, 76,148,246,109,118, 1,192, 2,184, 12,
-160,214,253, 68, 25, 0, 32,132,148, 39,124, 42, 46, 3, 0,199,113,167, 99, 98,227,181, 93,131,131,212, 39, 46, 71, 71,244,124,
-253,149, 54, 93, 94,106,219, 46, 45, 43, 63,182,142,139, 74,113,254,210, 69, 41,199,113, 86,181,239,136, 68,162,144, 78,157, 58,
- 9,115,114,114, 96, 99, 99,131,140,140, 12, 36, 37, 37,193, 96, 48, 64,155,151, 11, 93,110, 14,180, 57,217, 48, 22,228, 34,230,
-202, 37, 52,246,114,151,150,117,130,183,138,202, 25, 42,243, 12,246,132, 97, 32, 83,217, 66,174, 82, 65, 32,168, 93,101, 10,141,
- 70,211,175, 73,147, 38, 23,221,221,221,191, 0, 0,189, 94, 63, 62, 52, 52, 52,147, 82,138, 79, 63,253, 84,165, 82,169,118,212,
-171, 87, 79,106, 73,199,214,145, 29,208,182,121, 67, 65,212,131, 27, 8,242,125, 19,245,213, 93, 16,147,148,135,140,188, 18,164,
-102, 23,161, 81,163,169,112,209,140,134, 93,157,177,184,113, 55, 1,234, 58,245, 25,129, 72,220,179, 38,205,212,212,212, 71,214,
-127,222,186, 21,197,197,197,104,216,176, 33,222,126,251,109,124,242,201, 39,120,235,173,183,160,209,104,208,185,161, 16,163,134,
- 13, 64,122,122,122,141,113,206, 89, 71, 69,243,183,170, 35,134,207,160, 17, 13, 95, 62,120, 43, 38, 38, 6, 81, 81,127,109, 89,
- 59,118,236, 24,242,242,242,202, 31,192,214,224,230,230, 54, 93,173, 86, 95, 87,171,213,183,212,106,245,129, 52,141,230,142,209,
-219,219,173, 99,255,254,196,111,208, 32, 65,130, 66, 65,238,123,122, 42, 45, 43, 1, 42, 21,250, 4, 5,117,146,228,230,252, 8,
-160,212, 68,142, 26,233,130,179,167,154,225,220,153, 64, 76,156,224, 13,134,200, 64, 24, 49,138,139,142,193,175,153,191,216,214,
-150,214,248,187, 84,214,161, 61,182, 89,179,102,194, 15, 62,248, 0, 82,169, 20,155, 54,109,194,234,213,171,177,120,241, 98, 68,
- 69, 69,161,110,221,186, 80,171,213,112,115,115, 19, 2,136, 45, 59,166, 70,236,125,152, 57, 58,227,157, 51, 14,190,138, 88,194,
-184,118,208,153,100,111,206,248, 54, 57,107,206,119,177,139,238,223,213,122,223,185,116, 42, 43,234,230,111, 92,220,149, 19,153,
-201,209,133,222,115,190,139, 93, 52,111,101, 82,118, 85, 90,167, 78,205, 96,127, 61,112,202, 80, 84, 88, 44,236,215,235,101,237,
-216,145,111, 55,114,180,105,188, 5,238, 61, 2,234,121,170,135,205,152,183, 92,255,222, 7,147, 13,235,127,248,145, 22, 20, 20,
- 32, 63, 63, 31,203,150, 45, 51,253,254,251,239, 73, 44,203, 78,174, 38, 68, 1, 0,152, 76, 38, 12, 28, 56, 80, 33,151,203,145,
-144,144, 80,158, 5, 5,128,148,140,172, 27,231,174,220,188, 51,101,236,192,224, 34,157, 78,119,248,100,216,109, 63,223,186, 30,
-132,208,122,213, 93,183,128,144,118,205, 90,180, 0,165,185, 96,132, 94, 72,252,233, 91,104, 83,179, 81,156,145, 13, 70,164,128,
- 17, 50, 24,168, 4,178, 22,109,240, 32,252, 42,220,148, 42, 8, 9,233,104,233,126,242,240,240,252, 59,169,201,139, 0,112, 33,
-132,236, 35,132,236,155, 62,125,122, 55, 0, 78,132,144,125, 40, 53, 65, 46,101,203, 18,243, 62,213,172,187, 84,212,169,116,108,
-197,101,231,233,211,167,191, 68, 8,217,215,161, 67,135, 97, 40, 53,114,181,198,162,219, 16,148,232, 67,167,127, 49,131, 81, 41,
- 37,182,126, 77,235, 59,252,126,228,116,196,185,139, 87,111,219,218,200,164,133, 69, 69,146,197, 43, 86,123,145, 98,173,181,157,
-188,155, 58, 59, 59,195, 96, 48,224,222,189,123, 72, 76, 76,132,193, 96,128,169,184, 8,186,220, 92,148,228,228,128, 43, 46,132,
-152,229,160,205,204,128,131, 76, 2,252, 57,194,176, 90, 40,165,229,102,170, 34,230,117, 66, 8,100, 42, 91, 72,108,149, 96,132,
-130,170, 36,170, 68,173, 86, 7, 6, 4, 4,252,114,252,248,241,182,157, 58,117,154, 83,175, 94, 61,187,212,212,212, 7,105,105,
-105, 47, 47, 92,184, 80,231,226,226,130,161, 67,135, 54, 54, 26,141,195, 45,105,137,101,186,230,117,221,124,225,229,214, 15, 26,
-167,118,200,202,215, 33, 35, 87,139,212,172, 98,108,223,245, 54,254, 56,248, 54,174,158, 25,134,123,151, 70, 33,171, 72, 5,153,
- 99, 55, 0,180,198, 10,186, 23, 47, 94,196,154, 53,107,202, 95, 43, 87,174, 68,118,118, 54,154, 53,107,134,132,132, 4, 28, 58,
-116, 8,169,169,169,112,113,113,193,213,171, 87,177,118,237, 90, 92,186,100,213,220,181,143, 80, 82, 82, 2,145,196,201,176,105,
-221, 16,108, 90, 55, 4, 44, 85, 24,204,219,106, 83,168,150, 97,152, 17, 41,253,251, 55, 79,177,183,247,107,209,162, 69,175, 65,
-131, 6,121,183,109,219,182,124,187,143,143,143,151, 80, 40, 76,213,104, 52,235, 53, 26, 77, 64,141, 98, 28,109,229,224,216, 20,
-122,221, 29, 0, 0, 33, 66, 16, 34,197, 75,175,220, 70,199,206,225, 48, 24, 37, 32,140, 20, 12,145,193,100,202,130,202,214, 13,
-148, 90,172, 72,220,251,208,161, 67, 88,179,102, 13,226,226,226,202,155, 71, 67, 66, 66, 38, 14, 30, 60,120, 55,203,178,216,183,
-111, 31,126,253,245, 87, 52,104,208, 0, 1, 1, 1, 48, 24, 12,213,246,193, 50,243,229,202,164,139, 91, 23, 31,124, 91,100,178,
- 15,144, 72,235, 54, 96, 10,108,250,141,239,234,162, 0,128,131, 49, 49, 5,110, 94, 5,243,139, 11,110, 62,116,240, 40,250,198,
- 82, 7,119, 74, 65,195,162,110, 93,218,182,235, 72, 94, 90,102,150,168, 85, 75,127,237,215,179,166,138,235,213,111,184, 96,198,
-167,227,220,146,242,101,121,175, 76, 58,120,103,247,161,203,133,239,140, 26, 99,122,119,204,132,146,195, 71,142,237,225, 56,174,
- 69,117, 35, 8, 57,142, 67, 74, 74, 10,110,222,188,137,184,184, 56,100,102,102, 34, 35, 35, 3, 5, 5, 5,229,205,138, 54, 5,
-249,251, 87,110,248,253,154, 66, 46,183,105,219,220,215,235, 82, 68,100,186, 66, 46,183,241,173,239,213,136,144,170, 39,160,230,
- 56,206,190,244, 30, 18, 20,220, 60,141,146,236, 2,104,115, 11,161,205, 46,132,206, 32, 64,137,142, 65,137,129,129,115,231, 30,
- 40, 44,210,162, 36, 59, 23, 28,165, 14,150,238, 39, 15, 15,207,127, 23, 74,105,200,252,249,243,231,213,180,189,194,187,190,210,
- 58, 8, 33,251, 40,165, 33,148,210,144, 50, 51, 5,243,231, 21,117,230,207,159, 63,143, 82, 26,114,254,252,249,159, 1, 20, 63,
- 78,172, 22,155,118, 50, 51,163, 10, 85, 46,126,111, 76,254,244,171, 3, 91,214, 45,119,205,206,206,137, 18,203,228, 37, 50,153,
-196,241,147, 79,103,217, 23, 21,231,189, 81,152,109,253,168,167,156,156,156,242,135,151, 88, 44, 6, 91, 92, 4, 86, 91,140,146,
-156, 44, 16,131, 14, 98,150,133,163,141, 13,188, 52,110,168,231, 86,199,162,158,128, 99, 73,242, 31, 7,112,120,216,235,143, 52,
- 11,114, 6, 61, 14,117,104, 12,137, 82, 1,185,189, 3, 58,253,122, 6, 0, 32, 22,139,129, 25,223, 88,212,173, 83,167,142,179,
- 70,163,217,187, 98,197, 10,113,102,102, 38,110,221,186,117, 45, 62, 62, 62,207,209,209,209, 86, 36, 18,113,209,209,209, 71,239,
-222,189, 27, 82,191,126,125, 80, 74,125, 44,233, 21,228, 42, 12, 6, 35,135,164,244, 7, 72, 76,185, 9, 59,165, 23, 40,227,137,
-180,236, 98, 16,184,194, 88,114,183,188, 47,153, 78,155,136, 34,157,117,243,246, 26, 12, 6, 24,141, 70, 24,141, 70,232,245,122,
-188,243,206, 59, 56,127,225, 2,182,254,122, 18, 9, 9, 9,104, 80,199, 6,111,191, 53, 16, 45, 91,182, 68, 88, 88,152, 85,154,
- 85,225,219,253,240, 45,185, 92,142,213,171, 87,195,198,198,166,252,115,107, 13,150, 90,173, 94,212,164, 73,147,134,119,139,138,
- 16,121,231, 14,218, 12, 28, 8, 0, 56,123,246,108,249, 62, 90,173, 22, 67,134, 12,145,196,197,197,189,123,231,206,157,119,213,
-106,245,226,148,148,148,143,170,211,220,191,255, 2,198,142,141, 68, 70, 70,105,102,119,251,207,126,229,219,238,199, 25,208,179,
- 79,105,203,149,189,189, 61, 22, 45,178,110,182, 7,150,101,177,118,237, 90,200,229,242,114,131, 37, 22,139, 59, 78,153, 50,229,
-141,170,246,247,243,243,171,234,227, 71,152, 50,208, 67,118,245,129,124,188, 93,195,250,254,118, 46, 45,144,105,186,218, 60, 34,
- 41,117,226,148,129, 30, 75, 23,239, 72, 44, 97,137,110, 35,107, 76,240, 20,202, 74, 54, 89, 19, 99,204,193,229,122,135, 6,239,
-111, 74, 77,207,251,124,194,152,161, 78,246, 14,110,133,235, 87,132,218, 51, 12,131,223,195,245, 57,205,188,157, 28,250,181, 91,
- 86, 56,246,127, 95, 70,232, 77, 15, 38, 34, 97,223, 93,160,202,110,137, 0, 74, 13, 86, 82, 82, 18, 50, 51, 51,241,240,225, 67,
-100,100,100,128, 16,130,140,140,140, 90,101, 40, 43, 67, 8,129, 62, 49, 9,169,123,126, 64,157, 33, 67,209,104,246,108,112,156,
- 8,218, 98, 19,118,118,126, 25,249,121, 90,232, 57, 2,251,192, 14,120,101,223, 25, 48,156, 9,184,112,254,177,207,199,195,195,
-243,239,135, 16,178,111,218,180,105,159, 89,185,251, 81, 0, 86,149,214,169,108,184,166, 77,155,246,153,249, 92,161,161,161, 90,
- 0,201,181,141,213,170,190, 51,249, 25,145,177, 78,117, 91,164, 20, 22,107,101, 14,142, 14,197,182, 74, 9,205,203,205, 19,220,
-185, 23, 85, 82,152,114,239,110, 45,206,119,251,214,173, 91,254, 73, 73, 73,120,248,224, 1,140,197, 69, 32,122, 29, 80,162, 69,
-247,206, 29, 33, 3, 32, 35,128,152, 51, 64, 32,144,160,176, 48, 31, 0,110, 91, 18,229,140,229,253,192, 31,109, 22,180,181,133,
- 68,169,128, 84,101, 91,190,205, 90,228,114,249,214,181,107,215,170,213,106, 53,150, 44, 89, 2,181, 90,221,164,123,247,238,197,
-193,193,193,114,103,103,103, 52,106,212, 8, 65, 65, 65, 56,113,226, 4, 8, 33, 49,150,244, 76,122, 73,248,237, 88,214, 51,191,
-240, 42, 46,133,111,134, 81,175, 71,125,223,233,208,153,156,161,112,125, 23, 90,195, 94, 24,114, 79, 2, 0, 36,170,174, 72, 75,
-203, 4, 64,106,236, 68, 88,217,220, 80, 74,113,253,250,117,108,220,115, 22, 94, 77,187, 34, 53,251, 16,110,222, 12,131,155,195,
- 17,248,250, 53,131,177,194,125,178,132,181,198,201,218, 7, 48, 33,100,200,244,233,211,145, 39,151, 3,125,250, 64, 28, 27, 11,
-131,193,128,118,237,218,161,117,235,214, 0,128,118,237,218, 65, 32, 16,160, 97,195,134,112,116,116,196,238,221,187,135, 0,168,
-210, 96, 81, 66,174,114,108, 86, 19,111,111,239,114,131,181,233,167, 12, 68,132,117, 7,129, 4,203, 87,254,249, 35,241,242,242,
- 66,106,106, 28, 8,177,216, 41,243, 64,159, 62,125,122, 59, 56, 56, 96,228,200,145,144,203,229,120,253,245,215,161,213,106, 7,
- 1,192,252,249,243, 49,125,250,116, 0,192,140, 25, 51, 48,115,230, 76, 20, 23, 23, 87, 91,162, 98,205,215, 45, 52, 5, 90,110,
-148, 90,173,121,189,155,115,253, 22, 47,189,218, 29, 13,124, 95,198, 75,175, 38, 0,192, 60,103,209,253,129, 11, 62,247,223, 83,
-223,211,113,195,249, 95,143,126,213,169, 87,183, 47,102, 77,114,156, 51, 99,121,182,197, 47, 44,185,247,191, 47,184, 35,234,187,
-116,249, 26,211,146, 25,159, 77,145, 62,200, 52,100, 39,231,112,133, 10,169,208,214,199, 13,202,137,159,204,137, 75, 78,190,247,
- 49, 18,142, 88, 28, 57,201,178, 44,226,226,226,160,211,233,192,178, 44,116, 58, 29, 10, 11, 11,145,152,152, 88,254,243,213, 42,
- 84, 61, 39,140,236,219,178, 72,171, 45,190,116, 35,250,225, 23,147,134,182, 47,210,106,139,163,239, 63,140,162,116, 89,149,117,
-198, 8, 33,185,197, 5,133,142,250, 2, 35,114,175, 69,193,249,165,186,208,155, 8,116, 38, 1,178, 51, 11, 96, 96, 1, 35, 35,
-130,199,128,119, 96, 34, 66,228,103,164,130, 33,132,175,135,197,195,195, 83, 45,102, 35, 20, 26, 26,106,117,247,161,218,106, 3,
- 64,104,104,232,173,208,208,208, 39, 58,151,217, 96,117,173,208,222,217,181,242, 78,132, 16, 18,208,194,203,125,222,103,111,104,
-140, 70,125,147,194,194, 66, 86, 40,148, 8, 61,237,180,169,149,247,173, 9,163,209,184,239,204,153, 51,253, 59,119,238, 44,141,
-190,113, 13,186,188, 60,232,242,114, 33,230, 76,112,148, 5,129, 49,234, 65,244, 58,184, 55,230,160,205,151,225,194,149,187, 70,
-163,209,184,175, 38, 77, 10, 74, 57, 83,169,113, 96, 24,193, 35, 77,133, 82, 91, 37, 36, 74, 37,164, 74,219, 42,155, 16,171,195,
-205,205,205,166, 87,175, 94, 47,183,106,213, 10,148, 82, 44, 92,184, 16,122,189, 94, 98,206, 20, 25, 12, 6, 20, 20, 20, 96,215,
-174, 93,248,233,167,159,206,217,217,217, 89, 28, 90,206,153,116, 7, 79,156,187,214,123,216,235, 47, 73,254, 56,185, 30, 70,157,
- 9,133, 58,123, 20,149,232, 81,160, 21, 65, 47,125, 21,132,156, 1, 35,144,162, 67,128, 15,142,159,141, 46, 97,141,134, 42, 59,
- 15,255,229, 30,148,153, 33, 66, 8,116, 58, 29,210,211, 51,144, 93,112, 2, 40, 72,130,179,161, 0,133,247, 99, 16,240,206,112,
-232,245,122,139, 90, 95,142, 38,198,105, 67, 32,252,105, 54, 3,145,196,201,224,219,253,112,181,165, 34,148, 74,101,121, 31, 29,
-107,200,207,207,199,230,205,155,209,174, 93, 59, 4, 7, 7, 35, 41, 41, 9,177,177,177,232,221,251,207, 86,182,107,215,174, 33,
- 34, 34, 2, 62, 62, 53, 39, 5,243,243,233,129,236,236,123, 3,251,245,235, 39,190,120,241, 34, 40,165,240,245,181,131,202, 86,
- 9,194, 72,209,180,169, 11,128,187, 32,132,160,107,215,174, 48, 24,146, 77, 69, 69, 56, 80,147,102,120,120,120,159,192,192,192,
- 6, 70,163, 49,202,223,223, 95,152,154,154,138, 1, 3, 6, 96,251,246,237, 0,128,105,211,166, 97,218,180,105,143, 28, 83, 88,
- 88, 88, 82,157, 94,203, 54,141, 62,102,169, 83,176, 68, 90,183,129,157, 75, 11, 52,240,125, 25, 0,240, 74,200, 40, 52,104,232,
-137,188,140,235, 13,244,186, 7,175, 11, 72,150,195,150,139, 73,145,157,109,252, 71,102, 38,156,140, 6, 96,177,112, 47,165,148,
- 18, 66,210, 30,138, 84,191,236,252,109,223,251,125,251,190, 38, 52,178,156,201,223, 75,104,183,125,247,254,244,164, 7, 15,151,
-225,225,145, 91, 21,247,175, 78,139,101, 89, 54, 55, 55, 23, 74,165, 18,177,177,177,186,190,125,251, 74,181, 90, 45,162,163,163,
-203, 13,150,171,179,163, 95,199,214,254, 77,230, 46,249,233,176, 66, 42,149,190,218, 53,168,105,100,244,131, 68, 74, 73,124,181,
-186,148, 94,140,190,125,187,143,139,179, 23, 82, 78,158,135,162, 83, 47,232,116, 4, 37, 6, 14,122, 22, 48, 9,196,176,107,217,
- 6,114,239,166,224, 40,112,251,198, 53,152, 40, 61,103,233,218,121,120,120,254,181,212,232, 69,128,210, 12, 86,251,246,237,183,
- 1,127,102,153,204,203, 0,116, 0,106,234, 19,157, 81,209, 68,153,155, 13,171, 59, 79, 37,221, 90, 35, 44, 59,201, 41,212, 48,
-178,204,217,217,217,181,105,227,102,222,235,126, 88, 15,131, 46, 15,177,145, 27, 80, 84,144,134, 47,231, 93,240,241,240,240, 8,
- 78, 76, 76, 60,101,205,201, 18, 19, 19,183,239,222,189,251,163,150,205,154,181,170,231,225,129,235,241,247, 33,166, 44,196, 44,
- 11,198,160,131,144,213,195,195,143, 3,195, 40,144,154, 90,128,181,135,142,221, 76, 76, 76,220, 94,147, 38, 75, 4,240,236,251,
- 38, 6,191,210, 7,212,104,192,145,206,126,144, 41,149,144,218,219,163,195,174,147,165, 37, 27, 76, 70,196,207,159, 10,177, 66,
- 9,199,118, 85,254,204, 30, 33, 45, 45,173,184, 97,195,134, 97,119,238,220,105,221,184,113, 99,204,154, 53, 11, 9, 9, 9,160,
-148, 34, 61, 61,189, 36, 35, 35, 35, 41, 43, 43, 43,158, 16,178, 39, 57, 57,121,157, 53,149,194,211,125, 5, 27,255, 56,122,236,
-227,192, 0,191, 70,221,131,103, 98,223,190,175,144,155,159,143, 34,157, 16,133, 90, 3,138, 74, 40, 52,182, 62,104,219,162, 21,
- 50,178,244,136,190, 21,158,152, 41,118,252,222,154,251,106,134, 16,130,107,215,174,161,174, 35, 65,100, 84, 4,156, 75,178,209,
-216, 94,137, 86,157, 58, 35, 46, 46, 14,128,229,204,148,201, 4,225,196,201,127,142, 22,180,183,183, 71, 94, 94,222, 35,199,217,
-216,216, 64,163,209, 32, 63, 63, 31, 59,119,238, 4,181,238,161,104,212,235,245,104,210,164, 9,174, 92,185,130,163, 71,143,226,
-165,151, 94, 66,151, 46, 93,112,242,228, 73,132,133,133, 33, 34, 34, 2,132, 16, 56, 57, 57,153,179,109,213,166,220, 46, 95,190,
-182, 67,169, 36,211, 71,142,252,192,127,232,208,161,216,181,107, 27, 70,141,108, 12,194, 72, 65,136, 20,175,245,109,130,217,115,
-194,208,182,109, 87, 56, 59,139,113,244,232,173, 56,161,208,238, 39, 75, 65, 82, 74, 87, 44, 88,176, 64, 40,147,201,160,215,235,
- 81, 88, 88,136,172,172,210,114, 84, 85,101,176,180, 90,109,181,133,213,110, 93,189,187, 40, 39,159,230, 48,197,225,175,103, 26,
-175,182,120,233,213, 68,188, 18, 50, 18,127,236,219,128,227,135,143,194, 89,116, 63,142,149, 23, 30,204,136,203, 44, 72, 46,244,
- 93,235, 23,244,158, 32,165,232,240,154,241,253, 28, 4, 30,106,110,199,180, 85,121,185,150,226,205,142,220,188,119, 47,197,107,
-157,218,181,241,105,238,165,145,100,103,165, 99,247,111, 7,111, 25,238,239,218,135,210,102, 65,107, 82,145,179,151, 47, 95,254,
- 21, 0,112, 28,183,113,201,146, 37,239,125,252,241,199, 46, 73, 73, 73,229, 6, 43, 61, 51,251,120,135, 62, 19,217,172,220, 60,
-253,143, 75, 62, 25, 32,151, 73, 37, 95,204,255,241,164, 81,128,139,213,137, 10,133,194,225,159,173,218,146,177,115,199, 6,129,
-139, 76,140,179,159,206, 64,236,177, 19, 48, 16, 49, 94, 61,114, 9,122, 3,139,252,244, 44, 28, 31, 57, 14, 14,106, 71, 28,200,
-138,102,243, 10,242, 45,246,103,228,225,225,249,119, 98,193,139,100, 84, 48, 68,217, 0,226, 67, 67, 67, 51, 43,100,151, 50, 0,
- 92, 3,208,178,108,191,140, 74,199,101, 0,184, 2,160,117, 5,157,140,178,243,134, 84, 90,214, 87,218,231,218,227, 92,143, 85,
- 77,132,153,153,153,233,151,195,110,226,220, 31,171, 97, 50,234,144,151, 93, 90,251, 51, 57,173, 4, 42,149,234, 66,117,199, 85,
-158,109,155, 82, 74,213,106,245, 27, 75,150, 46,189,248,254,240, 97,117,186,188,252, 50, 30,220,184, 14, 93,118, 38, 4, 44, 11,
- 1, 17,161, 48, 83,134,180,212,124,132,238, 61,152,174, 45, 41,121,163,242, 55,239,170,102,240, 54,119,114,167,132, 64,102,167,
-130, 84,161,128,212, 78,245,103,198,138, 16, 72,148,182, 16, 41,148, 16,136, 43,142,216,172, 94,179,184,184,248,205, 49, 99,198,
- 92, 63,112,224,128,195,224,193,131,241,218,107,175, 69,228,230,230,118,203,206,182,220,124, 83,229,181,239,216,193, 58, 55,127,
-173,223,119,171,215,157, 31, 49, 98,132,227,107,253,190, 67, 68,228, 45,228, 22,185, 2, 0, 52,206, 10,180,109, 60, 21,233, 89,
- 58, 28, 62,184, 47,135, 51,149,188, 73,111,110, 51, 86,167, 73, 41,165,206,206,206,143,100,229, 4, 2, 1, 78,158, 60,137, 15,
- 63,252, 16,206,182, 39, 81, 16, 31,139,230,157,131,241,202,208,225, 24, 53,106, 20, 4, 2, 1,156,156,156,128, 10, 15, 93, 75,
- 51,162,231,229,229,161, 94,189,122, 56,178,174,113, 51,125, 73,186,184,149, 35, 64, 96,103,248,227,120,239, 91,167, 79,159, 46,
- 4,176,206,215,215,247,145, 34,163, 85,105, 18, 66, 62,159, 55,111,222,234,142, 29, 59,202,149, 74, 37,124,125,125,113,238,220,
- 57,156, 59,119, 14,103,206,148,246,143,115,114,114,130,163,163, 35,114,115,115,145,144,144,160, 37,132,124, 94,237,253,164,148,
-107,221,186,117,255, 63,254,216,115,169,111,223, 55,156,123,246,108,143, 58,117, 10, 96, 50,101,130, 48, 98, 72,101,174, 88,183,
-110, 62,210,211,178,113,254,194,133,236,194, 66,225,155, 97, 97,143, 78, 65, 84, 77,156,134, 67,135, 14, 65, 38,147, 97,215,174,
- 93, 38, 55, 55, 55,161,189,189, 61,128,170, 51, 88, 37, 37, 37,210, 74,199,151,107,190,247,201,141, 36, 0,115,166, 12,244,248,
-246,252,173,180,254, 0,182, 54,104,232,129,227,135,143,226,204,241,243,211,218,249,115,203,251, 12,105, 51, 91,246,210,160,169,
-126,129,239, 9,148, 42, 53, 54,237,222, 37,136, 12, 95,255,117, 73,209, 77,111, 0, 83, 45,252,140, 40, 0, 20,166,167, 77, 15,
- 93,188,114, 99,232,172,175,228, 11,151,173, 74,214,102,166,126,134,210,161,149,180,226,126,213,197, 25, 27, 27,187, 22, 64,121,
-121, 12,141, 70,179,121,254,252,249,167,135, 13, 27,230, 98,206, 80,166,223,250,237, 2,128, 11,254,221,222,253,178, 67,235,102,
-141,191, 94,182,229,240,195,132,180, 45,185,145,165, 53,176,170,138,243,194,133, 11, 57, 65, 65, 65, 99,166,126, 58,115,253,172,
-217, 51, 72,147,201,211, 16,117,238, 10,116, 90, 3, 12, 84, 0, 35, 8,194,231, 46,134,173,139, 10,103,105, 54,213, 9,152,209,
- 49,149, 58,249, 91,250,253,124, 28,120, 77, 94,147,215,124, 49, 53, 45,112,165,138,207,170,154, 73,163,242,126,150,214,159, 25,
- 86, 25, 44,119,119,247, 46,175,188,220, 14, 29, 95,249, 0, 6, 93, 46, 98,111,253,136,194,130, 52,184,215,145, 34,246, 97,126,
-123, 0,167,172, 61, 97, 74, 74,202, 67,181, 90,221,238,235,165,203,119,191,218,166,117, 83, 95,119,181,212,190, 94, 93, 40, 92,
-221,144,153,145,129, 75,225, 81,198, 85,135,143,223,212,150,148, 88, 53, 85, 14,199,113,148, 82, 10,177, 88, 12, 42, 16,192,111,
-226,167, 96, 24,166,210,104, 65, 2, 85, 80, 39, 48, 66, 17,140, 86,246, 25, 74, 78, 78, 78,116,119,119,127,115,226,196,137,199,
- 54,110,220,200,116,237,218, 53, 96,239,222,189,143, 61,167, 29, 0,100,222,216, 27,237,214,252,245,224,229, 43, 86,237,108, 21,
-212,174,110,189,250,245,164, 29, 61,237, 96, 48,178, 72, 75,207,194,169,243,145,186,232,200,107, 9,156, 65, 63, 48, 61,178,250,
- 42,238, 0, 96, 52, 26, 31,106, 52, 26,183,153, 51,103,194,100, 50,129,101, 89,152, 76, 38,100,102,102, 34, 34, 34, 2,129,237,
-218,163,201,187,239, 33, 59, 59, 27, 63,252,240, 3, 60, 60, 60,208,187,119,111, 20, 20, 20,224,244,233,211,213,222, 87,161, 16,
-166,233,159, 15, 17, 2,128, 72, 4,211,103, 33, 33, 39,155, 53,107,214,233,181,150,233,226, 15, 38,150,102,182,190,153, 63, 68,
-124,242,228,201, 29, 82,169,116,109, 92, 92, 92,141, 53,208,124,124,124, 36, 37, 37, 37, 1,148, 82, 97,126,126,254, 82,157, 78,
- 55, 98,202,148, 41,234, 5, 11, 22,160, 69,139, 22,200,204,204,132,163,163, 35,212,106, 53, 10, 11, 11, 17, 23, 23,199, 26, 12,
-134, 53, 44,203,206, 78, 75, 75,203,168, 73,251,202,149, 43,247, 91,181,106,213, 62, 45,117,245,238, 15,198,246,240, 53, 26,131,
- 36, 42,187,206,160,212,132,220,156, 4, 16,122,221,176,231,215, 99, 49,185,185,130, 55,194,194,194,162,107,210, 50,195, 48,204,
-216,223,127,255, 29,230,169,114,146,147,147, 99, 25,166,116,144, 92, 85, 25, 44,107, 88,188, 35,177, 4,192,207,223,254,175,253,
-228,188,140,235,141,156, 69,247,227,218,249,115,203, 23,239, 72, 44,249,230,125,135,185, 73, 25, 39,163,146, 11, 15,175,221,180,
-123,151, 96,248,235,111,178,106,101,244, 52,103, 79,236,232,246, 90,205,186,148, 82,218,178,101, 75, 47,134,201,174,159,158,117,
- 55,108,212,232,247, 7,217,137,181, 7, 90,184,103, 54, 52,185,249,201, 34, 35, 35,227,203,118,179,126,168, 39,128,228,228,228,
- 40,141, 70,211,101,209,162, 69,135, 81, 41, 53,158,158,153,125,188,125,200, 4,154,155,155,119, 53, 61,242,183, 26,171,184, 3,
- 64, 88, 88,216,143, 65, 65, 65,120,103,216,168,239, 71,191, 59, 70,224, 63,233, 19, 36,158, 56, 6,152,140, 72, 57,115, 10, 54,
-182, 44,246,101,198,179,197, 2,102, 76, 88, 88, 24, 95,197,157,135,135,231, 95, 3,177,246,127,175,143,183,199, 97,239,250,238,
- 61,188,235,107, 0, 0,177,247,147, 17,123, 63,233, 72, 76,108, 98, 21,229, 16,203,196,107,112,184, 21, 39,123, 38,101,165, 24,
-168, 21,147, 61, 87,214,244,247,247,143, 96, 24, 70, 99,213, 69,148,193,178,108,226,173, 91,183,130,172,137, 83,163,209, 12,246,
-244,244,156,159,156,156,188, 59, 33, 33,225,127,214,158,163,198,107, 47,155,236,153, 17,136, 67, 40,165, 45, 0, 16,194, 48, 22,
- 39,123,174,168,233,238,238,222, 92, 46,151,175, 21, 10,133, 94, 40, 75,169,154,111,153,193, 96, 16,228,229,229,201,244,122,189,
- 0, 0, 17,139,197, 38,165, 82, 89, 34, 18,137, 76, 44,203, 62, 52, 26,141,239, 39, 37, 37,221,176, 20,167, 25, 63, 63, 63, 69,
- 72,208,237, 66,243, 20, 58,211, 63, 31,130,208, 13,180,218, 38,229,138,154,247,238,221,107,228,224,224,240, 22, 33,100, 0,165,
-180,113, 65, 65,129,238,171,175,190,186,122,234,212,169,124, 47, 47,175,158,157, 59,119, 38,215,175, 95, 71,124,124, 60, 45, 44,
- 44,220,201, 48,204,231,137,137,137,177,181,186,159,132, 48, 29, 58, 4,188,109,171, 68, 31,142,162, 37, 64, 9, 33,228, 70, 97,
- 33, 57,160, 86,215,223,178, 99,199,142, 42, 93,181, 53,215, 30, 24, 24,184,191,176,176,176,119,116,116,213,254,140, 16, 2, 74,
-255,188, 23, 53,105,126,251,121,243,207,219, 7,119,122,243,220,169, 51,123, 62,249,250,230,156,138,219, 38,188,238, 56,106,200,
-248, 15, 23,108,253,110,217, 39, 43,247,100, 63, 50, 39, 95,117,154,129,129,129, 13, 0,188, 77, 41,109, 70, 8,241,229, 56,200,
- 8,161,217,132,144, 72,142,227,174,113, 28,247,251,245,235,215,171, 28,249,242,119,127,163,173, 56,217, 51, 97, 89,123,150, 16,
-171, 38,123,254,167,124,243,230, 53,121, 77, 94,147,167, 50, 86, 87,224, 54, 27, 41, 95, 95, 95,122,239,222,189, 71, 30, 42,143,
- 67,153,129,218,134, 26,170,180, 91,195,205,155, 55, 91, 61,201,241,150, 72, 78, 78,254, 25,192,207, 79, 83,179,204, 64,253, 88,
-246,122, 44,202, 12, 82, 91,139, 59, 62, 5, 34, 35, 35,139,190, 28, 77,202, 51, 91, 66, 33,170, 52,128, 85,209,163, 71,143, 7,
- 6,131,225, 40,128, 68, 0,246, 0,178,141, 70,227,161,140,140,140,180, 58,117,234, 4, 61,120,240,224, 75, 0,224, 56,110, 78,
-106,106,234, 99,213,145, 40,235, 3,183,181,236,245, 84, 9, 15, 15,239,163,209,104, 34,156,156,156,124, 74, 74, 74, 36, 37, 37,
- 37,162,138,191,251,114,185,188,198, 44, 91, 69,236, 84,216, 36, 32, 89, 78, 14, 42,242,151, 76,141,179, 59,118,105,139,110, 54,
-114,118,199,174, 90,196, 22, 23, 16, 16,176,153, 97,152,250, 28,199,185, 1, 80, 81,138, 76, 74,105, 38,203,178,137, 55,110,220,
-168,245,176,226,103, 69,153,129,122,234,163,126,120,120,120,120, 94, 84,106, 61,197, 73,116,116,244, 19, 25, 43,158,127, 38,115,
-214, 81,209,227, 28, 23, 31, 31,175, 3,112,190,236,245, 8,101,134,170,239, 19,134,246,204, 73, 78, 78,126, 42, 38,190,172, 79,
-214,255,218,188,252,215,109,101,165, 25, 62,121,201, 66,179, 96,101,174, 94,189,250, 16,128,197,166,116, 30, 30, 30, 30,158,191,
-151,218,205, 27,195,195,195,195,195,195,195,195,195, 99, 17, 2,160,202, 18,215,181,105, 91, 37,196,226, 20, 36,181,214,231, 53,
-121, 77, 94,147,215,228, 53,121, 77, 94,243,223,167,105, 73,251,223,210,183,203,234, 78,238,143, 37,254, 15,233, 88,199,107,242,
-154,188, 38,175,201,107,242,154,188,230,243,213,252,183,193, 55, 17,242,240,240,240,240,240,240,240, 60,101,120,131,197,195,195,
-195,195,195,195,195,243,148,225, 13, 22, 15, 15, 15, 15, 15, 15, 15,207, 83,134, 55, 88, 60, 60, 60, 60, 60, 60, 60, 60, 79, 25,
-222, 96,241,240,240,240,240,240,240,240, 60,101,158,233, 40, 66, 30, 30, 30, 30, 30, 30, 30,158,255, 34,124, 6,139,135,135,135,
-135,135,135,135,231, 41,195, 0, 0, 33,132, 86,124,231,225,225,225,225,225,225,225,249, 59,249,183,121, 17, 62,131,197,195,195,
-195,195,195,195,195,243,148,225, 13, 22, 15, 15, 15, 15, 15, 15, 15,207, 83,198,108,176,186,150,165,228,186, 62,207, 96,120,120,
-120,120,120,120,120,254,179,252,171,188, 72,249, 40, 66, 66, 8,165,148,146,231, 28, 15, 15, 15, 15, 15, 15, 15,207,127,148,127,
-147, 23,225,203, 52,240,240,240,240,240,240,240,240, 60,101,158,105, 31, 44, 66,136, 63,175,201,107,242,154,188, 38,175,201,107,
-242,154,188,230,127, 13,190,147, 59, 15, 15, 15, 15, 15, 15, 15,207, 83,134, 55, 88, 60, 60, 60, 60, 60, 60, 60, 60, 79, 25,222,
- 96,241,240,240,240,240,240,240,240, 60,101,120,131,197,195,195,195,195,195,195,195,243,148,225, 13, 22, 15, 15, 15, 15, 15, 15,
- 15,207, 83,134, 0,168,114, 36, 0,165,244,166,213, 34,143, 49,154,192,146, 62,175,201,107,242,154,188, 38,175,201,107,242,154,
-255, 62, 77, 75,218,181,241, 31, 47, 50,207,180, 14, 22, 33,196,255,105,223, 40, 94,147,215,228, 53,121, 77, 94,147,215,228, 53,
-255,125,154,255, 54,248, 38, 66, 30, 30, 30, 30, 30, 30, 30,158,167, 12,111,176, 30, 3, 66,200, 59,132,144, 67,132,144,155,132,
-144,195,132,144,119,158, 64, 75, 78, 8,153, 86, 65,239, 32, 33,228, 19, 66,136,244,105,198,204,243,116, 33,132, 8,158,119, 12,
- 60, 60, 21,209,104, 52,141,252,252,252,194, 53, 26, 77,163,231, 29, 11, 15, 15, 15, 32,172,110,131,143,143,207,121,134, 97, 26,
- 48, 76,169, 7, 35,228,207,169,129,204,203,149,223, 41,165,113,145,145,145, 29,170,211,108,208,160, 65,185, 38,195, 48, 32,132,
-128, 97, 24, 24,141, 70, 91,129, 64, 80, 80,149, 38,203,178,137,119,239,222, 13,122,130,107,124,170, 16, 66, 54, 59, 56, 56, 24,
- 87,173, 90,245, 93,171, 86,173, 26,102,103,103, 23,141, 25, 51,230, 85, 66, 72,119, 74,233,176, 90,106,249, 19, 66,126,106,221,
-186,245,238, 9, 19, 38,236,240,243,243,179, 45, 42, 42,146,110,223,190,189,206,154, 53,107,206, 16, 66, 70, 81, 74, 35,159,213,
-181,240,212, 30,181, 90,221,138, 16,178,210,215,215, 55, 72,163,209, 92, 1, 48, 62, 57, 57,249,218,243,142,235,191, 4, 33,228,
- 61,137, 68, 91,165,206,121, 0, 0, 32, 0, 73, 68, 65, 84,210,211,215,215,183,141, 78,167,203,137,139,139,187,204,178,236, 87,
-148,210,212,167,164,111, 7,224, 43,169, 84,218,214,199,199,199, 51, 58, 58, 58,193, 96, 48, 92, 2, 48,155, 82,154,247, 52,206,
-241,180,209,104, 52,141,218,182,109,123,118,222,188,121, 78,211,167, 79, 63,171,209,104, 58, 37, 39, 39, 71, 61,239,184,120, 94,
-124,188,188,188,236,139,138,138,214, 51, 12,211, 74, 38,147,213,177,181,181,133, 82,169, 76,149, 74,165, 87,109,108,108,222,221,
-191,127,127,238,243,142,241,159, 74,181, 6, 75, 32, 16,120, 92,190,124,217,213,214,214, 22, 44,203,130,227, 56,112, 28, 7, 74,
-105,249,187, 25, 74, 41, 88,150, 69,183,110,221, 12, 53,158, 76, 40,244, 12, 15, 15,119, 85, 42,149,229,159, 25, 12, 6,180,104,
-209,130,139,136,136,112,149,201,100,143,236,175,215,235, 17, 24, 24,248,194, 76,150, 72, 8, 25,234,228,228,164,127,240,224, 97,
-251, 18,157,161,195,184,169,115,190,122,235,181, 96,187, 11, 23, 46, 48,125,251,246, 21, 17, 66,222,161,148,254,100,165,150,156,
- 16,242,195, 23, 95,124, 49, 95, 40,182,113,221,121,224,188,112,197,218,173, 9,254, 77,235,147,201, 19,199,217, 76,154, 52,233,
-114,147, 38, 77,126, 36,132,116,166,148,234,158,245,181,241, 88,134, 16, 34,244,244,244,252, 45, 52, 52,212, 61, 53, 37, 5,139,
-151, 44,105, 7, 96, 21,128,118,207, 59,182,255, 10,132,144,105,179,102,205, 10, 29, 50,100, 8, 76, 38, 19,180, 90,173, 38, 38,
- 38,166,217, 23, 95,124,241, 58, 33,164, 13,165, 52,246, 9,245, 93,124,125,125,239, 76,158, 60,217,177, 77,155, 54, 96, 24, 6,
-185,185,185,154,179,103,207,182,251,225,135, 31,222, 33,132, 52,161,148,102, 60,129, 62,227,228,228, 52, 9, 64, 55,142,227,164,
- 0, 46,229,228,228,204,165,148,214,248,191,211, 18, 14, 14, 14, 91,190,253,246, 91, 39,169, 84,138, 13, 27, 54, 56, 13, 26, 52,
-232,140, 70,163,233,204,155, 44,158,154,112,118,118,126,175,160,160,224, 59, 27, 27, 27,177,189,189, 61,228,114, 57,196, 98, 49,
- 36, 18,137,151,131,131,131,151, 82,169,236, 61,120,240,224,241, 63,255,252,243,250,231, 29,235, 63,145,106, 13, 22,195, 48,144,
-203,229,216,190,125, 59, 4, 2, 1,196, 98, 49, 68, 34, 17, 68, 34,209, 35,203,230,117, 79, 79, 79,139, 39, 51,103,165,246,238,
-221, 11, 59, 59, 59,168, 84, 42, 52,109,218, 20,132, 16, 72,165, 82, 28, 61,122,244, 17,221,160,160,160, 71, 50,103,127, 7, 3,
-187, 19, 10, 0, 59,150, 54, 41, 93,159,124, 7,230,245, 62, 93,148,232, 59,100,222,155,197, 58, 99, 23, 74,137, 54, 53,199,152,
- 61,123,225,119,145, 1,205,154,146, 95,126,249, 37,208,217,217,121, 48, 0,171, 12, 22,128, 15,219,180,105,179,215, 4,137,219,
-168, 17, 35, 71,140,100,136,233,141,145, 31,205, 58, 27, 17,147,179,222,175,213,214,140,140,196,177, 43, 86,172,136, 26, 55,110,
-220, 36, 0, 11,172,141,191,117,235,214, 15, 57,142,243, 4, 0,129, 64,144, 41,151,203,213, 39, 79,158, 52,213,226, 22, 60, 19,
- 8, 33, 26, 0, 11, 1, 24, 1,124, 67, 41,189, 83, 97, 91, 35,177, 88,188,192, 96, 48,100, 3,152, 65, 41, 77,120, 94,113,214,
-132,187,187,123,147, 97,195,134, 57,103,101,100, 96,241,146, 37,230,143,131, 8, 33, 2, 74, 41,251,119,198, 18, 24, 24,216, 64,
- 38,147, 45, 4,208, 74,167,211,185, 3,128, 92, 46, 79,162,148,238,209,106,181,159,135,135,135,107, 31, 71,151, 16,226, 9,160,
- 25, 74, 71, 24, 87, 5, 93,176, 96, 65,212,212,169, 83,227,254,110, 77, 66, 72, 61, 55, 55,183,121, 3, 7, 14,196,254,253,251,
-113,224,192, 1,163, 76, 38, 19,142, 24, 49,130,140, 31, 63,222, 97,242,228,201,189, 1, 44,179, 54,174,106,232, 61,107,214, 44,
-199,166, 77,155, 98,231,206,157,184,118,237,154,182, 81,163, 70,242,224,224, 96, 8, 4, 2,199,207, 63,255,188, 23,128,141,181,
- 17, 44,107,238,159, 4,160,155, 64, 32,232, 60, 98,196, 8,211,196,137, 19, 69, 12,195, 24,151, 46, 93,234,178,126,253,250,183,
-156,157,157, 91,101,102,102, 22, 62,110,208, 57, 57, 57,115,231,204,153,179,105,229,202,149,182,177,177,177,152, 53,107,150,243,
-132, 9, 19, 78,105, 52,154, 96,222,100, 85,143, 64, 32, 48,112, 28, 39, 2, 32,163,148,234, 44,173, 63,231,112,159, 42, 78, 78,
- 78, 31,228,228,228,172,210,104, 52,112,113,113, 41,127,214,114, 28,135,162,162, 34,104,181, 90, 52,104,208, 64,220,180,105,211,
-117, 19, 38, 76, 16,173, 92,185,114,245,115, 14,249, 31,135,144, 16, 18, 76, 41, 61,101,254,192,188, 78, 8, 1,199,113, 16,137,
- 68, 16, 8, 4, 16, 10,133,229,198,167,226,178,249, 85,149, 17,170, 60,194,128, 97, 24, 82, 80, 80, 80,110,174,236,236,236,202,
- 51, 97, 70,163,241, 47,154, 44,203,130, 97, 24, 90,147,230,211,160,162,230,142,165, 77,176, 49,108,234,219, 27,195, 74,215,123,
- 13, 41,125,223, 24, 6, 28,189, 52,118,225,130,213, 29, 61, 63,156,187, 33, 52, 43, 43, 55,221,207,195,197, 52,120, 72,112, 93,
- 73,102, 90,166, 83,253,250, 33, 0,210,107, 17,103,167,177, 99,199,238,220,121,226,158, 66, 42,149, 72, 4, 12, 4,141,188, 27,
-136,220, 85, 13, 29, 93, 94,109, 35,137,143,141, 61,243,206, 59,239,140, 29, 55,110,156, 19,202, 12,150, 53,215, 78, 41, 85, 31,
- 57,114, 4, 66,161, 16,221,187,119,119, 64,169,137,174,214, 96, 61,235,251, 89,129, 47,210,210,210,222, 46, 41, 41, 65, 80, 80,
-208,107,132,144,110,148,210,171,132,144,230,253,250,245, 59,179, 99,199, 14,219,136,136, 8,180,107,215, 78, 14, 96,208,115,140,
-243, 47,104, 52,154, 35, 0, 94, 17, 8, 4,208,151,148,232, 23, 46, 90, 84,113,115, 88, 69,115,245,119,196, 25, 16, 16,208,196,
-198,198,230,252,162, 69,139, 84,126,126,126, 68, 36, 18,193,100, 50, 33, 58, 58,218,115,243,230,205,239, 95,185,114,165, 87, 96,
- 96,160, 95,120,120,184,209, 90,205, 10, 52, 59,115,230, 76,145,183,183,119,149,134,177,184,184, 88,224,237,237,221, 21,192, 95,
-204,208,223,160,153,152,150,150,214,255,149, 87, 94, 25,155,154,154,122,199,100, 50,125, 10,192,223,217,217, 57,226,205, 55,223,
-132, 92, 46,239, 6, 43, 12, 86, 77, 63, 35, 87, 87,215,126, 29, 58,116,192,202,149, 43,241,205, 55,223,116,167,148, 30, 35,132,
-188,156,159,159,127,244,181,215, 94,131,189,189,125,127, 84, 97,176,170,211, 36,132,248, 73,165,210,141, 63,255,252,179,210,219,
-219,219, 91, 44, 22, 51,222,222,222,200,206,206, 70, 73, 73,137,116,238,220,185,205,101, 50,217,181,101,203,150,109, 4,240,134,
-181,113, 86, 68,163,209, 52,106,211,166,205,186, 41, 83,166,216,238,219,183, 15,190,190,190,200,207,207,199,168, 81,163, 92,151,
- 47, 95,126, 82,163,209,116, 53,155,172,191,251,239,136, 16,146, 7, 64, 5,192,190, 54,205,171, 53,220,207, 60, 0,229,253, 83,
- 69, 34, 17,164, 82, 41,100, 50, 25,100, 50, 25,226,226,226,118, 9, 4,130,145, 40,253, 34,103, 81,147,252,249,224,106, 73, 8,
-185, 44, 16, 8,106, 92,167,148,114,214,196,249, 36, 88, 81, 54,193,131, 16,178, 20, 64, 55,148,246,163, 62,229,234,234,250, 97,
-106,106,234, 3,107, 53, 53, 26,141, 83, 97, 97,225, 50,141, 70, 3, 87, 87, 87, 0,128, 64, 32, 64, 80, 80, 16, 74, 74, 74,112,
-235,214, 45,112, 28,135,152,152, 24,168, 84, 42, 52,111,222,124,217,172, 89,179,118,206,152, 49, 35,203,218, 56,107, 75,117, 94,
-228,105,158,227,239, 70, 8,224, 36, 74,127,207,204, 23,115, 18,101,223, 52, 89,150, 45, 55, 88,149,205, 79,101,195, 69, 8, 1,
-165,180,198,116, 19, 33,132,209,235,245,229,230, 74,165, 82,149,155, 51,147,201, 84,165,193,122, 92, 28, 28, 28, 14,231,230,230,
- 46,161,148, 30,121,156,227, 71,140, 24,241,151,254, 28,211,166, 77, 75,200,200,200, 96,251,117,106, 36,253,233,167,253, 89,239,
-132,116,173,227,231,227,209, 88,225,228,218,178,184,184,248, 10, 0, 81, 45, 78,225,238,231,231,103,187,250,231, 83,233, 67, 38,
- 45,156,237,225,166,100, 91,251,186,169,124, 28, 21, 18, 39,153,208,100, 79, 77,185, 54, 54, 54,205, 0,100, 89, 84,170,132,157,
-157, 29,246,238,221, 91,219,195,158, 53, 14, 90,173, 22, 57, 57, 57, 88,179,102,141,106,236,216,177, 39, 8, 33, 31,246,235,215,
-111,229,206,157, 59, 21,185,185,185, 48, 24, 12, 0,240, 88,153,151,103,204, 28, 7, 7,135, 46,221,186,117,147,108,251,229, 23,
- 9,165,180, 8, 0, 5, 80, 72, 41,157,240,119, 7, 35,147,201, 62,158, 59,119,174,202,207,207,143,100,102,102,130, 82, 10,134,
- 97,224,236,236,140,169, 83,167,202, 62,255,252,115,247,168,168,168,207, 0,204,122, 12,121, 82,157, 17, 2, 0, 27, 27, 27, 22,
-181, 31, 28, 83,165,166,201,100, 34, 29, 59,118,156,154,153,153,217, 92,171,213,126,109, 73,132, 82,106, 2,176,183,236, 85, 42,
- 76,200,181, 59,119,238,104,133, 66,161,188,126,253,250,109,107, 25,215, 95,104,212,168, 81,123,145, 72,132, 75,151, 46,233, 0,
-156, 42,251,248,212,245,235,215,117,111,188,241,134,212,211,211,179,189,181, 90,132, 16,169, 84, 42,221,120,239,222,189,198,106,
-181, 90,126,241,226, 69,180,104,209, 2,153,153,153, 72, 77, 77, 69, 97, 97, 33, 82, 83, 83,241,238,187,239,186, 46, 94,188, 88,
-109,141,166, 70,163,105,228,227,227,243,135,179,179,179,156, 82, 10, 74, 41,250,244,233, 35, 90,176, 96,129,109, 98, 98, 34, 76,
- 38, 19,166, 79,159,142,144,144, 16, 56, 56, 56, 96,228,200,145,110,235,214,173,219, 2, 32,176,246,119,227,169,146, 43, 18,137,
-160, 80, 40,236,115,115,115,159,164, 31,155, 20,128, 4, 0,132, 66, 97,185,185,146, 74,165,144, 74,255,253,227,130, 8, 33,238,
-132,144, 72,145, 72, 36, 85, 40, 20, 98,134, 97,160, 80, 40, 94,245,240,240,184,245,206, 59,239,248,255,244,211, 79,241,214,232,
-148,148,148,252, 36,151,203, 69, 46, 46, 46, 0,128, 30, 61,122, 96,196,136, 17,200,200,200,224,146,147,147,209,184,113, 99,230,
-212,169, 83, 72, 75, 75,195,181,107,215,208,186,117,107,145,163,163,227, 79, 0,122, 61,195,203,171,214,139,252, 83,169,216, 68,
-248,151,139,225, 56,238, 17,115, 85, 85,230,170, 98, 6,203, 82,115, 30, 33, 4, 44,203,162, 78,157, 58,176,177,177,129,141,141,
- 77,249, 54,179,153,171,248,162,148, 62,118, 19, 97,195,134, 13, 95,178,177,177,233, 76, 8,121,141, 82,122,212,218,227, 6, 78,
-190, 83,158,181,170, 76,203,150, 45,207, 79,159, 62,189,231,241,227,199,115,218,183,104,192, 73,147, 19,178,108, 28,156, 91, 16,
- 23,215,238,227, 70,143,185, 0,224,231, 90,132,152, 92, 82, 82, 34,173, 87,135,209, 38,231,229,235, 27,168,236,236, 27,216, 41,
-109,234, 57,219, 57, 57,200, 36,140,194,205, 85, 99, 52, 26,115, 1, 36, 91, 18,170,216, 44, 40,147,201,244,132, 16,161,189,189,
- 61,236,236,236, 12, 57, 57, 57, 37,129,129,129,144, 72, 36,153, 98,177,216,234,230,194, 54,109,218,164,177, 44,235, 90,211, 62,
- 98,177, 56,253,194,133, 11,110, 86, 93, 45,240,121,203,150, 45,131, 87,173, 90,229,226,235,235,139, 53,107,214,168,118,238,220,
-185,113,203,150, 45,200,205,205,197,253,251,247, 49,106,212,168,124,148, 54, 35,190, 80, 56, 58, 58,158, 29, 48, 96, 0,214,175,
- 95, 79,203,190, 68, 40, 8, 33, 45,236,236,236,238, 70, 70, 70, 62, 81,223,153,199,129, 97,152, 87, 27, 55,110, 76,242,242,242,
- 64, 41,133, 64, 32,120,228, 53,117,234, 84,249,187,239,190,251, 69,251,246,237,167,138, 68,162,124,147,201,180,173,176,176,240,
-235,155, 55,111,190, 80,157, 85, 59,119,238,252,191,132,132,132,144,186,117,235,254,254,184, 26,148, 82,218,186,117,107, 61,165,
- 84, 46, 16, 8,106,243, 5,167, 74,204,163, 67, 89,150, 45, 41, 51,116,160,148,154, 2, 3, 3, 75, 80,250,112,175,205,232,209,
- 73, 59,118,236,176, 85,171,213,114,173, 86,139,216,216, 88, 4, 6, 6,162,160,160, 0, 69, 69, 69, 40, 46, 46,134,193, 96, 64,
- 94, 94,158, 61,203,178,122,107, 4, 29, 29, 29,183,108,222,188,217,195,195,195, 3, 70,163, 17, 70,163, 17, 69, 69, 69, 56,117,
-234, 20,116, 58, 29,140, 70, 35, 26, 55,110,140,249,243,231,151,140, 31, 63, 94,246,203, 47,191,164,107,181,218,161,181,190, 17,
- 79, 25,129, 64, 0,169, 84, 10,145, 72,148,235,229,229, 5,134, 97,100,241,241,241,143,211,228,166, 2,144, 47, 20, 10, 37, 21,
-141,149, 76, 38,195,205,155, 55,183, 87,151,189,170, 14, 90,169, 16,164,165,245,231, 13, 33,100,169, 72, 36,146, 58, 57, 57,137,
-205,159, 25, 12, 6,177,131,131, 3,234,214,173,187, 18, 64,111, 43,117, 2,156,156,156, 64, 8,129, 88, 44,198,232,209,163,113,
-249,242,229, 61,137,137,137,239,164,167,167,163,176,176,240, 39,149, 74,245,122,122,122, 58, 88,150, 69,124,124, 60, 90,182,108,
- 25,240,204, 46,236, 81,254,241,198,202,140, 16, 40, 77,197, 85,124, 47, 91, 6,165,212, 98,230,170,166, 38,194,202, 24, 12, 6,
-101, 72, 72, 8,103, 54, 99,230, 81,132, 0, 8,203,178, 16,139,197,143,104,150, 25,172,199,250, 5,151, 74,165,232,221,187,183,
-204,198,198,230,215, 50,147,117,252,113,116, 0, 96,239,206,173,110, 11,102, 76,159,225,168,169,239,243,217,103,159, 9,123,245,
-234,117,116,219,182,109,173,157, 59,189,212,243,244,177,237,110,107, 62,221,251,251,246,237,219, 11,172,237,224, 94,198,185, 61,
-123,246,168, 63,158, 56, 78, 28, 28, 28,188,107,120,243, 41, 66,181,132,179,117,148,138, 5, 54, 2, 33, 35,245,172,215,243,216,
-169,211, 41, 0, 78, 91, 18,162,148,170,143, 30, 61, 10,123,123,123, 0,144,232,245,122,216,219,219, 99,205,154, 53, 50,149, 74,
- 5,149, 74,133, 14, 29, 58, 56,136,197,226, 26,155, 11, 43,194,178,172,235,201,147, 39,161, 84, 42, 81, 84, 84, 4,157, 78, 7,
-147,201, 4, 74,105,249, 55,199,174, 93,187,214,104,192, 42,197, 24, 75, 8,233, 50,110,220,184,211,171, 86,173,114,241,241,241,
-193,236,217,179,145,149,149,133,135, 15, 31, 98,232,208,161,249,113,113,113,221, 42,246,205,122, 17,104,222,188, 57, 61,119,238,
- 28, 14, 30, 60,136,190,125,251,146,189,123,247, 26, 88,150, 21, 39, 37, 37,221,120, 94, 49,153, 76, 38, 91,137, 68, 2,163,209,
- 8,161, 80, 88,222,132,111, 54, 88,238,238,238,248,227,143, 63,132,197,197,197,194,172,172, 44,155, 31,126,248, 97, 98, 88, 88,
-152, 26,192,224,231, 21, 51, 0,172, 94,189,186,238,232,209,163, 31, 10,133, 66,218,179,103,207, 97, 15, 30, 60,232,175, 86,171,
-143,157, 56,113, 98, 17,128, 90,151, 22,240,247,247, 15, 19, 8, 4, 30, 0,196,191,254,250,171,145,101, 89,113,243,230,205,211,
-204,153, 29,243,179,209,100, 50, 37, 70, 69, 69, 89, 28,137,236,239,239, 31, 38,147,201,196,223,127,255,189,177,164,164, 68,220,
-162, 69,139,180, 10, 58,226,223,126,251,205,104, 52, 26,197,141, 27, 55, 14,179,114,100,115,215,182,109,219,214,205,205,205,133,
-157,157, 29, 10, 11, 11, 17, 22, 22, 6, 63, 63, 63, 36, 39, 39,131, 97, 24,216,219,219, 99,245,234,213,197,132,144,108,107,174,
- 57, 59, 59,123,232,228,201,147,207,108,223,190,221, 89, 32, 16,224,193,131, 7,200,206,206,134,189,189, 61, 54,111,222,140,122,
-245,234,225,232,209,163,217, 44,203,190,183,126,253,250, 47,180, 90,237,208,231,221, 7,139, 97,152,114, 35, 84,193, 16,149,180,
-107,215, 14,231,206,157,219, 90, 27, 83, 68, 41,213,155,155, 5, 43, 54, 13, 74,165, 82, 8, 4,130, 90, 55,121,176, 44, 43, 38,
-132, 4,224,207, 86,155, 26,215, 95, 0,130, 21, 10,133,184,242,135, 57, 57, 57,226,198,141, 27,119,182, 86, 68, 42,149, 58,201,
-229,242, 82,193,224, 96,164,167,167,179,222,222,222,111, 13, 26, 52,200, 8, 0,239,191,255,254, 91, 25, 25, 25, 37, 70,163, 81,
- 32, 20, 10,145,145,145,129, 6, 13, 26, 56, 61,181,171,168,134,170,188,200, 63, 25, 33,165,148, 16, 66,104,197,119,243, 70,115,
- 31,172,154, 50, 87,230,109,102,163, 84,211,201, 24,134,201, 13, 15, 15, 87, 40, 20,138,242,207,140, 70, 35, 2, 2, 2, 56,142,
-227, 72,229,115, 61, 73, 6, 75, 42,149,194,222,222, 30,131, 7, 15,182, 73, 74, 74,218, 8,192,195,154,227, 74,251, 96,253,185,
-190,119,231, 86,183,181,223,204, 94,185, 98,193, 92,167,152,131, 27,176,126,249,183,172, 66,161,140,104,217,178,101,151,188,188,
- 60,157,189, 66,135,212, 44,236,164,148,110,177, 54, 54, 66, 8, 3, 96,251,133, 11, 23,174,246,232,209,227,194,253,251,247, 29,
- 30,220,187,119, 86,165, 47, 44, 84,122,214, 55,137, 93,221,250,105, 13, 70,225,128, 1, 3,220, 0, 44,183, 66, 15, 28,199, 97,
-255,254,253,176,181,181,133, 74,165,130,189,189, 61,204,230,234,113,137,139,139, 67, 98, 98, 34, 20, 10, 5, 20, 10, 5,148, 74,
- 37,148, 74, 37, 36, 18,201, 35,217, 71,107,161,148, 70, 17, 66, 62,220,189,123,247,182,208,208, 80,228,228,228,160,168,168, 8,
- 51,102,204, 64,108,108,236,100, 74,233,213,199, 14,246, 25,208,162, 69, 11,122,225,194, 5,156, 61,123, 22, 69, 69, 69, 88,185,
-114, 37,212,106,245, 75, 0,190,124,158,113,113, 28, 39, 54,151, 58, 97, 24,230, 47, 25, 44,179,217,146,203,229,112,118,118,198,
-244,233,211,197,253,250,245, 11,121,158, 49, 47, 88,176,160,225,210,165, 75,127,216,180,105,211,193,161, 67,135,254,114,243,230,
-205,145,118,118,118, 55,142, 31, 63, 62, 87, 42,149,114,150, 21,254,138, 80, 40,244,184,122,245,106, 69,147, 47, 98, 89,214,134,
-101, 89,152, 76, 38, 24,141, 70, 20, 23, 23,163,123,247,238, 86,235, 93,190,124,217, 6, 0,190,252,242, 75, 17, 0, 27,142,227,
- 80, 81, 79,171,213,138, 94,126,249,101,171,254,151, 0,208, 56, 56, 56,136, 30, 62,124, 8,147,201,132, 86,173, 90, 97,245,234,
-213, 24, 52,104, 16,154, 53,107,134,130,130, 2, 68, 70, 70, 98,227,198,141, 14, 98,177,248, 77,107, 4,147,147,147,163, 52, 26,
- 77,231,183,222,122,235,252,182,109,219, 28,234,214,173,139,196,196, 68, 36, 39, 39,195,199,199, 7,203,151, 47, 47,162,148,118,
- 44, 51, 85,191, 89, 25,231, 51,131, 97,152,114, 19, 84,213,235,113, 48,153, 76, 42,153, 76,150, 47,147,201, 36,102,163,117,229,
-202,149, 90,103,175,204, 84,254,191, 99,105,253,121, 98,254, 31,108, 52, 62,122,153, 10,133, 2,190,190,190, 86,235, 40, 20, 10,
- 98,126,198, 26,141, 70,164,164,164,176, 55,111,222,100, 91,181,106, 5, 0, 80,171,213,236,197,139, 23, 89,157, 78, 39,176,181,
-181, 5, 0,216,219,219, 63, 83,147, 89,147, 23,249,167, 98,110, 34, 60, 93,233,189, 60,131,101, 54, 60, 53,117,114, 23, 10,133,
-214, 26, 44, 8, 4, 2, 28, 58,116, 8, 74,165, 18,182,182,182,104,210,164,116,180,158, 57, 91, 86, 57, 43,246,184, 6, 75, 34,
-145,192,206,206, 14, 71,142, 28, 41,185,118,237,218,232,199,209, 48,155,171,249, 95,207,114,202,186,125, 1,137,201, 41,200, 74,
- 51,132,157,187, 25,127, 24,192, 97, 0,192,237,166,167,208,244,182,213,230,170,169,139, 77,203,118,190,117,126,235,246, 74, 79,
-247,254,195,199, 49,227,199,143,111, 63, 98,196,136,236, 97,195,134, 77,146,203,229,205, 76, 38, 83,206,209, 83,167,226, 7, 14,
- 28,232,148,151,151, 55,130, 82,106,177, 79,146, 64, 32, 72,233,209,163,135, 39, 0,216,218,218,234,127,252,241, 71,137,189,189,
- 61,134, 12, 25, 82,146,154,154, 42, 43,187, 31, 57,176, 50,123, 5, 0, 66,161, 48,253,189,247,222,171, 49, 67, 37,145, 72,210,
-107,218, 94, 25, 66, 72, 64, 72, 72,200,186,237,219,183, 35, 43, 43, 11, 69, 69, 69, 16,139,197, 88,184,112, 33, 30, 62,124,184,
-140, 16,114,243, 69,249,103,214,178,101, 75,122,233,210, 37,220,184,113, 3, 58,157, 14,163, 71,143,174,216,199,176,199,115, 13,
- 14, 32, 73, 73, 73,216,188,121, 51, 88,150,197,208,161, 67, 81,175, 94,189,114,131,149,154,154,138, 31,127,252, 17, 44,203,226,
-189,247,222,131,151,151, 23,140, 70,163,172,107,215,174,194,231, 53,162,116,202,148, 41, 49,123,246,236, 57,152,144,144,208,235,
-155,111,190, 9, 38,132,112, 83,167, 78,157,175, 82,169,158,104,244,101, 78, 94, 1,238,222,123, 0,147,201, 84,229,203,197,217,
-177,214,122,209,177, 15, 97, 50,177,229, 26, 44,251,167,158,147, 99,173,244,146,178,179,179,125, 5, 2,129,248,222,189,123,168,
- 91,183, 46,218,180,105,131,121,243,230, 33, 35, 35, 3, 38,147, 9,174,174,174,156,209,104,140,208,235,245, 22, 51,213,102, 82,
- 82, 82,138,179,178,178,138,222,123,239, 61,251,117,235,214, 17, 95, 95, 95,220,191,127, 31, 34,145, 8,182,182,182,197,119,238,
-220,121, 97, 70, 13, 86,206, 92,153, 95,101,153, 43, 6,192,239, 0,106,101,176, 41,165,122, 79, 79,207, 71,250, 95, 61, 78,246,
-234, 89,241, 44, 71, 38,250,250,250,158, 82,169, 84, 33,119,238,220,121, 36,139, 53,120,240, 96,131,143,143,207, 25,107,117, 84,
- 42, 85,142, 68, 34,113, 42, 41, 41,193,133, 11, 23,208,164, 73, 19,113, 94, 94, 94, 40, 33,100, 26, 0,180,104,209, 34, 52, 45,
- 45, 77,236,238,238, 14, 0,104,220,184, 49,242,242,242,114,172,169, 22,240,132,252,197,139,252,147, 17, 2, 0,165, 52,184,226,
-187,153,202, 77,132, 53,153, 44,115, 65,210,154, 32,132, 64,171,213,150,103, 68, 20, 10, 5, 56,142,123,164, 57,178,178,193,170,
- 60,138,208, 90,164, 82, 41, 78,156, 56, 81,178,118,237,218, 1,148,210,195,214, 30, 87,177, 15,214,247,139,231, 46, 48,155,171,
-235,103,255,192,111,119,242, 50,167,206, 91,188,244,113,226, 1, 0, 63, 23, 69,139, 58,110,206, 39, 23, 47,156,175, 74,186,116,
- 16,191,172, 93, 76,175, 95,190,220,250,131,203,151,223,252,224,131, 15, 28, 81,218,223, 42, 9,192, 89, 0,203,172, 49, 87, 0,
-112,241,226, 69, 47,243,114,155, 54,109,140, 42,149, 10, 74,165, 18, 25, 25, 25, 98,165, 82, 41, 59,121,242,100,173,251, 58, 92,
-186,116,201,218,190, 85, 86, 65, 8,105,212,183,111,223,211,187,118,237, 82,228,230,230, 34, 62, 62, 30,159,124,242, 9,190,251,
-238, 59,168, 84, 42,236,223,191,223, 54, 36, 36,228, 36, 33,164, 3,125,206,197, 85, 3, 2, 2,232,149, 43, 87, 16, 31, 31, 15,
-147,201,132,254,253,251, 91, 28,192,241,119,194,113, 28,157, 60,121, 50,214,173, 91, 7,134, 97, 48,124,248,112,228,231,231,151,
-111,119,116,116,172,106,155, 0, 22, 70,148, 62, 75,132, 66, 33, 61,117,234,212, 55,193,193,193, 72, 72, 72,232, 21, 24, 24,184,
- 98,228,200,145, 73, 79,170,235, 96,103,139,150,126,222,208,233,116,208,233,116,208,104, 52, 40, 40, 40, 64, 76, 76, 12,116, 58,
- 29,220, 92,237,107,173, 23,208,172, 33,244,122, 61,116, 58, 29, 92, 93, 93, 81, 84, 84,132,251,247,239, 67,167,211,193,197,197,
-161, 54,114,167,206,158, 61, 91,183,123,247,238,141, 35, 35, 35,113,250,244,105,232,245,122, 4, 4, 4, 32, 58, 58, 26,237,219,
-183, 71,126,126,254,165, 43, 87,174, 88, 61, 34,133, 16,226,249,234,171,175,158,216,186,117,171,211,150, 45, 91,244,111,188,241,
-134,100,246,236,217, 68,165, 82, 33, 45, 45,237,145,250,132, 47, 2,149,141, 85, 88, 88,216,118,177, 88, 76, 1, 60, 86,182,201,
- 76, 66, 66,130,180,121,243,230, 58,169, 84, 42, 57,127,254,124,173,154, 25,159, 53, 79, 58, 50,177, 38, 26, 54,108, 56,217,195,
-195,163,123,171, 86,173, 16, 25, 25, 41,150, 74,165, 24, 54,108,152,161,119,239,222, 6,161, 80,104,245,128, 27,153, 76,118,219,
-214,214,182,139, 78,167,131, 94,175,199,209,163, 71,225,232,232,248, 73, 72, 72,200,135, 41, 41, 41, 72, 78, 78,150, 72,165,210,
-242, 44,121,183,110,221,144,157,157,125,219, 90,253,199,165, 58, 47,242, 79,165,218, 58, 88,149, 51, 88, 53, 53, 15, 90,107,176,
- 24,134,129, 94,175,135,141,141, 77,185,193,170, 88, 41,254,113, 52,171,227,234,213,171,231, 99, 99, 99, 23, 81, 74, 15, 60,206,
-241, 59,182,108, 82,219,113,197,158,201,151, 14,224,238,245, 48,236,137,204,205,156, 58,111,241,196,215, 6, 12, 73,171,184,223,
-192,201,119,176,195,138, 46,244,141, 92, 21,254,238,110, 78, 39, 23, 47,156,175,202,186,125, 1,247,110,132,225,192,165,196,112,
- 29,165,209, 0, 44,142,160,170, 13,230,182,245, 23, 9,169, 84, 58,217, 60, 90, 48, 54, 54, 22, 67,135, 14,205,141,143,143, 31,
-215,191,127,255,239, 14, 31, 62,236,224,224,224,128, 35, 71,142,216,122,122,122,134, 2,120,110,205, 89,132, 16,202,178, 44,178,
-178, 74, 7,111,118,236,216,241,133, 50, 87, 0, 16, 22, 22, 38,238,219,183,239, 49, 0, 47,221,190,125, 27, 28,199,157, 15, 15,
- 15,239,104,222, 94,211, 54, 43,224, 10, 10, 10, 68,182,182,182, 85, 62,172,196, 98,177, 24,181,204, 56, 84,212, 60,119,238,220,
-252, 69,139, 22,237,249,232,163,143,238, 61,161, 38,128,191,102,176, 66, 66, 66, 80,162, 51, 34, 49, 45, 15, 38,147, 9,197,250,
- 52,203, 34,149,244, 42,102,176, 66, 66, 66,160, 45,209,227, 97, 74, 54, 76, 38, 19, 10, 75,106,149, 40, 89, 62,120,240,224, 1,
-231,206,157,203,110,220,184,177,227,149, 43, 87,144,158,158, 14,163,209,136,151, 94,122, 9, 82,169,244, 65,104,104,168, 24, 86,
-116, 3, 0, 0, 66,136,205, 43,175,188,114,120,219,182,109,117,206,159, 63, 15,189, 94,207,133,133,133,221, 31, 51,102,140,234,
-221,119,223,117, 42,189,141, 47, 22,102, 99,117,251,246,109,179,177, 26,142,167,100,132,204, 25,172,255, 18, 91,182,108, 73,218,
-176, 97,131,159, 90,173, 94, 58,108,216,176,110, 26,141,134,145, 72, 36,167,132, 66,225,135, 0, 30, 88,171, 35,149, 74, 71, 58,
- 56, 56,196, 8, 4, 2, 65, 82, 82, 18,238,221,187, 7,129, 64, 0, 74,169, 68,171,213,194,205,205, 13, 2, 65,233,120,142,193,
-131, 7,195,195,195,131,141,142,142, 30,249,140, 46,235, 95, 75,181, 6,203,204,156, 57,115,176,118,237, 90,188,255,254,251, 53,
-238, 87, 86, 22,224,145, 7, 17,169, 52,219,182,121, 20,225,204,153, 51, 31, 57,206,220, 20, 56,110,220,184, 71, 52,127,253,245,
-215,191, 52, 17, 86,214,172,142,152,152,152, 96, 75,251, 84,165,105,238,131, 53,112,232,240,148,149,243,103,220,216,184,247, 88,
-243, 20, 45, 77,153, 58,111,241,148,202,230,202, 90,205,166,117,148, 77, 61, 92,157, 78, 45, 90, 56,223,206,156, 13,219, 22,145,
-154, 7, 19,173,249,166,214,160, 89, 29, 34,145, 40,165, 67,135, 14,158,128,117,205,130,214,222,207,218, 80,149,166, 78,167,195,
-197,139, 23, 1, 0,163, 70,141,202,141,143,143,239, 66, 41,189, 69, 8,185,221,179,103,207, 83,135, 14, 29,114, 40,251,246, 93,
-101, 89,138,191, 43, 78,160,116, 68,171, 80, 40,132,175,175,111,173,205,213,223, 21,103, 74, 74,202,251, 99,199,142, 93,171,211,
-233,132, 69, 69, 69,239, 91,187,205, 82,156, 59,118,236,184,231,235,235, 27,140,234, 75, 49,112, 0, 46, 60,137,230,210,165, 75,
- 1,160,241,147,104,154,169,156,193,218,190,125, 59, 88,150,133,135,155, 29,116, 58, 29, 42,246,247,180, 70,179,114, 6,235,151,
- 95,126, 1,199,113,240, 82, 59, 66,167,211, 85,219,247,176, 42, 77, 74,169,142, 16, 50,178, 67,135, 14, 63,205,157, 59, 55,174,
- 73,147, 38,158, 29, 58,116,112,200,206,206, 78,191,122,245,106,252,218,181,107,149, 38,147,105,100,117,205, 68,149, 53,157,156,
-156, 22,111,218,180,201,227,246,237,219, 72, 74, 74,194,146, 37, 75, 30,100,100,100,244, 22, 10,133,210, 21, 43, 86,156,236,211,
-167,143,155,201,100,170, 49, 91,253,119,254, 29, 1, 64,114,114,242, 94,148,150,175,169,149,177,178, 38,206,203,151, 47,255, 82,
-166,125,192, 26,237,191,235,218,159,116,100,162,165, 56, 71,142, 28,153,136, 74, 53,211,106, 27,231,145, 35, 71,226,223,126,251,
-237, 57,254,254,254, 51,149, 74, 37,162,162,162,202,203, 34,153,191,160, 19, 66, 48,112,224, 64,124,240,193, 7, 56,114,228,200,
-156, 1, 3, 6,196,215,164,201,243, 87,170, 53, 88, 44,203, 38,196,199,199,171, 55,109,218, 36, 32,132, 96,243,230,205,168,220,
-177,214,252, 14, 0, 23, 47, 94, 52, 81, 74, 99,106, 58, 25,203,178, 9, 97, 97, 97,110, 27, 54,108, 16,201,229,114, 72,165, 82,
- 36, 39, 39,131,227, 56, 46, 45, 45,141,217,186,117,235, 35,157,117, 47, 92,184, 96, 50, 24, 12, 15,159,242, 53, 91,205,153,200,
- 7, 31, 30,218,191,199,185,125,187, 46,185, 42, 71,199, 42,141,138,185,226,123, 77, 40,108, 85,243, 23, 45,156,111,111, 54, 87,
-219, 35, 82,115, 75,116,108,183,219, 25,197,215,159,118,204,231,206,157,243,178,188,215,115, 97, 70,112,112, 48, 7,192, 25,192,
- 23,180, 52,115,135, 50,147,213,206,215,215,247, 35, 0,114, 0, 51,158, 87,128,132, 16,202,113, 92,121,230,244, 69,203, 92, 85,
- 36, 60, 60, 60, 14,192,203,181,221,102,137, 1, 3, 6,196, 2,120,162,233,102,254, 14, 77, 51,217,185,249,136,185,159, 84, 54,
-149, 23, 11,246, 65,106,133,254, 83, 70,100,231,215,174,140, 92, 78, 94, 1, 98,238, 39,130,227,104,169, 30,155, 84,222,201,221,
-100, 50, 33, 51,183,118,101,218, 40,165,145,132,144,246,159,126,250,233, 36, 0,157, 0,120, 1,120,136,210,110, 0,203,173,237,
-131, 35, 18,137, 58, 45, 93,186,180, 55,195, 48,204,197,139, 23,117, 11, 23, 46, 76,200,200,200,232, 71, 41,125, 8, 0, 26,141,
-166,235,175,191,254,186,229, 69, 40,201, 80,137,225,255, 80,237,199,230,159, 50, 50,113,219,182,109,179,198,141, 27, 39,108,219,
-182,237,103,173, 91,183,102,238,223,191,143,244,244,244,242, 47,151,175,190,250, 42,234,214,173,203, 29, 56,112, 96,222,235,175,
-191,254, 56, 53,245,254,243, 84,107,176, 50, 51, 51, 95, 29, 62,124,248, 31, 12,195,212, 55,103,145,170,123, 7, 0,142,227,226,
-211,210,210,106, 44, 66,150,153,153,249,234,140, 25, 51,254, 16, 10,133,229,154, 44,203,234,178,178,178,198, 13, 28, 56,112,149,
- 72, 36, 42,175, 20, 87, 54, 50,238, 65, 74, 74,202,223,218,161,184,114, 29,172,158,125, 94,207,124, 82, 77,133, 4,222, 9, 23,
-247,227,222,141,112,108,143, 72,205, 41,208,179, 93,163, 50,138,254, 83,206,159, 82,154, 14, 96, 92, 53,219,238, 1,168, 85, 54,
-239, 89,240,111, 26,189,242, 95,192,100, 50, 37,118,127,169,107,121, 73, 6,115, 98,160,242, 58,203,178,137,214,234,189,220, 45,
-184, 90, 29,243,178,181,122,102,202, 76,212, 2,212, 98,202,171,202, 8, 4,130,143,218,182,109, 43,248,232,163,143,210, 14, 30,
- 60,120, 44, 39, 39,103, 10,165,180,216,188,189,108,212,224,243, 46, 38,202, 83,198, 63,101,100,226,170, 85,171,190,252,228,147,
- 79, 54,106, 52,154,205,157, 58,117,106,236,227,227,163,178,181,181, 69,126,126,126, 65,118,118,246,221,253,251,247, 15, 29, 62,
-124,184,213,211, 98,241, 60, 74,181, 6, 43, 35, 35,163, 8,128,213, 85,139,173,193,130,102,221,167,121,174, 39, 97, 68,208,194,
-109,184,189,240,145,121, 8, 1, 84,191,110,161, 15, 86, 74,102,254, 7,115, 55,238,255, 86,103,162,156,193,196,141,138, 74, 47,
-122,174,157,184,121,170,135, 55, 87,255, 28,110,222,188,105, 77, 45,170,231,166,247, 52,209,235,245, 31,118,232,208, 97, 25,203,
-178,139,140, 70,227,217,231, 29, 15,207,191,135, 5, 11, 22,196,161,236,185, 60,112,224, 64, 1, 0,236,216,177,227,133, 25,149,
- 89,129,214, 0, 92, 0,152, 39, 91,119, 1,160, 71,105,101,255, 12, 0, 87,158, 83, 92,213, 98,177, 15,214,127,141, 29, 71,255,
-124,192, 86, 54, 78,150,214,171,227,110,106,225, 41,240,223, 46,121,120,120, 30,147,178,166,192,126,207, 59, 14,158,127, 55, 47,
-168,177, 50,227, 66, 8,217, 71, 41, 13, 1, 0,243,114,197,207, 94, 52, 30,127,152, 30, 15, 15, 15, 15, 15, 15, 15, 15, 79,149,
- 16, 0,254, 85,109,168,205,232, 0, 66, 72,149, 26, 53, 97, 73,159,215,228, 53,121, 77, 94,147,215,228, 53,121,205,127,159,166,
- 37,237,106,142,239, 99, 33,131,181,191,182,113, 62,107,200,179, 44, 76,247,119, 15, 9,230, 53,121, 77, 94,147,215,228, 53,121,
- 77, 94,243,159,169,105,129,127,156,193,226,251, 96,241,240,240,240,240,240,240,188,232,104,167, 77,155,246, 25, 33,100, 31, 0,
- 76,155, 54,237,179,231, 29,144, 37,120,131,197,195,195,195, 83, 1,141, 70,211, 23,192, 44,148,118,161, 8, 77, 78, 78,254,229,
- 57,135,196,195,243, 84,113,113,113, 81, 56, 57, 57, 29, 99, 24,166, 46,240,104,201,165,202,197,189, 1,128,227,184,148,236,236,
-236, 30,169,169,169,213,150, 45,122, 22,154,149, 56, 31, 26, 26, 90, 28, 26, 26,106,238,208,158,129,210, 86,184, 16,252, 57,178,
-240,133,162,214, 6,107, 90,143,250,157, 53,238,238, 91,115,179,178, 34,116,197, 5,239,206, 59,150,148,253, 56, 39, 38,132, 56,
- 73, 36,146,183, 20, 10, 69,119, 74,169,183, 64, 32,184,147,151,151,119,212,104, 52,110,163,148, 22, 62,142, 38, 15,207,211, 36,
- 32, 32,160,185, 68, 34,249,132, 16,210,206,100, 50,121,136, 68,162,100, 0,151,116, 58,221,194,136,136,136,136,231, 29, 31,207,
-211,129, 16,194,168,213,234,101,246,246,246,109,115,115,115,135, 2,248, 44, 42, 42,170, 5,195, 48,240,243,243,251, 76,163,209,
-196,216,218,218,174, 47, 40, 40, 56,159,146,146,242, 33,173,197,220,113, 60, 47, 46, 62, 62, 62, 97, 12,195,120, 84,156,174,205,
- 76,117, 53, 31, 41,165,113,145,145,145, 29,170,211,244,240,240,240, 86,169, 84,171, 0,180,174,202, 84, 84,164,172,123,206,149,
-252,252,252,113,137,137,137, 85, 22,226,117,116,116,180,117,117,117,157, 69, 8, 25,200, 48,140,192,210, 53,113, 28,199, 82, 74,
-119,164,167,167,207,200,206,206, 46,168,110, 63, 39, 39,167,163,167, 79,159,110,237,236,236,108,177, 44,141,201,100, 66, 98, 98,
-162, 75, 72, 72,200,105, 0,213, 86,214,126, 22,154,149,208, 3,184,108,229,190, 47, 4,181, 54, 88,132,197,176,119, 71, 15,119,
-207, 77,136,114,223,180,237, 80,163,207, 95,173,219,245,235,195, 15, 82,107,163, 33,151,203,223,242,247,247, 95,190,124,249,114,
-167,250,245,235, 19,185, 92,142,148,148,148, 38,215,174, 93,123,125,230,204,153, 51, 68, 34,209, 72,163,209,248, 71,109, 99,123,
- 36, 78, 66,236, 29,149,194, 79,178, 10,140,211,159, 68,135,231,191,199,192,129, 3, 5, 9, 9, 9, 51,157,157,157, 63,254,244,
-211, 79,165, 13, 26, 52,128, 82,169, 68,122,122,186, 87,116,116,180,231,170, 85,171,250,118,232,208, 97,133, 88, 44,254,252,228,
-201,147,207,101,242,100,158,167,135, 90,173, 94,118,250,244,233, 9, 26,141, 6, 29, 59,118, 60, 31, 16, 16,160,178,177,177,193,
-193,131, 7,225,237,237,221,204,206,206,238,210,154, 53,107, 68,179,102,205,106,185,123,247,110, 0,152,248,188, 99,230,121,114,
- 24,134,241,136,136,136,112,181,177,177, 1,203,178,101,179, 1,112,160,148,150,191,155, 41, 43, 48,139,110,221,186, 25,106,210,
-148,201,100,223,221,184,113,163,187,121,134, 19,243,177,213,145,156,156,220,189, 91,183,110,223, 1,168,178,160,182,171,171,235,
-172, 65,131, 6, 77,110,214,172, 89,249, 84,115, 28,199,149,191,103,102,102, 98,252,248,241,229,231,224, 56, 14,167, 79,159,158,
-244,191,255,253, 15, 0,254, 87,195,181,215,117,118,118, 38,150,166,192,155, 57,115, 38,102,206,156,137,229,203,151, 19,161, 80,
- 88,227,204,233,207, 66,243,159, 78,237, 13, 22,232,129, 3, 59,127,121, 55, 36,184, 49, 25,209,175,149,239,150,189, 97, 23,166,
-117,111,208,101,254,209,184, 4,107,142,151,203,229,147,198,142, 29, 59,127,246,236,217,178,187,119,239, 34, 50, 50, 18, 38,147,
- 9, 74,165, 18,205,155, 55,103, 14, 28, 56,160,158, 52,105,210, 78,137, 68, 50, 74,175,215,239,174,253, 37,149, 82,199, 65,176,
- 80, 33, 23, 12,145, 8,133,151,244, 38,147,213,179,213,255,157,180,109,219,246,136,209,104,252, 38, 34, 34,226,196,243,142,197,
- 90, 2, 3, 3, 59,138,197,226, 25, 18,137,164,231,191,213, 92, 60,120,240, 96, 70,231,206,157, 63,158, 57,115,166,244,254,253,
-251,136,138,138, 66, 74, 74, 10,234,215,175,143,250,245,235,147,229,203,151,203, 86,172, 88, 49,241,218,181,107, 12,128,169,214,
-234, 18, 66,152, 58,117,234,188,247,242,203, 47,191,233,236,236,108,151,148,148,148,119,238,220,185,223, 82, 82, 82,190,167,148,
- 62,214,189, 36,132, 48,206,206,206, 35, 66, 66, 66,222,116, 74,241,242,177, 0, 0, 25, 53, 73, 68, 65, 84,116,116,116, 76, 73,
- 73,201, 62,118,236,216,111,233,233,233,235,159, 36,211, 66, 8, 81, 3,104, 1,192,169,236,163,148,122,245,234,221,186,127,255,
-126,250, 83,212, 76,174, 87,175, 94,228,227,104,186,184,184, 40,132, 66,225, 47,132, 16, 77,117,251, 80, 74,147, 77, 38,211,160,
-178, 2,199,213,162, 82,169,218,169,213,106, 92,186,116, 9, 95,124,241,133, 99,183,110,221, 16, 29, 29, 13,134, 97,240,241,199,
- 31, 19, 63, 63, 63, 81,106,106, 42,130,130,130,112,244,232,209,106,179, 23, 60,127,133, 16,178, 3,128, 61,128,193,148,210,204,
- 10,159, 59, 3,248, 21, 64, 58,165,180, 86,243,234, 61, 77,228,114, 57,126,254,249,103,136, 68, 34,136,197, 98,228,228,228,192,
-221,221, 29, 98,177, 24, 34,145,168,252, 37, 22,139,225,233,233,105, 81,143,227,254,223,222,153, 71, 69,113,166,107,252,249,170,
-170,187,122, 7, 26, 65, 64, 80, 80, 65, 65, 65, 17, 16,140,122, 53, 49,152,184,141, 38,113, 25, 39,137,154,113,137,193, 61,198,
- 16, 69,130, 43,142,142,163,137,113, 4,163, 68,163,102, 49, 30, 39, 99,226,141, 26,146, 25, 73,226,130,178,196,157,237, 10, 42,
- 40, 59, 34, 75, 87,111, 85,247, 15,232, 22, 9, 75, 55, 65, 81,211,191,115,234,208,221,213,253,244, 91, 13,116, 61,245,126,239,
-247,126,124, 40, 77,211,168,170,170,130,209,104, 52, 47,179,116,247,238, 93, 8,130, 0,150,101,205,143,155,246,241, 60, 31,218,
-156, 30, 33,100,114,151, 46, 93,240,197, 23, 95, 64,171,213,254,102,191,157,157, 29, 46, 94,188, 95,103, 78,211, 52, 2, 3, 3,
- 41, 66,200,100,180, 96,176, 8, 33, 2, 0,204,158, 61,251,129,229,233, 26,111,166,181,131, 5, 65, 48, 47, 33,246, 40, 53,159,
-116, 90, 52, 88,203,159,239, 17,225, 31, 20,248,119,150, 21,201,120,163, 30,188, 65, 15,255,128, 94,224,121, 3,254, 47,239, 54,
-122,118,102,241,215,209,222,158,251, 78,100, 94, 92,241, 66,175,176,216, 19,153, 25, 13, 95,223,120,134, 1, 33,196,107,224,192,
-129,171,215,173, 91, 39,253,225,135, 31,112,237,218, 53,196,198,198, 2, 0, 20, 10, 5,190,251,238, 59, 24,141, 70,108,217,178,
- 69, 53,106,212,168, 29,132,144,147,130, 32,148,181,164,217, 20,132, 16,207, 97, 33, 30, 19, 14,111, 30, 38,241,127,249,208, 7,
-132,144,163,130, 32, 52,219, 64,237, 97,204,132,176, 68,211, 96, 48,140, 20,137, 68,131,131,130,130,254,100,137,201,234,168, 56,
- 77, 4, 7, 7, 15, 17,137, 68,199,116, 58,157,156,101, 89, 6,205, 44, 36,221,209,113,254, 30,205, 1, 3, 6,244,115,116,116,
-124, 39, 38, 38, 70,114,230,204, 25,148,151,151,163,168,168, 8,139, 22, 45, 66, 92, 92, 28,252,253,253,161, 80, 40,176, 96,193,
- 2,233,188,121,243, 34, 6, 14, 28,248,213,185,115,231,206,183, 22, 39, 33,132, 26, 62,124,248,231,251,247,239,239,110, 48, 24,
- 40, 0,208,235,245,234,188,188,188,233,203,151, 47, 31, 78, 8,249, 75,115, 38,171, 37,205,193,131, 7,239, 63,112,224,128, 55,
-203,178, 84,253,151,181,243,180,105,211,102, 70, 69, 69, 61, 71, 8,121,181,185,191,251,150, 62, 79, 66,200, 0,185, 92,222, 39,
- 34, 34,162,100,194,132, 9,249, 0,144,146,146, 66,210,210,210,134,172, 94,189, 58, 55, 38, 38,166,201,101, 62, 90,209, 12,150,
-203,229,190,243,231,207, 47, 30, 51,102, 76,129, 88, 44,230,207,156, 57, 67, 95,188,120,113,104,108,108,108,206,138, 21, 43,154,
- 92,151,179, 57, 77,145, 72,244,229,225,195,135,135,187,187,187, 27, 1, 8,245,239, 33, 16, 66, 4,138,162, 4,138,162,144,147,
-147,227, 53,105,210,164,207, 0,140,111, 73,179,162,162, 98,250,208,161, 67,147, 86,174, 92,233, 8, 0, 73, 73, 73, 96, 24,198,
-124, 66,184,118,237, 26, 56,142,195,182,109,219,116,247,238,221,155,101,237,177,183,149,167, 68,179, 43,128, 80, 0, 63, 18, 66,
- 70, 8,130, 80, 82,111,174,254, 3,160, 47,128, 95, 58, 42, 78,138,162, 96, 52, 26,205, 38,234,251,239,191, 71, 92, 92, 28,190,
-248,226, 11,184,187,187, 63, 96,176, 68, 34, 81,147,117, 68, 77,156,227, 0,212, 13,129, 25,141, 70, 36, 39, 39, 99,247,238,221,
-232,220,185, 51,156, 58,117,130,147,179, 51,194,194,194, 96,202,154, 25,141,198,223,232, 54,214, 44, 41, 41, 1,207, 91,118,173,
- 36, 8, 2, 42, 43, 43, 91,141,211, 68, 75, 70,168,225,214,204,123,181,187,230,211, 70,139, 6,203,205,213, 41,106,210,196,145,
- 50, 24, 13,128,174, 26,208,213, 64,208,213, 64,208, 86,131,176, 50, 8,122, 13, 20,116, 41,222,124,222,197,238,208,233,194, 43,
-239,141,240, 28,251,183, 31,243,142, 53,167,103,103,103, 23,189,115,231, 78,251, 11, 23, 46, 32, 35, 35, 3, 91,183,110,197,154,
- 53,107,204, 87, 14,227,199,143,199,169, 83,167,160,213,106,177,114,229, 74,199,200,200,200,249,168, 43, 54,181, 10,215, 78, 76,
-220,193,125,219, 28, 29,101, 37,248,235,132,115,157,254,121, 48, 55, 2,192, 71,214,234, 60, 10, 34, 35, 35,229,155, 54,109,250,
-198, 82,147,213, 81, 4, 7, 7, 15,145, 72, 36,199,162,163,163, 21,209,209,209,237,210,237, 55, 56, 56,216,159, 97,152, 47,245,
-122,253,210,212,212,212,227,237,161,249,123,145, 72, 36, 11,223,121,231, 29,233,173, 91,183, 80, 81, 81, 1,137, 68,242,192,151,
-155, 68, 34, 1, 69, 81, 96, 89, 22,211,166, 77,147, 38, 36, 36,188, 13, 96,106,107,186,174,174,174,179,246,237,219,215, 93,167,
-211, 81,213,213,213, 16,139,197, 16,139,197,232,215,175, 31,189,108,217,178,174,139, 23, 47,158, 11, 96,187, 53,177,170,213,234,
-233,251,247,239,247,102, 89,150,186,125,251, 54,134, 12, 25,130,179,103,207, 34, 44, 44,140, 94,182,108, 89,183, 5, 11, 22,204,
- 1, 16,103,141, 38, 33,196, 77, 46,151,251, 39, 37, 37,221,236,210,229,126,114,168,123,247,238,194,232,209,163,203, 50, 50, 50,
-124, 83, 83, 83, 75,131,130,130, 44,202, 88,215,107,186,203,229,114,191,227,199,143,223, 94,179,102,205,243,113,113,113, 19, 0,
- 32, 52, 52,244, 72,108,108,236, 15,165,165,165,125,147,147,147, 75, 67, 67, 67,243,173, 8,181,147,171,171,171, 33, 34, 34, 66,
-213,120, 71, 76, 76, 12, 86,175, 94,141,189,123,247,150, 2,232,220,146, 72,151, 46, 93,254, 68, 81,212,106,127,127,127,187, 17,
- 35, 70, 32, 41, 41, 9, 11, 22, 44,224,244,122,125, 38, 0,132,135,135,247, 94,181,106, 21,155,154,154, 10,181, 90, 45,186,125,
-251,246, 39, 93,186,116,177, 21,190, 91,206, 4, 0,255, 5,224,143, 58,147, 53, 5,192, 33, 0,125, 0,100, 0,152,212,129,177,
-153, 13, 86,126,126, 62, 18, 18, 18, 16, 27, 27,139, 94,189,122, 65,167,211,129, 97, 24,179,185, 98, 24, 6,132, 16,139,151,210,
- 50, 26,141, 56,119,238, 28,246,237,219,135,149, 81, 81, 80,169,234,254, 76,117, 58, 29,202,202,203, 33,149, 74,205, 38,172, 37,
- 4, 65,248, 42, 43, 43,107,177,187,187,187,121,152,178,225, 16, 33, 0, 40,149, 74,240, 60, 15,131,193, 0,142,227,176,107,215,
- 46,131, 32, 8, 95,181,164,107, 50,117, 52, 77, 99,201,146, 37,224,184,251,107,142,247,239,223, 31, 0,224,229,229,133,192,192,
- 64,243,125, 83,134,202, 18,205,221, 67,250,161,182,193,179,125, 87,109, 6, 0,120,120,120,192,215,215, 23,110,110,110, 22,105,
- 62,233, 48, 64,221, 65, 10, 77, 44,116,123,231, 78,209,198,189,241,159,108,102, 69,148, 40,124,176, 47,212, 18, 3,136,220, 17,
-226,225,239,129, 56,120, 2, 0,132,178, 28,104,143,191,135, 41,129, 37,212, 62,142,254,122,245,104,111,231,152,239,178,155, 44,
-174,163, 40,106, 80,183,110,221,144,148,148,132,238,221,187, 35, 58, 58, 26,126,126,126,144,203,229, 40, 44, 44, 68,117,117, 53,
- 20, 10, 5,140, 70, 35,130,130,130,104,149, 74,245, 28,172, 52, 88,132,144,160, 89, 83,194, 66, 25, 59, 63, 12, 25,245, 12, 78,
-236, 24,174,216,251,109,193,114, 66,200, 39, 13, 23, 71,125, 92,120,233,165,151, 80, 88, 88, 40,223,191,127,127,155, 77, 86, 88,
- 88,216, 9,131,193, 48,178,181,231,201,100,178,255,252,244,211, 79, 35,172,213, 55,153,171,132,132, 4,133,131,131, 67,147, 87,
-114,109,208,244,103, 24,230,231,233,211,167,219,237,223,191,255, 95, 65, 65, 65, 47, 63, 14, 38,139, 16, 50,184, 71,143, 30,184,
-113,227, 6, 10, 11, 11,193,113, 28, 10, 11, 11, 1, 0,183,110,221,130,135,135, 7,212,106, 53, 60, 60, 60,208,187,119,111, 66,
- 81, 84,152, 37,186,207, 61,247,220, 4, 0, 84, 78, 78, 14,138,139,139, 97,111,111, 15,133, 66, 1,119,119,119,140, 24, 49,130,
-241,246,246, 30, 3, 43, 13,214,232,209,163, 39,202,229,114, 42, 47, 47, 15,185,185,185,224, 56, 14,153,153,153,176,183,183, 71,
-120,120,184,200,219,219,123, 28,172, 52, 88, 0, 2,230,204,153, 83,212,208, 92,153, 80, 40, 20,196,215,215,183,204,193,193, 33,
- 4,128,197, 6, 11, 64,192,130, 5, 11, 10, 55,108,216, 48, 44, 49, 49, 49,210,244, 96, 98, 98,226,187, 0,176,125,251,246, 36,
- 71, 71,199, 16, 0,214, 24, 44, 8,130,192,207,156, 57, 51,139,101, 89,152, 54,147,113,221,188,121, 51, 40,138,178,183, 64,102,
- 69, 70, 70, 70,127,165, 82,137,140,140, 12,208, 52, 13, 66, 72, 86, 65, 65, 65,127, 0,136,140,140,204,214,104, 52, 61, 53, 26,
- 13, 38, 77,154, 68,198,142, 29,219,111,235,214,173, 81, 0, 30, 11,131, 69, 8, 25, 8, 96, 11,234, 10,128,163, 4, 65, 56,219,
-193, 33, 61,128, 32, 8,133,132,144,103,113,223,100,165, 1,144,160,206, 92, 61, 43, 8, 66, 97, 71,197, 70, 8, 1,207,243, 96,
- 24, 6,155, 55,111,134, 78,167,195,129, 3, 7,112,232,208, 33, 80, 20, 5, 66, 8, 8, 33,176,179,179,195,135, 31,126,104,190,
-111, 9, 6,131, 1,123,246,236,193,123,145,145,102,115, 5, 0, 98,177, 24,174, 46, 46,232,228,228,132,156,156,156, 86, 13, 86,
- 81, 81, 81, 76,114,114, 50, 90, 42,114,127,229,149,251, 35,172, 13,139,220, 45,137,147,166,105,112, 28,135,145, 35,239,159, 62,
-230,207,159,111,190, 93, 94, 94,110,250,159, 0,177,240,224,105,154, 70,173, 0,188, 36,189,255,216,152,165, 75,205,183, 75, 74,
- 74,154,213,108,206,139, 60,169,180,152,193, 98,135,230,109,191,126,138, 10,156, 60,238,153, 25,142,118, 50,240,247, 10, 32,126,
-126, 21, 46,148,201,241, 65,124,221,185,112,241,164, 32, 4,140, 92, 7,238,147, 23, 48,194, 75,203,126,146, 42, 91, 6, 32,186,
- 41, 61, 39, 39, 39, 39,131,193, 0,138,162,160, 80, 40,224,232,232, 8,153, 76,134,146,146, 18, 44, 92,184, 16,199,142, 29,131,
- 86,171,133, 88, 44, 70,143, 30, 61,160,211,233,122, 90,123, 64,174,106,102,247,214,205,177, 14,165, 57,159, 33,229, 90, 5,228,
-246, 30,136,154, 19,162, 94,181,227,124, 12,128,119,173,213,123, 20,244,237,219, 23,139, 22, 45,146,127,244,209, 71,109, 50, 89,
- 6,131, 97, 45,195, 48, 67,150, 46, 93, 42,155, 52,233,183, 23,132,151, 47, 95,198,220,185,115,107,107,106,106,214, 91, 27, 91,
-112,112,240, 16,150,101,143,237,222,189, 91, 97,111,111,143, 27, 55,110, 88, 43,209,148,166, 63,195, 48, 63,111,219,182,205,174,
-103,207,158, 16,137, 68,210, 61,123,246, 60, 22, 38,203, 96, 48,116,147,203,229, 40, 41, 41,193,226,197,139, 31, 40, 80, 53, 13,
-103, 3, 64, 70, 70, 6, 60, 60, 60,160,209,104,220, 45,209,117,116,116, 84, 11,130,128,217,179,103,227,230,205,251,222,196,221,
-221, 29, 55,111,222,132,193, 96,112,180, 54, 86,181, 90,237,168,215,235, 49,124,248,112,104, 52, 26, 0,192,148, 41, 83, 32, 18,
-137, 80, 84, 84, 4,157, 78,215,169, 21,137,166,112, 26, 59,118,108, 65,115, 59, 21, 10,133, 94,173, 86,123, 89,169,217,105,220,
-184,113,249, 59,119,238, 28,223,120, 71,114,114,242,120,123,123,251, 68, 71, 71, 71, 95,171, 35, 5,120,137, 68, 2,137, 68, 2,
-145, 72, 4,150,101, 33,145, 72,192,178, 44, 68, 34, 17,104,154,182,104, 92,133,231,121, 28, 61,122, 20, 20, 69, 61, 48,116, 17,
- 29, 29,253,166,131,131,131,203,201,147, 39,205, 23,128, 85, 85, 85,240,241,241,233, 17, 30, 30,158,126,231,206,157,220,203,151,
- 47,191,220,134,184,219,147,191, 3, 48,213,133,197, 1, 8,236,192, 88,154,164,222,100, 77, 6,112, 30,117,230, 74, 11, 96, 98,
- 71,154, 43, 19, 38,131,101,250, 63,151, 74,165, 8, 10, 10, 50,155, 41, 66, 8,106,106,106,204, 67,132,150,158,244,239,222,189,
- 11, 55, 55, 55,168, 84, 42,248,244,234,133,172,204, 76, 0, 48,223,102, 89, 22, 64,157, 17,107,137,250,153,128, 75,208, 66, 61,
- 85, 91, 48,101,142, 24,166,229, 50,108, 55, 55, 55,240, 60,111, 50,150,173,101,176, 44,210,116,114,114, 66, 85, 85,149, 69,154,
- 79, 58, 12, 0, 52,229, 24, 87,175, 38, 20,119,170,123,194,228, 49,161, 51,250,120, 40,192,149,228,128, 85,118, 2,113,240,194,
- 7,241,199,113, 37,183,174, 52,234,131, 67,169,216,187,252, 69, 16,185, 35,220,106,175, 65, 37,149,188,140,102, 12, 86,105,105,
-105,149, 78,167,115,148,201,100, 96, 24, 6, 98,177, 24, 37, 37, 37,120,255,253,247,113,240,224, 65,120,121,121,193, 96, 48,128,
-101, 89, 20, 23, 23, 67, 44, 22, 91, 53, 59,145, 97,200,216, 85,139, 70,119, 87,116,234,133,210,212, 53,117, 15,218, 5, 97,206,
- 20,154,253,199,190, 75,211, 9, 33,255, 16, 4,161,205, 69,186, 15, 11,165, 82,137,192,192, 64,188,250,234,171,242, 3, 7, 14,
-124, 10,192,195,154,215,167,164,164,252, 18, 28, 28,252,194,150, 45, 91, 78,220,190,125, 91, 54, 96,192, 0, 40,149, 74, 40,149,
- 74,228,228,228, 96,205,154, 53, 26,142,227,198,181, 37, 59,198, 48,204,158,153, 51,103, 42,236,236,236,144,147,147, 3, 71, 71,
-171,125,192, 3, 4, 7, 7,251,139, 68,162,159,183,109,219,102,231,237,237,141,171, 87,175, 34, 56, 56, 24,174,174,174,210, 13,
- 27, 54,116,184,201, 18,139,197,183,138,139,139,189,187,118,237,138,132,132, 4, 80, 20,133,130,130, 2, 68, 69, 69, 97,195,134,
- 13, 8, 11, 11,131, 74,165, 66,215,174, 93,145,149,149, 5,169, 84,122,219, 18,221,252,252,252, 50, 0,157,143, 29, 59,134,226,
-226,251, 45, 91, 60, 61, 61, 81, 86, 86, 6,142,227, 74,173,141, 53, 63, 63,191, 20,128, 75,122,122, 58,114,115,115, 49,106,212,
- 40,124,253,245,215, 8, 9, 9,129,209,104,132, 94,175,183, 90, 19,128,145,166,233,102,191,244,234,175, 56,213, 86,106, 26, 90,
-210, 68, 93,191, 41,107, 53, 33, 8,130,208,156,185, 98, 89, 22,173,188,167,137, 88, 63, 63,191,213, 61,122,244,232, 19, 21, 21,
- 37, 98, 24, 6, 67,135, 14,237,189,108,217,178, 60,153, 76,214,233,189,247,222,147, 55,241, 26, 25,128,254,125,250,244, 81, 88,
- 27,243, 67,160, 97,150,238,177,156,116, 66, 8,233,140,186,140, 31, 11, 64, 87,255,243, 11, 83, 77, 86, 7,198, 5,158,231, 33,
- 22,139,177,106,213, 42,188,245,214, 91,112,113,113, 65,100,100, 36, 24,134, 49,111, 64, 93, 86,198,148,213,178, 4, 65, 16,224,
-210,185,197,209,105,115,145,123, 75, 60,172, 54, 13, 38, 51,100, 73, 45, 84,131,108, 83,139,207,107, 15,205,167, 41,123, 5, 52,
- 51, 68,104, 54, 87,163,130,103,248,121,200,144,150,122, 17, 1,174,122, 8, 34, 81,243, 74, 70, 61,136, 88, 1, 7, 25,211,172,
- 57, 32,132,164,230,230,230,122, 58, 56, 56, 64,167,211,129,101, 89, 4, 4, 4,224,244,233,211,224, 56, 14, 90,173, 22, 18,137,
- 4, 98,177, 24,151, 46, 93,130, 78,167, 75,178,244, 64, 8, 33,180,139,154,222,246,238,138, 53, 42,228, 39,192, 65,197,226,185,
- 65,222,128,162, 15,232,234,107,216,178,114,156,227,155, 81, 95,127, 0, 11,234,101, 30, 53, 74,165, 18,121,121,121,248,252,243,
-207,107, 56,142,155,222, 22, 13,147,201, 58,120,240,224, 9, 7, 7, 7, 89, 88, 88, 24, 50, 51, 51,177,126,253,122, 13,199,113,
- 99,219, 90,223,101, 48, 24,222,216,181,107,215, 49,131,193,160, 48,153,139,182, 98,202, 92, 45, 92,184, 80,229,227,227,131,236,
-236,108,216,219,219, 67,165, 82,161,123,247,238,112,115,115,147, 46, 92,184,176, 67, 77, 22,207,243,167,178,179,179,123,250,249,
-249,145,222,189,123,131,101, 89,184,187,215, 37,169,250,247,239, 15, 63, 63, 63,136,197, 98, 0, 64,118,118, 54, 96, 97, 95,150,
-159,126,250,233,223, 25, 25, 25,179, 66, 66, 66,104, 87, 87,215, 7,102, 39,109,216,176, 65,151,151,151,103,245, 50, 15, 63,254,
-248,227,215, 23, 47, 94,156, 61,116,232, 80, 70,173, 86, 67, 34,145, 32, 32, 32, 0,110,110,110, 88,191,126,189,238,250,245,235,
-109, 89, 58,226, 70,122,122,186,180, 87,175, 94, 77,142, 93, 40,149, 74, 21, 0,107, 51, 15,183, 82, 82, 82,196,131, 6, 13, 58,
-242,221,119,223,249, 55,220, 17, 26, 26,122, 68,169, 84,218, 3,176,200,168, 54,130,111, 56, 52,216,112,168,144,101, 89, 48, 12,
-211,106, 6,171,160,160,224, 27, 87, 87,215,255,115,113,113,249,101,240,224,193,246,231,207,159, 71,116,116,180,152,227,184,110,
-137,137,137, 0,154,110,146, 40, 8, 2,170,171,171,165,191,217,241,232, 89, 12, 96, 43, 0, 57,128,200, 86,158,251,200, 33,132,
-184,160,174,160,221, 23,117,195,130, 83, 80,103,182, 76, 53, 89, 29,106,178,120,158,135, 72, 36,130,175,175, 47,150, 44, 89,130,
-141, 27, 55, 34, 34, 34, 2, 62, 62, 62,166,248,205, 53, 88,245, 51,222, 44, 58,241,139,197, 98,184,184,186, 66,175,215,155,179,
- 87, 0,144,149,153, 9,134, 97,192,243, 60, 56,142,107,117,136,176,115,231,206,171, 55,109,218,180,112,244,232,209, 84,195, 25,
-119,130, 32,152,219, 73, 52,220,244,122, 61,190,249,230,155,133, 27, 54,108, 0, 44,200,122,209, 52,141,254,253,251, 63, 48, 44,
-184,125,251,253, 74,133,160,160, 32,132,135,135, 91, 53,219,143,166,105,248,174,218,252,192,176,224,255, 58,223,255,216,186, 78,
-155, 3,159,245,219,154,212,124,218,134, 8,155,252,212,116,167, 61,215, 77,122, 49,112,134,159,187, 4,233,169,151,240,109,242,
-237,107, 37, 37, 21,224, 11, 47,130, 47,190,138,197,147,130,208,199,203, 17,125,188, 28,177,120, 82, 16,248,162, 75, 16,202,115,
- 32, 72,213, 40,170, 38,205, 14, 47,148,149,149,253,125,237,218,181,229,106,181, 26, 82,169, 20, 44,203,226,214,173, 91,232,219,
-183,175,249,126,253,149, 39,162,163,163,139,139,139,139,227, 45, 61, 16,133,140,154,179, 49,106,170,139, 88,162, 2,202,146, 96,
-103,167, 68, 66,252,102,128, 43, 0, 40, 22,127, 10, 15,164,221, 92, 28, 70, 16, 66,122,183,229,131,122,152,220,184,113, 3,171,
- 86,173,170,169,173,173,253, 93,133,238, 41, 41, 41,191,232,116,186, 23,226,227,227,107,191,253,246,219,223,109,174, 76,154,122,
-189,126,212,167,159,126, 90,125,227,198, 13, 40,149,202,182, 74, 65, 44, 22,191,103, 48, 24,236,182,110,221,202,143, 28, 57,210,
- 56,111,222, 60,227, 27,111,188, 97,124,229,149, 87,140,225,225,225,198,185,115,231, 26, 57,142,147,200,229,242, 77,109,126,147,
-223, 9,199,113,219,227,226,226, 52, 20, 69, 65,169, 84,130,101, 89, 56, 59, 59, 3,168, 51,194,166, 19,185, 78,167,195,142, 29,
- 59,106,107,107,107, 63,176, 68,183,180,180, 52, 97,217,178,101,215, 79,156, 56,161, 55,205,242, 41, 40, 40,192,250,245,235,117,
-241,241,241,249, 21, 21, 21, 31, 91, 27,107,101,101,229,158,119,223,125, 55,247,232,209,163,122,138,162, 80, 94, 94, 14, 7, 7,
- 7,172, 95,191, 94,247,241,199, 31,231,223,187,119,207,106,205,103,158,121, 38, 59, 63, 63, 95,197,113,220,111,178, 63, 34,145,
-136, 72,165,210, 80, 0, 63, 90,163, 25, 18, 18,146,157,155,155,107,183,110,221,186,147,225,225,225, 27, 85, 42, 85,166, 74,165,
-202, 12, 15, 15,223,180, 99,199,142,255,212,107, 38, 90, 27, 43, 69, 81,102,131,101, 26, 42, 52,101,177,234, 51, 89, 22, 13, 17,
-250,249,249,125,182,111,223, 62,251,204,204, 76, 84, 86, 86, 34, 45, 45, 13,169,169,169,230,161, 92,211,201,172,225, 6, 0, 53,
- 53, 53, 50,107, 99,110,111, 4, 65,248,175, 32, 8,253, 5, 65,240, 22, 4,225,113,156, 36,115, 8,247,205,213,179,245, 51,207,
-158,173,191,239, 15,224,223, 29, 21, 88,253,144,159,249, 98,103,234,212,169, 72, 76, 76,132,143,143,143,217, 84, 53,156, 69,104,
-141,201, 48, 26,141, 8, 8, 8, 0,167,213, 62, 96,208, 25,134,129,179,179, 51,178,179,179, 97, 48, 24, 90,205, 96, 17, 66, 38,
-143, 30, 61,154,186,124,249, 50,252,252,252,144,154,154,138,212,212, 84,164,165,165, 33, 61, 61, 29, 23, 46, 92,192,165, 75,151,
-112,229,202, 21, 4, 7, 7, 35, 47, 47, 15, 47,190,248,162,169, 77, 67, 75, 88,149,109,178, 48,123,247, 48, 52,159,104,204, 67,
-132, 13,127,186,168, 21,111,244,113, 99,144,158,126, 5, 71, 82,202,246, 18, 66, 29, 78,189,206,125,251, 98,143,123,208, 29,252,
- 11, 2, 38,239,199,222,229, 47, 2, 0,248,162, 75,208,125,245, 58,136,220, 9, 89,149, 10,212,106, 43,154,189,106, 22, 4, 33,
- 89,173, 86,127,185,111,223,190,153, 51,102,204, 96,121,158,135, 76, 38,195,219,111,191,109,238, 17, 66,211, 52, 34, 34, 34,170,
-138,138,138,182, 10,130,144,109,201, 65, 16, 66,100,238,206,236,202,215,102, 71, 75,113,115, 39, 64,137, 81,130, 1,232, 63,108,
- 38,138,114, 79, 3,213, 87, 0, 34, 70,252,223,102, 57,141,127,227, 31, 31, 3,248,159,223,251,193,181, 23, 87,175, 94, 69, 76,
- 76,204,239, 54, 87, 38, 76,153,172, 35, 71,142,124,202,113,220,236,118,212, 28,181,113,227,198, 99,157, 59,119,110,243,176,136,
-187,187,251,180,146,146,146,153, 22, 60,181,195,134, 58, 82, 83, 83, 83, 7, 13, 26, 20,183,117,235,214,136, 69,139, 22, 73,101,
- 50, 25,236,236,236,144,145,145,129,110,221,186, 1, 0,106,107,107,177,124,249,242, 90,189, 94,191,247,220,185,115,167, 45,209,
- 21, 4,129, 39,132,188, 54,119,238,220, 89,189,123,247, 30,207,243,124, 39,173, 86, 91,154,151,151,119,244,222,189,123,109,234,
-131, 85,175,249,234, 91,111,189, 53,163, 87,175, 94, 19,117, 58, 93, 39,131,193, 80,122,243,230,205, 35,149,149,149, 9,109,209,
- 60,117,234, 84,241,238,221,187,115,238,220,185,211,215,205,205,237,174,189,189,189, 86,171,213,210, 74,165, 82,197,178,108, 48,
-128,211, 0,174, 88,163,121,238,220,185,194,248,248,248, 92,142,227,122,239,218,181, 43, 73,161, 80,252, 64, 8, 33, 98,177, 88,
-173, 80, 40,158, 3,112, 18, 64,150,181,177, 82, 20,197, 55, 52, 84, 13,179, 88, 98,177, 24,132, 16,139, 12, 86,118,118,246, 47,
-107,215,174,237,215,163, 71, 15,196,199,199,151, 41,149, 74,213,196,137, 19,153,187,119,239, 18,160,249, 12, 86,109,109,237,227,
-144,193,122,220, 41, 69, 93,150,119,130,169,230,170, 65,225,251, 33, 0, 21, 29, 25,156, 32, 8, 15, 24,169,110,221,186, 61, 96,
-170, 26,238,179,198, 96, 25, 12, 6,136,197, 98, 48, 12, 3, 87, 55, 55,179,153, 19, 4, 1,153, 89, 89, 40, 47, 47, 55,183,105,
-104, 9,138,162,104, 66, 8,254,252,231, 63, 91,244,190, 83,167, 78,197,201,147, 39,209,218,112, 98,195, 25,127, 94, 94, 45,151,
- 84,154, 12, 19, 69, 81, 22,207, 34,244,240,104,185,202,165, 57,205,198, 94,228, 73,167,201,106,180,130,178,154,117,187,255,149,
-182,188,160,210,112, 88, 50, 56,111,201,170, 85, 16,150, 63,239,117,194, 67,193,190,208,135,202, 7,247,241, 80, 16,187,186,147,
-141, 80, 85, 0,162,112, 69,185,168, 27,190, 73,189,115,135, 18,209, 45,102, 31, 42, 42, 42, 22,127,248,225,135,244,177, 99,199,
- 38,199,198,198, 58,248,250,250,226,181,215, 94,131, 86,171,197,133, 11, 23, 48,119,238,220,178,226,226,226,157, 21, 21, 21, 27,
- 45, 61, 8, 39, 59,230,253, 15, 86,188,208,137,226,171,128,202, 20,128,177,135,147,163, 10,191,158, 79, 2,238,158, 7, 40, 49,
- 64,177, 8, 25,224,135,254,254,222,126,132,144,161,130, 32,252,108,213, 39,245,144,120,243,205, 55,219,205, 92,153, 72, 73, 73,
-249, 5, 64,143,246,210, 51,105, 6, 7, 7,143, 90,186,116,233, 49,158,231,155,170, 75,105,149,175,190,250,202, 8,160, 93, 90,
- 60, 60, 76,244,122,253,242,203,151, 47, 99,254,252,249,111,189,254,250,235, 50, 95, 95, 95,120,122,122, 34, 51, 51, 19, 25, 25,
- 25,136,139,139,211,240, 60,159, 80, 81, 81,241,142, 53,186,245, 61,169,118,214,111,237, 66,125, 51,209, 79,234,183,118, 97,214,
-172, 89, 23,179,178,178,202,220,221,221,195,104,154,238,135,186, 70,145,183,235,223,195,106, 35, 4, 0,115,231,206, 77,207,201,
-201, 41,113,117,117, 13, 19,139,197,222,245,154,249, 0, 18,218,168, 89,250,235,175,191,122,135,134,134,242, 52, 77, 11, 34,145,
- 72,168, 63, 25, 10, 12,195, 8,132, 16,225,248,241,227, 82, 0,173,214, 92,222,186,117,107,225,222,189,123, 5,165, 82, 25, 86,
- 85, 85,245, 26,128, 79,107,107,107, 67, 43, 42,234,206,253,205,117,226,214,104, 52,146, 54,196,253,135, 66, 16,132,151,154,121,
-188, 16,192,208, 71, 28, 78,147,172, 93,187, 22, 59,119,238, 68,107, 29,200,143, 28, 57, 2,180, 50, 68,104,250, 91, 49,213, 87,
-105,181, 90, 92,190,124, 25,132, 16,243,253,134, 77, 70,141, 70, 99,139,157,222,121,158, 55,106,181, 90,124,249,229,151, 22,153,
-172,207, 63,255, 28, 26,141, 6, 60,207, 91,244, 61, 91,223,152, 20,229,229,229,230,214, 9, 65, 65, 65,230,253, 58, 93,139,141,
-235,155,213,244,245,245, 69, 73, 73, 9,156,156,156, 0,212, 13, 11,154, 48, 84,183,216,247,247,169,130,180,244,203,109,200,234,
-103,189,236, 53, 12,245,175, 64,119,254,217, 16, 79, 9,156, 28,164,160, 69, 18, 84,106, 8, 46, 23,104,240,243,149,202,155, 70,
-131, 48,110,253, 15,215, 45,106, 16, 71, 8, 25,228,230,230,182,194,104, 52,250, 83, 20, 37, 23, 4,161,138,166,233,180,130,130,
-130,213,130, 32, 92,178,230, 32, 28, 84,116,150, 90, 65,219,139, 88, 86, 48, 26,120, 0, 20, 64, 81, 0,161, 0,208,245, 63,235,
-238,215,214,234,196, 70,158, 28, 46, 44, 46,105,178, 97,224,163,100,216,176, 97, 39,170,171,171,159,184, 78,238, 50,153, 44,134,
-166,233,167,182,147,187,137,129, 3, 7,134,200,100,178, 21, 60,207, 15,212,104, 52,174, 50,153,172,144, 16,114,254,222,189,123,
-127, 75, 75, 75, 59,211,209,241,253,145,105,207, 78,238,141, 49, 45,246,236,228,228,212,235,215, 95,127,149, 54,204, 96, 53,252,
-190,180,102, 86,153,141,199,143, 62,125,250,156,253,236,179,207, 66,186,117,235, 70,153, 10,174, 41,138, 50,111,166, 97, 44, 83,
-182,229,204,153, 51,134,121,243,230,157, 78, 79, 79, 31,214,156,166,143,143,207,137,196,196,196,145, 13, 51, 84, 38, 35,213,248,
-182,209,104, 68, 77, 77, 13, 98, 98, 98,190,207,202,202,106,114,169, 28, 63, 63,191,173, 43, 87,174, 92, 56,102,204, 24,138,162,
-168,223,212, 92, 53,174,195,210,233,116, 56,124,248, 48,191,103,207,158,109, 87,175, 94,109,182, 6,107,192,128, 1, 55,211,210,
-210, 60, 76, 45, 19, 26,111,141,103,212, 2,192,160, 65,131,110,159, 61,123,182,217,255,183,135,161,249,164, 99,177,193, 2,234,
-102, 16, 69,142,240,156, 66, 64, 77,166, 8, 31, 0, 66, 88, 94, 64, 6, 1, 78,176, 82,237,142,152,111, 10,106, 27, 61, 63,160,
-189, 59,242,218, 52,109,154, 29,161, 73, 8,161, 4, 11,150,158,233,232, 56,109,154,237,167,233,227,227,147,149,149,149,229,221,
-130,142,217, 96, 61,109,199,254, 71,208,116,118,118, 86, 56, 59, 59,255, 64, 81,148,167,201, 68, 55,247, 19, 0,120,158,207, 45,
- 44, 44,124,190,176,176,176,166, 57, 77, 15, 15,143,158, 82,169,244,159, 60,207,135,182, 86, 95, 36,212, 45, 21,147,172,209,104,
-230, 53, 92,236,185,161,102,123,205, 34,108, 28,167,191,191,127,118,114,114,114, 79,153, 76,246, 64, 93, 97,227, 99, 54,113,253,
-250,117, 76,156, 56, 49, 47, 61, 61,221,171,193,243,218, 93,243,105,195,170,181, 8,133,186, 79,236,203,250,205,134,141, 63, 12,
-150,152, 43, 27, 79, 23,181,181,181,229,206,206,206, 85, 26,141, 70,196,113,156,200, 96, 48, 60,112,130,147,201,100,197,205,189,
-214,198,227, 79,125,102,211,162, 70,193,150, 82,111,148,154,204, 70,181,133,135,213, 7,171,188,188,124,220,192,129, 3,143, 51,
- 12, 35,105,108,126,154, 50, 67, 70,163, 81, 83, 90, 90, 58,234, 81,107, 62,233, 88,189,216,179, 13, 27, 54,108,252, 17,200,207,
-207,111,215,147,175, 13, 27,143, 11, 5, 5, 5, 25, 0, 60, 31,119,205, 39,157,167,123, 41,107, 27, 54,108,216,176, 97,195,134,
-141, 14,192,102,176,108,216,176, 97,195,134, 13, 27, 54,218, 25,155,193,178, 97,195,134, 13, 27, 54,108,216,104,103,108, 6,203,
-134, 13, 27, 54,108,216,176, 97,163,157,249,127,251,242,228,233,243, 39,139,130, 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, 2, 88, 0, 0, 2,128, 8, 6, 0, 0, 0, 64, 11, 6,158, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215,
+ 0, 0, 13,215, 1, 66, 40,155,120, 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, 4,103, 65, 77, 65, 0, 0,177,142,124,251, 81,147, 0, 0, 0, 32, 99, 72, 82, 77, 0, 0,122, 37,
+ 0, 0,128,131, 0, 0,249,255, 0, 0,128,233, 0, 0,117, 48, 0, 0,234, 96, 0, 0, 58,152, 0, 0, 23,111,146, 95,197, 70,
+ 0, 2,168,136, 73, 68, 65, 84,120,218,236,157,119,120, 20,197, 31,198,223,217,221,235,119,233, 36, 33,133, 22, 58,132,150, 4,
+148, 94,165, 73, 17, 4, 5, 4, 21, 27,168,232, 15, 21, 1, 11, 2, 42, 96, 65,138, 10, 40, 22, 20, 4, 20,149,166, 72,147,222,
+ 9, 82, 66,111,129, 52, 66, 18,210,175,223,238,252,254,200,221,121, 57, 46,185, 11,132,234,124,158,231,158, 43,187,251,222,236,
+238,204,236,187,223, 41, 75, 40,165, 96, 48, 24, 12, 6,131,193, 96, 84, 30, 28, 59, 4, 12, 6,131,193, 96, 48, 24,247,144,193,
+ 34,132, 52, 97,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,203,251, 65,165,183,224, 68, 81,251,171,227,221,174,121,
+ 11,247,157, 86,162,102, 71,187,230,228,123, 36,157, 29,239, 86, 77,199,254, 86,166,174,235, 49,172,172,227,233,146, 78, 90,217,
+233,188, 85,154,149, 93, 46, 43, 51,143,122, 56,239,147,239,145,116,118,188,219, 52,221,243, 79,101,232,122,202,147, 55,123, 60,
+ 61,164,147, 86,118, 58,111,149,102,101, 95, 47, 43, 43,143,150,115,238, 43,237,218,116, 55, 35,220,105,131, 1, 0,148, 82,226,
+162, 79,238, 86, 77,215,227,224,208,175,204,180, 86, 34, 91, 43, 91,211,237,120, 86, 22,147, 41,165,132, 16,178, 13, 64,199,202,
+220,247,202, 56,239,110,251, 90, 41,186,183,210, 92, 85,102,190,191,213,154,149, 85,150,220, 53, 43, 35,223,123, 58,239,183,240,
+ 28, 85, 86, 58, 43,165, 44,221,138, 60,239, 33,255,220,180,174,187,102,101,148, 37,119,205,202,200,247,183, 67,179, 50,202,146,
+ 39,205,202,200,247,101,157,123, 22,193,186, 61, 70,192,189, 96,119,186,155,141,208, 45,142, 98,117,188, 23, 52, 43,249, 28, 77,
+182,107, 86,230,221, 76,167,202, 58, 71,238,121,167, 50,238,186, 92, 53, 43, 43,111,122, 72,231, 77,159, 39, 79,154, 55,155,222,
+ 50,210, 89,233,251,126,179,249,254,118,105, 86,242, 57,170,148,178,228,166,217,169,146,111, 2, 58, 85,102, 89,114,213,172,172,
+178,228, 33,157, 55,125,158, 60,105,222,108,122,203, 72,103,165,239,123, 37, 70, 68, 43, 93,247,190,139, 96,221, 74,115,117, 43,
+204,155,227, 46,169,178, 47,100,149,105,178,110, 85,164,173,178,162, 56, 30,116,183, 85,162,220,214,202, 78,167, 61,125,228, 86,
+ 24, 97, 74,233,100, 66,200,123,119,115,129,102,101,137,149,165,187,173, 44,121,202, 55, 55, 91,150,110,213,205,179,171,102,101,
+ 25, 33, 15,251,126, 83,101,201,125,219,202, 40, 75, 94, 52,201,173,216,255,202, 46, 79,119, 35,119,205, 40,194, 91,208,191,135,
+222,138,168,216, 45,220,239,202, 76,103,167,123, 97,223,111, 69, 58, 9, 33,147,111,209,190,223, 43,199,148,149, 37, 86,150,238,
+186,178,228,150, 39, 59, 85, 86,100,168,178,111,164,220, 53, 43,179, 31, 82,101,230,209, 91,189,239,149, 89,150,110,197,185,191,
+ 87,168,112, 4,235, 86,221, 29,223, 11,154,183, 66,251, 22,237,251,182, 91,113,119,112, 11,250,117, 85,122, 58, 41,165,147, 81,
+137, 77,142,142,125,174,204,180,222,202,102,194, 91,145, 55,111,101,126,175,204,126, 30,183,104,223,239,149,243, 94,233,233,172,
+172,178,228,225,156,223,116, 90, 61, 29,191,202,110,194,174,204,188,121, 43, 53, 43, 67,251, 86,164,243, 86,157,251,123, 9,194,
+ 38, 26,101, 48, 24, 12, 6,131,193,168, 92,202,140, 96,197,197,197,173, 85,169, 84,117,202, 90,174,215,235, 51, 14, 31, 62,220,
+153, 29, 66, 6,131,225,245, 78,142, 16, 14,255,118, 73,144, 74,110,102,217,221, 29,131,193,248, 15, 26, 44,185, 92, 30,179,125,
+251,246,122,146, 36,193,102,179, 65, 20, 69,136,162, 8,155,205, 6,179,217,140, 71, 31,125,180,194,205,139,205,155, 55,223,206,
+113, 92,205,138,108, 35,138,226,229, 35, 71,142,180, 43,107,121,120,120,248,110, 0, 49,132, 16,215,202, 28,142,239,174,191,115,
+156,179,203, 89,122, 74, 74, 74, 92,121,154,132,144, 24, 87, 61,119, 45, 15,186,229,106, 54,104,208,224,160, 32, 8,209,158,182,
+ 47, 75, 91,146,164, 11,199,142, 29,107,195,178,233,237,161,121,243,230,219,121,158,175,112,254, 60,124,248,112,153,249,179, 73,
+147, 38,255,112, 28, 23,233,233, 28,151,145,159,120, 81, 20, 79, 31, 57,114,164, 93, 89, 6, 36, 34, 34, 98, 55,165, 52,198,199,
+124,233, 32, 53, 37, 37, 37,193, 91, 57, 42, 47,157, 30,180,203,213,116, 53, 87, 81, 81, 81, 51, 66, 67, 67, 71,235,245,122, 35,
+ 0,202,113, 28,109,212,168, 81, 41,125, 81, 20,179, 78,158, 60,201, 38, 47,100, 48, 24,247,183,193,146, 36,137, 51,153, 76, 56,
+115,230, 12, 60,213,243, 28,199,137, 21,253, 51, 74,105,189,205, 75, 23,135,169, 67,195, 33, 90,204, 80, 86, 9,115,106,231,157,
+ 56, 6,209, 98,129,100,181,160, 74,194,131,142, 52,160, 83,167, 78,188, 23,217,232,177, 99,199,134,249,249,249,193,104, 52,194,
+104, 52,194,100, 50,193,100, 50,193,108, 54,195,108, 54,195, 98,177,192, 98,177,192,106,181,194,100, 50,225,216,177, 99,162,151,
+ 11, 66,244, 43,175,188,226,212, 52,153, 76, 48, 26,141, 78, 45,147,201,228,212, 52,155,205, 48,153, 76, 56,126,252,120,185,154,
+130, 32, 68, 31, 58,116, 40, 76, 46,151,131, 82, 10, 73,146, 64, 41, 45,245,114, 59, 86,104,219,182,173,133,101,209,219, 74,189,
+149, 31,125, 24,166, 12,169, 2,201,106, 69, 72,243,120,231,185, 72,219,252, 23, 36,171, 21,146,213,138, 26,125, 7, 58,127,239,
+216,177,163,183,252, 89,227,215, 73, 19, 3,229,126,126,176, 25,141,168,213,103,128,115, 65,210,252, 89,160, 86, 43,168,205,130,
+166,175,189, 3, 0,200,206,206, 54, 52,108,216, 48, 29, 37,253, 20,202,138,240, 68, 95,188,120, 49,204,145, 6,119,163,206,113,
+ 92,169,215,206,157, 59, 49,124,248,112,111,251, 30,253,246,219,111,135, 57,202,136,107, 94,183, 90,173,206,242, 99,179,217, 96,
+181, 90, 97, 54,155,241,207, 63,255,248, 20,185,138,136,136,248,168,125,251,246, 35,151, 44, 89,162,253,253,247,223,181,181,106,
+213,130, 92, 46, 7,207,243,224,121, 30, 28,199,129,231,121,244,239,223,159,176, 44,200, 96, 48,238,123,131,101,177, 88, 46,118,
+239,222,157, 2,128,217,108,142, 82, 40, 20,114, 55, 3, 22,217,182,109,219,211,238,219,121,107, 58, 84,135,134,227,187, 90,193,
+ 0,128,193,231,115,156, 23,133, 21, 29, 90, 56,215, 25,122, 41,191,100, 93,181, 26, 28,199, 17, 47, 21, 56,116, 58, 29,186,119,
+239, 14,133, 66,129,248,248,120,200,229,114,200,100,178, 50, 95,190,160,213,106, 49,101,202, 20,135, 57,130, 86,165,196,139,237,
+ 31,132,138, 80,124,119,228, 20, 76,162, 4, 65, 16, 32, 8, 2,100, 50,217,117, 17, 41, 79,200,229,114, 28, 59,118, 12, 60,207,
+ 67, 16,132, 82,239, 60,207, 99,205,154, 53, 24, 52,104, 16,120,158,135, 70,163, 1,254, 67,157, 1,239, 22,148, 33, 85,240,107,
+199,146, 64,228, 19, 41,133,206,223,255, 26,210,215,249,121, 68, 90, 49, 8, 33,144,203,229,190,157,119, 63, 63,252, 57,168, 23,
+ 0, 96,224,153,171,206, 60,115,116,214,135,144, 41, 20, 16,100,114, 52, 25,251, 54,178,179,179, 13, 3, 7, 14,220,169, 82,169,
+214,251,112,179,130,203,151, 47, 59,181,100, 50,217,117,249,158,227, 56,124,255,253,247,184,116,233,146, 79,251,110, 48, 24, 48,
+109,218, 52,231,190,121,210,117,253,236,109,223, 9, 33, 92,213,170, 85, 63,104,223,190,253,240, 37, 75,150, 4, 17, 66, 48,111,
+222, 60, 8,130,128,135, 31,126, 24, 33, 33, 33,216,176, 97, 3,228,114, 57,198,141, 27,199, 50, 31,131,193,248,111, 24,172,195,
+135, 15,247,114,124,126,240,193, 7, 79,238,220,185,179,129, 75, 40, 31, 54,155, 77,110,179,217,234, 57,154, 13,109, 54, 27, 76,
+ 38, 19,134, 14, 29, 90,238, 29,189,104, 49, 95,103,144,202, 50, 78,190, 98, 54,155, 49,120,240, 96,167,137, 41,207, 92,249,120,
+ 97,128,201,100,130, 32, 8,168, 93, 61, 20,239, 12, 78, 64, 91,158,194,144, 3, 32,187, 24, 79, 69, 8, 56, 28, 93, 15,159, 95,
+206,193,165,130, 34, 8,130,111,173,165,146, 36,149, 50, 84,238,159, 23, 44, 88,128, 33, 67,134,128,231,249,235,154,144, 24,183,
+ 7,201,106,245,154, 15, 43,122,110,108, 70, 35, 0,128,119, 49,228, 50,153, 12, 10,149, 10,188, 76, 6, 65, 33, 71,118,118,182,
+225,161,135, 30,218,171, 86,171,127,168, 90,181,106, 90,106,106,106,185,249,147, 82, 10,153, 76, 6, 65, 16,202,204,243,223,127,
+255, 61, 22, 47, 94,140, 86,173, 90,249,148,231,205,102, 51,228,114, 57, 62,252,240,195,235,150,207,159, 63,255, 58,131,229, 69,
+143, 0,224,194,195,195, 95, 92,186,116,169,191,227,255, 67, 66, 66, 32,147,201, 16, 27, 27, 11, 63, 63, 63,236,220,185, 19,162,
+ 40,250,108, 86, 25, 12,198,127, 22, 25,128,230, 0, 66, 1,136, 0, 10, 1, 4,186, 44,207,178,191,135,186,124, 63,224, 65,167,
+165,125, 29,199,114,199,119, 51, 0,133,135,223,115, 0,168,237, 47, 19,128,221, 0, 98, 93,254,199,177, 29,220,255, 87,176, 87,
+134, 29, 1,108, 5,208,201,211,228,119,142,230,194, 83,167, 78,193, 91,191, 84,111,195, 59,149, 85,194,156,145,171, 95,106,135,
+ 56,127, 31,146,156,231,172, 96,255,108, 85, 23, 74,157, 22, 9,147, 63,241,122,196, 29, 23,134,171, 87,175, 94,119,231,125,163,
+ 6, 11, 0,172, 86, 43,212,106, 37,182,124,213, 1, 25, 23,108,248,112,109, 10, 86,237,191, 8, 65, 16,208,167, 65, 93, 60,106,
+ 3,102, 4,171,240,130, 77,132, 69,162, 62, 93,192, 40,165,215,153, 43, 87,147, 69, 8,113,254,198, 46, 54,119,134,144,230,241,
+206,200,213,146,106,126,215, 69,173, 0, 96, 85,139,154, 80,249,233, 16,251,234, 4,159,242,103,173, 62, 3,156,145,171, 63,226,
+ 99, 32,200,229,144, 41, 21,120,244, 72, 10,128,146,102,193, 46, 77, 27,109,203,227, 21,139,158,124,242,201, 11,155, 55,111,214,
+248,146, 86,185, 92, 94,202,176,121, 50, 87,130, 32,192,234,102, 26,203,187,169, 40,203, 56, 57,202, 85, 69, 34, 88, 0,160,215,
+235,205,171, 86,173,194,231,159,127,142,144,144, 16,116,239,222, 29, 85,171, 86,197,138, 21, 43, 64, 41,197,203, 47,191, 12,181,
+ 90, 13,181, 90,205,242, 60,131,241, 31,199,139, 23,233, 48,113,226,196,132, 25, 51,102, 76,107,221,186,245,178,221,187,119, 47,
+ 37,132,172,117,241, 30,125,236, 26,107, 93,190,183,116, 51, 89, 50, 0,161,132,144,181,142,245, 93,191,187,252,222, 13,128,194,
+241,125,226,196,137,177, 51,102,204,152, 54, 97,194,132,183,166, 79,159, 46,159, 56,113, 98,211, 25, 51,102, 76,115,252,143,167,
+116,184, 70,176,202,157, 5,216, 98,177, 92,236,214,173,155, 79, 35,126, 12, 6,195, 21, 47, 6,204, 99,100,192, 53, 42,160,244,
+211, 65,237,231, 7,194,249, 86,225, 90,173, 86, 8,130, 0,142,227,176,113,227, 70,168,213,106,244,238,221,251,134,155, 8, 29,
+166, 77,161,144, 67, 8,228,240,228,103, 7,145,149,171,119, 54, 9,110, 74, 78,193,126,181, 26,239, 52,106, 10, 93, 81, 50, 10,
+ 76,230,155,138, 96, 13, 25, 50, 4, 70,163, 17, 28,199, 57,127,227, 56, 14,255,165,103, 54,221,133, 5,221,227,119, 66, 8, 84,
+254,126, 80,233,116,224, 5,222, 39, 45, 74,233,191, 70, 72,161,128, 76,169,128, 32,151, 59,205,213, 67, 15, 61,180, 55,143, 87,
+ 44, 74, 75, 75,219, 11, 64,229,171,193,114, 68,176,202, 51, 87,130, 32,192, 98,177,248,100, 94, 76, 38, 19,228,242,127,123, 2,
+ 92,190,124,185, 92,131,229,101,159, 41, 33, 68, 34,132, 72, 49, 49, 49,206,109,194,195,195, 17, 24, 24, 8, 73,146, 32, 73, 18,
+ 84, 42, 21,212,106,117,169,255,101, 48, 24,255, 89,202,243, 34,202, 25, 51,102, 76,115, 53, 48,238,134,198,213, 56,185,153, 40,
+ 87,147, 22,235,165,238, 95,235,110,154, 28,255, 75, 8, 89, 59,125,250,244, 62, 94,210,145,229,110,176,202,157,102,223,181,185,
+176,178, 46, 94,229, 93,192,212, 1,254, 80,104,181,176,119,191,162,222,180, 44, 22,139,179,207,201,232,209,163,203,188,171,119,
+237,155,226, 13,179,217, 12,158,227, 1,101, 45, 72,216,231,188, 88, 57, 95,114, 57,146,171, 55, 3,185,146, 6, 65,240,173,191,
+191, 35,130,229, 48, 81, 47,191,252, 50, 22, 46, 92,232,236,152, 12, 0, 60,207,163,126,253,250, 56,127,254, 60, 43,106,119, 0,
+ 74,169,215,102,107,149,191, 31,148, 58, 29,120, 31, 34,141,142,229,206, 62, 76, 42, 37,120,185, 28,130,188,164, 89,176, 95,191,
+126,219,242,242,242, 22, 53,110,220,248, 44, 74,166, 49, 32,190,150, 31, 79,249,124,209,162, 69,165,204, 85, 69, 34, 88,142,114,
+228,138,167,230,194,129, 3, 7,250, 26,193,162,132, 16, 42,147,201,208,173, 91, 55, 52,109,218, 20,171, 86,173,130, 36, 73,120,
+233,165,151,160, 86,171, 49,123,246,108,216,108, 54,204,152, 49,131, 69,176, 24, 12, 70,121, 94,196, 48, 97,194,132,183, 8, 33,
+107,237,145,164,164,114,140,148, 39, 90,186,153,180,172, 50,174, 1,125, 60,153, 44,215,207, 14, 38, 78,156, 24,235, 33, 29, 7,
+174, 51, 88, 46,174,241,150,146,119,226,152,179, 67,187,163, 89,144, 16,130,191,218, 52,128, 66,167,133, 74,167, 67,187,149, 59,
+156,119,205,248, 96,166, 79, 17, 44,135,113,202,201,201,241,218, 68,232,107, 84,140,151,203,176, 87, 39, 3,149,241,165, 46, 88,
+ 50,153, 12,156, 32, 67,114,104, 61, 16, 97, 3, 4,209,230,211,197,193, 17,201,112, 29, 61,245,228,147, 79,130,227, 56,167,201,
+106,209,162, 69,169,188,198,138,219,237, 37,253,239,245, 88,247,120, 73, 89,117,109, 22, 92,219,170, 14,148,126, 58, 40,181, 90,
+116, 92,179,219,217,156,139,217, 95,123,213, 60,245,237,151, 72,154, 51, 29,130, 76,134, 1,135,146,157,145,171,182, 13,234,238,
+ 53,107,253, 23, 93,190,124,121, 47, 0,238,241,199, 31, 15,140,139,139,227,125,172,132, 74,117, 60, 23, 4,193,163,185, 18, 4,
+ 1, 54,155,205,167,125,183, 88, 44, 62, 69,146, 28, 81, 44, 31,242, 59,109,216,176, 33,120,158, 71, 64, 64, 0,252,252,252,156,
+ 35,104, 29,145, 43, 71,255, 77, 95,203, 37,131,193,184,239,111,114,203,242, 34,166,233,211,167, 39, 77,159, 62,221, 25, 73,114,
+143, 96,149,193,195,118, 51, 21,234, 48,103, 40,233, 75,117,160,156, 52,244, 41,203,120,185,254, 54, 99,198,140,105, 30,210,225,
+108,150,244,216, 59,187,121,243,230,235, 52, 26, 77, 45, 95, 15, 72, 69, 38, 29, 21, 45,150,235,238,196, 9, 33, 80,233,116, 80,
+248,233,160,212,233,202,140,114,149,117,161,113, 52, 17,242, 60,239,188,232,252,240,195, 15,208,233,116,120,250,233,167,111,168,
+147,123,137,193,226,177, 90,126, 6,144, 11,215, 93,180,120,153, 12,151, 3,170,129,147,201, 32,136,190, 69, 8,242,243,243,193,
+243, 60,222,123,239, 61,204,152, 49,195, 57,140,222,117,104,189,107,212,131,113,251,113,237,228, 94, 42,170,234,231,231,204,159,
+174,191,123,235,147, 72, 8, 1, 68, 91,201,104, 65,165,194,105,174,250,245,235,183,205,172,245, 95,212,160, 65, 3, 71,228,138,
+211,104, 52, 94, 71,205,186,150, 13,135,209,113, 55, 87,142, 40,169,227,179,213,106,245, 41,207, 59, 12,214,194,133, 11,203,189,
+ 25,113,252,175,175,249,148,227, 56,108,223,190, 29,135, 14, 29,194,232,209,163,161, 86,171, 49,119,238, 92,216,108, 54, 76,157,
+ 58, 21,106,181, 26, 10,133,130,101, 62, 6,131, 81, 30, 65, 14,131, 99, 55, 73,165, 34, 75,148,210, 62,174, 38,168,172,166, 66,
+123,196,105,187,151,255,250,195,110,204, 60,226,136,164,185,213,161,107,221,205,153,224,112,140,174,239, 10,133,162,214,174, 93,
+187,234, 73,146, 4, 81, 20, 81,222,187,217,108,198, 99,143, 61,230,243,164,163,146,181,196, 96,113,110, 35,229,148,254,126, 80,
+232,254,189,128,185, 92,196,188,214,226,142, 8,150,171,193,122,239,189,247, 32, 8, 2, 22, 46, 92, 8, 0,120,227,141, 55, 42,
+ 28,193,162, 18,176, 91,220,138,200,121,205, 64, 23,169,144,185,253, 36,100, 50, 25,170,182,122, 8, 82,194,163,200, 81,248, 67,
+107,239, 87,229, 75,179, 99, 78, 78, 14, 46, 93,186, 4, 66, 8, 94,123,237,181,114,205,213,198,141, 27, 89, 31,172, 59,104,176,
+ 56,158, 47,117, 62, 92,243,167,155,249,242,222, 78,102,179, 65,166, 84,150, 26, 45,152,151,151,183,232,242,229,203,251, 0,144,
+225,195,135, 7,106, 52, 26,124,251,237,183,122, 0,242,149, 43, 87,170,189,105,186,246,227,115,143, 92,185, 27, 44, 81,244,222,
+132,237,184,169,240, 37,218, 91, 17,131,229,200,223,132, 16,136,162,232,140, 92, 89,173, 86,231,119,165, 82,201, 50, 30,131,193,
+240,246, 92,209, 44,183,126, 78,196, 45,210,148,229,201, 88,185, 54, 7,186,124,182,122,208, 53,187, 53, 29,186,255,238,120,207,
+153, 62,125,250, 22, 71,228,202,229,247, 82,233, 40, 51,130,197,113, 28, 76, 38, 19, 78,156, 56,225,235, 29,170,207,147,142,134,
+196, 63,128,161,151,242, 65, 8,193,134,246,141,161,210,233, 32,215,105,209,230,215,173,206, 10, 59,121,198, 56,200,181, 58,132,
+180,123,200,167, 10, 92, 20,197,235, 12, 86, 94, 94, 30,100, 50, 25, 62,248,224, 3,112, 28,135,143, 62,250, 8, 81, 81, 81,200,
+200,200, 64,199,142, 29,125,186,216,112, 18, 7,213, 83,193, 80,189,224, 7,110,116, 29,196,246,125, 1,249,133, 53,113,212,172,
+ 69,195,226, 51, 8,250,123, 50, 44,146,205,167,105, 26, 8, 33,176,217,108,216,178,101, 11,100, 50, 25,108, 54,155,243,226, 67,
+ 41,117,206,146,239,152,212,241,163,143, 62, 98,165,237, 14, 80,237,225, 71,240,100,186, 30, 0,176,174, 77, 3, 40,181, 90, 40,
+252,116,104,247,251,118,103,254,188, 48,237,117,200,181, 58, 4,182,108,239,147,102,163,151,222, 64,195, 23, 95, 71,118,118,182,
+161, 91,139,216,237,249,188,242,251, 38, 77,154, 56,251, 92,105, 52, 26,168, 84, 42,226,136,100,249,106, 90, 56,142,243,106,174,
+ 28,159,125,189,169,112, 31,133, 91,158,193,242, 21,142,227,240,244,211, 79, 35, 34, 34, 2,159,127,254,121,169,200,213, 91,111,
+189, 5,171,213,138,217,179,103,179,204,199, 96, 48,202,227, 64, 5,214,109,233, 98,150, 14,220,160,238,129,155, 77,176,199,154,
+215,100, 50, 37,119,237,218, 21,101, 44,139, 82, 42,149,165,106, 87,199,164,163,238, 77,133,132,144, 38,148,210, 99,110, 14,245,
+223,102, 65,123,103, 97,133, 91,179,139, 66,231, 7,153, 86, 7,206, 67, 37,238, 73,211, 83, 4,203,209,116,146,159,159, 15,153,
+ 76,134,207, 63,255, 28,254,254,254, 48,153, 76,158, 58,216,123,212,228,121, 30,250, 75,122, 92,124,247, 40,148,218,115,168,255,
+144, 31,252,100,231, 81,119,199, 74,216,108,102,192,165,201,208, 23,205,250,245,235,227,189,247,222,187,110,122,134,178,136,143,
+143,247,170,121,179, 48, 77,207,154,132, 16, 40,253,116, 80,249,249,149,153, 63, 5, 15,115, 55,185,107, 58,150, 59, 34, 87, 69,
+114,205,247,151, 47, 94,220, 7,128, 27, 62,124,120,128, 70,163,193,130, 5, 11,244, 0,184,247,223,127, 95, 83,163, 70, 13,222,
+151,116,114, 28,135, 31,126,248,225,186, 62, 87,101, 25, 44, 95,210,105,179,217,174, 51, 88,131, 7, 15,190,110,162,209,178, 34,
+ 88,158,210,233,232,171, 86,165, 74, 21,104, 52, 26,231, 99,183, 84, 42, 21, 84, 42,149,115,118,248,178,154, 90, 89,254,100,154,
+ 76,243,191,163,121,135,204,216, 45,195,163,193,250,231,159,127,122,150,181, 65,219,182,109,207,236,218,181,171,174,235,179, 9,
+109, 54,155,220,100, 50,213,235,223,191,191,215, 91,101, 73,146,160, 84, 42, 65, 41, 69,243,119,102,148,220,194,115,255, 54, 9,
+ 82, 74, 17,216,182, 27, 8,207, 67, 20, 37, 88,173, 86,175,163, 8,141, 70, 99,169, 14,232,158,134,175, 23, 21, 21,149, 59,207,
+143,187,166,193, 96, 40,213,175,139,136, 20, 23, 54,173,184,126, 52,161,253,127,124, 69,165, 82,149,106, 54,241,150, 20,118,211,
+114,123,113, 76,224, 73, 41, 69,236, 43, 19, 74, 34, 69, 60, 87,106,121, 64,203,246, 32,130, 12, 82, 73,191, 37,111, 3, 67, 72,
+ 86, 86,150,161, 95,191,126,219, 40,165,223,245,239,223,255, 52, 74, 58, 88, 82,157, 78,167,148,201,100, 18,128,107, 0,104,110,
+110,110, 64, 90, 90,154,100, 52, 26,171,123, 75,231,246,237,219,113,238,220, 57,196,197,197, 57, 35,159,142,151,163,249,254, 70,
+ 34, 88,158,102,132, 47,107, 38,247,138, 68,176, 2, 2, 2,160, 80, 40,240,193, 7, 31, 64, 46,151, 67,173, 46,105, 5,157, 61,
+123,182,243,152, 51, 24, 12,198,253, 68,133, 31,216, 44, 73, 18, 95, 86,243,161,183,166, 66, 81, 20, 83, 31,120,224,129,138,254,
+ 95,166,151, 11, 98,234,142, 29, 59,228,238, 15,164,245,244, 0, 92,151,223,188,106, 30, 56,112, 64, 94,206,246,158, 62,103, 86,
+100,223,125,233,191, 98,179,217,210, 88, 22,189,125,216,108,182,212, 86,173, 90,121, 94,248,222, 71,101,157,215, 76, 47,166,229,
+108,189,122,245,210,117, 58,221, 31,225,225,225, 57,187,118,237, 10,105,217,178,101,136,235, 58, 45, 91,182,140,112,219,204,140,
+114,166, 39, 33,132,164, 62,249,228,147,114, 47,249,209,253,115,170,151,155,138,212,164,164, 36,185,167,252, 94,214, 59,165, 52,
+213,135,195,122,169, 87,175, 94,156,167, 50,228,225, 88,102,177, 92,200, 96, 48,254,179, 6,203,104, 52,166,116,237,218,213,227,
+184,111,189, 94,127,185,188,109,147,146,146, 18, 42,123, 7, 82, 83, 83,219,220, 11,154,183, 98,223, 25,119,255, 57, 74, 74, 74,
+106, 85,217,154,151, 47, 95,110,115, 47,104, 2,192,241,227,199, 91,179,156,197, 96, 48,152,193,242, 1, 95,167, 99, 96, 48, 24,
+ 12, 6,131,193,248,175,194,177, 67,192, 96, 48, 24, 12, 6,131, 81,185, 16, 0, 77, 60, 45,168,200,232, 0, 66, 72,147,138,254,
+177, 55,125,166,201, 52,153, 38,211,100,154, 76,147,105,222,127,154,222,180,239,226,209,137, 21, 51, 88,222,102,162,190, 41,113,
+ 54,132,149,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 65, 88, 19, 33,131,193, 96, 48, 24, 12, 70, 37, 35,176, 67,112,103,
+ 32,132,240,148, 82,177, 18, 37, 3, 1,148,245, 64, 55, 51,128,188, 27,212, 85, 0,144,217, 95, 64,201, 35, 6,172,118, 77, 6,
+131,113, 31,145,144,144, 48,146, 82,250, 97, 73, 21, 69, 62, 56,120,240,224, 23,236,168, 48, 24,149,108,176,234,212,169,115,144,
+227,184,104, 79, 15, 32, 46,107, 94, 28, 81, 20, 83, 79,158, 60,233,211, 80,119, 66,136, 16, 17, 17, 49, 88,171,213,118,230,121,
+190,173,125,251, 93,197,197,197, 91, 50, 50, 50,126,161,148,218,110,100,135, 98, 98, 98,252,141, 70,227, 99,132,144, 97, 0, 64,
+ 41,253, 73,165, 82,253,124,225,194,133,130, 27, 52, 66,117,170, 86,173,250,147, 76, 38,227, 83, 82, 82, 58, 3, 64,181,106,213,
+182,152,205,102,241,234,213,171,195, 40,165,231, 42,168,199,201,229,242, 25,237,219,183,111, 71, 8,249,145, 82, 58,191,146,206,
+165,146,227,184, 75,158, 22, 72,146, 84,227, 6,244,228, 0, 2,102,207,158, 29,188,120,241,226, 22, 25, 25, 25, 77, 1, 32, 34,
+ 34,226,232,240,225,195,255,249,223,255,254,119, 13, 64, 62, 0, 11, 43, 70,247, 54,245,234,213, 59,200,113, 92,116, 69,230,146,
+179, 63,162, 42,245,248,241,227, 9,101,105,242, 60, 31,237,101, 62,186,235, 62, 75,146,116, 33, 41, 41,201,227,148, 17,245,235,
+215,223,195,243,124, 45,111,105,243,148,206,178,166,224,168, 95,191,254, 65,158,231,163, 43,170, 41, 73,210,133, 99,199,142,181,
+169, 76,205,219,157, 78, 0,232,212,169,147,178,184,184,248, 39,157, 78,215,172,184,184,120, 36,165,116,210,214,173, 91,195, 57,
+142, 67,183,110,221, 38, 37, 36, 36, 92, 84, 42,149,243,140, 70,227, 63, 58,157,110,232,214,173, 91, 77,172,196, 48, 24, 55,105,
+176, 56,142,139, 62,116,232, 80,152, 86,171,133,221,168,192, 49,123,187, 36, 73,206, 23,165, 20,148, 82,216,108, 54,116,234,212,
+201,167, 63,141,142,142,110, 82,191,126,253, 21, 47,191,252,114,245,190,125,251, 42,194,195,195, 65, 8,193,149, 43, 87,234,173,
+ 93,187,246,137,207, 63,255,252,189,232,232,232, 65,169,169,169,190,118,148,227, 34, 34, 34,186, 2,120,170, 73,147, 38, 3,223,
+120,227, 13,121,219,182,109, 33,138, 34,254,254,251,239,246,179,102,205,250, 60, 50, 50,242, 55, 0,139, 50, 50, 50, 54, 83, 74,
+ 37, 31,117, 91,212,170, 85,235,231,237,219,183,215, 74, 78, 78, 22, 7, 12, 24,240, 35, 0,236,218,181,171, 25,165,148,180,109,
+219,118, 29, 33,228, 49, 74,233, 63, 21, 56,230,253,199,140, 25, 51,232,165,151, 94, 10, 29, 57,114,228,112, 0,243,237,255,229,
+120,200,101, 69, 59,197, 57, 35, 87,148, 82,121, 57,235,133, 87, 32,146,165,189,112,225, 66, 96,219,182,109, 95,186,122,245,234,
+ 88, 87,221,204,204, 76, 28, 62,124,216,242,209, 71, 31,205,218,181,107,215,151, 49, 49, 49,121, 0,138, 89, 81,186,119,225,121,
+ 62,234,224,193,131, 97, 26,141,198,249, 32,119,215,114,238, 40,227,174, 89,147, 82,138, 14, 29, 58,148,167, 25,157,152,152, 24,
+166, 86,171,157,117, 71,121,122, 46,154,150,114,234,164, 26, 7, 14, 28, 8,211,104, 52,160,148,122,213, 35,132,128, 82, 90,238,
+179, 71, 29,233, 84,169, 84, 62,105, 58,104,219,182,173, 88, 89,154,142,116,182,110,221,154,150,167,121,232,208,161, 48,199, 83,
+ 48, 42,144,206,114,111,128,138,139,139,127,250,229,151, 95, 6,132,135,135,163,127,255,254, 27, 26, 55,110,172,208,104, 52, 88,
+183,110, 29,162,163,163,171,248,251,251,255, 57,125,250,116,204,156, 57,179,250,198,141, 27,151, 2, 24,192, 74, 12,131,113,243,
+ 6, 11, 90,173, 22,203,150, 45,243,248,248, 25,247,207, 53,106,248, 22, 36,169, 90,181,106, 66,205,154, 53,183,173, 92,185, 82,
+ 29, 22, 22,230,252,221, 98,177,192,223,223, 31, 79, 63,253,180,162, 91,183,110,117,159,120,226,137,189, 85,171, 86,237,120,229,
+202,149,131,229,233, 69, 68, 68, 12,140,141,141,253, 98,236,216,177,225,253,250,245, 67, 80, 80, 80,169,229,125,250,244, 65,239,
+222,189,229, 23, 46, 92, 24,242,203, 47,191, 12,249,241,199, 31,175, 68, 68, 68,140,201,200,200,248,173, 92,135,161,213,118,107,
+222,188,249,183,155, 55,111,142, 14, 12, 12, 68,100,100, 36,247,238,187,239, 54,169, 93,187,182, 58, 34, 34,130, 75, 79, 79,199,
+111,191,253, 86,123,248,240,225,171, 84, 42,213, 72,163,209,184,217, 7,195,166, 8, 14, 14, 30,247,194, 11, 47,132, 20, 22, 22,
+218, 14, 29, 58,116,206,241,187, 82,169,156,244,224,131, 15,198, 17, 66,150, 83, 74, 23,221, 72,228,138, 82, 90,128,127,155,242,
+ 28, 88, 29,203,125,140,100, 41, 14, 29, 58, 20,212,182,109,219,223, 77, 38, 83,220,179,207, 62,155,246,201, 39,159, 40,252,253,
+253,253, 1,144,188,188,188,220, 41, 83,166,136,115,231,206, 29,223,184,113,227,174,187,118,237, 26, 16, 23, 23,199,154, 12,239,
+113, 52, 26, 13,214,172, 89,227,241, 49, 83,158,202,124, 96, 96,160,215,167, 17,168,213,106,108,220,184,209,185,157,235,163,165,
+ 60,125, 14, 12, 12, 4,165,180, 92, 81,149, 74,133,157, 59,119, 58, 31, 3, 84, 86,189,228,120,215,104, 52, 32,132,112,222, 52,
+183,109,219,230, 85,203,241,174,211,233, 0,128,247, 37,157,222,246,217,241, 89,171,213,122, 61,158, 74,165,210,169,233,170, 81,
+214,119,251,205, 49,241,114,142,154,133,135,135, 99,223,190,125,152, 60,121,178, 34, 54, 54, 22,103,206,156, 1,199,113, 24, 57,
+114, 36, 26, 55,110,140, 43, 87,174,160,113,227,198,216,185,115,103, 11, 86, 82, 24,140, 74, 48, 88, 14,202,170, 96,221, 63, 59,
+238,196,220,238, 72, 75, 69,160,106,214,172,169,212,233,116,191,174, 89,179, 70, 29, 18,242,239,211, 66,204,102, 51, 10, 11, 11,
+ 81, 84, 84,132,194,194, 66,104,181, 90,204,155, 55, 79, 61,108,216,176, 95,107,214,172, 89, 47, 57, 57,217, 84,150, 38, 33,100,
+214,225,195,135,195,109, 54, 27, 20, 10, 69,153,102,177, 78,157, 58, 24, 51,102, 12,218,181,107, 87,117,200,144, 33,179, 0,252,
+ 86,150,166,221,184,125,185,107,215,174,104,133, 66,129, 51,103,206, 32, 53, 53, 21,163, 70,141,170, 33, 73, 18, 82, 82, 82,112,
+230,204, 25,164,167,167,227,235,175,191,142, 30, 54,108,216, 60, 0,117,203,219,119, 59,207,189,246,218,107,117,131,130,130,184,
+ 79, 62,249, 36,191,168,168,232,107,251,239, 19,103,207,158, 61,180, 99,199,142,161,207, 62,251, 44, 37,132, 44,163,148, 94,103,
+ 88,220, 52, 61, 69,174, 68, 74,233, 73,183,205, 26,186, 69,182,194, 81,242, 44,188,124, 15,154, 4,128,127,207,158, 61, 95, 55,
+153, 76,113, 59,118,236, 56,215,174, 93,187, 26, 0, 50, 40,165, 89, 0, 16, 20, 20,164,157, 51,103, 78,120,159, 62,125, 78,119,
+235,214, 45,174,103,207,158,175,103,101,101,125, 8, 32, 27,246,199,187,220,138,145, 37, 76,243,214,105,218,155,146, 32, 8, 2,
+122,245,234, 5, 66,136,199,231,109,238,217,179, 7, 93,187,118,133, 76, 38,195, 51,207, 60,227,179,102,143, 30, 61, 96,179,217,
+174,211,115, 55, 32,142,103,116,150,183,239,148,210, 82,207, 8,245,100, 46, 92, 95,238,122,158, 52, 37, 73,242,168, 85,150,201,
+114, 60,172,222,151,125,247,213, 92,122, 75,167,171,166, 76, 38, 67,155, 54,109,112,232,208,161,114,205,150,183,116,218, 35, 88,
+ 79,245,239,223,127,195,168, 81,163, 84, 0,144,157,157, 93,234, 65,244,167, 78,157,130,201,100,194,146, 37, 75, 96, 50,153, 70,
+179,114,196, 52,111,165,166, 55, 59, 2,160, 57,128, 80, 0, 34,128, 66,251,117,208,108,191, 22,230, 0, 80,219, 95, 38, 0, 69,
+ 0,170,216,183,205,182, 95,223, 92, 31, 83,150,133,210, 15,133,110,105,215,118, 60,178, 43,212,101,153,227, 63,220,191,187,191,
+151,210,230,236,133,151,218, 95, 29,221,195,214,190,152, 43, 71,229,232,195, 9,121,121,226,196,137,225,174,230,202,100, 50,161,
+160,160, 0,133,133,133,206,247, 51,103,206, 64,161, 80, 96,240,224,193,225,148,210,151,189,200,202,121,158,199,161, 67,135,176,
+114,229, 74, 92,188,120,241,186, 21,206,159, 63,143, 57,115,230, 96,230,204,153, 40, 40, 40, 0, 74,250, 23,121,164,121,243,230,
+147,135, 13, 27,182,183, 83,167, 78, 74, 65, 16,112,248,240, 97,212,171, 87, 15,187,119,239,198,229,203,151,145,155,155,139, 83,
+167, 78,161, 73,147, 38, 56,119,238, 28, 10, 10, 10, 16, 27, 27,171,140,143,143,223, 81,179,102,205,201,229, 68,175,228, 81, 81,
+ 81,111,189,240,194, 11,202,140,140, 12,233,135, 31,126,216, 69, 41,221, 77, 8, 25,245,246,219,111,143,232,209,163, 71,232,201,
+147, 39, 11, 14, 28, 56,112,208,147,185, 42, 35,114,117,153,227,184, 75,148,210, 2, 74,169, 1, 37,157,207, 75, 93,140,108, 54,
+155,201, 96, 48,228,231,228,228,100,115, 28,119,137,227,184, 51, 0,148,101,105, 14, 31, 62,188,118,118,118,246, 75,255,251,223,
+255, 46,182,107,215,174, 6,165,244, 20,165, 52,199,158, 97, 77, 54,155, 45, 39, 47, 47,239,116,219,182,109, 35,134, 14, 29,122,
+ 46, 59, 59,251,165,225,195,135,215, 46, 71,147,113,247, 67, 69, 81,132, 76, 38,195,214,173, 91,177,115,231, 78,236,220,185, 19,
+187,118,237,194,238,221,187,177,103,207, 30,236,217,179, 7,130, 32, 96,247,238,221,216,189,123, 55,198,140, 25,227,181,204,139,
+162, 8, 65, 16,176,109,219, 54,236,223,191,223,249, 58,112,224, 0,246,239,223, 15,181, 90,237,213, 12,185,149, 33,167,166,167,
+215,151, 95,126,233, 52,135,142,186,137,227,184,114,163, 98,238,198,197,221,176,212,168, 89,243,186,101,222,210,233, 48,109,130,
+ 32,224,155,111,190, 65, 90, 90, 26, 62,255,252,115,156, 63,127, 30, 31,127,252, 49,146,146,146, 48,117,234, 84, 28, 56,112, 0,
+ 19, 39, 78,196,142, 29, 59, 28, 15,127,167,222, 52, 29,230,202, 98,177, 56,211,115,234,212, 41, 76,155, 54, 13,135, 15, 31,198,
+164, 73,147,176,103,207, 30,140, 27, 55, 14, 60, 95,110,144, 13, 9, 9, 9, 35, 9, 33,191,212,175, 95, 95,217,165, 75, 23, 8,
+130,128,105,211,166, 73,147, 38, 77,186,250,246,219,111, 95, 93,187,118, 45,173, 93,187, 54,204,102, 51,252,252,252, 64, 41, 93,
+148,144,144,240, 50, 43, 46,140, 91,133, 39, 47,226, 66,135,137, 19, 39,118, 33,132,172,109,211,166,205,112, 0,129,132,144,181,
+ 0, 20,246,247,144,137, 19, 39,182, 34,132,172,157, 56,113, 98, 2,128, 42,132,144,181,246,239,157, 1,132, 56,190,219,215, 15,
+117, 51,111,161, 46,191,135,186,173,171,240,244,221,253,221, 93, 91,112,185, 24, 19,123, 1, 39,174, 21,100, 69, 12,150,183, 10,
+ 87,167,211,245,238,217,179,167,220,213, 92,185, 70,174, 28,239,133,133,133, 56,125,250, 52,154, 52,105, 34,215,233,116,189, 1,
+124,234, 53, 20, 39, 8,136,140,140, 68,118,118, 54,142, 29, 59,134, 26, 53,106,192,106,181, 98,253,250,245,200,203,203,131, 92,
+ 46,135, 92, 46,135,217, 92,190,119,105,216,176, 97,175,197,139, 23, 39,252,248,227,143,185,130, 32,224,212,169, 83,248,233,167,
+159, 64, 41, 69,149, 42, 85,160,215,235,113,245,234, 85,204,154, 53, 11, 22,139, 5, 58,157, 14, 81, 81, 81,170,151, 95,126,185,
+221,148, 41, 83,100, 0,202, 50, 89, 15, 12, 28, 56,208,223,207,207, 15,175,190,250,170,100,177, 88,102, 18, 66, 30, 28, 56,112,
+224, 91, 99,198,140, 9, 78, 78, 78, 54, 63,247,220,115, 7, 45, 22,203, 44,123, 70,147, 81, 74,173, 94, 12,107,153,145, 43,155,
+205,230, 56,166, 23, 11, 11, 11, 17, 22, 22, 86,157, 82, 42,247,114,142,228,187,119,239,110, 3,128,127,255,253,247, 85,148,210,
+ 76, 87,211,102,177, 88, 28,154,182,252,252,252,171,227,198,141,179, 45, 93,186,148,183,111,115, 2,128,145, 85, 17,247,100,165,
+230, 44,235,189,122,245, 42,101, 40,182,111,223,142,158, 61,123, 58,203,187, 92, 46,119,174,231, 77,211, 53, 42,230,136, 60, 57,
+116,183,108,217,114, 93,228,197,199,155, 52,103,132,197,147,241,113, 55, 93,142, 27, 69, 95,204,144, 39,147,229,168, 91,220, 35,
+ 67,190,164, 83, 38,147, 97,204,152, 49, 16, 4, 1,227,198,141,131, 76, 38, 67,243,230,205, 33, 8, 2, 90,183,110, 13, 65, 16,
+208,185,115,103,159,111, 80, 29,233,220,179,103, 15,226,227,227,157,233,105,222,188, 57, 90,182,108, 9, 65, 16,208,190,125,123,
+ 8,130,128,238,221,187,123,213,116,116,104,215,233,116, 56,125,250, 52,120,158, 7, 33, 36, 39, 49, 49, 49, 28, 0, 38, 79,158,
+156,109, 52, 26, 67,140, 70, 35,186,118,237,138, 54,109,218,132, 46, 93,186,244, 93, 0,108,100, 33,227,214,221,237,121,240, 34,
+142, 0,192,140, 25, 51,166, 81, 74,251,148,181,173, 99, 57, 33,100,237,244,233,211,251,216,245,174,251,238, 18,101,114, 53,111,
+177,174, 17, 40,199,118,174,255, 87,222,127,187,173,159, 85,202, 96,217,119,168,147,167, 74,215, 83,168,220,253,179, 47, 21,132,
+209,104,108,238,136, 94, 25,141,198, 82,134,170,168,168,168,148,209, 50,155,205,136,137,137,129,209,104,108, 94,209,139, 69, 68,
+ 68, 4, 44, 22, 11, 22, 46, 92,232, 52, 86,174, 38,161, 60,142, 31, 63,126,113,239,222,189,113,241,241,241, 65,191,255,254,123,
+ 86,183,110,221, 66,123,244,232, 1,149, 74, 5,163,209, 8,155,205,134, 7, 30,120, 0, 13, 27, 54,196,213,171, 87,177,110,221,
+186,236,122,245,234, 85,217,183,111,159,116,229,202,149, 75,229, 72,119,237,218,181, 43, 8, 33, 88,183,110,221, 53, 74,105,162,
+ 90,173,254,109,218,180,105,129, 38,147, 73, 26, 49, 98, 68,202,181,107,215,198, 1,176, 42,149,202, 79, 31,122,232,161, 7,120,
+158, 95, 46,138, 98,133, 43, 51,147,201, 84,234,216, 22, 22, 22, 66,163,209,248, 50, 37,132, 44, 47, 47,175, 41, 0,104, 52,154,
+ 96, 0,206, 17,146, 6,131,193,121,142,236,231,199, 24, 28, 28,172, 5, 0,251, 54, 50, 86, 53,220,187, 56, 46,222, 91,183,110,
+ 45, 85,190, 29, 17, 40,247, 50,175, 80, 40,176,102,205, 26,159, 52, 93,205,148, 15,205,121,229, 70,155, 28, 6, 75, 16, 4,124,
+253,117, 73, 11,251,171,175,190,234,220,222,253, 63,124,169, 47, 28,102, 72, 16, 4, 52,124, 79, 2, 96, 65,234,103, 42,200,100,
+ 37, 89,218, 61,205,142,139,128, 47,230,242,243,207, 63, 71,159, 62,125,176,118,237,218,114,223,123,247,238,237, 83, 58, 5, 65,
+128, 82,169, 44,101,252, 14, 31, 62,236, 81,119,193,130, 5, 94,251,180, 73,146,132, 63,254,248, 3, 28,199,149,138,120,189,251,
+238,187, 47,248,251,251,235,182,109,219,134,204,204, 76, 20, 23, 23,163,168,168, 8, 65, 65, 65,129,221,186,117, 59,124,229,202,
+149,228,227,199,143,179, 14,239,140, 91, 18,197,114,245, 34, 46, 24, 38, 76,152,240, 22, 33,100,237,132, 9, 19,222,154, 62,125,
+122,146,125,253,181,110,219,175,245,162,239, 48, 65,142,230,193,150,110,230,205,209,116,248,112, 57,219,154,221, 12,149,123, 19,
+225, 1,175, 17, 44,247,190, 9,229,125,182,135,184,189, 85,184, 2, 33,228, 58, 3,224, 41,130,101,181, 90,145,147,147, 3, 73,
+146, 42,117,174, 46,111, 6,235,216,177, 99, 79,143, 28, 57, 50, 61, 32, 32,160, 89, 78, 78, 78,134, 82,169,108,191,125,251,246,
+106, 86,171, 21,254,254,254,240,247,247,199,159,127,254,137,128,128, 0,252,239,127,255,187,108, 48, 24,118,107,181,218,112,131,
+193,112,228,202,149, 43,239,148,233, 92,100,178,174,237,219,183, 71, 98, 98, 34,242,242,242,254, 38,132, 52,123,246,217,103,187,
+ 87,171, 86,141,124,248,225,135,198,115,231,206,125, 1, 32, 75,171,213,126,179,120,241,226,142,113,113,113,186, 17, 35, 70,128,
+ 16,242, 45,165,212,231,200,144, 94,175, 47,101,172, 28,199,212,207,207,207,167, 57,183,236,199,155, 18, 66,156, 3, 26, 93,141,
+149,139, 1,166, 60,207, 75, 0,104,101,159, 35,198,237,143, 96, 57,202,122,223,190,125,175,235,220, 46,151,203,177, 97,195, 6,
+ 60,242,200, 35,206, 27,150,248,248,120,159,163, 77,253,250,245,115, 26,130, 13, 27, 54,148,105,176,188, 53,105,185, 71,155, 94,
+121,229, 21,200,100, 50,124,241,197, 23, 24, 59,118, 44,120,158,199,103,159,125, 6,142,227,240,238,187,239, 86,216, 92,202,100,
+ 50, 92,252,168,228, 61,250,181, 2,228,204, 15, 7, 0,248,249,251,151,236,143, 36,249,172,233,216,119,111,145, 43, 87, 99,229,
+173,137,208, 53, 10,120,230,204, 25,231,231,214,173, 91,151,138, 92, 9,130,224,213,176,217,255,111,106,151, 46, 93, 62,140,142,
+142, 14, 27, 53,106, 20, 17, 4, 1, 9, 9, 9, 85, 38, 77,154,148, 47,147,201, 84,111,188,241,134,167,174, 20, 50, 0,205, 26,
+ 53,106,164,101, 37,135,113,155, 35, 88,166,233,211,167, 39, 77,159, 62,221, 99,132,202, 61,146, 84, 94,164,201,197, 88, 29,128,
+189, 57,112,194,132, 9,111,161,164, 43,204, 1, 31,182, 85, 56,204,149,123,148,203, 21,247, 8,214, 20,247,138,199, 23,131,229,
+ 75,255, 9,123, 84,228,104,118,118,118,107,165, 82,137,130,130,130,235, 46,218,174,166,128,231,121, 92,189,122, 21, 26,141,230,
+104,101,158, 60,111, 77,132,118, 51,243,186,203,113,105, 57,120,240,224,165,203,151, 47,143,217,180,105, 19,246,237,219,135, 42,
+ 85,170, 96,218,180,105, 23,146,147,147,135, 82, 74, 15,248,242,191,181,107,215,110,172,211,233,176,107,215, 46, 0,216, 1,224,
+169, 23, 95,124,145, 88, 44, 22,204,155, 55, 79, 15, 96, 83, 64, 64,192,111, 43, 86,172,104,214,172, 89, 51,229,166, 77,155, 10,
+247,237,219,183,213, 71,115, 37, 82, 74, 61, 26,171,194,194, 66, 20, 23, 23, 67,167,211,249, 98,176,108,254,254,254,199, 10, 11,
+ 11, 31, 51, 24, 12, 5, 74,165,210,175,160,160,192,228, 26, 97, 44, 42, 42, 66,113,113, 49, 4, 65,144,157, 57,115, 38, 29, 64,
+109,127,127,255, 99, 0,108,172,106,184, 55,225, 56,142, 58, 76,198,166, 77,155, 60,150,117,153, 76,134,245,235,215,151, 42,239,
+235,214,173,243,106,218, 4, 65,112,142, 36,244, 22,193,114,108,234, 53,204, 42,147,129,231,121,204,159, 63, 31,148, 82,103,228,
+138,227, 56, 76,152, 48, 1, 74,165, 18, 31,124,240, 1, 38, 76,152,224, 83, 20,203, 53, 42, 86,107,188,225,223,202,209,190,173,
+197,108, 46,137,210,115,156,171,201,242, 41,210,230,173,131,123, 69, 76,176,107,164, 77,169, 84,150,217,185,221,125,211,178, 52,
+ 15, 30, 60,248, 93, 92, 92,220,185,208,208,208,141,109,218,180, 81, 30, 60,120, 16, 99,198,140, 33, 38,147,201,127,211,166, 77,
+206,255,245,116,188,138,139,139, 85,172,228, 48,110, 97, 4,107,138,135, 69, 65, 14,227,100, 55, 67,190,234,173,117, 93,223,161,
+225,110,138,236, 17,177,237,222,180, 60,109, 91, 22, 66, 89,225,110,247, 74,194,155,209,242,229,238,211, 96, 48,108,222,186,117,
+107,203, 71, 30,121, 68, 40,175,121,176,168,168, 8,225,225,225, 56,127,254,188,205, 96, 48,120,157,254, 64, 20,125,159, 16,221,
+ 91, 4,203, 67,101,114, 32, 54, 54,214,102,177, 88, 80,183,110, 93, 68, 69, 69,193, 96, 48, 96,206,156, 57, 54, 95,205, 21, 33,
+ 68,158,144,144,192, 3, 64,126,126, 62, 80, 50,218,161, 94,189,122,245,144,152,152,136,220,220,220, 85, 0,186, 78,153, 50,165,
+197,131, 15, 62, 40, 95,190,124,185,126,244,232,209,171,172, 86,235,135, 62,222,129,155,109, 54, 91, 45,142,227, 44,121,121,121,
+105,174,198, 42, 60, 60, 60, 72,167,211,113, 87,175, 94,181,250,114,120,154, 54,109,186, 63, 53, 53, 21,239,191,255,126,214,180,
+105,211,234, 21, 22, 22,230,230,231,231,219, 28,198,170,160,160, 0, 6,131,129, 11, 13, 13, 85, 46, 88,176, 64, 3, 0, 77,155,
+ 54,221, 15, 54,225,232,189,126,215,120, 93,211,160,167,105, 26,124,189,153,114, 53, 46,253,251,247,191, 46, 34,230,120,173, 88,
+177,162, 84,191, 38,111, 77,111, 14,205, 47,191,252, 18,175,190,250, 42,148, 74, 37,102,207,158, 93,170, 15,150,167, 77,203,211,
+116,152,182, 90,227, 13,184, 50, 55, 24, 50,153, 12, 33,163, 51, 75, 53, 17,122,186,203,246,197, 8, 78,155, 54,173, 82,154, 8,
+ 93, 77,159, 99, 74,156,133, 11, 23, 98,240,224,193,216,177, 99,199, 13, 55, 17,214,170, 85,107,241,156, 57,115,148, 39, 78,156,
+ 64, 65, 65, 1,178,178,178, 96, 52, 26,145,146,146,226, 60,135,101, 68,202,213,172,212, 48,110, 69,244,170,156,197, 89,110,253,
+167,136,107,115, 93, 57,239,238,235,195,229, 55, 87,221, 44,148, 30, 40,230,250,187,187,169,114,255, 15,215,117,178,174,139, 96,
+149,113,225,246,121,154, 6,123, 7, 73,111, 70, 96,214,123,239,189,247, 82,187,118,237,130,253,253,253,145,158,158,238, 49,130,
+229,239,239, 15,139,197,130,173, 91,183, 22, 72,146, 52,203,203, 57,177, 90,173, 86,132,133,133, 33, 59, 59, 27, 82, 25, 97,124,
+142,227,160, 86,171, 81, 84, 84, 4,183,131,232,211,133,194,106,181,194, 98,177,192, 98,177,192,106,181, 86, 52,223,168, 29, 19,
+182, 22, 23, 23, 3, 64,113,100,100,100,109,149, 74,229, 24,245,120, 6, 64,151, 30, 61,122,200,114,114,114,232,115,207, 61,183,
+135, 82, 58,198,203,108,246,230,173, 91,183,214, 4, 0,181, 90,125, 6, 0, 82, 82, 82,172,121,121,121, 40, 42, 42,114, 70, 8,
+213,106, 53, 6, 12, 24, 80,149, 82,138,173, 91,183,214,148,203,229,180, 28, 51,100, 90,187,118,237,241,128,128,128,165, 51,102,
+204, 24,250,240,195, 15, 39, 53,109,218,180, 86, 81, 81,209, 85,189, 94,111, 48, 24, 12, 84, 16, 4,121, 72, 72,136,114,227,198,
+141,231,246,236,217,243,144,191,191,255,210,181,107,215, 30,183,135, 86, 25,247,230, 29, 99,169, 40,142, 39, 83, 85,145, 17,116,
+174,198, 69, 16, 4,172, 95,191,190,220, 40,142,175,154,174, 38,227,245,215, 95,199,220,185,115,175,139, 96,125,248, 97,201, 61,
+201,219,111,191, 93,161, 8,145, 32, 8,184, 50, 55, 24, 85, 95,185,118, 93, 4,139,216,211, 87,145, 38, 66,199,246, 83,167, 78,
+133, 76, 38,115, 54,225, 61,244,208, 67,165,154, 6,125, 53, 86,174,154, 87,175, 94,133, 32, 8, 8, 14, 14,198,208,161, 67,209,
+189,123,247,235,244,124,213, 77, 73, 73,249,103,230,204,153,213,163,162,162,176,124,249,114,179, 86,171, 85,116,233,210,133,230,
+231,231,147,242, 34, 88, 6,131,129, 69,176, 24,183,155, 3,183, 89,247,166,255, 79,240, 86,233,222,204, 52, 13,238, 79,219, 78,
+ 78, 78,206,143,136,136, 24, 54,100,200,144,223,231,207,159,175,174, 93,187, 54, 78,157, 58,133,220,220, 92, 88, 44, 22,200,229,
+114, 68, 70, 70,162,168,168, 8,191,254,250,171, 94,175,215, 15,203,200,200,200, 47, 79,147, 16,242,118,175, 94,189, 22,188,243,
+206, 59,170,198,141, 27, 35, 55, 55, 23, 69, 69, 69,206, 59, 47, 66, 8,252,253,253,161,209,104,112,236,216, 49,236,217,179,199,
+ 64, 8,121,187, 60, 77, 79, 70,211, 97,172, 28, 70,203,219,200, 36, 55, 77,173, 70,163,113,220,249, 1,128,173,122,245,234,225,
+ 0, 28, 6,235, 82, 76, 76,204, 59,117,234,212, 33,139, 23, 47,166,148,210, 77,158,204,149,155,102,110,199,142, 29,243, 0,132,
+155,205,102, 57, 0, 20, 20, 20, 88, 66, 66, 66,194,148, 74,165,164, 84, 42, 37,149, 74, 37,101,100,100,216,108, 54,155, 28, 0,
+ 58,118,236,104, 6,144, 9,251,124, 85, 30, 52, 37, 0,133,243,230,205,155,252,212, 83, 79,181,110,219,182,109,236,115,207, 61,
+119, 98,244,232,209,136,138,138, 10, 42, 42, 42, 50,158, 57,115, 38,111,254,252,249,198,253,251,247, 63, 36,147,201, 46,205,155,
+ 55,111, 50, 74,230, 35,145,124, 61,158, 55,104, 2,152,230, 45,210,116,244,253,241,100,172, 92,191,251, 48,141, 66,169,116, 58,
+ 76,219, 99,143, 61,230, 28,125,232, 30,185,170,168, 38, 0,231, 8,194, 55,223,124,179, 84,250,222,121,167,204, 46,144,164,156,
+125,119, 70,155, 4, 65, 64,254,194,168, 82,230,207, 87, 83,229, 73, 83, 16, 4, 76,154, 52,201,231, 8,150,123, 31,172,242,210,
+217,177, 99, 71, 20, 23, 23, 67, 38,147, 97,195,134, 13,101, 70,176,188, 29, 79,181, 90, 61,116,213,170, 85, 63, 41,149,202,166,
+102,179,249,153,236,236,236, 31,244,122,125,245,188,188,188,114, 35, 88, 70,163, 81,201,202, 17,211,188, 3,115, 97,221, 83,148,
+123,139,103,179,217, 80,173, 90,181, 82,207,182,114,116,102,231,121,222, 57,242,196,151, 17,132, 14, 50, 50, 50, 54, 68, 68, 68,
+ 12, 28, 48, 96,192,146,167,158,122,202,175, 97,195,134,178, 26, 53,106,192, 96, 48, 32, 57, 57, 25,201,201,201,182,191,255,254,
+187, 64,175,215, 63,145,145,145,177,193,155, 94, 90, 90,218,143,225,225,225,235,135, 15, 31, 62,169, 69,139, 22,163,198,142, 29,
+203,199,196,196, 32, 63, 63, 31, 65, 65, 65, 8, 13, 13, 69,114,114, 50,126,253,245, 87, 49, 47, 47,111,129, 40,138, 83, 51, 51,
+ 51,179, 42,114,144,108, 54, 27,111,181, 90, 49,100,200, 16, 72,146,132,217,179,103,195,102,179,241, 21,144,176, 88, 44, 22, 10,
+128,100,103,103, 3,128,222, 97,184,206,158, 61, 11, 0,151,107,214,172,169, 3,128,205,155, 55, 19, 0,187,125, 13,174,185, 70,
+178, 26, 54,108,152,236, 94, 41, 58, 34, 87,142,168,151,171,185, 42, 3,227,208,161, 67,179, 76, 38, 83,143,215, 94,123,109,210,
+194,133, 11,135, 46, 92,184,240,186,149,252,253,253,151,126,246,217,103, 83,135, 14, 29,154, 5, 54, 61,195,253, 81, 25,184, 69,
+171, 42,218, 5,160, 44,205,213,171, 87,251, 60,185,166,183,168, 24, 33,196,227,136,196,242,234, 32, 95,158, 62, 85,214,132,162,
+ 55, 19, 21, 20, 4, 1,159,124,242,137, 51,114,229,218,249,252, 70, 34, 88, 14,205,224,224,224,146,187, 54,173, 22,146, 36,161,
+119,239,222, 55,172,107,127,182,224, 64,199,247,132,132,132,169,203,150, 45,251,144, 82, 26, 2, 64,112, 61, 6, 21,127,138, 23,
+131,193, 12,150, 71, 68, 81, 76,117, 60, 91,208,151,135,192,218,141, 72,170,143, 38,107,125, 76, 76, 76,204,194,133, 11, 95,213,
+106,181,221,140, 70, 99, 83, 0, 80,169, 84, 71,139,139,139, 55,113, 28, 55, 39, 35, 35,195,231,135, 51,219, 13,211,203,209,209,
+209,179,135, 15, 31,254, 97,155, 54,109, 6, 61,247,220,115, 68, 16, 4,252,242,203, 47, 52, 45, 45,109, 5,199,113,111,167,167,
+167,159,191,145,131,164,209,104, 78,175, 88,177,162,246,234,213,171, 97,181, 90,177, 96,193, 2, 40,149,202,211,190,110, 79, 41,
+205, 18, 4, 97, 73,219,182,109,135,238,217,179,103, 41,165,244,152, 82,169,252,169, 67,135, 14,195,118,239,222,253, 51,165,244,
+132, 32, 8, 63,181,105,211,102,216,254,253,251,127,163,148, 30,169, 64,242,156,145, 44,155,205,115,139,162,167,200,149, 23, 10,
+ 70,142, 28,105, 25, 57,114,228,107,131, 6, 13, 90,152,152,152,248,128, 99,250,134,192,192,192,163,241,241,241,251, 86,172, 88,
+113,202, 30,185, 98,230,234, 30,199,209, 33, 61, 40, 40, 8, 28,199, 57, 95,142,217,188, 43,106,132, 28,154,148, 82, 4, 5, 5,
+121,188, 49, 43, 71,147,120, 41, 75,208,233,116, 78, 77, 31, 71, 47,123, 13, 67,233,116,186, 82,105,244,241,230,166,220,125,119,
+ 79,167, 47,199,204,155,166, 86,171,133,197, 98,241, 89, 19, 62, 12, 26,112,229,224,193,131,223, 1,248,174,110,221,186,103, 1,
+212, 97,166,138,193,184, 5, 6,235,228,201,147, 9,183,242,143, 47, 92,184, 80, 0, 96,170,253, 85, 41,164,166,166,158, 7,240,
+ 88,213,170, 85, 63,221,189,123,247,187,246,202,245,125,111,207, 51,244,198,145, 35, 71, 30,145,201,100,243, 22, 45, 90,212,134,
+ 82,138,128,128,128,221,231,206,157,123,177,130, 81,176, 81,132,144,177,142, 81,129, 38,147,105, 20, 33,228, 13, 74,105,177,203,
+114,231,247, 10, 66, 81,210,217, 46,162,140,229,190, 68,174,174,139,100, 1, 48,175, 88,177,162, 8,192, 97,252, 59,207,149,213,
+254, 50,193,165, 89,144,113,239, 98,179,217,210, 58,117,234, 36,120,187,129,242,176, 93,106,121, 55,104,237,219,183,199, 13,104,
+166,149,147,212, 75,109,218,180,225,124,213,114, 96,181, 90,175,150, 99,190, 82, 91,183,110,237, 49,157, 94,142, 89,185,251,222,
+186,117,235, 10,165,209,158,150,180,202,214,244,114, 60,203,196, 96, 48,228,134,134,134, 22, 25,141, 70,153,201,100,146,185, 71,
+236,213,106,117, 22, 43, 57, 12,198, 13, 26,172,123, 25,187,161,234, 91, 89,122,246,254, 80,207, 87,130,142,209,237,123,113,121,
+223, 43, 72,238, 45, 56,148, 18, 0, 3, 43, 38,247, 55,199,142, 29,123,160,178, 53,143, 31, 63,158,112, 11,210,217,186,178, 53,
+147,146,146, 18,254,171,154,229,145,150,150,246, 0, 43, 25, 12,198,205,193,177, 67,192, 96, 48, 24, 12, 6,131, 81,185, 16, 0,
+ 77, 60, 45,168,200,232, 0, 66, 72,147,138,254,177, 55,125,166,201, 52,153, 38,211,100,154, 76,147,105,222,127,154,222,180,239,
+151,209,137,228, 86,118, 98,100, 67, 88,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 95,132, 53, 17, 50, 24, 12, 6,131,193,
+ 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24, 55, 10, 33,
+132, 68, 71, 71,119,140,140,140,108,253, 95, 61, 6, 2,203, 6, 12, 6,131,193, 96, 48, 42,131,234,213,171, 7,138,162,248, 84,
+100,100,228,139,181,107,215,174, 13, 0, 81, 81, 81,199, 40,165,115,212,106,245, 79,231,206,157, 51,255,103, 76, 38,123, 20, 2,
+131,193, 96, 48, 24,140,155, 33, 50, 50,178, 5,128, 23,213,106,245, 19, 15, 60,240,128,162, 75,151, 46, 8, 10, 10,130,205,102,
+ 67, 70, 70, 6,254,254,251,111, 28, 62,124,248,154,213,106,157,103,181, 90,231,101,101,101,101,254,103, 12, 22, 33,100, 27, 0,
+ 80, 74, 59,178,172,194, 96, 48, 24, 12, 6,195, 23, 34, 34, 34,102,246,236,217,243,181,160,160, 32,212,173, 91, 23, 85,171, 86,
+133,201,100,130,193, 96, 0,165, 20,130, 32,128, 82,138,194,194, 66, 28, 60,120, 16,251,246,237,179, 21, 20, 20, 44, 37,132,204,
+ 73, 79, 79,255,167,148, 41,185,143,188, 8,161,148,130, 16, 66, 1,116,178,239,212, 54,150, 93, 24, 12, 6,131,193, 96,248, 66,
+100,100,100,230,230,205,155,195, 68, 81, 68,118,118, 54, 76, 38, 19,244,122,189,211, 96,241, 60, 15, 74, 41,108, 54, 27, 0, 64,
+146, 36,156, 56,113, 2,123,246,236, 65, 74, 74,202,103, 25, 25, 25,175,219,205,213,125,229, 69,156,157,220, 41,165,219,152,185,
+ 98, 48, 24, 12, 6,131, 81, 81, 76, 38, 19, 22, 47, 94,140,236,236,108, 84,171, 86, 13, 81, 81, 81, 8, 8, 8,128, 74,165, 2,
+ 0,167,185, 2, 0,142,227, 16, 27, 27,139, 97,195,134,129, 16, 50,204, 85,231,126,242, 34,172,147, 59,131,193, 96, 48, 24,140,
+155,193,106,177, 88,144,144,144,128,139, 23, 47, 34, 49, 49, 17,113,113,113,104,212,168, 17,178,179,179,145,158,158, 94,106,229,
+253,251,247,227,208,161, 67,232,208,161,195,125,125, 80, 28, 77,132,147, 1,116,180,187,199,142, 44,175, 48, 24, 12, 6,131,193,
+240,133,168,168,168, 17,161,161,161,243,135, 15, 31,174,110,222,188, 57, 82, 83, 83,145,150,150,134,220,220, 92,180,104,209, 2,
+177,177,177, 56,127,254, 60,214,175, 95,143, 67,135, 14, 65,169, 84, 34, 58, 58, 26,186,165,203,240, 71,100, 68, 90,122,122,122,
+ 52,128,251,206,139,184,118,114,119,236,212, 54,150, 93, 24, 12, 6,131,193, 96,248, 74,100,100,100, 8, 33,228,237,200,200,200,
+151,158,120,226, 9, 89,157, 58,117,144,154,154,138,236,236,108,228,230,230, 98,239,222,189, 14, 51,134,168,168, 40, 36, 39, 39,
+227,216,177, 99, 6,147,201, 52, 58, 45, 45,237, 71,167, 41,185,143,188, 8,155,166,129,193, 96, 48, 24, 12, 70,101, 25,173,106,
+ 0,166,212,169, 83,103,196,224,193,131,185,200,200, 72,164,165,165,225,239,191,255, 70,237,218,181,113,245,234, 85, 28, 60,120,
+ 80, 44, 40, 40, 88, 32,138,226,212,204,204,204,172,251,245, 88,220,210,153,220, 9, 33, 77,152, 38,211,100,154, 76,147,105, 50,
+ 77,166,249,223,208, 76, 79, 79, 79, 73, 79, 79,127,250,204,153, 51,177, 31,126,248,225,170,249,243,231,131,231,121, 68, 70, 70,
+ 98,203,150, 45,116,243,230,205, 43,138,138,138,234,167,167,167,191,124, 63,155, 43,128,117,114,103, 48, 24, 12, 6,131, 81,201,
+ 92,185,114,229, 36,128, 71,162,162,162, 30, 72, 74, 74,122, 11, 0, 36, 73,122,255,202,149, 43, 7,255, 43,199,128, 25, 44, 6,
+131,193, 96, 48, 24,183,132,180,180,180,125, 0,250,254, 23,247,157, 61,236,153,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193,
+ 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254, 83, 16, 0, 30, 71, 2, 80, 74,143,249, 44,114, 3, 35, 20,188,233, 51,
+ 77,166,201, 52,153, 38,211,100,154, 76,243,254,211,244,166, 93, 17,255,113, 87, 27, 44, 95,230,193, 34,132, 16,122, 3, 19,102,
+ 17, 66,154, 84,246,129, 98,154, 76,147,105, 50, 77,166,121,107, 52,111,164,174,247,164, 73, 8, 33, 46, 55,241, 0, 64,237, 23,
+ 78,122, 55,165,243, 94,217,247,255,138,230,253,134,224,229, 0,114, 40,105, 70, 36,132, 16, 9,128, 84, 25, 7,202,126, 18,184,
+202,210, 99,220, 2,231, 93,114,142,200,191, 55, 20,236, 60, 49, 24,247,113,121,175,180,186,222,165,238,224, 29,154, 0, 68, 0,
+ 34, 33,228,166, 46,182,183,226,154,116,183,239,251,127, 89,243,190, 52, 88,142, 3, 21, 26, 26,186, 33, 44, 44,172,115,118,118,
+182,100,255, 29, 81, 81, 81,224, 56, 14,130, 32, 24, 46, 94,188,232, 95,209, 63, 12, 15, 15,255, 54, 54, 54,246,169,156,156, 28,
+137,227, 56, 84,171, 86, 13,132, 16,240, 60, 15,158,231, 13,231,206,157,243,191,211, 7, 37, 62, 62, 62,215,108, 54,235,220,127,
+ 87, 40, 20,198,196,196, 68,191,255, 64,101, 43,212,171, 87,239,113,141, 70,163,118,252, 22, 23, 23,231,186, 10, 61,116,232,208,
+ 66, 95,245,106,213,170,181, 95,173, 86, 7, 10,130, 0,158,231, 33, 8, 2,138,139,139,243, 78,156, 56,209,202,190,124,151, 90,
+173, 14,225,121,222,145,183, 96, 52, 26,115,142, 31, 63,222,150, 93,250,174,167, 83,167, 78, 2, 42, 62,197,138,109,235,214,173,
+182,219,152, 76,206,156,232, 87,135,216, 12,205, 8, 71, 3,168, 68,242,169,160, 62,162,136, 47, 60,231,227,246,210, 29, 46, 3,
+213, 1,216, 40,165,233, 55,178,177,135,138,182,167, 8, 12,177,127, 53,114, 64, 14, 1,206,132, 0,191,102, 2,134, 82, 43,223,
+198, 11,145,163,174,143,142,142,158, 19, 30, 30,254,116, 97, 97,161,158,231,121, 16, 66,104,108,108,236,117,187, 67, 8,129, 36,
+ 73,169, 73, 73, 73, 9, 94, 46,178,178,234,213,171,127, 22, 26, 26,250,164, 94,175,215, 19, 66, 64, 8,161,132, 16, 52,109,218,
+212,169,233,120, 23, 69, 49,245,216,177, 99, 9,183, 43,157,119,106,223,155, 52,105,226,212,114,104, 75,146, 84,230,190,187,106,
+ 70, 71, 71,127, 22, 30, 30,254,100, 81, 81,145,158,227, 56,167,102,108,108,236, 13,167,243,110,214,188,159, 35, 88, 92, 88, 88,
+216,170, 86,173, 90,117, 90,189,122, 53,119,242,228, 73,174, 97,195,134, 16, 69, 17,146, 36,129, 82,138,248,248,120, 77, 69,255,
+172,106,213,170, 63,180,108,217,114,200,154, 53,107,184, 85,171, 86,113, 45, 91,182, 4, 33, 4,162, 40, 66, 20, 69,116,237,218,
+ 85,125,147,149,133, 78, 16,132,177, 10,133,162,163,205,102,107, 4, 0, 50,153,236,132,201,100,218,102,179,217,102, 81, 74,139,
+124,209,177, 90,173,154,164,164,164,235,142, 77,171, 86,173, 20, 55,154,182,122,245,234,237,230, 56, 46,198,181,208,122,123,167,
+148, 94, 72, 74, 74,106, 83,150,102,131, 6, 13,188,106,186,255, 38, 73,210,133, 99,199,142,181, 41,207, 92,213,173, 91,119, 72,
+227,198,141, 85,191,252,242, 11, 82, 82, 82,160,213,106, 33, 73, 18, 68, 81,132,213,106,197, 35,143, 60, 66, 42,178,239,106,181,
+218,255,239,191,255,174, 19, 22, 22,134,171, 87,175, 34, 59, 59, 27,163, 70,141, 58,227,178, 60,100,203,150, 45,245,130,131,131,
+161,215,235,145,159,159,143, 97,195,134,221,243,133,171,123,135,218, 31, 16, 32,216,241, 93,148,112,109,211,206,243,239,220,172,
+174,201,100,202, 16, 69, 49,200,203, 53,189, 20, 60,207,231, 2, 8,245, 82,126,106, 2,232,203,243,124, 93,153, 76,214,128, 82,
+ 90,211,102,179,133, 3,128, 92, 46,207,228,121, 62,217,106,181,158, 50,155,205,103, 1,172,161,148, 38,151,165,101, 78,244,171,
+ 35,154,244,131,138, 77, 82,111,137,162, 42, 71,112, 69,171,212,255,105, 78,244, 91, 81, 1,147,117,167,204, 85,173,200,200,200,
+ 79,236,159,199, 81, 74, 47,222,172,166, 8, 12,161,148, 6, 0, 64,126,126,126, 64, 74, 74, 74,213, 53,107,214,196, 78,155, 54,
+173,139,194,104,252,216, 12,156, 40,111,251,135, 58,214, 57, 40, 16, 18,237,116,203, 84, 74,221,184,237,124,101, 92,152,184,168,
+168,168, 57,189,122,245, 26,190, 96,193, 2,205,190,125,251, 52, 77,155, 54, 69,201,133, 17,206,250,158, 82,234,204, 99, 15, 62,
+216,186,220,195, 7, 64,136,140,140,156,221,171, 87,175,161,243,230,205,211,156, 58,117, 74, 83,171, 86, 45,167,166,107,158,181,
+ 95,128,209,188,121,139,219,157,206, 91,186,239, 61,122,244, 24,186, 96,193, 2,205,209,163, 71, 53,245,234,213,115,106,186,123,
+103,142,227,144,144,208,210, 39,205,158, 61,123, 14,253,234,171,175, 52,137,137,137,154, 70,141, 26,217, 77, 26,156,105,188,145,
+116,222,229,154,247,159,193, 34,132,112,161,161,161,139, 19, 18, 18,122,172, 94,189,154, 7,128,196,196, 68,228,228,228, 32, 42,
+ 42, 10, 58,157, 14, 42,149, 10, 70,163,177, 66,119, 89,225,225,225,223,182,106,213,106,200,234,213,171,101, 0,240,219, 19,143,
+224,130, 12, 24,115,213, 12,185, 92,142,115,231,206,129,231,249,155, 9, 29,119,240,243,243,251,113,229,202,149, 65,113,113,113,
+ 92,118,118, 54,106,213,170,133,107,215,174,181,218,190,125,123,252, 51,207, 60,243, 12, 33,100, 4,165,116,187,175,154,127,252,
+241, 7,180, 90,173,243,101,177, 88,200,141,166,143,231,249,232,125,251,246,133,233,116, 58,136,162, 8, 74,105,169, 2,236, 94,
+240, 36, 73, 66,251,246,237, 45,229,158, 60, 65,136,222,183,111, 95,152, 90,173,190, 78, 75, 20, 69, 40, 20, 10,112, 28,231,184,
+ 67,132,205,102, 67,155, 54,109, 44,229,221,209,213,171, 87,239,113,135,185,226, 56, 14,203,151, 47, 71,213,170, 85, 17, 22, 22,
+ 6,173, 86, 11,181,186,226, 30, 88, 16, 4,132,132,132,224,165,151, 94,194,227,143, 63,142, 37, 75,150, 64, 38,147,149, 90, 30,
+ 28, 28,140,191,254,250, 11,254,254,254,168, 81,163, 70,169,229,247,108, 36, 16, 8, 94,191,253,188, 51, 34, 59,168, 79,115,161,
+ 91,251,152,121,206,202,181,100, 37, 42,149,172, 75, 37, 81,204,221,188,235,210, 36, 31,110, 0,170,236,218,181, 11, 74,165,210,
+183,139,187, 40,162, 85,171, 86, 85,188,148,159,222, 77,154, 52,249,237,165,151, 94,146,215,169, 83,135,200,100, 50, 8,130, 0,
+ 65, 16, 28,249,177, 6,165,180,134, 36, 73,157, 50, 51, 51,233,231,159,127,254, 49, 33,100, 0,165,244, 79,143,122, 54, 67,179,
+ 98,147,212,155, 82, 84, 13,239, 70,171, 95,221, 68, 80,108,146,122, 7, 8,134,115, 0,238, 90,131, 69, 8,241, 87,171,213,239,
+254,242,203, 47,114, 0,232,214,173,219,187,132,144,255, 81, 74, 11, 42,235, 63, 2, 2, 2, 16, 16, 16,128, 38, 77,154, 96,224,
+192,129,129, 45, 90,180,120,163,166,201, 52, 42, 25, 48,151, 89,134, 56, 46,122,221,150, 51, 97,142,239, 67, 31,137,147,247,232,
+ 84, 39,179,164,131,139,251,218, 20,146, 72, 83, 55,237,188,144,224,101, 95,185,170, 85,171,126,218,179,103,207,199, 22, 44, 88,
+224, 7, 0,223,126,251, 45,122,247,238,141,170, 85,171, 66,173, 86, 67, 46,151, 67, 46,151, 67, 38,147, 57,223,189, 68,132,248,
+170, 85,171,126,252,240,195, 15, 15,154, 55,111,158, 31, 0,252,240,195, 15,232,211,167, 15, 66, 66, 66,224,239,239, 15,165, 82,
+ 9,133, 66, 97,215, 34,240, 22,175,243,148,206,231,186,119, 65,140, 90,137,190, 31,126,130,192,192, 64,252,253,250,139,144,113,
+ 28, 94,252,107, 27,252,253,253,189,214, 31,158, 52, 19, 19, 19,145,153,153,233,113,223,121,158, 47,183,188,185,238,123,239,222,
+189, 7, 57, 52,127,248,225, 7,244,232,209, 3, 33, 33, 33,208,233,116,206,125,255, 87,155,243, 73,179, 71,143, 30,131,190,250,
+234, 43,167,102,215,174, 93, 17, 28, 28, 12, 63, 63, 63,200,229,114,231,241,172,200, 57,186,155, 53,239, 75,131,229,232, 27, 21,
+ 22, 22,246,216,218,181,107,157,103, 94, 38,147, 65,169, 84, 58, 51,135,235,133,219,215, 48,116,108,108,236, 83,171, 87,175,118,
+110,100,118, 43, 84, 42,149,170, 66,154,110,250,221, 58,119,238,188,108,237,218,181, 42,185, 92, 14,131,193,128,164,164, 36, 4,
+ 4, 4, 64,161, 80,160,127,255,254,124,155, 54,109, 66, 58,119,238,252, 43, 33,100, 40,165,116,147, 55, 77, 74, 41,116, 58, 93,
+ 41,131,117, 51,145,123, 66, 8,212,106, 53, 86,173, 90, 5, 65, 16, 74,101, 50, 79,149, 88,120,120,184,215,168, 4, 0, 40,149,
+ 74,236,222,189, 27, 28,199, 65, 38,147, 57, 95,127,252,241, 7, 94,127,253,117,100,102,102, 58,151,249,249,121,109,221, 36, 26,
+141, 70,237, 48, 87,142,115,175, 86,171, 33,147,201,136, 32, 8,132,231,121, 0,160, 21,233, 16, 42, 8, 2,146,147,147,241,196,
+ 19, 79, 96,209,162, 69,120,255,253,247, 49,116,232,208, 82,203, 11, 10, 10, 16, 20, 20,132,192,192, 64, 40,149,202, 27,206, 11,
+119, 19,146,219,209,153,250,254,199,154,146, 14, 30, 18, 32, 1, 20,212,249, 57, 35,227, 28,102,126, 58,151,247, 85, 91,169, 84,
+ 98,215,174, 93,112,109,118,229, 56, 14,114,185,188,212,111,130, 32, 32, 34, 34,194, 23,189, 41, 43, 87,174, 84, 44, 95,190, 28,
+191,255,254, 59, 68, 81,132, 76, 38,131, 74,165,130,191,191, 63,130,131,131,157,175, 26, 53,106,144,239,190,251, 78,222,172, 89,
+179, 41, 0, 60, 27, 44,142, 6, 72,118,115, 5, 0, 97,221,104,245,243,171,249,160, 64,191,146, 40,206, 93,106,174, 4, 0, 19,
+191,248,226,139,144,248,248,120, 0,192, 23, 95,124, 17, 50,114,228,200,137,132,144,119, 40,165, 55,220,196,202, 3,203, 8, 33,
+ 67,236, 17, 91,213, 67, 15, 61,164,248,242,203, 47,209,160, 65, 3,188,242,202, 43,193, 51, 63,254,184, 47,128, 21,101,231,165,
+210,153,105,250, 39,115, 3, 93,111,168,254,125, 1,215,178,146,241,238,187, 31,120,173,147, 1,112,145,145,145,207,124,253,245,
+215,206,238, 16,193,193,193,206, 58,200,189,142,114,188,151, 83, 47, 17,123, 84,104,228,130, 5, 11,156,154,161,161,161,165, 52,
+100, 50, 25,146, 79,252,131,117,223,206,128, 54, 36, 2,195, 94,159, 94,225,116, 70, 41, 21,136, 86, 43,208,172, 89, 51,168,213,
+106, 36,202, 74, 46,101, 14,115, 85, 94, 58,203,210,228,121,222,153, 70, 74, 41,140, 70, 35, 10, 11, 11, 33,138, 34,204,102, 51,
+226,227,227,125,218,247,175,190,250,202,169, 89,165, 74, 21,103,253,238, 90,207, 59, 94,142, 27,152,242, 52, 35, 35, 35, 71,126,
+243,205, 55, 78,205,144,144, 16,167,150, 32, 8,144,203,229,248,225,135, 31,224, 99, 68,219,103,205,138,158,119,119,205,139, 23,
+ 47, 98,218,180,105,144,203,229,142, 46, 64,206,136,101, 84, 84, 20, 62,255,252,115,159,174,113,247, 85, 4, 11, 0,201,206,206,
+150, 78,158, 60,201, 29, 60,120, 16,114,185, 28,161,161,161,104,213,170, 21, 0,192, 98,177, 64, 16, 4,168,213,106, 82,175, 94,
+189, 76,199, 65,115,188,187,182,165,187,140, 48,224,174, 93,187, 38,109,216,176,129, 91, 50,176, 7,204, 20,104,241,238,116,244,
+232,211, 7,235,163, 20,224, 1,180, 58,153, 13,133, 66, 33, 68, 68, 68, 88, 29, 39,193,161,235,218, 55,203,195,168, 5, 63,173,
+ 86,251,221,154, 53,107, 84, 28,199,161,176,176, 16,146, 36,161,109,219,182, 32,132,224,232,209,163,120,231,157,119,240,219,111,
+191, 97,229,202,149,234,184,184,184,239, 8, 33,141, 40,165,133, 46,102,234,152,167,204,233,239,239, 15,181, 90,237, 52, 88,106,
+181,154, 52,104,208, 32,211,209,126,238,214, 28,151,150,148,148, 20, 95,150,166, 35,146, 48, 96,192, 0,103,159, 51,199, 5,208,
+181,176, 57, 62, 39, 37, 37,121, 50,125,215,105, 74,146,132,118,237,218, 1, 0,180, 90, 45,116, 58, 29,182,108,217,226, 92, 30,
+ 23, 23, 7,179,217,140, 42, 85,170,224,196,137, 19, 62,105, 94,185,114, 5,139, 23, 47,134, 76, 38, 67, 72, 72, 8,100, 50,153,
+124,211,166, 77,239,107,181,218, 0,158,231, 17, 24, 24,136, 62,125,250, 44,232,219,183,175, 35, 13,226, 31,127,252, 33,148,165,
+201,243, 60, 84, 42, 21,126,248,225, 7, 76,155, 54, 13,111,189,245,150,123,116, 15, 70,163, 17, 33, 33, 33, 8, 10, 10, 66, 80,
+ 80,144, 79,233,188, 89,110,181, 38, 5, 69,210,161,245, 56,126,120, 19, 68, 42, 66, 18, 37, 80,137, 66,148, 36, 28,218,184,191,
+ 94,198,133,244, 40, 10,234,236,109, 36, 22, 21,219, 58, 85, 81, 54, 0,176,106,107,182,105,182,183,116,242, 60, 15,139,197,130,
+245,235,215,227,220,185,115,216,176, 97, 3, 12, 6, 3,170, 84,169,130,192,192, 64,180,105,211, 6, 35, 71,142,244,104,176,220,
+ 53, 69, 81,252, 33, 45, 45,173, 69,155, 54,109, 72,126,126, 62,178,179,179, 81, 88, 88, 8,139,197, 2,139,197,226, 60,135, 90,
+173, 22, 85,171, 86,133,193, 96,160, 38,147,233,135, 50,247, 93, 34,249, 28,193,149,243,171,132, 42,181,251,219,212,153, 91, 66,
+ 76, 6,179,220, 54,127,149,102,228, 31,227,107,119,231, 40, 71,129,146, 93, 39, 4, 84, 18,197,236, 77, 59, 46,188,116,135,207,
+251,168,177, 99,199, 54,114,109,158, 30, 54,108, 24,146,146,146, 26,205,154, 53,107, 20,128, 47, 42,170,169, 6,162, 0,192, 6,
+252,133,146, 23,166, 24, 12,228,253, 85,171, 6, 0,120,114,229,202,149, 24, 58,116, 40, 62,253,248,227, 38,238, 6,171,212,241,
+164, 20,201,103,182,227,226,153, 93,144, 36,201,254,162,101,126,166,190,165,147, 20, 21, 21, 25,247,237,219,167,251,254,251,239,
+ 17, 28, 28,140,154, 53,107,194,207,207, 15, 74,165,242, 58, 51,224,120,121,219,119,189, 94,111, 60,121,242,164,110,217,178,101,
+ 8, 9, 9, 65,141, 26, 53,160,213,106,161, 82,169,156, 55,232,251, 54,172,196,168, 17,253,145,115,249, 20,230,254,239,113,159,
+211,249,220, 67, 93, 16,173, 86,160,255,212,233,104,212,168, 17, 86, 60,222, 15, 28, 1, 70,255,189, 23, 50,153, 12,223,247,238,
+ 0,165, 82,129,209,127, 31,240, 89,243,192,129, 3,160,148,162, 70,141, 26, 48, 24, 12,206, 40,155, 92, 46,199,166, 77,155,208,
+175, 95, 63, 44, 89,178, 4, 15, 62,248,160,215,125, 47, 42, 42, 50, 30, 61,122, 84,247,211, 79, 63, 33, 56, 56, 24,213,170, 85,
+131, 70,163,113,234,185,154,152,152,152, 24,228,229,229,161,118,237,218,229,106, 22, 23, 23, 27, 19, 19, 19,117, 75,150, 44, 65,
+112,112, 48,162,163,163,161,209,104, 74, 69,194,166, 76,153, 82, 74,163, 89,179,102, 55,173, 89,209,243,238,174, 57,112,224, 64,
+212,174, 93, 27,254,254,254,206, 99,224,110,180, 43, 72, 75,148,238,230, 96, 6,160,112,121,207, 2,112,192,195,122,142,223,101,
+ 0,154,219,151,137, 0, 10, 1, 4,122,208, 43, 75, 39,219, 30, 47, 14,117, 91,223,253,127, 74, 27, 44, 66,136,163, 60,118, 2,
+176, 19, 0, 26, 54,108,136,156,156, 28, 40,149, 74,180,106,213, 10, 89, 89, 89,206, 48,159, 36, 73, 24, 60,120, 48, 63,126,252,
+248, 48,142,227, 96,181, 90, 65, 41, 5,207,243,112,220,249,185,251, 0,142,227,208,166, 77, 27, 28,183, 31,211, 30,125,250, 32,
+ 58, 58, 26,201, 46,119,228, 67,135, 14, 37,175,191,254,186,224,136, 94, 80, 74, 97, 48, 24,208,172, 89, 51,117, 57,209,145,255,
+253,250,235,175, 1, 10,133,194,105,174, 28,105, 57,121,242, 36,102,206,156,137, 39,159,124, 18,151, 47, 95, 70, 68, 68, 4,222,
+120,227, 13,221,140, 25, 51,254, 7, 96,170,183,179,169,211,233, 74, 25,172, 17, 35, 70, 8,109,218,180, 9,211,104, 52,206,232,
+150,221, 84,162, 77,155, 54,196, 91, 4, 75,146, 36,252,245,215, 95, 30,239, 14,221,239, 24,236,163, 46,124,210,220,183,111,159,
+211,156, 57,162, 23,142,229, 73, 73, 73,206, 8,150,221, 8,150,167, 73, 29, 70,205, 17, 38,151,201,100,242,125,251,246,125, 24,
+ 17, 17,161, 27, 49, 98, 4, 10, 11, 11, 17, 25, 25,137,238,221,187, 67,146, 36, 88, 44, 22,140, 25, 51,166,220,200,139, 76, 38,
+195,254,253,251, 49, 99,198, 12,140, 31, 63, 30, 11, 22, 44, 64,183,110,221, 74, 69,176, 28,119,186,254,254,119,124,140, 67, 37,
+134,176, 0,139,205, 10,189,222, 0, 74, 69,136, 18,133, 36, 74, 56,186,245, 80,189, 11,135,207,197,174, 93,186, 88, 6, 0,198,
+109, 43, 93,183,138, 24, 56,239,231,250,157,130,229,251,182, 94,179,236,243,210,236,140, 23, 95,124, 17,147, 38, 77,194, 99,143,
+ 61,134,141, 27, 55,226,237,183,223,198, 51,207, 60,227, 52,239,142,188,224, 67,179,227,215,195,134, 13,123, 97,197,138, 21, 13,
+ 94,123,237, 53,206, 81, 38, 53, 26, 13, 8, 33, 48, 26,141,206,215,201,147, 39,165,231,159,127,254,180,217,108,254,186,204,140,
+ 36,168,143,104,149,250, 63, 51,114,184,186, 87,254, 14,230,136,224,111, 9,173,209, 41,255,225,122,221,104,183,199,107, 6, 81,
+169, 36,194, 71, 65, 97, 50, 22,227,173,241,227,248, 59,121,170, 8, 33,189, 31,122,232,161,238, 31,126,248,225,117,203, 62,252,
+240, 67,156, 56,113,162, 59, 33, 36,185,172, 38,209, 50,204, 85,116, 64,213,170,179, 0, 64,125,229,202, 88, 3,144, 10, 0,239,
+ 3, 61, 68,160,223,198,141, 27, 1, 0,213,171, 87,135, 4, 52, 38,192,143, 60,176,204, 6,172,243, 20, 81,183, 88,109, 48, 24,
+140,144,104, 73, 62,146,168, 4, 73, 44,137,130,186,155, 44,111,237,110,148, 82, 74, 8,145,120,158, 71,147, 38, 77,208,163, 71,
+ 15, 40, 20, 10,232,116, 58,103, 61,239, 94, 39,249,112, 81,164, 0, 36, 66, 8, 98, 98, 98,208,189,123,119,200,229,114,104,181,
+ 90,248,251,251, 59, 13, 22,207,243,104,210,166, 11,150, 45,249, 4,195,123,196, 98, 68,135,112,252,122, 52,219,167,116,214,208,
+ 40, 80, 67,173, 68,195,134, 13,225,231,231, 7, 66, 0,158,231,156,233,212,106, 84,144, 59,155, 31,125,219,247, 43, 87,174, 32,
+ 57, 57, 25,201,201,201,224, 56, 14,109,219,182,133, 66,161,128, 32, 8, 56,115,230, 12,166, 78,157, 10,179,217,236,211,190,115,
+ 28,135,186,117,235,162, 75,151, 46, 80, 40, 20,112, 92, 43, 92,155, 6,101, 50, 25, 10, 11, 11, 81,167, 78, 29,172, 90,181, 10,
+237,219,183,247,170,217,168, 81, 35,116,234,212, 9,114,185, 28,106,181,218,217, 85, 71,225,178,175, 69, 69, 69,206,227,208,162,
+ 69,139, 10,105,110,216,127, 25, 11, 55,108,129,201, 44,161, 64,111, 45,181, 65, 68, 21,127,236,252,105,188, 79,251,238,208,252,
+250,235,175,145,151,151,231,172,135, 56,142,115,190, 8, 33,136,142,142,198, 87, 95,125,229,169, 28, 58,189, 8,165,116,155,219,
+226, 80, 66,200, 90,151,243,216,135, 16,178,214,245,189,172,245,236, 31, 59, 76,156, 56, 49, 97,198,140, 25,211, 90,183,110,189,
+108,247,238,221, 75,203,210, 43, 75,103,226,196,137,177, 51,102,204,152,230,186,190,135,255,185, 62,130, 85,146,231, 8, 5,192,
+ 57, 34, 51, 81, 81, 81,206,118,103,157, 78, 7,185, 92,238,220,208,102,179,225,187,239,190, 67, 88, 88, 24,194,195,195,157,239,
+101,101,232,234,213,171,131, 82,138, 87,178, 74,186, 0,253, 21, 41, 71, 50,128,135,179,168, 83, 79, 20, 69,172, 88,177, 2,126,
+126,126,206,130,174,211,233,202,109, 46, 82, 40, 20,157, 90,182,108,201,153, 76, 38,103,152,156,227, 56,156, 60,121, 18, 51,102,
+204,192,208,161, 67, 81,191,126,125,136,162,136,226,226, 98,116,238,220, 89, 54,119,238,220, 78,190, 26, 44,141, 70,227,236,119,
+100, 50,153,176,121,243,102, 4, 6, 6, 34, 40, 40, 8, 33, 33, 33, 8, 14, 14,134, 82,169,116,205, 24,229, 54, 59, 14, 24, 48,
+160, 84,228,202, 53,106,229, 90,161, 57,154,253,124,209,124,240,193, 7,157,209, 43,157, 78,135,117,235,254,173,159, 91,181,106,
+ 5, 74, 41, 66, 67, 67,177,103,207, 30,175,149,110, 92, 92, 28, 36, 73, 66, 88, 88, 24,100, 50, 25,217,180,105,211,251,118,115,
+ 69,100, 50, 25,254,249,231, 31, 36, 37, 37, 33, 52, 52,212,121, 87,234,141,226,226,226,140,185,115,231,138, 95,126,249, 37, 0,
+160,107,215,174,200,207,207,191,234,178, 60,103,248,240,225,165,246, 55, 55, 55, 55,231, 62,240, 87,176, 89,108,208, 27,140, 40,
+ 42, 44,134, 85, 18, 97,181,137,184,154,150, 21, 56,254,245,177,178, 79,199,140, 4, 0,188, 62,251, 11, 20,126,245,111, 5,246,
+251,235, 67,194, 6,204, 92, 62, 1, 64,255,242,244,245,122, 61,140, 70, 35,170, 87,175,142, 3, 7, 14,160,176,176, 16,221,186,
+117, 43, 21,253,245,210, 4,225,122,238,205,132,144,182,125,250,244, 57,240,217,103,159,213,110,220,184, 49, 41, 46, 46, 70,113,
+113, 49,244,122, 61, 28,159,143, 29, 59, 70,151, 46, 93,122, 65,175,215,183,161,148,150,217,103, 72, 17, 95,120,206,156,232,183,
+ 98,199, 17,121,159, 71, 7,246, 11, 72, 77, 75,177,229, 24, 84, 69,249,134,211, 38,145,158, 0, 21, 41, 68, 74, 65, 69, 9, 34,
+149,112, 39,199,111, 19, 66,162,235,213,171,247,252,146, 37, 75, 60, 26, 82,158,231,177,100,201, 18,180,107,215,238,121, 66,200,
+201,242, 58,247, 59,168, 9, 40,108, 50,217,248,159,127,254, 89, 14, 0, 93,186,116, 25, 95,211,106,125, 61, 25, 48, 55,110,218,
+116,208,238,221,187, 3, 52,154,146,113, 66, 1, 1, 1,160,148,242,122,189, 62,160, 77,155, 54,131,224,201, 96, 73, 20, 86,171,
+ 13, 6,163, 9,121,249, 69,176,154,173,176, 73, 54,136, 54, 9, 54,169, 36, 58,106, 19, 69, 72, 54, 17, 54, 73, 4, 47,240,126,
+157, 30,172, 94, 84, 18,203, 34,121,219,246, 94,174,230, 41,139,150,140,240, 2,170, 86,173,234,108, 18,118,237, 43,227, 45,138,
+225, 1,177,164, 46,164,206,186,241,200,214,181,184,122, 98, 39,228,132, 66, 18,173,144,108, 22,136, 86, 11,120, 72, 56,113, 62,
+ 13,141, 35,189,214, 33,206,116,246,124,247, 3,180,106,213, 10,191, 14,233, 15, 66,128,209,155,247, 64, 46,151, 99,233, 35,221,
+160, 80, 41,240,236,134,189,190,166,179,212,190, 39, 38, 38,226,149, 87, 94,193, 71, 31,125, 4,181, 90,237,188, 57, 57,117,234,
+ 20,150, 47, 95,142,135, 30,122,200,231,125, 39,164,164,169,213,113, 12, 39, 78,156,136,244,244,116,204,154, 53, 11, 9, 9, 9,
+144,201,100,200,203,203, 67,155, 54,109,144,153,153,233,147, 38,165, 18,130,131,131,157,221,117,220,251,136, 57,110,100, 43,114,
+142, 92, 53,159,126, 36, 2,171,119, 45, 5, 1,193,222,159,198,150,186, 30,205, 95,190,163,194,154,147, 38, 77, 42,149,206,138,
+ 68,175, 92,188, 8, 41, 99,121, 31, 31,235, 52,199,122,142,131,172,156, 49, 99,198, 52,247,237,189,233,185, 46,119,219,222,236,
+102,202, 50,189, 54, 17, 82, 74,105, 84, 84, 20, 36, 73,130, 78,167,131, 66, 81, 18, 1,115,191,144,106,181,218, 82,142,220, 91,
+123, 50,207,243,160,148, 58, 15, 44,239, 97,249,158, 61,123,174, 51, 1,223,124,243, 77,185,237,180, 54,155,173,145,159,159, 31,
+ 10, 11, 11,157,125,164, 20, 10, 5, 38, 76,152,128,225,195,135, 59,205,149, 66,161,192,162, 69,139, 16, 31, 31, 15,179,217,220,
+168,188, 3, 42,151,203,245, 77,155, 54,229, 28, 81, 32,181, 90, 77,134, 14, 29,202, 91, 44, 22,168, 84,170, 82, 81, 39, 71,223,
+ 52,111,102,200, 17,109, 90,191,126,189, 79, 17, 44, 95,251, 32, 81, 74,113,232,208,161, 82, 70,205, 62,212, 24, 0,112,248,240,
+ 97,231,133,214,215,246,110, 81, 20,161, 86,171,137, 92, 46, 39, 90,173, 54, 96,196,136, 17, 78, 93,199, 57,119,236,183, 47, 29,
+173,143, 28, 57,210,185,188,229, 71,143, 30,189, 47,167, 99,144, 36, 9, 22,171, 21, 6,131, 17,133,197,122, 76,153,110,111, 81,
+155,130,125, 0,246,181, 29,245, 10, 94,236,241, 80, 23,120, 25,221, 87, 22,193,193,193,248,237,183,223, 32,147,201,176,106,213,
+ 42,248,251,251,163, 95,191,126,240,247,247,199,248,241,227,241,248,227,143,251,108,176,236,121, 41,159, 16,210,118,236,216,177,
+ 7, 62,254,248,227,234,213,171, 87,135,197, 98,129,217,108,134,197, 98,193,249,243,231,177,116,233,210, 20,189, 94,223,150, 82,
+154,239, 77, 79, 17, 95,120,110,237,107,181, 51,218, 13,124,196,120,226,202, 6,100, 94,201,130, 77, 76,133, 77, 20, 97,179,218,
+ 74, 12,129, 36,193,102,177,129,231, 57,255,206,173,107,108, 42,233,240, 79,204, 91,247, 36,247,186,141,167,138,158, 57,115, 38,
+ 39, 52, 52,212,113, 7,233,111, 54,155,137,189, 46,161, 0, 28, 29,220,139, 1, 88,124, 17, 76, 1, 70,125,250,209, 71,213, 28,
+205,247, 31,125,244, 81,181, 55, 94,123,109, 20,128, 57, 39,142, 30, 93,252,244,211, 79,143,253,229,151, 95, 74,109,243,244,211,
+ 79,227,196,209,163,139,203, 10, 17, 88,173, 86, 24, 12, 38,100,103, 95,195,115,163,223,253, 55,228, 12,234,236,232,110,159,213,
+ 17, 0, 84, 0,144,157,121, 22, 99, 94,121, 67, 89,214, 13, 85,227,198,141, 29,229, 29, 50,153,236,186, 78,200,174,245,187,183,
+250,195, 30, 25, 42,213,197, 66, 46,151,227,220,238,181, 24, 59,106, 16, 32,218, 0, 75, 49, 96,209,131, 90,244,160,230, 98, 16,
+133, 26,212,106,244,170,235, 72,167,163,219,134,192,115, 80, 42,254,173, 55, 53, 26, 53, 20, 42,133, 79,233,244,180,239,151, 46,
+ 93,194, 75, 47,189, 4,179,217,140,129, 3, 7,194,104, 52,194,100, 50,193,104, 52, 34, 38, 38, 6, 6,131,193,231,125,151, 36,
+201, 25, 5, 28, 59,118, 44, 18, 18, 18, 48,117,234, 84,188,249,230,155,136,137,137,193,168, 81,163,176,108,217, 50,196,198,198,
+ 66,175,215,123,213,116,212, 37, 58,157, 14,130, 32, 56,235, 96,215,115,229, 48, 88,190,158, 35, 79,154, 37,211,129,225,186,243,
+254,234,136,174, 21,214,156, 54,109, 26,178,179,179,175,139, 92,185, 70,176,230,205,155,119,163, 55, 68,107,125, 49, 89, 46,235,
+ 37,218,127, 50, 76,152, 48,225, 45, 66,200,218, 9, 19, 38,188, 53,125,250,244, 36, 95,244,202, 88,254,135,253,253, 97,151,223,
+ 18,189, 26, 44,160,100,232, 40,165,212, 25,214,116, 28, 56,199, 50, 0,208,104, 52, 88,187,118, 45, 86,172, 88, 81,234,130, 82,
+ 22, 28,199, 65,146, 36,252, 25, 90,114, 34,122,219, 35, 87,142,239,189,174, 74,232,211,167, 15, 98, 98, 98, 74, 69,175,212,106,
+117,185,102, 67,146, 36, 92,186,116, 9,199,142, 29, 67,235,214,173,145,159,159, 15, 1,192,235, 71,143,162,241,136, 17, 48,217,
+141,159, 66,161,192,243,207, 63,239,211, 9, 60,112,224, 64,169, 78, 64,141, 27, 55, 78,109,211,166, 77,212,158, 61,123,156, 17,
+ 45,165, 82, 9,149, 74,229, 52, 25, 62, 22,106, 12, 26, 52,168,148, 25,114, 55, 88,142,194,243,215, 95,127,249,212, 68, 72, 41,
+ 69,199,142, 29,157,209, 43, 63, 63, 63,252,254,251,239,206,117, 58,116,232, 0, 66, 8,194,194,194,176,110,221, 58,175,154,142,
+ 99,234, 56,247, 60,207,163,184,184, 24,137,137,137, 80, 40, 20,206,254, 25,106,181,218,185,255,140,178, 78,184, 4,179,213, 10,
+189,193,136,194,194,146,138,244,220,177, 95, 75,173, 98, 49,221,248,224, 52, 71, 36,180,160,160, 0,155, 55,111,198,111,191,253,
+134,132,132,132, 82,205,131,190, 54, 17,186,228,209, 44, 66, 72,187, 55,223,124,115,239,251,239,191, 31, 25, 18, 18, 2,139,197,
+130, 75,151, 46,225,187,239,190, 75,215,235,245,237, 40,165, 89, 21, 16,132,205,106,131, 81,111, 64,126, 97, 49, 38,127,184,168,
+204, 42, 2, 0, 44,230, 66,244,233,213, 81,113, 91, 79, 19,165,105, 0,158,113, 41, 87,139, 1, 4,216,191, 22, 80, 74,135, 87,
+ 68, 79, 6,116, 26, 56,104, 80,151,177, 99,199, 58,127, 27, 59,118, 44,246,238,221,219, 69,182, 98,197, 49, 43,176,149, 95,177,
+162,201,172, 89,179,156,235,204,154, 53, 11,191,173, 88,241,183, 8,108, 45,235, 56, 90,237, 77,132, 69,197, 6,248, 7, 70, 32,
+237,226, 54,175,105,145,243, 38,208,114,234,101, 71, 29, 82, 86,191, 27, 95,205,149,235,197,182,105,211,166,112, 52, 49,203,229,
+114, 52,233, 50, 8,159,205,249, 6, 74,142, 98, 64,151,198, 8, 85, 75, 32,154, 96,200, 59, 78, 0, 9,172, 81,178,225,228,230,
+240,165,174,219,246,246,235, 56,175, 85,225,249,141,187, 32,147,201,240,219,144,222,144, 43,228,120,242,143,237, 37,131,123, 70,
+ 14,128, 92,169, 64,247,249,203,125,185, 80, 59,247,253,220,185,115,216,181,107, 23, 26, 54,108,136,179,103,207, 58,251,216, 58,
+174, 91, 62,182, 38, 80,199, 60, 87,142,122,252,202,149, 43,232,211,167, 15,228,114, 57, 22, 45, 90,132,109,219,182,225,205, 55,
+223,196,211, 79, 63,141,206,157, 59,123,236, 23,235,174, 25, 27, 27, 91,234, 28,149,213, 63,170, 34,231,200,147,166, 51,255,222,
+224,121,119,213,116,116,110,247,100,214,111,182, 99,187, 75,180,200, 83,147,217,195, 30, 34, 79, 45, 81,210, 55,202, 52,125,250,
+244,164,233,211,167,247, 33,132,172,157, 62,125,122,159,114, 34, 88, 15,123,137,112, 61,140,146, 62, 87,229,215,209,110,109,159,
+157, 92, 77,148,162,156,182,108,173, 86,139,103,158,121, 6,227,199,143,119,118,100, 44, 15,135,115, 45,143,181,107,215, 94,247,
+219,170, 85,171,188, 53, 17,158, 12, 8, 8, 72,232,210,165, 11,242,243,243,113,249,242,101,232,116, 58, 52,158, 57, 19, 71, 95,
+124, 17,205, 23, 44, 0,215,165,139,179,192, 31, 61,122, 20, 74,165,242,100, 69, 79,170, 78,167, 67, 80, 80, 16, 84, 42, 21,252,
+252,252,224,231,231, 7,173, 86,235, 52, 90,222,154, 8, 29,133,249,143, 63,254, 40, 55,114,229, 26,242,245,197, 12, 81, 74,177,
+103,207,158,235, 34, 88,142,255,116, 44,115, 68, 50,124,209,180, 71, 44,169, 82,169, 4,207,243,208,104, 52,206,112,191, 74,165,
+114,190,124,141, 96,121,155, 72,180,102,205,154,165, 38, 34,149,201,100,165, 38, 34,189,247,155, 8, 77, 40, 46, 42,174,116,125,
+179,217, 12, 65, 16,240,219,111,191,225,129, 7, 30,112,154, 43,135,177,114, 61,239, 21,172,192, 82, 9, 33,157,230,206,157,187,
+239,179,207, 62, 11, 42, 42, 42,194,162, 69,139,242,139,138,138, 58, 81, 74, 83, 43,164, 5,192,106,177, 65,111, 50,161,168,176,
+228, 24,156, 79,250,213,171, 41,187,151,105,212,180,233,240,239,191,255,254,186,223,191,255,254,123,156, 61,123,118, 56,142, 30,
+221, 90, 13, 88, 48,126,252,248, 58,241,241,241,213, 0, 96,252,248,241, 41,213,128, 5,229,149,115, 71, 19, 97,145,221,172, 27,
+139,179, 43, 45,210,234,126,195,119,179, 23, 68, 66,136,211,100, 60,244,216, 51, 72,191,112, 10, 13, 53,217, 8, 11,212, 66, 42,
+ 76,135,188,235,100, 28,189,166,193,236, 5,235, 43,148, 78,141, 66, 14,149,250,223,230, 38,149, 90, 5,165,189, 85,129, 16, 2,
+149, 70, 13,153, 66, 81,225,125, 63,117,234, 20, 52, 26, 13, 68, 81,188,238,122, 83,209, 17,205,148, 82,231,181,243,179,207, 62,
+195,184,113,227,176,104,209, 34, 28, 61,122, 20,205,155, 55, 71,183,110,221,112,245,234, 85, 28, 57,114, 4, 38,147,201,231,116,
+186, 94, 47, 78,156, 56,129, 77,155, 54,225,244,233,211, 72, 73, 73,185,225,243,238,222,204,104,111,193, 41, 49,175,155,254,193,
+163, 15,197,221,144,230,228,201,147,113,245,234,213,235, 34, 87,174,221,143,202,138, 96,185,122,145,114, 72,116,139, 30,193,209,
+ 31,202, 97,136,220,191, 3, 8,114,252, 54, 97,194,132,183,124,221,206,245,187, 35, 2,230,107, 83,165,224,233,162,235,104, 98,
+114, 28,116,215,200,148,227,179, 70,163,113, 70,153,106,212,168, 81,110,244,202, 81,224,120,158, 71,251, 11,133, 80, 40, 20,206,
+230,188, 94, 87,165, 82, 33,242,152,152,152, 82,125,176, 92, 79,138, 39, 76, 38,211,214,173, 91,183,182,232,215,175, 31,127,226,
+196, 9, 8,130, 0, 73,146, 96,122,240, 65, 52, 95,176, 0,199,198,142, 69,135,139, 23, 97,178, 90,161, 82,169,240,215, 95,127,
+ 89,244,122,253,214,138,100, 26,142,227,136,195, 96, 41,149, 74,248,249,249,193,223,223,223, 25,205,169, 72, 37, 84,214, 29,162,
+235,171, 34, 5,218,209,161,223,245,194,234, 56,127, 6,131,161,148,225,242, 21,215, 38, 3,135, 41, 10, 8, 8, 40,213, 44,234,
+136,226,249, 98,176,188, 77, 36,170, 84, 42,253,183,111,223, 94,199,223,223, 31,148, 82,100,103,103, 99,200,144, 33,103,238,249,
+ 0, 22,104, 73, 39,119,131, 17, 69, 6, 99,165,235,255,244,211, 79, 56,119,238, 28, 44, 22, 11,166, 79,159,126,157,177,186,145,
+ 8,150, 75,190, 58, 23, 23, 23, 39,245,236,217, 19,123,246,236,129, 82,169,180, 82, 74, 43, 60,127, 21,149, 36, 88,172, 54, 24,
+ 13, 38, 20, 21, 23,227,191,192,241,163, 71, 87,104,181,218, 33, 0,116,121,121,121,124, 64, 64, 0, 52, 26, 13, 12, 6, 67, 62,
+111, 31, 41,152, 12,152,213, 86,235, 71,143, 61,246,216, 44, 0, 16,172,214,143,202,155, 7,203,105,176, 42,249, 56, 58,234,173,
+178,162, 87, 55,106,174, 8, 33, 37,195,243, 57, 14,139,166,143, 67, 67, 77, 22,226,106,105, 97,188,122, 14, 74,255, 42, 32,129,
+ 53, 49,123,193,122,156, 72,190, 86,161,116, 14, 93,252, 43,170, 85,171,134,181, 79,246,135, 82,169,196,144, 95, 55,149,116,210,
+ 30,245, 56,228, 42, 37,186,126,241,211, 13,237,187, 94,175, 47, 51, 82,229,107, 4,203, 85,211, 97, 0,227,226,226, 80,183,110,
+ 93,108,221,186, 21,113,113,113, 56,123,246, 44,206,158, 61,139,228,228,100, 28, 61,122, 20,185,185,185, 21, 62, 71,203,151, 47,
+ 71, 86, 86, 22,228,114, 57, 10, 10, 10,112,241,226,197, 50,251, 63, 87,228,188, 59,104,240,240,100, 0, 64,100,104, 64,133, 12,
+150,171,230, 39,159,124, 82,145,105, 30, 92,243,121,121, 43,101,187,245,117,114,124, 55,187,153, 29,247,239,238,235, 3,192, 85,
+ 0,188,151,237,220,191,103, 79,159, 62,125,171, 35,242,101,215,229,203,234,127, 85, 42,130,229,102, 2, 12, 13, 26, 52, 80,187,
+182,159,114, 28, 7, 63, 63, 63,242,198, 27,111,240,132, 16,232,116, 58, 4, 4, 4,160, 94,189,122,176, 88,188,119, 75,144,203,
+229,134, 86,173, 90,169, 93, 67,175,132, 16,104,181, 90,254,205, 55,223, 36,223,124,243,141,199,237, 86,175, 94, 93,110,230,182,
+217,108,179, 70,140, 24,241,108,106,106,106, 80,120,120, 56, 50, 50, 50, 32,151,203, 75,102,139,237,220, 25,237, 47, 92,128,197,
+110, 24, 78,157, 58,133,133, 11, 23, 22, 91, 44,150, 89, 55, 18,193, 10, 9, 9,129, 82,169, 44, 53, 42,198, 37,180,234, 83, 4,
+171, 50,205,149, 67,211,245,194,234,248, 60,106,212, 40,231,247,138, 84,146,114,185,156, 62,252,240,195,206,103, 16, 6, 6, 6,
+162, 74,149, 42,200,204,204,252,119,164,142, 61,114,231,171,193,242, 54,145,168, 76, 38,131,197, 98,113, 54,103,126,241,197, 23,
+ 55,108, 12,238, 42,131,101,147,136, 78, 23,138,200,200,250, 8, 13, 51, 66,146,196, 74,211,182,217,108, 24, 61,122,116,169, 57,
+175, 28, 23, 98,199, 36,182,142, 17,190,174,225,255,138,222,137,223,116,116,132, 2, 86,155, 61,138,167, 55,223,115,231,176, 70,
+141, 26,254,246, 38, 67,119,150, 81, 74,215,121, 60, 55,246, 41, 25,120,224,131,203,151, 47, 55, 9, 8, 8, 64,247,238,221,177,
+102,229,202,213,239, 2,206,144,141, 1, 72, 85, 95,185,242, 63,251,231, 52,111, 65, 61, 71, 19, 97,177,190,178,205, 58,185, 46,
+122,117,179, 77, 57, 28, 87,114, 99,246,251, 87, 31,161,161, 58, 19,205,171, 43,177,107,239, 17, 60, 80,141,130,154,228, 55,156,
+ 78,157, 78, 87,210, 25, 95,163,129, 82,249,111,159, 43,165, 70, 13,185, 66,121,195,251,238, 26,169,186,217, 8, 22, 33, 92,169,
+227,248,236,179,207, 98,252,248,241,232,222,189, 59,206,158, 61,139,237,219,183,227,204,153, 51,120,229,149, 87, 16, 27, 27,139,
+ 30, 61,122, 84,232, 28,253,254,251,239,200,207,207, 7,165, 20, 89, 89, 89, 48, 26,141,152, 52,105,210, 77,159,119, 7, 23, 54,
+ 78, 3, 0,252,186,241,208, 13,107, 78,156, 56,209, 57, 7,163,227,154, 95, 94,212,202, 71,246,123,249, 94,209,237,111, 57, 30,
+ 13,214,233,211,167, 61,142,149,111,212,168, 81,102,215,174, 93,195, 78,159, 62, 13,157, 78,135,122,245,234,193,100, 50,149,217,
+ 12,225,250,180,237,164,164, 36,143,154,181,107,215,182, 60,244,208, 67,178,170, 85,171,150,138, 92, 57, 70,216,184, 58, 99,119,
+ 77,251, 69,160,144, 16,242,124,219,182,109,127, 92,183,110,157,186, 94,189,122,200,207,207, 7, 0, 44, 90,180, 8, 47,191,252,
+ 50,212,106, 53, 78,159, 62,141,254,253,251,235,245,122,253,243,174,115, 96,121,210,244,100,100,228,114,185,179,153,204,209, 84,
+166, 40, 39, 20, 93,198,147,198, 49,119,238, 92,143,115, 65,185,179, 96,193,130,146,220,234, 67, 58, 63,253,244,211, 74,211,220,
+187,119,111,169,103, 12,246,237,219,247,171, 30, 61,122, 32, 37, 37,165, 84,179, 96,121, 6,203, 93,211,219, 68,162, 60,207, 35,
+ 60, 60, 28,239,191,255, 62,170, 84,169,130,170, 85,171, 94,103,176,188,157,163, 27,188,123,191,165,154,148,163,137,115, 62,155,
+220,238,171,111,127,149, 41, 21, 28,246,108,255, 21, 5,185, 87, 74, 71, 96, 45,255, 14,137, 86,196,117,133,249,208,102,159,210,
+105, 50,153,240,241,199, 31, 99,242,228,201,152, 60,121,114,185,105, 42, 99, 56,180,215,125,119, 53, 88,190,152, 45, 79,154,146,
+ 36, 18,149, 38, 8, 26,109, 36, 98, 99,131, 32,249, 48, 87,167,116,231,207,187, 62, 37, 37, 37,160, 90,181,106, 56,115,230, 12,
+193,191,253,177,254, 61, 87, 10,197, 16,184,140,246,243, 88,222,129,163, 75,151, 46,109,210,180,105, 83,124,241,197, 23, 0,240,
+228,199, 27, 54, 60, 62,217, 80, 18,206,180, 79,201,240,151, 47,233, 20,169, 72, 84,154, 64,168,117,246,227, 40,249, 62,231, 41,
+ 45,103,223, 29, 23,191,155,188,209,187, 78,211,177,253,249, 61,127,224,225, 94,209,216,189,239, 40, 54,167,106, 81, 77,153,142,
+ 8,125, 22,164,172,147,248,223,160, 56,204, 94, 81,114, 17, 63,122,208,187, 38, 33, 4, 59,223,120, 30, 58,149, 18,143, 46,253,
+ 19, 50,153, 12, 91,199, 62, 5,185, 92,142,142,159,149, 52,201, 30,251,120, 34, 4,165, 2, 13, 95,153,236, 83, 58,221, 91,106,
+ 28,125,174, 92,205, 85,121, 17,172,242,246,189,168,168, 8,185,185,185,248,241,199, 31, 49,114,228, 72, 92,189,122, 21, 23, 47,
+ 94,196,233,211,167,177,108,217,178, 82,215, 56, 84,224, 28, 77,152, 48, 1,175,191,254, 58, 56,142, 67,147, 38, 77, 48,121,242,
+100,180,110,221,186,194,231,200,253,188,187,227, 45,122, 85,158,230,156, 57,115, 42, 60, 96,235,126,164, 66, 29, 52, 28,145,172,
+ 42, 85,170, 64,171,213, 2, 64,169, 11,172,183,102,194,178, 52,109, 54, 27,212,106, 53,212,106,117,169,105, 17,250,245,235,231,
+ 53,130,101,175,252,255, 34,132, 12,107,220,184,241,119,147, 39, 79,214,118,234,212, 73, 22, 25, 25,137,248,248,120,156, 62,125,
+ 26,127,252,241,135,101,222,188,121,122,189, 94, 63,146, 82,186,241, 70,234,100, 71,199,111,215, 25,237, 43,130, 40,138, 41, 23,
+ 47, 94,140,248,244,211, 79,121, 66, 8,102,205,154, 85,106,130, 86,247,125,220,187,119,175,205, 91,147,140,205,102, 75,185,120,
+241, 98,196,204,153, 51, 75,105, 58, 94,238, 38,197, 23,205,178,112,236,179,251, 49,240,165,240,120,155, 72, 84, 16, 4,156, 58,
+117, 10,239,189,247, 30, 8, 33,165, 6, 78,220,203,236,218,159,254, 77,155,132,200,160, 33,131,186, 52, 37,224, 96,246, 16,233,
+229,115,242,156,230,106,192,204,229,248,253,245,199,125, 57, 23, 23,183,109,219, 86,125,218,180,105, 60,207,243,248,228,147, 79,
+ 74,229, 37,247,243,254,247,223,127,139,106,181,250,242,141,238,135,197, 98,241, 58,138,170,156, 2,190,107,238, 39,239,117,255,
+234,251, 53, 50, 66,204,216,179,237, 87,228,231,121, 30,154,174,144, 9, 88,188,116,181, 77,224,185,148, 59,124,234,190,234,214,
+173,219,164, 77,155, 54, 9,213,170, 85,187, 97,145,104, 96,205,220,185,115,123,141, 24, 49, 34,184, 81,163, 70,142,193, 39, 10,
+251, 11,246,153,221,255,242,209, 36,173,154,253,233,123, 79,126,253,253, 26, 5, 71, 44,216,179,253, 87,228,187,153,245,235,163,
+209, 50, 44, 89,186,202, 34, 8,252, 41,111,117,240,141,140, 96,246,133, 22, 15,143,196,151,127, 46, 68, 88,211, 94, 24,220,183,
+ 29,118,126,241, 36, 30,107,100,128,229,231,161,104, 50,120, 49, 22, 77, 44,137,222, 52,255,101,162, 79,215, 10,127,221,191, 19,
+ 86,114, 28, 7,165, 74, 13,153,226,223,232,139, 66,163, 1, 95,129,136,173, 99,223,203,139, 84, 85,244,120,240, 60,143,152,152,
+ 24,212,174, 93, 27,109,219,182, 69,139, 22, 45,208,185,115,103, 28, 57,114, 4, 71,142, 28,193, 43,175,188, 82,166,185,242,229,
+ 28,117,239,222, 29, 61,123,246,188,233,115,227,126,222, 43, 3, 95,242,210,139, 47,190, 8, 0, 55, 27,205,186,127, 13, 86,104,
+104, 40, 20, 10,197, 13, 25, 42, 79,154,102,179,217,105,172,212,106,181, 51, 98,181,122,245,106,159, 51, 56,165,116, 35, 33, 36,
+246,157,119,222,121, 85,173, 86,119, 54, 24, 12, 13, 1, 64,163,209,156,212,235,245, 91, 44, 22,203, 28, 74,105,222,205,164,213,
+213, 96,120,112,243,229,222,226,103,101,101,245, 24, 62,124,248, 70,142,227,106,149,247, 96,102, 23,179,154,156,153,153,217,203,
+155,230, 19, 79, 60,225, 81,211,147,174, 47,154,101,152,195, 82,166,202,117,132,161, 79,153,204,203, 68,162, 50,153, 12, 58,157,
+ 14, 43, 87,174, 68, 72, 72,200,125, 85,192,118, 31, 76,255,184,188,229,157,170, 40,183, 1, 8, 29, 48,115,249,229,173,217,230,
+ 26,157,170, 40, 46,253,254,250,227,213,189, 24,158, 54, 51,102,204,216,105,181, 90,107,248,152,111, 47,153, 76,166,118, 21, 77,
+ 59,165, 20,167, 78,157,146,158,125,246,217,236,172,172,172,193, 55,178,255,219,247, 92,250,172, 93,171,200, 42,131,250,183,107,
+ 9, 66, 96, 54,155,202,106, 89,160,148, 82, 42,240, 92,202,182,189, 41,207,222,201,115, 70, 41, 61, 76, 8,153, 90,167, 78,157,
+ 23, 0,148,117, 37, 92,230, 77, 39, 25, 48, 43, 76,166, 79, 19, 18, 18,222,124,235,173,183, 2,251,246,237,139,106,213,170, 33,
+ 32, 32,160,194,105,218,185, 47,245,133,214, 9, 17,209,143,246,107,215,131, 35,132,154,204, 38, 47,209, 5,251,241, 20,248, 83,
+219,246,166, 52, 43, 47, 58,239, 48,229,183, 34,218,208,117,208,211,232, 58,232,105,103,126,218,188,162, 19, 18,211, 54, 32,158,
+ 75,131,233,235,118, 32,254,142,172,238,125,154, 27,142,227,208,247,251,149,144,203,229,206,116,182,153, 81,122, 92, 64,189,151,
+124,127,150,186,235,190,187, 70,176, 60,212,197, 21,234,131,197,243, 60,178,179,179,113,250,244,105,100,102,102, 66,175,215,227,
+196,137, 19, 48,155,205,200,205,205,133, 99,164,225,141,164,179,178,206,209,157,212,252, 47, 24,171, 27, 50, 88,148,210,212, 7,
+ 30,120,192,219,197,184, 66,163,140, 4, 65, 48,182,107,215,142,120, 26,109,224,248,172, 86,171, 13, 62,166, 47, 15,192,100, 0,
+147,237,207,155,130,217,108,190,233,142, 36,162, 40,166,183,106,213,138, 47,175, 79,130, 36, 73,153, 94,204, 80, 49,128, 74,125,
+116,248,173,208,244, 80,104,196, 23, 94,120,161, 92, 39,165,213,106,203,237, 92,228,109, 34, 81,189, 94,159, 49,124,248,112,209,
+181,169,217,117, 34,210,251, 26, 66, 47,245, 30,242, 76,141,173,217,230, 26, 0,224, 48, 89,160,244, 82, 89,155, 28, 56,112, 32,
+ 19, 64,157, 91,157,180, 11, 23, 46,152, 31,120,224,129, 37,133,133,133, 47, 82, 74,245, 55,170,179,115,127,250,196,123,237,180,
+ 80, 74, 15, 3, 24,117,179, 58,102,224, 68,184,209, 56,122,242,187,239, 62,250,222,187,239,214,147,128, 16,216,231,168,226,125,
+ 48,105,174,236, 57,152, 81,233,115,131,137,162,152,218,166, 77,155, 10,111,227,109,121, 57, 51,137,227, 39, 84, 3, 14, 86, 92,
+243, 86,164,211,161,217,180,105, 83, 52,111,222,220,249,238,192,245,247, 22, 45, 90,248,164, 25, 23, 23,135, 70,141, 26,149, 57,
+ 67,187,123,159,171, 59,189,239, 14, 28,183,190, 45, 90,172,175, 52,205,155, 77,231,189, 95,189,223,194, 33,209,247, 98,191, 25,
+166,201, 52,153,166,115, 29,158, 82, 42,178,227,201, 52,153, 38,211,188, 29,154,247, 27, 28, 59, 4, 12, 6,163,140, 40,142,200,
+142, 2,131,193, 96,220,160, 9, 5,208,164,140,202,213,103,103, 74, 8,105, 82,209, 63,246,225,238,153,105, 50, 77,166,201, 52,
+153, 38,211,100,154,247,153,166, 55,237,251, 37, 50,198,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,121,199, 53,239, 55,
+ 88, 19, 33,131,193, 96, 48, 24, 12, 70, 37, 35,176, 67,192, 96,252,183,153, 66,200, 77,221,104,189, 71,169,196,210,201, 96, 48,
+ 24,165, 97, 17, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248, 79,
+113, 75, 71, 17, 50, 24,140,187, 31,214, 7,139,193, 96, 48, 42, 31, 22,193, 98, 48, 24, 12, 6,131,193,168,100, 4,160,244,131,
+138, 41,165,132, 29, 22, 6,131,193, 96, 48, 24,183,147,251,205,139, 8,204, 88, 49, 24, 12, 6,131,193,184, 27,184,159,188, 8,
+231,201, 57, 50, 24, 12, 6,131,193, 96,220,110,238, 39, 47,194,221,143,174,145,193, 96, 48, 24, 12,198,189,199,125, 27,193, 98,
+ 81, 44, 6,131,193, 96, 48, 24,119,138,251,201,139, 8,247,155, 99,100, 48, 24, 12, 6,131,113,239,113,191,121,145, 91, 58, 77,
+ 3, 33,164, 9,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,127, 13, 54, 15, 22,131,193, 96, 48, 24, 12, 6, 51, 88, 12,
+ 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96,252,167, 16,216, 33, 96, 48,254,219,220, 43,207,232, 99,207, 18,100,
+ 48, 24,247, 18, 44,130,197, 96, 48, 24, 12, 6,131, 81,201, 16, 0, 30, 71, 2, 80, 74,143,249, 44,114, 3,163, 9,188,233, 51,
+ 77,166,201, 52,153, 38,211,100,154, 76,243,254,211,244,166, 93, 17,255,113, 87, 27, 44, 74,111,221,124, 94,132,144, 38,149,125,
+160,152, 38,211,100,154, 76,147,105, 50, 77,166,121,255,105,222,111,176, 38, 66,134,123,161, 17, 8, 33,194,141, 46,191, 93,154,
+ 12, 6,131,193, 96,220,205,176,139, 26,195,213,232,180, 6,208,199,254,121, 45,165,116, 79, 69,150,223, 46,205, 59, 69,124,124,
+188, 90,165, 82,117,255,251,239,191,229,167, 78,157,194,222,189,123,233, 79, 63,253,100, 53, 26,141, 27, 18, 19, 19, 13, 44, 7,
+221, 31,196,197,197,245, 32,132,140, 7, 0, 74,233, 71,135, 14, 29, 90,127, 19,101,138,212,169, 83,231, 21,133, 66,209, 91, 38,
+147, 69,138,162, 72, 76, 38, 83,186,193, 96,216,152,150,150, 54,147,222, 64,199,125, 66, 72,203, 42, 85,170,140,138,141,141,173,
+119,225,194,133,148,203,151, 47, 47, 6,176, 30, 64,143,234,213,171, 15,143,137,137,169,150,148,148,116, 38, 59, 59,123, 1,165,
+244,192,157, 74, 39,131,193, 12,150,111,133,143, 11, 10, 10,122, 72,173, 86,191, 90, 84, 84, 20,231,239,239,159,100,179,217,230,
+102,100,100,172,101, 5,239,190, 49, 87, 2,128, 62,148, 82, 25, 0,240, 60,223,191,117,235,214, 53, 8, 33, 18, 33,132, 82, 74,
+ 9,199,113, 45, 68, 81,228,236,235,247, 33,132, 28,160,148,218,110, 84,211,102,179, 85, 88,243, 86, 17, 27, 27, 59,141, 82, 26,
+ 89,222, 58, 90,173, 54, 97,243,230,205, 13, 86,173, 90,101, 91,188,120,113,222,227,143, 63,174,123,234,169,167,132, 69,139, 22,
+125, 9,224,127,238,235, 55,110,220,248, 51,142,227,170,248,242,255,146, 36,101, 31, 63,126,252, 53,150, 19,239,138,178, 48,254,
+153, 25, 91, 59, 72, 20,248,110, 66, 71,206,110, 94,110,136, 22, 45, 90,252,240,200, 35,143, 12,169, 95,191,190, 32, 73, 18,172,
+ 86, 43, 76, 38, 83,131, 67,135, 14,117, 90,191,126,125, 2,128,193, 21, 76, 91,159, 9, 19, 38, 44,156, 58,117,106,168, 76, 38,
+ 35, 86,171,245,193,159,127,254,185,231,168, 81,163, 14, 47, 88,176,160,249, 99,143, 61,230,231,248,253,189,247,222,235, 69, 8,
+ 25, 75, 41, 93,118,187,211,201, 96, 48,188, 24, 44, 63, 63,191,186,161,161,161,175,135,132,132,244, 74, 72, 72,200,127,254,249,
+231,207, 31, 57,114,228, 68,108,108,108,209,247,223,127,255,161,213,106,157, 87,191,126,253, 13, 5, 5, 5, 51,175, 92,185,114,
+162,130, 21, 69, 93, 0,207, 3,232, 5, 32, 26, 64, 58,128,117, 0, 22, 82, 74, 79,221,200,206, 68, 69, 69, 53,213,106,181,111,
+ 18, 66, 30, 44, 46, 46,142,214,106,181,233,148,210,125,133,133,133,159,100,100,100, 28,186, 17,205,232,232,232,218, 0,198, 8,
+130,208, 94, 20,197, 90, 60,207, 95, 18, 69,113,135, 40,138, 95,164,167,167,159,185, 17,205,182,213,252,250, 74, 58,255,153, 86,
+ 94, 93,173,200,104,147,235,148,130, 85, 38, 25, 83,164,226,188, 9,251, 46, 23,253,122, 55,100, 12,133, 66,193, 45, 94,188,184,
+185, 66,161, 0, 0,152,205,102,196,198,198,222,212,115,162,100, 50, 25,247,201, 39,159, 52,151,203,229, 0, 0,139,197,130, 46,
+ 93,186,220, 21,207,158, 34,132, 68, 39, 38, 38, 6, 56,210,230,142, 40,138,232,223,191,127, 77,133, 66,129, 5, 11, 22,216,178,
+179,179,227,190,251,238,187,196, 47,191,252,178,202, 15, 63,252, 48,200,147,193,226, 56,174, 74, 89,154,162, 40,194, 98,177,192,
+102,179,193,108, 54,163,115,231,206,172, 54,186, 75,160,148,214,160, 0,214, 29, 49, 2, 64,200,205,104,169,213,234,134, 3, 6,
+ 12, 16,178,178,178, 32,147,201, 96,177, 88,112,229,202, 21,212,174, 93,155, 55,155,205,245, 43,170,215,160, 65,131, 81,211,167,
+ 79, 15,251,243,207, 63, 45, 75,150, 44, 49,117,235,214, 77, 62,114,228, 72,255, 14, 29, 58,180,143,142,142,230,190,251,238, 59,
+211,166, 77,155, 44, 79, 60,241,132,114,218,180,105, 97,235,214,173, 27, 2, 96,217,237, 78, 39,131,193, 40,199, 96,249,249,249,
+109,211,233,116,117,158,123,238,185, 83, 47,190,248,226, 6,157, 78, 39, 2,192,149, 43, 87,148,253,251,247,207, 26, 56,112,224,
+ 85,189, 94,207,207,155, 55,175,250,231,159,127,190,209,207,207, 47,173,176,176,176,149, 15, 23, 50, 2,224, 85,142,227,198,116,
+239,222,125,155,213,106,205, 90,185,114,229, 47,131, 6, 13,106, 39, 73,146,246,239,191,255,254,131, 16,242, 21,128, 79,125,141,
+142, 17, 66,248,152,152,152,201,209,209,209,111,204,159, 63, 95, 89,171, 86, 45,104, 52, 26, 20, 22, 22, 86, 63,115,230, 76,181,
+ 87, 95,125,181, 95,237,218,181,231, 6, 4, 4,188,147,152,152,104,245, 81,147, 68, 70, 70,254,207,223,223,255,131, 15, 63,252,
+ 80,213,184,113, 99,162,209,104,144,156,156,220,100,207,158, 61,177,223,126,251,237,200,232,232,232, 41,105,105,105, 62,167,179,
+ 19, 33,130,169, 78,232,250,192, 6,173, 58, 47, 88,248, 45,169,162,213, 64, 32, 4, 86,139, 69,150,169, 55,196,188, 60,250,133,
+ 95, 90,215,171,186,171, 80,150,217,245,248,113,106,185,205, 23, 21, 27, 33,100, 45,207,243,253, 21, 10, 5,215,191,127,127,108,
+218,180,137, 24,141, 70, 1, 0, 84, 42,149,173,127,255,254, 80,171,213, 48,155,205, 18,128,181,246,109,148,246,237, 77,229,105,
+202,100, 50,174,115,231,206,250,131, 7, 15,230,232,245,122,153, 67,179,115,231,206,193, 74,165, 82, 99,181, 90,125,210,188,197,
+166, 18,231,206,157,187,206, 8, 93,189,122, 21, 57, 57, 57, 48,153, 76, 36, 55, 55, 23,162, 40,194,100, 50,101,137,162, 8,142,
+ 43, 9,190,149,165, 41,151,203,113,250,244,233,235,126,183, 88, 44, 48, 24, 12,176, 90,173, 40, 40, 40, 80,171, 84,170, 58,237,
+219,183, 79, 5,176,170,168,168,104,230,225,195,135, 47,177,234,233,142,113,249,143,127,140,213, 1, 88, 0, 92,184, 73,227, 46,
+ 1,192,142, 29, 59,144,153,153,137,172,172, 44,100,101,101,161, 90,181,106,184,145,232,255,169, 83,167,230,180,104,209,130, 28,
+ 62,124,120, 13,128,133,203,151, 47, 31,112,237,218,181,249,227,198,141, 11,254,228,147, 79,174,189,249,230,155,163, 1,252,190,
+124,249,242,167,155, 54,109,218,247,232,209,163,179,239, 68, 58, 25, 12, 70, 57,157,220, 41,165,145,117,235,214,189, 54,107,214,
+172, 6, 19, 38, 76, 8, 41, 42, 42,226, 1, 32, 50, 50,210, 8, 0,122,189,158, 31, 63,126,124,232,140, 25, 51, 26, 40,149,202,
+ 92,155,205, 22,234, 65,195,211, 8,131, 49,254,254,254,253,206,159, 63,191,188, 65,131, 6,193,211,167, 79,255, 71,171,213,210,
+217,179,103, 31,170, 93,187,118,196,165, 75,151,126,244,247,247,239, 2,224,141, 50,210,117,157,102,205,154, 53,223, 27, 52,104,
+208, 27,187,118,237, 82, 54,107,214, 12,126,126,126,224,121, 30,129,129,129,120,224,129, 7,200,246,237,219,149,189,123,247,126,
+ 37, 63, 63,255, 19, 95, 53,163,162,162,222,232,217,179,231,135, 7, 15, 30, 84,119,237,218,149, 40, 20, 10,228,229,229, 65,161,
+ 80,160,117,235,214,100,254,151, 95,168,155, 52,110,244, 94,116,116,244, 84, 95, 53, 77,117,171,108,124,252,197,241, 93,214,174,
+ 91, 79,194,195,195,113,254,211,169,216,209, 33, 22,103,223,159,128,136,136, 8,172,249,243, 47,210,103,196,139,237,252,173,225,
+127,251,170, 89, 9,198,234,152,203,231, 61,177,177,177,137, 39, 78,156, 64,251,246,237,241,203, 47,191, 52, 27, 55,110,220,139,
+227,198,141,123,241,151, 95,126,105,214,190,125,123,156, 56,113, 2,177,177,177,137,148,210, 61,132,144, 23, 1, 92, 3,112,205,
+254,185, 76,205,109,219,182,161, 75,151, 46,185,203,151, 47,175, 61,105,210,164,105,147, 38, 77,154,246,203, 47,191,196,116,233,
+210, 37,119,219,182,109, 21,210,188, 21,251,238,106,168,220, 95,148, 82, 72,146,132,176,176,176,171,127,254,249, 39,237,211,167,
+ 15, 95,181,106,213,244,254,253,251, 43,247,237,219, 71, 9, 33,107, 43,146, 78, 74, 41, 12, 6, 3, 12, 6, 3, 46, 92,184,160,
+158, 59,119,110,187, 55,222,120,163,238,207, 63,255, 28,245,202, 43,175,140,246,247,247, 63,212,188,121,243, 26,183,123,223,153,
+166, 51,242,120,197,110,174,138, 57,142,187,124,163,154,143, 62,250,104,147, 26, 53,106,132,255,156, 20,132, 92,121, 3,136,178,
+ 0, 72,242, 64,136, 33, 45,113, 86,222, 19,145,145,145,225, 53,106,212,104, 93, 17, 77, 74,233,198,127,254,249,167, 23,165,116,
+ 1,165, 84,164,148,174,120,243,205, 55,159, 37,132,252,250,230,155,111,190, 64, 41, 93, 97,255,253,155, 35, 71,142,244,165,148,
+110,185, 19,233,100,121,137,105,222, 2, 90, 2,120,216,254,106, 5,224, 1,183,239, 10,183,245,186,149,241,254,176,219,247,150,
+110,219,181,172, 84,131, 69, 8,161,142,151,203, 29,141,245,227,143, 63,222,251,237,183,223,110,202,200,200,136,136,137,137,121,
+120,192,128, 1, 53, 10, 10, 10,184,129, 3, 7,214,140,136,136,232,179,101,203,150,170, 3, 7, 14,252,123,208,160, 65,123, 8,
+ 33, 94,251,205, 16, 66,106,243, 60, 63,246,240,225,195, 59,107,214,172,105, 73, 79, 79,247,107,209,162, 69, 33, 0,212,171, 87,
+ 79,159,147,147,163,246,243,243,195,159,127,254,185,159, 16,242, 60, 33,164,129, 55,205,200,200,200, 22, 85,170, 84,121,227,131,
+ 15, 62, 80,242, 60,239,113, 29,165, 82,137, 15, 62,248, 64,233,239,239,255, 92, 84, 84,212,131,222, 52,171, 86,173,218,208,207,
+207,111,242,220,185,115, 85,102,179, 25, 22,139, 5,225,225,225,208,233,116,200,200,200, 64,218,197,139,184,154,156,140, 87,158,
+121, 70,173, 85,171,199, 70, 70, 70, 54,247,166,217,190,166, 95,127, 93, 84,163, 78, 47,143,121, 21,199, 95,125, 6,155,162, 20,
+168, 58,102, 60,154,109, 61,134,232, 41, 51,177, 37,198, 31,137,131, 31,194,216,177,175, 67, 30, 22,211,166, 77, 53,221,227,119,
+ 36,164, 41, 8, 84,169, 84,194,104, 52, 10, 59,118,236,104,111,179,217,100, 54,155, 77,182,125,251,246, 78, 27, 54,108,232, 53,
+125,250,244, 30,106,181,122,116,235,214,173,127, 32,132,204,161,148,170, 41,165,106, 0,159, 56, 34, 79,158, 52,101, 50, 25, 12,
+ 6,131,236,224,193,131, 47,136,162,168, 16, 69, 81,113,240,224,193,151,182,108,217, 50,124,193,130, 5, 21,214,188, 93,240, 60,
+ 15, 65, 16, 32,147,201,208,188,121,243,243, 75,151, 46,181, 70, 70, 70, 10, 95,127,253,117, 80, 88, 88,152,246,135, 31,126,200,
+203,205,205,253,184, 34,154,102,179, 25, 38,147, 9, 6,131, 1, 59,118,236,168,245,220,115,207, 9,102,179, 89, 28, 49, 98,196,
+ 53,171,213,106,122,233,165,151,252,117, 58,221,235,236,254,239,206, 64, 41, 21, 1, 20, 3, 40,114, 68, 81,107,214,172,169,140,
+138,138,106, 90,179,102, 77,159,243, 99, 81, 81,209, 87,159,125,246, 89, 52,167, 12,196, 78,115,111, 44,167, 83,177, 49,240, 75,
+100,213, 28,135,240,106,117,209,179,103,207, 48, 66,200, 23,149,144,222, 85,148,210, 65,148,210,223,110,100,251, 91,157,206,150,
+ 45, 91,182, 79, 72, 72, 56, 24, 31, 31,159,145,144,144,112,176,101,203,150,237,111,118,159,167,142, 34,221, 62, 26,195,167,190,
+ 63,154,208,143,198,240,169, 83, 71,145,110, 44,231,222,251,120,242, 34, 46,132, 18, 66,214, 18, 66,214, 78,156, 56,177, 51,128,
+ 16,183,239,109, 92,215, 3,160,240,244,238,120,185,252, 30,106, 55, 86,161, 46,223, 43,231,122,234, 82, 72, 61, 54,115,132,134,
+134,154,223,122,235,173,195, 70,163,241,216, 15, 63,252, 80,231,197, 23, 95,108, 81,163, 70,141,211, 3, 7, 14,252, 67,163,209,
+216, 28,125,116,124,228,153,222,189,123,255, 25, 28, 28, 76,178,179,179,229,102,179, 89,184,114,229,138, 92, 20, 69,194,243, 60,
+213,235,245,194,217,179,103,101, 22,139, 69,122,240,193, 7, 87,239,217,179,231,121, 0, 99,203, 19,212,104, 52, 47,125,253,245,
+215,170,178,204,149, 40,138, 40, 42, 42,130,205,102,195,148, 41, 83, 84,111,188,241,198,171, 0,246,150,167, 41,147,201, 94,153,
+ 53,107,150,202,209, 4, 36, 73, 18, 14, 29, 58,132,236,171, 87, 97, 42, 44,128,185,176, 0,230,252, 92,112, 69,249, 24,222,171,
+135,106,193,111, 43, 95, 3, 48,188,220,139,170, 82, 55,227,135,133,223, 66, 20, 69,164,175,244,220, 37,226,218,174,173, 16,109,
+ 86, 76,251,232, 19, 50,246,153,199,166, 3, 88,126,183,100,124,133, 66,193,125,250,233,167, 13, 20, 10, 5, 8, 33,212,108, 54,
+163,113,227,198,228, 38, 53,249, 57,115,230,180,144,203,229,196,161,217,164, 73, 19,114,183, 21,122,185, 92, 14,181, 90,141,154,
+ 53,107, 26,250,246,237,187,103,206,156, 57,213,121,158,215, 8,130,240, 87,126,126,254,244,164,164,164, 10, 53, 35,153, 76, 38,
+ 24,141, 70, 24,141, 70, 92,190,124,185,106,157, 58,117,200,255,254,247, 63,177,184,184, 56,230,155,111,190, 57,183,124,249,114,
+205, 23, 95,124, 49, 16,192, 24, 86,229,222, 94,234,212,169,163,240,247,247, 15,168, 30, 34, 20,203,120, 20,103,216,108,225,209,
+209,209,227, 1, 36,212,171, 87, 47,232,236,217,179,185, 81, 81, 81,123, 57,142, 91,150,146,146,146,225,197,248, 16,155,205,134,
+ 23, 90,229, 97,244,131, 28,108, 54, 27,242,242,242,112,249,242,101, 36, 37, 37, 97,223,190,164, 27, 74, 99,173, 90,181,158, 81,
+169, 84,221, 21, 10, 69, 77, 81, 20, 57,189, 94,127,201,100, 50,109, 74, 79, 79,255,138,222,192,196,134,183, 42,157, 46,250, 51,
+ 7, 12, 24, 16, 25, 16, 16,128,127,254,249, 39,242,200,145, 35, 51, 1, 36,220, 84,221, 33,227,190, 27,241,236, 23, 81,193,129,
+129, 72, 62,177, 38,106,213,186,159,191, 67, 73, 95, 94,198,189,127,131, 83,214, 53, 32,139, 82,234, 28,113, 62,125,250,244, 62,
+246,245,251,184,126,247, 65,191,143, 7, 99,183,214,211,239,149,102,176, 28, 35,197,202, 90, 81,165, 82,137,163, 70,141, 58,189,
+122,245,234,154, 9, 9, 9, 39,203,234, 12,236,133,182, 13, 26, 52,184,180,127,255,126, 26, 26, 26,106,150, 36,137,104, 52, 26,
+ 81,173, 86, 75,249,249,249,176, 90,173,244,210,165, 75,194,229,203,151,229, 85,170, 84,145,251, 18,170,147,201,100,173,107,213,
+170, 85,102,164,160,168,168, 8,133,133,133, 48,153, 76, 8, 15, 15, 39, 28,199, 61,224, 53,172,199,113,237, 26, 52,104, 64,114,
+115,115, 17, 25, 25,137,157, 59,119,162, 40, 63, 15,166,194, 66,152,242,243, 96, 41,200,135, 88,144,135,188,171, 25,168, 25, 17,
+ 77,236, 83, 13,148,139,141, 87,215, 8,211,105,113,118,234,120,180, 60,116, 9, 68, 38,199,254, 38, 17,160,214,146,174, 86,173,
+142,166,131,200, 21, 56,249,202, 83,168, 58,236, 57, 88, 57,101,212,157,200,220, 54,155,141,152, 76, 38,168, 84, 42, 91,251,246,
+237,119,240, 60,223, 73,161, 80,112,163, 71,143,198,149, 43, 87,156,217, 5, 0, 70,143, 30, 13,181, 90, 13,147,201,100, 3, 48,
+174,172, 62, 83, 54,155,141, 88,173, 86,168,213,106,107, 66, 66,194, 87, 60,207,191,164, 80, 40,248,250,245,235,103,206,152, 49,
+ 35, 93,171,213,106, 47, 95,190,124, 77,161, 80,164,214,172, 89,179,149, 90,173,174,225, 77,243,118,162, 84, 42, 33, 8, 2, 56,
+142, 67, 72, 72, 72,113, 78, 78,206,190,243,231,207, 15,189, 17, 45, 81, 20, 97, 54,155, 97,181, 90, 97, 52, 26, 33, 73, 18,142,
+ 28, 57, 2,165, 82, 41, 19, 69, 49, 73, 20, 69,141, 76, 38, 3,207,243,108,142,186,219, 76,124,124,124,167,102, 85,253,103,142,
+142, 48, 5,213,238,163, 45,210, 40,249,226, 33, 43,173, 45,187,117, 27,220, 99,220,184,241,186, 42, 85,170, 40, 46, 94,188,104,
+156, 61,123,118,173,223,127,255,157, 0,248,180, 60,189,244,244,244, 95,103,204,152, 17,220,169, 83,167, 24,153, 76, 70,242,242,
+242,144,149,149,133,171, 87,175,226,242,229,203, 52, 57, 57,249,188,205,102,251,165, 34,105,108,214,172,217, 55,195,134, 13, 27,
+209,184,113, 99, 25,165, 20, 86,171, 21,122,189,190,197,190,125,251,250,237,220,185,179, 61,128, 10,231,203,140,140,140, 95, 62,
+250,232, 35,109,199,142, 29, 27,200,100, 50,174, 50,210,233,118, 65,139,212,233,116,216,180,105, 19,252,253,253,225,109,180,174,
+ 47, 88,108, 82, 84,112, 96, 8,140,103, 62, 67,164,127, 13, 88,108, 82, 20,203,193,247, 79, 20,171, 12, 47,114, 0,192,195, 55,
+107,134,110,149,153,186,161, 8,150,131, 43, 87,174, 40,139,138,138, 4, 73,146, 56,147,201, 36,147, 36, 9, 50,153,204, 90,193,
+255,107, 60, 96,192,128,189, 45, 91,182,212,219, 35, 24,182,128,128, 0, 91,126,126, 62,236, 6, 75, 18, 4,193,168,211,233,140,
+ 49, 49, 49, 0,224,181,137,208, 96, 48, 84, 87,171,213,215,253,174,215,235, 81, 84, 84,228, 52, 88,122,189, 30,254,254,254, 40,
+ 46, 46,246, 90,184, 69, 81,172,169,209,104,144,158,158, 14, 0, 40,202,203,133,177,160, 0,150,194,124, 88,242,114, 97,205,207,
+131, 53, 63, 23,156,193,128,192,232,106,176,217,108,213,188,105, 22,155, 68, 5, 15,138,171,107,127, 69,248, 75,227,202, 92,239,
+218,142, 45,208,213,169, 15,131,193, 34,220,129,140,221,154,227,184,248, 70,141, 26,161,127,255,254, 24, 60,120,240, 17,181, 90,
+ 29,246,197, 23, 95, 52, 78, 75, 75,187,110,253, 71, 30,121, 4, 99,198,140,193,128, 1, 3,126,252,231,159,127,230,149,167,217,
+177, 99, 71,116,238,220, 57,120,240,224,193,201, 58,157, 46,113,225,194,133,173,166, 76,153,146,169,215,235,211, 18, 19, 19,155,
+166,166,166,106,234,213,171,183, 53, 54, 54,150,251,243,207, 63,107,148,167,121, 7, 76, 39,172, 86, 43, 44, 22, 11, 76, 38,147,
+215,178,226,118,113, 41,245,221,106,181, 58, 71, 16, 26,141, 70, 88,173, 86,178,106,213, 74,172, 89,179,134, 59,113,226,120,244,
+132, 9, 19,145,151,151, 7, 81, 20, 89, 77,123,155, 72, 72, 72,232, 37, 80,233,235, 39,170,218, 84, 79,132,219,138, 4,142, 22,
+157,249,246,157,226, 35,129,130,201, 84, 76,252,222,126,231,157,160,115,231,206, 89, 62,250,232,163,140,254,253,251,171,158,125,
+246,217, 70,127,254,249,103,251,234,213,171,127,123,249,242,229,188, 50,242,189,252,153,103,158,217, 27, 20, 20, 84,123,201,146,
+ 37,153,233,233,233,193, 86,171, 85, 99, 54,155, 45,102,179,249,156,197, 98,217,105, 54,155, 55,101,100,100, 36, 86, 36,173, 58,
+157,174,217,227,143, 63, 46,203,205,205,133, 32, 8,176, 88, 44,200,202,202, 66, 92, 92, 28,191,121,243,230,198, 55,178,255,199,
+143, 31,255, 44, 50, 50,114,235,154, 53,107,186,107,181,218,120,133, 66, 81, 85, 20, 69,209,104, 52,102, 26,141,198,195, 55,146,
+ 78,183, 99,145,126,232,208,161, 72, 63, 63, 63,164,165,165,129, 16,146,126,179,231, 76, 46,227, 82,146, 79,174,174, 22,233, 95,
+ 11,167, 78,237,133, 92,198,165,176,156,124,223, 71,176, 90,186, 70,172,202, 49, 73,134, 9, 19, 38,188, 69, 8, 89, 59, 97,194,
+132,183,202,137, 96,137,174,235,185,172, 95,105, 55,245,229, 94,196, 11, 11, 11,133, 3, 7, 14,132, 92,190,124, 89, 87,181,106,
+ 85,125,108,108,108, 30, 33,132,138,162,200, 93,187,118, 77,155,154,154,170, 10, 10, 10, 50, 85,171, 86, 45,223,199,255, 59,243,
+242,203, 47,119,156, 52,105, 82,226, 67, 15, 61,148, 13, 0,185,185,185,200,202,202,114,140,210, 66,122,122, 58,119,240,224,193,
+224,191,254,250,171, 5,124, 24,193,163, 86,171, 47, 23, 22, 22,214, 15, 12, 12,116, 94,208, 28,166,202,245,221, 98,177,160,176,
+176, 16, 90,173,214,107,225,230, 56, 46, 45, 45, 45,173,142,193,160,199,165,179,103, 97, 42,204,135,165, 32, 31,214,130, 60, 88,
+243,242, 32,230, 93, 3, 87, 84, 8,157, 90,141,194,107, 57,224,121,254,138, 55, 77,173,146, 55, 91,109,162, 34,180,103, 63,128,
+148,125,125, 14,124,160, 29,104,195,102, 80,171,127,179,222,206, 76,237,152,179,202, 49, 39,149, 90,173,198,135, 31,126,136,196,
+196, 68,169,188,102, 96,133, 66, 1,142,227, 68, 95, 52,149, 74,165,122,210,164, 73,234,195,135, 15,171, 20, 10, 5,116, 58,157,
+230,240,225,195, 77,119,239,222,205,233,245,122,190, 78,157, 58, 3,162,162,162,138,202,211,188,213, 70,202,211,111, 69, 69, 69,
+206,126, 83,215,174, 93, 19, 84, 42, 85,189, 14, 29, 58,236, 49,155,205,191,216,108,182,239, 19, 19, 19, 11,202,188,211,182, 92,
+ 63, 24, 84,146, 36,216,108, 54,216,108, 54, 8,130, 32,173, 90,181, 26,159,207,155,131, 21,203,127,163, 29, 59,118, 36,127,254,
+249, 39, 36, 73, 74,101, 85,237,237, 65,146,164,153, 91,198, 63,170,130, 40, 22,153,182, 46, 45, 94,159, 35, 20,127,123,108,203,
+193, 28,171, 73, 89,183,110, 76, 67,127,191, 0,238,135,197,223, 94,203,200, 60,127,230,243,207, 83,171, 77,155, 54, 45, 48, 38,
+ 38, 38,224,244,233,211, 81, 0,242,202, 48, 66, 53,159,122,234,169,145,215,174, 93,147, 45, 92,184,112, 81, 90, 90,218,118, 74,
+233,121,183,242, 17, 71, 8,249, 4,128, 12, 64, 56, 0, 27,128,141,148,210, 31,203, 41,167, 18, 33, 4, 91,183,110,189,110,180,
+159, 36, 73, 55, 60,218, 47, 35, 35, 35,247,129, 7, 30,104,118,230,204,153, 85,185,185,185, 75,220,151,107, 52,154,126,177,177,
+177, 67,246,239,223,255, 46,165,244, 92, 5, 47,152, 99, 79,156, 56,241,177, 36, 73, 53, 56,142,187, 68, 41,125,243,102,207,153,
+217, 34, 61,187,122,221,242,133,102,171, 88, 93, 33,227, 47,155, 45,210,115, 44, 39,223,247, 56,250, 72,193,213, 56,121, 48, 70,
+187,167, 79,159,174,158, 49, 99, 6,166, 79,159,158,228, 41,130,229, 48, 90,211,167, 79, 79,114,172,231,178,254,246, 74, 53, 88,
+158, 28,163,205,102,211, 77,156, 56,177,109,139, 22, 45,210, 59,117,234,148, 81,171, 86, 45,189, 75, 97, 51, 7, 6, 6,154, 77,
+ 38,147, 50, 61, 61, 61,244,228,201,147,181, 36, 73, 82,251,240,127,127, 7, 6, 6, 6, 31, 60,120, 48,100,217,178,101,117, 15,
+ 29, 58, 84, 99,216,176, 97, 29, 77, 38, 19,204,102, 51, 46, 92,184, 80,227,235,175,191,150,228,114,121, 30, 33,228, 0, 0,175,
+ 23, 89,171,213,186,231,204,153, 51,245, 30,120,224, 1, 98,181, 90, 75,153, 42,215,207, 10,133, 2,105,105,105, 84,146,164,125,
+ 62,164,115,239,193,253,251,235, 52,105,212, 8,166,252, 92,152, 11,242, 96,201,207,131, 45, 63, 15, 82, 65, 30,184,162, 66,132,
+ 4,203,160, 86,107,113, 38, 61, 3,246,180,150,139,204,102, 72, 78,203, 47,168, 95,103,242,167,216, 18,227, 15,106,181, 56,155,
+ 5, 1, 56,155, 11,219,156,204,194,142,221,123, 32,136,166,180, 59,153,147,205,102,179, 52,112,224,192,253, 28,199, 53,169, 44,
+ 77,171,213, 42,189,248,226,139, 78,205,148,148,148,107, 41, 41, 41, 42,131,193,192,233,116,186,162, 59, 93,122,173, 86,171, 71,
+131,100, 54,155, 97, 48, 24,144,145,145,161,216,184,113, 99,251, 61,123,246,200,143, 31, 63,142, 61,123,246, 52, 95,181,106,213,
+196,134, 13, 27, 54, 59,121,242,228, 21, 95, 76,155, 36, 73,112, 92, 7, 41,165,160,148,242, 0,176,250,247,181,232,217,179, 39,
+ 41, 44, 44,196,154, 53,107, 42,165, 25,133,225, 51,197,176,137,106,243,182,165,197,175,159, 85, 20, 36,233,133, 15, 18, 19, 19,
+215,247,238,221,123, 71,100,120,140, 63, 0, 40,229,186, 80,158,250,233, 66, 67, 67,149, 0, 16, 25, 25, 25,111,181, 90,231, 1,
+104,231, 73,240,145, 71, 30,105, 19, 22, 22,214, 98,221,186,117,135,211,210,210,118,184,155, 43, 0,168, 95,191,254,148, 99,199,
+142,245,146,201,100,196,165,242,167, 0, 60, 26,172, 71, 31,125,180,126,116,116,116,200,159,103, 2, 80, 32,175, 3,137,203, 3,
+229,149, 16, 3,155,225,146,188, 49,194,195, 79,134,212,169, 83,167,249,185,115,231, 14, 87,240,230,170,250, 99,143, 61,246,199,
+ 55,223,124,211,176,103,207,158, 10, 0,215, 25,172,134, 13, 27, 14,220,188,121,243,160,209,163, 71, 55, 35,132,244,165,148,158,
+245, 85, 63, 49, 49,113, 23,128,214,149,121,194, 38, 45,160,155, 0,212, 96, 89,247, 63, 19,189, 2, 92,250, 96, 1,200, 66,201,
+179,148, 93,191, 59,242,189,217,101,221, 44,151,168,149,217, 45,234,229,105, 89, 22,128, 74, 11,110, 8,229,220,121,111,188,112,
+225, 66,203,199, 30,123, 44,203,213, 92,185, 30, 0,157, 78,103,242,247,247, 47,218,191,127,127,164, 40,138, 91,125,248,191,133,
+155, 55,111,222, 50,119,238,220,165,193,193,193,214,225,195,135,115,227,199,143,223,145,147,147, 67,115,114,114,240,197, 23, 95,
+116,104,223,190,253,142, 75,151, 46,137,137,137,137, 79, 3,232,233, 77, 80,175,215,127,249,210, 75, 47, 13,217,177, 99,135,202,
+108, 54, 35, 47, 47,239,186,232,149,213,106, 5,207,243,152, 55,111,158,169,184,184,120,142, 15,145,140,175,190,252,242,203, 65,
+ 95,127, 62, 87, 37, 88, 45,208,231,229, 66,180,191,120, 99, 49,116, 42, 14,117, 90,132, 34, 47, 93,137,197,235,118, 25,108, 54,
+219,151, 94, 13,150,177,104,220,232, 23,158, 95,187,241,239, 45, 8,105,215, 5,217, 91,254,186, 62, 26, 20, 26, 14,179,197,130,
+ 15,166, 78,166,196,144, 55,254, 54,103,108,155,125,116,133, 35, 3,174,253,231,159,127,246,180,104,209,162,151,217,108, 46,207,
+136, 65,146, 36,254, 70, 52,149, 74,101,106,253,250,245,255,174, 93,187,246, 0, 0,104,212,168,209,239, 28,199,117, 41, 79,243,
+ 86, 27,172, 73,147, 38, 97,198,140, 25,152, 48, 97,130,211, 32, 57,110, 0, 76, 38, 83,173,191,254,250, 75,177,107,215, 46,186,
+120,241,226,236, 71, 31,125, 52,112,216,176, 97,129, 75,150, 44,249, 31,128,241,101,105,190,249,230,155, 88,176, 96, 1, 70,141,
+ 26,117,221,114,158,231,165,180,180, 84,152,204, 38,186,122,245,234,116, 65, 16,130,102,207,158,173,126,227,141, 55, 8,171,110,
+111, 15,162, 40,190,221,238,179, 85,175, 2,106,171,205,102,155,115,228,200,193,173, 0, 48,120,240,224,176,207, 62,251, 76, 1,
+ 0,159,126,242,169,140, 82, 42,115, 76, 12,251,254,251,239,171, 94,120,225,133,176,178, 52,127,253,245,215,220,247,223,127, 63,
+228,217,103,159,237,185,101,203, 22, 21, 33,228, 47,148,244, 33,201,182,223, 56, 86, 1,176, 43, 52, 52, 52, 98,249,242,229,117,
+186,119,239,174,245,234, 2,139,139,191,157, 63,127,126,205,153,219,253,240,103,241, 0,164,208,193,160,193, 20,193,242, 66, 52,
+210, 93, 70,199,136,148,200, 37, 75,150, 44, 4, 16, 95, 1,115,213,248,209, 71, 31, 93,249,205, 55,223,212,122,254,249,231, 83,
+119,237,218,149, 66, 8,153,226, 97,213,156,167,158,122,234,210,162, 69,139,234, 72,146,180,158, 16,210,147, 82,122,134,229, 30,
+198,109,228,192, 45, 90,247,150, 33,148, 99, 50,158, 33,132,196, 78,152, 48,225,227,200,200,200,234,147, 39, 79,190,216,168, 81,
+163, 98,103,105,203,201,209,109,219,182, 45,166,160,160,160,208,102,179,141,160,148, 30,241, 80,120,155,184,205,137,116,137, 16,
+242,113,243,230,205,135,252,252,243,207,219,252,252,252, 10,246,238,221,235,239,239,239,159,127,252,248,113, 45,207,243,250,243,
+231,207, 99,211,166, 77, 29, 0,124,238,233, 46,201, 93, 51, 61, 61,253,159, 90,181,106,125,250,198, 27,111,188,241,238,187,239,
+170, 36, 73,130,193, 96, 64, 97, 97, 33,140, 70,163,179,115,242,178,101,203, 76, 38,147,233,235,180,180,180,189, 62,104,238,169,
+ 86,173,218,130, 57,179,231,188,248,220,144,199, 20, 52, 47, 7,249, 25, 6, 16, 99, 49,116, 42, 5, 26,119,137, 66,113, 14,193,
+ 55,219, 14,154,175,153, 45,203,211,210,210,182,122,211,220,121,185,240,143, 7,235,134,109,122,127,234,228,110, 19,191,255, 13,
+146, 36,225,228, 75,195,145,187,125, 19, 52,141,154,162,205,201, 44,152,205,102, 76,120,243, 13,240,250,204, 29,123, 47, 23,173,
+240,166, 89, 25,184,106,218,231,161, 58,224, 98,142, 94, 36,132,140,104,216,176, 33, 70,143, 30,141, 71, 30,121,164,212,182, 43,
+ 87,174,196,252,249,243, 97, 50,153, 70, 16, 66, 14, 81, 74,231, 85, 68,179, 86,173, 90,173, 26, 55,110,204, 71, 70, 70,234,237,
+102,163, 75, 82, 82, 82,203,134, 13, 27,150,171,121,139,246, 61,247,236,217,179,254,159,124,242, 9,177, 88, 44,152, 50,101, 10,
+ 28,198,210, 17,113,122,251,237,183, 35,253,252,252, 48,115,230, 76,115,118,118,118,215,156,156,156,205,115,231,206,173,178,108,
+217,178,161, 14,131,229,166,121,245,196,137, 19,126, 11, 22, 44,224,108, 54, 27, 62,251,236,179,235, 34, 90, 99,199,142,133,197,
+ 98,133, 76,144,153, 77, 70, 83, 99,181, 90,125, 46, 40, 40, 72, 45, 73, 18,189, 93,231,253,191,174,121,228,200,145,141, 0, 54,
+150,115,243, 1, 0, 48, 24, 12,200,206,206, 70,118,118, 54, 2, 2, 2, 0,151, 9,102,221, 53, 13, 6,195,225, 55,223,124, 51,
+241,171,175,190,234,185,123,247,238,199,182,111,223,222,123,211,166, 77,198, 75,151, 46,217,172, 86, 43,141,136,136, 16,218,181,
+107,167,234,221,187,183, 86,169, 84,114,111,191,253,118,246,135, 31,126, 88, 5, 64, 78, 57,245, 39, 47, 73, 18, 94,107, 95,128,
+ 55, 59, 11, 48,153, 74,110, 40,211,211,211,144,148,148,132, 61,123, 78,129, 16,194, 85,240,120,206, 89,178,100, 73,140, 66,161,
+ 32, 75,151, 46,173,190,116,233,210, 87,188, 29,191, 31,127,252,177,230,210,165, 75,231, 17, 66,186, 81, 74, 37,150,151,152, 38,
+163,130, 6,203, 94,160,147, 0,244, 36,132,180,123,254,249,231, 63,106,216,176,161,201,102,179,201,214,175, 95,223, 32, 59, 59,
+ 91, 97,179,217,222,164,148, 86,168,189,146, 82,186,128, 16,130,254,253,251,191, 89,187,118,237,205,135, 14, 29,106,246,240,195,
+ 15,175, 95,185,114,101, 59,155,205,118,254,216,177, 99, 35, 0,204, 1,240,185,175,154,201,201,201, 83, 54,109,218, 68,246,238,
+221,251,250,132, 9, 19,148,161,161,161, 36, 48, 48, 16, 6,131, 1, 41, 41, 41,116,209,162, 69, 38,147,201,244,121, 64, 64,192,
+ 59,190,106,134,134,134,142,223,126,240,160,226,244,185,179, 79, 63,221,235, 33, 85,245,122,245,161, 35, 64,209,181, 28,108,219,
+150,129,239,247, 29, 54,102,155, 45, 63,241, 60,239,243, 80,250,232,115, 89, 61, 55, 46,255,102,221,214,191,255,238, 54,109,198,
+199, 36,242,137,231,160,173, 81, 11, 82,205,186,216,182,117, 43, 62,124,127, 10,229,139, 50,183, 91,207,101, 62,116, 7, 67,180,
+ 54,123,225, 81, 2,248, 68,146, 36, 1, 40,233,147, 53,102,204, 24,184, 62, 58,103,254,252,249, 48, 24, 12, 0, 32, 16, 66, 62,
+ 33,132,124, 87,214,140,238,101,104, 86,251,227,143, 63,170,185,106, 54,108,216,208, 39,205,202, 38, 51, 51,243,157,103,158,121,
+102,134, 76, 38, 11,144, 36, 9,158, 70,187,107,181, 90, 20, 20, 20, 64, 20, 69, 91,112,112,240, 41,171,213, 10, 65, 16,202, 44,
+ 71,197,197,197,239,140, 26, 53,234, 3, 66, 72,153,145, 14,181, 90,125,105,231,206,157,117,135, 13, 27,198, 45, 95,190,252,194,
+208,161, 67,149,187,119,239, 22, 1,252,198,170,167,187, 19, 74, 41,138,139,139, 1,128,150,179,206,101, 66,200,155,137,137,137,
+170, 81,163, 70,197, 63,241,196, 19,254,157, 59,119,214,185,174, 99, 48, 24,164, 53,107,214, 20, 47, 88,176, 32,103,251,246,237,
+ 7, 70,142, 28, 57, 0, 37,205, 27, 30, 73, 79, 79,255,227,139, 47,190, 8,232,216,177, 99, 61, 81, 20,145,157,157,237,236,131,
+149,154,154,138, 75,151, 46, 93,146, 36,105,117, 5,119,231,165, 97,195,134,253,185,104,209,162, 26,207, 63,255,124,234,178,101,
+203, 86, 3,200,247,176,158,110,224,192,129,253, 22, 45, 90, 84,227,133, 23, 94,184, 12,224, 21, 54,195, 59,131,113, 19, 6,203,
+165,178,216, 9,160, 53, 33,164, 63,207,243,227,138,138,138, 62,163,148,174,186,137, 10,106, 1, 33,100,253,217,179,103,159, 5,
+144, 48,103,206,156,137, 0, 82,236, 97,189,238,158,250, 43,120,209, 19, 1,188, 27, 21, 21,245,235,228,201,147, 43,229, 89,132,
+246, 71,234,188, 20, 25, 25,185,236,163,101,191,190, 67, 41,141,227,168, 20, 34, 17, 46,151,227,184,127, 68, 81,252, 48, 53, 53,
+117, 91, 69, 52,127, 41, 73,103,247, 7,171,251,245,121,243,133, 97, 31,219,100,234,154, 69, 70,155, 66,171, 20,204,114,209,116,
+137, 51,228,190,189,247, 82,209, 93,121, 97, 53,153, 76,182, 1, 3, 6,124,203,113,156, 4, 0,162, 40, 10, 38,147,233,105, 95,
+243,208,237,210,188, 81,178,179,179,139, 0,188, 84,222, 58,237,219,183,255,113,221,186,117,195,186,119,239, 46,174, 93,187, 54,
+179, 79,159, 62, 66, 98, 98, 34, 5,176,169, 12,227,111, 66, 25, 79, 36,112,208,188,121,243, 26,223,125,247,221,161,103,159,125,
+214,127,222,188,121,193,251,247,239, 23,191,249,230,155,130,162,162,162,153,172,122,186, 59, 32,246, 65, 41, 50,153, 12, 26,141,
+ 6,254,254,254,200,202,202,242, 58,210,147, 82,122,142, 16,242,240,184,113,227,218,143, 27, 55,238,225,232,232,232,198,213,171,
+ 87,175,206,113, 28,151,145,145,145,149,146,146,146,108,177, 88, 54, 3,248, 3,128,188,118,237,218,255, 0, 88, 92,150,222,241,
+227,199, 63,136,140,140,220,242,251,239,191, 63,172, 84, 42, 27, 41, 20,138, 96,171,213,202, 21, 23, 23, 95,179, 88, 44, 39, 76,
+ 38,211,218,244,244,244,221, 21,172, 59, 79, 19, 66, 58, 11,130,240,199, 55,223,124,211, 48, 35, 35,163,230,182,109,219,250,186,
+175, 23, 31, 31,191,104,209,162, 69, 53, 70,143, 30,125,110,233,210,165, 21,234,131,197, 96, 48,131,229, 91, 97, 92, 5, 96, 85,
+101,252, 49,165,244, 18,128,119,236,175, 74, 33, 45, 45,237, 40,128, 97,149,121,128,210,211,211,119, 1,232, 1,148,204,230,156,
+ 82,114,209,188, 41,246, 94, 46, 92, 11, 96,237, 93,126,151,110, 34,132,140,179,143,114, 2,128,113,238,211, 38, 16, 66,142,184,
+ 46,247, 22,105,186, 21,154,183,147,220,220,220,255,125,255,253,247,251, 95,126,249,101,229,224,193,131,113,226,196, 9,204,155,
+ 55,207,148,155,155,187,236, 70, 53, 15, 31, 62,124,169,121,243,230,113, 11, 23, 46,124,253,235,175,191,238, 79, 8, 97,207, 34,
+188, 75, 48,155,205,231, 31,127,252,113,199,243, 83,169,227,209, 73,142,105, 59,108, 54,219,121, 31,202,145, 13,192, 22,251,203,
+ 27,159,248, 80, 31,237, 1,176,167,146,203,250,101, 66,200,195,201,201,201,211, 78,159, 62,253,151,167,117,146,146,146, 86,118,
+239,222, 93,179,103,207,158,183, 42, 58,138,144,193,248,207,222,156,221,192,196,191, 21,185,243, 99,237,211,247,184,166,183, 7,
+ 47,123, 90,126, 39, 52,217,121,103,154, 76,147,105, 50,205,123, 91,243,126, 67, 96,135,128,225,229,238,214,116, 51,203,111,151,
+ 38,131,193, 96, 48, 24,119, 19, 4, 64,147, 50, 46,114, 62, 59, 83, 66, 72,133,231, 74,242,166,207, 52,153, 38,211,100,154, 76,
+147,105, 50,205,251, 79,211,131,246,163,110,139,210,220,244,190,190, 39, 13, 22,107, 34,100,154, 76,147,105, 50, 77,166,201, 52,
+153,230,157,214, 44,227,127,158,191, 87, 13, 22,123,160, 44,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,119,
+ 55, 62,117,114, 87, 40, 20,177,148,210,145,132,144,170,132,144, 43,148,210,239,204,102,115,210,127,237, 96, 41, 20,138, 88, 66,
+200, 72, 74,105, 85, 74,233, 21, 66,200,157, 61, 14,132,144, 41,147, 75,102,147,126,111, 50, 40,110,101,123, 47,131,193, 96, 48,
+ 24,140,155, 55, 88, 53,171, 85,123,140,227,201, 92,139, 85, 12, 10, 12, 12,228,190,248,226, 11,174,111,223,190, 88,179,102, 13,
+ 94, 25, 51,230,149,168,168, 72, 73, 46, 8,185, 84,178,189,146,156,146,254,179, 47,127, 54,112,224,192, 76,171,213, 90,230,172,
+214, 60,207, 95, 93,185,114,101,248,205,238, 84, 84,252, 99,153, 86,139,165,204,255, 17, 4,217,213,244,127,126,241,233,127,170,
+ 85,139,124,140, 39,220, 92,171, 40, 5, 5, 5, 5,113,159,127,254,185,243, 56,188,252,242,203,175, 68, 71, 69, 73,114, 25,159,
+ 43,137,244,149,228,148,148,159,111,219,153,115, 49, 87, 0, 48,101, 50,200,123,132,128,153, 44, 6,131,193, 96, 48,238, 98,131,
+ 69, 56,204, 91,250,213, 39, 65, 57,215,114,177,108,229,122, 52,108,216, 16,199,143, 31, 71,195,134, 13,209,174, 85, 51,174, 71,
+235,230, 28,207, 33,116,210,231,139,231, 1,240,201, 88, 88,173,214,176,223,127,255, 29,132, 16,231,132,125,142, 73,251, 10, 11,
+ 11,241,234,171,175,134, 85,198, 78, 89, 45,150,176,243, 7,126,131,140, 39,176,138, 20, 86, 27,133,213, 38,193, 34, 82, 20,232,
+109,232,242,240, 48,159,255,135, 3, 55,239,187,185,159, 4,229,229,231,227,183, 63, 55,150, 58, 14, 93,218,182,228, 6,247,238,
+196,105,212,242,208,231,199,127,228,243,113,168, 12, 92,205, 85, 41,147, 85,206,227, 59, 24, 12, 6,131,193, 96,220, 97,131,101,
+182,138, 65,225,193, 1,248,254,187,239,240,230,132,247,209,160, 65, 3, 80, 74, 65, 8,193, 91,239, 78,197,172,247, 39,224,241,
+ 94, 29, 96,181, 73, 65,101,105,120, 26, 97, 64, 8,193,197,139, 23, 97, 48, 24, 74,189, 98, 99, 99,125, 74,176,175,163, 22,100,
+ 60,193, 31,135, 10, 97,177, 74,176,216,236, 47,171,132,206, 77,252, 42,164,105, 21,165,160, 64,127, 29, 22,126, 53, 31,111, 78,
+253,164,212,113, 24,255,214,187,248,114,198, 59, 24, 59,250, 73,152,173, 98,208,141,164,179, 34, 48, 77,166,201, 52,153, 38,211,
+100,154,247,171,230,125,105,176, 8, 33, 29, 1,108,181, 31, 52,103,100,196,106, 54,162,113,181, 16,204,159,249, 1, 40, 56, 72,
+148, 2, 20,160,146, 21,181,170,104, 96,208,235, 43,252,135,146, 36,193, 98,177,192,106,181,226,235,175,191, 70, 81, 81, 17, 36,
+ 73, 66,195,134, 13, 1, 0,241,241,241,174, 17,152,203,137,137,137, 53,188,105,134, 53,125,228, 18, 40,170,187,254,246,222, 39,
+223, 98,215,161,243,160, 20, 80,170, 53, 24,244,196, 11, 16, 37, 10,139,181,226,207, 39, 53,234,245,136,208,201, 48,235,195,119,
+193,201,228,224, 64,192,113, 4, 28,145,208, 32, 58, 8,166,146,135, 19,223, 86,222,155, 12,234, 30,197,122,111, 50, 40,222, 99,
+153,154,193, 96, 48, 24,247, 30,101,121,145,123,218, 96, 1,216,234,105,103,204, 70, 3,162,131,228,168,170, 11,128,205, 38, 34,
+201, 18,129, 66,189, 17, 22,139, 21,151, 44, 22,156,251, 39, 3,109,218,180,193, 35,143, 60, 34, 90, 44, 22,200,229,242,252,149,
+ 43, 87, 6,123, 51, 88, 86,171, 21, 22,139, 5,197,197,197, 88,178,100, 9, 4, 65,128, 36, 73, 14, 87,236,124,111,219,182,109,
+117,223,172, 52,170,159,219,255, 43,252, 84, 60,108, 18,133,205, 70, 97, 21, 1, 81,162,208,155, 37, 12,124,230, 29,216, 36, 9,
+ 54, 73,130,217, 7,131, 85,202,176, 5,183, 68,255,137,203, 0,232,156,203,253,149, 20,111,182,229, 32, 87, 40,161,144,243, 48,
+ 25,244,183,255,204, 81, 74,223, 35, 4,172,147, 59,131,193, 96, 48,238, 19,182,222, 15,198,202,221, 96, 57,221, 35,165,116,219,
+191, 6, 75, 15,155, 85,132,213, 38,194,102,181, 33,191,200,128,143, 63,254, 24, 74,165, 18,132, 16,167, 89,146, 36,137,179, 90,
+173,232,221,187,119,144,183, 63, 20, 69, 17, 22,139, 5, 22,139, 5,148, 82,240, 60,143, 7, 30,120,224,186,245,246,238,221, 91,
+161, 29,241, 83,241,168,213,109,226,117,191,239,251,245, 3, 80, 74, 33,138, 37, 47, 95, 12,150, 55,195,214,162,227, 96,152,204,
+ 86, 80, 10,128,150, 68,184,238, 8,148, 82,103,159, 43, 22,185, 98, 48, 24, 12,198,125,128,187, 23,185, 47, 12, 22, 74, 66,115,
+ 78,247,104, 50, 24, 96,181,218, 96,179,137,176, 90, 75,140,145, 90,173, 70,135, 14, 29, 28,215,119,231,251,250,245,235, 97,177,
+ 88,188,254,161,163, 83,187,221,152,129, 82,138,101,203,150, 65, 38,147, 57, 95,114,185,188,194, 59, 98, 19, 41, 38,142,127, 13,
+114,129,131, 76,224,156,239, 34,165,160,180,196, 28,137, 18,133,201,234, 91,144,167, 60,195, 6, 0,102,147, 5,160, 20, 20, 20,
+134,226, 98, 86, 34, 24, 12, 6,131,193,168, 28, 74,121,145,123,221, 96,117, 34,132, 92,231, 60,204,134, 98,123,244, 74,132,213,
+102,115, 26,168,153, 51,103, 66, 16, 4, 40, 20, 10, 8,130,224, 52, 68,190, 24, 44,163,209,136,152,152, 24,152,205,102, 52,108,
+216, 16,148, 82, 12, 25, 50,228,186,245,246,239,223, 95,161, 29,177,138, 20,211, 63,250,236,186,223,119,254,242, 62,154, 54,170,
+133, 86,117,181, 48, 90, 36, 20,232,109, 55,109,216, 0,148, 68,176, 0, 80, 10, 24,138,245,172, 56, 48, 24, 12, 6,131,113,115,
+120,244, 34,247,180,193,178,135,226,174,115,139, 70,189, 30, 54,171,205,105,178,204,102, 51, 36, 73,194,152, 49, 99,174, 19,218,
+188,121, 51,204,102,115,249,127, 38, 8, 87,159,123,238,185, 82, 83, 36, 80, 74,241,235,175,191, 66,169, 84,150,138, 98, 17, 82,
+ 49,243,106, 21, 41, 38,191,253, 6, 20, 50,190,148, 33,146, 36, 96,205, 31, 27,176,230,143, 13,206,117,121, 94,118,245,102, 12,
+ 27, 0,152,205,246, 8, 22,165, 40, 46, 42,100,197,130,193, 96, 48, 24,140,155,160, 44, 47,114, 79, 27,172,178, 48, 26,138, 97,
+117,233,131,101,177, 88, 96,179,217,240,245,215, 95,151,106,206,147,201,100,224, 56,206,107, 4,235,247,223,127, 47, 53,185,103,
+124,124, 60,165,148, 98,208,160, 65,206,230,198,167,159,126, 26,207, 63,255,124,133, 13,150, 77,164,152, 50,109,166, 83,167,119,
+183,246,232,223,171, 35, 36,187, 23,190,122,108,101,133, 4,203, 51,108, 0, 96, 54,149,244,193,162, 0,244,133,172,137,144,193,
+ 96, 48, 24, 12,134, 15, 6, 75, 38,112,249,231, 46, 93, 9,168,162, 85,193, 38,153, 96,147, 74, 70,254,137,162,136,231,159,127,
+222,185,222,208,161, 67, 49, 98,196, 8,143, 6,203,151,167,109, 75,146,132,157, 59,119,130, 16, 2,142,227,156,175,178, 40, 75,
+179,216, 36, 97,215,207, 83, 33, 81, 10,137, 2,146,125, 32,130,217,230, 61,218,232, 73,211,155, 97, 83,234, 2,193,115, 20,132,
+ 0,231, 82, 51, 33,240, 92,126, 69,247,189,162, 48, 77,166,201, 52,153, 38,211,100,154,247,171,230,127,198, 96, 81,145,190,178,
+ 96,237,222,185, 86, 81, 10,112,252,214,184,113, 99, 88, 44, 22,252,245,215, 95, 78,227,193,243,188,179, 73,207,151, 62, 88,110,
+ 92,238,208,161, 67,121, 83, 49, 92,246,237, 76,227,114, 66,231,199,170,151,183,188,162, 9,243,102,216,190,217,254,239, 35, 8,
+ 5,142,203, 7,165,175,176,236,196, 96, 48, 24, 12, 6,163, 92,131,117, 57, 45,109, 49,128,197,174,191, 61,252,240,195, 69,253,
+250,245, 83,219,108, 54,152,205,102, 88, 44, 22,152,205,102,231, 75,169, 84, 86,104,198, 77, 95, 38, 17,245,133,171, 71, 87,214,
+168,212,163,226,131, 97, 75, 79, 79,175,193,178, 15,131,193, 96, 48, 24,140, 10, 25, 44, 79,232,245,250, 64, 66,136,144,158,158,
+126,221,178, 43, 87,174, 0,128,237,126, 56, 40,149,110,216, 24, 12, 6,131,193, 96, 48,131, 85, 22, 91,183,110,181,221, 47, 38,
+138,193, 96, 48, 24, 12, 6,227, 86,193,177, 67,192, 96, 48, 24, 12, 6,131, 81,185, 16, 0, 77, 60, 45,168,200,232, 0, 66, 72,
+147,138,254,177, 55,125,166,201, 52,153, 38,211,100,154, 76,147,105,222,127,154,222,180, 93,183, 39,132, 60, 79, 41,253,250,158,
+ 52, 88,183,242,249,192,108, 8, 43,211,100,154, 76,147,105, 50, 77,166,201, 52,111,226,127,238, 89,131,197,154, 8, 43,114,162,
+227, 95,144,177,163,192, 96, 48, 24, 12, 6,195, 27,194,237,250,163, 41, 83,166,220,148,153,123,239,189,247,164, 59,102,172,162,
+ 31,173,195, 11,248, 56,174, 69,211, 94, 92,141,129,127, 82,145,140,167,169,191,158, 99,217,231,198,104,161, 35, 85,172, 68,214,
+ 39, 72,167,234, 95,221, 79,120,240,108,182,126,183,222, 34,173,161,196,186,234,120, 1,205,101, 71,136,193, 96,120, 34, 58, 58,
+ 58,104,215,174, 93,213,219,182,109,123, 57, 53, 53, 53,215,215,101,101, 81,181,118,194, 8, 63,157,230, 37,163,201, 84, 43,192,
+223,255,234,181,156,156, 5,233,231, 15,125,225, 88, 30, 19, 19,227,191,116,233,210,200,161, 67,135,166, 95,184,112,161,128,157,
+ 1,198,109, 53, 88, 45, 91,182,172, 37, 73,210,147, 0,158,160,148, 30, 62,116,232,208,163, 55,162,179,121,243,230, 40,171,213,
+218,210,102,179,197, 1,136, 83,107,116,205, 77, 38,227, 85, 2,250, 84,175, 94,189,254,169,168, 94,124,124,252, 31, 0,122,123,
+ 52, 76,132, 76, 57,120,240,224,100, 95,181,120, 1, 31,111, 88,245, 77,255, 12,189, 26,219, 18, 47, 61,242,221,167, 19, 0, 96,
+192,221,120, 66, 35, 35, 35,213, 0,158,226, 56,174,171, 82,169,172,103, 52, 26,147, 1, 28, 37,132,204, 75, 77, 77, 77,191, 33,
+131, 73, 8, 23,171,147, 61,163, 81,107,122, 70,248, 41,226,210,114, 11,210,140, 22,105,135, 68, 44,159, 84,212, 16,213, 33, 68,
+ 81,187,122,224,182,215, 7,182,107,216,172,113, 93, 72,151, 14,195,152,151,213, 47, 49, 77,223,239,171,125, 87, 95,171, 67, 72,
+220, 57, 74,205,190,104, 85,171, 86, 45, 66, 20, 69, 33, 61, 61, 61,197, 81, 25,154, 76,166, 4, 0, 13, 1,156, 84, 42,149, 7,
+111,182, 82,188, 87, 52,163,163,163, 35, 37, 73,122, 54, 60, 60,252,225,204,204,204, 63, 56,142,251,230, 70,207, 55,227,191, 67,
+205, 7, 71,124, 70, 56, 82,165, 34,219, 80,137,102, 39,239,253,241,181,219,125,159, 11, 0,148,210,167,171, 87,175, 94,151, 82,
+122, 26,192,236, 82,233,242,188,172,204, 62, 48, 53, 99,219,172, 28, 51,234,169, 46,175,142,126, 90,167,209,168,161, 55, 24, 67,
+230, 45,252,225,211,154,141,219,246, 78, 62,190,171, 23, 0,152, 76,166, 1,213,170, 85,171,105, 54,155, 47, 2,248,193,155, 38,
+131,113,211, 6,171,113,227,198, 90,133, 66, 49,136,227,184,167,154,197,183,110,215,111,240, 83,196, 74, 52,248,240,141,161, 21,
+158,194,225,208,161, 67,202,140,140,140,247,107, 53,136,255, 95,167,238,253,185, 70, 13, 27,160, 74, 72, 16, 36, 78,129, 69,127,
+157, 9,217,250,213,211, 95, 0,104,125, 3,201,236,253,243,159,251,144,145, 39,130, 16,128, 16,128, 35, 64,145, 81,194, 91, 35,
+219,189, 7,192, 39,131, 69,226, 95,144,197, 54,110,216,235,204, 53, 21,254, 58,102, 5, 16, 9, 77, 80,120, 47, 18,255,130,140,
+ 38,126,101,189,155, 78,102, 68, 68, 68, 92, 72, 72,200,151, 79, 63,253,116, 80,189,122,245, 34, 20, 10,133,198,104, 52,214,189,
+116,233, 82,173, 89,179,102, 61, 20, 17, 17, 49, 35, 35, 35,227,183,138,104, 54, 12, 84, 85,239,213,160,198,207,227, 71, 63,217,
+170, 94, 76, 53, 8,230, 98, 80, 83, 81,181, 75, 23,207,183,158,246,205,111,207,197, 6,200,134, 36,229, 91, 55,249,170,167,242,
+147,191,253,214,243, 67, 26,214,241,163, 48, 31,223, 9,129,167, 80,249, 5,161, 85,117, 30, 4,180,209,228,191,211,223, 2,240,
+158, 15, 70,114, 42,128,183, 0,144,136,136,136,159,101, 50,217,254, 7, 31,124,176,193,227,143, 63, 78,154, 54,109,138,127,254,
+249,167,209,154, 53,107, 30,173, 94,189,250, 41,179,217,188, 47, 36, 36,228,240,241,227,199, 45, 62,230,111,121, 78, 78, 78,115,
+133, 66,241,192,221,172, 25, 25, 25,169, 54,155,205, 79, 70, 71, 71, 63,223,175, 95,191,166,125,251,246, 37,245,235,215,199,169,
+ 83,167,226,215,173, 91,247, 94,243,230,205,143,166,166,166,126,173, 80, 40,126, 72, 79, 79,247,105, 18,224,193,221,200,169, 95,
+ 54,209, 6, 55,186,220,205,152, 7, 2, 80, 81, 74, 51,124, 88, 55, 28,128,134, 82,122,225,118,107,222,162, 72,203, 9, 66, 72,
+176, 61, 29,142,244,148,250,236,250, 46,138, 98,241,165, 75,151,106,151,167, 89,189,122,245, 70,146, 36,241,174,191,201,100,101,
+247, 90,176,217,108, 82, 74, 74,202,241,114,143, 17, 71,170,124,253,229,103, 1, 2, 7,136,212,254,178, 82,136,148, 66,146, 0,
+ 81, 2, 68, 73,130, 77,164,144,168, 4,171,141, 98,202,123,111,221,201,106,238, 97, 0, 29, 0,108, 7, 48,167,156,101,179,203,
+ 19, 9,171,211, 98,248,232,167, 71,116,126,235,141,151,116,148, 82, 80, 74,161, 86, 41, 49,238,213, 81, 10,163,209,220, 54,162,
+110,194,243, 25,103, 15, 46, 36,132,116, 6,144, 0,224,160,139,193, 98, 48, 42,215, 96, 17, 66, 72,124,124,124, 7, 74,233, 83,
+ 53, 99,234, 12, 26, 56,236, 5,117,205,186, 77, 80, 36,249,227, 98,182,132, 67, 91,150, 2,192,242,138,252,249,250,245,235, 19,
+ 40,197,247,163, 39,124,214,160, 89,139,150, 56,150,102,195,174, 20, 17,197,231, 68, 8,188, 1,146, 4, 80, 74, 77, 55,186,115,
+169,185, 54,236, 56,101, 6,207, 1, 28, 7,240, 28, 1, 95,193,231,116,211,196,175,172, 92,141,129,127,110,216,159,246, 8, 84,
+225,208,231,166, 65,159,155,185,142,166,252,126, 87,153,171,168,168,168, 46, 49, 49, 49,179, 95,125,245,213,170, 25, 25, 25,193,
+251,246,237,131, 82,169, 68, 80, 80,144, 80,165, 74,149, 6, 19, 38, 76,200,159, 54,109,218,184,240,240,240,127, 50, 51, 51,147,
+125, 50, 5, 58, 69,195,142,113,141,119, 79,154, 58, 57,192,148,184, 14,121, 43, 86,128,231, 36,200,181, 58, 68,168, 53,152,243,
+112,205,224, 9,235, 83,126,107,170, 86, 55, 60,106, 48,164,249, 20,117, 10, 11,238, 94,167, 94,125,228,173,157,135,179,121, 38,
+236,201, 52,161, 95,199, 4,212, 9, 82,163,133, 77, 68,136, 74,232,226,205, 96, 69, 71, 71, 7, 1, 24,159,156,156,204,201,229,
+114, 82,171, 86,173, 33, 95,127,253, 53,109,212,168,145,243,169,219,173, 91,183, 70,235,214,173, 73, 81, 81, 81,195, 93,187,118,
+ 53, 92,185,114,165, 53, 42, 42, 42, 49, 45, 45,109, 81,217,145,165,218,151, 77, 38, 99, 53,165, 74,109,156, 53,107,214, 79, 15,
+ 62,248,160,164, 80, 40,112, 51,154,118,227,187, 36, 58, 58, 90, 51,105,210,164,236,150, 45, 91,210,202,208,172, 85,171,214,134,
+246,237,219,119,238,222,189,187,208,182,109, 91, 68, 70, 70, 58,151, 85,169, 82, 5,237,219,183, 39, 41, 41, 41,205,118,236,216,
+ 49,111,195,134, 13,115,107,213,170,181,229,226,197,139,221,125, 56, 69,245,111,114,121,169,224, 47,128,233,132,144,133,148,210,
+ 93,229,212, 45,113, 0,134, 2,248,248, 14,105,150,139, 90,173,206, 52, 26,141, 97, 0,160, 82,169,174, 26, 12,134,112, 31,234,
+ 75,221,172, 89,179,194,228,114, 57, 56,142,131, 40,138, 16, 69, 17,146, 36,129, 82,234,124,119, 12, 50,154, 58,117,170,232, 77,
+ 83,146, 36,238,179,207, 62,147,169,213,106, 0,128,213,106, 45,245,238,192,241,125,234,212,169, 62,213, 81,106, 5,143,119,223,
+120,190, 21, 39,154, 85,229,254, 63,175, 48, 62, 51,110,246,254, 59, 96, 86,131, 40,165, 79, 2,232, 11,192, 81,198,155, 70, 69,
+ 69,253,237,182,106, 83,251,123,113, 84, 84,212, 22, 0,127, 16, 66,190,247,212, 92, 24,160,245, 27,245,250,152,103,253, 40,165,
+152,178, 34, 27, 83,126,205,198,187, 3,130, 49,174,183, 6, 35,159,120, 84,251,253,226, 95, 94, 0,176,208,101,147,211,246, 40,
+ 26,139, 94, 49, 42,223, 96,181,104,209,226,207, 94, 3, 70,244,124,176, 67,119,216,228, 97, 56,117,149, 32,229, 34,133,192,219,
+192, 65,194,133, 3,171, 40,199,113, 63,184,133,108,203, 28, 97,240,231,159,127,190, 86,189, 78,243, 25,111, 77,158,206, 31,203,
+ 84,224,251, 29, 6,136,166,124, 24,178,207,161,248,234, 25, 20, 94, 57,129,188,180, 99, 71, 57,142,155,236,171,230,117,230,136,
+ 2, 18,165, 32,148, 0,146, 61,178,203, 17, 15,235,149,175, 73, 69, 50, 62,113,195,247,143,180,232, 63, 17,103,118, 44, 6, 40,
+ 55,222,251,127, 87,254,232,138,178, 52, 35, 35, 35, 31,170, 89,179,230, 39, 47,188,240, 66,244,145, 35, 71,252,245,122,125,241,
+254,253,251,183,101,100,100,132, 87,169, 82, 37,229,241,199, 31,111, 19, 22, 22, 22,214,161, 67, 7,205,250,245,235,223, 6,240,
+172, 55,205, 38, 90, 69,108,251, 86, 77,246,124,240,201, 76,109,246,111,115, 97,190,120, 4,123, 50,141, 56,146,101,160, 81,254,
+249,228,177, 38, 65,208, 42, 4, 60,255, 64,152,238,127,107,146, 63, 2, 48,204,151,125,175, 21, 21, 94,219,106, 48,192,104,176,
+224,207, 51,249,134, 61,185,249, 97,156, 95,106,214,184, 71, 18, 84,124,118, 58,170,250,201,234, 86,244,120, 18, 66,160,209,104,
+ 60, 46, 11, 8, 8, 64,235,214,173, 81,187,118,109,217,208,161, 67, 31, 4,176,168, 44, 77,139,197, 18,145,150,150,142,122,245,
+235, 41,187,118,237, 74,120,158,135,217,108,190, 41, 77, 0,208,106,181,125,227,226,226,132, 31,127,252, 49, 47, 57, 57, 57,105,
+224,192,129,105, 26,141,166,212, 5, 85,163,209,160,122,245,234,120,241,197, 23,101,207, 61,247,156, 87,205,240,240,240,135, 22,
+ 47, 94, 12, 66,136,243,226,237, 78,141, 26, 53, 80,181,106, 85,244,238,221, 91,120,244,209, 71, 31, 42,239,120, 14,238, 70, 78,
+ 57,204,211,224,110,132,122,137,114, 81, 0,167,221, 35, 89,238,154,148,210, 28, 66,200, 2, 0,191, 19, 66, 6,121, 50, 68,132,
+144,182, 0, 86, 0,232, 69, 41,189,234,237,188,187,106, 42, 20, 10,185,197, 98, 9,114, 55, 62, 21,213,116, 73, 11, 77, 76, 76,
+ 68,124,124, 60, 92,223,141, 70,163,211, 8, 17, 66,194,124,205,159, 60,207, 99,254,252,249,224, 56, 14,114,185, 28, 50,153, 12,
+114,185,252,186, 87,139, 22, 45,124, 46,239, 50,153, 12,243,231,207,135, 40,138, 92,114,114,242, 83,162, 40,246, 55, 26,141, 97,
+106,181, 58, 75, 46,151,175,237,216,177,227,119, 74,165,210, 86, 17, 77,142, 7, 56,209,172,218,180,126,181,182,172,115,110, 50,
+153,208,167,255, 99,224, 8,119,219,235,186, 93,187,118, 85,175, 94,189,122,125,123,116, 10, 0,182,167,165,165,117,112,249,238,
+202,246,180,180, 52, 71,215,144,179,151, 47, 95,174, 14, 32,215, 93,211,108,182,212,210,233,180,160,148, 98,202,175,217, 48,254,
+ 24, 3,213,136, 11, 24,249,128, 9,126,126,126,176,217,108, 13,162,162,162,126, 0, 80,207, 30,189,234, 23, 21, 21, 85,159, 82,
+186, 69,169, 84,254,238,104,210,191,157,245,252,127, 65,211, 11, 45, 1,132,186,124, 55, 3,112,220,173,102,219, 13,112,136,219,
+239,174,235, 57,222,179,236,191,135,218,183,163, 46,186, 89, 0, 14, 84,170,193, 34,132, 80, 74, 41,113,188,151,177,174,127,170,
+ 33, 16, 69, 23,171, 64,224, 36, 8, 60,129,192, 3, 0, 65, 78,234, 9,152,139,115,118, 30, 60,120,240,162, 47,127,250,215, 95,
+127,181,174,217,168,213, 71,147, 63,248,148,251,110,187, 1,249,122, 35,178,143,175, 70,198,254,111, 51, 36,155,101, 53,199,113,
+ 7, 57,142, 59, 20,215,172,233,169,136,136, 8,241, 70,119, 78,162, 37, 33,110,167,177,146, 0,114, 3, 55, 32, 52,245,215,115,
+145, 29,223, 41,245,253,110,113,200,209,209,209,189,234,212,169, 51,253,133, 23, 94,168,113,232,208, 33,191,194,194,194,172, 77,
+155, 54,157,178, 88, 44,255,112, 28, 55, 39, 61, 61,189,227,226,197,139, 53,111,190,249,102,247,250,245,235,215,223,176, 97,131,
+222,107,228, 74, 43,111, 54, 98,248,227,123,250, 63,255,138, 42,233,215, 47,160, 60,117, 8, 95, 31,207, 21, 15,102, 26,222, 54,
+ 22,217,102,171, 53, 66,219, 60,163,109,227,235,237, 35,184, 8, 63, 25,170, 5,200, 59,249,154, 94,133, 76, 41, 80, 65, 5,179,
+201,134, 98,179,100, 62,158, 69,139, 95,235,212,196, 66,181, 85, 84, 0, 32,240,156, 87,211,159,154,154,154, 27, 25, 25,249, 81,
+205,154, 53,223, 33,132,208, 14, 29, 58, 28,143,143,143, 47,150, 36, 9, 6,131, 1, 22,139, 5, 50,153, 12, 6,131, 1,151, 46,
+ 93,194,190,125,251, 16, 16, 16, 80,161,227,154,151,151,135,154, 53,107, 66,163,209,220,180,166, 36, 73,100,222,188,121,170,164,
+164, 36,213,239,191,255, 30,252,218,107,175,229,183,104,209,226,196, 35,143, 60,146, 18, 28, 28,108, 57,124,248, 48,246,236,217,
+131,220,220, 92,180,106,213,202, 39, 77,139,197, 2, 65, 16, 96, 48, 24,160, 84, 42, 33, 8, 2,108, 54, 27, 36, 73,114,154,174,
+162,162, 34, 92,187,118, 13, 50,153,204,235,131,216, 29,102,105,112, 55, 66,127, 89,177,251,106, 73,219, 80,129, 21,150,124, 43,
+108,249, 86, 88,243,173,176,230, 89, 7,191, 58,179,217, 47,155, 40,169, 64, 37,188,151, 16, 50, 8,192, 10,119,147,229, 98,132,
+ 6, 81, 74, 15, 87, 84,211, 98,177,236,116, 24, 31,149, 74, 21, 70, 72,137, 49, 84, 42,149, 86,147,201,212,185, 34,154, 0,144,
+152,152,136,184,184, 56,222,174, 73, 29,239, 55, 18,181, 32,132,128,231,121,200,100, 50,240, 60,143,184,184, 56,244,237,219, 23,
+245,235,215, 71,106,106, 42,182,110,221,138, 51,103,206, 64, 46,151,151,106, 58,244,134, 76, 38, 3,199,113,220,233,211,167,191,
+235,218,181,107,157, 87, 94,121, 69, 81,189,122,117,156, 58,117,170,234,188,121,243, 70,108,222,188,185,227,128, 1, 3, 70, 0,
+176,149,215,124, 88,202, 8,218, 77,147,201,100,194,137, 19, 39,202, 95,183,162, 77, 0,149, 64,219,182,109, 47, 83, 74,207,162,
+164,233,175,105, 90, 90, 90,135,168,168,168, 63, 1,184, 27,194,226,180,180,180,222, 81, 81, 81,249, 0,142, 2, 56, 77, 8,185,
+156,154,154,122,157,102, 96,128,127, 86, 81, 81,113,184, 86,171,193,219,253, 3,161, 26,113, 1, 99, 58,243,176, 90,173, 56,127,
+254, 34,106,213,140, 38,203,191, 95,229,104, 26, 76, 56,120,240, 32, 80,210, 84,152,156,146,146, 18, 9,128,117,120,191, 5,120,
+241, 34,161,132,144,181, 46,245, 64, 31,199,247, 9, 19, 38,188, 53,125,250,244, 36, 66,200, 90,215,223, 93,215,115,125,183,255,
+215, 90, 74,105,159,137, 19, 39,198,206,152, 49, 99,154, 99,221, 59, 18,193,226,121,126,224,177,191,102,239,173,107,161, 53,194,
+ 99, 31,182,215, 57, 37, 17,211, 75,135,255,130, 36, 73,139,124,209,217,179,103,143,202, 38,225,187, 55,223,154,202,125,181,197,
+128,204, 43,233, 72,223,246, 49, 12, 87, 79,124,175, 86,171, 95,239,218,179,207, 77,103,220,248,248,248,216,192,144,170, 48, 89,
+168,221, 96,149, 54, 89,247, 11,145,145,145,125,235,212,169, 51,117,245,234,213, 53, 12, 6,131,223,174, 93,187,242, 54,110,220,
+120,214, 98,177,124,147,145,145,177,196,158,137, 86, 11,130,240, 62,165, 20, 58,157, 78,224,121, 94,237,200,189, 30, 35, 87, 1,
+242,184,167,159,122, 98,231,107,115, 22,170,206, 30, 59,140,185,203,255,132,146, 90,196,227, 57,230, 71,142, 21, 90, 29,153,246,
+239,222, 81,154, 52, 74, 81, 77,198, 17, 4,107,100, 85, 91, 19,162,218, 67,169,209, 91,154,171, 84,171,193,217,162, 98,176, 67,
+111,130,206, 95,174, 0,128,168,122,141,249,195, 5, 54,236,218,127, 18, 42, 85,144,220,151,125, 79, 79, 79,159, 20, 21, 21, 85,
+115,227,198,141,156, 94,175, 47, 62,114,228, 8, 66, 66, 66, 16, 22, 22, 6,127,127,127,156, 58,117, 10,155, 54,109,194,233,211,
+167, 65, 41, 45, 51, 74, 80, 22,153,153,153, 40, 40, 40,168, 20, 77,155,205, 70, 0, 32, 54, 54, 22,177,177,177,138,180,180,180,
+176,181,107,215, 6, 77,155, 54,237, 74, 68, 68,196,122,131,225,223,238, 81,238,205, 61,229, 69, 20, 0,192,104, 52,194,100, 50,
+ 65, 46,151, 67,165, 82, 65, 46,151,163,160,160, 0,153,153,153, 40, 44, 44, 44,185,152, 4, 6, 58,215,247, 9, 81, 2,246,182,
+ 59,120,221,239, 81, 79,133,221,224,157,238, 46,187,201,250,155, 16,226, 56,191,153,246,247, 65,229, 53,245,121,209, 44,117, 60,
+ 92,162, 76,178, 27,209,140,143,143,119,104,148,170, 37, 84, 42,213, 85, 71,228, 74,165, 82, 93,245, 69,203,209, 44,168, 80, 40,
+ 16, 27, 27,139,215, 95,127, 29,167, 78,157,194,206,157, 59, 17, 22, 22,134, 30, 61,122, 64, 16, 4,164,164,164,128,227, 56,159,
+ 12,150, 92, 46,135,213,106,197,217,179,103,159,234,210,165, 75,204,220,185,115, 21,201,201,201, 56,117,234, 20,252,253,253,241,
+254,251,239, 43,199,143, 31, 31,189,126,253,250,231,154, 55,111, 62,223,231,186,157,148, 52,255,245,233,255,152, 7, 35,162,149,
+253,184,232, 91,133,195,120,113,119, 96, 98, 31,123, 19,223,103, 0,102,217,155, 5, 59, 0,208,166,165,165,117,182, 95,132, 0,
+128,218,155, 5, 1,224,104, 90, 90, 90,151,242,204,113,198,213,140, 5, 31,207,249,106,214,148,183,198, 42,198,245,214, 96,228,
+ 3, 38,136,162, 8,158,231, 49,119,193,247,214, 51, 39,142, 29, 73, 72, 72, 88, 11,160,223,193,131, 7,145,144,144, 80, 8,224,
+ 12,128,139, 10,133, 34,253,194,133, 11, 96,220, 25,220, 77,144,195, 56, 77,159, 62,189,143, 39, 83,229,193,196,149,250,125,198,
+140, 25,211, 92,190, 87,234, 40,118,193,213, 57,122,185, 11,143, 8, 12,141, 10,126, 97, 88, 15,172, 60,226,120, 32, 33,133,197,
+164,199,149, 83, 91,244,102,179,121,133, 47,127,152,147,147,243,254,200,215,103,214, 57,120, 89, 64, 70,174, 30,233,155,167, 82,
+ 75, 94,242,160,190,125,251,174,172,140, 29,138,143,143,143, 13,170, 18,185,245,157,143, 22,226,239,179,102, 72, 20, 32,212,165,
+202,188, 79,102,254,138,138,138,170, 27, 20, 20,244,233,170, 85,171,194, 20, 10,133,223,209,163, 71,197,109,219,182,165, 91,173,
+214,121, 25, 25, 25,203, 92, 76,216, 19, 77,154, 52,177,106,181, 90,100,100,100, 24,173, 86,107, 81, 89,230, 42, 86,173,142,142,
+ 79,104,178,253,181, 57, 11, 85, 70,179, 25,249, 6, 19, 66, 35, 34,196,157, 71, 79, 60,114,188,208,230,188, 35,104,236, 39,107,
+243,104, 66,173, 40, 78,237, 7,232, 11,144, 86, 96, 78,247,197, 92, 1,128,214, 47,144,139, 78,232,132,132, 87, 63,199,241,201,
+111, 83, 0, 8, 12,143,228, 58,191,248, 33,116,241,125, 49,255,149,167, 42, 98,129, 13,245,234,213,195, 63,255,252,227,200, 91,
+200,201,201, 65, 76, 76, 12,230,206,157, 91,106, 69,163,209,120, 67,199,185, 50, 52, 37, 73, 34,110,231, 14,163, 71,143,150,173,
+ 91,183, 78,235,106,174, 42,162,105, 54,155,157,134,130, 82, 10,179,217, 12,179,217, 12,173, 86,139,179,103,207,150,246, 75,162,
+232,177,169,179,236, 4,231,123, 14,119, 89,115,172, 55, 81, 41,238, 34,132,200, 93, 76, 80, 56,128,118, 55, 98,132, 60, 25,159,
+202, 32, 49, 49, 17,158, 46,200,142,166,199, 67,135, 14,209,184,184,184,240, 10,236, 51, 20, 10, 5,250,245,235,135,147, 39, 79,
+ 34, 61, 61, 29,126,126,126, 48,153, 76, 48,153, 76,136,139,139, 67,102,102,166,207,209, 43, 23,221, 94, 99,198,140, 81, 93,188,
+120, 17,215,174, 93,131, 74,165,130,205,102,131, 40,138,120,238,185,231, 84, 47,190,248, 98, 79, 0,190, 27, 44,158,160,219, 83,
+ 31,121,236, 91,245,247,183,255,235,168, 84, 42,157,205, 45, 60,119, 87, 85,160,174,125,162, 42,116, 16,175, 94, 56, 58,191, 70,
+163, 54, 15,217, 44,150,206,207, 60,249,152,159, 78,171,193,249, 11,201,152,255,205,143,214,191,119,252,159,189,243,142,138,226,
+250,219,248,115,103,123, 97,233,189, 8, 40, 29, 81, 17, 80,177,162,177,119, 77,140, 26, 77, 44,177, 38, 26,163,198,154,216, 91,
+140,177,166,153,216,141, 26, 75,212,216,123,141, 29, 43, 22, 16,145,222, 59,203, 46, 91,231,190,127, 0, 6, 13,101, 65,243, 75,
+121,231,115,206, 28,216,153,217,103,239,157,185,115,231,153,239, 45,115,227,108, 70,242,211,110, 0,136,139,139,139,111, 89,228,
+ 42, 38, 37, 37,229,131,186, 70, 52, 57,106, 23,197,170,100,221,232,242,129, 45, 85, 25,167,218, 24,180,138, 17,174,114,102,206,
+156,217,112,233,210,165,111,180,143, 33, 83,225, 71, 73, 53,166, 37,216,210,214,229,220,204, 37, 63,153,237,191,199, 67,110, 90,
+ 52,146,110, 31,132,129, 5,210,162,127, 7, 53,234,127,125,248,240, 97,113, 77, 63,118,226,196, 9, 31, 55,223,208, 79,154,132,
+ 52,199,137, 7, 26,228,222,223, 5,109,222,243,239,123,244,232,241,230,204,149,141,211,249, 89,203,126,178, 62, 20, 37, 64,226,
+243,104,156, 95,219, 27, 39,151,191,133,227, 95,190,133, 35, 75, 59,224,183,197, 29, 0,224,104,109,116, 35, 8,225,123, 90,233,
+208, 41,128,192,217, 86, 5, 18, 65,248,127,119, 33, 76, 73, 73,121, 10, 96,235, 79, 63,253, 84,116,249,242,101,227,216,177, 99,
+ 99, 10, 10, 10, 22,165,166,166,238,170,112, 35,239, 80,191,126,253,169, 11, 22, 44,240, 53, 26,141,184,120,241,226, 83, 30,143,
+ 87,101,251,114,148, 90,157,124,231,254,195,239, 46,239,216,128, 59,183,110, 98,251,156,201,134, 43, 15, 30,245,122,201, 92,153,
+137,252,195, 27,122, 31,254,104,226, 71, 12, 17,203,241, 36, 91,131, 52,165,254,140,201,233, 46, 82,233, 5, 98, 41,204, 28, 61,
+144,160,102,133, 46, 46, 46,215,147,243,213, 66,134,199, 7,195, 23, 34, 46, 79, 83,171,155, 56,203,254,217,143,189,106, 90, 0,
+212,216, 68, 86,163,147,123, 13,205,242, 8,214,159,252,138, 94, 79,234,170, 89,209, 96,189,106,166, 42, 59, 70,181, 50, 88,186,
+194,202,207,129, 54,231, 77, 12,236,208,150, 45,120, 29,115, 85,110,124,202, 35, 74, 98,177,248, 69, 83,155,169, 81,166,202, 34,
+ 88,175,179,253,149, 27, 2, 88,150,133, 64, 32,128,183,183, 55, 10, 10, 10, 96,110,110, 14,133, 66, 1, 51, 51, 51,136,197, 98,
+ 56, 56, 56, 64, 36, 18,129, 97, 24, 48, 38, 26, 23,189, 94, 15,173, 86,235,232,234,234, 10,165, 82, 9,137, 68,242, 98, 17,137,
+ 68,240,245,245,133, 82,169,172,149,233,172,141,105,226,253,135,166,166, 78,120,116,165,223,150,221, 7, 39,118,236, 53,228,102,
+227,240,110,154, 47, 22,175,214,156, 57,125,250,118,250,179,219,221, 56,155,243,183, 70,168, 72, 37,235,126,172, 42,130,245, 38,
+162, 96,229,145, 44, 0,210,191, 36,130, 85,147,185,154,190,248, 71,243, 61,183, 25,228,167, 61, 65,194,241, 89, 69, 70,157, 42,
+143,101,245,238,121,207, 46, 3, 21, 58,228,214,112, 51, 12,107,217,161, 15,115,254,177, 22,186,162, 84, 20, 70,253, 18, 47, 22,
+139,103,188, 73,115, 53, 99,233, 79,214,251,239,241,145,155, 26,141,103, 71,103, 22, 24,117,170, 14,145,145,145,181,158, 71,107,
+ 12, 33,130,245,148,234,251,216,219,247,117,115,115, 88, 62,162,191, 2,109, 59, 74, 97, 46, 52,199,130,175,152,199, 14,173,200,
+212,140,223,233, 33, 18, 66, 4, 52,146,254, 45, 35, 10,163,162,162, 22,123,123,123, 51, 6,131, 97,132, 78,167,155,151,154,154,
+186,183, 66,228,170,147,187,187,251,242,133, 11, 23,186,198,199,199,139,174, 93,187,150,123,231,206, 29,214,104, 52, 46,171, 78,
+243,126,129,102, 90,144, 66,200,243,114,115,158, 16,155,156,220,251, 65,161,225,120,249,182, 32,185,168, 97,235, 96,255,223, 23,
+206,159,169,208, 93,219,135,226,244,100,124,115, 45,189,144, 53,234,103,154, 24,117,179,246, 16, 2, 51, 71, 13, 99,139,138,138,
+ 32, 19, 9,217,228, 39,207,120,239,119,108,107,252,114,250, 20, 38, 61, 61, 29,170,226, 98,158,139,139,139,117, 74, 74, 74,174,
+ 41,154,149, 25,138,202,162, 64,181, 50, 24,149,240, 58,154,175, 70,176,170, 51, 88,166,106, 86,108, 18,171,233,120, 24,141,198,
+218, 53, 17, 26,170, 48, 88,186, 44,221,107, 22,217, 68, 66, 72,189,242,255,223,196, 53, 80, 82, 82, 98, 95, 33, 42, 86,237,131,
+162,137, 17,172, 58,111,175, 42,130, 21, 27, 27, 11, 59, 59, 59, 24, 12, 6,200,229,114, 72,165, 82, 72,165, 82,168,213,106,136,
+ 68, 34,240,120,188, 90,233,138,197,226,244, 39, 79,158,184, 91, 89, 89,193,104, 52,190,100,178,158, 63,127, 14, 11, 11,139, 76,
+ 83,251, 95,149, 70,176,128,211, 91,166, 87, 58,138,208,210, 66,254,146, 16,143, 16,252,131,160, 21, 34, 87,117,138, 42,165,199,
+220,216, 14, 96,187,139,139,203,214, 29, 27,142,132,134,134,134, 30,121, 93, 77,142,191, 60,194,117,184,162, 73, 34,132, 28,158,
+ 49, 99, 70,157,231, 14,153, 49, 99,198,172,202, 34, 90,111,204, 96,149, 87, 74,175, 86, 78, 33, 33, 33,193,150, 54,206,231,166,
+ 46, 92,111,190,227, 22,131,130,180,199, 72, 61,253,121, 1,171, 83,117, 96, 24, 38, 45,233,202,143,123, 1,168,110,223,190,125,
+193,196,155, 97, 83, 63, 31, 31,236,137, 50,160, 36,253, 30, 24, 66,183,116,236,216, 81,245,186,153, 40, 55, 87,211,150,252,104,
+189,231, 14, 31,121,165, 38,176,128,173,131,185,122, 79, 44,246, 18, 48,204,114,175,240,166, 61, 6, 57,216, 42,187,123,201, 44,
+187,123,137,193,187,118, 0,135,156, 51,145,107,123, 22,227, 86,185,120, 93, 57, 88,248, 91,189,183,248,185,189,219, 54, 49,119,
+110,199, 63,162,167,198,105, 89, 23,233,255,188,243,251,211,167, 79, 23, 58, 58, 58,238, 79, 79, 79,127,209, 59,213,213,213,181,
+155,135,135,199,146, 5, 11, 22,120, 36, 37, 37, 41,238,222,189, 91,184,119,239,222,231, 12,195, 44, 72, 75, 75,171,241,233,254,
+ 65,145,110, 74, 67, 51,209,134, 40,165,225,201,139,200,149, 92,216,120,216,251,131,174,118, 28, 52, 92, 18,119,126, 43,172,147,
+ 31, 98,245,141, 76, 99,114, 65,201,224,199, 42,154,110,138,185, 18,137, 68,123,214,238,219,247, 52, 40, 40,136,168, 84, 42,232,
+245,122,100,101,101,225,171,159,247, 68,177, 44, 11, 43, 43, 43,156, 57,115,134,253,228,147, 79,246,184,184,184, 12, 48,197,100,
+177, 44,251,226,102, 85, 85, 20, 72, 42,149,214,206, 96,148,125,167,162,129,121, 29,205,170, 12,214,171,145,173, 90,106,150, 94,
+192,101,157,219,171,138,232,241,120, 60,176, 44, 91,105,164,175,234, 48, 73,126, 21, 6, 43,243,181, 30, 36, 40,165,238, 53, 12,
+164,249,219, 40,155,138, 1, 0,216,170,166, 98,168,208, 71,203,164, 8, 22, 0,136, 68, 34, 92,185,114, 5, 93,187,118, 5,203,
+178, 16,139,197,144, 74,165,144, 72, 36,184,113,227, 6,132, 66, 33,120, 60, 94,173,154, 9, 5, 2,193,177,111,190,249,102,216,
+178,101,203,164, 44,203, 66, 36, 18, 65, 42,149, 66, 44, 22, 99,229,202,149,106,145, 72,116,188, 86, 6, 11, 53,143, 34,172,104,
+198,254,215,188, 50, 77,195,171, 83, 49, 84,228,213, 41, 28,170,156,166,193,197,197,197,154, 16,242, 33,165, 52,176,108,213, 75,
+163, 5, 43, 6, 74,203,183,187,184,184,108,125,117, 20, 33,199, 95, 19,189,170,162,142,200,122, 37,242,164,173,240, 57, 11,165,
+239, 86,238, 89,246, 63, 42,249, 95, 91,201,186,156,165, 75,151,158,171,208,127, 43,235,127, 18,193, 10, 14, 14,246,183,182,115,
+ 61, 55,121,225,122,243,173,215,121, 40, 72,123,132,236,115, 95, 20, 80,131,186,162,105,105, 93,203,223, 11,182,183,183, 65,246,
+149, 18,232,243,158,130, 16,114,251,117, 51,208,172, 89, 51,111, 75,107,199,243, 83, 23,253,104,189, 51,146,143,252,212, 63, 76,
+ 96, 93, 34, 87,124,134,249,234,235, 19,191,244, 22,167, 63,134,250,222,121, 75, 65,110, 50,162, 50,117,216,115, 37,189,232,252,
+239, 63, 93,102, 2,104,155, 14,131, 45,205, 58, 12,182,198,234,113,199,173, 51, 74, 30,226,122,204,225, 62, 75,102, 30,166,248,
+155,102,119,175,104,174,156,157,157,123,185,186,186,206, 63,114,228,136,187,193, 96, 80, 92,188,120,177,104,239,222,189,207, 12,
+ 6,195,218,180,180,180, 35, 38, 71,199,148,218, 23,230, 42,200, 66,216,244,195,145, 31, 92,254,100,213, 15,146,135,145, 55,177,
+124,235, 17, 40, 4,122, 99,100,106,201,128, 40,165,225,152, 73,199,149,207, 95,176,115,231, 78,121, 64, 64, 0,201,201,201,121,
+113,195,215,233,116, 40, 44, 44, 68, 65, 65, 1,180, 90, 45,130,130,130,152,185,115,231,202,231,204,153,179, 0,192, 71, 53, 92,
+140,153,243,231,207,183, 31, 61,122, 52,204,205,205,145,147,147, 3,189, 94,255, 34,218, 36, 22,139, 97,105,105,137,252,252,124,
+156, 62,125, 26,149, 13,217,175,136, 80, 40, 76,115,113,113,118,147,202,228, 90,153, 76, 70,205,204,204, 94, 91,179,236,102,155,
+222,189,123,119,199,249,243,231,139, 42, 54, 51,233,116, 58, 82, 87, 77, 74,169,170,115,231,206,178,181,107,215,194,221,221, 29,
+ 90,173, 22, 44,203,190,136, 96,149, 79, 13,144,152,152,136,197,139, 23,131, 82,106,250,131,140, 62, 79, 15,215, 15,236,160,203,
+209, 67,151,163,135, 54, 91, 15, 93,166, 30, 6,213, 63,110,136, 72, 93, 58,160,155, 16, 9,179,127,221, 8, 86, 89, 52, 13, 66,
+161, 16, 73, 73, 73, 56,115,230, 12,154, 53,107, 6,133, 66,129,226,226, 98, 92,189,122, 21,233,233,233,117,138, 96,117,232,208,
+ 97,203,201,147, 39,219,124,252,241,199,158, 99,199,142,149,250,251,251, 35, 62, 62, 30,171, 86,173, 42,121,244,232, 81,202,196,
+137, 19,127,170,141, 30, 83, 54,117,141, 73,163, 8,153,255,189, 55,174, 98,154,134,238, 85,236, 94,113, 10,135,151,166,105,168,
+200,129, 3, 7, 60, 93, 92, 92,252, 81,218,191, 10,248,243,104,193,138,220,186,117,235, 86, 40,184, 81,132,127, 55, 55,255,109,
+ 9,230, 87,125,209, 49,159, 54,127,123,182,249,150,107,124,228,165, 68,161,224,210,220, 87,205,149, 41,149,204, 75,111,219, 22,
+ 72, 20, 65, 6, 42, 4, 80, 2, 67,254, 51,136, 68,162, 90, 27,160, 87, 53, 89,150,157,210,226,237,217,214,219,110,242, 81,144,
+250, 8, 89,231,231,212,218, 92,149,107,142, 33, 68,224,221, 50,180,135, 56, 35, 26, 37,231,119,129, 0,216,112,167, 24, 87,147,
+181, 43,117, 90,237,162,135, 5,154,124,215,112, 98,181,107, 73,230,156,110,253, 26,125,226, 59,240, 52,174,103,125, 15,200, 0,
+ 43, 59,126,183,138,205,133,127,199,219,203, 93, 92, 92,188, 21, 10,197, 87,199,142, 29,179, 19,137, 68,230, 15, 31, 62, 52,238,
+219,183, 47,201,104, 52,126, 93,177,227,123,109, 52, 27, 74,165,174,129,126,158, 23, 38,126,253,157,164, 72, 89,140, 98,173, 14,
+206,245, 92,140, 23, 34, 31,191, 29,165,212, 30, 52, 69,211,193,193,161,253,123,239,189,215, 56, 36, 36,132,169,202, 92, 21, 22,
+ 22, 66,169, 84, 34, 57, 57, 25,109,218,180, 97,252,253,253,131, 28, 28, 28,218,103,100,100,156,171, 42,157,105,105,105,243,118,
+237,218,213,106,247,238,221, 61, 71,141, 26,165,232,223,191, 63,164, 82, 41,138,139,139,225,230,230, 6,150,101,113,233,210, 37,
+196,196,196, 20, 1, 56,156,150,150,246,123,117,233,140,139,123, 86,143, 16,194,184,186,186,182,234,218,181,235, 27,209, 4,128,
+172,172, 44,175, 11, 23, 46, 76,239,211,167,207,164, 46, 93,186, 40,102,205,154, 37,244,244,244,132,209,104, 36,117,213,204,203,
+203,179,184,125,251,246,138,214,173, 91,127,212,181,107, 87,254,146, 37, 75, 96, 97, 97, 1,163,209, 8,169, 84,138,194,194, 66,
+ 44, 88,176, 0,151, 47, 95, 54, 80, 74,191, 45, 40, 40,152, 90,157,230, 75,243, 96, 77, 92,217,164,186,114, 88,213, 60, 88,127,
+ 71,153, 87,171,213, 14,181,141,138,153,146,206,219,183,111,211, 87,231,195,170, 46,130,245,170,102,121,127, 48,145, 72, 4, 62,
+159,143,172,172, 44,156, 60,121,242,165,249,175, 68, 34,209,139,105, 28, 42,139, 96, 85,149, 78,133, 66,193,190,243,206, 59, 35,
+142, 29, 59, 54,108,202,148, 41,125,138,138,138,236,205,205,205,179,228,114,249,225,137, 19, 39,110,178,180,180,172,114,138,134,
+202, 52,121, 12,169,114, 20,225, 75, 81, 83,158,168,164,178,238, 90,127,245,121,127,101,154,134, 87,167, 98,168,200,171, 83, 56,
+188, 52, 77, 67, 69,205,190,125,251, 62, 71,233,228,161, 76,217,223, 87, 71, 11,150,227,115,235,214,173,208,208,208,208,139, 40,
+237,159,243,210, 40,194,191,163,204,255,151, 53,255,107, 84,215, 7, 75,242,123,100, 12, 24,113, 38,138,174,127, 85,107,115, 85,
+ 25, 6, 77,113,236,194, 95,226,130,141, 90, 53, 12,133, 9,209, 93,123,116,207,124,221, 12, 80, 74,229,151,111,199,130, 47,201,
+ 65,254,181, 47,243,137, 81,211, 33, 50, 50,242,110, 93,180,214, 83,170, 31, 34,151,159,127,118,249,204, 91,206, 0, 18,114,181,
+184,251, 36,247,228,126,149,106, 74,249, 62,201, 87,105, 30,128, 73, 78,109, 25, 63,107,159,130, 78, 22,206, 64,102,162, 30,121,
+ 89,134, 99,127, 87, 95,172,114, 82, 82, 82,158, 54,108,216,112,235,198,141, 27,199, 53,109,218,212,108,194,132, 9,229, 29,223,
+119,215, 85, 51, 74,173, 78,110,168, 16,125,127,126,195,170,207, 36,254,205,176,111,201, 76,227,197,200, 39,125, 31, 20,105, 77,
+110,179, 22,139,197, 17,227,198,141, 19,170, 84,170, 42,205, 85, 97, 97, 33,138,138,138, 80, 88, 88,136,187,119,239,162,127,255,
+254,226,199,143, 31, 71, 0, 56, 87,205,185,103, 1, 92,242,242,242,186,241,253,247,223,119,220,182,109, 91,167,145, 35, 71,138,
+ 34, 34, 34,240,240,225, 67,220,184,113, 67,171,211,233, 78, 73, 36,146,211,177,177,177, 90, 19,203,211, 95,161,105, 0,176,216,
+214,214,118,237,222,189,123, 23,157, 61,123,118,232,176, 97,195,228, 6,131,129,188,166,230, 36, 59, 59,187,207,143, 30, 61,186,
+229,228,201,147,125,135, 14, 29,202, 76,156, 56, 17,235,214,173,195,190,125,251, 88,163,209,120, 80, 32, 16,124,144,149,149, 85,
+227, 0,148,151,230,193,170,102,158,171,154,182,255, 77, 79,161,175,173,249,106, 36,172,105,211,166, 14, 21, 71,105, 86,252, 91,
+ 27, 26, 55,110,252,210, 60, 87,229, 29,218,203, 23, 30,143, 7, 62,159, 95,171, 38,194,134, 13, 27, 66, 32, 16,176,193,193,193,
+155, 0,108, 2, 94,126,101,142, 64, 32,120, 49,169,169, 41,104, 12, 44, 54,108,220,122,195,192, 82, 24, 89, 10,202, 2,122, 10,
+176, 70, 22, 70,150,194,200,178,165,211,162, 81, 64, 93, 98,252,159,215,107, 21,166,105, 88, 89,201, 84, 12, 21, 31, 48, 95,157,
+194, 1,168,162, 31, 85, 89,247,131,242,254,168,149,141, 22, 44,215,220, 90,182, 94,154,146,146,242,126,117,154, 28, 28,181, 49,
+ 88,179,148,145,107,244, 0,108, 8, 33, 51, 35, 35, 35, 31,190,238,143,241,120,204,204,204, 67,195,215, 82, 32,143, 71, 48,243,
+ 77,100,192,104, 52,206, 46,190,189,150,165,148, 90, 18, 66,102,220,186,117,235,181,210, 73, 13,134,241, 95,253,116,105,165,157,
+133,168, 83,118,190,230, 40, 8,169,116,214,118, 3,232,199,219,191, 76,252,210,202,142,223, 45, 47,203,112,140,101, 48,253,159,
+112, 66,163,162,162,150,120,123,123,243,126,248,225,135, 17, 90,173,246,165,142,239,117,214, 44,210, 78, 11, 82, 8,121,126,158,
+174, 19,158,196, 39,246,121, 80,100, 90,179, 96, 5, 68, 46, 46, 46, 81, 42,149, 10,132, 16,104, 52,154,151, 12, 85, 69,131,165,
+211,233,144,153,153, 9, 79, 79, 79, 84,152, 51,169, 90,202, 76,201, 17, 91, 91,219,139,107,214,172,233,177,110,221,186,150, 44,
+203, 94,209,233,116, 71,178,179,179,149,117,201,243, 95,161, 89,246,189, 79,100, 50,217,178,117,235,214,173,144, 72, 36,161,153,
+153,153, 23, 94, 71,179,204, 60,189,109, 99, 99,227,188,117,235,214, 61, 27, 55,110,108,193,231,243,175, 17, 66, 6,228,231,231,
+215,229,101,207,209,175,185,189, 38,246,253, 5,197,254,181, 53, 77,121,253, 77,173, 30, 38, 13, 6,229,204,153, 51, 51, 95,125,
+231, 96,197, 57,175, 42,254,213,106,181, 37, 38,104,178, 95,124,241, 69,181, 15,113, 21,141, 86, 73, 73, 73,141, 77,186,148,165,
+217,221,223, 29, 95,187, 58,146,165,217,127, 99, 21,119, 8,192,211,178,133, 86,179,173, 86, 89, 2,112, 22, 64, 60,165, 52,254,
+ 21,221,138,235, 57, 56,222,140,193,138,140,140, 76, 2, 48,252, 77,254, 88,215,174, 93,207, 0,240,127,147,154,119,239,222, 77,
+ 0, 48,244, 77,233,237,208,104, 98, 1,244, 28, 67,136, 96, 59,173, 58, 34, 85,214,161,189,223,223, 57,138,176, 42, 42,235,248,
+254,186, 84,214,241,189, 22, 55,155, 19, 98,177,152, 20, 22, 22, 66,167,211,161,168,168,232,133,185,170,104,178, 12, 6, 3, 8,
+ 33, 40, 42, 42,130,153,153, 25,244,122,125,173,158, 20,203, 76,202,174,136,136,136,189,231,207,159, 55,188,137,124,255, 21,154,
+ 42,149, 42, 29,192,123, 17, 17, 17,252, 55,165,153,147,147,147, 10,160,165,151,151,151,200,212, 40, 88,117,145,172,186,110, 55,
+129, 31,254,130, 34,255,243, 63,173, 98,141,143,143, 15,120,211,154,137,137,137,143,222,120, 58,175,109,155,252, 47,185, 87,209,
+ 50, 51,186, 53, 49, 49,177, 30, 33, 36,241, 85,131, 85,221,182,234, 52, 1, 64, 36, 18, 29, 72, 74, 74,114, 22,139,197,169,166,
+172,231,224, 48, 5, 82,151,176,183,201,226, 92,251, 52,167,201,105,114,154,156, 38,167,201,105,114,154,117,255,157,209, 21,231,
+193,250, 55,241, 31,154, 54,142,131,131,131,131,131,131,131,227,159, 1, 1, 16, 84,217,134,218, 56, 83, 66, 72, 80,109,127,184,
+ 38,125, 78,147,211,228, 52, 57, 77, 78,147,211,228, 52,255,123,154, 53,105,191, 50, 34,247, 95, 27,193,226,154, 8, 57, 77, 78,
+147,211,228, 52, 57, 77, 78,147,211,252,219, 53,171,248, 29,174,137,144,131,131,131,131,131,131,131,131,163, 20, 62,119, 8, 56,
+ 76,193,213,213,117,105,243,230,205,199,223,188,121,243,235,196,196,196, 5,117,212,112,182,177,177, 89, 12,160, 37,165, 84,204,
+227,241, 30,101,103,103, 47, 73, 74, 74,186, 84,215,116, 57, 59, 59,187,217,217,217, 45, 6,208,130,101, 89,161, 64, 32,136,202,
+200,200, 88,148,146,146,114,173,174,154,118,118,118,114, 39, 39,167, 80, 74,169, 61,165,148, 17, 8, 4,121, 41, 41, 41,119, 51,
+ 51, 51, 51,185,146,192,193,193,193,193,241,218, 6,107,254, 4,226, 4, 29,248,115,215,211, 36, 0, 32,132,152,163,116,210, 53,
+127, 0,143, 1,220,162,148,190,214, 43, 3,254, 45,154,255,116, 8, 33,140,165,165,101,103,153, 76,246,137, 82,169, 12, 54, 55,
+ 55,143, 42,123, 61,206,225,178,201, 51,235,140,189,189,189,253,187,239,190, 59, 99,205,154, 53, 24, 49, 98,196,231,182,182,182,
+171,106, 59,111, 83, 64, 64, 64,111, 23, 23,151,245, 11, 23, 46,178,107,214,172, 25,145, 72, 36,136,141,141,117,153, 61,123, 86,
+211,166, 77,155,238,185,125,251,246, 71,181, 77, 87,195,134, 13, 7,184,187,187,175, 93,178,100,137, 93,104,104, 40,225,243,249,
+184,127,255,190,235,252,249,243,155, 5, 7, 7,111,189,115,231,206,148,218,106, 6, 5, 5,121,122,121,121,181, 92,180,104,145,
+164, 89,179,102, 16,139,197,120,244,232,145,124,214,172, 89,118, 77,155, 54,125,122,251,246,237,235,181,209, 11, 25,115, 91, 32,
+148,233,248, 0,160, 83, 9, 13,145,235,155,234, 77, 93,199, 85, 79, 28, 28, 28, 28,255, 65,131,181, 96, 28, 89,192, 0,179,192,
+128, 76, 26, 76,118,175,219,205,220,232,216,177,163,223,200,145, 35, 73,217,171, 35, 2,118,237,218,245, 54,143,199,123,194,178,
+236,117, 0,119, 41,165, 58, 19,205,128, 16, 64, 19,134, 97,154,255,147, 53,255, 13, 40, 20, 10,111, 59, 59,187, 41, 54, 54, 54,
+221, 66, 67, 67, 11,199,142, 29, 27,127,237,218,181,184,176,176,176,146,141, 27, 55, 46,209,235,245,223,249,248,248,156, 42, 42,
+ 42, 90, 81,215,121,177, 4, 2,129, 63, 33, 4, 41, 41, 41, 16, 8, 4, 2,145, 72, 20, 0,192,100,163,225,230,230,230,228,236,
+236,252,195,238, 3, 39,236, 11, 53, 12,158,102,177, 0, 84, 48, 50,182, 88,184,124,157,205,138,197,159, 15,246,241,241,185, 28,
+ 19, 19,243,139,169,154,206,206,206,110,238,238,238,107,207,158, 61,107, 47, 22,139,193,178, 44,138,138,138, 96,111,111,143,165,
+ 75,151, 90, 47, 92,184,112,164,167,167,231,197,231,207,159, 31, 50, 85,211,206,206, 78,238,229,229,213,242,220,185,115, 18,145,
+ 72, 68,244,122, 61,209,104, 52,112,116,116,164, 43, 87,174, 20,207,158, 61,219,215,211,211, 51,253,249,243,231,137, 38,153,171,
+ 31,111, 11, 10,179,207,133,211, 36,245,231, 0, 64, 36,210, 69, 17,243,173,111, 20,102,159,107, 86,211,186,144, 31,113, 53,114,
+ 52,103,178, 56,254,183, 56, 59, 59,183,242,244,244, 60,144,152,152,120,133,199,227, 13,140,143,143,215,188,174, 38, 33,196, 21,
+128, 39, 0, 43,148, 14,172,202, 69,233,228,157, 73,117,213,180,245,106,223, 11, 98,217,112, 80,218,132, 1, 0,134,185,203,234,
+138, 55,103, 71,159, 59,244, 90,154, 18,249, 8,176,108, 19, 6,148, 5,195,187, 71, 13,197, 63,101, 61, 62,119,140, 43, 25, 28,
+111,204, 96,205,255,144, 88, 49, 2, 76,159, 57,118, 52,195,231,241,200,146,245, 63, 14,186,121,229, 16,117,170,215,228,197, 43,
+ 55,218,180,105,131, 54,109,218,144,229,203,151,251,159, 61,123,214,127,199,142, 29,122, 66, 72, 36,165,116, 75, 85, 63,182,116,
+162, 44,209,160, 87,187, 45, 24, 47, 45,241,104,241,221,142,150, 45,219,176, 98,177, 24,175,163, 9, 0, 31, 13, 16,156, 26, 49,
+192,147, 68,244,156,147,240,166, 52,255, 37,230,234,130, 66,161,240, 26, 51,102,204,211,113,227,198, 93,148,203,229, 20, 0, 50,
+ 51, 51,229, 61,122,244,200,235,219,183,111,142, 74,165,194,247,223,127,239,182,118,237,218, 83,230,230,230, 41,133,133,133,205,
+106, 81, 49,242,157,156,156,150,117,234,212,105,242,123,239,189, 7,133, 66,129, 97,195,134, 65,163,209, 92,113,118,118, 94,158,
+150,150,246, 57,165,180,198,119,103, 88, 89, 89,205,157, 63,127,190,189, 82,203,195,231,219, 98,145,171, 44,245, 13, 50, 17,131,
+143,222, 18,227,253,247, 63,176,184,115,231,206,114, 0, 38, 27, 44, 59, 59,187,197, 75,150, 44,177, 43, 63,215, 74,165, 18, 74,
+165, 18, 69, 69, 69, 80, 42,149,120,239,189,247,204,159, 62,125,186, 26,165,179, 59,155,132,147,147, 83,232,162, 69,139, 36, 34,
+145, 8,135, 14, 29,106, 92, 82, 82,194,215,235,245,160,148, 26,252,252,252,238,126,240,193, 7,194,152,152,152,112, 0, 38, 25,
+ 44,167,116, 8, 10,212,234,111,191,249,242, 51, 59, 0,248,120,250, 87,223, 2,234,230,212,132,117, 78,233, 8, 3,192, 25,172,
+234,203, 39, 15, 64, 63,129, 64,208,223,203,203, 43,244,233,211,167,119, 12, 6,195,175, 0,126,165,244,245, 38,255, 37,132,188,
+229,236,236,188, 56, 53, 53,245, 27, 74,233,246,255, 47,199,180, 65,131, 6,251,119,236,216, 97,115,244,232,209,222, 11, 23, 46,
+124, 23,192,214,215, 56,134, 2, 0,225,101,166,234,113,153,177, 66,153,209,242, 35,132, 52, 0,240,123,109, 30,120,109,125, 91,
+153,129,111,190, 43,188, 67,215,214, 3,222,238,171,176,179,182, 64,177,198,136,152,248,244,122, 39,143,238,111,231, 24,212,227,
+138, 65, 87, 48, 40, 59,250,119,101,109, 53,219,119,235,221,186,195, 91, 29, 21, 22, 22,150,200, 41,210,227, 89,124,178,251,133,
+ 83, 7,219, 56, 4,245,184, 8,162, 31,154,113,255,164,138,187,234, 56,106, 3, 99,226,133, 2,185,153,188,210,109, 22, 22, 22,
+136,136,136,192,146, 37, 75, 4, 0, 90, 84,220,246,234, 8, 3,163, 81,235,244,249, 71, 19, 32,226, 83,113,143,110, 93,136,185,
+185,249,107,107, 2,128,131,181,161, 99,115, 95,117,187,140,187, 19,135,220,189,176, 56, 72, 91,146,255,167, 55,157,202,100, 50,
+120,123,123, 99,246,236,217, 38,105,190, 46,255, 11, 77, 74,169,115, 64, 64, 64,209,170, 85,171,124,231,204,153, 99, 85, 82, 82,
+ 34, 7,224, 26, 16,220,202,153, 97, 24, 55,173, 86,171,152, 55,111,158,237,151, 95,126,233,107,103,103,151, 79, 41,181,171, 77,
+ 58,157,156,156, 86, 45, 89,178,100,202,230,205,155, 73, 88, 88, 24, 20, 10, 5,194,195,195,177,109,219, 54,102,238,220,185, 51,
+156,156,156,150,153,152,247, 54,205,154, 53, 35, 44,128, 60,165, 1,231,150,134,224,247,175,194,160,210,178, 40, 40, 82, 66,173,
+ 86, 67, 34,145, 72,109,109,109,205,106,113, 60, 91,132,134,134, 18, 0, 47, 76, 85, 81, 81,233,162, 84, 22, 67,171,213,129, 97,
+ 24,115, 15, 15, 15,113, 45,142,167,125,179,102,165,254,179,164,164,132,223,187,119,111,244,236,217, 19, 69, 69, 69,252,194,194,
+ 66,104,181, 90, 48, 12, 35, 44,187,177,215,168,169,149, 9, 8, 75, 89, 7,185, 76,106, 43,151, 73,109, 89,202, 58, 0,128, 41,
+235,180, 50, 1,249, 59,203, 39, 33,196,142,199,227,109,242,242,242,122,196,227,241,182, 18, 66, 28, 95, 71,147, 16, 18, 70, 8,
+ 89, 34,147,201, 78, 7, 4, 4, 36,201,229,242,179,132,144,101,132,144,240,186,104, 18, 66, 68, 50,153,236,236,146, 37, 75,246,
+220,185,115,231,221, 51,103,206,120,222,191,127,255,237,229,203,151,239, 50, 51, 51,187, 72, 8,145,190,206,181,233,233,233,185,
+241,250,245,235, 97, 45, 91,182,220, 64, 8, 17,191,137,235,157, 16,194, 35,132, 4, 19, 19, 95, 60,248,191, 62,239,174,174,174,
+ 94,193,193,193,182, 60, 30, 15,109,218,180, 1,165,180,205,107,106,182, 4,144, 78, 41,189, 64, 41,205,162,148, 26,203,150,108,
+ 74,233,165,178, 7,149, 54,181,210,228,155,239,250,228,211,105, 93,167, 78,248, 80,113, 59,193,136,159, 78,166, 97,247,229, 44,
+164, 20,137,209,169,207, 8,139,118,221,223,235,194, 23, 90,236,170,173,230,140, 25,179,186,126, 56,108,136,226, 65, 42,131, 61,
+191,103,227,242,227, 66,168,136, 21, 34,250,140,182, 10,104,214,173, 7,129,112,203, 63,225, 28,253,215, 53,255, 95, 68,176,230,
+110,160,121, 11,198,145, 47,151,124,255,227,231, 12, 33,212,213,167,203, 67, 79,239, 22,197, 44,203, 66,173, 86, 67,167,211, 65,
+ 32, 16, 64,173, 86, 35, 33, 33, 1,215,175, 95,135,133,133, 69,173,126, 56,191,160, 0, 46,174,158,144,201,100,111, 68,115,212,
+ 59,125,249,137,105,105,252, 43,183,207,133,252,178,102, 71,136, 91,131, 78,143,155, 68, 76,123, 96,102, 81, 79,125,247,238, 93,
+ 92,189,122, 21,121,121,121, 40,191,129,254, 71,158,224,245, 43, 86,172,184,157,154,154,138, 75,151, 46, 5,207, 95,253,179,199,
+131,194, 6,252, 44, 37, 21,216,153,101,184,251, 75,163,141,121,185,185,113, 83,166, 76, 57,235,228,228,164,157, 48, 97, 66, 59,
+ 83,116, 93, 93, 93, 37,132,144,144,238,221,187,127,244,193, 7, 31, 32, 62, 62, 30, 83,167, 78,213,222,189,123, 55, 63, 36, 36,
+196,106,197,138, 21,194,209,163, 71,227,202,149, 43, 83, 92, 93, 93,247, 2,136, 74, 78, 78,174,238, 93,106, 34,137, 68, 2, 20,
+148, 62,168,234, 12, 20, 0,251, 34,242,196,208,124, 8,133, 66,134, 97, 24, 59, 0, 38, 61,121,178, 44, 43, 20,137, 68, 40, 46,
+ 46,134, 82,169, 68, 74,150, 18, 9, 25,197, 40, 42,214, 64,173,214, 67, 83, 66, 33, 86, 56, 48,250,172, 44, 27, 0, 41, 38, 86,
+ 24, 76,121,115,163, 86,171,133, 90,173,134, 86,171,133, 86,171,125,241, 58, 31, 30,143,167,112,113,113, 49, 7,144, 87,147, 30,
+ 79, 36, 53,240, 24,225,146, 89,139,190,157, 7, 0, 60, 70,184,196, 12, 37,172, 41,235,120, 34,169,225,111, 44, 87, 98, 59, 59,
+187,115,123,246,236, 9,240,246,246,198,243,231,207,253, 7, 12, 24,208,156, 16, 18, 76, 41, 85,213, 82, 75,198, 48,204,151,195,
+135, 15, 31, 63,120,240, 96,226,227,227, 3, 62,159, 15,131,193,224, 26, 27, 27,219,126,247,238,221,211,249,124,254, 79, 70,163,
+113, 10,165, 84,105,162, 38, 35, 18,137,126, 89,191,126,125,219,230,205,155, 99,235,214,173,184,113,227, 6, 27, 22, 22,198,188,
+255,254,251,112,119,119,111,241,254,251,239,239, 35,132,244, 52, 37,194, 90,137,190,251,144, 33, 67,220,120, 60, 30, 90,182,108,
+ 41,188,114,229, 74, 83, 0, 87, 94,243,152,154,185,186,186, 94,136,136,136, 8, 62,125,250,244,109, 66, 72,132,169,249, 5, 0,
+103,103,231, 62, 14, 14, 14,203, 21, 10,133,149,169,223, 81, 42,149,170,140,140,140,169, 41, 41, 41,123, 77, 44,255, 45, 27, 53,
+106, 4,131,193, 0, 11, 11, 11, 56, 58, 58,182,118,113,113,153, 98, 97, 97,209,175,176,176,112,114,114,114,242,141, 90,228,215,
+ 5, 0, 67, 41,125, 90,246,217, 3, 64,249,107,150,162, 41,165,207, 41,165,113,132, 16,103, 66,136,155, 41,205,133,182, 94,237,
+123,181,236,216,189,117,155,230, 65,204,210,189,241, 48,178, 44,248, 48,130,207, 99,145,109, 20,128, 16, 2,119,223, 48,158,195,
+131, 91, 45,108,125, 59,245,202,142, 62,117,200, 20,205,174,189,251,182,241,243,245, 97,190, 62,144,136,252,148, 7,198,140,199,
+103,179, 9,195,160,126,147, 78,182,238,190,193, 60,175,224,183, 4, 25,241, 15,218, 91,123,183,235,152,251,244,194,105,206, 54,
+112,212,218, 96, 17, 66, 40,165,244,197,147,213,156,239,233, 28, 91, 43,226,241,240,193, 61, 38, 41, 93, 91,124,239,222, 61,216,
+216,216,192,222,222, 30,230,230,230,120,242,228, 9, 78,159, 62,141,232,232,104, 80, 74, 17, 28, 28, 92,171, 31,206, 72, 79, 71,
+ 78,110,209, 27,213,172,231,228,132,122, 78, 78,252,236,188,124, 92,189,119, 63,224,208, 79, 29,253, 50,152, 49,155,213,106,245,
+139,125,244,250,255, 94,171,139,189,189,189,241,227,143, 39,228,140,250, 54,174,193,160, 14, 46,188, 62,225,142, 56,112, 37,141,
+183,235, 60,143,126, 62,178,113,118,108,108,140,201,153,118,119,119, 95,220,190,125,251,207,248,124,190, 96,244,232,209, 0,128,
+137, 19, 39,106,238,223,191, 31,152,148,148, 20,231,228,228,228, 55,121,242,228,251,251,246,237, 19,124,248,225,135,164,164,164,
+228,134, 64, 32,160,206,206,206, 11, 82, 83, 83,231, 85,106, 52,120,188, 59, 15, 31, 62,244, 48, 72,156, 97,171, 96,208,229,243,
+219, 0, 0, 51, 49, 69,118, 70, 10,162, 98,111,194,206,206,206,194,214,214,246,113,171, 86,173, 52, 25, 25, 25,159, 60,123,246,
+108, 75,117,233, 20, 8, 4, 81,247,239,223,119,117,112,112,128, 82,169, 68, 82,102, 49, 54, 93, 37, 80,105,164, 0,164,224, 65,
+ 1,133,173,155,162, 62, 85,221, 13, 10, 10,210,105,181,218, 25, 49, 49, 49,219,107,208,204,123,244,232,145,220,197,197, 5, 60,
+ 30, 79,183,123,247,110,161, 86,171, 5,165,212,112,244,232,209,129,249,249,249, 45, 27, 52,104,192,184,187,187,175,104,213,170,
+149, 58, 45, 45,109,212,243,231,207,171,124,209,240,241,137, 94,186,118,243,206,127,151,255, 60,105, 55, 0,184, 52, 15,200, 61,
+ 60,175,169,182,221, 60,101,141,235,142, 79,244,210, 97,194,223,246,234,179,225,179,102,205, 10,176,182,182,198,216,177, 99, 49,
+127,254,124,204,153, 51,199,123,236,216,177,163, 1,172,170,197, 77, 86,234,232,232,120,115,205,154, 53,254,173, 90,181,194,209,
+163, 71,177,115,231, 78,196,197,197, 25, 60, 61, 61,249,205,155, 55,199,220,185,115,209,165, 75,151, 81, 19, 38, 76,104, 71, 8,
+105,106,162,233, 24, 49,119,238,220, 62,173, 91,183,198,176, 97,195, 52,231,207,159,127, 23,192,201, 83,167, 78,117,184,112,225,
+194,222,159,127,254, 89,186,100,201,146,174,147, 39, 79, 30, 7,224,155, 58,228,191,111,219,182,109, 1, 0,173, 91,183,198,242,
+229,203,187,188,142,193, 34,132,136,108,108,108,142,108,221,186, 53,216,215,215, 23, 67,135, 14,109,250,238,187,239, 30, 33,132,
+116,162,148,154,244,222, 72, 39, 39,167, 47,215,175, 95,239, 37,149, 74, 77,254, 93,173, 86,107, 61,102,204,152,101, 0, 76, 54,
+ 88, 65, 65, 65, 56,127,254, 60, 58,118,236,136,134, 13, 27,122,141, 25, 51,102, 69,151, 46, 93,240,233,167,159, 94,118,116,116,
+116, 78, 79, 79, 55,245, 69,207,238, 0,158,148,229,191, 30, 0,111, 0,191,151,109,107, 78, 8, 1,165,244, 57, 74, 95, 30,238,
+ 7,160,230,254, 88, 18,249,240,222, 61,123, 42,126,189,146, 9, 35,203,194,223, 69,130,128,122,230,136,207, 44, 65,124, 74, 14,
+ 4, 68, 7,133, 84,140, 70, 45,123, 88,229,102,196, 15,135, 41,221, 3,196,178,225,125,123,247, 52,219,127, 53, 19,249, 41, 81,
+ 52,225,230,238,179,250,146,226, 81, 0,240,240,226,246, 31, 28,172, 36,157,124,154,132,240, 84,109,250, 88, 93, 56,240,253,112,
+ 0,156,193,250,235, 31,240, 94,242, 34,255,185, 8, 86, 57, 57,249, 80,219, 56, 6, 32, 41,253, 78,233,231,156, 28,228,228,228,
+160,126,253,250, 88,187,118,237, 75,251,150,148,148,212, 41, 1,127,133,166,173,149, 37,122,183,111,199,123,240,228,123,158,154,
+ 85,191, 17,205,127, 42,148, 82, 74, 8, 33, 9,217,122,203,236, 66,189,112, 96,123, 55, 42,224, 49, 24,212,190, 30,249,230, 80,
+130, 48, 91, 45,179,228,241,120,140, 41, 79,242, 33, 33, 33,130,246,237,219,127,182,113,227, 70, 65, 90, 90, 26, 44, 45, 45,161,
+215,235,113,231,206,157,212,212,212,212, 56, 0, 72, 75, 75,123,226,234,234,154, 97, 52, 26, 93,253,253,253, 49,102,204, 24,248,
+249,249,145, 41, 83,166, 76, 39,132, 44,168,108,196, 98, 70, 70,198,146,217,179,103,183, 93,188,124,173,205,144,230, 4,197, 42,
+ 45,148, 74, 37,226, 99,162, 64,149, 90,124,253,245, 74, 72,165, 82, 2, 64,152,149,149, 37,156, 55,111,238,134,208,208,208,158,
+183,110,221,234, 95,165, 65,207,200, 88, 52,119,238,220,102, 95,127,253,181,181, 82,169,132,186,164, 4, 69,106, 17,174,175, 44,
+141, 80, 54,159,124, 3,223,124,181,130, 9,114,151,219, 40,149, 74,124,246,217,103,107,130,131,131, 91,220,185,115,103,124, 85,
+154, 41, 41, 41,119,103,205,154,101,183,110,221, 58,177,159,159,223,253,194,194, 66,228,229,229, 49,251,246,237, 91,232,238,238,
+110,189,102,205, 90, 34,147,201, 0, 0, 73, 73, 73,194,207, 63,159,253, 75,163, 70,141,126,190,127,255,254,176,170,206, 13, 0,
+ 13, 33, 72,115,118,174,239,165,186,202,204,115,118, 46,185,124,126,110,202, 54, 66,144, 86,186, 15,168,211,122,167, 33,137, 91,
+197,173, 53, 26,118,117,122,122, 66, 52,165,160,152,251,247,189, 87,214,214,214,118, 66,159, 62,125,176,108,217, 50, 28, 58,116,
+104,178,181,181,245,202,249,243,231,195,217,217,249, 99, 66,200,106,106,250,236,196, 95,173, 90,181,202,223,223,223, 31, 31,124,
+240,129,246,244,233,211,179, 0, 28, 0,144,112,233,210,165,122, 91,182,108,233,245,203, 47,191, 44, 91,179,102,141,100,221,186,
+117, 94,111,191,253,246,106, 0, 35,107, 18,117,112,112,248,116,240,224,193, 88,177, 98, 5,206,159, 63,255, 54,165,244,104,217,
+166, 99,132,144, 94, 75,150, 44, 57,243,249,231,159, 99,213,170, 85,147,106,107,176, 8, 33,102, 1, 1, 1, 95,116,237,218, 21,
+151, 46, 93, 66,155, 54,109, 16, 30, 30, 62,153, 16,178,150, 82,154, 93,135,155, 5, 99,102,102,246,203,230,205,155,219,120,120,
+120, 96,209,162, 69,248,236,179,207,176,113,227,198, 54, 67,135, 14,253,133, 16,210,223,148, 81,190,102,102,102,102, 82,169, 20,
+203,150, 45,163,137,137,137, 53, 70, 79,157,156,156,172,190,248,226, 11, 98, 97, 66, 51, 0, 33,132,231,236,236,108,225,232,232,
+216,214,209,209, 17,107,214,172,129,189,189, 61, 38, 79,158, 12, 27, 27, 27, 20, 23, 23,163,127,255,254,130,107,215,174, 13, 2,
+176,214,196,172,219, 0, 40,143,120, 5,160,180,175, 85, 81,217,239, 93, 3,208, 26,192,115,148,246,203,178, 54, 69,144,161, 52,
+200,202,210, 28,169,247, 51,192,135, 1,254,245, 20,184, 21, 91, 12,157,145, 66, 38, 55, 67,113, 81, 62,154,120,217,161, 80,229,
+ 10,128, 53,105,246,113, 33,143, 9, 17,137,165,200, 44, 44, 64,250,163, 51, 57, 58,163,102, 76,126,220,229, 36, 0,176,110,208,
+118, 76,212,245,227,183,250,119,107, 99,159,149, 87, 15,148,178,205,192,193, 81, 11,106,236,131,197,178,127,190,246, 43, 70,132,
+202,209,233, 94,111, 96,222, 95,161, 89, 25,127,133,230, 63,193,103,185, 88,241, 11,228, 18,198,112,234, 86,166, 81,111, 48,226,
+196,173,116,163, 76, 76, 12, 86, 98,109, 33,203,178, 38,221, 16, 35, 35, 35,245,151, 46, 93,218, 58,115,230, 76,172, 90,181, 10,
+207,158, 61,131, 64, 32,128,175,175,175,131,155,155,155, 19, 80, 58,122,175, 97,195,134,182, 60, 30, 15,177,177,177,216,185,115,
+ 39,230,205,155, 71, 35, 35, 35, 55, 86,117,163, 72, 77, 77,189,147,145,145,177,126,233,130, 89,249, 2, 77, 42,100,198, 44, 24,
+243,159, 65, 96, 44,192,132,201, 51,241, 60,219,136, 59,207,139,112,231,121, 17,210,213, 18,124,177,232,107,158,183,183,119, 47,
+ 87, 87,215, 46,213,152,161,107,105,105,105,219,230,204,153, 83,144,157,157,253,162,252,232, 12, 44,116, 6,246,213,155, 19,150,
+ 46, 93,106,233,228,228, 52,208,197,197, 37,162, 42,205,204,204,204,204,212,212,212,216,153, 51,103,234,178,178,178, 80, 88, 88,
+136,227,199,143,191, 93,191,126,125,235, 41, 51, 23,144,231,217,244, 69, 58, 11, 88, 75,172, 88,251, 19,175, 65,131, 6,239, 57,
+ 59, 59, 87,219,143,200,217,217,197, 43, 32,160,193,158,107,215,174, 13,243,242,242, 26, 95,110,172, 40, 5, 5, 0, 79, 79,207,
+177,145,145,145, 35,130,131, 3,247, 56, 56, 56,250,253,205, 79,143,237, 7, 14, 28,232,199,178, 44,246,236,217,115,159, 82,186,
+106,255,254,253, 55, 53, 26, 13, 6, 13, 26,228, 9,160,171,137, 58, 97,239,189,247,222,248, 54,109,218, 96,210,164, 73,186,211,
+167, 79,135, 80, 74, 87, 82, 74,227,105, 41, 9,148,210,181, 23, 46, 92,104, 50, 97,194, 4, 77,179,102,205, 48,108,216,176, 17,
+132,144, 54, 53,232,182, 28, 60,120,176, 63,203,178,216,181,107,215,189, 10,230,170,220,212,158,221,187,119,239, 53,173, 86,139,
+ 33, 67,134,212, 39,132,116,168, 69,222,133, 98,177,120,207,194,133, 11, 45, 83, 82, 82,240,254,251,239,107,158, 60,121,130,121,
+243,230, 73, 45, 44, 44,142, 18, 66,204,106,123, 60,197, 98,241,143,223,127,255,125,159, 70,141, 26, 97,220,184,113,218,239,190,
+251,110,226,248,241,227,181, 33, 33, 33,248,246,219,111,251,136, 68,162, 90,205, 80,157,145,145,145,127,254,252,121,155,154,150,
+244,244,244, 12,147,162,254,245,234, 89, 54,108,216,240,126, 88, 88, 88,118,227,198,141, 27, 0, 64, 84, 84, 84,214,158, 61,123,
+168,141,141, 13,142, 31, 63,142, 31,127,252, 17,173, 90,181,130, 66,161, 24, 84,155, 58,169,108, 65,133,191,175,110,127,117,191,
+154, 78, 16, 45, 80, 25,192,103, 24, 8,120, 20, 9, 25, 37,208, 25, 41,132, 2, 6, 2, 30,192,103, 40,108, 20, 2, 8, 4, 60,
+ 0,196, 36, 77,134, 16,228, 21,235,193,231, 17, 8, 68, 66,194, 24,140, 47, 66,132, 12,223, 40, 21, 75,196,196,222, 66, 8, 33,
+159,128, 16,112,112,188,185, 8, 22, 0, 24,141,127, 14,124, 84, 22, 5,210,106,181,175,149,144,191, 66,179,138,176,249,127,234,
+ 4, 22, 22, 22,242, 47, 92,184, 96, 33, 16, 8,228, 61, 27,181,202,249,114,119,140,237,252, 29,209, 16,241, 64,122, 53,102,210,
+206,159, 59, 77,242,242,242,172,188,189,189,243, 76,209,123,246,236,217, 40, 39, 39,167, 69, 12,195, 52, 51, 26,141,187, 87,173,
+ 90,133,111,190,249, 70, 54,118,236,216, 39,206,206,206, 41, 62, 62, 62,110,171, 87,175, 22, 3,192,182,109,219,112,226,196,137,
+190, 2,129,224, 70, 66, 66, 66,122,117,186,119,239,222,253,220,221,221,253, 74, 92, 92,220, 90, 66,136,165, 66,161,176,218,191,
+127, 63, 73,203,215,226,243,109,207, 94,140, 44,148,139,121,152,217,207, 14,239,188, 51,128,255,244,233,211,175, 0,156,168, 74,
+243,246,237,219,147, 61, 61, 61, 47,196,196,196,172, 18,218,248,218, 72,130, 70, 43, 58,204, 44,109,126,116,178, 22,131, 41,171,
+ 16, 11, 10, 10,144,157,157,141, 17, 35, 70, 88, 46, 94,188,120, 58,128,243, 85,105,222,185,115,231,154,167,167,103, 90, 76, 76,
+ 76, 11, 74,169,200,194,194,162,213,170, 85,171, 72, 66,174, 22, 51,182,196,162,168,164, 52,157, 10,137, 0, 11, 6,187, 98,216,
+176, 97,252,231,207,159,127, 89,246, 68,254, 39, 92, 92, 92,188, 3, 2, 2,246,236,216,177, 35, 96,245,234,213,185, 79,159, 62,
+ 45,118,118,118,158,255,202,110,154,165, 75,151,230,108,219,182,205,247,253,247,223,223,227,232,232,248,110, 93,167,212,120, 93,
+204,205,205,151,141, 25, 51, 6,191,252,242, 11,242,242,242, 86,151,149,177, 85, 59,118,236,216, 53,106,212, 40,108,219,182,109,
+ 25, 33,228,184, 9, 81,172,110,131, 6, 13,194,177, 99,199,112,230,204,153, 47, 40,165, 15,171,136,242,197, 16, 66,166, 31, 60,
+120,112,205,224,193,131,177,105,211,166,174, 0,170,155,120,182, 83,151, 46, 93,112,244,232, 81,228,228,228,124, 91,217, 14,249,
+249,249,223,253,246,219,111, 45,186,116,233,130,165, 75,151,118, 2,112,214, 4,115,229,111, 97, 97,177,121,205,154, 53, 97,141,
+ 26, 53,194,123,239,189, 87,162,211,233,186,126,246,217,103,135,118,238,220,169,216,186,117,107,232,232,209,163,175, 19, 66, 62,
+164,148,154, 52,137, 45,143,199, 91,178,110,221,186,145, 17, 17, 17,152, 60,121,178,225,196,137, 19,189, 41,165, 39, 9, 33,177,
+211,166, 77, 59,242,245,215, 95,243, 86,172, 88, 49,146,199,227,101, 25,141,198, 89,127,147,161, 94,241,245,215, 95, 7, 4, 6,
+ 6,162,164,164, 4,207,158, 61, 67, 70, 70,198,142,227,199,143,159,124,240,224,193,242,244,244,244,125, 14, 14, 14,163, 38, 79,
+158,236, 26, 22, 22, 22,230,234,234,106,149,156,156,108, 74, 93, 82, 30,153,202, 4,240, 8, 64,139,178,200, 21, 0, 52, 71,105,
+211, 32, 80, 58,162, 48,207,196,196,222,143,121,158, 82,223,202,204, 28,121,172, 8,207, 83,178, 33,149,203,193, 80, 6, 6,117,
+ 30,188,221,237,193, 82,160, 48, 59, 5, 12, 67,238,155, 34,169, 55,178,145,241, 73, 25, 46,150,114, 9,188, 67,186,219,220, 59,
+187,105,187, 69,131,214,163,249, 60,194, 19,138,205,215,191, 55,248, 3, 91,189,145, 66,153,151, 6,194, 99,110,128,131,227, 77,
+ 26, 44,150,101, 33,149, 74, 95,138, 48,189, 26, 5,146, 74,165,208,104,106, 55, 93,138, 84, 42,133,206,128, 55,170,105,202,111,
+190,105,205,191, 19,189, 94,175, 24, 63,126,124,235, 22, 45, 90, 36,117,235,214, 45,214,223,223, 46,190, 71, 75,137,237,186,141,
+ 7,131,187,181,107,120,167, 48, 55, 35, 43, 65, 44, 46,201,203,203,179,217,182,109, 91, 83,189, 94, 47, 51, 69, 55, 45, 45, 45,
+ 17, 64,162,139,139, 75,143,246,237,219, 15,237,217,179, 39, 46, 94,188,168, 40, 46, 46,246,151,203, 75, 71,147,238,219,183, 15,
+191,253,246,219, 79,169,169,169, 7, 77, 77,111, 66, 66,194,113, 0, 94,245,234,213,179,172, 87,175, 94,134,165,165,165, 48,165,
+168,248,197,200, 66, 33,159, 65,171,207,110, 34,191,176, 8,150,150,150,144,201,100,158, 53,105,150,205,115,117,168,217,192,133,
+141,120,113, 59, 46,172, 91,179,218,162,252,201,212,193, 82,136,252,252,124,100,103,103, 35, 43, 43, 11,148, 82, 24,141,198, 0,
+ 19, 52, 19, 1, 36,218,218,218, 58,121,123,123, 19, 51, 51, 51,208,220, 98,228, 41,117, 47, 53, 65, 22, 41,139,225,226,226, 2,
+133, 66, 81,105,115,132,181,181,181, 66, 44, 22,111,217,176, 97,131,191, 66,161,224,141, 26, 53,202,114,212,168, 81,173,171, 50,
+ 99, 50,153,140,183,105,211, 38,159,224,224,224,205, 30, 30, 30,157,226,227,227, 11,254,135, 55, 90, 30,128,177, 83,167, 78, 13,
+149, 72, 36,248,230,155,111,226, 0,252, 92,182,121,207,119,223,125, 55,103,240,224,193,126, 19, 39, 78,108,248,249,231,159, 79,
+ 46,107, 42,172,178,217, 89, 40, 20,134, 4, 4, 4, 96,255,254,253, 0,176,191,134,159,223,123,229,202,149, 53, 61,123,246,132,
+ 68, 34, 9,171, 97, 95, 79, 55, 55, 55, 28, 60,120, 16, 0,238, 84,229,147,159, 60,121,130,254,253,251,131, 16,226,105, 66,222,
+251,116,238,220,121,239,210,165, 75,249, 10,133, 2, 35, 71,142,212, 94,191,126,189, 59,165,244, 34, 33,164,253,144, 33, 67, 46,
+252,252,243,207,242, 11, 23, 46,248, 47, 94,188,248, 10,143,199, 91, 98, 52, 26, 63,175, 65,115,196,162, 69,139,102,246,237,219,
+ 23,243,231,207,167,187,119,239,126,143, 82,122,178,204, 84,158, 32,132,188,111,101,101,245,243,236,217,179, 73, 65, 65,193, 76,
+ 66, 72, 50,165,244,251,170,244, 84, 42, 85,129,209,104,116, 84,169, 84, 38, 61, 33,154,186,127,253,250,245,187, 5, 6, 6,226,
+224,193,131,232,213,171, 23, 78,157, 58, 5,134, 97,142,164,164,164,156, 3,112, 18, 0,156,156,156, 44, 98, 99, 99, 39,183,105,
+211,134, 57,125,250,116,127, 0, 63,153,144,132,231, 0, 26, 1, 56, 69, 41, 77, 42, 27, 56,217, 18,165, 83, 54, 60,162,148,150,
+ 79,117, 18, 4, 32,214,148, 60,177, 90,229,214, 51, 71,247,182,239,244,246,120, 11, 30,143, 1, 31, 66,168,138, 10, 1,163, 17,
+ 94,238, 14,104, 22,224,128,123,241,106, 92, 57,189, 39, 95,165, 84,153, 52,189,132, 81, 87,188,249,204,241,131,237,194, 58,127,
+ 96, 33,246, 10,132,155,195,164,224,168, 27, 39, 79,137, 69, 66,242,246,219, 3, 44,219, 55,243,198,153,251,133,184,118,230, 64,
+158,170,168,112, 51,103, 25, 56,234,100,176,170,232, 84,150, 57,121,242,100,251, 41, 83,166,192,220,220, 28, 57, 57, 57,208,235,
+245, 47,162, 77, 98,177, 24,150,150,150,200,201,201,193,174, 93,187, 80,246,180, 82,205, 19,157, 40,109,209,183,235,220, 8, 79,
+174, 21, 75,101,212, 90,246,250,154, 0,160,213,243, 51,191,223,181,207,186, 91,219,112,126, 61, 39,167, 63,109,175,139,230,191,
+196, 96,157, 74, 79, 79, 15,245,243,243, 75,119,119,119, 87,151,148,148,128,170,213, 69, 71,119,173,110,224,102, 49,238, 25,195,
+ 48, 84, 42,149,178,150,150,150,197,207,158, 61, 35, 6,131,225, 92,109,244, 41,165, 99,199,142, 29,203, 92,186,116,233,189,161,
+ 67,135,194,195,195, 3,119,238,220,193,182,109,219,176,119,239,222, 45, 66,161,112, 98, 93,210,157,148,148,164, 12, 8, 8,120,
+ 41, 2,242,234,200, 66,189, 38, 11, 44,203,154,220, 57, 63,239,246,182,104,158,173,173,190, 97,189, 63,166, 19,201,203,203, 67,
+ 86,153,185,170, 96,178, 76, 14, 97, 18, 66,138,180, 90,237, 43,233,252,163,249,177,184,184, 24, 58, 77, 38,140, 70, 99,165,154,
+185,185,185, 69,206,206,206,235,214,174, 93,251,245,194,133, 11,237, 87,173, 90,149,251,248,241,227, 66,134, 97, 74, 94,121,136,
+145,120,121,121, 41, 86,172, 88,225,176,118,237,218, 92,150,101,215,253,143,205, 85,223, 70,141, 26,109,233,214,173,155, 98,252,
+248,241, 88,187,118, 45,210,210,210,102, 80, 74, 13,101,229,128, 37,132, 76,251,246,219,111, 15, 79,159, 62, 29, 58,157,110,197,
+209,163, 71,231, 19, 66,198, 82, 74,127,174, 76,211,206,206,206,149,207,231,227,246,237,219,133,148,210,103, 53,148,179,116, 95,
+ 95,223, 12, 66,136,131,147,147, 83,131,234,246,181,182,182,246, 82, 40, 20, 72, 73, 73, 41,191,137, 87, 70,124,106,106, 42, 21,
+137, 68,196,217,217,217,187,166,252, 91, 89, 89, 77,219,176, 97, 3,255,220,185,115,152, 59,119,110,114, 66, 66,194,144,178,105,
+ 4, 64, 41,189, 77, 8,105,211,190,125,251,157,211,167, 79,247,253,242,203, 47,201,147, 39, 79,198, 1,168,214, 96,185,187,187,
+143, 29, 49, 98, 4,214,173, 91,135,245,235,215,143,163,148,238,121, 37,207, 59, 9, 33, 86, 54, 54, 54,235,198,140, 25,131,205,
+155, 55, 15, 1, 80,165,193, 74, 73, 73,153, 62,112,224,192, 57,185,185,185, 75, 76, 57,167,166,236,239,236,236,220,123,232,208,
+161, 14,148, 82,172, 93,187, 54,125,221,186,117,170,194,194,194,159, 83, 83, 83, 95,170, 39, 24,134,217,119,252,248,241,201,227,
+199,143,199,185,115,231,190,113,118,118,166,169,169,169, 27,106, 56,167,105,132,144, 6,132,144, 0, 74,233,163,178, 81,130, 73,
+175,148, 59,223,178,125,147, 77,201, 83,118,244,185, 67, 14, 13,187,255,126,247,198,249,206,158, 13,219, 8,236,173, 20,112,241,
+182,133,181,153, 16, 20,192,131, 4, 53,174, 93, 60,169,207, 76, 75,188, 98,202, 8,194,114, 77,199,160, 30, 87,100,182,238,157,
+235, 7,182,230,123,122,251,160, 83,171,198, 86, 54,230, 2,104,245, 20,167,238, 22,224,234,133, 99,250,204,140,164,115,220, 8,
+194,255, 13,255,149, 14,238,166, 68,176,230,173, 95,191,190,213,198,141, 27,123, 78,158, 60, 89,241,193, 7, 31, 64, 42,149,162,
+184,184, 24,110,110,110, 48, 24, 12, 56,122,244, 40,110,223,190, 93,196,178,236, 97,252, 49, 74,164,252, 2,122,233,109,219, 51,
+215,170,234, 17, 66, 24,160,184,213,252,245,141,223,136, 38, 0, 92,137, 51,184, 56,167,101,207,203,201, 59,250,169,187,139,147,
+176, 75,235, 22,124, 91,171,210,209,204,117,213,124, 3, 55,173,191, 92,211, 96, 48,140, 32,132, 52,156, 54,109,218,114, 23, 23,
+ 23,231,249,243,231, 39, 6, 6, 6,170, 11, 11, 11,169, 86,171,101,179,178,178,100,123,247,238,245,204,201,201, 41,210,235,245,
+239, 83, 74,239,213, 38,157,169,169,169,106, 0, 67, 28, 29, 29, 15,102,102,102,238, 29, 52,104, 16, 54,111,222,140,171, 87,175,
+246, 72, 77, 77, 61, 90,215,188, 83, 74, 13,225,225,225,249, 81, 81, 81, 14, 60, 11, 79, 56, 88, 10,208,245,139,210, 96,132, 66,
+ 12,168,139,139, 16, 23,243, 8,133,133,133,183, 76,213,140,141,141,213, 6, 7, 7,231,103,101,101,217,218,217,217,149,154,171,
+ 10,198, 42, 55, 55, 23, 5, 5, 5,148, 97,152,223, 77,213,204,202,202, 42,110,217,178,165, 42, 54, 54, 86,196, 19, 57,193,201,
+ 74,140,210, 38, 72, 10, 59, 5, 31,106, 85, 49,238,223,185,133,194,194,194,243, 85,105,166,166,166,238,114,118,118, 6,128,175,
+231,204,153, 99,219,181,107,215,167, 55,110,220,104, 87,241,119, 66, 66, 66, 14,204,159, 63,191,199,226,197,139,179,183,108,217,
+ 50, 61, 45, 45,109,251,255,178, 44,217,216,216, 76, 57,114,228,136, 66,167,211, 97,237,218,181, 88,185,114,229, 70, 74,233,190,
+ 87,206,217, 17, 30,143,247, 45,195, 48, 31,125,252,241,199, 24, 51,102,140, 44, 52, 52,116,114,133, 40,215, 75,154, 41, 41, 41,
+159,135,132,132,204,201,204,204, 52,201, 16,196,196,196,140, 14, 9, 9,249, 60, 51, 51,115,121,117,121,151,203,229,114,163,209,
+136,231,207,159,231, 81, 74, 11,170, 40, 95, 37, 62, 62, 62, 41, 70,163,209, 85, 38,147, 89,215, 84, 62,243,242,242,150,132,134,
+134,206,203,200,200, 56, 9, 96, 17,165,180,228, 21,189,187,132,144,134,159,124,242,201,132,101,203,150,245, 79, 79, 79,223, 85,
+147,102, 66, 66,194,146,246,237,219,127, 17, 29, 29,189,133, 82,186,190,138,116,126, 67, 8,209,109,223,190,125,220,243,231,207,
+151, 86,167,153,154,154,122, 24,192, 97, 83,207,111, 85,251, 87,212,180,182,182,158, 62, 97,194, 4, 28, 59,118, 12, 69, 69, 69,
+107, 82, 83, 83,191,172,194,172, 93,243,244,244,252, 45, 60, 60,188,247,138, 21, 43,132, 61,122,244, 24, 7, 96,131, 9,229,243,
+ 42,128, 86,101,253,224, 30, 3,200, 41,247,201, 40, 29, 57, 72, 94,173,139,107,210, 52,234, 11, 7,223,185,180,127,103, 82,236,
+253,240,144,118,125,173, 10, 84,174, 16,242, 25, 40,243,210,112,245,244,175,121,169,201,207,174,106, 75,242, 7,215, 70,211,160,
+ 43, 24,116,255,242,129, 93,233,241,143, 90,168, 90,117,183,202, 47,114,135, 80, 64,144,159,149,140,235,231, 15,230,166, 37, 62,
+191,164,103, 53,195,254,174,122,254,255,147,230,127, 13, 98,202,128, 32, 66,136, 8, 64, 71,133, 66,209,233,211, 79, 63, 21,117,
+237,218, 21,139, 23, 47,198,169, 83,167,180, 90,173,246, 20,128,211,149, 69, 6,170, 59, 1,127,133,102,183,230, 68,225,232,192,
+172,246,112, 98,134, 4,122,123,145,168,152, 39,252, 91,169, 61,127,124, 29,205,127, 75,129, 38,132,180, 22, 8, 4, 95,250,251,
+251,107,226,227,227, 3,173,173,173,163, 83, 82, 82, 68,122,189,126, 26,165,244,226,235,164,211,209,209,209,182,123,247,238,153,
+179,103,207, 38,243,231,207,199,197,139, 23, 45,171,139,176,152,162, 89,175, 94,189, 14,161,161,161, 39, 86,125,179,129,159,144,
+161, 68, 97, 81, 17,138,138,138, 80,172, 84,162,164, 48, 29,199, 14,236,212, 62,120,240,192, 55, 61, 61, 61,193, 84, 77,119,119,
+247,174,141, 27, 55,222,185, 97,195, 6,139,156,156,156, 23, 6, 43, 55, 55, 23, 44,203, 98,253,250,245,185, 57, 57, 57,141,146,
+147,147, 83, 77,213,244,240,240,232,211,170, 85,171,189,203, 87,255,192, 79,202, 80,162,168,184, 24, 42,149, 10, 37,106, 53,116,
+202, 12,108,249,113,173,230,209,163, 71, 30, 89, 89, 89, 25,213,105, 58, 59, 59, 15,108,221,186,245,130,251,247,239,159,123,242,
+228,201,216,138,219,124,124,124,190,109,210,164, 73,247,223,127,255,125, 78, 74, 74,202,182,255,117, 89, 34,132,116,117,113,113,
+ 89,153,149,149, 21,167,211,233,246, 80, 74,183, 85,243,189, 65,124, 62,127,144,173,173,173, 67,122,122,250, 50, 74,233,254,255,
+101,153, 39,132,244,180,183,183,159,149,153,153,185,140, 82,250, 91, 53,223, 43,223,111, 57,165,244, 0,119, 3,251,179,166,179,
+179,115, 79,123,123,251, 5, 25, 25, 25,231,210,211,211,167, 85,215,228,235,234,234, 42, 97, 89,118,129,131,131, 67,203,244,244,
+244,175,211,210,210,126, 53, 53,157,101,175,202,241, 64,105,127, 43,160,180,207, 85, 66,117,115, 95,213,164,105,235,219,169,151,
+ 88, 38, 29, 78, 89, 99, 19,128,128,225,241,238,150, 20,171, 54, 87, 23,185, 50, 69, 83, 34,151,141, 96, 89, 99, 19, 6,132,101,
+ 24,230,158, 90,173,250, 41,235,241,169, 99,156, 25,250,251, 12, 22, 33,100, 52,165,244, 71,252, 11, 33,166,143,184, 46, 29,194,
+ 12,160, 7,195, 48, 45, 89,150,189, 2,224, 72,117,243,214,152,114, 2,254, 10,205,110, 17,196,197,195,150,183, 94, 33, 99, 66,
+151,109,209,127,242, 38, 52,255, 45, 5,154, 16,210,135,207,231,127,102, 48, 24,190,162,148, 30,124, 83,233,244,241,241,217, 16,
+ 17, 17, 49,252,196,137, 19,223, 37, 36, 36, 76,120, 19,154,129,129,129, 95,215,175, 95,127, 66,143, 30, 61, 4,246,246,246,200,
+206,206, 70, 76, 76, 12, 34, 35, 35,181,233,233,233, 99,159, 60,121,178,165,182,154,141, 27, 55, 94,104, 99, 99, 51,246,195, 15,
+ 63,180, 33,132, 32, 39, 39, 7, 69, 69, 69,116,223,190,125,217,106,181,250,195, 39, 79,158, 28,174,173,102,163, 70,141,126,244,
+244,244, 28,214,183,111, 95,129,139,139, 11,178,179,179,241,240,225, 67,252,254,251,239,154,244,244,244,161,209,209,209,251, 76,
+209,244,242,242, 18,197,198,198, 86,218,156, 24, 18, 18, 34,136,140,140,212,115, 21, 46,167,201,105,114,154,156,193,250,111, 24,
+ 44,126,109,118, 46, 51, 41,187, 8, 33,123,203,251,103,188, 46,127,133,230,177,243, 52, 5, 64,119, 66, 8,255, 77,105,254, 91,
+ 40, 51, 85, 7,223,180,110, 76, 76,204,135,206,206,206, 19,203,154, 13,223, 8, 15, 31, 62,156,226,226,226,178, 61, 62, 62,126,
+133, 76, 38, 11,102, 89, 86,175,209,104, 46,231,228,228, 76, 78, 77, 77,173,211,139, 96,239,221,187,247,133,179,179,243,129, 21,
+ 43, 86,204,160,148, 54, 38,132,104, 13, 6,195,149,188,188,188, 5, 73, 73, 73,105,117,209,188,127,255,254,104, 23, 23,151, 77,
+241,241,241, 75,197, 98,113, 99, 74,169, 86,173, 86,159,207,204,204,252,180, 60,114,101, 10, 85,153, 43,160,116,138, 12,112,112,
+112,112,112,252,103,224,215,229, 75,127,133,105,249,183,104,254,127,230, 77,154,171,114, 82, 82, 82,238, 1,120,235, 13,167,243,
+ 14,128, 1,111, 56,157,215, 1, 68,112,165,128,131,131,131,131,195, 20, 24,238, 16,112,112,112,112,112,112,112,112,188, 89, 8,
+ 74,231, 33,249, 19,181,105, 91, 37,132, 4,213,246,135, 77,232, 75,196,105,114,154,156, 38,167,201,105,114,154,156,230,127, 76,
+179, 18,237,183, 95,217,148,242,138,222,127,191,147,123,173,197,185, 14,128,156, 38,167,201,105,114,154,156, 38,167,201,105,254,
+ 63,132,107, 34,228,224,224,224,224,224,224,224,224, 12, 22, 7, 7, 7, 7, 7, 7, 7, 7,103,176, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56,131,197,193,193,193,193,193,193,193,193,193, 25, 44, 14, 14, 14, 14, 14, 14, 14,142,127, 12,127,233, 40, 66, 14, 14, 14,
+ 14, 14, 14, 14,142,255,143,188, 20,193, 34,132,112,110,139,131,131,131,131,131,131,227,111,227,191,226, 69,184, 38, 66, 14, 14,
+ 14, 14, 14, 14, 14, 14,206, 96,113,112,112,112,112,112,112,112,252, 11, 12, 22,215, 52,200,193,193,193,193,193,193,241,119,242,
+ 95,243, 34,229, 17,172,136,178,140, 69,112,167,152,131,131,131,131,131,131,227,111,224, 63,229, 69,184, 81,132, 28, 28, 28, 28,
+ 28, 28, 28, 28,111, 24,174, 15, 22, 7, 7, 7, 7, 7, 7, 7,199,191,201, 96, 17, 66,130, 56, 77, 78,147,211,228, 52, 57, 77,
+ 78,147,211,228, 52, 57,131,197,193,193,193,193,193,193,193,193,193, 25, 44, 14, 14, 14, 14, 14, 14, 14, 14,206, 96,113,112,112,
+112,112,112,112,112,112, 6,139,131,131,131,131,131,131,131,131,131, 51, 88, 28, 28, 28, 28, 28, 28, 28, 28,127, 19, 4, 64,165,
+ 35, 1, 40,165, 15, 76, 22,169,195,104,130,154,244, 57, 77, 78,147,211,228, 52, 57, 77, 78,147,211,252,239,105,214,164, 93, 27,
+255,241,143, 54, 88,127,229, 68,163,132,144,160, 55,125,160, 56, 77, 78,147,211,228, 52, 57, 77, 78,147,211,252,239,105,254,215,
+224,115,135,128,131,227, 95,206, 94,194,131,189,159, 39, 88,234, 12,190, 40, 13,103,239, 63,195, 92,202,190,182,166,115,160, 59,
+180,122, 7, 72, 37, 89, 56,113, 47,238,181, 53, 57, 56, 56, 56, 56,131,197,193,193,241,175,193,201,223, 23, 70, 44, 5, 15, 78,
+160,186, 88,180, 10, 92, 10,224,245,158, 44,109,252,125,161,103, 23,129,207,184, 66,171,139, 70, 91,191,101, 0, 30,114, 7,155,
+131,131,131,195, 52,254,150, 78,238, 97, 97, 97,145, 97, 97, 97, 11, 35, 34, 34,196,220, 41,224,224,120, 13, 30, 52,146,193, 96,
+236,166,213,179, 46,199,175,228,219,171, 74,140,190, 16, 26,186,227,138,175,217,107,105, 10, 72,231, 18, 61, 91,111,251, 41,149,
+ 67,113,137, 33, 0, 12, 94, 79,179,140,160,160, 32,203,102,205,154, 29, 15, 14, 14,182,229, 78, 30, 7, 7, 7,103,176,222, 48,
+ 44,203, 54,181,183,183,159,172, 86,171, 19, 66, 67, 67,123,255,127, 58,224, 45, 90,180,184, 18, 30, 30,158,209,178,101,203,140,
+150, 45, 91,222,174,105,253,127, 17,103,103,103,223, 70,141, 26, 37, 52,108,216, 48,186,226,122,251, 38,253, 91, 6,180,253, 96,
+174,109,195,190,237,184, 75,211, 68,138, 89, 7, 48,188,246, 15,227, 85,178,244,124,189, 67,228, 19,149, 2,148, 23, 1, 29,156,
+ 94, 75,147,165, 29,238,198,170,229, 87,159,217, 57, 92,122,160, 49, 7,101,218,131, 18,199,215, 77,174, 72, 36, 26, 71, 41,237,
+ 36, 16, 8, 38,113, 39,239,255, 55,132,144, 32, 66, 72,111, 66, 72,216, 27,212,252,210,223,223, 63,133, 16,242, 9,119,132, 57,
+254, 53, 6,107, 64,125,210,234,189, 6,228,194,192,250,164,104, 80, 3,162, 28,218,128, 92,126,199,139,212,249, 70,184,111,223,
+ 62,233,182,109,219,236, 3, 3, 3,119, 53,111,222,252,114,104,104,168, 79, 93,116,194,194,194,142,135,133,133, 13,120,117, 93,
+104,104,232,192,138,235,154, 53,107, 22,213,172, 89,179,130,176,176,176,103,166,232,134,132,132, 60, 13, 9, 9, 41, 14, 11, 11,
+123, 90,113,125,104,104,232,192,102,205,154, 29,127,229,247, 6,188,186,174,202, 3,206, 48,174,135, 14, 29,178, 63,114,228,136,
+ 61,159,207,119,120,117,253,225,195,135, 95, 90, 95,135,227, 49, 42, 44, 44,236,202, 43,121,249,240,213,117,213, 17, 26, 26,122,
+ 37, 36, 36,228,195, 87,116,175,132,133,133,141,122, 19,230,170,109,219,182,151,239,220,185, 83, 79,161, 80, 88, 86,220,230,104,
+ 99,217,229,202,225,111, 39, 15, 27,208,121,156,125, 96,191, 70,220,229, 89, 3,143, 3,133, 48,176,109, 89,150,218, 61,124, 86,
+ 98,215,189,199, 59,252,187, 79,213,118,122,131,209, 26,132, 23,129, 11, 30,226, 58,105,234,245,109, 88, 74, 29,206,220, 21,218,
+ 69,244,250,152,119,238, 62,223, 78,111, 52,218, 64,143,118,117,210,252,163, 28, 10,120, 60,222,228, 49, 99,198, 48,132,144,143,
+189,188,188, 68,255,159, 78, 87,243, 70,196,229,173, 80,254,141,144, 64,210,234, 13, 26,138,134,114,185,252, 22, 33,196,247, 95,
+102,174,154, 2,144, 81, 74,127, 3,224, 64, 8,225,191, 1,205, 85, 11, 22, 44,152,246,224,193, 3,231,250,245,235,207, 39,132,
+240,184, 74,130,227, 31,111,176, 6,213, 39,243, 28, 28, 93, 78,206, 94,181,163,237,134, 11,113,102,223, 29,186, 45,159, 60,125,
+ 73, 43, 71, 43,187,163, 67,189,200,178,170,190, 87,221, 8, 3,145, 72,132,103,207,158, 97,237,218,181,146,121,243,230,181,180,
+176,176,184,215,188,121,243,213,129,129,129,242,234,210,242,170, 38,165,180,149, 64, 32,216,208,188,121,243,205,229, 21, 54, 33,
+164,149, 88, 44,254,177,121,243,230,219,203,155, 33, 67, 66, 66,234,223,184,113,195,156, 16,226, 96, 74, 58,155, 53,107,230, 20,
+ 25, 25, 41, 3, 74, 35, 1, 17, 17, 17,226,102,205,154,109,115,113,113, 89, 15,160, 21, 0,120,121,121,137,154, 55,111,190,217,
+205,205,237, 39, 66, 94,174, 52,171,202, 59,195, 48,176,180,180,196,142, 29, 59,192,227,241, 42, 86, 14,176,180,180,196,207, 63,
+255, 12, 66, 72,173,143,103, 96, 96,160, 60, 44, 44,108,159,147,147,211,106,150,101,195, 1,160, 81,163, 70,178,102,205,154,237,
+117,113,113, 89, 83,190,206, 20, 77, 74,105,184, 80, 40, 92,221,172, 89,179,189,141, 26, 53,146, 1, 0,203,178,225,124, 62,127,
+ 85, 88, 88,216,190,218,156,163,166, 77,155,142,105,220,184,113,106,227,198,141, 83,253,252,252, 22, 59, 56, 56,156, 95,183,110,
+157, 77,197,188,151, 71,174, 50, 50,115,242,174,220,140,122, 50,121,204, 59, 17,245,220, 28,134, 88, 54,233,107, 97, 74,222,235,
+202,191, 94, 51,135,216,131,208,142, 79, 18,212, 18, 15,239, 80,185,189,255, 59,176,179,228,139,175, 62, 42, 86,128,135,183, 32,
+144,217,213, 77,147,255, 86, 84,156, 90,106, 85,191,155, 44,172, 69, 91, 16,185,143,248,252,157, 98,115,240,153,186,105,254,193,
+ 59,225,225,225,162,142, 29, 59,194,217,217,153,103, 97, 97, 49,228, 63,127,142, 42,152, 43,133, 68,116,253,235, 5,159,134, 58,
+219,200, 14,154, 98,178, 76, 24, 62,223,208,222,222,254,220,183,223,126, 27,162, 80, 40, 46,154, 98,178,254, 9,199,179,204, 92,
+ 9, 41,165,215,202, 86, 61, 4,208,230, 53, 53, 87,205,155, 55,111,210,204,153, 51, 81, 84, 84,132, 97,195,134,153, 3,248,218,
+ 84, 77,133, 66,225,221,184,113,227,237, 13, 27, 54, 76, 12, 14, 14,214, 6, 4, 4,148,248,249,249,197, 7, 5, 5,109,145, 72,
+ 36,158,255,245,242,249, 79,209,172, 1, 17,128,246, 0,122, 0,120, 11, 64,179,178,255,195,202,150, 30, 0, 58,190,242,183, 60,
+ 58, 90,190,189,121, 21, 26, 61, 42,249, 94, 88,133,245, 21, 63,191,250,127,245, 6,139, 16, 66, 43,254,173,200,187, 13, 72, 75,
+ 27, 71,151,105, 95, 30,184, 41,101, 99,238, 34,114,100, 7, 60,249,164, 47,164, 79,239, 98,198,132, 25, 82,133,194,106,194,128,
+ 6,164,125, 93,142, 86,116,116, 52,118,237,218, 5, 91, 91, 91,178,113,227, 70,241,128, 1, 3,198,153,155,155, 39,133,133,133,
+ 13, 49, 85,131,199,227, 25, 55,111,222,108,214,167, 79,159, 65,214,214,214, 81, 33, 33, 33,245, 25,134, 49,110,221,186,213,108,
+224,192,129, 3,180, 90,237,163,208,208, 80,159,219,183,111, 27,111,222,188, 9,134, 49, 45,104, 23, 25, 25,105, 56,118,236, 88,
+121, 68,199,135, 82,250,104,217,178,101,131,246,239,223,175,176,176,176, 96, 67, 66, 66,234,187,185,185, 69,125,249,229,151, 67,
+246,238,221,171, 48, 55, 55,103, 77,172, 8, 80, 82, 82, 2,137, 68,242,146,145, 34,132, 64,173, 86, 67, 44, 22,155,156,198, 10,
+145,129,134, 54, 54, 54,143,151, 46, 93,218,231,192,129, 3, 82,133, 66,129,176,176,176, 0, 75, 75,203, 39,203,151, 47,239,123,
+240,224, 65,169, 66,161, 48, 89, 79, 40, 20,226,231,159,127,150,189,247,222,123,189,197, 98,241,227,176,176,176, 0,161, 80,136,
+157, 59,119,202,134, 12, 25,210, 83, 38,147, 61, 10, 9, 9,105,104,138,150, 94,175,159,115,243,230, 77,167,243,231,207, 59,185,
+187,187, 79,252,238,187,239, 28, 4, 2, 1, 0,192,104, 52,190, 20,185, 26,210,191, 83,243, 73,115,190, 61,167, 46,209,104, 23,
+205, 24, 17, 33, 48,162, 5,247, 12, 84, 5,123, 9, 15,172,177, 41, 0,175,219,209,106,219, 38,109,135,240,145,249, 27,154, 5,
+152,241, 47,220, 86,218, 83, 74,221, 97,160,205,112, 33,130, 95, 43, 77, 30,109, 2,194,250,156,188, 67,108, 91,118, 28,194, 79,
+ 72, 72,128,103, 64, 4,239,240, 77, 56, 80, 74, 61,193, 34,180, 86,154, 21, 16, 8, 4,115,223,125,247, 93,121,124,124, 60, 90,
+182,108, 41, 19,137, 68,115,222, 72, 20,239,186,159, 59, 46,250, 70,224,138,175, 83, 93,211,246, 87, 71,174,204, 37,162,107, 59,
+183,255,226,220,168,205, 40,178,254, 83,119,107, 59,133,224,224,235, 68,178,202,204,213,217,235,215,175,219,116,238,220, 25,243,
+230,205,179, 51, 55, 55,191,248, 79,143,100, 85, 52, 87,132, 16,105, 89,243, 96, 10, 0,215,215,208, 92, 51,111,222,188, 73,179,
+102,205,194,181,107,215,176,124,249,114,116,235,214, 13, 86, 86, 86, 53,214, 31,239,191,255,190,172, 85,171, 86,145,189,123,247,
+190, 59,105,210,164, 33,135, 15, 31,118,219,188,121,179,112,248,240,225,226,119,223,125,215,253,211, 79, 63,253,160,123,247,238,
+ 15,154, 55,111,126,125,192,128, 1,146,186, 38,177,108,225,168,249, 92, 86,233, 69, 0, 52,158, 57,115,102, 51, 66,200,225,153,
+ 51,103,134, 2,176, 37,132, 28, 6, 96, 7,192,174,236,127,209, 43,127,237,202, 76, 83,249,118,155,202, 52,202,151, 87,190,103,
+ 87, 97,125,197,223,120,245,255,154, 35, 88,132,144,118, 0, 46,190,186, 3,159, 98,193,152,201, 11, 37,207,183,172, 68,218,246,
+ 85, 96,178, 83,192,203, 79,135,230,226,111,208, 95, 58,132,247,195,195,165, 82, 66, 22,213,229, 96, 42, 20, 10, 8,133, 66,196,
+196,196,224,209,163, 71,232,222,189,187,112,237,218,181,150, 13, 27, 54,252,177, 85,171, 86,119,195,194,194, 26,155, 98, 88,188,
+189,189, 49,104,208, 32,209, 39,159,124,210, 64, 34,145,220,166,148, 10, 60, 61, 61, 49,112,224, 64,225,244,233,211, 61, 36, 18,
+201, 77,150,101,133, 50,153,172,202,232, 80,101,186, 82,169, 20, 0, 4, 62, 62, 62,183,118,237,218,229,217,170, 85, 43,254,201,
+147, 39, 81, 88, 88,200,247,245,245,189,187,115,231, 78,175,150, 45, 91,242, 47, 95,190,140,226,226, 98,106,170,110,113,113, 49,
+164, 82,233,159, 12, 86,113,113,241,159,140, 87, 77,132,133,133,141,242,242,242,186,185,107,215, 46,215, 54,109,218,240,206,157,
+ 59,135,162,162, 34,184,187,187,223,218,181,107,151,107,171, 86,173,120, 87,174, 92, 65, 81, 81,145,233,143, 9, 34, 17, 60, 61,
+ 61,241,238,187,239, 10,166, 78,157,234, 42, 16, 8,110,138, 68, 34,184,187,187,227,221,119,223, 21, 78,153, 50,197, 85, 36, 18,
+ 93, 55,177,201,144, 7, 0, 6,131, 1, 3, 6, 12,144, 75,165, 82, 36, 37, 37,129,101, 89,176,108,169, 39, 77,203,202,185,255,
+251,205, 7,143, 39,143, 29,208,174, 88,163,209,156, 56,127,235, 81,160,143,187, 43, 33,212,131,171,114,170,192, 42,208, 6, 60,
+116, 74, 72,213,138, 69,114, 87,133,153,173, 31,144,123, 17,245,157,197, 0, 37,146,155,143, 85,114, 48,180, 19,144,109, 83, 43,
+ 77, 35,219, 41, 46, 69, 43,214, 73,131,204,156, 93,234, 33, 39, 39, 7,110,158,254,208,192, 78,116,229, 65,177, 25,104, 45, 53,
+203, 8, 14, 14,110,227,230,230,230,232,225,225,129,236,236,108,120,123,123,195,204,204,204, 42, 36, 36,164, 83,157,143,193, 5,
+ 15, 49, 10,208, 10, 58,242, 53, 8, 51, 31,148,191, 20,252,172,166,184, 29, 34,248,199,153,171,159,127,113,177,113,242, 7, 30,
+140,132,131,181, 8, 27,103, 54,177,182, 83,136,235,100,178, 8, 33, 13, 29, 28, 28,206, 94,191,126,221, 86, 34,145, 32, 50, 50,
+ 18,129,129,129, 88,185,114,165,157,149,149,213, 63,214,100,189, 98,174,172, 41,165,106, 0, 44,128,193,168,195,168, 87, 82,202,
+ 55, 11, 23, 46,156, 56,107,214, 44, 92,189,122, 21, 46, 46, 46,200,204,204, 68,155, 54,109, 18,242,242,242,170,189, 47, 53,108,
+216,208, 53, 38, 38, 38,229,211, 79, 63,109,186,109,219, 54,169, 92, 46, 71,126,126, 62,126,250,233, 39,204,156, 57, 19,132, 16,
+ 80, 74,177,105,211, 38,217,136, 17, 35,154,197,198,198,166,120,120,120,152,218,125,131,148, 69, 92,100, 0,228,101,127, 37, 19,
+ 39, 78, 20, 17, 66,196,101,230, 82, 66, 8, 17,112,149,217,159,206,107,165, 94, 4,128,237,178,101,203,150, 80, 74,123, 46, 91,
+182,108, 73,133,253, 15, 87,163, 85,209, 52, 1, 0, 94,213,160,148,246,172,248,183,226,119, 41,165, 61, 41,165, 61, 43,126,191,
+186,223,171,210, 96, 1, 56, 79, 41,109,247,167, 48, 32,208,216,177,190, 31,242, 79,237,129,148, 71, 94, 90,152,184,251,112,147,
+240,161,167,180, 97, 93, 14,164,153,153,217,139,133, 97, 24,164,165,165,129,199,227, 97,206,156, 57,146, 9, 19, 38, 52, 18, 10,
+133, 87,219,182,109,187,180, 38,195, 2, 0, 55,110,220,128,183,183, 55,153, 53,107,150,121,187,118,237,248, 0,112,239,222, 61,
+120,121,121,145,197,139, 23, 43,122,245,234, 69,100, 50,153,201,209, 33,134, 97, 32,149, 74, 17, 17, 17, 65, 54,111,222,108, 38,
+ 22,139,113,228,200, 17,100,103,103,163,115,231,206,252,205,155, 55,155, 73, 36, 18, 92,184,112, 1, 5, 5, 5, 38,235, 18, 66,
+160,209,104, 42, 53, 88,149, 69,182,170,163,101,203,150, 27, 29, 29, 29, 87,111,219,182, 77, 44,149, 74,113,238,220, 57, 20, 20,
+ 20, 96,208,160, 65,134,159,127,254, 89, 98,110,110,142, 43, 87,174,160,160,160,160, 78, 5,253,198,141, 27,240,242,242, 34,179,
+103,207,150,134,135,135,235, 1,224,206,157, 59,240,241,241, 33,179,103,207,150,154,155,155,175,106,221,186,245,198,234, 52, 88,
+150, 69, 90, 90, 26, 30, 60,120,128,184,184, 56,100,103,103, 35, 43, 43, 11, 69, 69, 69, 48, 24, 12, 0, 0, 89, 81,225,145,111,
+ 54, 31,186, 43,151, 74,101,205, 27,249,212,187,126,251, 97,166, 92, 42,149,249,120,214,243, 37,100, 62,247, 58,167,202, 10,145,
+ 64,235, 3, 74,154, 94,123,168,180,110,211,101,176, 16, 89,199, 0,170, 7, 8, 31,237,155,187,242, 15, 94, 46,118, 0,139,198,
+ 16,194, 31, 48,161, 64, 17, 66,192,215,121, 3, 36,244,100,164,193,166,117,151,113,194,228,228,100, 8,133, 66,136,197, 98, 4,
+183,122,155,191,243,156,222, 17, 64, 19, 8,224,103,146,102, 5,196, 98,241, 23, 35, 70,140,144,167,164,164,188,208,236,214,173,
+155, 92, 38,147,205,173,179,185, 98,100,225, 48,208, 73, 81,113,106,247,197, 91,210,252,159, 37,169,253, 65, 49, 5,122,125,240,
+235,154, 44,119,119,247, 8, 95, 95,223, 56, 79, 79,207,214,175,105,174,174,238,250,249, 23, 23,107,199, 82,115, 5,163, 10,224,
+ 73,225,104,111,133,141,115, 35,172,237,204,165,181, 50, 89,101,230,234,204,181,107,215,108, 37, 18, 9,110,221,186, 5,145, 72,
+ 4,137, 68,130, 70,141, 26, 97,253,250,245,118,214,214,214,255, 8,147, 69, 8,177, 34,132,116, 33,132,188, 67, 8,121,187,130,
+185,242, 4,208,129, 16,210, 9,128, 35,128, 11,148,210,187, 38,106,182,230,243,249, 71,154, 52,105,146,202,231,243, 31, 46, 89,
+178,228,163,233,211,167, 99,205,154, 53,136,136,136,120, 54, 99,198, 12, 60,121,242,196,160, 82,169,122, 83, 74,171,189, 17, 42,
+149,202,223,102,207,158,109,209,175, 95,191,242,207,184,124,249, 50,182,110,221, 10,185,252,143, 94, 16,148, 82,244,234,213, 11,
+163, 70,141,178,210,106,181,251,170,211,116,112,112,120,235,252,249,243, 62,101,230, 74, 82,193, 96,201, 79,159, 62,109, 41,145,
+ 72,172,155, 53,107,102, 94,182, 94,214,175, 95, 63, 27,129, 64,208,154,171,212, 94,162, 82, 47, 82,149,193,121,213, 0, 85,182,
+173, 50,243, 84,215,196, 85,247,123,213, 25,172, 8, 66,200,133,202,118,210,229,102, 64, 12, 35,100, 60, 2, 41,159,148,254,229,
+ 17, 72, 9, 11,126, 94, 70, 45,171,218,151, 13,150, 66,161,248,147,209, 82,171,213, 80, 42,149, 38, 25,141,242,190, 60, 86, 86,
+ 86, 47,110,218,102,102,165,163,201,173,173,173,161,209,104, 64, 8,129, 92, 46,135, 92, 46,175, 85, 4, 75, 34, 41,141, 8, 95,
+185,114, 5,191,255,254, 59,248,124, 62,172,173,173, 1, 0,183,110,221,194,253,251,247, 33, 18,137, 96, 99, 99, 83, 43, 93,157,
+ 78, 87,105, 19,161, 86,171,173, 85, 19, 33,195, 48, 40, 41, 41,161,183,110,221,194,131, 7, 15, 32, 22,139, 97,103,103, 7,145,
+ 72,132,164,164, 36, 60,126,252, 24, 34,145, 8,118,118,118,117, 58, 63,230,230,230,200,207,207, 7,203,178,229,209, 60,152,155,
+155, 67,169, 84,130, 97, 24,147,210,201,178, 44, 82, 82, 82,144,157,157,141,196,196, 68,100,101,101,189, 48, 89,229, 77,132, 28,
+181,228,114, 67, 11, 16, 65,231,172,124,189, 56, 75, 41,178,112,240,234, 8,100, 31, 3, 8, 15, 16, 88,161, 69,211,250, 72, 72,
+ 55,202,159, 36,106, 37,208,163, 11,206,250, 90,153,164,201, 19,116,202, 44,208,139,227,243,237,204, 3,130, 66,144,153,153, 9,
+177, 88, 12,177, 88,140,208, 22,111, 33, 46,149,149, 61,124,174,150,129,162,179, 73,154,101, 52,109,218,180,129, 84, 42, 13,111,
+218,180, 41,201,200,200,128, 88, 44,134, 68, 34, 65,120,120, 56, 24,134,105, 20, 28, 28,236, 95,171,252, 63,243, 18, 65, 32,107,
+ 1,208, 73,143,159,171,156, 15, 94, 81,251,246,234,251,182,245,170,221,153,254,143,159,151,120, 66,107,152,138, 98, 93, 72, 93,
+ 77,150,135,135, 71, 59, 51, 51,179,195, 95,124,241,133,167, 88, 44, 62,230,233,233,217,166, 78,245,155,152,247,195, 23,147, 6,
+187, 88,149,155, 43, 67, 49,192,147, 2, 60, 89,169,201,114,176,197,162, 79, 58, 90,203,132,130, 95, 77,213,148, 74,165, 59,191,
+249,230, 27,187,114,115, 37, 20, 10, 33,145, 72, 94, 44, 77,155, 54,197,156, 57,115,236,172,173,173,119,252,205,230,202, 26,165,
+253,170,238, 1,216, 7,224, 76, 5,115,229, 13,224,215,178,168,213,109, 74,105,130,137,154, 45,187,118,237,122,238,217,179,103,
+221,239,222,189,235,148,158,158,238, 63,101,202, 20,172, 94,189, 26,211,167, 79,223, 65, 41,245,221,179,103, 79,240,141, 27, 55,
+ 26,153,210, 63, 40, 61, 61,253,189, 25, 51,102,100,103,103,103, 3, 0,130,130,130,144,159,159,143,169, 83,167, 98,210,164, 73,
+229,145, 87, 0, 64,102,102, 38, 86,172, 88,145,145,158,158, 62,172, 58, 77,163,209,152,180,127,255,254,112,173, 86, 91, 15,128,
+ 16,128, 24,128, 44, 33, 33,193,162,184,184,216,156,199,227, 41,228,114,185,185, 88, 44,150,143, 24, 49, 66,248,240,225,195, 0,
+131,193,144,194, 85,106, 47, 81,165, 23,169, 44,210, 84,213,186,186,238,111,170,201,170,149,193,162,148, 94, 0,208,246, 79, 6,
+134,224, 94,226,205, 11,176, 14,108,250,114, 4,139, 79, 32, 83,152, 35, 46, 37, 9, 66,144,168, 58, 36,240,133,169,170,104,178,
+210,210,210, 48, 99,198, 12,213,246,237,219,239,107,181,218,240,139, 23, 47,206, 52, 37,130,101,111,111,143,196,196, 68,250,213,
+ 87, 95, 21, 30, 59,118,204, 80,190, 46, 41, 41,137,126,254,249,231, 69,191,252,242, 11,173, 77, 19, 97,121, 4,235,194,133, 11,
+116,238,220,185, 5,169,169,169,212,218,218, 26, 54, 54, 54, 56,125,250,180, 97,230,204,153, 5,177,177,177,212,218,218, 26,214,
+214,214,181, 50, 88, 6,131, 1, 82,169,244, 37,131, 66, 8,129, 94,175,255, 83,100,171,218,123,226,229,203, 35, 11, 10, 10, 62,
+157, 58,117,170,250,209,163, 71,212,206,206, 14,118,118,118,216,178,101, 11,255,131, 15, 62, 80,223,187,119,239,197,186,186, 96,
+107,107,139,232,232,104,186,100,201, 18,245,153, 51,103, 4, 0, 96,103,103,135, 39, 79,158,208, 5, 11, 22,168,243,243,243, 63,
+189,124,249,242,200, 26, 42, 28,196,197,197,161,176,176, 16, 70,163, 17, 26,141, 6, 89, 89, 89, 72, 78, 78,126, 97,176,212,114,
+243,174, 31, 15,239,213,164, 88,173, 86, 93,191, 31,147,216,188,105,160,125,177, 90,173,138,121,158, 24, 77,233, 92,110,246,240,
+ 63, 93, 60,172, 35, 40,109,125,249,190,210,178, 83,143,129, 34, 82,120, 3,208, 43, 1,129, 21, 32,176, 4, 95, 98,131,110,111,
+ 5,243, 54,159, 40,116, 4, 97, 91, 66, 34,174,185,127, 11, 75, 29,192,178,109, 78,223, 42,177,106,221,125,130, 40, 55, 55, 23,
+ 12,195,188, 48, 88, 50,185, 28,111,245, 28,202,108, 58,161,113, 4, 75, 91,129,199, 51,185,207,140, 80, 40,156, 54,124,248,112,
+ 97, 94, 94,222, 75,154, 82,169, 20,125,251,246, 21, 43, 20,138,207, 77,206,251,227, 64, 33, 50,196, 45,192,210, 73, 79,226,213,
+206,251,127, 87,251, 78,153,179, 73,218,176,113,115,140,237, 99, 47, 93,188, 45, 51,240,110,172,202, 19,140,113, 50, 84,218, 80,
+252, 88, 59,147,229,233,233,217, 70, 46,151, 31, 57,112,224,128,172,125,251,246,152, 50,101,138, 92, 44, 22, 31,243,240,240,104,
+ 91,219,211, 84, 92,100,252,120,193,170,109, 25,247,118,119, 1, 12, 69,101,230,234,143, 37,179,128,197,156,111,206, 21,232,141,
+116,176,169,154,106,181,250,131, 15, 63,252, 48,103,223,190,125,127, 50, 87, 18,137, 4,207,159, 63,199,226,197,139,115,115,115,
+115,135,253,205,165, 52, 24,192, 29, 0, 37, 0,218, 1,144,149,141, 20, 12, 7,112,154, 82,106,164,148,102, 80, 74,211, 76, 21,
+228,241,120,211,191,251,238, 59,190, 90,173,198,168, 81,163,144,148,148,132,212,212, 84,204,158, 61,251, 57,203,178, 31,148,105,
+222,165,148, 62, 54, 69, 79,171,213, 62,201,203,203,235,217,181,107,215,252,188,188, 60, 52,110,220, 24, 61,123,246,132,163,163,
+ 35,156,157,157,209,187,119,111,248,248,248, 32, 39, 39, 7,131, 7, 15,206,205,202,202,234, 66, 41,173,118, 20,122, 78, 78, 78,
+236,238,221,187, 99, 63,250,232,163,176,164,164,164, 32, 0, 78,122,189,222, 90,173, 86, 43, 12, 6,131,153,185,185,185, 77, 72,
+ 72,136,221,216,177, 99, 45,111,222,188, 25,152,156,156,172, 4,144,192, 85,106, 47,121,131, 74,189,200,107,112,228,117, 34, 85,
+149, 69,192, 76,133, 41, 19, 34, 21,255,190, 20,189, 2,230,108,221,187,181, 68,228,238, 3, 11,255, 38,144, 73, 36,144,138, 69,
+144, 90, 90,163,132,101,177,225,121,186,170,152,210,207,235,144,248,151, 34, 87, 44,203, 98,253,250,245, 37,139, 22, 45,202, 79,
+ 79, 79, 31,123,241,226,197, 38, 55,111,222,188,103,138, 17, 42, 44, 44,196,158, 61,123,212,155, 55,111,126,166, 86,171,155, 10,
+133, 66,189, 86,171,197,142, 29, 59, 74, 86,175, 94, 29,175, 82,169,194, 4, 2,129,174, 54,205,111,229,125,176, 4, 2,129,190,
+164,164,164,233,174, 93,187, 98,143, 28, 57,162, 54, 55, 55,135, 64, 32,208,171, 84,170, 70,219,182,109,123,178,107,215, 46,181,
+185,185,121,173,140, 27,203,178,149, 70,176,140, 70, 35,196, 98,113,173,250, 96,221,188,121,243, 39,157, 78,215,124,199,142, 29,
+201,155, 54,109, 42, 49, 55, 55, 7, 0,232,245,250,176,173, 91,183, 38,255,240,195, 15,154,218,116,112, 47,171,120, 96, 52, 26,
+177,109,219, 54,205,206,157, 59,147, 13, 6, 67, 88,249,186, 77,155, 54,149,108,219,182, 45, 89,167,211, 53,191,121,243,230, 79,
+ 53,105, 25,141, 70, 99,126,126, 62,248,124, 62,158, 61,123,166, 17,139,197,224,241,120,136,137,137,121, 97,176,236,109,173, 3,
+ 91,133, 5,249,175,252, 97,207, 5,185, 88, 44,238, 18, 17, 26,240, 48, 38, 33,153, 82, 18,207, 85, 55,149,133,148, 33, 3,129,
+ 52, 38, 73,163,144, 8,244, 4,233,191, 2, 66,171, 50,131, 85,186, 56,187,184,226,230, 99,149, 2, 4, 34,104,245,246, 53,106,
+234,169, 28, 4,178, 7, 9, 80,240,133, 82,146,158,158,254, 34,210, 84,110,136, 60,189, 2,112, 59, 70,105, 6, 66,197, 0, 28,
+106, 83, 81,153,153,153,241,211,210,210, 94,104,189,208,244,244,228,233,245,250, 46, 38,231, 61,203,232, 4,150,253, 56, 58,177,
+196,249,192,239,106,159,201,115, 54, 73,165,188, 60, 32,126, 13, 26,250, 56, 98,202,176, 38,162,217, 27,178, 26,222,124,168,106,
+ 0, 66,199,162,161,210,228,167, 11, 79, 79,207,214, 50,153,236,216,129, 3, 7,100,114,185, 28,207,158, 61, 67,227,198,141,177,
+112,225, 66,153, 76, 38, 59,234,238,238, 30, 81,155,211,116,237, 9, 77, 80, 22, 25,195,167,173, 79, 74,191,247,220, 88,106,172,
+152, 82,115,149, 85, 64,241,225, 23,135,242,243, 10, 75,222,190,122, 95,127,182, 22,199,242, 78, 65, 65, 65,231, 47,190,248, 34,
+ 39, 59, 59,251, 37,115,149,144,144, 80,110, 4, 34, 40,165, 81,127,115, 41,149,163,180,243,186, 31, 0, 47, 0, 77, 40,165, 6,
+ 0, 69,148,210, 58,133,174, 3, 3, 3,155,186,187,187,227,251,239,191,199,134, 13, 27,242, 86,174, 92, 9, 74, 41,124,124,124,
+204,235,170,153,145,145,113,227,201,147, 39, 93,154, 52,105,242,104,221,186,117,201, 78, 78, 78,236,168, 81,163, 48,114,228, 72,
+216,217,217, 25,215,172, 89,147,216,166, 77,155, 7,177,177,177, 29,139,139,139,239,155,112,126,104,118,118,246,149,141, 27, 55,
+222,120,235,173,183, 20,195,135, 15,119,216,176, 97,131,227,227,199,143,235,169, 84, 42,151,204,204, 76,249,197,139, 23,197, 91,
+183,110,117,124,248,240,225,115,181, 90,125,131,254,149, 47, 4,254,247,153,171, 42,189, 8,128,172, 50,163,163,125,229,111, 86,
+ 13,219, 76,253,110,165,255,155,176, 95,149,212, 56,226,102,247, 51,122,101,168, 23, 89,190,112,211,250,207,134, 54,242,151,122,
+120, 6,192,168,204,199,253,244,116,108, 77, 43, 80,233, 41,253,102,207, 51,122,174,174, 6,139,199,227,225,196,137, 19,198, 29,
+ 59,118,232, 40,165, 63, 22, 22, 22,126,254,240,225,195, 98, 83,117, 88,150,229,141, 24, 49, 66,153,151,151,247,107, 90, 90,218,
+216,216,216, 88,109,155, 54,109,120,239,189,247,158, 50, 55, 55,247, 55, 66,200,168, 91,183,110,105, 90,183,110,141,218,148, 99,
+ 66, 8,132, 66, 33, 8, 33,184,121,243,230,243,192,192,192,134,215,174, 93,251, 54, 58, 58,250, 93, 74, 41, 47, 50, 50, 50, 41,
+ 36, 36,164,241,149, 43, 87,214, 61,126,252,120, 48,203,178, 60, 83,117,203,163, 99, 21,141, 20,195, 48, 47, 76, 29,169,101,155,
+107,100,100,100, 84, 96, 96, 96,192,141, 27, 55,182,140, 30, 61,186, 11, 0,217,205,155, 55, 31, 53,106,212,200,255,218,181,107,
+ 91, 62,248,224,131,174, 40,109,243, 55,237,254,173,211,161,111,223,190,170,130,130,130,227, 69, 69, 69,195,238,223,191,175, 10,
+ 9, 9, 41, 95,119, 34, 63, 63,127, 88, 45,206,209,130,181,107,215,206, 41, 59, 87, 91, 86,173, 90,245,225,212,169, 83,237, 82,
+ 82, 82, 94, 24,172,204,236,220,179, 45,123, 76, 48,230,228, 23,104, 55,173,154,246,142, 84, 34, 22,125,190,108,211,121, 61, 15,
+215,184, 42,167, 18, 68,198, 66, 80, 38,245,157, 14, 86,226, 53,223,108, 20, 14,239,221, 64, 18,228,239, 94,106,174,132, 86,184,
+249, 48, 31,115,190,218,195,126, 57,206, 46, 14, 44,146, 96,196,147, 26, 53,205,248,133, 40,209,103,126,216, 69, 40, 94,250,227,
+164,250,173,122,126, 38, 14, 8,106,246,194, 8, 61,142,186,133, 85,139, 39,176, 95,142,181,142, 3, 75, 82, 97,192, 99, 83,147,
+107, 48, 24,222, 89,182,108,217,241,225,195,135,203, 27, 54,108,248, 66,243,249,243,231,248,242,203, 47,213, 26,141,230,109, 83,
+175, 74, 48,129,193, 70,163,209,254,231,147, 57,222,159, 78, 28, 43,147, 50,185, 64,220,138, 82,243, 34,176, 64,112,144, 45,230,
+ 76,116, 20, 76, 89,122, 40,240,242,183,245,149,208, 11, 3, 0,164,154,162,206,231,243,143, 44, 89,178, 68, 38,149, 74, 17, 19,
+ 19, 3,169, 84, 10,137, 68,130,144,144, 16,172, 94,189, 90,246,209, 71, 31, 29,139,136,136, 48, 59,127,254,188,161, 54, 38,171,
+133, 31, 9,159,246, 93,236,213,229,159, 88, 58, 54,246,179, 69,118, 17,240,225,220,195,121,185,133,234, 1,181, 49, 87, 21, 77,
+ 22, 33,164,243,164, 73,147, 78,110,222,188,217, 38, 32, 32, 0, 73, 73, 73, 24, 52,104, 80, 78, 86, 86, 86,251,127,128,185, 2,
+128, 98, 0, 46, 0,162, 81,218, 23,233, 41, 33, 68,132,215,120, 61,219,195,135, 15,111, 39, 36, 36, 56,141, 28, 57, 18,133,133,
+133, 86, 3, 7, 14,196,179,103,207, 16, 29, 29,125,231,117, 18,170, 86,171,111, 18, 66, 26,125,250,233,167, 67,167, 77,155,214,
+ 74,161, 80,120, 82, 74,105, 97, 97, 97,156,209,104,188, 12, 96, 7,165,166,191,135,179,204, 48, 61, 37,132,196,197,198,198, 58,
+108,217,178,197,178,236, 24, 0,128, 26, 64, 1,128,140,186,154,194,255,199,220,252,155,190,251, 90,142,209,164,229, 29, 79,180,
+ 26,222,128, 92,120,175, 62,138, 6,215,135,114,184, 23,185,252,118, 3,180,171,238, 59, 0,130, 42, 91,223,180,105, 83,106, 48,
+ 24,232,201,147, 39,105,183,110,221,138, 91,183,110,125, 57, 36, 36,196,199,148,116,188,170, 25, 17, 17,113, 60, 52, 52,116,192,
+171,235,154, 53,107, 54,176,226,186,118,237,218, 69,181,107,215,174,160,109,219,182,207, 76, 73,103,219,182,109, 31,183,106,213,
+170,184,109,219,182,143, 43,174, 15, 11, 11,235,211,161, 67,135, 35, 21,215, 53,107,214,172,247,171,235,170,202,123,199,142, 29,
+147,162,163,163,105, 98, 98, 34,237,222,189,123,106,249,250,183,222,122, 43,233,238,221,187, 52, 58, 58,154,118,237,218, 53,181,
+ 54,199,179,226, 18, 26, 26, 58,170, 77,155, 54, 87, 94, 73,243,135,175,174,171, 78,179, 77,155, 54, 87,194,194,194, 62,124,117,
+ 93,104,104,232,168,186,156,163,138,139,147,147,147,111,112,112,112,230,170, 85,171,104,253,250,245, 51, 43,110,107, 24, 49,226,
+139,252, 66,101,225,212, 5,223,239,182, 11,232,219,168,182,121,175,237,242,175,213,124, 20, 32,164,191, 7,180,162, 23, 3,142,
+ 60,222,230,254,104, 88,103,185, 38,114, 71, 87, 74, 31,127, 70,175,237, 25, 73,195, 3, 68,198,223,191,117,139,166, 23,253,143,
+209, 75,190,109,233,177, 6, 34,147, 52, 47,122,181,161, 23,253,143, 61,220,226,254,168,111, 91, 59,237,142,109,235,233,211,167,
+ 79,233,111,251,119,208, 22, 1,178, 50,205,128,147,244, 98, 64,123,147, 52, 95,190,230, 91,133,135,135, 43,119,239,222, 77, 99,
+ 98, 98,232,169, 83,167,104,203,150, 45, 85,193,193,193,237, 77,207, 59, 8,189, 16,216,215,112,206,239,242,204, 65,102,249, 31,
+118,145,104, 6,181, 23,105,251,132, 11,117,157,155, 10, 13,173, 2,248,198,198,245, 25, 54,192, 13,180,115,136, 84, 67, 47,250,
+ 93,162,151, 3,186,152,154, 78, 31, 31,159, 68, 15, 15, 15, 90,213,226,235,235,155,213,174, 93, 59,126, 93,206,123,115, 95,184,
+119, 12, 19,167,157,249,177, 61,237,213, 86,145,211, 34,136,223,225,117,203, 18,128, 96, 91, 91,219,236,205,155, 55, 83, 7, 7,
+135, 44, 0, 13,255, 41,101, 30,128, 53,128, 62, 0,236,202, 62,155,161,116,254,161,250,175,161,217,178,115,231,206,250,219,183,
+111,211,103,207,158,209,227,199,143,211, 86,173, 90, 25, 0, 68,252,167,175,247,255, 71,154,255,181,133,252,149,209, 73, 66, 72,
+ 80,101,157, 13, 67, 66, 66,104,151, 46, 93,212, 23, 46, 92, 80,106,181,218, 49,183,110,221,250,237,117, 53,255,138,116,254, 21,
+154, 29, 58,116,184,194, 48, 76,253,178, 33,192,169,167, 79,159,110, 10, 0,237,219,183,191,194,227,241,234,151,153,222,212, 51,
+103,206, 52,253,175,229,189, 28,103,103,103, 95,134, 97, 78, 0,208, 36, 39, 39,191, 24,237,100,223,176, 79,184,181,149, 69,251,
+252,252,130, 59,233, 15, 14, 30,251, 47,230,253,141,105, 30,247, 18, 65, 33, 10,133, 17, 51, 30, 60, 83,121,126,190, 49,187, 65,
+207,206, 45, 5, 91,246, 92,100,151,143,183,143,109, 25, 40,127, 14,194,126, 9,163,230, 6,218,197,107, 76,214,148,145,102,128,
+ 96,198,221, 88,149,251,212,239,242,188, 59,246,250,144,119,104,239,122,246,171,241, 54,177, 45, 3,205, 18, 1,124, 9, 86,117,
+213,100,205,151,175,251, 86, 98,177,248,216,224,193,131,205,118,238,220,169, 46, 41, 41,233,121,251,246,237,115,181,202,251, 85,
+255,122, 48,144,197, 0,117, 51,161, 65,254, 41, 12,236, 66,180,127,156,248, 79, 56,239, 45,252,136,187, 92, 33, 62,172,210, 24,
+ 38,153, 18,185, 50, 69,147, 16, 18,108,101,101,181, 61, 47, 47,111,160, 41,145,171,255,101,222, 9, 33,118, 40,157,136,145,143,
+210,105, 11,162,106,234,195,100,130,102,107, 30,143, 55,189, 65,131, 6,141,159, 61,123,246,192,104, 52,126, 69, 41, 61,255,255,
+225,222,241,255, 65,243,191,198,223, 98,176,218,180,105, 19,105, 52, 26,143, 11,133,194,197,231,207,159,215,112,133,143,211,228,
+ 52,235,160, 89,193,100, 69, 70, 23,215, 95,250,115,174,251,228,129, 86,137, 53,153,171, 26, 53,203, 76,214,141, 39, 42,143, 47,
+119, 20,185, 79, 25,104,150, 88,147,185, 50, 53,239, 33, 33, 33,173, 36, 18,201, 86,181, 90, 61,170, 38,115, 85,169,230,227, 64,
+ 33,242,244, 46, 48,240,130,192,160,234, 87,237,176, 84, 5, 1,239, 1,210,144,129,119, 30,234,184,178,196,105,114,154,156,193,
+250, 95,243,183,204,122,124,233,210,165, 16,238,208,115,112,188, 38, 93, 99,181, 56,238,117, 11, 10,209,178, 16, 95,233,132, 95,
+ 23, 75, 85, 96, 73, 50, 8,187,186, 58,115,101,130,230, 13,200,244,203,154,249, 74, 39,237, 95, 44, 85, 1, 72, 7,197,170,234,
+204,149,169, 68, 70, 70,254, 14,160,126,157, 5,252, 31,234, 0, 60, 7, 72, 60,230, 87, 51, 59,246, 92, 80,128,235, 60,204,193,
+193,241,255,204, 96,113,112,112,188, 65,147,245, 56,240, 38,114,120, 83, 97, 68,125,136, 13, 9,200, 55,164,163,107,188,246, 53,
+ 53,175, 35,135,124, 2, 22,190, 16, 25, 98,145,175,125, 61,205, 55, 14,165,165, 38,138,131,131,131,131, 51, 88, 28, 28, 28,127,
+ 5,165, 81,157,228,178,229,159,171,201,193,193,193,241,255, 8, 2, 32,168,242,231, 67,211,219, 86, 9, 33, 65,181,127,254,172,
+177,243, 38,167,201,105,114,154,156, 38,167,201,105,114,154,255, 49,205,154,180,255, 43,125,187,254,150, 78,238,156, 38,167,201,
+105,114,154,156, 38,167,201,105,114,154,255,101,184, 23,233,114,112,112,112,112,112,112,112,188, 97,254,214, 62, 88, 50, 91, 95,
+ 39,240,153,198,132,165,254, 0, 64, 25,242, 24, 6,246,158, 42, 59, 58,237,117,181,137, 67, 35,153,153,128,183, 67,169, 55,190,
+ 71, 51,238,171,222,144, 99,111, 13,192, 29, 64, 2,165,244, 50, 87,124, 56, 56, 56, 56, 56, 56, 56,106,101,176,124, 91,246,187,
+ 36,151,202,189, 1,128,165, 20, 70, 22, 40,204,203,188,154,112,239, 84, 63, 0,112,110,248,214,126,145,220, 54,156,101, 41, 88,
+ 74, 97, 96, 41, 12, 26,245,211,172,135, 71, 76,122,243,188,153,189, 95,191,142,157, 59,246,239,217,179,135, 95,163,160, 70, 94,
+ 0,112,255,193,253,216,195,135,143, 60, 49,179,247,251, 85,153,249,100,255,235,100,204, 76, 32,248, 34,172, 89,243, 46, 55,111,
+ 94,159, 13, 96,214, 27, 58, 94, 66,122,185,251, 54,210,250,232, 91, 92,209,225,224,224,224,224,224,224,168,181,193,146, 75,229,
+222,103, 15,110,180,223,127, 41, 9, 0,208, 49,196, 17,243,191,222,220,151, 16,242, 4, 0,222,254,232,107,223,207, 63, 29,134,
+ 43, 81, 89,160,148, 34,216,219, 26,125,135,124,100,210,143, 74, 29, 3,195, 6,190,251,238,123, 83,167, 78,233,253,244,233,211,
+248,157, 59,119, 94, 2,128, 54,109,219,122, 47, 89,178,228,221, 21, 86,214, 98,169, 99, 96,138, 58,253, 97,157,222, 31,100,230,
+232,101, 27,208, 48,244,195, 29, 63,125,197,239,208,125,208, 72, 51, 71,175, 85,202,244,216,236,186,104,137,221, 26,214,183, 16,
+ 8,231, 19,134,225, 91,216,123,216, 3,128,149, 91,240, 97,231,134,221,140, 18,137,244,126,177, 90,189, 53,243,209,241, 13,220,
+ 11, 59, 57, 56, 56, 56, 56, 56, 56,106, 52, 88, 0, 96, 38,225,227,201,243,210,214, 58, 75, 25, 48,250,131,183,145,145,145,238,
+171, 51,176, 24, 58,176, 31,110, 63, 73, 67,244,243, 44, 80, 10,248,186,154,252, 46, 97,240,192,134,142, 24, 57,162,221,137,147,
+ 39,111,124,241,249, 23,219, 8,193, 85, 0, 88,255,227, 79,225,115,230,206, 25, 53,244,131,161,157,246,238,221, 27,133, 58,190,
+160,145, 17, 90,174,250,114,241,124,179,148,236,146,146,137, 83, 62,227, 77,253,244,147, 21, 0, 62,168,139,185, 10,112,115, 93,
+124,233,228, 94,153, 76, 38,195,134, 13, 27,196,192, 65,204,155, 58, 66,210,163,103, 79, 24,193,107,249,213,183, 59, 27,159, 20,
+137, 70,218,250,118,234,151, 29,125, 42,141, 43, 82, 28, 28, 28, 28, 28, 28, 28,213,118,114, 55,178, 20,143,227,210,241, 56, 46,
+ 29,215, 31,103, 65,107,228, 99,197,162,233, 88, 54,111, 26,114, 84,192,129,223,147,240,228,121, 58,158, 60, 79, 71, 78,190, 18,
+175, 78,251,247,234, 8,131,175, 63,145, 53, 93, 61,205,226,171,174,161,242, 8,107, 43, 43,171,152, 27,219,138,231, 12,201, 8,
+152,255,110,146, 80, 32,113, 72,182,114,168,215,114,207,222,189,129, 14,118,246,114,115,115,139,105,214,254,157, 55, 90,122, 68,
+ 88, 84,167,249, 39, 83,232,216,176, 93,175, 30,221,123, 56, 58, 58, 24,199,172,190,245, 56,200,223,215,224,227,235, 31, 97,230,
+232,215,174,170,239, 84,166, 41,118,107, 88,223,203,201, 97,241,133,227,123,101, 37, 37, 37,120,240,224, 1,114,114,114, 74, 55,
+ 18, 2,134,225,161,158,139, 19,214, 45,157, 34,155, 55,125, 92,136, 88, 34, 59, 72, 8, 33,166,166,179, 46,112,154,156, 38,167,
+201,105,114,154,156,230,127, 85,243, 63,105,176, 8, 33,149, 54,111,197, 38,229,224, 73, 92, 26,154,250,187,192,203,195, 17, 55,
+ 98,242,176,227,108, 18, 54,157,140,199,217,123, 89, 96, 5, 10,164, 23, 17, 60, 77,200, 64,116,124,118,141,211, 42,243, 68,130,
+129,147,150, 23, 76, 13,172, 95,216,226,252,238, 9,112, 54,139, 9,156,254,117,254, 4,158, 72, 48,208,222,209,114,231,212, 79,
+198, 14, 81,200,164, 34,173, 70, 11, 79, 15, 55,201,184, 81, 35,134, 11,205,228, 59, 77,205,140,157, 93,160, 92, 36,149,111, 91,
+ 60,103,138,100,229,254,152,196, 98, 45, 45,222,123, 37,245,217,212, 25,115, 10,121, 2,233,143,118,118,129,114, 83,116,196,110,
+ 13,235,187,219,216, 44,190,124, 98,175, 76,167,211, 32, 53, 53, 21, 90,173, 22, 6,131,225,143,194, 5,160, 72,109, 64, 92,154,
+ 26,237,218,182,226, 53, 13,110,232,111,231,223,109, 12, 87,164, 56, 56, 56, 56, 56, 56,106, 79, 85, 94,228, 95,109,176, 42,163,
+ 88, 93,252,244,253, 49, 83, 51,189, 21,105,218,126,237, 3, 0, 10,100,165,197,227,225,141, 19,136,137, 60,137,162,172, 68, 80,
+ 10,120,120,212,131, 80, 29,167, 93,255,195,119,153,172,161,228,105, 85,122,125, 58, 59,187, 62, 77,145, 51,203,167,214,187, 26,
+ 19,157,102, 59,126,234,102,196, 68,167,217, 46,159, 90,239,234,211, 20, 57, 35, 19, 26, 91,126, 48,168, 15,233,211,179, 43,166,
+ 79,159,138, 62, 61,187, 98,234,216,119,137, 68, 36,104, 97,106,102, 74, 68,146,101, 51,190, 88,160, 72,207,215,105,175, 71, 23,
+106,204,100, 50,241,239,143,139, 85, 26, 42,213,245, 30, 56, 58, 75, 35,228, 47, 48,197, 92, 57,153,155, 47,190,114,122,159,140,
+ 82,138,228,228,100,232,116, 58,232,245,122,232,245,250, 23,251,229, 43,245, 72,204, 82, 35, 33, 83,133, 7,241,133,232,214,181,
+171,140, 47, 16, 13,225, 46, 17, 14, 14, 14, 14, 14, 14,142, 42, 13, 86,244,149,253,109, 34, 79,111,115,200,206,200, 40,144,139,
+249,224, 51, 12, 50,147,159, 97,235,215,159, 96,239, 55, 83,144,159,246, 20,148, 2, 82, 33, 15, 26,101, 78, 65,218,157, 61, 14,
+217,213,140, 32, 36,208,119,250,118,251,115,207,248, 52,106,177,227,184, 82, 0, 0, 59,142, 43, 5,241,105,212,226,219,237,207,
+ 61, 69, 52, 11,172,209,136,158,125,222,198,182, 45, 27, 16,222,161, 15,246, 94, 76,132, 74,173, 51,233,253,103, 18, 7, 95, 15,
+123, 71,199,183, 39, 13,125, 75,209,204,215,202,204,199,205,146,199, 19, 8, 13, 34,129,152, 61,116,171, 32,165, 75,207,126,140,
+ 76,110,222, 85,226,224,235, 81,157,142,133, 64, 56,255,247,147,251,100, 60, 30, 15,137,137,137,208,233,116,208,106,181,208,104,
+ 52, 47, 34, 88,133, 42, 61, 82,114,212, 72,202, 82, 33, 49, 75,133, 71,137,133, 16,201,173,160,215,235,131,184, 34,197,193,193,
+193,193,193,193, 97,210, 68,163,169,153,185,176, 86,240, 96,231,236,137,247, 62, 89, 1, 0, 48,178, 6, 80,148, 78,207, 96, 74,
+ 76,143, 66,112,234,227,161,158,113, 30, 78,164, 96, 72, 55,153, 26, 0,134,116,147,169, 61,156, 72,193,199, 67, 61,227, 84, 70,
+ 43,157,209,104,196,229,168, 76, 44,255,229, 17,190,216,124, 15, 39,110,153,222,103,156, 47,144, 78,250,114,233, 18, 25,159, 71,
+ 72, 84, 66,145, 50, 45,215,160, 20, 10, 5, 58,129,136,175, 87,106,137, 58, 62,203,152,211,117,192,248,231, 60,158, 96,124,141,
+105,165, 44, 40,165,208,104, 52,208,106,181, 47,150,242, 8, 86,174, 82,135,212,156, 18, 36,102,169,145, 84,182,100,228,169,193,
+ 13, 36,228,224,224,224,224,224,224,120,201, 96, 17, 66,104,101,237,159, 44,128,152,248, 44,136,249, 44, 92,235,121,253,209,145,
+157, 2,148, 2,122, 3,107,210, 15, 29, 60,153,154, 92,223,165,152, 78, 91,145, 24, 30,228,111,115,111,220, 96,183,199, 65,254,
+ 54,247,166,173, 72, 12,175,239, 82, 76,245,172,200, 72, 41, 5,101, 41, 40,165,160, 20, 96, 89,211, 13, 11, 33,188, 22,193,254,
+238,252,249, 59,159, 38,140,255, 46,250, 49,225,243,245, 34,145,200,224, 96, 33, 37,174,182, 82,126,145, 6, 37,126, 65, 77,245,
+ 4,104, 90,157, 78,129, 94, 55,183, 85,151, 1, 42,157,206, 0, 55, 55, 55,104,181,218, 23, 77,132,229, 17,172,124,165, 14, 41,
+185, 37, 72,202, 82, 35, 49, 75, 13,117,137, 17,247, 31,199,131, 48, 60,174,211, 31, 7, 7, 7, 7, 7, 71, 29,169,202,139,252,
+107, 13, 22,165,148,148, 47,149,237,228,238,230,128,235, 15, 18, 80,207, 65, 12,115, 11, 5, 30,199, 38,131,225,241,193, 99, 8,
+ 12, 70,211,143, 3,213,234,127, 89, 57,205, 98, 69, 98,154,241,218,119,219,159, 61, 77, 76, 51, 94, 91, 57,205, 98, 5,213,234,
+127, 41, 77, 71,233,164,166,108,133,191, 38,107, 83,214,222,214, 66,204,191, 25,171,204, 37, 60,190, 70, 40,224,107,156,108,196,
+196,201, 86,202,119,179,145,138,228, 18, 1,227,228,224,192,130, 82,135,234,116, 52, 73, 81,113,233,133,133,179,219,116,126, 91,
+ 37, 16, 8, 80,191,126,253, 23, 17,172,114,131, 85, 26,193, 82, 35, 49, 75,133,244,220, 18, 72,197, 12,238, 94, 61,163, 50, 26,
+245, 91,185,203,131,131,131,131,131,131,163,246,212,228, 69,254,109,240, 77,200, 49,228, 50, 41, 88, 70,130,203,183, 98,225, 31,
+208, 24,155,127,187, 1,175,160,230, 72, 43, 50,128,214,226,117,134, 83,214,168,110, 3,184,221,167,179,179,107,191,110, 46,157,
+ 40, 4,167,190,221, 89,144, 12, 0, 27,195,251,149, 25,171,210,200, 21, 75, 75,167,137, 48,217,245, 2,169,137,153,197,102,158,
+142,114, 60, 74,210,106, 20, 50,137,193, 82, 38,228,219, 89,136,120,230, 82, 62,159, 47,100,152,252,252,172, 34,128,164,214,164,
+165, 73,138,138, 19,187, 53,156,221,182,219,160,197,151,142,239,150, 53,104,208, 0,119,239,222,125,209, 68,168, 42, 49,128, 20,
+233, 32,144, 82,248,184,152,225,241,237, 75,198,156,204,148,135,121,209,199, 55,112,151, 8, 7, 7, 7, 7, 7, 7,135, 73,238,
+136,101, 41,236,108,173, 32, 54,179, 64, 92,150, 22, 74,216,161, 64, 77,192, 26, 1,163,161,106, 19, 68, 8,169,180,211,247,193,
+147,169,201, 7, 78,102,109, 60,120, 50, 53,249, 21,247,250,162,121,144, 82, 90,105, 19, 97, 85,154,148, 26,143, 29, 62,117, 57,
+183,111, 11,123, 75, 70, 32, 80,139,196, 60,157, 84, 34,208,203,196,124,216, 91, 8, 69,174, 86, 66,241,249, 35,187, 24,194,210,
+179,166,104,106,146,162,226,158,103,102,206,238,208,115,176,202,193,209, 17, 67,135, 14, 69,189,122,245, 0, 0,214,114, 6,238,
+ 86, 12,248,154,116, 92,248,109, 99,241,227,200,115,145, 48,106,250, 85,156,205,189,170,116,190, 14,156, 38,167,201,105,114,154,
+156, 38,167,249, 95,213,252,175, 97,210,203,158, 27, 56,201,225,237, 34, 71,137,214, 1,106,173, 17,197, 26, 3,138, 84,122, 20,
+168,244,136, 79, 87, 33,250,252,235, 39,132,150, 25, 44, 80, 2,150, 82,128,148, 54, 19,154, 26, 40, 44, 22, 20,174,248,114,201,
+252, 65,187,247,236,167, 19,187, 59,185, 94,127,170, 78, 18,243, 4, 90,153,152,225,155, 75, 25,227,243,184,231,169, 39, 15,239,
+106,168,146,168,134,153,154,166,242, 72,150, 95,211, 14,243, 65,193,215,170, 11,228, 51, 90, 5,226,196,241, 35,106,209,229, 72,
+ 61,225,139, 30,176, 70,221,246,188,104,238, 85, 57, 28, 28, 28, 28, 28, 28, 28,181, 48, 88, 42,181,234,105,167,254, 31,150,189,
+240,153,194,104, 44,141, 44, 25,203,155,242, 88, 10,163, 78,253,244,117, 19, 98,100,217, 27,223,111,254,165,123,147,224,230,188,
+ 64,119, 5, 10,243,179,113,235,250, 85, 3,101,217,171, 38, 25,180,248,120,141,153,131,255,187, 3,222,238,187,107,228,216,137,
+202, 54,237,218,203,108,108,204, 13,217,153, 57,133, 91, 55,236,206,219,191,251,231,134,132,101,223,167,241,241,154,218,164, 75,
+147, 20, 21, 7, 96, 72,153, 99,239, 0, 4,182, 43, 78,189,215, 75, 73,255, 28, 9,227,224,224,224,224,224,224,224, 48,201, 96,
+197, 92,221,223,230,127,145,144,220,220,140,161,219,119,253,186,232,231,221,191,181,210,232,116, 46, 44,120, 73, 70,189,254,130,
+184, 40,103,142,169, 26,202,140,199, 15,137,135, 71,232, 79,223,172,248,244,199,111, 87,190, 5,214,232, 5, 66,158, 19,150,158,
+ 85, 74, 84, 35,105, 74,237,204, 85, 37,100,147,214, 71, 59, 3,200,230,138, 14, 7, 7, 7, 7, 7, 7, 71,157, 13,214,255,138,
+220,216,235, 69, 0, 38,190,174, 78, 89,132,106,105,217,242, 70, 41,123,247, 18, 55, 21, 3, 7, 7, 7, 7, 7, 7, 71,181, 48,
+220, 33,224,224,224,224,224,224,224,224,120,179, 16, 0, 85,140,202, 51,253, 77,217,117, 25, 77, 80,147, 62,167,201,105,114,154,
+156, 38,167,201,105,114,154,255, 61,205,154,180,107,227, 63,254,209, 6,235,175, 28,252, 70, 8, 9,122,211, 7,138,211,228, 52,
+ 57, 77, 78,147,211,228, 52, 57,205,255,158,230,127, 13,174,137,144,131,131,131,131,227,255, 29,182,190,189,205,108,125,123,155,
+153,186,191, 93,224, 0, 7,187,192, 1, 14,220,145,227, 48, 21, 62,119, 8,222,136,147, 23, 3, 96, 41,165,186,191, 43, 13, 86,
+ 86,245,205, 13, 10,219,253, 12,171,249,178, 32,233,222,169, 55,157,191,192,192,192, 96, 0,120,248,240,225, 29, 74,233,235,142,
+198,132,220,193,111,176,149,185,229, 24, 29,171, 53,170,138, 85,223, 43,211,163,247,190,201, 52,219,217, 5,202,181, 98,233,114,
+ 16,218, 13, 20, 12,101,200, 25, 94,161,126,114,126,254,221,130,234,190, 87,175,207, 82,255,145,239,244,248,124,227,222, 35,139,
+ 18, 15,206,124,252,234,118,235,110,235, 20, 19,135,190, 53,237,155, 95, 14,127,153,253,219, 52, 37, 87,250,107, 79,189,214,239,
+ 89, 26,248,142,188,212,243, 43,114,106,243, 61, 87,191,240, 40,129, 64, 96,167,211,233, 50, 83,162,175,153,212,108,225,230,223,
+242, 54,143,199, 56, 27, 13,108,114,210,147, 43,161,220,209,175, 25,153,179,127, 48, 49, 26,167, 83,214, 40, 96,193, 91, 85,146,
+ 21,115,249,117,244,156,157,157,165, 22, 22, 22,109,205,205,205,221,100, 50,153, 36, 47, 47, 79,157,151,151,151,152,144,144,112,
+150, 82,106,248, 59,242,104,215,176,239, 76,190,136,153, 91,246,255,252,172,168, 3, 75,171,223,191,207, 34,194,144,153,101,255,
+ 47,205,138, 58,248,249, 63,225, 92, 57, 52,234,223, 28,148,253,148, 97,120, 45,141,212,176, 36,243,254,193,239,106,243,253,240,
+240,240,190,122,189, 94, 92,254, 89, 32, 16,104,174, 94,189,122,128,187, 10,254, 38,131,229, 26, 56,192, 74,207,167,243,248, 60,
+230,109,150, 82, 69,218,157, 61,242,127,114, 6,221,155,191,127,139, 97, 24,215,138,235, 88,150, 77, 78,184,190,237,141, 84,182,
+132, 16,215,175, 39,133, 76,207,200, 81, 23, 18, 66, 22, 86,101, 62, 28,130, 7, 95, 33, 12,169, 79, 8, 1, 67, 0, 30, 67, 0,
+ 32, 53,241,250,246,166,149,104, 58,153,203,249,190,133,197,134, 7,148,210, 26,111, 66, 82, 27, 31,103,185,141,203,133,136,126,
+ 19, 60,111,157,216, 28, 96,230,224,255,150, 50,227,241,195, 55,144, 55, 59, 47, 47,175, 48, 95, 95, 95,155, 9, 19, 38, 8, 1,
+ 96,213,170, 85,222,222,222,222, 57,177,177,177, 55, 41,165, 89,117, 50, 87,246,254, 67,215,172, 88,176,173, 91,183,110, 72,205,
+ 42,198,242, 85,223, 69,152, 57,250, 14,120, 83, 38,139, 56,135, 72, 45,229,178, 7, 31,125, 58,199,181,123,251, 48,126,190, 82,
+143,163,103,175, 13,221,187,105,121, 7, 75,203, 38,141,170, 51, 89,172, 42,255,115, 7, 5,237,202,170,242, 1, 96,240,171,219,
+ 93,204,244, 29,173,101,232,230, 36,230,223, 5,240,107,141, 55,151,176, 15, 78, 8,132, 66,119, 66,152,210,243,206, 35, 96,202,
+202,128, 65,175, 77,120,122,105, 83,151,127, 68, 69, 29, 50, 52,157,128,216, 48,101,233, 35, 4, 96, 24, 6,124, 2,128,210,194,
+103, 87, 54,219,188,129,242,100, 17,228,109,217,176, 71,171,214, 27, 47,196,229,154,213,107,247,233, 17, 66,153,239, 18, 46,126,
+125,215,148,239, 75, 36, 18,171, 67,135, 14,217,117,237,218,213,194, 33,168,239, 5, 83,190, 99, 38,146, 4, 30, 62,252,155,176,
+107,215, 46,181, 40,159,126,157,192, 48,219, 9, 32, 96, 89,186,138,199,210,221,202,156,232,216,218, 78, 38,108, 31,212,119, 1,
+ 8, 2, 76,254, 2,197,163,204, 7, 7,230,212,241,216,242,164,246,126,195,164, 18,201, 84,111, 95,127,223,248,231,207,162, 11,
+ 11, 11, 86,170, 51,163, 55, 82, 74,217, 90,105, 25,140,147, 78,158,189,242, 14, 95, 32, 32, 93,218,135,201, 9, 33, 93,106,171,
+241, 82,217,114,112,232,187,110,221,186, 6,225,225,225, 0, 0,131,193, 96,190,103,207, 30,199,133, 11, 23,202, 77,185,134, 42,
+195,197,197,197,197,194,194,162,158, 84, 42,117, 1, 0,181, 90,157, 82, 80, 80,144,152,146,146,146, 82,211,119, 29,131, 7,216,
+ 50, 12, 22, 28,255,245, 71, 62, 0,116,233, 63,102,145,103,196,103, 86,132, 39, 80, 87,182,191,209,160,149, 51,132,124,122,230,
+208,102, 2, 0,111,245, 30, 62,195, 46,112,192, 55, 89, 15,247,100,252, 45, 15,244, 3, 6,240,108, 99,116,125, 9, 37,147, 67,
+ 66,195, 90,244,239,211, 13,129, 94,206,232, 59,104,220, 84, 0,181, 50, 88,122,189, 94,188,119,239, 94, 87,134, 97,120, 58,157,
+174,100,208,160, 65,153,175,147, 54,159,214, 31, 92, 1, 33,110, 58,131,225,167,132,107, 94,139, 40,157,203,190,154,118,167,231,
+252,217, 32,204, 40,202,178, 73,105,183,119,182,228, 12, 86, 25,182,190,189,205,120, 98,225,131,136, 54, 45,108,102,142,235, 39,
+250, 97,247, 37, 56, 7,191,155,146,122,103,183,203, 63, 53,131, 12,195,184, 30,220,177,206, 94, 42,230, 1, 0,148,106, 35,250,
+ 15,157, 80,243, 5, 28, 54,228, 60, 8,252,202,219, 80,141, 70,131,132,207, 23,148, 16, 0, 32,165,163, 3,164, 82,209,181,141,
+179,195, 11,134,247,170,255,254,244,111,110,111, 1, 96, 9, 32,189,210,139,130, 97, 92,119,109, 90,101,239, 98, 35, 1,159, 71,
+160, 84, 27,208,239,253,201,198,202, 12,219,198,217,225, 11,134,118,243, 24,104,223,117, 95,127, 0,199,170,189,129, 56, 6,250,
+ 43,108,157, 79,245, 31,189,192, 89, 13,115,124,190,104,165,253,149,147,123, 47,117,236,251,161, 46, 49, 57, 89,101,208,233,159,
+228,228,166, 77, 41, 74,141,142, 49,181,162, 54, 51, 51,107, 96,102,102,214,164, 91,183,110,146,169, 83,167, 10, 34, 34, 34, 94,
+108, 31, 61,122,180,240,252,249,243, 78, 43, 86,172,232,238,236,236, 92,162, 84, 42,239, 42,149,202,103,148, 82,163,169,231,196,
+209,209,238,227,183,251,246, 66,135,183, 63,130,145, 37, 24, 53,126, 18, 78, 28,251,117, 44,128, 55, 98,176,204,120,204,252, 81,
+ 19,102,185,182, 11, 15,225, 47,219,243, 20, 22, 50, 33,186, 52, 15,229,139,121,211,156,118,109, 90,177, 18,192,136,202, 34, 87,
+172, 42,255,243, 32, 91,221,160,222, 45,235,227,183, 93,186, 65,174, 29,167,129,145, 89,190,136,100,121,117,155,168,176,146, 74,
+214,185, 88,242,236,197,198,204,117, 94,221, 38,158,142, 61,182,182,168,186,180, 8,132, 66,247,141,223, 44,246,177, 54, 19,130,
+199, 35,224, 51, 12,120, 60, 2,141,214,136,161,227,102,190,169, 8, 35, 79,106,239,211,157, 1,134, 3, 0, 11,108, 86,103,198,
+ 28,173,205, 57, 33, 12,207,102,207,166, 21,124,123, 11, 17,120, 60, 2, 30, 83,186, 60, 79, 87, 99,226,103,243, 44, 94,215,168,
+119,107,101, 31,118,254,155,118, 93, 90, 4, 89, 55,254,229, 42,177,108,209,109,160, 77,118,137,116,216,174,131,231, 7,213,107,
+ 59,249, 58,165,236, 87, 73,151, 86,159,172, 78, 71,163,209,100,116,233,218,205,156,240,229,178,211,251,183,180, 45,127,217,188,
+222,200,254,241,114,120, 10,148, 63,196,176, 20, 24,253,225, 72,116,233,218, 77,197, 26,216,228, 90, 84, 26,219,143,159,190,108,
+ 87,162,167,248,122,221,134, 5,197, 5,217, 11,226, 30,219,196,203, 28,124, 63, 85,101, 68,255,102,122,198, 17, 16,125,101, 79,
+191, 29,135,175, 34, 40, 48, 0, 70,182,244,253,170,190,174,114,236, 60,114, 13,254,126,254,165,147, 55,179, 20,126,110,102,104,
+215,227,253, 58, 30,223, 8,190,220,193,127,103,223,129,195,223,233,247,246, 32, 88,154,155, 65,171,211,248,158, 61,121,236,199,
+239,215, 45,111, 69, 8, 25, 86, 27,115,200,178, 70,209, 31,255,235, 37, 0, 4, 0,180,175, 17,193,178, 11, 11, 11,123,241,217,
+ 96, 48,192,211,211, 19, 41, 41, 41,126,117, 48,107, 50,103,103,231, 30,203,151, 47,183,111,223,190,189,192,206,206, 14, 0,144,
+149,149,229,114,238,220,185,166, 77,155, 54,205, 76, 77, 77, 61,146,145,145,161,170,210, 84,176, 37, 66, 30,229,243,196, 98,105,
+153,175, 5, 51,117,194,123,141,237,236,236, 42,125, 56,206,201,201, 21,205,157, 59,135,240,249,130,210,253, 41,101, 40,107,172,
+242, 29, 35, 45, 91,182,236,173,211,233, 36,149,109,203, 54,216,117, 47, 97, 69, 3, 75,239, 34, 0,159,199,203, 75,189,179,215,
+206,100,211,222,184, 79,103, 39, 70,240,125,175, 62,125, 60,250,118,143,128,147,157, 5,206, 94,123,130, 79,102,127, 13,189,193,
+184,186, 46,231,135,199,227,241, 51, 51, 51,227,173,172,172, 28,223,192,253,182,254,193, 29,107,237,207, 93,186, 53,227, 27,241,
+174,113, 13, 90, 15,215,151,191,254,206,200, 82,248, 73,204, 5,109,251,116, 82,216,184,248, 74, 55,124,179, 76,192, 69,176, 42,
+158, 8, 17,111, 97,235,150, 97, 54, 51, 39,141, 20, 45,220,112, 1, 87, 79, 30, 81,167,222,217,243, 70,204,149,194,222, 47,156,
+240,248, 99, 8,143, 39, 39, 12, 17,177, 70, 54,201,160,213, 46, 82,101, 71,167,189,174,182,145, 5,246,253, 94, 75, 99, 78,169,
+247,143,223,126,109,239, 96, 41,134, 90,107,192,136,143,191,192,250,213, 11, 20,118, 22, 34,104,116, 70,108, 62,120, 51,187,113,
+241, 74, 58,188,123,253,247, 23,111,140,250,245,171,237,143,127, 45,189, 86,171, 40,120,132,129,189,133, 24,139,118, 62,129,185,
+ 76, 0,107, 51, 17, 24,166,114,115, 53,188, 87,169,102,126,145,214, 64, 8, 17, 81, 74, 43,173,220,204,156,130,218, 40,236, 92,
+247,246,251,112,129, 93, 76, 22, 1,165, 90, 60,179, 16,163,255,208,113,150, 94,142, 82,200, 37, 60,196, 39,165,121,126, 54,109,
+ 90,168,196,201, 63,172, 36,237,113, 98, 77,217,246,240,240,232,223,179,103, 79,217,148, 41, 83, 4,110,110,110,216,190,231,132,
+123,167,119, 38,246, 74, 73,207,113, 99, 41,224, 96,111,157, 52,114, 96,247, 67, 71,143, 30, 77, 72, 74, 74, 18, 44, 95,190,188,
+249,254,253,251, 3,107,243, 36,106,164, 20,106,173, 17, 70, 35, 11, 35, 75,144,149,175,169,195, 77,133, 48, 85, 63, 85,211, 62,
+157, 35,154,241, 87, 29,120,134, 34,149, 30, 82, 33, 15, 79,211,138, 17, 30, 30,198,223,189,153,180,175,236, 27, 35,223,233,241,
+185,131,130,118,237,221,178, 62,236,173,100,216,244,205, 98,252,118, 37,174,107, 70, 17,129,109,239,229, 99,156,196,252, 78,118,
+ 50,225,186,136, 80,111,199,183, 66,220,113, 43,212,219,241, 98,228,227,232, 70,239,174,156,144,162, 20,156,206, 61, 54,161,168,
+170,243,110,109, 38,196,134, 19,241,144,139, 5,144, 75,248,165,139,152, 15,134,121,189, 23,198, 75,157, 3,221,120,172,113,164,
+185,115,224,200, 65,239, 14,112, 30, 60,232, 29, 74, 24, 30,246,252,122,168,207,207, 63,111, 79, 51,115,244,219, 96,100,120, 27,
+213,169, 15,147,106, 62,158,128,189,133, 8,159,253,244, 0, 10,153, 0,230, 50, 1, 20, 82, 1,222,106, 98, 87,231,116, 18, 66,
+172,198,246,105,208,253,222,182,142,237,253,234,153,249,220,141, 45,120, 56,114,209,173,213,231,243,219, 79, 90,183, 42,208, 70,
+148,167,225,127, 49,245, 67,126, 74,106, 90,251, 61,135, 46,116,112,110, 54,242,137, 65, 87, 60, 43,243,238,238,131,149,233, 37,
+ 61,190,210,212, 53,124,128, 68,167,212,223,191, 27,157,236,149, 91, 34,194,195,132,194,178, 99, 42,128, 89,249,177, 45, 59,190,
+105,201,241,200, 85,241, 46,167,216, 48,237,233,249, 43,181,106,138, 82,235, 88,220,141, 83,194,195,183, 41, 28,157,156,161,237,
+254,158,199,141,179,251, 14,202,157, 2,150, 22,167, 61,154,101,170,206,142,195, 87,177,112,233,234, 24, 16, 60, 42,187,155, 7,
+ 76,153, 60,193,231,235,149,235, 94, 90, 55,238,163,241, 62,117, 53,215, 50, 7,191,159, 59,246, 30,246, 78,227,230,157, 16, 19,
+251, 12, 49, 81,183,240, 86,199, 46,232,214,179, 31,180,154,146,247, 55,254,184,238, 38,128,111,255, 84,231, 58, 5,180,110, 20,
+ 20,240,179,179,147,179, 27,165,101,175, 38,163, 20,237,219,183,199,180, 79, 71, 65,165, 44,130,159, 95, 80, 43,203, 54,157, 53,
+ 93, 7,126, 12,150,165,200,201,201, 46,126,242,248, 97, 71,117,198,227,235,166,166, 81,165, 82,233,179,178,178,112,231,206, 29,
+ 68, 71, 71, 35, 42, 42, 10, 57, 57, 57,176,176,176,168, 85, 19,187,149,149,149,121,104,104,232,123,187,119,239,150, 88, 88,252,
+225,249,181, 90, 45,100, 50, 25,250,246,237, 43,104,221,186,181,203,240,225,195, 63,176,178,178,218,145,151,151, 87, 88,169, 97,
+186,119, 56,213,177, 81,223, 31,186,191, 51,122, 28, 0, 8,197,102,113,107,126,250, 53,170,186,223, 22, 74,204,221, 59,246, 29,
+225, 5, 74, 65, 8, 89,147,253,248,215,244,170,246,213,233,116,210, 95,126,249,197,133, 16,242,210,253,117,193,218, 95, 90,222,
+143, 73,235,248,253,188,233,124,133, 92,140,236, 2, 45,198,140,155, 96,107,178,185,106,212,103,124, 88,211,166,223,126, 49,117,
+ 20,228, 50, 41, 78, 94,123,134, 79,103, 46, 53,228,102,103,110, 3, 33,171,178,162,246,191,110,171,197, 27, 25,241,230,227, 98,
+ 6, 69,151,112,201,168,119, 35, 36, 90,189, 17,121, 74, 61, 52, 58, 35, 88, 74, 81, 80,172,199,195,132, 34,216, 90, 8,177, 1,
+255,125,106,101,176,248, 2, 81,207,137,195,186,139, 86,236,184,142,171, 39,119,168, 83,111,239,145,149,111,115, 11, 29, 20,151,
+116,107, 87,253,151, 61, 74,205, 35, 12,164,206,129,110,124,194, 91,217,178, 77,203,206,163,199,140,163,141,253,220,133, 0,131,
+ 71, 49,207,245,155, 54,110, 24,102,225,214,104,117, 97,242,131,207,203,111,166,181, 29,181,192,178,108,242,171, 17, 43,150,101,
+147,107, 74, 39, 33,128,165, 92,128, 31,142,196,149, 62, 25,131,194, 66, 38,192,206,115,201, 40,204, 77,201,110,172, 94,249,251,
+200,238,246,189, 23,109,124,120,240,187, 67, 25,145, 0,162, 40,165, 25, 85,105, 18, 6,224,243, 8, 44,228, 66, 88,200, 4,176,
+ 48, 19,128, 33,164, 74,115,245,197,143,247,182, 0,120, 82,209, 92, 85,212,148, 59,248, 53, 52,183,243, 56,240,246,216, 37, 86,
+247, 19,117, 96, 24,160,190,163, 28, 86,102, 34,104,245, 64,124,150,174, 44,175,230, 24, 63,101,158,221,140,201, 99,143, 18, 18,
+209,152,210,243,134,234,242,174, 82,169, 68, 67,135, 14, 21,232,245,122,221,240, 79, 22,117, 78,203,200,238,179,122,201,103, 98,
+ 91, 91, 27, 20,151, 24,112,231, 81,124,192,210,175,190,169,127,236,252,141,253, 51,198,246,249,173,107,215,174, 22,191,252,242,
+ 11, 91,155,243,158,149,145,253,205,230,237,123,183,173, 90,177, 20,143,227,115,177,233,199,239, 64,141,134, 31,170,247,187, 47,
+107,174, 95,191,222, 62, 60, 60,156,185,118,237, 90,206,171, 6,148, 16,200,115, 11, 52,176,148, 11, 33, 19,243,225,104, 41,134,
+141, 66, 8,177,144, 1,195,252, 81,137, 84,212,220,184,247,200, 34, 86,149,143,223,118,233, 6,109,250,102, 49, 70,124, 60, 27,
+ 15,178,133,199, 25,153,229,162,143, 7,246,153,110, 45, 67, 55, 23, 75,198,254,173, 16, 15,200, 37, 66,204,156, 56, 20, 97,145,
+241,246,201,249,236,236, 92, 21,154, 0,248,188,178,116, 50, 60, 2, 62,143,129, 66, 42,192,249, 35, 59, 51, 85, 69, 5, 5,132,
+ 87, 26, 97,209,107,117, 9,166,121,253, 63, 31, 79,185,131,223,140,144,224,198,139,199,141, 30,201,180, 10,111, 70, 25,134,143,
+236, 66, 29,161,160,152,244,241, 88,140, 31, 59,202, 49, 57, 37, 99,206,183,223,173,255,220,204, 62, 96,161, 50,243,209,188,234,
+ 52,121,132, 1,195, 16,200,165, 2,152, 73,254, 88, 74,180, 44, 8, 1,207, 53,100, 80, 1, 8, 64, 8, 73, 77,186,185, 51,192,
+148,116, 58, 55,234,118,230, 66,166,208, 95,117,180,228,234,211,152,219,139,110,220, 75,188, 65, 41,205,173,215,110,242, 7,122,
+ 61,133,178,196,128,231, 25, 42, 24,180,148,140,232,234, 14,207,119,136,223,146, 77,183,183, 17, 66,204,203, 35, 46,175,106, 38,
+ 95,221, 83, 98,219,168,255,192, 85,107,215,223, 92,177,120, 54, 47,167, 80, 11, 35, 5,164, 34, 30, 36,101,139, 84,200, 67, 73,
+113, 1,190,253,225,167,116, 3, 72,127,122,190,250, 50,255,231, 74,131, 14,233,223,189,237, 46, 2,136, 8, 35, 76,118,118,247,
+112,239,208,115,152,228,173, 94,239,195,104,208,205,144, 59,248,159, 43,206,120,124,198, 20,205,160,192, 0,128,224, 81,230,253,
+ 3,253, 75,111,146,125,127,245,247,243,247,121,117,157,183,183,175,143, 41,231,189,252,225, 66,106,231, 51,218,219,191,209,180,
+113, 95,172,247, 72,205,209,192,202,197, 27,119,110, 71,226,196,158,111,111,171,139,242, 86,156, 56,188,127,218,194,101,171,155,
+244,236,251, 46, 14, 30,216, 61,133, 16,242, 29, 45,229,133, 38,101,217, 33, 91, 54,172,119, 19, 8,197,208, 27, 41,244, 6, 22,
+122, 35, 11,189,129, 34, 45, 45, 21, 69, 74, 37, 36, 82, 5,228,230,214,208, 27, 74, 35,133, 26,141, 94, 62,246,253,158,227, 1,
+ 92,175, 44,157,158,205,135,222, 2, 67, 92, 75,215,151,153, 19,198, 74,229,228,228,180, 13, 0,196, 98, 49,196, 98, 49, 12, 6,
+ 3,238,167, 98,146,115,216,144,153,160,101,119,118,150, 77, 78,187,189, 51,180,170,188,187,185,185,245,170,204, 92, 41,149, 74,
+252,126,243,158,197,230, 95, 78,118,141, 79, 74,111,192, 26,237, 53, 82,199, 38, 93, 0,244,170,234,120,166,223, 63, 48,190, 94,
+196, 36,102,202,184,161,222,107,126,218,123, 35,230,248,194,106,195,201,245, 59,206,208, 78, 27, 63, 56,244,203, 53,155, 98,146,
+ 47,172,254,180,166,115, 36, 20, 10, 5, 89, 89, 89, 47,174,239, 5,235,246,117, 75,204, 40,236,248,213,226,217,194, 59,207,148,
+184,247, 60, 13,195, 58,185,155,124,189, 59, 53,236,231,231,238,225,182,122,245,194, 79, 16,157,170,198,186,125, 55,112,225,200,
+182, 72, 93, 73, 81,143,204,168,223, 50,235, 82,135,188,174,193,170, 76,179,252, 70,112,238, 94, 54,138,212,165,198, 74,111,100,
+ 81,164, 54, 32, 51, 95,131,130, 98, 61,148, 37,122, 12,235,232, 94, 23,191, 18, 6,192, 14, 64, 22,128,155,175,124, 70,217,255,
+168,228,115,118, 89,196,208,166, 44, 18, 43,170,160, 89,254,185,170,245,229,223,127, 8, 32,160, 76,211, 8,224, 6,128,188, 26,
+ 61, 19, 33,132, 82,250,199, 43,149, 95,253,252, 82,228,193,160,119,117,118,114, 2, 75,147,203, 35,156,165, 81,143,230,131, 84,
+159,142, 30, 32,117, 14,126,167, 56,245,206, 94,147,251,100, 41,236,125, 91, 74,165,178, 35, 75,151, 45,167, 3,123,181, 19,165,
+ 23,232,213, 15, 83, 74,178,148, 26,106,112,180,243, 18, 47,251,242, 75,179, 37,203, 86,124,180,255, 87, 54, 31,192, 87,149,134,
+159,195, 6,223, 34,132,113,101,254, 8,203,131,178, 52, 57,249,230,142, 80, 0,120,157,190, 86,197, 37, 6,240,120, 4,130,178,
+ 62, 41, 42,173, 17,170,252,244,156,198,170,213,191,143,236, 90,106,174,174,167, 56, 62,227,241,178,116,148,210,106,155, 32, 24,
+ 66, 80,168,210,195, 92, 42,128,133, 92, 8, 75,153,240, 69, 4,171, 10,115, 21, 85,157,166, 80,167, 75, 50,234, 53, 37,212,104,
+ 68,247, 48, 59,216, 91,136,224,100, 37,134, 68,196,135,222, 8,168,181, 44,212, 90, 35, 18, 50, 85, 40, 82,137,209,168,221, 32,
+111, 91,167,235, 42, 91,143,176, 45,217,241, 55,199, 84, 27, 97, 50, 26,241,243,222, 19,222, 41,105,153,125, 14,110, 95, 41,206,
+ 44,208,227, 94,188, 18,153,121, 90, 80, 98,129,153,159,127, 46,254,226,139,185,253,118, 31, 56,243,188,101,168,111,114,173,143,
+107,230,227,237,141, 91,245,248,166, 71,175,190,138,135, 55,142, 33,230,206,153, 47,148, 25,181,235,127,229,238,238,110,252,246,
+219,111, 45,127,248,225, 7,111,123,123,251,164,204,204,204,184,242,230, 40,207,192,240,212, 83,103, 47,218,180,107,213,150,159,
+148, 93, 2, 91,133, 16,238, 14, 50, 68, 94, 57,167,101, 8, 57, 94,153, 94, 89, 51,224, 96,215,142,211,240,219,149,184,174, 81,
+ 57,226,243, 31,142, 26, 17,127,234,200,141,156,181,219,207, 44,119, 49,211,223,149,176,153,235, 34, 67,189, 29,103, 76, 24,138,
+165,107,183,227, 66,228,227,204, 98,198,121,113,154,198,112,106,238,160,202, 91, 59,120, 12, 32,224, 19, 40,164, 2,168,138, 11,
+ 10, 30,156,254,206,247, 13, 61, 28,125,112,226,192,118, 38,183, 72,143,228,108, 53, 73,205, 41,130,129,101, 97, 41, 23,193,192,
+ 2,249,185,217,228,231,159,183,227,230,205,171, 12,120,204,135, 0,230,213, 20,193,226, 49, 4,102, 18, 62,204,164,165, 81, 32,
+ 51, 41, 31, 58, 3, 11,159,250,110, 88,189, 96,162,185,157,189, 3, 58,247, 31, 99,122,132, 77,110,213,100,235,247, 11,113,254,
+234,221,136,115, 79,119,134,217, 7, 53, 89,235, 26, 56, 96, 5, 99,237,172,214,232,141, 40, 44,200, 67,137, 38, 9,205, 92,178,
+ 97, 45, 55, 34,190,208, 9, 15,210, 99,204,106,106,206,202,190,255,235, 29,187,160,126,159,239, 57,116,118,105,151, 78, 17,136,
+122, 94, 88,106,174,132,165,230,138, 79, 88,172,252, 97,189, 62,175,160,168,103,246,131, 3,217,117, 40,159,167,203, 42,227,210,
+ 72,177, 67, 3,187,159,215,125,190,117,212,180,229, 93,186,244,251,128, 60,184,121,110, 22,128, 51,166, 70,207,255,188,142,154,
+180,174, 42,115,101,239, 21,186, 99,243,150,157, 3, 3,125,220,144,145,175, 71,106,158, 14,151, 34,159, 98,255,250, 89,249,249,
+ 25,207,134, 64,167, 84,178,196, 80,112,242,196,161,227, 31, 77,156,134,134, 13,155,120, 20, 38, 23,154, 3, 40,120,233,102,200,
+ 35,235,223, 31, 57,118,160,131,189,131,130, 45,139, 96,177,148,194,207, 47, 16,221,123,245,199,249,139, 87,240, 48,234, 94,233,
+122, 22,160,148, 34, 63, 47, 39,221,160,215,110,169, 50,125, 60,226,186,249,135,149,246, 12, 1,116, 6, 22, 90, 61,139, 25, 51,
+191,208,126, 50,103, 93,235, 46,173, 26, 71,241,192, 22, 38,166,229, 91,222,124,146,214,136, 8,204,157,222, 27, 61, 93,168,214,
+ 25, 81,168,210,227,204,158, 53, 85, 55, 51, 54,104, 18,238, 25,208,122,228,232,217, 63,136,197, 60, 70,215,208,215, 45,174, 93,
+139,134, 73,245,156,109,139,150,172,249,185,217,149,200, 39,221,251,191,221, 79, 50,176, 65, 32,113,182,145, 40,198,142,159,208,
+216,209,167,245,251,233, 49,151,183, 85,121,243,227,139,243,221, 92,221, 94, 52, 37,218, 7,245,189, 7,224,213, 59,127, 66,230,
+131, 3,141, 1,192,222,193,177,132, 8,196, 69,181, 48, 32, 20, 0,230,175,221,219, 61, 57, 75,249,206, 87,139,103, 11,239,196,
+ 21,227,206,179, 2,136,132, 60,104,116,166,119,107, 51, 18, 58,105,250,132, 17,130,220, 98, 3,206,221,203,194,131, 91,103,169,
+ 65, 87, 56,140, 18,254,112,187,160,190,239, 19,192,147, 2,207, 25,130, 31,181, 12,182,228,223, 61, 80, 80,215, 8,150,125, 96,
+255,150,132,135,238, 60,190, 48, 12, 96,253, 13,122,189, 61,195,227,101,167,223,221,235, 80,139,188, 67,149, 25,131,229, 75,230,
+ 96,245,134,253,184, 17,157, 11, 11, 67, 18, 14,110, 90,140, 41, 75,127,134, 74,107,172,170,124, 87,231, 71,236, 8, 33,135, 41,
+165, 61, 1,116, 4, 32,170,240, 25,132,144,195,101,191,253,210,231, 25, 51,102,204, 90,186,116,105, 84,249,190,229,235,203,247,
+173,110,125,133,239,219,204,156, 57, 51,104,217,178,101, 75,194,195,195,119, 93,185,114, 37,206, 36,131, 85, 49, 19,132,144, 42,
+175,114,135, 70,125,154, 1, 12,207,209,198, 12,222,245,221, 32, 31, 48, 92,234, 26, 50,176,152,199, 99,152, 45,171,103, 73,114,
+212,124,240,121,188, 98,147, 43, 95, 7,255,230, 10,133,226,232, 47,187,247, 81, 31, 15, 71,209,190,107,249,137,145,113,170, 23,
+ 33,221,194,172, 4,145,183,181,134, 55,240,221,254,242,227, 39, 79, 77,170,202, 96, 17,194,184,174, 93,249,165,189, 66, 42, 0,
+ 67,128, 66,181, 1,147, 38, 79,127,237,187, 23, 5,229,141,159, 60, 23, 12, 41,189,249, 40, 11,114,177,120,213,102,101,127,215,
+179,151, 71,118,181,237,189,104,227,195,131, 39, 31, 73,159,246,235,215,161, 32, 62, 62,190,198, 3, 77,168, 49,249,157, 15, 62,
+ 17, 50, 76,105,179, 17, 33, 4,128, 49,163, 46,230, 10, 0,242,242,226, 10,165,142,141,251,109, 95, 57, 97, 67, 61, 87, 23,107,
+133, 76, 2, 51,185,152,248,251,121, 73, 90, 52, 15,151,186,123, 53, 20, 94,124,164, 68, 98,150, 26,207, 82, 10, 33,182, 11, 18,
+ 12,140,232,132,237,107,166,119, 55, 37,255,103,175, 62,232,245,221,138,217,226,140, 60, 29, 30, 37, 21, 33, 61, 87,131,244,188,
+ 18,164,231,105, 96, 38,225,163,197, 91,253,197,191,157,217,219,183,101,168,239,218,186, 28,223,103,177,113,251, 19, 82,210,134,
+ 53, 14,110,134,159,183,110,110, 65, 92, 93, 37, 52, 57,185,196,212,239,111,216,176, 33,183,105,211,166,182, 95,125,245, 85,177,
+159,159, 95, 19, 63, 63,191,250,209,209,209,231, 27, 52,104,208,235,251, 53, 11,207,127, 50,123,133, 59, 31, 6,139, 22,173, 90,
+241,100, 34,130,107, 23, 79,106,182,108,248, 33, 85,151,175,156, 86,173, 17,150, 89, 46,202, 40, 34,176,115,118,123, 32, 23,232,
+ 59, 11,100,186,232,220,109, 19,182, 3,248,213,171,219,196,211,231,110, 61,137, 14,137,140,183, 63, 27, 25,157,153,171,210,251,
+198, 30,155, 92,109,133,203, 35,101, 17, 44,217, 31, 17, 75,135, 38, 3,158, 82, 66,236,202,141, 13, 65,105, 68,139,148, 62, 31,
+164, 38, 71,254, 98, 66,199,104, 66, 89, 22,136, 78, 86,162, 72,109, 64,137,222, 0, 55, 91, 57,178, 50,146,241,253,218, 45,184,
+125,235, 38, 58,119,235,141,111,127,250, 25,163,222, 31, 80,227,113,101, 24, 2,134, 33,101,145,171, 82,115,101, 38,225, 3, 4,
+200, 47,214,227,215,203, 73,240,170,207,128,212,162,181, 80, 97, 38, 69, 65, 81, 9, 24,129, 25, 30, 95,218, 38, 59,118,246,198,
+204,121, 43, 54,126, 86,168,204, 72,140,125,120, 21,126, 86, 57,168,239,172, 69, 84,134, 5,110,229,122,192,207,171, 1, 24,225,
+ 77,147,180,179,163, 26, 45,255,141,217,215, 51, 44, 56, 48,188,158,189, 5,212, 90, 99, 89, 20,139,143, 45,155, 55, 35,254,121,
+242,200,236,168, 3,183,223,132,147, 85,102, 60,203,146, 56,248,124,116,255,218,153,184,190, 67,198,195,209,165, 94, 19,211,187,
+ 39,152,102,166, 88, 19, 12, 22, 33,132,177,246, 8,222,186,117,251,158,129,245,235, 57,226,212,141,231,184, 29,155, 7,115,133,
+ 37,120,114, 39,248,182, 27,110,121,255,248,154,183,213,217,202,173, 2,161,236,195,102, 45, 90,129, 82,138, 39,143,163,114, 11,
+ 10, 44,254, 84, 55,171, 82, 31,223, 1, 96, 94,113,157,204, 46,160,137,194,194,250, 78,137,206,136,148,148,100,252,126,229,124,
+211,178,253, 76, 70, 44,100,112, 50, 50, 19, 58, 3, 11,157,158, 69,211, 70,254, 37, 2,161,180,205,151, 27,142,180, 72,207,200,
+100,100,102, 22,172,133,109, 3,161,165, 62, 93,115, 55,174, 64,168, 51,176,104,224, 84,253,115,185,204,186,193,146, 79, 39,127,
+ 18,192, 23, 73, 81, 88,172,209,166, 37,167, 56,254,184,243,156,242,209,147,135, 46,158, 30,245,204, 23, 46,156, 39, 44, 44,161,
+200,204,215, 32,187, 72, 71,222, 29, 60,210,121,219,166,111,135, 0,216, 86,139,164, 55,218,181,237, 7,189,181,153,144, 20,169,
+244, 52,171,176,196, 56,254,163, 73,141, 94,167,236,188,100,174,158, 21,227, 78, 92, 62,196, 66, 30,196, 66, 30,244, 6,211,186,
+ 72,218, 5, 14,144,219,217, 89, 14,105, 30,236,141, 19,145, 89,224,243, 8,212,197,133, 90,137,216,236,129,191,191, 15, 19,220,
+ 36, 8, 17,173, 91, 34, 54, 46,222,239,196,169,179,171,110,220,188,189,216, 46,168,223,180,172, 7,251,191,173, 77, 90, 19, 82,
+178,228, 25, 6,183, 65,246,142,182, 65,189,123,247, 18,215,115,113, 32,182, 54,150, 48, 66,136,113,227, 63,182, 55,185,213,136,
+ 82, 80, 0,203, 22,204,132, 70,171,133,189,165, 8,148, 2,155,214,205,135, 86,171,133,179,141, 4, 5,197,250,234,202,121,181,
+126,164, 50, 67,244,170,209, 42,255,191,124,191,165, 75,151,246,124,197, 0,246,172,194, 24,254,105,191,242,239, 47, 91,182,108,
+ 73,133,237, 42,147,155, 8,203, 51, 83, 85,166,236, 26,247,107, 37, 21,203, 79,126,187,116, 18,147, 95,172,131, 88,200,160, 65,
+125, 79, 76,152,248,137,236,173, 96,123,168, 97,142,125, 59,183, 20, 26,140,250,195,166,252,168,204,209, 39,212, 76,166, 56,190,
+105,235, 78,214,209,222,150,252,120, 58, 43, 46,171,208,240, 98,138,131,232,235,191,177,183, 78,252,232, 68, 65,142,203, 36, 82,
+111,141, 86, 99, 85,229,141,161,236,132,110, 58, 25, 15, 30,195,128,247,134,102,246, 98, 24,198,248,211,218,133,176, 53, 47,237,
+115, 53,127,245,246,162, 94,118,199,207, 86, 52, 87,193,193,193, 5, 77,154, 52,201,103,152,154,127, 52,241,198,207, 45, 43, 41,
+ 40,117, 50, 87, 47,250,137,164,223,187,137, 87,102,226, 39, 36, 68, 96,235,185,103,202,160,247,134,204,116,104,216, 75,241, 60,
+173, 0, 34, 70,143,176, 0, 39,156, 63,241, 43,155, 20,247,104,172, 41,218,153, 57, 5,110,182, 54, 54,184,253, 76,137,212,156,
+ 18,164,229,150,154,171,244,220, 18, 20,170, 13, 8,246,180, 71,126,129,210,173,206, 6,150,208, 3, 39,142,159, 24,214,173,207,
+ 64, 76,248,108, 94,183, 13,223,125,125, 79,234, 16,240,190, 58,227,209, 13, 83,190,191,103,207, 30,163,135,135, 71, 92,118,118,
+118,216,180,105,211,138, 60, 61, 61, 29, 23, 46, 92, 56,186, 65,131, 6,206,111,181,111, 95,112,243, 92,139,173,159,124, 54,175,
+253,172, 79, 54,212,103, 24, 38,131,178,244,183,212, 98,253, 92,154,245, 80, 93,237,121, 58, 56,243, 49, 9,156, 63,236,173, 54,
+ 54,191,217, 72,153, 64, 1,209, 12, 38,129,243,119,211,135,115,117,177,199,214, 22, 53,122,119,229,132,148,124,118,118, 9,227,
+184,184, 38,115, 85, 26,193, 34,208,234, 88,152, 75, 5,229, 35, 71, 1, 10,167,239,214,125, 45,179,179, 16,131,207, 35, 16,240,
+ 24, 20,168,244,200, 41,212,226,179,105,211, 76, 61,130,172,145,101,161,210, 24,161,214, 26, 64, 64, 80, 84,152,141,153,159,125,
+138,110,189,250, 99,228,216,201,200, 87, 3,183,226,138,160,211,235,107,180, 69, 60, 2,168, 52, 6,140,236,226,142,156, 34, 29,
+138, 75, 12,208,234, 88,200, 36,124,240,249, 12,228, 98, 62, 20, 82, 1, 8,161, 66, 39, 39,167,209, 0, 32, 16, 8, 74, 18, 19,
+ 19,183, 87,221, 60, 79,225,225,230, 0,181,142, 65,179,129, 43,208, 49,220, 23,119, 78,109,228, 95,188,126,191,254,103,243, 86,
+ 97,252,224,112,236,125,226, 5,107,123, 15,152,201, 36,208, 83, 6,128,105, 83,128, 80, 58,151,117,242,239, 63,248,135,159, 54,
+ 61, 89,240,197,116, 73, 94, 49,129, 88,200,199,217,179,167,113,245,250,173, 53, 89, 81, 7,182,191,201,190, 20, 2,202, 56,152,
+ 91,152, 67, 34,226, 65,167,211,152,220,225,219,200, 82,128, 34,192,190, 81,223, 95,203,206,125, 0, 91,201,186,154, 34, 88,132,
+ 16, 98,225, 28,180,249,135, 13, 63, 15,113,114,180,199,254, 51,247,176,117,195, 55,112, 9,234,134,167,145, 63,192, 45,164, 47,
+204,234,119,128, 72,177,103, 52,195,227, 55, 26,255,201,204,254, 33,161,225,184,114,233, 28, 50,211,211,126,160,244,177, 73,125,
+208,120, 2, 50,177,125,199,158,208,232,140,104,211,161, 39,142, 31,218, 63, 1,101,131, 39,234, 10,143,199,176, 31,143, 26, 36,
+200,204,215, 10, 50, 11, 52, 72,201, 86, 35, 46,189, 24, 7,127,217,104,114,147, 20,225, 49, 97,237,154,184, 10, 70, 47, 63,155,
+228,230,234,164, 17,104,212,210,232,216, 88,255, 15,135, 13, 17,120,122,251, 49, 89,249, 26,100, 21,104,145, 85,160, 69,113,137,
+ 30, 94,206,245, 24,141,129, 31, 94,219,180,218, 91, 72, 4,223, 30,142,131,185,140,143,150, 1, 54,117,238,132,205,178,236, 31,
+230,106, 81,105,228,234,110, 92, 1, 36, 66, 30, 68, 2, 30,196, 66, 6,122, 35, 53,241, 94,100, 24, 52,102,216,187, 82,173,158,
+ 34,187, 80, 11, 30, 67,224,104,107, 35,118,115,242,197,166, 21, 31, 3, 0, 70, 77,255, 14, 31,142, 24, 10, 63, 95,111, 20, 20,
+ 20, 73, 63, 28,247,201, 74, 84,210,239,174,170, 72,219,207, 7, 47, 6,222,122,144, 48,229,131, 97,239, 11, 6,246,110,203,220,
+126, 86,136,180, 92, 13,158, 61, 85, 65,171,175,221,108, 52, 6, 99,105,155,239,230,221,135, 33, 19,242,144, 85, 80,122,185, 44,
+ 90,183, 27,102, 82, 62,210,243,180, 96, 89,182,186,244, 84,235, 71,170,138, 58,213,134,138, 38,172,186,245,132,144,195, 51,102,
+204,152, 5,128,206,152, 49, 99, 86,249,231,165, 75,151,170, 1,164,154,100,176,202, 51, 85,169,123,110,220,175,149, 84, 36, 57,
+185,109,221, 44,233,153,104,138, 53, 39, 35,209,189,133, 19,132,124, 2,137,153, 35,238,196,229,227,204,153,131, 69,151,174, 94,
+ 47, 33,140,190,198, 97, 81, 50, 39,191,166, 50,137,226,244, 55,235,183, 26, 28, 28, 29,177,243,114, 94,106,142,210,160,255,163,
+121, 74, 79,110,157,248,177,190,129,213,119, 85,167,199,212,248, 56,203, 82, 42, 92,250,253,111,160,148, 2,172, 17, 44, 88,240,
+132, 98,185,123,243,161, 25, 32,128,209,200, 74,248, 60,166,228, 69, 59, 72,233,173, 41, 57,225,250,142,106,155, 14, 9, 0,115,
+153, 0,191, 92, 72, 70, 65,110,106,118, 47,187,227,191,151,155,171,227, 81,226,167, 33, 33,193, 5,205,155, 55,207, 23,139,197,
+224,241,120,117, 57,193,175,101,174,170, 46,156,145,122, 0,203,156,253,219,246,238, 38, 15,106, 46, 34, 2,132,248, 59,225,252,
+201,253,236,213, 99, 27,251,169, 50,162,143,152, 26,226, 85,150, 24,144,154,171, 70, 74,182, 26,105,121,101, 17,172, 92, 13, 8,
+ 1, 74,180,175, 55,125,141, 42, 35,250,144,153, 75,195, 31, 52,122,140,109,211,185, 47,166,204,251,198,123,251, 15,203, 47,201,
+237,125,194,138, 51, 99,238,155,162, 17, 31, 31,175,113,112,112,184, 93, 84, 84,212,105,229,202,149,202,128,128, 0,145, 84, 42,
+205, 1, 32,137,121,242, 68,120,246,232,158,231, 89,169,169, 99,116, 58,221, 77, 83,211,229, 17, 49, 92,236,111,158, 59,218, 93,
+214,178, 75, 3, 71, 25,220,101,197, 93,252,205,238,126,101,255,214,164, 37,153,103, 86,103,166,105, 12,167,114, 85,104,146,162,
+ 20,156, 54,169,178,209,105, 19,222, 27, 51, 3, 60,134, 64,167,209,190,232,147, 97,103, 33,198,188,237,143,160,144, 10, 96, 38,
+ 21, 64, 33,229,163, 85,128, 13,106, 17, 32,162,122, 3,133, 90,107,128, 90, 99,132, 90, 99,128,109, 61, 75,252,180,109, 47, 18,
+179,212,248,237,102, 54, 30,199, 23,194,215, 77, 14, 74,107,142, 59,177,212, 88,252,238,232,217, 10, 30,195,128, 71,192,248,123,
+123, 32, 87,169,133,144,207, 64, 36, 18, 65, 38,225,195, 92, 38,128,128, 47,192,141,123,247,160,209,104,208,188,121,115, 73, 77,
+ 13, 14, 10, 51, 41,124,234, 59, 67,167, 55,224,232,197,135, 88, 52,169, 31, 58,181, 13,197,103, 60, 17, 30,107,130,161,176, 86,
+128, 37, 60,232, 12, 44, 52,122, 35, 0,162,174,230,154,105, 89,214, 47,162,132, 82,122, 45,237,241,175,137,246, 13,251,142, 62,
+118,242,236,246, 94,221, 59,227,246,221, 40,236,219,255,219,165,108,155,130,169, 21,190,211, 8,101,163,224, 40,165, 81,117,172,
+140,137,220,193,127, 82,120,171, 8, 40,243, 50,145,145,244,220,228, 74, 61,176,158, 2,159, 78,154,224,227,231,231,231, 99,100,
+ 41, 88,150, 34,208, 93,129, 49,227,198,249,120,121,251,250,176,101,163, 8,253,221, 20,213,234,200, 29,252,198, 47, 94,249,253,
+251,110,110,110, 56,126,249, 17,150,206, 30,123, 91, 38, 51,243, 12,181, 86, 88,178,126, 77, 16,247,224, 20,172, 61,242, 97,238,
+224,227,218,187,211, 48,215,110, 61,250,226,254,221, 72,172,254,106,225,213, 98,158,116,137, 41,105, 53,115,104, 96, 23, 28,214,
+246, 61,115,107, 7,228, 21, 40, 97,102,101,143,128,198,161,239,153, 57, 52,152,174,204,120,150, 85,215,107,157,165, 20, 26, 29,
+139, 92,165, 14,201, 89,106, 60,207, 80,225,121,186, 10, 44,251, 71, 83,112, 77, 37,148,128, 16,185,152,207,183,214, 63,173,119,
+239,244, 89,234,238,230, 64,150, 47,156,198,211, 81, 49, 50, 11,180,200, 42,212, 34,171, 64,131,172,194, 82,131,101,101,198, 7,
+ 75,217, 90,143,206,200, 85,234,160,144,242, 97, 33, 23,194,104,172,123,159,239,121,171,118,182, 76,206, 82,190,245,213,162,217,
+194, 59,207,139,113, 47,174, 0, 98, 33, 83, 26,189, 42, 51, 88,166, 54, 11,243,248,204,132, 30, 29,155, 35, 41,171, 4,124, 30,
+ 3, 62,143,129,119,195,166,176,149,177,120,107,224, 12, 0, 64,175,238,165,211,144,196,165, 21,227,208,181, 52, 0, 16,154,154,
+214,204,236, 66,201,254, 83,183, 63,217,249,211,114, 81,137, 81,128,239,143,196,163, 68,107,132, 88, 88,214,236, 46,170,221,253,
+205, 96, 44,141, 96, 37,101,233, 80,172, 49,162, 80,165, 3,165,192,141,167, 69, 80,105,140, 40, 80,233,208,194,207,186,166,251,
+ 15,169, 97,123,207,215,187, 79,210,158, 40,237,171,101,103,106, 4,107,233,210,165, 81, 75,151, 46,173, 52, 34, 86,163,193,170,
+210, 92, 9, 37, 39,183,174,157, 37, 61,253,132,226,252,189, 28,188,211,198, 21, 57,153,201,216,240,221, 26,150, 82, 64, 44, 17,
+165, 27, 13,236,177, 18,214, 48, 45,255,238,161,106,219,125,229,118,129,141,165, 50,217,217,165,171,127,208, 57, 58,185,178,191,
+ 94,203,207, 44, 80, 25, 95,138, 21, 26, 53, 26,134,178, 84,104,138,185, 42,107,218,208,205,155,208, 15, 44,165,152,187,102, 55,
+150, 78, 25, 4, 51, 9, 95, 70, 8,145, 21,151, 24, 48,105,225, 70,172,252,124,132, 66, 38,230,151, 25, 3, 35,198, 78,248,204,
+164,147,160,214, 24, 81,156,151,158,211, 72,185,234, 21,115, 21, 82, 16, 22, 22,150,111,101,101, 5,185, 92, 94,107,131, 85,153,
+185,114,116,116,116,150,201,100,214, 62, 62, 62,101, 79,125, 60, 24,141,198,226,152,152,152, 58, 77,250, 86,152,159,125, 32,245,
+249,131,230,173, 34,122,224,194,201, 3,236,213,163, 27,250,213,102,136,185,165,133,121, 82,228,195,132, 0,192, 12, 41, 57, 37,
+ 72,207, 43, 65, 90,174, 6, 58, 3, 11,119, 7, 25,146,147, 18, 97,105, 97,150,100,170,158,204,209,167, 43, 67,121, 99, 88,130,
+159, 84,233,143,143, 2,128, 50, 37,106,156,204,222,247,126, 84,212,221,213, 61, 7, 77, 16,117,122,123,156,112,253,178,143,102,
+ 0, 24,100,170,110, 70, 70,134,202,222,222,254,170,179,179,115,207,185,115,231,106, 0,136, 52, 26,141,108,196,136, 17,178,132,
+132,132, 79, 41,165, 38,165,177,205,136,205,182, 68, 66,187, 54,240, 11, 25,236, 46, 43,238,220,161,109, 56, 90, 6,185, 33,185,
+109, 56, 0, 76, 76, 80,153,249,182, 30,187,225,151,250,118, 86,199,190,223,114,116,233,168,129, 29, 62,117,238, 53,127,101,234,
+161,185,213, 70,196,158, 92,220,216,165, 50,247, 46, 40,235,248, 94,209, 96, 25,140,180, 54, 77,112, 84,111,100,161,210, 24,160,
+210, 24,160, 44,209,227,204,157, 76,100,228,107,145, 87,172, 67,137,198, 8, 10, 64,167,167,229,179,138, 84,111, 86,175,108,177,
+ 44,255,223, 53,100, 80,193,154, 5, 19,204,247, 93, 78,134, 92, 92,218, 31,203, 66, 46,130,185, 76, 0,128,226,252,249,243, 40,
+ 31, 30, 95,211, 83,252,190,227, 55,176,114,203, 89, 28,223, 56, 13, 18, 17, 15, 77,250, 46,192,176,190,205,193,178, 20,177, 79,
+ 30,100,248, 4, 4, 59, 48,102, 50, 48, 12,202,251,164, 84,119, 60,109, 40,165,191, 17, 66,122, 18, 66,122,148, 90, 56,228, 29,
+ 48,230, 20,159, 61,178, 83, 94,172,214, 24,242, 18, 30,125,131,226,236,118,165, 77,240, 96,203, 30,208,207, 19, 66,218,214,209,
+ 92, 49, 82,123,223, 53, 31,142,155,244,142,151, 87, 3,236,222,177, 9,148,146,125,166,126,127,251,161,171, 88,181,250,229, 17,
+131, 99,198,141,243, 89,255,253,247, 47,173,123,127,196,104,159,234, 12,158,107, 80,135,105,126,254,129,184, 22,149,140,229, 95,
+140,191, 93,146, 25, 55, 88,107,102, 51, 70, 87,156, 54, 57, 48, 40, 24,142, 14, 54, 72, 79,203, 64,251, 62,157,208,173, 75, 23,
+220,191, 27,137, 69,115, 62,187, 10,149,182,115, 77, 81,219, 63,140,144, 96,108, 68,151,190, 2,149, 70,135,117,203,231, 96,204,
+212,197,104,209,190,151,224,193,157,235, 99, 1, 44, 48, 53,207, 90, 61,139,246,141,237,160,213, 27,161,211,179,248, 45,142,199,
+255,115,158, 0, 62,143, 97,130, 27,148, 54,239, 22,170,245,213,215,243,124,146,158, 87, 88,228,241,205,226, 79,120,197, 26, 35,
+178, 10, 52,200,204,215, 34,171, 80,131,236, 2, 77,169,185, 42,208, 34,187, 64, 3, 62,143, 32, 38, 46, 5, 60, 30,169,117,255,
+187,252, 98, 29,154,249, 90, 1, 32, 96,234,216, 28,146,109,176,235,118, 55, 58,249,173,229, 11,103, 11,239,196, 41,113,239,121,
+ 97,153,177, 98, 32,170, 96,176, 88, 19,186, 96,217, 7,246,110,249,254,160, 62, 13,205,229, 18,164, 60, 41, 2,159, 33,224,243,
+ 8,204,237,220, 96, 33, 41,193,132,241, 99, 96, 99,109,129,196,236, 18,172,217, 31,141,123, 15,159,130, 85,215, 46,219,223,253,
+124,188,223,251, 67, 6,138, 25,129, 4,219, 79,198, 65, 36,228,129, 15, 45, 30, 94,191,168,201, 72,126,174, 43, 42,204,151,243,
+249, 2,147, 68, 9, 64, 13, 70, 22,148, 82, 44,153, 63, 19,187,182,124,135,227,183, 50, 64, 81, 58, 85,195,239,191,126,141, 73,
+ 51, 22, 33,171, 80, 11,128,188,206,168,197, 35, 0,122,188,106,132, 94, 53, 73, 21, 34, 80,149,113,179,162, 70,249,254, 85, 25,
+184,138,125,178, 0,152, 20,105,231,191,234, 20,203, 63,219, 53,238,215, 74, 34, 18,157,220,178,102,166,244, 76, 52, 94,152, 43,
+181, 50, 27,219, 54,174, 87, 82,176, 29, 51, 30, 28,188, 97,234,209,144,219,251, 6,137,229,242, 11,179, 23,173,209, 56,187,214,
+ 55, 28,189, 83,152, 83, 84, 98,252, 83, 24, 68, 40,147, 27,229, 22,118, 37,150,238, 77, 87, 10,212,218, 57, 89, 89, 15,139,107,
+ 58,165, 44,165, 56,116, 61, 29, 96, 75, 79,226,238,139, 41,165,243,248,240, 8,140,108,105, 59,247,169,219,153, 47,214,153, 86,
+177, 2,191,156,188,157, 93,149,185,178,180,180,132,165,165, 37,204,204,204,106, 91, 97, 87, 26,185,146,201,100,214, 39, 78,156,
+144,152,155,155,131,199,227, 65,163,209,160, 83,167, 78,117, 42,121,114, 7,191, 65, 45,222,234,191,180,117,251, 30, 56,119,226,
+ 87,246,234,209,205,253, 85,153,181,152,191, 7, 64,183,182,141, 15, 45,255,122, 93,253,169, 51,102,139,229, 18, 62,242,148, 58,
+240, 24, 2,119,123, 41,108,204,120,184,122,246,112,201,224,174,193, 38,155, 63, 55, 87,143,109, 95,175,249,193,102,229,151,243,
+ 59, 91, 89,213,119,200,203,139, 43, 4, 0, 85,102,244, 15,102,142,126, 79, 92,235,157,188,208,164,109, 63,216,187,120,119,175,
+109,126, 51, 51, 51, 51,131,130,130, 30, 5, 6, 6,134,246,239,223,159, 46, 89,178,196, 42, 57, 57,121,143,169,230, 10, 0, 58,
+116,105, 57, 73, 46,208,135,219, 72,153,192, 6,142, 50,180, 12, 42,109,253, 28,216,163, 53, 92,221,234,225, 89,186, 42, 56, 71,
+205, 10,139,245,130, 6,223,255,176,233,166,187, 53,127,148, 65,169,126, 8,224, 96,173,111,218, 40,171, 36,101,101,230, 74,194,
+135,153, 84, 0,150,150,110, 51, 61,130,197, 66,171, 99,161,210, 26,160,210, 24, 75,205,150,214, 8,150, 45,237,172, 76, 8,129,
+ 78,111, 44, 15,200,214, 38,129, 48,183,178, 69,125,143,210, 52,190, 88,164, 2, 16, 2,216,217,217,193,198,166,230,121, 71, 89,
+150,133, 86,103, 40,187,233, 26, 95, 12,234,208,234, 12,160,148, 34, 58, 58,102, 90,124, 92,124, 31,111, 31,175,182,129,141,131,
+173,165, 34, 6, 0, 74,106, 8, 38, 13, 6,160,167,148,190, 24, 20,225,209,176,117,201,254, 95,247,201,123,246,234,149,167, 85,
+102,237,173,176, 51, 15, 64,215, 50, 51,166,174,229,117, 74,228,118,190,125,221,252, 91, 46, 30, 58,124,140,111,251,142, 93,112,
+254,204, 41,252,246,235,206,173,197,153, 79, 78,154,170,227,231,231,247,167, 81,132, 94,222,190,127, 26, 69,232, 81,223,167, 74,
+131,101, 97,209,216,188,113, 88,132, 91, 66,182, 14,199,142, 29, 69,113, 65,250, 23, 90,173, 82, 5, 1,221,112,250,215, 31, 71,
+ 14, 30, 59,215,188, 69, 88, 40, 44, 21, 50,216, 90,153, 33,242,214, 85,124,185, 96,246, 85,168,180,157,107,174, 63,203,242, 27,
+ 24, 40,244,174,231,241,137,123,131,134,136,188,126, 25,177,209, 15,162,238,220,188,218,208, 59,168, 57,236,156,221, 63, 33,129,
+129,203,232,195,135, 53,190,169,130, 26,105,242, 7,163, 39,151,221, 75, 74,215,181,104, 82, 95,244,231, 66, 72, 96,208,235,140,
+219,215,127,153, 89,113, 20, 97, 85,186, 37, 69,249,123, 47, 93,191,255, 89,239, 46,109, 72,121, 83, 96,185,169,122,245,179,183,
+139, 28,177,247, 31,179,250,226,130,125,181,187, 50,105,198,184,241, 19,165,165,105,103, 65, 75, 39, 86, 83,215,246,250, 46, 49,
+ 10,223,251,126,254, 44,114, 55,190, 24,247,159, 23,150, 54, 11,150, 25, 44,177,144, 7, 81,217, 95,147,166, 38, 99,152,229,239,
+ 15,232,130,236, 2, 45, 88, 74,203,230,210, 35,224,243, 5, 72, 40, 4,146, 10,149,200,202,207, 64,220,243,120, 20,164,199,129,
+ 97,120,176,113,241,134, 42,209,180,180, 22, 25,205,124,245, 44,188, 6,244,108,195, 59,112, 37, 13, 82, 49, 31, 69,217, 73,184,
+124, 98,183,154, 26,141, 63,104,245,218, 93,246, 84,244,224,225,253, 61, 58, 19,171,142,172,194, 98,173,131, 88,200,195,238,205,
+223,224,221, 97,227, 94, 68,179, 1,224,179,217, 11, 65, 8, 65, 94,129, 18, 0,201,170, 41,114,245,202,231,172, 10,145,167, 63,
+125,174, 96,138, 42,251, 76,202, 62,107,171,208,208,190, 98,170,180,175,172,215,190,162,103,210,228,200, 85, 70,176, 4, 12,239,
+212,230,213,179, 36, 81,153, 98,220,120,156,142,119,218,184, 66, 85,152,141,245,223,174, 82,150,232,117,221,178,238,155,110,174,
+202, 10, 74,151,119, 71, 76,137,106,224, 29,160, 61,243,160, 40, 46,191, 88, 95,101, 63,134,230,239,204,138,186,125,228,155,238,
+ 5,250,184,241,102,206, 13,141,172,193,176, 92,149,249,100,126,229,149, 56, 21,205, 93,179,187,212, 92,177, 44,166,127,185, 13,
+148, 53,150, 77,224,103, 4, 53,178,248,248,139,239, 96, 40,251,223,200, 26, 65,244, 70, 89,141,225,114,137,240,100, 35,229, 42,
+139, 87,205, 85,211,166, 77,243, 45, 45, 45, 97, 99, 99, 3, 43, 43, 43,148, 27,162,215,109, 22,244,241,241,129,153,153, 25,206,
+159, 63, 15, 51, 51, 51,200,229,117,155, 32,223,204,193,255,221,230, 29,250,253,220,190,215, 8,230,244,254,245,198,235,231, 15,
+191,163,206,124,108,178, 9, 48, 26,141, 68,175,215,163, 75, 68, 72,194,157, 39,137,199, 23,206,159,223, 53,172,195,219,226,150,
+126,246, 80,107, 13, 72, 78, 74,194,213,115,191,149,120,215,179, 61,222, 50,212, 55, 89,175,215,195,104, 52,214,120, 3,215,104,
+180, 57,140, 64, 98, 51,112,208,123,226,155, 55,110,252, 44,119,240,219,201,240,216,187,212,200,107, 12,208,119, 27, 55, 10,128,
+206,192, 66,173, 42,204,173, 75,190,163,162,162,110,126,253,245,215,126, 2,129,192,117,239,222,189,217,121,121,121,181,122, 93,
+208,169, 35, 55,214,240,205,244, 49, 66, 90, 50,216, 93, 86,220, 57,169, 77, 56, 6,245,108,141, 93, 71, 46,227,220,197,171, 72,
+ 80,153,221, 41,214,242, 14, 36, 39,167,106, 2,173, 10,126,237,219,202,147,183,111, 91,225, 62,251,246,211, 7, 80, 42, 61,149,
+117,126,110,177,233, 55,111,160, 80,173,175, 16,193, 42,237,223,196, 48,196,228, 8, 22, 1,226, 46, 94,137, 12, 10,241, 13,192,
+157,103,133,200,202,211, 64,165, 45, 45,247, 20, 20, 54,230, 66,136,133, 60, 36, 60,143, 3, 75,117,207,107,119,159, 65, 86,183,
+119,198,240,203, 30, 95,248, 2, 1, 31,180,236, 6, 41,149,136,148,246,246,246, 38, 25, 44,189,209,136,254, 93,154,163, 69, 88,
+ 99,244, 25,251, 53, 0,224,204,214,233,176, 50, 19, 98,239,222,189, 72,188,188,106,123,131,150,227, 78, 62,184,255,240,237,168,
+219, 87,222,235, 22, 34, 13,118,228,167, 9,171, 9,235, 31, 36,132,136, 0,180, 39,132,116, 2,112,158, 82,170, 55, 26,216,196,
+174, 93,187,176, 70, 35,155, 90,225, 90,179, 2, 16, 14, 32, 23, 64, 36,165, 84, 95,253, 3,160,127, 71, 48,216, 9, 66, 36,102,
+ 82, 89, 66,120,199, 65,206, 97, 45,154, 91,244,237, 63, 0, 34,161, 8,167, 79,157,192,218, 85,203,118, 43,211, 30,141,168, 85,
+243,152,137, 29,218,171,107, 46, 42, 40,176, 40,142,126,120, 39, 47, 46, 67,107,197,183,244,129, 64,172, 24, 67, 44,156,215,240,
+196,102,115, 93, 90, 12, 51, 63,115,249, 6,162,238, 92,129,179,173, 20,113,177, 79, 85, 15,238,222,254, 78, 69, 4,243,105,214,
+ 67,149,169,233,148,229, 24,223,110, 49,180,171, 85,137,206,136, 75,103,143,148,176, 6,182,235,181, 11, 71, 99,221,124,195, 36,
+ 65, 97,111, 89,101, 31,220,208, 31,192,174,154,116,158, 95,223,254,167,174, 23, 13,154,191,155,122,244,212, 69, 51,231,122,222,
+ 60, 16, 6, 26,117, 49,178, 18, 30, 24, 74, 10, 51, 84, 25,247, 15, 56,155,146,190, 4, 67,202, 23,115,150,253, 48, 62,164, 73,
+ 67, 57,165,162,151, 34, 86,229,255,231, 20,105, 75,251,204, 22,231,227,217,253,203, 37, 89, 79, 11,102, 86, 95,215,233,101, 57,
+ 57,185, 47,134,230, 75,149,150, 30, 5, 22, 5,226,242, 11, 12, 60,192,162,192,242, 69,164, 34, 39, 39, 87,100, 52,234,101,166,
+ 92,158,150, 10, 9,238, 63, 79,125,209,161, 93, 44,100,202,250, 94,253, 17,201, 50,241, 58, 15,225,139,228, 72,201, 41, 1, 67,
+ 41, 88,214, 0,131, 94, 11,101, 97, 33, 82, 83,210,145,145,145, 9,101, 81, 1,164,102,150, 8, 10, 14,133, 66,161,192,163, 91,
+231, 0,144, 67, 38,153, 65, 86,232, 19, 22, 26, 42,136,138, 47,130, 78,207, 66, 0, 29, 46, 29,255,165,196,160,215,246,202,184,
+127,224,108,109,235, 97, 3, 75, 79, 63,120,146,208,208,205,214,137,220,126,150,143,109, 63,174, 43, 29, 77,106, 40,141,102, 70,
+ 37, 22, 35, 53,167, 24, 41, 73, 9, 20,172,241,116, 45,229,111,214,240,185, 46,188, 9,141,218, 27, 44,131,193, 32,169,231,238,
+129, 65, 99,134,226,187,239,190, 71,244,179, 4,252,248,237,234, 82,115,117,111,255,239, 38, 26,138, 23,111,219, 46, 78,127,188,
+124,196,119,207,147, 15,221,205, 99,212,218,234,223, 63, 37,179,243, 68,155, 17, 43, 79,168,139,114, 69, 70,141,138,127,104,251,
+136,157,149,105, 2, 0,143, 33,218,178,102, 65, 16, 66, 80,222, 44,248,221,130, 81,144,137,121, 32,132, 64,165, 49,224,253, 79,
+ 87, 98,235,202,210, 39,171, 15,199, 79, 81, 85,149,206, 10, 70,136, 12,239, 90,191,247,162,141, 15, 15, 94,142,183,121,214,163,
+ 71,187,130,224,224,224,124,169, 84, 10,185, 92, 14,115,115,115,152,155,155,195,210,210,178,198,188,151,125,118,168,169,207, 21,
+195, 48, 48, 55, 55,135, 84, 42,173,212,184,213,244,246,114, 51, 71,223, 1,205,218,247,219,217,161,247, 72,230,244,254, 31,217,
+ 91,231, 15, 13, 80,103, 62, 57, 96,234, 57, 42,139, 58,220,237,223,191,127,163, 49, 99,198, 8,103,141,239,127,226,196,249,200,
+232, 95, 79,237,235,149,155, 95,228, 70, 41,133,165,133, 89,210, 59,157, 26, 29,106, 19,230,151,112,230,204,153,255, 99,239,188,
+195,163,168,218, 54,126,159,217,158,222,123, 35,141,144, 70,239,189, 74,175,130,160, 32, 96,161, 40,168, 96, 1, 84,164, 42, 40,
+ 32, 96, 67,145, 46,189, 11,210, 91,232,189, 37,129, 64,122,239, 61,217, 62, 51,231,251,131,132, 47,242,166,108, 0, 95, 95,241,
+252,174,107,175,236,110,102,238, 61,231,204,153,153,123,158,211,196,173, 91,183,234, 8, 33,119,235, 74,103, 94, 94,206,250,147,
+ 39, 79,125,221,185, 75, 87,172,222,176,181,127,116,244,189,254,113,177, 15,225,229,227, 15, 95,255,134, 80, 19, 91,156,140, 56,
+135,210,130,236,245,166,164,179, 42,141, 27, 55,246,104,218,180,169,103, 81, 81,145,118,246,236,217,141, 4, 65,248, 61, 60, 60,
+188,101, 88, 88, 88,102, 84, 84, 84,154, 41,121,191,184,105, 76, 46,128, 77, 13,186,142,223,153, 97, 40,122, 31,192, 98, 47,111,
+111,156, 62,123, 9,151, 47, 92, 89,149,103,238, 61,111,252,107, 99,223,110,224, 32,123,123,112,251, 6, 18,103, 59,115,108, 89,
+189, 76,178,255, 98,210,242,164,124,227,175, 0, 22,154,114,140, 42, 41, 40, 53,160, 67,168, 3,120,158, 66,160, 20, 28, 33,176,
+ 50,147, 86,107,176,170,211,148,234,149,111, 76,158, 52, 49, 46,188, 73,179, 15, 94, 27, 55, 81,222, 44,192, 27, 87, 31, 22, 2,
+ 32,112,176, 54, 71, 70, 70, 38,206,253,254, 43, 95,152,126,127,149, 68, 34,206,175, 79,121,166,221,216, 22, 88,249,222,205,205,
+109,194,173,200, 72,156, 57,115, 6, 14, 14, 14,168, 52, 87,213, 53, 17, 62,169, 89, 88, 88,122, 97,193,178, 95, 59,188, 61,122,
+ 48, 6,116, 13, 67,196,181, 56,232,141, 34, 12,188,248,184,147,107,194,165,159, 21,239,143,244,215,191, 51, 44,168, 68,109, 84,
+ 36,205, 73, 42,137,168, 58,137,236,147,154,148, 82, 61, 33,228, 40,128, 54, 0, 6, 19, 66,142, 81, 74, 91, 86,141, 60, 1,104,
+ 12, 32, 12,192, 37, 74,105,130, 73,121,231,176,229,198,181,235, 14, 6, 94,196,185, 43,183, 67,186,119,104, 6, 42, 82, 92,187,
+118, 29,107,214,173,209,222,189,115,107,105,121,182,235,252,154, 38,183,173,169, 60, 77, 29, 69, 88,221,119,149,154,148,158,225,
+ 45, 93,130, 87, 93, 60, 31,241,153,210,189, 37,130,251,125, 58, 40,253,246,239,131, 92, 67,123,195, 49,160, 3, 50,110,239,195,
+205, 11, 91, 14, 93,231,249,153, 42,145, 75, 46,207,189, 95,110,234,249, 94,137, 82,101, 62, 53,172,121, 23,164,166, 36, 33,241,
+ 97,228, 70, 77,254,195, 12, 75,215,224,141,233,105,201,147,124, 67, 59,224,252,209,109,239,213,100,176,234,170,243,142,138,226,
+ 85,103,206, 95, 28,149,190,243,119,151,210, 50,141,153, 84,202,169,149, 18,100,203,213,113,219, 77, 77, 39,141,142, 54, 56, 7,
+180, 31,246,218,196,207,255, 88,254,245,108,153,179,173, 18, 89,133, 90,148,168,141, 40,209, 24, 33, 33, 64,160,187, 37, 52,229,
+ 37,184,124,104,147,145, 26, 10,134, 85,244, 71,173, 86,211, 41,108,240, 66, 66, 48,229,243,207,103, 65,162,176,118,247,235,241,
+169,129,243,115,133, 29,158,152,204,220, 30,240,235,241, 41,116,165,217, 3, 63,255,124, 86, 35, 74,105, 15,167,176,193,165,149,
+107, 17,214,148,247,252, 82, 3, 70,119,243,130,222,248,104,254, 48, 65,120,212,215, 78,172,152,213, 28,181,196,149,171,106, 82,
+ 64,190,227,143, 75, 72,207, 46,132, 70,103,132,222,192, 67,207, 11,224, 56, 9,236,236,236, 16,232,215, 28,182, 54,214,200,201,
+203,199,181, 75,231,113,249,193,173, 4, 10, 44,204,179, 47,222,108,202, 49, 34, 82,139, 64, 23,103, 71,146, 93,170,135, 74, 41,
+193,229, 51, 17, 70, 0,235, 77, 49, 87,213,105, 22,171,139,190,157,185, 96,229,171, 63, 45,155,227,218,196,215, 26,169,121, 90,
+164,229,106, 80,170,229, 1, 80,240, 2,133, 94, 91,140,152,107, 71,178,120,168,191,197, 11, 78,205, 17, 44,153, 76,119,237,206,
+ 3,229,204,185, 75,112, 47, 54, 1,107, 86,125, 95,174,171,135,185,170,142,117,239,248,110,171,223, 30, 21,243,150,206, 79,170,
+253,129,187,154,102, 65,145, 82, 28,184,156,245,120,217,143,202,166,194, 27,177, 69,117, 85, 26,217,146,169,205, 62,169, 52, 66,
+223,237, 77,191,172, 84,230,137, 41, 41, 41,133,155, 55,111,126,108,122, 36, 18, 9, 42, 71, 15,234,245,250, 58, 71, 21,217, 89,
+ 43,194,198,244,109, 48,178, 38,115, 37,145, 72, 32,138,226,227,232, 85,125,155, 30, 45,156, 27,245,106,221,125,232,182,238,131,
+223,226, 78,238,251, 85,188,126,230,247,225,101, 57, 49,123,235,123,140, 10, 11, 11,163, 8, 33, 15,151, 46, 93,218,108,205,154,
+ 53,126, 31,125,244, 81,252,175,139, 38,125,247,232, 9,238,209,178,136, 55,111,222,164,147, 39, 79,214,105,181,218,132,194,194,
+194, 27,166, 44,114,173,206,142, 89,186,254,167,111, 26,165,166,103,142, 11, 8,107, 3, 71,223,214,112, 13,104,131,130, 50, 3,
+174,196,166, 35, 62,250, 36,238, 93,220,181, 93,147,235,242, 85,125,210,219,172, 89, 51,111,153, 76, 54,144, 82, 26,100, 97, 97,
+225, 75, 41, 85, 72,165,210, 17,132,144,135, 60,207, 71,135,134,134,158,140,142,142, 54,121,205,176,164, 51,235,117, 13,186,142,
+ 95,153,172,182,232, 26,159,165,110,158,172,182,184,169, 86,218, 76,207, 57,185, 66,231,242,210,210,229, 48,230, 71,237,218, 88,
+188,103,203,234,101,146,209, 19, 62, 20, 34, 11,172,223,151, 90,154, 29, 95, 60,222,228,145,251,224, 8,201,252,232,163,143,255,
+127,154, 6,242,168, 97,176, 98,202,134, 12, 83, 52, 42,214, 83,156, 97,230, 30,246, 67,228, 7,147, 22, 52,110,213, 97, 76,151,
+ 62, 35, 57, 75,185, 5,142,239,253,153, 38,220, 57,189, 83, 74,133,207,212, 57,113, 9,207,122,145,208,235,245,127, 50, 86,166,
+ 68,175, 0, 32,215,161,184,235, 31,199,206,140, 59,120, 36, 98, 81,223, 94, 29, 29,126,156,253, 10,190,249,101, 63, 44,205,149,
+160,162,128,145,221,189,135,223,219,218,123,160,151,139,202, 99,247,233,180,179, 83,150, 71,206, 80,171, 13, 15,234, 90,247,174,
+ 98,126,161,203,132,144, 64, 0, 3, 9, 33, 34, 0, 11, 0,229, 0,202, 42, 26, 36,246, 81, 74,203,235,147, 79, 3, 47, 34, 49,
+ 91,139,253,123,118,225,246,149,147,184,119, 47,166,244, 94,244,189,239,137,148, 46, 47,203,122,240, 84,145, 85,161,218, 17,131,
+168,126,100, 97, 45,148, 75,204,190,186,121,112, 73,215,134,221,223,107,231, 16,208, 1,118, 62,143, 60,101,113, 90, 36, 82,175,
+237,218, 95,154, 33, 31, 65,105,164,241,105,143,177,187,151, 95, 67, 81,162,192,197, 51,135, 64, 69,113, 21, 0, 80, 81, 92,117,
+235,252,161, 73,109,250,190, 9,123,103,159,166,149, 67,187,234,171,109, 38,229,139,255,216,240,213,206,196,196, 68,220,191,127,
+ 31,177,177,177, 40, 40, 40,192,150, 45,231,138,235,213, 21, 32,238,226,113,151,160,206,189, 95, 29,255,193,129,161, 47, 15, 85,
+121,251, 6,112,141, 60,173,225, 96, 37, 69, 76, 92, 58,226, 34, 31,138,177,119,206,106,169, 38,103, 72, 78,236,133, 26,163, 35,
+ 78,161, 35, 92, 56, 9,153,121,242,247, 71,107, 11,246, 28,252, 70,163, 79,166,124,212,214,222,193,174,218,235,120, 65,126,161,
+ 98,238,220, 47, 26, 85,110, 95,215, 90,132,156, 68, 82, 58, 97,210, 84, 11,142,112,143,155, 1,105,101, 27, 25,125, 92,135, 1,
+ 2,200,101,210, 58,235,232,184,161, 29,193,139, 34,202, 52, 6,148,169, 13, 40, 42,211, 34, 43,175, 8, 81,209,113,184,122,238,
+ 48, 18,227, 98, 75,121,158, 63, 13,138, 61,185, 14,197,219,159,156, 88,183,214, 8, 43, 36,222,246,118, 86, 72, 44,212,194, 76,
+ 46, 69, 70, 74, 44,111,224,181, 79, 61,201,122,222,173,223, 51, 93,194, 7,191, 52,254,157, 79,143,116,238,220,201,186, 73,243,
+150, 22,142,214, 86,144, 75, 9,226, 82,178,113,247,230,181,242,228, 7,183, 74, 4,163,166, 79, 94,228,239,207,188, 74,203, 63,
+214, 96, 25, 4,190,231,135,159, 46, 62, 38, 8,130,153, 84, 34,209, 24,169,216,231, 89,204,213, 95, 5,165, 98,218, 59,239,127,
+252,167, 7, 2,163, 32,154,189,245,206, 71,154,170, 15, 8,196, 40,152, 87, 70,174,234, 24,169, 39,201, 45,210,149,206,250,233,
+246,198,175, 55, 70,239, 2, 16,253,172, 35,251, 0,160,176, 68,127,219,161,215,142,193,165,106,158, 0,184, 87,141,102,121,247,
+238,221, 31,155,173,138,230, 58,147,111, 16, 10,149,249,164,110, 3,223,224, 78,238, 95, 35, 94, 59,189,127,196,211,152,171, 42,
+ 55, 48, 3,128, 43,132,144,200,207, 62,251,172,149,139,139,139,203, 23, 95,124,161, 42, 41, 41,145,253,248,227,143,218,188,188,
+188,172,146,146,146, 75,148,154,222, 63,161,226,166, 57,222,204, 37,228,103,178,107,237, 75,118,206, 30,189,109, 29,189,130, 10,
+115,211,226, 74,242,211,142, 16, 17,199, 75,115, 98, 46,213, 55,173,183,110,221, 74,105,220,184,241, 62,137, 68,226, 41, 8,130,
+ 35, 33,196,146, 82, 90,200,243,124,161, 40,138,153,245, 49, 87, 85, 77, 86,231,119,215,109,205,215,136, 10, 3, 81,109, 77, 58,
+179, 94, 7, 0,217,199, 62, 82, 3,248,221,165,219,140,161,251, 47, 38,126, 31, 85,104, 61, 53,231,204,215, 7,234,171,159,126,
+115,123,224,243,170,255,154,140,168, 52, 0,227, 44, 92, 26, 45,139,188,121,105, 14,161,144, 9,224, 23,170,179, 31, 94,127, 30,
+250, 50,153, 76,219,178,101,203,106, 71, 11, 42,149,202, 90,231,215,170,184,208,175, 33, 93,187,110, 56,114,242,220,184,195,199,
+207, 47,106,219,174,163,131, 74,233, 14, 31, 59, 3, 54,124,220,226,189,147, 55,115,175, 14,250,248,236, 79,241, 25,218, 59,148,
+ 82,109, 61,235,105, 44, 33,164, 24,192, 96, 74,233,106, 66,200, 4, 0,247, 0, 68,214,219, 8,136,120,173, 93,187,214, 91, 8,
+ 33, 82,202,139,223, 92,146, 73,182,106, 51,239,165, 61,141,161,168, 74, 19, 95,107, 76,152, 52,169,161,127,192,255,143, 34, 12,
+107, 96,133,209,227,222,110,232,227,215,240,241,119,141,188,106,127,160,162, 25, 55, 52,196,165,113,175,152, 99, 75,103, 59,196,
+ 93,120,199,204,222,211,178, 60, 47,169,160, 48,233,250, 82,117,142,203,210, 39, 87,104,168, 47,137,177, 81,203,215, 46,155,241,
+ 81,102,122,220,154,242,156, 7,143, 90, 29,114, 30, 68,154,187, 4,205,206,203, 74,251, 40, 63, 39,126,233,211,150, 69,121,121,
+121,198,230,205,155,109, 59,116,232,192,185,184,184, 32, 55, 55, 23,167, 79,159, 22, 69, 81, 76,175,175, 86,246,131,179,167, 73,
+ 64,128,253,214, 13,197,223, 72,205,172,250,241, 2,220, 41,165,144,114, 36,211,160, 43, 62,146,107,171,249,152,222,185, 84,123,
+189, 20, 5, 66, 57,202, 85,174, 45, 40,138, 34, 89,242,195,166, 36,137, 76, 81,109,147,170, 96,212,155,139,162,104,242, 90,132,
+217,146,100,135,112, 99,112,221,163,248, 40, 16, 73,238,215,241,112, 74,143,182,239,251,122,111,158, 23,140,120,212, 63,177,242,
+149, 67, 41, 57, 5, 34, 28,203,179, 47,189, 84, 31, 83,245,167,251,188,193, 96, 11, 78, 14, 43,115, 35, 56, 16,148, 20, 23, 43,
+157, 4,197,189,103,169, 75,217,145,251,163, 72,215,174, 62,250, 19,167,198, 70,156,187, 48,130,138,162,175, 64, 1, 80,146,168,
+ 55,104,119,230, 88,231,109,124,218,244,254,211, 32,207,120,253,168,119, 8,241,159,160, 73, 8,145, 3,112, 4, 32, 84, 93,254,
+230,121,164,179,182,181, 5,159, 37,239, 86,110, 33, 29,149, 42,243,143,213,234,210, 53,234,236, 7, 7,158,103,121, 18, 66,108,
+148, 74,101,115, 75, 75, 75, 89, 94, 94,222, 21, 74,105,241,139,120,220,171,210,233,141,245,142,221,123,183,255,224,248, 31, 87,
+ 87, 86, 52, 31, 62,198,115,196,114,213,232,126,157,167,111,218,115,112,249,147,163, 8, 95,132,188,255, 85,154,164,107, 87,169,
+115,161,245, 56, 65, 16, 23,118,111, 88,170,206, 74,136,153,124,238,110,238, 21, 74,105,233, 51,214,207, 87, 43, 35, 88,148,210,
+173,255, 43,121,119, 14, 31, 50, 31, 4, 33, 38,139, 80,220,203,137,220,247, 69,157,215,144,208, 80,185,121, 46,236,212,121,142,
+249,245, 53, 86,127,203,113, 39, 68,210,184,113,227, 78,114,185,220, 91, 16, 4,115,189, 94,175,214,104, 52,137, 73, 73, 73, 23,
+107, 90,144,252,175, 78,167, 75,227, 33,203,101, 50,217,251, 0, 96, 52, 26, 87,102,223,221, 55,173,182,125,107,218,254,191,114,
+ 63, 26, 49, 66, 66,119,238, 20,254,138, 99,228,209,124,120,145,209,200,219, 84,126,150,203,164,197,105, 55,119,217,254, 93,117,
+137, 25,172,127,225,141,129,105, 50, 77,166,249,124, 53,107, 95,172,155,149, 39,211,252,235, 53,221, 67, 7,122, 1, 64, 70,244,
+ 1,147, 70, 27, 87,183, 61, 43, 79,102,176,106, 67,202,138,128,193, 96,252,183, 49,197, 92, 49, 24,127, 37,166, 26,171,167,221,
+158,193, 32,120, 98,169,149, 42, 23, 64,147,157, 41, 33, 36,252, 41, 46,176,145, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,
+119,105,214,165,253,162, 68,198, 88, 19, 33,211,100,154, 76,147,105, 50, 77,166,201, 52,255,118,205, 23, 13,142, 21, 1,131,193,
+ 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,
+193, 96, 6,139,193, 96, 48, 24, 12, 6,227,127,133,191,116, 20, 33,131,193, 96, 48, 24, 12,198,191, 17, 22,193, 98, 48, 24, 12,
+ 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, 24,
+204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,227,239, 55, 88,
+132,144,112,166,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,
+131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24,140,
+191, 9, 2,160,218,145, 0,148,210, 72,147, 69,158, 98, 52, 65, 93,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52,
+235,210,174,143,255,248,159, 54, 88,148,210,191, 78,156,144,240,231, 93, 80, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241,
+ 52, 95, 52, 88, 19, 33,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,
+131,197, 96, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,227,127,134,191,116, 20, 33,131,193, 96, 48, 24, 12,198,
+191, 17, 22,193, 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176,
+ 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96,
+ 48, 24, 12, 6,227,239, 55, 88,132,144,112,166,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,102,176, 24, 12, 6,131,193, 96,
+ 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25,
+ 44, 6,131,193, 96, 48, 24,140,191, 9, 2,160,218,145, 0,148,210, 72,147, 69,158, 98, 52, 65, 93,250, 76,147,105, 50, 77,166,
+201, 52,153, 38,211,124,241, 52,235,210,174,143,255,248,159, 54, 88,148,210,191, 78,156,144,240,231, 93, 80, 76,147,105, 50, 77,
+166,201, 52,153, 38,211,124,241, 52, 95, 52, 88, 19, 33,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96,
+ 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,227,127,134,191,116, 20,
+ 33,131,193, 96, 48, 24, 12,198,191, 17, 22,193, 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,
+131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12,
+ 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,227,239, 55, 88,132,144,112,166,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,
+102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,
+193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24,140,191, 9, 2,160,218,145, 0,148,210, 72,147, 69,158, 98, 52, 65,
+ 93,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52,235,210,174,143,255,248,159, 54, 88,148,210,191, 78,156,144,240,
+231, 93, 80, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52, 95, 52, 88, 19, 33,131,193, 96, 48, 24, 12, 6, 51, 88, 12,
+ 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24,
+ 12, 6,227,127,134,191,116, 20, 33,131,193, 96, 48, 24, 12,198,191, 17, 22,193, 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96,
+ 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193,
+ 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,227,239, 55, 88,132,144,112,166,201, 52,153, 38,
+211,100,154, 76,147,105, 50, 77,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48,
+ 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24,140,191, 9, 2,160,218,145, 0,148,
+210, 72,147, 69,158, 98, 52, 65, 93,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52,235,210,174,143,255,248,159, 54,
+ 88,148,210,191, 78,156,144,240,231, 93, 80, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52, 95, 52, 88, 19, 33,131,193,
+ 96, 48, 24, 12,198,115, 70, 90,221,151,178, 54, 95,102,243, 60,239, 12, 0, 82,169, 52,199,120,245,115,215,218, 68,188,220,220,
+122, 10,192,175, 0, 32, 1,222, 78,205,200, 56, 94,141,230,113,158,231,237, 42, 52, 11,141, 87, 63,127,169, 54, 77, 89,235,133,
+199,254,180,253,149,207,122, 85, 99,161, 57, 89,235,133,153, 79,164,213,205,228,220, 83, 42,254, 55,210,249, 79,209,252, 55, 35,
+111,251,101,182,209,248,168, 30,201,100,210, 28,195,149,218,235,145,188,205,194,204, 63,109,127,249, 51,151, 39,183, 81,182, 95,
+148, 98, 52,242,110, 0,160, 84, 40,114, 3,125, 92, 86,212,166, 25,159,154,243,129, 70,171,115,170,208,204,212, 93,156,229,253,
+143, 61, 55, 77,196,213,213,181, 37,199,113,159, 19, 66,172,171,124,125, 39, 61, 61,253, 3, 86, 43, 25, 12,198, 11,103,176,120,
+158,119,190,177,119, 14,202,117, 64,143,215, 23, 58,251, 13, 89,189,229,201,109,140,218, 66,133,250,225,254, 80,137,177,200,206,
+214,140,218, 61,124,248,144, 3, 0,119,119,247, 95, 1,120, 87,163,105,119, 99,239, 28,168,245, 64,231, 81,243,236,154,250,248,
+ 88,151, 16,242,161,153,153, 89,119,173, 86, 27, 6, 0, 42,149, 42, 74,163,209,156,178,166,116,217,147,219,215,148,129,170,105,
+237, 62,102,161,115,208,208, 95,223, 19, 4, 65,161,139,223,209, 69, 44, 77,150, 74, 4,253, 15,125, 50, 51, 15,255, 2, 8,166,
+ 20, 72,213,223,237, 50,242, 83, 7, 47, 55,183,158,102,230,230, 45,205, 45, 45, 59, 9,130, 16, 34,138, 34, 68, 81,188,167, 41,
+ 47, 63,199, 27,141,215, 5,163,218,225,198,190,175,196,218,210,249,100, 94, 90, 0,210, 28, 87,215, 17,102,150,150, 93, 37, 18,
+ 73, 7, 0, 16, 4,225,130,166,172,236,140,115, 86,214, 78, 83,242,110,106,249, 60,237,246,255, 54,140, 70,222, 57,225,232, 28,
+232,140, 64,243,151, 23, 57, 55,121,109,227, 86, 0,208,231,220,118, 41,123,248,123, 27, 0,176, 8, 24,112, 69,233,218, 60, 27,
+ 0,164,201,153,206, 15, 14,126, 6,157, 17, 8, 25, 48,207,185, 58, 77,189,222,224, 21,123,104, 54,116, 70,224,173,185,187,220,
+ 62,158, 52,220, 28, 0, 78,239,251, 37,224,216,174,149,253, 1,224,165,225,239,255,209,109,200,196, 56, 0, 88,242,243, 46,183,
+205, 95, 14,135,206, 8,132, 15, 94,224,245,180,231, 38,175, 43,150, 23, 61, 56, 24,104, 44,201,176,243,178,144,186,214,247,220,
+180, 1,108,202,128, 41, 68, 34,233, 24, 24, 24,216, 2, 0,226,226,226,110,136, 60,127,222, 18,248,225,121,214, 37,137, 68,242,
+ 94,122,122,250,192,170,223,121,120,120,176, 10,201, 96, 48, 94, 76,131, 5, 0,229, 58, 32, 34, 22,232,210,182, 9, 38,140,238,
+111, 89,245,127,251,214, 47,246, 74,143, 58, 22,178,100,219, 10, 73, 80, 80, 16, 30, 62,124,104,210,143,169,245,192,153,135,128,
+ 82,155,104,165,150,201,226,231,126,254,185,117,199,142, 29,165,238,238,238, 0,128,156,156,156,182,231,206,157,107, 57,111,222,
+188,201, 74,109, 98,161, 90,143,210, 51, 38, 72, 87,166, 53, 44,168, 1, 62,155, 58,202, 6, 0, 86,124,184,179,229,161,139,183,
+237, 19, 19, 19,123,124,245,213, 87,249, 30,151, 46,173,178, 20,197,117, 49,217,217,169,166,164,115,251,225,155,102,129,134,227,
+126,195,223,120, 99,143,183,183,183,185,167,167, 39, 81,169, 84,144, 72, 36, 40, 43, 43,115,143,137,137,233,121,235,214, 45,205,
+217, 75,251,101,183,111, 14, 75,200,144, 53,215,152,146,119, 57,159,167, 42,111,216, 48,122,120,223,190,158, 3, 6, 12, 80,249,
+250,250, 2, 0, 18, 19, 19, 27,254,241,199, 31,175, 30, 58,116,232, 11, 57,159,199,171,245,208,214,149,247, 74, 77, 0,144, 1,
+237,237,157,157, 71,203,100,178,112,158,231, 61, 42,162, 11,233, 70,163, 49,178, 32, 39,103,243,147,219, 51,254, 19,157, 17,184,
+151, 9,244,236,212, 28, 99,134,245,180, 0,128, 25, 35,191,108,155,156, 24, 43,215,235,245, 8,106, 20,210, 97,193,162,111,143,
+130,227,240,219,158, 19,143,183,175,213,216, 82, 14, 15,115,128, 59,247, 19, 48,231,203,239,104,214,157, 93,173,248,194,232, 94,
+249,121,121, 82, 0,112,112,116, 28,177,125,235,230,227,174, 77,134, 95,139,203, 46,127,188,189, 41,245,189,186,115,243,208,182,
+239,220,211, 35, 79,133,254,116,116,141,204,219,219, 27,145,145,145,245, 58, 55, 81, 28, 99,101,238,230,118,111,238,199, 31,187,
+118,238,220, 25, 22, 22, 22,144,201,100, 48, 26,141, 61, 47, 92,184,208,115,206,156, 57,147, 75,138, 99,202, 77, 61, 55,235, 70,
+182,204, 37,168, 75,183,161,131,250,185,117,239,210, 22,195,250,116, 96, 21,145,193, 96,188,184, 6, 75, 42,149,230,244, 26,251,
+149,115,167, 54,225,184,118,251, 65,113, 98, 74, 86, 89,229,255,138,238,239,109, 56,105,104,211,240,213,135, 14,194, 96, 48,224,
+226,197,139,184,126,253, 58, 46, 94,188, 72,151, 45, 91,166,145, 0,111,215,160, 89,216,121,212, 60, 59,165, 46,213,178,133, 67,
+170,239,246,173,103, 36, 26,141, 6, 17, 17, 17, 40, 44, 44,132, 82,169,132,135,135, 7, 58,117,234, 36, 61,125,250,180,253,200,
+ 87, 71,219,188, 52,228,205, 4,157,210,171, 76, 42,149, 22,214,152, 1,169, 52,167,199,235, 11,157, 67, 27, 54, 64, 92, 82, 70,
+241,103,139,214,148,137, 2,149,106,147,211, 12,103,207,158, 69,179,102,205,176,125,251,118,135,194,194,194,217, 27, 54,108,248,
+220,229,251,245, 43,179,211, 98, 62,172, 69,175,176,243,168,121,118, 65,194, 73,239,157, 91,214,201,111,223,190, 45, 95,181,106,
+ 21, 10, 10, 10,160, 80, 40, 96, 99, 99, 3, 87, 87, 87, 4, 5, 5,145,201,147, 39,155,119,235,246, 16,159,125,248,134,119,150,
+221,208,152,154,210, 89,169, 41,215,103,154, 55,148, 92, 15,248,117,227, 70,174,117,235,214,164,234, 54,222,222,222,232,218,181,
+171,106,232,208,161, 1,147,223,157, 42,246, 28, 58, 49,206,160,112, 83,215,165,137,242, 84, 51, 7,245, 37,247,158,163, 70, 29,
+152, 59,119,174,173,155,155, 27,204,205,205, 1, 0,197,197,197,158, 73, 73, 73,109,231,204,153, 51,252,202,157,237,210,206, 3,
+ 82, 51, 96,225,165,169,173, 60,255,173,200,100,210,156,202, 72,148,149,133, 89, 97,106, 90,118,249,163, 40,148, 30,122,189, 30,
+ 58,157, 14,239, 76,158, 40,121,251,229,214,129, 62,157,222,187,149,152,158, 93, 16,114,226,178,125,229,190, 53,104,230,133, 14,
+ 90, 96, 7, 0, 92, 73, 66,121, 97,210,177,183,102, 78,155,230,225,234, 58, 9,114,185, 28, 0,176,126,221, 58,105,126,126,126,
+223, 5, 11, 22,132, 83,139, 30, 37,161,131, 22, 88, 84,236, 91, 88,223,115,179,240,193, 65,191, 47,167,244,110,250,235,162,131,
+ 16, 4, 1,151, 47, 95,198,217,179,103,241,237,183,223,210,195,135, 15, 23, 91, 91, 88,212,122,110,162, 56,198,170,163, 91,150,
+255,215, 95,239, 38, 10,133, 2,251,247,239,199,253,251,247,193,113, 28,154, 52,105,130, 49, 99,198,160,103,207,158,174, 19, 38,
+ 76,164,157,251,140,140,135, 77,163,210,103,169, 75,132,204,227,156,195,154,190, 55,101,194,107,110, 47, 15,238,141,239,190,255,
+137, 25, 44, 6,131,241,226, 64, 41,253,207, 23, 64,124,135,172,222,186,243, 6, 61,232, 59,100,245, 86, 10, 16, 10, 16, 37,224,
+221,189,123,119,125, 89, 89, 25,189,125,251, 54, 29, 49, 98, 68,225,140,143, 63, 94,187,113,253,250,185, 58,181,250,157, 22, 77,
+155,142,161, 21, 35, 19,171,213,180,181,181,246,247,247,207, 77, 77, 77,165,135, 15, 31,166,243,230,205,163, 91,182,108,161, 71,
+142, 28,161, 39, 79,158,164, 71,142, 28,161, 59,118,236,160,183,111,223,166,177,177,177, 52, 32, 32, 32,215,215,214,214,186, 22,
+ 77,142, 2, 92,224,208, 95, 62,220,117, 93,152,219,112,232,175, 31, 80,128, 11,112,117,109,212,171, 87, 47, 97,247,238,221,116,
+243,230,205,116,227,198,141,244,206,157, 59, 52, 47, 47,143,122,248,248,231, 86,238, 87, 83, 58, 41, 64,154, 55,111,158, 91, 84,
+ 84, 68,189,189,189,169, 92, 46,167,206,206,206, 52, 40, 40,136,182,109,219,150,246,233,211,135,190,250,234,171,116,246,236,217,
+180,168,168,136,250,248,248,100, 87,238, 87,147,102, 91, 15, 15, 85, 64, 64, 64,202,221,187,119,105, 77,104,181, 90,154,151,151,
+ 71, 79,157, 58, 69, 3, 2, 2, 82,218,122,120,168,106,211,148, 1,205,195,195,195,115,243,242,242,168, 40,138, 84,173, 86,211,
+252,252,124,154,159,159, 79, 11, 11, 11,169, 94,175,167,162, 40, 82, 81, 20,105, 76, 76, 12,245,247,247,207,145, 1,205,107,212,
+252, 55,191, 42,235,196, 19, 47, 15, 23,151, 62,174,174,174,154,221,187,119,211,244,244,116,186, 97,195, 6,202, 1, 95,254,199,
+182,213,104, 14, 15, 25, 46,111,222,124,130,153, 68, 98,214,191,125,251,246,194,197,139, 23,233,141, 27, 55,232,204,153, 51,233,
+192,129, 3,233,160, 65,131,232,220,185,115,105, 74, 74, 10, 77, 77, 77,165, 47,189,244,146, 32,145,152,245,111,222,124,130,217,
+240,144,225,242,250,156,155, 42,192,107,192,128, 1, 26,131,193, 64,227,227,227,105, 88, 88, 88,154, 4, 24, 45, 7, 66,252, 1,
+ 69, 93,245,211, 26,176,117,115,115,203,188,116,233, 18,221,189,123, 55,245,241,241,201,149, 0,227,149,128,175, 18,240,149, 0,
+227,253,252,252,114, 47, 93,186, 68,243,242,242,168,183,183,119,166, 53, 96,251,180,117, 9,152,203, 57,135, 13, 89,183,224,251,
+221, 52, 38,173,156, 46,248,126, 55,117, 9,234,154, 66, 41,165,110,110,110,199, 89,157,100, 47,246, 98,175,127,250, 75, 90, 31,
+ 51,198,153,153,205, 89,180,104,145, 92,163,209, 96,254,252,249,185,239, 76,154,180,208,209,217,217, 32,147,201, 32, 83, 42,235,
+ 22,176,182,254, 96,214,172, 89,182,122,189, 30, 55,111,222, 68,139, 22, 45,160, 82,169, 32,147,201, 32,151,203, 33,149, 74,225,
+234,234,138,188,188, 60,184,184,184, 96,242,228,201, 54, 63,124,247,221, 7, 40, 42,154, 95,155,172, 40, 80, 41, 0, 8,130,160,
+240,114,119,159, 16,214,184,241,178,201,147, 39,115, 22, 22, 22,208,233,116,208,233,116,136,137,137,129,131,131, 3,204,205,204,
+ 76,202, 51,199,113,156,165,165, 37, 34, 34, 34,176,110,221, 58, 36, 36, 36, 32, 35, 35, 3,214,214,214,104,214,172, 25, 66, 66,
+ 66,208,161, 67, 7,196,198,198,130, 16, 66,234,210,203,150, 72,166,140, 25, 53,202, 57, 60,188,250, 41, 69,116, 58, 29,138,138,
+138, 80, 84, 84, 4, 23, 23, 23,244,237,219,215,249,192,254,253, 83, 0, 44,173,110,123,115,192,213,183, 97,195, 3, 87,175, 94,
+117,228, 56, 14, 17, 17, 17, 80,171,213,208,106,181,224,121, 30,132, 16,168, 84, 42,180,107,215, 14, 14, 14, 14,104,216,176, 33,
+246,238,221,235,212,171, 87,175, 63,204,179,179,155,171,129, 76,246,120, 81, 55,105,217,217,199, 90, 0, 14,175,189,246,218,225,
+ 59,119,238,116, 30, 61,122, 52,178,179,179, 63,149,204,156, 89, 40, 0,203,107,219,119,231,189, 93,188, 39, 96, 97,239,228,244,
+203,226,197,139,185,172,172, 44, 76,159, 62, 61, 63, 35, 53,117,150, 10,184, 4, 0,127,252,254,123,187, 77,155, 54, 45,218,188,
+121,179,195,198,141, 27,185, 22, 45, 90,172,206,185,185, 58,244, 6, 80, 92,159,116,106,129,247, 86,172, 88,161,210,106,181,232,
+213,171, 87,188, 58, 49,177, 9, 15,104, 76,221,191, 12,152, 50,247,227,143, 93,149, 74, 37, 62,250,232,163,188,188,228,228, 48,
+ 30,200,173,178, 73,146, 69, 66,194,225,215, 95,127, 61,234,206,157, 59,142,203,151, 47,119,125,121,232,208, 41, 0, 22,154,250,
+ 27,255,223,161,157,179,118, 9,242,111, 56,164, 79, 95,151, 70,126,206,216,189,255, 40,126, 88,189,101, 61,138,226,126,241,240,
+240,152,194,113,220, 18, 86,243, 24, 12,198, 11,217, 68, 88, 19,118,118,118, 45, 3, 2, 2,112,242,228, 73, 4, 7, 7,239,117,
+174, 52, 87, 50, 25, 4,161,238, 62,228,102, 22, 22, 61, 58,119,238, 44,189,120,241, 34,124,125,125, 97,102,102,246,216, 88, 85,
+154, 44,153, 76, 6, 87, 87, 87, 20, 23, 23,163, 99,199,142,178,117,235,214,245, 0, 48,191, 46,237,204,164, 24, 75,196,175,123,
+109,222,130, 5,254, 45, 91,182,132,193, 96,120,100, 68,204,205,161,211,233, 32,147,201, 96, 48, 24,160,213,211, 18, 83,242, 42,
+ 8,130, 32,145, 72,224,237,237,141, 47,190,248, 2, 90,173,246,113,179, 78, 73, 73, 9,138,138,138,112,243,230, 77, 36, 38, 38,
+ 66, 20,197, 58, 39, 19, 51,183,180,236, 59,104,208, 32, 69,117,255,211,235,245,143,205, 85,113,113, 49,180, 90, 45,154, 54,109,
+170, 56,117,234, 84,223,154, 12, 22, 81,169,134,111,220,184,209, 89,161, 80, 64,171,213,226,225,195,135,136,139,139, 67, 76, 76,
+140,174,160,160,128,183,180,180, 36,110,110,110,146,226,226, 98,197,235,175,191, 78, 74, 75, 75, 1, 0, 67,135, 14,117, 88,191,
+118,237, 43,168,195, 28, 48,254,159, 27,128, 46, 64,175, 31,216,186,117,235, 83,215,174, 93,107,241,254,251,239,227,206,157, 59,
+223,152,111,223,126, 86, 13,220,170,181, 94, 2,147,151,204,152,225,102, 97, 97,129, 49, 99,198, 20,168, 83, 83,155,240, 64, 86,
+149, 77, 30, 56, 36, 38, 30, 25, 59,118,108,228,157, 59,119,236,150, 47, 95,238,250,202,240,225,147, 1, 44,170, 79, 26,109,108,
+108, 90,187,186,186,226,200,145, 35, 72, 73, 76,156, 81, 31,115, 5, 0, 68, 34,233,216,165, 75, 23,236,219,183, 15,105,201,201,
+ 51,158, 48, 87, 0,128,114, 32, 87, 26, 31, 63, 99,253,250,245,235,222,120,227, 13,112, 82,105, 71,240,188,201,191, 81, 93,135,
+246,119,102, 44,193,222, 35,151,215,231, 68, 53,126,139,210,189, 34,128,171,172,198, 49, 24,140, 23,129,122,205,131,229,231,231,
+231,167, 84, 42,145,148,148,132, 54,109,218, 36,202, 20, 10, 40, 21, 10, 40,205,204, 76,123,202,214,106, 27,187,186,186,162,164,
+164, 4,142,142,142,144,203,229,144,203,229, 80, 40, 20, 80, 40, 20,143, 63, 91, 89, 89,129,227, 56,120,120,120, 64,171,213, 54,
+174, 75,151, 47,126,232,124,116,195,140,119, 15,237,221,228, 63,116,232, 80,184,187,187,193,195,195, 29, 22, 22, 22,144, 74,165,
+240,246,246, 70, 64, 64, 0,214,174, 93, 11, 98,221,240,138, 41,105,173,106,154, 36, 18, 9, 4, 65, 64,118,118, 54, 98, 98, 98,
+112,231,206, 29, 92,186,116, 9, 55,111,222, 68, 89, 89,153, 73,121, 87,171,213,205,170, 11,116, 61,105,174,138,138,138,144,155,
+155,139,184,184, 56,148,150,150, 54,175,209,236, 58, 56, 12, 11, 15, 15,151, 0,128, 74,165,130,159,159, 31,126,254,249,103,254,
+248,145, 35,175,152, 93,187,102, 43,156, 58,101,179,245,183,223, 94,121,243,205, 55,133, 43, 87,174,160,164,164, 4, 15, 30, 60,
+128,147,147,147, 84,105,102,246, 10,171,250,245, 35, 14, 40,183, 40, 45,237,211,190,125,251,132,226,226, 98, 44, 89,178,132,147,
+ 90, 89,253, 50, 17,144,212,122,130, 73, 36,157,186,117,235,134,253,251,247, 35, 45, 57,121,102,254,159,205, 21, 0, 32, 31,200,
+ 74,140,139,155,177,126,253,122,244,237,219, 23, 82,169,180, 83,125,211,215,182,109,219,112, 74, 41,238,222,189, 11, 5,112,185,
+190,251, 7, 6, 6,182,176,180,180,196,253,251,247, 33, 3,206,214,180,157, 12, 56,123,243,230, 77,152,153,153, 33, 52, 52,180,
+101,253,126, 69,182,204, 37,168, 75,230, 59, 51,150, 96,207,145, 11, 0,128,125, 7, 14,103, 63, 50, 87,115, 68, 86,203, 24, 12,
+198,191,214, 96, 1,143,250,108, 73, 36, 18,200,165, 82,152, 41,149, 80, 40,149, 80,200,100,166, 63, 41, 19, 2,165, 82,249, 31,
+166,170,210,104, 85,254,181,176,176, 48, 89,211,152,121,190,243,184,177,175, 43, 44, 45, 45, 33, 8, 60,164, 82, 41,204,205,205,
+225,234,234,130, 70,141, 26,161,160,160, 0, 3, 7, 13,209, 38, 23, 72, 15,200, 60,123,220,121,154,130,226,121, 30,229,229,229,
+ 40, 44, 44, 68, 65, 65, 1, 74, 74, 74,160,213,106, 97, 66,235,224, 99,159,150,146,146,130,109,219,182, 33, 63, 63,191, 70,115,
+ 21, 31, 31,143, 77,155, 54, 33, 49, 49, 17, 18,137,196,228,227,211,163, 71, 15, 28, 60,120, 80,210,181, 71,143, 53,201, 62, 62,
+153,201, 62, 62,153, 93,123,244, 88,243,251,239,191, 75, 60, 60, 60,144,146,146,130,155, 55,111,162,160,160, 0,162, 40, 18, 86,
+245,235, 79, 6, 80,168, 46, 40,120,227,211, 79, 63,165,150,150,150, 88,186,116,105,179,181,192,171,181,237,227, 31, 16,208,194,
+210,210, 18,247,238,221,131,121, 45,198,197, 28, 56,123,227,198, 13,152,153,153,161, 81, 72, 72,203,167, 57, 47, 69, 81,132, 32,
+ 8, 32, 64,189,205, 10, 33, 4, 50,153, 12, 28,247,215,204, 61, 76,200, 60,142,183,107,250,222,148, 41, 83,221,222,155,250, 14,
+ 78, 69, 60,242,128,146,178,248,135,204, 92, 49, 24,140, 23,145,122, 53, 17,198,197,197, 37,106,181,218, 16, 95, 95, 95, 68, 69,
+ 69,249,134, 53,110,124, 71, 38,147, 65, 41,147,213,254, 24, 95,129, 74,165,186,155,157,157,221,193,211,211, 19, 70,163,241,113,
+147, 96,101, 51, 97,229,103, 0, 80, 42,149,184,119,239, 30, 84, 42,213,221, 58, 51, 33,148,249,248,249,249, 33, 43, 43, 27, 74,
+165, 18,118,118,182, 48, 51, 51,131, 82,169,194,162, 69,139,196, 53,171, 87,255,168, 12,155, 82, 52,237,205, 25,244,234,194, 95,
+255,150,130, 54, 55, 55,191,235,235,235,219,206,194,194, 2,123,247,238, 69, 98, 98, 34,138,138,138, 30,247,155,210,104, 52,208,
+233,116, 80,169, 84, 8, 13, 13,133,189,189, 61,162,162,162,106,204,123, 97,126,254,158,200,200,200,118,173, 90,181,122, 92,244,
+ 93,187,118, 37, 93,187,118,117,172, 18, 53, 67,126,126, 62,110,223,190,141,136,136, 8,240, 60,143,232,232,104, 65,167,209,108,
+103, 85,255,233,208, 2, 23, 36,235,215,175,155, 52,105,210,155, 29, 58,116, 0, 5,250, 1,248,173,198, 39, 24,142, 35, 82,169,
+ 20,132,144, 90,141, 15, 1,196,202,101,171, 72, 61, 92,123, 37,151, 46, 93,138, 20, 4,161, 67, 80, 80, 16,116, 64,107, 0, 7,
+235,179,127,108,108,236, 13,163,209,216,179,105,211,166,216,179,115,103,103, 0, 73,213, 62,204, 0,157,155, 55,111, 14,141, 70,
+131,232,232,232,235,166,154, 43,231,176,187,107,166, 76,120,109,252,203,131,123, 99,247,254,163,216,119,224, 72,234, 79, 95,127,
+236, 69,169,104, 96,181,138,193, 96,252,235, 35, 88,197,197,197,215,238,223,191,143,182,109,219, 34, 54, 62,126,168, 78,163,145,
+ 87, 70,177, 56, 73,221, 22, 75, 83, 94,126,242,252,249,243,124,179,102,205, 80, 86, 86,246,216, 84, 85,141, 94, 85, 26, 46, 11,
+ 11, 11, 28, 62,124,216,160, 41, 47, 63, 89,151,174,192, 11, 34,199,113, 32,132, 64,167,211, 33, 51, 51, 11, 90,173, 14,191,254,
+250, 43,214,174, 94,253,106, 90,102,230, 7, 80,218,105,254,138, 2, 52,245, 94,168,209,104, 78,158, 60,121,210,232,235,235,139,
+113,227,198, 97,218,180,105,152, 54,109, 26, 38, 78,156,136,241,227,199, 99,244,232,209, 24, 54,108, 24,218,180,105, 3, 39, 39,
+ 39, 36, 36, 36, 24, 53, 26, 77,141,121,167, 90,237,174,177, 99,199,230,104,181, 90, 8,130, 0,157, 78, 7,141, 70,243, 56,202,
+118,243,230, 77,236,217,179, 7,171, 87,175,198, 31,127,252,129,242,242,114,148,148,148,224,198,141, 27, 69, 18,163,113, 7,171,
+250,207,116,210,236, 62,127,254, 60,236,236,236,224,238,233,217,165,214,135,146,216,216, 91,130, 32,160, 73,147, 38, 40, 7,106,
+220,182, 28,232,210,172, 89, 51,104,181, 90,220,139,142,190, 89,223, 52,149,150,150, 94, 77, 72, 72, 64,215,174, 93,225,230,233,
+185,204, 5, 48,171,207,254, 34,207,159,191,112,225, 2, 94,127,253,117,248,248,249,125,109, 1, 56, 61,185,141, 5,224,228, 27,
+ 16,240,245,248,241,227,113,236,216, 49,136, 60,127,190, 38, 61, 87, 87,215,150,238,238,238,191,123,120,120, 68,184, 4, 28, 79,
+ 26,218,167,237,248,170, 29,218,105, 81,220, 8, 15, 15,143,205, 28,199,125,196,106, 20,131,193,248,215, 27, 44, 81,163,153, 55,
+107,214, 44,189, 68, 34,193,187,239,190,235,244,195, 79, 63,205,219,177, 99, 71,171,219,119,239,186,234,117,186,186, 29, 86, 73,
+201,138, 5, 11, 22, 20, 25, 12, 6, 4, 7, 7,163,160,160, 0,130, 32, 64, 34,145, 64, 42,149, 66, 34,145,128,227, 56,152,155,
+155, 35, 50, 50, 18,219,183,111, 47, 65, 73,201,138, 58,211, 37,138,119,247,238,221, 11,169, 84, 74, 85, 42,213, 99,211,243,221,
+119,223,229,188,153,153,185, 7, 0, 36, 18,137, 30, 0, 56, 9, 49,169, 87, 46,199,113,117,118, 92, 87, 40, 20,149,157,251,235,
+238,228,206,243, 43,126,254,249,231,210,135, 15, 31, 66,173, 86, 63,110, 26, 44, 43, 43, 67,105,105,233,227,207,149, 38,241,236,
+217,179,165,230, 60, 95, 99,222,213, 64, 86,226,195,135, 3, 91,181,106,149,159,148,148,132,178,178, 50,196,198,198,226,210,165,
+ 75, 56,120,240, 32, 78,159, 62,141,184,184, 56,232,245,122,216,218,218,162,164,164, 4,191,255,254,123,137,174,172,172,183,186,
+154,126, 64,140,255,199,203,205,173,135,139,179,115,170,147,163, 99,186,151,155, 91,143,106,140,198,131, 7, 15, 30, 64, 16, 4,
+248,251,251,219,215,214, 15, 75,224,249,243,151, 46, 93,194,232,209,163,225,234,225,177,200,169, 26,227,226, 4, 56,185,121,122,
+ 46, 26, 55,110, 28, 78,158, 60, 9,161, 22,227, 82, 19, 42,224,187,143, 63,254, 88, 35,151,203,177,125,251,118,127,235,192,192,
+ 24, 41,240,154, 2, 8, 14, 0,228,117,237,111, 9,252, 48,123,246,236, 44, 0,216,188,121,179,163, 91, 64, 64,148, 20, 24,167,
+ 2, 26,168,128, 6, 82, 96,156, 91, 64, 64,212,246,237,219, 29,121,158,199,180,105,211,178, 44,129, 31,106,210,147, 72, 36,239,
+101,100,100, 12, 76, 79, 79,239,156, 21,123,209,235,167,175, 63,198,169,136,203,248, 97,245,150,245, 57, 81,141,223,202,206, 78,
+187,154,158,158, 62, 38, 45, 45,141, 45, 22,203, 96, 48, 94, 72, 72,101,179, 68, 85,100,109,190,204, 6,168,115,151,182, 77,112,
+237,118, 76,177,131,157,205,145,202,255, 21,221,223,219,240,149,174, 62,205,230,205,155, 7, 66, 8,238,223,191,143, 59,119,238,
+ 0, 0,150, 44, 89,162,230, 40, 29, 90,185,222, 89,213,213,182, 43,215, 59, 83,234, 82, 45,155,219, 37,248,253,182,113,189,196,
+202,202, 10,101,101,101,144, 72, 36, 80,169, 84,176,176,176,128, 82,169,196,157, 59,119,240,250,184, 55,132, 56,190,233,227,137,
+ 70, 43,215, 59,251,211, 10,222,132,112, 0,208,193,193,193, 60, 69, 46,255,208,201,197,229,227,169, 83,167,154,117,238,220, 25,
+ 10,133, 2, 45,219,116,202, 50,107,246,241, 74, 78, 66,248,140,188,226,207, 3, 26,184,219, 68, 63, 76, 2, 64, 30,173, 89, 88,
+177, 22, 97,117,233,108,172,186,227,255,219, 79,243,173,195,194,194, 64, 41, 69,113,113, 49,178,179,179,145,147,147,131,162,162,
+ 34,104, 52, 26,136,162,136, 19, 39, 78,224,196,149,248,146,108,171,151,226,107, 74,231,255,231, 61,201, 42,196,236,129,239,202,
+229,203, 36,118,118,118,200,206,206, 70, 94, 94,222,227,166, 66, 65, 16, 80, 90, 90,138,253, 7,254, 16,226,133,198,137, 58,101,
+131,210,186, 52, 81,158,106,102, 95,118,193,163,101,184, 47,157, 56,113,162,149,181,181, 53, 68, 81, 68, 65, 65, 1, 18, 19, 19,
+241,224,193, 3,156, 59,119, 78,157, 83, 98,164, 26,199, 94,105,149, 19,141, 86, 91,158,207, 47,170,247,207,211,172,168, 75, 0,
+224,238,230,150,153,156,156,236, 44, 8, 2, 60, 60, 60,248,162,130,130,197, 10,224,152, 28,200, 32, 0, 45, 5,102, 47, 95,185,
+242,141,193,131, 7,163,117,235,214,169, 89,217,217, 13,170,171, 75, 32,132,115, 7,236,228, 62, 62,247, 46, 95,190,236,244,224,
+193, 3,140, 29, 59, 54, 55, 35, 53,245, 67,107, 32, 2, 0, 74,128, 46,238, 94, 94,203,182,110,221,234, 20, 30, 30,142, 38, 77,
+154,228,234, 18, 19, 67, 50,128,194, 26,234,103,141,231,102,225,131,131,126,239, 14, 13,111,245,206, 59,239,128,231,121, 68, 68,
+ 68,224,202,149, 43, 72, 73, 73,193,133, 11, 23,138,172, 45, 44, 70,214,118,110,162, 56,198,170,111,195,114,255,205,155,127, 35,
+114,185, 28,235,215,175,199,205,155,143,130,105,205,155, 55,199,248,241,227,193,243, 60, 70,143, 30, 67,255,136, 49,123, 60,209,
+104,117,117,201,211,211, 51, 92, 20,197,165,132, 16,185,160,112,110,149,149,112, 83,229, 22,212, 49, 35,235, 97, 15,175,250,244,
+185, 98,245,147,105, 50,205,127,143,230,139, 70,157,107, 17, 46, 92, 5,155, 63, 47,199,241,118,230,254,245,139,165,253,250, 15,
+ 12,249,252,179, 89,146,198,141, 27, 67, 20, 69,180,110,221, 26, 99,199,142, 53, 15, 9, 9,169,107,189,179,178,151,134,188,153,
+240,210, 75, 47,217,190,251,238,187, 54, 93,186,116,145, 85, 46,149,115,247,238, 93, 28, 58,116,200,176,109,219,182,146,116, 69,
+167,162, 11,135,215,150,153,178,222,217,133,252,124, 53,128,249, 65, 6,195,234,217,159,125, 54, 55,172,113,227, 55, 63,248,224,
+ 3,206,210,194, 92,182,240,243,183, 85, 0,240,229,247,219,108, 6, 15,127, 13, 43, 2,129, 46,175, 86,191,118, 92,213,116,166,
+101,230, 36,191,246,198,136,192, 55, 71, 15, 21,135, 12, 25, 98,110, 99, 99, 3, 47, 47, 47,216,218,218, 34, 33, 33, 1,119,239,
+222,165,199,142, 29, 43,187,125, 63, 69,182,105,199,177,100,133,165,179, 41,235, 6,150,190, 52,120,108,226,184,113,227,236,134,
+ 14, 29,106, 21, 22, 22, 38,147,201,100, 80, 42,149,200,203,203, 67, 90, 90,154,225,244,233,211,101,233,242,118,133, 23,142,108,
+ 40, 53,113, 45, 66, 77,231, 81,243, 98, 79, 30,157,251,193,237,219,183,199, 0,104,106, 48, 24, 60, 5, 65, 32, 28,199,101, 10,
+130,112, 71, 91, 86,182,142,111, 62,119, 5, 91,139,208, 52, 4, 65,144, 11,130,128,162,162, 34, 28, 63,126, 92, 26, 23, 23,247,
+249,237,219,183, 63,207,200,200,128,193, 96,192,240,225,195,209,188,121,115,156, 57,115, 6,185,217,217, 7,106,211,202, 0, 10,
+165,201,201,111, 76,158, 60,249,224,134, 13, 27,200,221,187,119,157,214,173, 91,247,219,141, 27, 55, 0, 0, 45, 90,180,192, 27,
+111,188, 1,169, 84,138,177, 99,199,210,148,196,196, 55,120,160,176,150,250, 89,219,185,153,123,104,219,119,183,135, 12, 27, 30,
+ 58,103,246,103,178, 14, 29, 58,192,201,201, 9,157, 58,117,130,193, 96,176, 53,225,220, 44,237,220,103,100,124,211,166, 77, 45,
+150, 47, 95,238,250,198, 27,111, 96,202,148, 41, 0, 0,141, 70,131, 99,199,142, 97,218,180,105, 89, 41,210, 54,229, 55, 78,111,
+175,181,126, 86, 68,166,122, 1,128,135,135, 71, 4,128,206, 92,121, 82, 60,235,208,206, 96, 48,254,213, 6, 11,248,255,245,206,
+206, 93,137, 68,213,229, 56, 30, 97,127,207,104, 63, 52,254,141,105,139, 67, 37,198, 34, 59, 51,169,222,238,206,237,219, 92, 66,
+ 66, 66,173, 63, 86,185,222,153, 78,233, 85, 38,100,230,183,250,110,197,138, 15,214,172, 89,211,163,114, 42, 6,149, 74,117, 87,
+ 83, 94,126, 18, 37, 37, 43,116,190, 94,167,234,187,118,222,131,252,252,108, 0,147, 2, 68,113,229,184, 55, 39, 46, 33,150, 94,
+210, 89, 11,127,213, 74, 36, 18,125,124,122, 54, 86, 4, 2, 22, 38,204,135,170,214, 3,119,243,157,249, 40,218, 37,102,233,226,
+197,211, 87,253,240, 67, 27, 51, 75,203,206, 6,131, 33, 68, 20, 69, 0,184,167, 85,171,207,242, 6,195,149,116,247, 9,223, 42,
+ 44,157,169,169,235, 6,234, 84,190,165, 22,154,115,173,118,239,220,249,254,225,195,135,255, 35,239, 86,192, 74,157,181,239, 73,
+ 83,242, 94,117, 27, 35,112, 17, 57, 57, 23,107,124,218, 0, 91,139,208, 84, 56, 74,223,182,179,179,251,173, 71,143, 30,170,158,
+ 61,123,162, 95,191,126,104,223,190, 61, 68, 81, 4,165, 20,165,165,165,216,177, 99, 7,190,249,230,155,135, 46,192,188,186,244,
+120,224,136,116,255,254, 65, 45, 90,180, 88,183,124,249,114,135, 73,147, 38,193,172, 98,106, 19,141, 70,131,211,167, 79, 99,218,
+180,105,249, 73,241,241,111,240,192,145,186,244,106, 63, 55, 85, 15,120,219,193,137, 35,167, 44, 14, 52,150,100,216, 57,152,243,
+174, 81,145,119, 77, 62, 55, 97,211,168,180,248,230,142,214, 47, 15, 29, 58,133,147, 74, 59, 86, 78,197, 16, 29, 29,125,189,114,
+177,103, 52, 31,127,162, 62,117,137,210, 71,115,207, 81, 74, 89,135,118, 6,131,241,239, 54, 88, 82,169, 52,167, 50,202, 35,149,
+ 74,115, 18,246, 77,120,173, 54, 17, 47, 55,183,158, 21, 79,199,168,107, 45,194,202,247, 9, 69, 69,165, 21, 51,180, 87, 59,137,
+168,236,137,237,235,147,169,184,236,236, 24, 0,253,129,100, 32,230,220, 35,189,214, 11,103, 86,205, 83,141, 5,242,167,223,149,
+ 23,164,101,103,159, 3,112, 14,192, 55,213,166,211, 91, 94, 80, 87, 58,159,204,251,237,228,228,146,138,124, 87,159,119,231,186,
+243, 46,173,103,249, 72,159,161, 60,255,109,100,230,230,238, 3, 96,225,120,240,160,203,161,131, 7, 95,153, 62,125,250,203,238,
+238,238,129,142,142,142,118, 86, 86, 86,220,229,203,151, 19,244, 90,237,202, 0, 96,195, 3, 64,109,138, 38, 15, 28,114,141,143,
+ 15, 30, 52, 96,192, 7,156, 84,218, 49, 36, 36,164, 57, 0,220,187,119,239,166,200,243,231,157,128, 21, 60, 80, 96,194,113,172,
+223,185,169,172,255,185, 89,252,104, 22,249,133,224,121,160,162,249,255, 89,206, 77, 81, 20, 23,122,120,120,148,178, 25,218, 25,
+ 12,198,191,137,106,251, 96, 61, 55,113,214, 62,205, 52, 95, 32, 77, 66,136, 4,128, 69,101, 68,134,149, 39,211,100,154, 76,147,
+105, 50,106,124, 32,102, 69,192, 96,152, 6,165, 84, 0, 80,194, 74,130,193, 96, 48, 24,117,154, 80, 0,225, 53,220, 76,234,243,
+100, 31,254, 20, 55,171, 72,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52,235,210,126, 81, 34, 99,172,137,144,105, 50,
+ 77,166,201, 52,153, 38,211,100,154,127,187,230,139, 6,199,138,128,193, 96, 48, 30, 49,111, 30,225, 0, 66,128,121, 28,176, 75,
+ 2,140,144, 60,250,252,244,140, 24, 65,170,157,136,246,189,209,196,138,149, 56,131,241,226,194,250, 96,253,141,184,185,185,121,
+187,184,184,252, 66, 41, 37, 57, 57, 57, 19, 50, 51, 51, 83, 88,169,252,239,225,224,224,208, 3, 0,242,243,243, 79,190,168,121,
+ 12,243, 35, 67, 41, 65,240,159,158, 80, 69,164, 68, 37,210, 63,173,179, 24,230, 75,198, 80,238,207,115,105, 17,138,251, 81, 9,
+116,111, 61,158,124,185, 33, 61,156,150, 2,192,190,147,185, 31,209,138, 9, 85,159, 39,238,238,238, 65, 14, 14, 14, 71, 37, 18,
+137, 84, 16,132,201,119,239,222, 61, 88, 91,122, 0,224,157, 97,152,101,231,224, 56,107,246, 36, 34,211,235,150, 20,233,180,218,
+ 98,142,227, 18,229,114,249, 57,157, 40, 63,242,253,102, 99, 84,117,251,215,150,254,112, 63,210, 55, 56, 36,116, 96,139, 16,179,
+248,165, 35, 90,175,232,242,166,163, 44,225,250, 45,203, 85,123, 83,126,113,178,243, 24,248,254, 40,233, 65,165,153, 48,230,235,
+181,180,140,157,105,166,177,136, 16,123, 3,208, 88,174, 84,122, 10, 60,239, 2, 0, 18,169, 52,219,168,211,165,202,129, 59, 51,
+ 41, 45,250, 31,209,116, 52, 74,165,225,114,133,194, 83, 48, 26, 93, 8, 64, 33,147,229,136,122,125,170,192,243,145,115, 40,205,
+127,218,116,202,148, 74, 47,129,231, 93, 8, 64,159, 87,222,159,167, 38,163, 14,131, 21, 16, 16,112,157,227, 56, 79,142,227, 42,
+ 47, 66, 85, 47, 72,213,254, 21, 4, 33,237,254,253,251, 45, 77,253,113, 63, 63, 63,107,173, 86,251, 10, 33,228,181,138, 11,213,
+ 22,149, 74,181, 35, 33, 33,225,169, 58, 18,251,249,249, 89, 83, 74, 63, 50, 51, 51,235,174,213,106,195, 0, 64,165, 82, 69,105,
+ 52,154, 83,132,144,165, 79,163, 75, 8,145,186,185,185,141,176,176,176,232,198,243,124, 55, 74, 41,145, 74,165,167,213,106,245,
+169,204,204,204,157,148, 82,190,190,154,238,238,238,102, 14, 14, 14, 95, 6, 6, 6,190,250,238,187,239,230,219,219,219, 55,154,
+ 55,111,222,181,240,240,240,173, 5, 5, 5,159,101,100,100,104,254, 23, 42, 7, 33, 36,192,213,213,117,139, 76, 38,147,164,166,
+166,118, 3, 0, 47, 47,175,211,122,189, 94,200,201,201,121,141, 82, 26, 87, 31, 61, 39, 39, 39, 11,153, 76,214,214,194,194,162,
+165,133,133, 69,103, 65, 16, 66, 68, 81,132, 40,138,247,202,203,203,207, 26,141,198,235, 70,163,241,114,110,110,110,249,255,202,
+ 9, 66, 8,177,114,117,117,253,141,231,121, 16, 66, 26, 82, 74, 75, 95,196, 11, 1, 37, 8,142,142,186,215,168,234,119,161, 97,
+ 33,255,185, 29, 7,239, 26,182, 51,217, 96,245,235,104,219,103, 96,223,166, 28, 0, 24,244,215,250, 0, 56,244,188,205, 85,191,
+126,253, 46,174, 92,185,210, 78,167,211,225,227,143, 63,222,210,176, 97,195, 31, 31, 62,124, 56,171,182,253,172,173,109,166,207,
+255,234, 7,243,138,235,153,179, 40,138,206,153, 25,169, 13, 99,238,223,237, 19,115, 63,114,209,212,225,247, 47,105,120, 97,226,
+218,125,184,111, 74, 58, 66,125,201,128,193, 47, 15,237, 63,255,139,185,120,245,213, 87, 27, 68, 21,104,205, 60,162,110, 43,202,
+169,101,128,163,179,231,160, 25,159,125, 77, 46, 95, 60, 51,104,231,182, 53,167,102,188, 73,186, 51,147, 85,231,185, 72, 22, 74,
+165,109,237,130,131, 59,143,220,183, 15,150, 94, 94, 82,169, 82,201, 1, 0,175,211,121,149,165,166,186,109, 31, 52,168,205, 60,
+ 66,206,204,161,244,202,223,169, 57, 95, 42,237,224, 16, 28,220,225,213, 67,135, 96,233,230, 38,229,228,114, 14, 0, 68,131,193,
+179, 36, 35,195,109,123,255,254,173,231,201,100,103,231,242,252,101,106, 66, 63,157,127, 74,222, 25, 38, 26, 44,142,227, 60,111,
+222,188,233,108, 97, 97, 81,249,148, 6, 65, 16, 32, 8, 2, 42,110,138,143, 39, 94,164,148,130,231,121,116,237,218,213,164,167,
+ 87, 55, 55,183,238, 0,198,133,135,135,191,252,209, 71, 31,201, 59,116,232, 0, 65, 16,112,234,212,169, 78,203,151, 47,255,222,
+221,221,125, 15,128, 13,153,153,153, 39, 77,125,186,117,115,115,235,109, 97, 97,177,249,243,207, 63,183,238,216,177,163,180,114,
+118,248,156,156,156,182,231,206,157,107, 57,111,222,188,201,110,110,110,163, 51, 51, 51,143,154, 90, 56,158,158,158,225, 13, 27,
+ 54,220,213,183,111, 95,207,150, 45, 91,170,130,130,130, 64, 41,197,173, 91,183,222,136,137,137, 25,117,232,208,161, 57,158,158,
+158,195, 77, 93, 79,141, 16, 66, 2, 2, 2,198,186,186,186,126, 57,125,250,116,251, 33, 67,134, 40, 34, 35, 35, 11,253,253,253,
+201,158, 61,123,156, 14, 28, 56, 48,249,199, 31,127, 28, 17, 24, 24,248, 89, 92, 92,220, 70, 83, 78,188,134, 13, 27, 94,231, 56,
+206,211, 20, 3, 92, 31, 19, 76, 8,105,230,235,235,187,227,236,217,179,190, 73, 73, 73,194,208,161, 67, 55, 1,192,133, 11, 23,
+154, 80, 74, 73,135, 14, 29, 14, 19, 66, 94,161,148,222, 50, 37,239, 30, 30, 30, 77,156,156,156,246, 15, 25, 50,196,222,219,219,
+219,220,211,211,147,168, 84, 42, 72, 36, 18,148,149,149,185,199,196,196,244,188,117,235,150,230,194,133, 11, 5, 30, 30, 30,131,
+210,211,211,239,212,227,194,219,222,217,217,121,140, 76, 38, 11,231,121,222, 3, 0,164, 82,105,186,209,104,140,204,201,201,249,
+141, 82,122,241,105, 79, 16, 23, 23,151,239,151, 47, 95,238,152,157,157, 77,231,206,157,251, 61,128,177, 47,242, 5, 33,242,214,
+101,156,187,112, 22, 63,175,254,173,152, 82, 36,255,135,193, 18, 17, 27, 22, 22,226, 52,241,237, 49,246,157, 58,116, 70,120,179,
+182,117,106, 14,233,225, 56, 95, 33,151, 58,168,117,186, 43,121,105,220,126,239, 0,197,208,209,195, 90,198, 3,192,145, 19,119,
+135,182, 9,176, 63,239,232, 41, 14, 54, 87, 42,219,232, 13,124,254,190,147,121, 95,212,199, 76,185,186,186, 30,181,180,180, 52,
+ 47, 42, 42,202,202,207,207, 95,213,175, 95,191,133,203,151, 47,183,139,143,143, 71,106,106, 42,198,141, 27,103,153,158,158,254,
+174,183,183,247,165,148,148,148, 26, 35, 89, 37,165,197, 43,190,156, 59,125,142,149,141,157,196,220,204, 2,150, 86,214,240,245,
+107,136, 86,109, 58,161,231, 75,131, 16, 31, 23,211,110,199,230, 53,183, 38, 15, 75, 91, 20, 83,128, 5, 17, 17,168,241,218, 20,
+214,128,116, 25, 60,252,145,185,250, 98,254, 92, 60,136,185, 95,154,148,194, 77,253,227, 6,103,222,183,123,168, 82,175, 43, 75,
+186,124,241,140,111,219,246, 93, 1,160,229,206,109,107, 78,205, 27, 77,122,204,217,252, 98, 26,248,231, 97,174,230,203,100, 99,
+123, 47, 95,238,220,124,242,100,121, 89, 98,162, 33,254,231,159,213,217,103,207, 10, 82,165,146,122,245,233, 67,156,186,117, 83,
+ 77,190,119, 79,126, 97,241,226,206, 95, 41, 20,254,159,234,245,155,255, 46,205,126,223,125,231,212,108,194, 4,121, 73,124,188,
+225,193,247,223,107,178, 78,156,224,229, 42,149,232,217,175,159,196,165, 87, 47,229,228,168, 40,249,165, 37, 75, 58, 72,103,207,
+246, 3,240,219,139,144,119, 70,253, 12, 22, 44, 44, 44,176,109,219, 54,200,100, 50,200,100, 50, 72,165,210, 26,223,251,248,248,
+152, 98,130,134,133,133,133,253, 48,125,250,116,151,129, 3, 7,194,206,238,207,171,108, 12, 24, 48, 0,253,250,245,147, 39, 36,
+ 36,140,218,185,115,231,168, 77,155, 54,101,185,185,185, 77,205,172, 88,176,185,150,155,119, 55,127,127,255, 61,219,182,109, 51,
+211,104, 52,136,136,136, 64, 97, 97, 33,148, 74, 37, 60, 60, 60,208,169, 83, 39,233,233,211,167,237, 71,141, 26,181,199,195,195,
+ 99, 64,122,122,250,233,186,210,234,234,234,218,210,201,201, 41, 98,245,234,213,170,224,224, 96, 18, 27, 27,139,166, 77,155, 2,
+ 0,242,243,243, 49, 96,192, 0,213,144, 33, 67, 2,222,125,247,221, 75,174,174,174, 93,179,178,178,174,215,145,247, 22, 77,155,
+ 54,221,216,167, 79, 31,247,153, 51,103, 90, 91, 90, 90, 34, 41, 41, 41,211,213,213,181, 97,165, 9, 26, 60,120,176,162, 87,175,
+ 94,110,171, 86,173, 90,121,232,208,161,143,221,220,220,198,102,102,102,222,168, 77,151,227, 56,207, 27, 55,110, 56,155,155,155,
+ 35, 59, 59, 27,155, 55,111,198,187,239,190, 11,169, 84,138,156,156, 28,236,216,177, 3, 83,167, 78, 5,199,113, 40, 41, 41, 49,
+201, 4, 91, 88, 88,244,108,218,180,233,218,147, 39, 79,122,218,218,218,194,221,221,157,155, 61,123,118,184,191,191,191,153,155,
+155, 27,151,145,145,129, 61,123,246,248,143, 25, 51,102,191, 74,165,122, 67,171,213,214,217,116,230,224,224,176,110,211,166, 77,
+222,183,111,223,198,170, 85,171, 80, 80, 80, 0,133, 66, 1, 27, 27, 27,184,186,186, 34, 40, 40,136, 76,158, 60,217,188, 91,183,
+110,230,115,231,206, 93, 7,160,153, 9, 23,221,166,206,206,206,191,140, 26, 53,202,127,238,220,185,182,110,110,110, 48, 55, 55,
+ 7, 0, 20, 23, 23,123, 38, 37, 37,181,157, 51,103,206,112, 23, 23,151,132,156,156,156,137,148,210,219,245,188,168, 55,235,209,
+163,199,128, 33, 67,134, 72,178,178,178,176,102,205,154, 1,132,144,102,166,154,202,127, 34,231, 46,156, 69,183, 62,163,160,225,
+205,100, 7,246,110,166,101,177,171, 29, 44,109,109,165, 0, 80, 86, 84,196,219,219, 91,136, 3, 6,141, 54,116,239, 51, 88,125,
+234,200, 22,115, 83, 12,150, 66, 46,117,216,190,118, 82,234,217,203, 15, 67,142,158, 74,234, 57,100, 80, 79, 78,106,209, 40, 0,
+ 0, 62,252,224,109,197,190,223, 79,252,216,187,123,131,204,206,109, 27,166,142,124,243,103,175,250,152, 43,127,127,255, 51, 71,
+143, 30,117, 81, 40, 20, 40, 44, 44,116, 88,191,126,253,183,109,219,182,229,226,226,226,112,255,254,125, 36, 38, 38,162,168,168,
+ 8,173, 91,183,182,140,142,142, 94, 5,160, 70,131,245,211,110,124,185,120,134,203,119, 78,110, 78,190, 70,189,206,137,215,101,
+135,157, 60,122,187,201,238, 29,234, 22,206,174,158, 13, 71,141,158,128, 25,179,191,150,237,221,181,241, 11,156, 62,134,136,218,
+102,241, 39,104,255,233,204, 89, 40, 81,235, 48,250,181,183, 49,102,244,219, 14, 84,212,187, 81, 81,107,161,215, 22,218,218,200,
+ 99, 14,110, 92,191, 99, 40, 0,207, 42, 38,235, 36, 51, 89,213, 51, 95, 42,109,243,210,178,101,206, 77, 39, 79, 86,222,158, 55,
+175, 60,239,236, 89,141, 95,191,126,133,205, 39, 77,210, 1, 64,105, 98,162,252,193,156, 57,230, 78,157, 59,155,117,248,228, 19,
+ 91,163, 90,237,186,128,144,214,179, 41,189, 90, 95, 77,223, 87, 95, 21,150,238,217,211,234,242,226,197, 93,177, 96,129,164, 91,
+243,230,183,102,255,252,115,154, 41,154, 11,165,210,182,125,127,252,209,185,241,248,241,202,235,179,102,149, 23, 93,189,170, 9,
+ 24, 58,180,160,213,180,105,122, 72, 36, 80,167,165,201,226,230,205,179,176,105,211,198,172,221,135, 31,218, 10,122,189,203, 60,
+ 66,218,212, 22, 33,154, 47,149,182,233,179, 98,133, 83,211, 73,147,148,183, 23, 46, 44,207, 56,117, 74, 87, 18, 18,130,102, 47,
+191,156,239,225,224,160,123,218,188, 87,213,204, 59,125,250,153,203,147, 81,205,101,160,166, 32, 73,163, 70,141,178, 99, 98, 98,
+156,119,239,222,109,146,193,114,119,119, 71,167, 78,157,114,238,222,189,235, 82,203, 5, 49, 53, 53, 53,213,147,231,121, 40, 20,
+138, 90, 19, 86, 90, 90,138, 59,119,238, 96,212,168, 81,105, 25, 25, 25, 53, 94,116,237,237,237,173,236,236,236,226, 79,159, 62,
+237, 24, 29, 29,141,235,215,175,195,223,223, 31,118,118,118,144,201,100, 48, 26,141, 40, 45, 45, 69, 96, 96, 32,204,205,205,209,
+175, 95,191,188,130,130, 2,255,130,130,130, 26, 47, 98, 13, 26, 52, 80,202,100,178,135,187,119,239,246, 10, 15, 15,199,213,171,
+ 87,225,229,229, 5, 87, 87, 87, 0, 64, 98, 98, 34, 46, 92,184,128,190,125,251, 34, 50, 50, 18,147, 38, 77, 74, 53, 26,141, 13,
+147,146,146,116, 53, 54, 23,132,134,102,238,220,185, 51, 45, 56, 56, 88, 91, 94, 94,206,101,103,103,203,206,158, 61,203,151,149,
+149, 89, 22, 21, 21,201,138,139,139,165,197,197,197,178,242,242,114, 25,199,113,114,157, 78, 39,187,124,249,178, 36, 63, 63,223,
+186,182,114, 10, 14, 14,206,190,127,255,190,243,239,191,255,142,198,141, 27, 99,247,238,221,248,232,163,143,112,225,194, 5,120,
+122,122, 98,215,174, 93,248,232,163,143,112,255,254,125, 56, 57, 57,161,123,247,238,181, 30, 35, 0, 8, 12, 12,140,189,115,231,
+ 78,128, 66,161, 64, 92, 92, 28,210,210,210,208,185,115,103,136,162,136,172,172, 44, 60,124,248, 16, 25, 25, 25, 8, 8, 8,192,
+107,175,189, 22,151,150,150, 22, 88, 87, 69,107,209,162, 69,238,201,147, 39, 29,155, 52,105,130,172,172, 44,216,218,218, 62,126,
+217,216,216,192,214,214, 22,126,126,126,152, 62,125, 58,154, 54,109,154,147,148,148,228, 82,151,249, 9, 15, 15, 63,122,234,212,
+ 41, 71,123,123,123,104,181, 90,104,181,218,199, 15, 7,230,230,230,144,201,100, 0,128,135, 15, 31, 98,192,128, 1,185,241,241,
+241,125, 76, 53, 71,132, 16,206,197,197,229,254,237,219,183, 27, 90, 89, 89, 33, 53, 53, 21,145,145,145,120,243,205, 55, 31,150,
+151,151, 7,255, 21,253,134,254, 78, 66,253,201,231,209, 81,247, 26,133,134,134, 20,191,254,198, 68,217,224,129,131,203,111, 94,
+ 57,102,148,233,206,148,189,212,201, 38, 3, 0, 78, 94, 46,117,214,201, 58,201, 91,182,238, 77,246,239,223,175,218,184,225, 23,
+105, 84,212, 61,215,208,176,144,152,232,120,186,176, 38,237, 1,221,108, 95,255,104, 74,159,144,206, 29, 58, 75, 75,202,169,235,
+218,117,191,182, 78, 78,138,119, 1, 0,159, 6,254,217,111,190,241,246, 85,107, 11,146,117,246,194, 89,126,233, 15, 71,238, 29,
+ 60, 93,180,201,132,232,178,191,151,151,215,165,245,235,215, 59, 58, 58, 58,194,198,198, 6,106,181, 26, 6,131, 1,209,209,209,
+218,237,219,183, 27,173,173,173,173,178,178,178, 80, 88, 88, 8,169, 84,138,203,151, 47,167,100,101,101,249, 84,119,172, 43,223,
+239,220, 57, 87,218,165,165,183,157,156,163,102, 10, 33,198, 93, 42,161, 10, 2, 91,151,147, 17,151,155,158,137, 56, 59,186,223,
+192,145, 78,237, 58,116,195,215, 11,103, 24, 19, 83, 83,155,173,221,135,251,213,213,133, 16, 63,210,125,200,176,161, 35,230,127,
+ 49, 23,115,231,207,195,193, 3,251,138, 45,205, 56,157,181,149,204,166,115,199, 14,218,233, 83, 95, 73, 85,151, 22,121,125,187,
+124,233,171,189,250, 12,245,108,219,190, 43, 46, 95, 60,131,157,219,214, 92,151, 43,141,172,185,176, 10,243, 8,177,179,245,247,
+159, 56,229,225, 67,249,221,185,115,203,248,140,140,194,150,211,166,229, 85,183,109,218,241,227, 22, 10,119,119,107,135, 65,131,
+236,150,251,248,192,152,147,243, 75,117,125,136,170,211,188,234,230,102,187,247,244,233, 30,162, 84,218,229,221, 41, 83,204,122,
+246,236,137,146,146, 18, 28, 60,120, 16, 91,183,108,209,185,186,186,222,177,189,122,245,150,127,102,230,231,213,105, 46, 34,196,
+222, 42, 40,104,194,187,247,238,201,111,126,254,121, 25, 10, 10, 10,154, 79,157,154, 47, 8, 2,153,176,112, 97,191,248,204,204,
+ 46,217,121,121, 62, 0,224,108,107,155, 26,236,230,118,243,187, 77,155,162,127,104,212,136,150,101,100,252, 50,135,210,194,186,
+210,185,253,194, 5,151,195,185,185,111,217,217,217,153,229,229,231, 75,228, 50, 89, 65,139,134, 13,183,127, 61,117,106,132,230,
+250,117,197,211,230,189,229,180,105,121,197,106,181,244,179,239,190,235,144,145,159,223,160, 92,175, 15, 44, 46, 43,115,229, 13,
+ 6,206,202,204, 44,191, 65, 64, 64,118,201,169, 83, 89, 62,101,101,239,175, 40, 47,207, 97,181,242, 25, 35, 88,132, 16, 80, 74,
+ 77, 50, 87, 50,153,236, 79,205, 80,181, 32,151, 72, 36,184,122,245, 42,114,114,114,208,184,113, 99,248,250,250,254,105,131,248,
+248,120, 28, 58,116, 8,133,133,133,104,209,162, 5, 0,200,107, 19,180,178,178,250, 96,214,172, 89,182,122,189, 30, 55,111,222,
+ 68,139, 22, 45,160, 82,169, 32,147,201, 32,151,203, 33,149, 74,225,234,234,138,188,188, 60,184,184,184, 96,242,228,201, 54,223,
+125,247,221, 7,168, 97,153,154,138,230,208, 41,163, 70,141,114, 14, 15,127, 52, 69, 71,106,106,106,101, 90, 0, 0,206,206,206,
+184,117,235, 22, 90,180,104, 1, 23, 23, 23,244,237,219,215,121,255,254,253, 83, 0, 44,173, 49,227,114, 57, 23, 28, 28,220,170,
+ 34, 66, 4,142,227, 30, 88, 91, 91, 59,185,184,184, 88, 88, 91, 91,255, 71, 30,215,175, 95, 95,164, 80, 40,140,166, 20,106, 86,
+ 86, 22,194,195,195, 81, 84,244,232, 92, 42, 47, 47, 71, 96, 96, 32,138,139,139, 1, 0, 58,157, 14,238,238,238,143, 13, 72, 77,
+ 52,109,218,116,110,112,112,240, 75, 93,187,118, 85, 74,165, 82,220,190,125, 27,205,155, 55,199,246,237,219,225,227,227, 3,115,
+115,115,196,196,196,160, 73,147, 38,136,136,136,128,147,147, 19,194,194,194,148, 45, 90,180, 56, 87, 80, 80,112, 58, 41, 41,105,
+110, 45,145, 54,206,210,210, 18, 17, 17, 17, 88,183,110, 29, 18, 18, 18,144,145,145, 1,107,107,107, 52,107,214, 12, 33, 33, 33,
+232,208,161, 3, 98, 99, 99, 65,234,168, 76,132, 16,215,134, 13, 27, 30,188,122,245,170, 35,199,113,136,136,136,128, 90,173,134,
+ 86,171, 69, 69, 95, 41,168, 84, 42,180,107,215, 14, 14, 14, 14,104,216,176, 33,246,238,221,235,212,171, 87,175, 67, 21, 17,168,
+172,186,202,212,206,206,238,253, 47,190,248,194,203,197,197, 5,165,165,165, 80,171,213,112,119,119, 71,175, 94,189, 60, 14, 29,
+ 58,244, 62,128,229, 47,212,147,150,136,148,208,176, 16, 80,138,228, 3,123, 55, 83, 79, 39, 85,120,215, 22,162,243,131,104,105,
+187,203,151, 35,195, 0,192,206,194,247,118,195, 16,195,131,136,107,199,211, 14,254,190,245,182, 32,128, 11, 9, 13,105,196, 81,
+164,215,166,157,151,198,237, 63,122, 42,169,103,147, 38,157, 36,223,125, 59,103,240,132, 55,122, 43,237,237, 58,145,146,180, 29,
+184,112,227,174,207,236,217, 51,157, 23, 44, 88,124,224,232,169, 36, 33, 47,141,251,210,148,244, 6, 52,176,255,126,247, 50,153,
+ 99,105,233, 22,220,142,181, 4, 49,107, 2, 95,191, 0,148,148,148, 64,169, 84,170, 94,125,245, 85, 97,214,172, 89,106, 43, 43,
+ 43,243,138,186,156,195,113, 92,239, 58,133,239,223, 3,223, 56,144,151, 89,233, 69,145, 90,106,160, 45,150,223,141,141, 71,167,
+110,125,179, 91,183,104,182,112,241,210,229,159,251, 7, 54,114,122,245,245,137,178,101, 95,127,254, 51, 64, 59, 85, 39,115, 47,
+129,158, 10,245, 37,102, 0,250,207,255, 98, 46,226,227, 31,218, 77, 24, 86, 52, 79, 42, 49,115, 15,110,220,197,234,231,245,199,
+251, 4, 6, 53,106, 48, 97,242,251,127,172, 94,181,178,127,213, 72,214,182, 45,171,247, 19, 66,122,208,191,114, 14,157,127, 22,
+ 77,198, 28, 60, 8,117, 74,138,177,224,220, 57,109,143, 31,126,200,107,241,250,235,203, 13, 70,163, 35, 33,228, 79, 93, 33, 8,
+ 33,128, 40, 18,233,210,165, 28,117,119,135,209,214,118,220, 76, 32,168, 46,205,197, 70,227,176, 33,205,154,245, 95,187,121, 51,
+124,124,124, 30,107,218,216,216, 96,202,148, 41,152, 60,121,178,242,206,157, 59,109, 14, 29, 58,212,102,211,143, 63,186,204, 4,
+134, 61, 41,104, 0, 26,191,250,251,239, 40, 75, 76, 52, 20, 92,189,170,237,190,114,101,254,153,107,215,236,103,254,248,227,236,
+198,205,155,123,252, 52,119,174,210,219,251,209,248,144,148,148,148,192,149, 43, 86,120,119,235,213,171,195,140, 15, 63, 92,127,
+107,250,244, 80, 60, 90,146,173,198,116,102,157, 61,171, 63, 92, 80,240,214,206, 93,187,108, 27, 53,106, 4, 74, 41, 98, 99, 99,
+157,215,173, 91, 55,177,203,228,201, 99, 62, 28, 53,106,118,175,132,132, 66, 33, 63, 95, 49,224,251,239,101,219, 70,140, 8,171,
+ 75,179,178, 60, 1,224,229,143, 62,250,160,117,251,246,161,125, 95,125,213,222,221,221,157,152,153,153,193, 96, 48, 32, 43, 43,
+203, 46, 38, 38, 38,224,100,113,113,201,177, 91,183,126, 67,197, 34,238,140,103, 48, 88, 0, 32, 8, 66,189, 12,150,137, 38,235,
+113,196, 43, 47, 47, 15,145,145,145,240,241,241,129,209,104,196,209,163, 71, 81, 84, 84, 4,185, 92, 14,185, 92, 14,189, 94,111,
+ 82,115, 86,231,206,157,165, 23, 47, 94,132,175,175, 47,204,204,204, 30, 27,171, 74,147, 37,147,201,224,234,234,138,226,226, 98,
+116,236,216, 81,182,110,221,186,158,181, 25, 44, 75, 75,203,126,131, 6, 13,122, 28, 98, 43, 47, 47,135, 68,242,104,164,181, 94,
+175, 71,105,105, 41,242,243,243, 81, 92, 92, 12,173, 86,139,166, 77,155, 42, 78,157, 58,213,175, 54,131, 85, 21,181, 90, 93,150,
+147,147, 99,219,169, 83, 39,187, 13, 27, 54,196,180,107,215,238, 79,157,134,207,156, 57,163,213,233,116, 82,133, 66, 97, 82,103,
+247,205,155, 55, 63, 46,251,140,140, 12,252,242,203, 47, 16, 69, 17,132, 16, 60,124,248, 16,223,125,247,221,227,190,114,181, 29,
+163,224,224,224,190,191,253,246, 91,203, 77,155, 54, 21, 74,165, 82,196,196,196, 96,203,150, 45,160,148,194,209,209, 17,106,181,
+ 26, 57, 57, 57, 88,190,124, 57, 12, 6, 3, 44, 45, 45,225,225,225,161,154, 50,101, 74,199,121,243,230,201, 0,204,173,165, 46,
+ 9, 18,137, 4,222,222,222,248,226,139, 47,160,213,106, 33,151, 63,242,149, 37, 37, 37, 40, 42, 42,194,205,155, 55,145,152,152,
+ 8, 81, 20,107,189,177,168, 84,170,225, 27, 55,110,116, 86, 40, 20,208,106,181,120,248,240, 33,226,226,226, 16, 19, 19,163, 43,
+ 40, 40,224, 45, 45, 45,137,155,155,155,164,184,184, 88,241,250,235,175,147,210,210, 82, 80, 74, 49,116,232, 80,135,181,107,215,
+190, 2, 96, 69, 29, 6,206, 41, 36, 36,228,211, 9, 19, 38,168, 42,203, 77, 20, 69,228,230,230, 98,196,136, 17,230,167, 79,159,
+158, 69, 8,217, 66, 41,205,125, 81, 46, 4, 85, 71, 11,150,197,174,118, 56,118,236,167, 6, 15,162,165,237, 36,200,111,211,188,
+203,251, 82, 0,184,127,125,125,135,216,123, 87, 5, 75,145,196,255,177,101,233, 37,203,192, 9,249, 0,246,215, 22, 5,236,215,
+209,182,143,119,128, 98,232,144, 65, 61,185,181,235,126,109, 61,225,141,222, 74,231,166,191, 18, 0,176, 83,122,162,189,241, 67,
+ 78,171, 47, 87,173, 93,247,107,235, 33,131,250, 93, 73, 76, 74, 94,222,191,147,221,222, 67,231,139,142,212, 22, 37,116,115,148,
+122,216,153,229,193,206,171, 39,124, 66,236,112,243,230, 77,236,223,115, 17,129,141, 90, 65,175,215,195,104, 52, 90, 12, 24, 48,
+ 64,189,107,215, 46,109,126,126,126,169,193, 96,232,146,145,145,241,160, 78,127,133, 60,177, 41, 39, 26, 20,130,140,215,148, 43,
+202,167,206,222,243, 74,235,246,125, 91,216,123,123,200, 28, 84,252,129,174, 93, 58,111,222,186,233,151,233, 31,206, 88,128,166,
+205,219,181,159, 42,191, 22, 6,224,110,117, 90,209,137,244, 96,184, 63,225,227, 31,196,246, 79, 78, 77, 74, 11,242,114,213,199,
+165, 80,227,251,179,126,238,213,169,231,240, 38, 1,141,218, 42,162,238, 95, 36,211,167, 77,223,250,237,183, 75, 94,173, 52, 89,
+103, 35,142,118,153, 59, 46, 73, 1, 64,199,110, 81,128, 92,169,244,180,244,241,145, 38,110,216,160,241, 31, 56,176, 16, 0,140,
+ 60,239,120,249,202, 21, 27,115,115,115, 80, 74, 97, 52, 26,255,212, 71,184,178, 95,112,207,174, 93, 93, 76,209, 76,253,233,167,
+ 38,239,190,251, 46,178,178,178,192,243,252,227,232,119,149,107, 54, 74, 74, 74, 48,108,216, 48,172, 95,181,170,218,118,113,153,
+ 82,233,101,233,229, 37, 77,220,176, 65, 19,208,191,127, 1, 4,129,204,248,241,199, 47, 62,252,248, 99,223, 17,175,188,242,167,
+231,198,144,144, 16,252,180,106,149, 98,203,150, 45, 30,139, 87,173,122,163,175, 82, 25, 95, 87, 58, 75,195,194, 96, 23, 25,105,
+214,168, 81,163,199,134,178, 97,195,134,248,250,235,175,149,163, 71,143, 86,140, 29, 51,102, 89, 84,163, 70, 43,231, 38, 38,198,
+ 58, 4, 5, 89, 75,149, 74, 79, 83,203, 19, 0,202,244,250,240,185, 11, 22,216, 93,185,114, 5, 25, 25, 25,168,244,247,132, 16,
+ 52,105,210,132,188,242,202, 43, 54,109, 91,182,108,205,106,228,115,138, 96, 85,103,176,106, 50, 90,228, 41,166,138, 33,132,192,
+205,205, 13, 6,131, 1,191,254,250,235, 99, 99,245,248,137,192, 96,168, 83, 67,171,213, 54,118,117,117, 69, 73, 73, 9,130,130,
+130, 30,107, 84,166,171,242,165, 82,169,160,213,106,225,225,225, 1,173, 86,219,184, 14, 3,212,204,198,198,166, 50,154, 5,157,
+ 78,247,216, 92, 21, 21, 21,161,168,168, 8,122,189, 30,133,133,133, 40, 43, 43, 67, 81, 81, 17, 74, 75, 75,155,155,146,103, 81,
+ 20, 17, 25, 25, 25,215,168, 81,163,102, 18,137, 4,150,150,150, 22,229,229,229,168, 28, 76, 80, 80, 80,128,141, 27, 55,150,191,
+254,250,235,142,151, 47, 95,214,152, 82,134, 83,167, 78,133, 82,169,132, 90,173,198,170, 85,171, 48,117,234, 84,200,229,114,148,
+150,150, 98,213,170, 85,152, 62,125, 58,164, 82, 41,116, 58, 29,182,111,223, 94,163, 86,116,116,116,226,229,203,151,155,183,104,
+209,194,110,239,222,189,185, 61,123,246,116,234,221,187,247,227,178,227,121, 30,109,218,180, 65,112,112, 48,114,114,114,112,248,
+240,225,188,134, 13, 27, 58, 94,185,114, 69,204,202,202, 74,174, 35,223,143, 77,147, 68, 34,129, 32, 8,200,206,206, 70, 81, 81,
+ 17,114,115,115,145,145,145,129,180,180, 52, 72,165,117,207, 28,226,224,224,240,114,120,120,184,164,194,108,193,207,207, 15, 31,
+126,248, 33,175,209,104, 70, 0, 56, 92,177, 89,223,173, 91,183,238, 13, 12, 12,148,186,187,187,227,225,195,135,112,114,114,146,
+154,153,153,141,172,203, 96,185,186,186,174, 63,112,224,128,125,229, 8,218, 74, 52, 26, 13,120,158,199,168, 81,163,236,215,174,
+ 93,187, 30, 64,191, 23,241,162, 96,105,107, 43,125,169,147, 77,198,229,203,145, 97,205,187,188, 47,181, 15,154,243,200,128, 3,
+210,155,103, 87, 54,239,212, 38,124, 75,101,191,172,218, 24,210,195,105,233,192,190, 77,185,209,195, 90,198, 75, 45, 26, 5,108,
+222,184,210,197,222,174,211,255, 95, 40,164,246,176, 80, 1,193, 62, 2,119,233, 96,188,203,244,233,141,244, 91,126,126, 43,126,
+243,158,235, 61,229,138,219,221, 1, 76,175,209, 16,198, 27,127, 47,214,218,135,216, 20,239, 33,112,120, 27,205,155, 55,135,147,
+147, 59,126, 90,253, 27, 60, 26,180,128, 94,175,135,181,181,181,249,163,203,136, 97,179, 41,230, 10, 0,230,206,141, 16, 59,119,
+238, 98,144, 58, 57,242, 83,166,124, 59,172,119,223, 97, 33, 93,186,246,160,199,143, 31, 49,180, 15, 49,100,244,232,210, 54,235,
+ 76, 68,196,195,172,172,244,134,193, 33, 77, 16, 19,117,189, 55, 64, 34,129,234,163, 77,145,241,244, 72, 64, 0, 57,189,253,227,
+ 9,162, 70,127,211,108,225,143,119,251,246, 31, 60, 54,188,115,199, 78,226,241, 19,199,244, 10, 20,221,179,236,216, 62,125,236,
+152,145,123,183,239,216,253,210,233, 19, 7, 3,139,139,178, 15, 46,217, 68,153,185,170,124, 56,227,121, 23,169, 82,201,101,159,
+ 62,205, 55,125,243,205,199,229, 98,110,110,142,253,251,247, 67,161, 80, 64, 46,151, 67,161, 80, 60,126,201,229,114,184,186,186,
+130, 80,202,213, 71, 51, 51, 51, 19, 89, 89, 89,176,177,177,129,147,147, 19,178,178,178,112,225,194, 5, 60,124,248, 16, 82,169,
+ 20,125,251,246, 5, 87,195,125,243, 9, 77,253, 91,243,231,247, 9,107,210,196,253, 73,115, 85,121,111, 43, 40, 40, 64,151, 46,
+ 93,200,241,227,199,157,206,198,199, 15,254,172,154,206,238, 85, 53, 27, 15, 26,148,159,115,242,100,181,191, 29, 26, 26, 74,246,
+238,223,175,124,117,212,168,105, 95,175, 94,189, 98,246,178,101, 89,224,121,215,250,228,157, 16,194, 17, 66,224,229,229,133,130,
+130, 2,148,149,149, 85, 6, 28, 96,103,103, 7,163,209, 8, 81, 20,101,172, 70,154, 14, 87,151, 25,120,210, 72,213,244,226, 56,
+238,169, 76, 86,109,152, 98,176, 42, 77,134, 82,169,252,211,201, 85,249,170,122,242, 85,154, 24, 19,144,148,148,148, 96,207,158,
+ 61, 40, 40, 40, 64,105,105,233,159,204, 85,101,228, 42, 33, 33, 1, 91,183,110, 69,122,122, 58, 36, 18,137, 73,147,182, 38, 36,
+ 36, 92,247,245,245,109, 86, 25, 17,235,214,173,155,231,185,115,231, 50, 42,205,220,231,159,127,158,215,182,109, 91,199, 39,111,
+238,181, 38, 86, 34,193,133, 11, 23,160, 86,171, 65, 41,133, 92, 46, 71, 76, 76, 12,120,158, 7,165, 20, 82,169, 20,185,185,185,
+117, 70,176, 34, 35, 35,199,191,241,198, 27, 43,222,124,243,205,211, 51,102,204, 56,222,189,123,247, 84, 66, 8,140, 70, 35,172,
+173,173,225,234,234,138, 7, 15, 30, 64,163,209,224,131, 15, 62, 72,217,180,105,211,137, 85,171, 86,157, 94,179,102,205,138,180,
+180,180, 55,234,115,108,121,158, 71,121,121, 57, 10, 11, 11, 81, 80, 80,128,146,146, 18,104,181,218,167,170, 67, 61,122,244,192,
+193,131, 7, 37, 61,122,244, 88,235,227,227,147,229,227,227,147,213,163, 71,143,181,191,255,254,187,196,195,195, 3,169,169,169,
+184,121,243, 38, 10, 10, 10, 32,138, 98,173, 63, 32,147,201,186,141, 25, 51,166,163,183,183, 55, 49, 24, 12,208,233,116,208,235,
+245, 48, 24, 12, 16, 4, 1, 41, 41, 41, 8, 13, 13,229,188,189,189,219, 17, 66,186,177, 75, 72,253, 40, 73,219, 1,154,243, 3,
+104,193, 54,136, 57, 63,162, 92,251,116, 58,133,133,133, 95,190,243, 85,113,142, 80,124, 26,209, 55,246,160, 84, 35,133,103, 96,
+ 55, 76,124,115, 20,174, 93, 57,141,252,252,124,220,187,119, 15,157, 59,119,150, 19, 66,234, 85, 55,183,109, 59, 40,188, 58,234,
+147, 87,122,244, 30,214,178, 71,207,126,194,241,227, 39,117, 87, 47, 29,185, 30,232,107,157, 67,249,162,108, 27,107,243, 27,177,
+ 15,238,161, 97,163, 80, 24,121,177, 51, 48,183,214, 58, 21, 23, 71,245,127,100,185, 9,175, 76,141, 28,211,123,224,184,166, 61,
+122,246, 54, 30, 61,114, 64, 56,119,108,215,205,222,221, 26, 68, 44, 90,178,197,171,192, 24, 20,166,178,118, 61,212,174,153,121,
+167, 73, 67,188, 39,176,154, 82, 77,228, 69,165, 18, 81,113,221, 36,132, 64, 20,197, 63,153,170, 39, 95,166,220,147,170,106, 86,
+ 66, 41, 69, 81, 81, 17, 30, 62,124,136, 37, 75,150,224,214,173, 91, 16, 4,225,113, 36,171,198,251, 16, 64, 31,107, 2,136,207,
+204,236,242,238,187,239, 42,171, 51, 87,249,249,249,200,203,203, 67,122,122, 58,250,246,237, 43, 47,177,183,111, 86, 87, 58, 61,
+156,157,117,230, 42, 85,246,131, 7, 15,254, 35,189,165,165,165, 80, 42,149,248,225,199, 31,229, 7, 35, 35,167,158,187,112,193,
+182, 62,229, 89,169, 67, 8,129,179,179, 51, 2, 2, 2,208,188,121,115, 52,110,220, 24, 42,149, 10, 81, 81, 81,248,229,151, 95,
+ 32, 33,132,103, 53,241, 57, 68,176,106, 50, 88,213,189,151, 74,165,168,143, 33, 48, 21, 83,154, 8, 85, 42,213,221,236,236,236,
+ 14,158,158,158, 48, 26,141,143,163, 87,149,205,132,149,159, 1, 64,169, 84,226,222,189,123, 80,169, 84,119,107,211, 52, 55, 55,
+191, 43,145, 72,218,181,106,213, 10,123,247,238,197,233,211,167,145,144,144, 0,141, 70, 3,173, 86, 11,141, 70,131,168,168, 40,
+136,162,136,240,240,112,216,216,216,192,220,220,252,110, 93,105, 45, 47, 47,207,148, 74,165,141,204,204,204,254,191,169,195,205,
+ 13,121,121,121,162,209,104,196,198,141, 27, 75, 92, 93, 93, 45,204,204,204, 76, 46, 79, 66, 8,114,114,114,224,229,229,133,146,
+146, 71,211,124,149,150,150,194,217,217, 25, 6,131, 1,162, 40, 66,167,211,193,210,210, 18,117,117,233,160,148,106, 1,124, 88,
+ 69,187,213,136, 17, 35,182,110,223,190,221,239,196,137, 19,184,114,229, 10, 28, 29, 29,241,213, 87, 95, 37, 36, 37, 37,189, 74,
+ 41,189,246,119, 84,218,252,252,252,221,145,145,145,237, 90,181,106,245,248,234,208,181,107, 87,210,181,107, 87,199,170, 33,253,
+252,252,124,220,190,125, 27, 17, 17, 17, 48, 26,141,184,119,239,158,160,209,104,182,213, 82,150,114, 31, 31,159, 13,179,103,207,
+182,228,121, 30, 18,137, 4, 50,153, 12, 60,207, 67,169, 84, 62,142,212,166,164,164, 96,232,208,161, 54, 43, 87,174, 92, 79, 8,
+ 9,160,148, 26, 94,164,139, 66, 89, 81, 17,127,242,114,169,179,157,133,239,237,251,215,215,119, 8,174,184, 78,220,191,190,142,
+ 87, 89,120, 93,185,114, 91, 99,213, 70, 85,196, 91, 58,214,174,179,239,100,238, 71, 6,253,181, 62, 71, 78,220, 29,250,225, 7,
+111, 43,124, 26,248,103, 95,184,113,215,167,189,241, 67,206, 66, 5,148,107,129,130, 98,224,126,178, 68,244,105,224,159,125,237,
+ 70,140, 98,217,138, 53,254,234,114,253,222, 67,231,139,142,212,166,157,150,150,166,245,240,240, 24,242,225,183,230, 17,163, 70,
+ 75, 20, 10,149, 61, 74, 11, 98,225,227,227,129, 87,134,116,192, 15,191, 30,131,141,173, 29, 92, 92, 92, 64, 8,177,168, 71,246,
+201,165,147, 55,223,124,253,141,137,109,123,189,212, 79, 56,122,236, 16, 78, 30,221,115,101,195,138, 89,123, 12,210, 82, 11, 78,
+ 40, 51,243,242,116,189,147,152,240,224,181,206, 93, 95,130,202,204, 60, 0, 8,174,246, 46, 30,234, 75, 94, 7, 7,111,136, 72,
+225, 56,168, 94,127, 99, 66,251,222,125, 7,241, 71, 15,239,195,209, 3,155, 46,207,153,218,224, 80,194,237, 45,242, 75, 87,211,
+ 84, 67,134, 79, 46, 60,120,242,158,254,229,249,190, 15,220, 27, 54,211,176, 91, 83,149, 7, 72,169, 52,155,215,233,188, 60,123,
+247,150,168,147,147,101,150, 46, 46,124,229, 67, 90,213,135,234, 39, 35, 88, 28,199, 1, 28, 39,154,162,105,106, 90, 52, 26, 13,
+ 68,160, 90,147, 65, 42, 53,251,246,149,168,211,210,100, 57,249,249, 13, 26, 52,104,240,167,109,140, 70, 35,242,243,243, 31,191,
+138,138,138,160, 82,169, 80, 96, 52,186,152,146,206,206, 77,154,108,252,118,217,178,143, 86,255,250,235,227,166,158,210,210, 82,
+148,148,148,160,184,184, 24, 28,199,225,147, 25, 51,148, 51,230,207,127,119,128, 84, 58,173, 62,229, 89,249,176,206,113, 28,164,
+ 82, 41,146,147,147, 31,191, 82, 82, 82,160, 82,169, 64, 9, 17, 89,141,124, 14, 6,171,178,147,123, 93,230,170,242,189, 68, 34,
+ 49, 45,220, 91,241, 36,240,188, 34, 88,229,229,229, 39,206,159, 63,223,166,119,239,222,210, 75,151, 46,193,205,205,237, 63,154,
+ 9,165, 82, 41, 8, 33, 48, 55, 55,199,225,195,135, 13,229,229,229, 39,234, 56,137, 78,158, 60,121,178,229,244,233,211,101,227,
+198,141, 67, 84, 84, 20, 38, 77,154,132,194,194, 66,148,148,148, 32, 63, 63, 31, 26,141, 6,109,218,180,129, 74,165, 66,108,108,
+172, 81,163,209,212, 53, 85, 1,205,201,201, 41,115,114,114,114,123,242, 31,195,135, 15,119,249,233,167,159,212,247,239,223, 55,
+118,232,208,193, 26, 64,189, 12,235,214,173, 91, 31, 31,179,152,152, 24,172, 90,181,234,113, 63,132, 27, 55,110, 96,233,210,165,
+ 16, 4, 1,245,237, 51, 75, 41,189, 22, 22, 22,198, 27, 12, 6, 4, 6, 6,194,195,195, 3, 26,141, 6, 43, 87,174,228,255, 42,
+115,101, 74, 4, 75,171,213,238, 26, 59,118,236,140, 91,183,110,185,201,229,242,202,208, 53, 68, 81,132,193, 96, 64, 82, 82, 18,
+238,221,187,135,216,216, 88,228,229,229,129, 82, 10,189, 94,143, 27, 55,110, 20, 25,141,198, 29, 53,233, 58, 57, 57,125,190,118,
+237, 90, 87, 51, 51,179,255,152, 88,183,242,162, 83,217,244,234,236,236,140,174, 93,187, 58,159, 58,117,234,115, 0, 95,252,211,
+ 47, 4,149, 51,180, 83, 17,177,246,246, 22,226,228, 73,111,202, 27,134, 24, 30,196,222,187, 42,220, 60,187,178, 57, 0,168, 44,
+188,174, 52,108,212, 34,250, 92,164,165,216,255,245, 79,154,229,231, 79,148, 16,138, 70,132, 34,239,201, 25,223, 43,234,143, 8,
+224, 80,155, 0,251,243,251,126, 63,241,227,204, 15,223,190, 58,123,246, 76,103,173,190, 92, 21,236, 35,112,192, 35,115,117, 41,
+202, 66,187, 96,193,219, 87, 23, 47,219, 40,166,196, 25,166, 93,137, 43,172,113,132,111, 85,211, 98,167,132,202,213,127, 90,134,
+111,195,238, 13,238, 92,254,133, 56, 90, 75, 96, 21, 50, 0,125,251,188,132,227, 39,207, 35, 57, 83,131,156,156, 28, 0,168,117,
+218,131, 16, 31,140,169,212, 36, 28, 84, 99,198, 79,232,220,183,239, 32,122,232,143,223,249,125, 59, 55,157,223,186,109,233, 14,
+ 78, 46,151, 26, 68,107, 61,145,104,139, 4,137,109, 84,121,113,193,163,136,167, 84,110, 93, 75,251,128,119,116,212,253, 70,161,
+161,193,174, 99,198, 79,180,233,215,119, 48, 61,116,104,159,184, 99,243,198,211, 59,190,107,188, 89, 52,150,200, 51,147,212,202,
+226, 82, 99, 49,149, 40,108,203, 74, 69,117,182, 54, 64,235,126,121,184, 1,195,217,205,233,241,125, 64,167, 75, 43, 75, 77,117,
+179,239,210, 69, 25, 59,119,174,185, 75,155, 54, 90, 66, 72,157, 6, 75, 34,145,128,162,250,185,202,158,212,172,143,193,162,132,
+ 84, 59,248, 72,208,233, 82,203,146,147,221, 28,187,116, 81,197,125,241,133,121,117, 81,251,252,252,124, 20, 20, 20,252,201, 96,
+ 85, 92,107, 76, 74,231,146, 15, 62,184,220,106,220,184,130, 75,151, 46,185,180,107,215,142,148,148,148, 60, 54, 87,149,239,157,
+156,156,136,119,131, 6, 86, 39,210,211,253,231,153, 88,158,166,228,157,227,184, 26,203,147,241, 12, 17, 44, 83, 13,150, 9, 55,
+ 71,163,209,104,132,179,179, 51,242,242,242, 32,138, 98,141, 7,210,204,204,172,178, 13,184,214,145,116,165,165,165, 43, 22, 44,
+ 88, 48,165, 91,183,110,142,193,193,193,200,205,205,133,179,179, 51, 36, 18,201,227,116, 85,234, 69, 70, 70, 98,251,246,237, 37,
+165,165,165, 43,234,200,247,242,159,127,254,249,221,126,253,250,217, 59, 57, 57,193,206,206, 14,119,238,220,129,173,173, 45, 74,
+ 75, 75, 17, 19, 19, 3, 43, 43, 43, 16, 66,160,211,233,112,246,236,217, 82, 81, 20,151,215,113, 98,210, 11, 23, 46, 24,204,205,
+205,239,228,231,231, 75,242,242,242, 36, 21,211, 51,200,138,139,139,101, 71,142, 28,113,180,177,177, 81,159, 58,117, 42,215,219,
+219, 91,146,152,152, 40,209,235,245,117,186, 44, 66, 8, 62,248,224, 3,200,229,114,232,116, 58,172, 88,177, 2, 31,126,248, 33,
+164, 82, 41,244,122, 61,190,249,230, 27,124,246,217,103,143, 13,243,129, 3, 7,234,107,178, 96, 52, 26, 97, 48, 24, 96, 48, 24,
+ 96, 52, 26,255,210, 10,105,138,193,162,148,102, 17, 66, 6,180,106,213,234,216,190,125,251, 28,172,173,173,145,145,145,129,220,
+220, 92,100,103,103, 35, 39, 39, 7,165,165,165,208,233,116,176,181,181, 69,114,114, 50,142, 29, 59, 86, 82, 86, 86,246, 82,109,
+ 35, 8, 37, 18,201,216,206,157, 59, 75,159, 76, 3,199,113,143,235,147, 76, 38,131, 66,161, 64,122,122, 58, 58,119,238,172,136,
+136,136, 24,251, 34, 24,172,202, 25,218,195,194, 66,156, 6, 12, 26,109,104,217,186,119, 89,196,181,227,105,150, 34,137,239,212,
+ 38,124, 11, 0, 92,185,173,177, 58, 23,105, 41, 54,109,209,147,244, 31,160,105,182, 97,221,106, 69,116, 84,180,111,104,120,104,
+173, 51,250, 59,122,138,131,123,119,111,144,105,109, 65,164, 11, 22, 44, 62,176,118,221,175,173, 47, 29,252,255,105, 26, 22, 44,
+120, 52, 77, 67,239,238, 13,248,232,152, 7,131, 1,108, 50,213,180, 12, 24,208,251,230,218,245,219,145, 30,123,192,125,249, 71,
+102, 10,228,231, 0,230, 45,208,185,165, 3,174,175,185,135,219,183,111,103,137,162, 88,123, 83, 46, 7,239,200,200,232, 70, 97,
+225,161,174,175,143,159, 96,211,175,223, 96, 28, 58,180, 31,191,173, 95, 29,209,206,182,249,218,228,107,121, 18,143, 70,118,114,
+115, 91,133, 92, 42, 87, 73,229, 82,121,158,193,248, 40,186, 46,149,203,172,129, 17, 98, 69,235, 80,181, 76,154, 56,218,166,123,
+175,193,248,163, 66,115,118,179,225,107,124,165, 33,164,205, 71, 75, 38,251,250,248,250,148,171,179, 75, 56, 78, 97,208,234, 68,
+171, 37,107,146,190,141,143, 27, 27,127,115,196,136,101,108, 20,225, 99,238,252,214,175, 95,235,247,226,226,228, 78, 29, 59,154,
+101,156, 62,109,254,100, 19, 97,117, 6, 75, 42,149, 2, 28,199,155,162, 73,142, 31,231, 0, 64, 46,151,215,248, 96, 47,151,203,
+161, 86,171,193, 19, 82,237, 6,114,224,206,111, 3, 6,180,121, 47, 46, 78,102,223,173,155,185,211,173, 91, 41,137,137,137, 65,
+205,155, 55,135, 32, 8,127,138, 92, 85,190,180, 90, 45,244,122, 61, 84, 74,101,164, 41,233,204, 62,123, 86,251,217,248,241, 95,
+188,251,206, 59,223,109,223,177, 67,101,109,109,141,146,146, 18,148,150,150, 62,126,233,116, 58,180,108,213, 74,182, 41, 38,102,
+ 12,128, 57,166,148,167, 75,183,110,234,186,174,201, 21,134,149, 53, 17,214, 3,174,174, 8,214,179, 76,211, 64, 8, 9,127,226,
+243,103,125,251,246,213, 38, 36, 36,192,203,203,235,177, 73,169,250,155,214,214,214,176,181,181, 69,116,116, 52,214,174, 93,171,
+ 33,132,124, 86,155,102, 65, 65, 65,169, 86,171, 29, 57,106,212, 40,141, 76, 38, 67,163, 70,141, 30, 55,235, 80, 74, 31,247,189,
+138,140,140,196,216,177, 99,213, 90,173,118,228,147,115, 96, 61,169,153,148,148, 84, 92, 94, 94,254,218,232,209,163,213,247,239,
+223, 71,167, 78,157,112,235,214, 45,148,151,151,163,172,172, 12,137,137,137, 8, 13, 13,133,193, 96,192,174, 93,187,212,229,229,
+229,175, 37, 37, 37, 21,215,166, 89, 90, 90, 58,240,235,175,191,150, 28, 58,116,200,215,221,221, 61,172, 85,171, 86,193,221,187,
+119, 15, 24, 58,116,168, 79,191,126,253,220, 26, 54,108,168,237,221,187,183, 83,223,190,125,157, 36, 18,137, 44, 46, 46, 46,147,
+ 82,218,183, 54,205,170, 6,224,193,131, 7, 48, 24, 12,255,209,231,170,114, 52,161, 32, 8, 38, 29,163,234, 76,118,165,177,170,
+ 52, 90,117, 93,247,171,211,228, 56,174,206,155,133, 66,161,168,140,112,210,186, 52, 41,165,183,238,221,187,215,171,125,251,246,
+ 55,199,142, 29, 91,154,146,146, 2,185, 92, 14, 15, 15, 15,248,248,248,192,194,194, 2, 5, 5, 5,216,181,107,151,250,240,225,
+195,145, 37, 37, 37, 93,159,156, 3,235, 73, 77,142,227, 18,171,187,184, 74, 36,146,255, 48, 88,149, 43, 5,112, 28,151, 88,159,
+242,124, 74,211,249, 95,211,156,248,246, 24,251,254, 3, 7, 91,237,223,191, 95,181,106,213,154,232, 78,157, 38,108,180,116,123,
+247,136,165,219,187, 71,218,180,123,107,203,247, 63,175,127,184,247,247,223,205,250,247, 31,106, 51,121,194, 24,119, 16, 34,173,
+ 75,211, 92,169,108,211,185,109,195,162,179, 23,206,242,139,151,109, 20, 58,116,234,119,229,187,239,127,222,241,221,247, 63,239,
+232,208,169,223,149,197,203, 54, 10,103, 47,156,229, 59,183,109, 88,100,174, 84,182, 49, 37,157,147, 38,142,182,233,223,111, 48,
+ 14, 30,220,203,111,221,184,226,155,253,103,244, 93,134,207,208,102, 39, 63, 60, 73,145,245, 37,156, 21,231,145,146,146, 82,204,
+243,124,183, 39, 59,184,215,164, 57,121,194,232,170,230,234,108,116, 34,126, 93,125,243,166,240,211,248,185,198, 45, 71,247,106,
+ 14, 70,220, 44,137,184,158, 82,152,251,176, 56,190,188,180, 68, 47,138, 34,168, 40, 72,230,205, 3,169,237, 24,117,232,208, 21,
+167,142,111,193,198,117,191, 20,139, 34,180,195,119,238, 20, 70,252, 52,151,250,248, 52,240,217,188,121, 11, 25, 48,112,136, 13,
+165, 16, 7, 14, 25,108,187,117,243, 86,226,231,231,215,192,223, 31,242,127,122, 93,122, 94,154,115, 40, 45, 44, 73, 78,142,184,
+182,114,165,222,101,228, 72,123,133,139,139, 53, 68,145,212,213, 7,235,201, 8, 86,109,154, 46,246,246,233, 71,143, 30, 69,163,
+ 70,141,224,225,225,241,167, 22, 25,153, 76, 6,111,111,111, 56, 57, 57,225,216,177, 99,160,192,245,234, 52,103, 82, 90, 84, 20,
+ 31,127,230,202,146, 37, 58,151,225,195,237,154,249,249, 93,255,110,229, 74,189, 32, 8,143,163, 86, 85,255, 22, 22, 22, 66, 16,
+ 4,156, 62,117, 74, 95,166,209,172,173, 45,157, 55,126,248, 65, 87,153,247, 54, 90,109,249,144,150, 45, 23,141, 25, 51,198,144,
+152,152, 8, 65, 16, 80, 53,146,149,147,147, 3, 43, 43, 43,104,180, 90, 79, 23, 23, 23,115, 83, 52,115, 14, 29,178, 68, 29,215,
+117,137, 68,242,167, 38,194,191,226,184,255,171, 34, 88, 60,207,195,203,203,235, 79,243,140, 84,118, 28,172,140, 12,153, 24,185,
+ 2, 0,164,167,167,111,114,113,113, 57, 58,102,204,152, 47,154, 53,107, 54,105,218,180,105, 18, 63, 63, 63, 20, 23, 23,195,206,
+206, 14, 78, 78, 78, 72, 74, 74,194,238,221,187,133,162,162,162,159, 5, 65,152,159,157,157,157,107,130,238,105, 15, 15,143, 1,
+ 47,189,244,210,246,119,223,125,215,166, 75,151, 46,178,202, 27,224,221,187,119,113,232,208, 33,195,182,109,219, 74,180, 90,237,
+ 72, 83,102,113, 7,128,204,204,204, 99,110,110,110, 47,143, 27, 55,110,243,208,161, 67,173,180, 90,173, 44, 33, 33, 1,122,189,
+ 30, 60,207,163,160,160,192,112,230,204,153, 50,181, 90, 61, 58, 51, 51,243,152, 9,122, 55, 8, 33,161, 6,131, 97,236,205,155,
+ 55,191,124,249,229,151, 29,218,183,111, 47,231,121, 30,231,207,159,207,109,222,188,185,115, 73, 73,137,225,194,133, 11,249, 90,
+173,246,179,140,140,140,141, 38,174, 81,133,146,146, 18, 56, 58, 58, 66,171,213, 66, 20, 69,232,245,122, 88, 89, 89, 61, 94,222,
+136, 82,250,232,228,120,138, 7, 98,158,231, 37, 70,163, 17,163, 70,141,130, 40,138, 88,177, 98, 5,120,158,151,212, 87,199,210,
+210,242,122, 84, 84,212,128,176,176,176,199,233,225, 56, 14, 28,199, 65,169, 84,194,209,209, 17, 14, 14, 14, 56,113,226, 4, 56,
+142,187,110, 98,116,237, 54,128, 22,132,144,246,183,111,223,126, 29, 64, 83,131,193,224, 41, 8, 2,225, 56, 46, 83, 16,132, 59,
+101,101,101,107, 77, 93, 42, 39, 39, 39,231,203,177, 99,199, 54,223,186,117,171,165, 84, 42,125, 92, 94, 28,199, 65, 46,151,195,
+209,209, 17, 42,149, 10, 1, 1, 1,208,104, 52,248,252,243,207, 75,212,106,245,151, 47,210, 5,161, 83,135,206, 56,117,100,139,
+249,198, 13,191,149, 10, 2,184,138,169, 24, 30, 29, 67, 71, 32, 63,127,162,100,195,186,213, 10,149, 84,107,215,169, 67,103,147,
+154, 86,244, 6, 62,127,228,155, 63,123, 85, 44,149,243,101, 98, 82,242,242, 45, 63,191, 21, 15, 0,203, 86,172,241, 79,137, 51,
+ 76,139,142,121, 48,120,213,154, 51,109,244, 6,222,164, 5,112,255,223,180,108, 46, 6,133, 54, 61, 61,253,138,167,167,167,111,
+167, 55, 12,159, 53,106, 64, 6,101,231,139,233,132,144,169,233,233,233,241,166,230,189,125,251, 46, 56,115,124, 43, 54,174,223,
+ 92, 76, 68,104, 43,141,254, 46,128,238,154, 27, 65,129,136,202, 77,203, 39,191,140,121,159,125, 50,233,195,146,210,226,111,127,
+250,145,138,115,107,233,231,222,164,105, 91, 52,105,218, 22, 83,166,126,106, 19, 26, 22,236, 13, 0, 59,119, 82, 33,220,143, 28,
+248, 98,254,220, 65,243,191,152,139, 18,181, 14,149,203,234,196,220,143,254, 35, 46,158,234,159,247,160,161,127, 50, 95,240,252,
+ 21,124,252,113, 67,109,113,177, 83,199, 25, 51, 28,165, 75,150,112,149, 15,208, 79, 70,176, 30, 71,175,234,161,121,228,228,201,
+ 63, 62,254,232,163,244,165, 75,150,244, 94,252,245,215,102, 33, 33, 33,200,202,202, 66,112,112, 48, 60, 60, 60,112,254,252,121,
+ 28, 59,124,184,188, 76,163,249,204,213,213,117, 85, 77,154,115, 40,189,242,165, 92, 30,160, 47, 47,119, 89,186,110,221,195,238,
+ 61,123,102,175, 93,187,214,179, 79,159, 62,156, 90,173, 70,113,113, 49,138,139,139,161,211,233, 32,151,203,145,145,158, 46,166,
+165,167,223, 73, 73, 73, 89, 91,107, 58,167, 79,111,168, 46, 40,112,234, 56, 99,134,163, 49, 63, 95,245, 97, 82, 82, 26,183, 97,
+195,215,147, 38, 78,252,104,218,244,233, 74, 79, 79, 79,162,211,233, 30, 27, 45,163,209, 8, 51, 51, 51, 35,207,243, 14, 0,212,
+166,104,170,254,248,131,207,207,207,135,189,189,253,227,105,151, 56,142,131, 74,165,130,157,157, 29,202,202,202, 64, 41,155, 0,
+183, 94, 15, 10, 53,221,116,131,131,131,175, 75,165, 82,207,170, 33,194,234,214,182,171,250,158,231,249,180,200,200,200,150, 85,
+ 29, 46,165,180,218,208,167,167,167,167,191, 40,138, 95,181,111,223,254,229,183,223,126,155, 68, 68, 68,224,228,201,147, 52, 61,
+ 61,125, 23,199,113,159,165,165,165,197,215,244,100, 83,147,166,189,189,189,149,149,149,213, 7, 22, 22, 22, 61, 43,167, 98, 80,
+169, 84,119,203,203,203, 79,148,150,150,174,168,105,246,246,218, 52,253,252,252,172, 69, 81,124,223,194,194,162, 87, 94, 94, 94,
+ 51, 0,112,116,116,188, 85, 94, 94,126,156,227,184,149, 53, 45, 32, 93,155,166,187,187,187,153,165,165,229,151,246,246,246,175,
+189,253,246,219, 14, 17, 17, 17,153,183,110,221,146,151,148,148,108,225,121,190,198,197,158,171,211, 12, 13, 13,253,211, 90,132,
+207,243, 24, 1, 64,211,166, 77, 15, 14, 28, 56,176,255,107,175,189, 6,163,209,136,159,127,254, 25,199,142, 29,251, 35, 54, 54,
+118, 64,109, 79,159, 79,106,186,186,186, 58,122,120,120,156, 25, 61,122,180,207,144, 33, 67,204,109,108,108, 32,145, 72, 80, 94,
+ 94,142,248,248,120,220,189,123,151, 30, 59,118,172, 44, 58, 58, 58, 77,163,209,116,205,202,202,202, 51,181, 60,159,229, 41,249,
+ 73, 77,153, 76,214,197,203,203,107,219,156, 57,115,172,122,245,234,101,230,224,224, 0,169, 84, 10,158,231,145,157,157,141,200,
+200, 72, 28, 58,116,168,124,231,206,157,229,249,249,249,163, 40,165, 17,127, 71, 58,159,183,102,229, 76,238, 85,183, 9, 9, 13,
+137,190,151, 64, 23,253,169,190,249,145,233,209, 81,209,141,171, 70,174, 42,103,114, 55, 53,157,253, 59,217,245,123,121, 72,171,
+158, 0,176,123,223,181, 19,127,156, 43, 60, 84,143,116,206,142,142,186,255,196, 98,211,193, 49,209,241,116,193, 83,231,221,143,
+124, 17, 25, 25,253, 39,205,240,240,208,152,123,137, 88,104,162,209, 23,171, 61, 55, 43,251,139,253, 41, 36,140,148,232, 68,186,
+169,202, 54, 3, 6,191, 60,180,255,167, 51,103,225,171,197,139,176,127,247,222, 63,162, 19,233,193,127,114, 93,250,171, 52, 43,
+ 23, 39, 54,119,115,235,188,213,209,113,214,209,227,199, 45, 43,251,215, 86,246,145,124,114,192, 85,243,230,205,115,110,221,186,
+229, 98,138,230,128,239,191, 55,104,173,172,148,139,127,254,185,139, 90,175,239,242,225,135, 31, 74,175, 95,191,142,109, 91,182,
+240,154,212,212,205, 89,130,240,126,117,173, 31,213,229,253, 75,185,188,141,202,193,161,107,195, 89,179,148,139,183,111, 31,231,
+225,233,233, 50, 96,224, 64,185, 84, 42, 69,121,121, 57, 50, 50, 50,112,225,252,121,109,114, 74, 74,164, 86,171, 29,154,154,154,
+154,105,106,222, 7,124,255,189,193,214,223, 31,150, 46, 46,226,185, 11, 23,108,103,204,153, 51,201,197,205,205,166, 99,167, 78,
+ 50,115,115,115, 20, 22, 22, 34, 37, 37, 5,231,206,157,203,137,143,143,119,167,148, 10,166,104,254,126,247,110,147, 83, 87,174,
+ 12,255,248,227,143, 21,193,193,193,176,178,178, 66, 73, 73, 9,238,221,187,135, 11, 23, 46,232,182,111,223, 94, 92, 94, 94, 62,
+ 41, 53, 53,245,247,191,234,184,255,107, 12,214,127,235,196,115,117,117,109,201,113,220,236,138,230,168, 5,117,173,233,247, 34,
+ 93,116,220,220,220,188,237,236,236, 86,107, 52, 26,170,211,233, 38,102,102,102,166,252,175,165,147, 16, 34,109,217,178,229, 79,
+ 57, 57, 57,237, 41,165,176,177,177,185, 24, 21, 21,245, 14,165,148,175,175, 38, 33, 68,226,234,234,218,222,194,194,162,141,133,
+133, 69, 23,131,193, 16, 82,209, 15,239,158, 90,173,142, 48, 26,141, 87,178,178,178, 46, 82, 74,133,191, 51,239,132, 16, 9,128,
+ 94,238,238,238,111,137,162, 24,200,113,156,109, 69, 83,105, 17,165, 52,182,176,176,112, 13,128,227,127,119, 58,159,167,102,152,
+ 31, 25, 74, 9,130,255,180,141,136,148, 39, 59,175, 87,118,134,255,243, 69, 4,247,163, 18,232, 94, 83,211, 73, 8,225,134,244,
+112, 90, 10, 60, 26,105, 88,219,132,162,255, 97,134, 76, 48, 45,245, 54, 88, 13,200,216,234, 52,239, 37,215,190, 8,111, 93, 6,
+203, 84,194, 26,144, 46, 32,104, 47, 18, 92,185,151, 64, 79,189,136,215,186,231,169,185,136, 16,251,157, 65, 65, 23, 57,169,212,
+181,114,153, 35,194,113,162, 8, 8,224, 56,190,106,179, 96,213, 7,202,186, 52, 13, 64, 99,185, 82,233, 41,240,188, 75,190, 92,
+110,117,193,194,162,133, 14, 40,115, 21,132,217, 39,242,243, 99,234,155,206,121,132,216, 1, 8,149, 42,149,222, 23,204,205, 7,
+ 22,216,217,181, 40,228,121, 23, 0,162, 82,169,140, 42, 83,171,215,166,166,166,174,121,178,165,194,148,116,202,148, 74, 47,129,
+231, 93, 8, 64, 57,169, 52,231,168, 82,233,149,235,228,244,186, 90,163,241, 81, 42,149, 70, 0, 37, 6,131, 97,116, 74, 74,202,
+201,250,104,166, 72, 36,161,119,172,172, 58, 9,214,214, 14, 6,192,194, 32,138, 6,131,209,152,170,211,233,238, 74, 36,146,111,
+211,210,210,226,254,202,227,206, 12,214,191,236,100,102,154, 76,147,105, 50, 77,166,201, 52,255, 9,154, 46, 46, 46,230, 28,199,
+ 57,100,101,101,165, 87,125, 0,252,167,228,253, 69, 67,202,138,128,193, 96, 48, 24,140,127, 62,217,217,217,106, 84,211,231,138,
+241,247, 64, 0, 84, 59, 18,160, 62,206,244,105, 70, 19,212,165,207, 52,153, 38,211,100,154, 76,147,105, 50,205, 23, 79,179, 46,
+237, 23, 37, 50,198,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,249,183,107,190,104,112,172, 8,106,172, 60, 46,132, 16,
+151,231,189, 45,227,197,174, 11,213,236,235, 65, 8,241,168,231,246,110,172,212, 25, 12, 6,227,159,205,127,189, 15, 86,229,141,
+138, 82,154,253, 60,182,123,222,251, 86,236,191,136, 16,124, 82,241,254, 27, 74,233,172,103,220,214, 36, 35, 27, 22, 22,230, 72,
+ 8,233, 97, 99, 99,211,184,180,180, 52,146, 82,122,252,238,221,187,249, 48,113,121, 2,111,111,111, 95,149, 74, 53,142, 16, 18,
+ 82,145,255,123, 90,173,118, 67, 74, 74, 74,226,115, 56,110, 4,192, 4,165, 82,249,138,173,173,109, 96, 97, 97, 97,172, 94,175,
+223, 9,224,151,167,153,113,218,221,221, 61, 8,192, 88, 81, 20,165, 28,199,109,205,200,200,184,109,234,190, 46,225, 67,118, 80,
+160, 33, 0, 78, 36,226,112,142,114,187, 0,136, 4,120,152, 29,185,239,149,231, 92, 95, 77,174, 11, 79, 34,145, 72, 22, 19,130,
+143, 43,222, 47, 17, 4,225,211, 58,182, 95, 70,128,247, 65, 64, 43,182,159,201, 46, 81, 12, 6,131,241, 47, 48, 88,158,158,158,
+125, 69, 81,124, 21, 0, 56,142,219,154,150,150,118,248,175,184, 89, 61,203, 77,237,137,125,151, 83, 74, 63,170,127,180, 2,159,
+136, 34,229, 30,229,147,204,112,113,113,177,151, 74,165,255, 49, 55, 21,207,243,102,132,224, 45, 81,164,164, 98,219, 79, 8, 33,
+ 43,159,198,216,181,104,209,194,174, 85,171, 86,159,206,159, 63, 95,233,228,228, 68,178,178,178, 58,126,252,241,199, 45,131,131,
+131, 23,223,191,127, 63,171,174,253,253,253,253,135, 52,107,222,234,189,105, 31,207,112,113,118,112,180,226, 5,222,144,158,158,
+233,190, 98,249,215,109,253,253,253,127,138,143,143,223, 87, 31, 35, 37,149, 74, 95, 81,169, 84, 1, 90,173, 54,142,231,249, 93,
+ 18,137,164,247,194,133, 11,195,251,247,239,175, 42, 46, 46, 86,240, 60, 31,184,121,243,230,233,235,214,173,235, 75, 8, 25, 92,
+199, 80,123,143, 10,195,151, 94,229,235, 87,175, 92,185,210, 67, 42,149,146,214,173, 91,155, 17, 66,166, 86,106,212,176,253, 99,
+ 40,208, 48,234,252,206,198, 0, 16,214,113,196,131,168,243, 59, 81,241,254,185, 63, 12, 60, 89, 23, 44, 45, 45, 55,149,149,149,
+197,212,101,228, 43,246,253,184,202,190,159, 56, 56, 56,124,159,159,159,159, 21, 24, 24,216, 82,171,213,142, 1, 0,149, 74,245,
+ 91,108,108,236,117, 7, 7, 7, 87,133, 92,254,190, 70,171, 37, 0, 8,199,145,143, 9, 33, 43,158,246, 33,129,193, 96, 48, 24,
+255, 32,131, 69, 41,125, 61, 54, 54,214, 92, 20, 69, 52,106,212,104, 12, 0,147, 13, 86,117, 55,171, 30, 61,122, 52, 55, 51, 51,
+211, 87,221, 78,163,209, 40, 8, 65,143,167, 49, 45,149,191,161,215,235, 56,153, 76, 1,137,132,251,176,105,211,166, 45,243,242,
+242, 78, 10,130,240,243,147,147, 87,154,152,110,172, 93,187, 54,196,197,197,229, 63,214, 80,201,206,206,150, 15, 28, 56,160, 94,
+122,175, 55,110,172,210,198,199,119,226,100, 50,111,131,209,232, 8, 0, 50,153, 44, 95,101,105,233,245,249,103,159,153, 91, 88,
+ 88,136,249,249,249, 40, 41, 41, 33, 83,166, 76, 81, 77,153, 50,165, 23,128,141,181,105,122,121,121,249,181,104,213,230,189, 13,
+235,215,183, 41, 46, 40,208,174,249,118,213, 77,157, 84,169,246, 9, 9,146,207,158,179,208,102,254, 23,179, 38,122,121,121, 69,
+166,166,166, 38,212,145, 87, 14,192,222, 15, 62,248, 32,108,192,128, 1,138,210,210, 82,149, 90,173,110,176,121,243,230,207, 91,
+181,106,101,217,188,121,115,197,182,109,219, 72, 81, 81, 17, 40,165,230,193,193,193,116,196,136, 17,218, 29, 59,118, 76, 1,240,
+ 93,125,204,178, 32, 8,178,202,192, 23,207,243,138,138,186,104, 48,197, 92, 19,224, 97, 88,199, 17, 0, 65, 96,212,249,157,170,
+176, 78, 35,180,160,136, 37,192,195,138, 7,129,183, 69, 81,244,173, 46, 61, 28,199, 37,166,165,165,253,250, 52, 39, 75,255,254,
+ 3, 0, 96,181,155,155,219,217,220,220, 92, 79, 66, 48,218,212,135, 0, 66, 8,145, 74,165, 99, 1, 44,214,104, 52,111,158, 60,
+121,178, 25, 0,244,232,209, 67, 14,224, 58,165,180,253,163,172, 49, 24, 12, 6,227,223,104,176,228, 0,112,246,236, 89, 80, 74,
+ 21, 79, 19, 20,168,106, 92,222,127,255,125,184,185,253,185,187, 73,102,102, 38,206,156, 57,253, 44,121,250,211, 77,234,203, 47,
+191,180,201,207,207, 31,180,118,237,218,222,174,174,174,159,103,101,101,157,169, 35,143,217,132,144,111, 56,142,204, 32,132, 64,
+161, 80, 38, 78,156, 56,241,122,197,255,252, 15, 28, 56, 96, 62,112,224, 64, 53, 33, 36, 30, 0, 20, 10,165,179, 68,194,249, 82,
+ 74, 65, 41,190,169,205, 8,190,108,105,217,136, 82, 58,112,210,178,101, 66,139,126,253,164,214,206,206, 18,112, 28,114, 83, 82,
+ 28, 86,255,248, 99,251,152, 99,199,148,174,193,193, 41,122,133,162,232,193,131, 7,112,115,115,131, 92, 46,175,115, 4,135,185,
+185,249,155, 31, 76,251,200,169,184,160, 80, 99, 44, 45, 53, 88,138, 2,111,173,146,145,146,220,252,162,196, 84,107,245,155,147,
+223,147,126, 49,115,250,155, 0, 62,173, 67,106,202,180,105,211, 66, 90,183,110,237,177,125,251,118, 82, 92, 92, 12,169, 84,106,
+217,172, 89, 51,180,108,217, 82, 56,121,242, 36,241,243,243, 67,120,120, 56,206,159, 63,143, 11, 23, 46,144,230,205,155,155,239,
+221,187,119, 76,117, 6,235, 73, 83, 45,145,112, 51, 71,142, 28,217,215,220,220,220,216,181,107, 87,188,253,246,219, 40, 47, 47,
+ 71, 72, 72, 72,147,174, 93,187, 94, 26, 54,108,152,140,227, 72,184, 32,136,168,205, 92, 87, 54, 3, 58,135, 15,185, 3,160, 49,
+ 40, 98,115, 34,247, 53,169,252,191, 40,138,190, 49, 49, 49,161, 69, 69, 69, 16, 69,241,241,154,140, 0,208,185,115,231,250,212,
+247,108, 66,200, 55, 3, 7, 14,152, 1, 16,116,239,222, 61,255,189,247,222, 19,238,221,187,215,117,216,176,161,109, 31, 62,140,
+173,241, 33,128, 82,154, 45,145, 72,150, 84,252,143,140, 27, 55, 62,219,210,210,114,168,151,151, 87, 12, 33, 68, 42,151,203, 43,
+203, 72, 18, 18, 18,226, 20, 30, 30, 62,217,206,206, 46, 71,194,113,206, 20,148, 18,194, 45, 17, 69,129, 69,175, 24, 12, 6,227,
+223, 96,176, 8, 33,121,183,110,221,114,211,106,181, 32,132,212, 25, 13,170, 58,194,160,226,134,243, 19,199,145,119, 8, 33, 8,
+ 15,111,156,176, 98,197, 10,125, 53,187,233,195,195, 27, 39, 72, 36,156, 31,165, 20,132,112,171,170,222,104,106, 27,181, 80,121,
+ 67, 84, 40,148,159, 0,128,155,155,123,246,193,131, 7,141,195,135, 15,199,146, 37, 75, 20, 51,103,206, 92,232,238,238, 62, 50,
+ 35, 35, 35,173,166,116, 86,124,158,229,226,226, 98,191,118,237,218,144,137, 19, 39, 94, 79, 79, 79,255, 0, 0, 60, 60, 60, 86,
+ 0,104, 76, 8,137,175,242, 29,126,249,229,151,150,111,190,249,230,189,236,236,236, 89, 53,105,190,108,101, 21,232,224,238, 62,
+100,233,249,243, 84,202,243,164,248,250,245,162,180,172, 44,131, 94, 16,184,195, 9, 9,109, 70,142, 31, 47,119,113,115,163,251,
+127,249,197, 71, 45,147, 81, 65,165, 42,142,138,138,162, 6,131,225,110, 93,121, 39,132, 4,219,217,218, 89,172, 89,182,234,186,
+147, 82, 66, 28,189,220,137,220,218, 86,202, 89, 90, 41,169, 68,162,241,241,114,183, 34,132, 4,215,117,140,228,114,249,152,222,
+189,123,155,111,219,182,141,132,135,135,195,214,214, 22,103,207,158,197,173, 91,183, 80, 88, 88,200,241, 60,143, 86,173, 90,225,
+155,111,190,129,151,151, 23,138,139,139,145,148,148,228, 40,151,203,157,106, 41,207, 63, 25,222, 79, 62,249, 4,206,206,206, 16,
+ 4, 1,153,153,153, 40, 43, 43,131,133,133, 5,108,108,108,144,145,145,129,253,251,247,213, 89,151, 76,165, 93,187,118,106, 0,
+ 73, 79, 70,176,234,163,233,225,225,113, 44, 39, 39,183, 83,183,110,221, 80, 84, 84,100,152, 51,103, 14,154, 53,107,134,134, 13,
+131,234, 76,167, 32, 8,159, 58, 58, 58,174,115,112,112, 88,246,222,123,239,185, 58, 56, 56, 64,167,211,125,150,159,159,143, 79,
+ 62,249, 4, 0,208,178,101,203,198,148,210, 63,222,124,243, 77,248,250,250,166, 23, 20, 20,164,196,196,196, 76,204,201,201,137,
+124,150,188,215,231,220,100,154, 76,147,105, 50,205,255, 5,205, 23,210, 96, 17, 66, 40,165,143,154,228,170,190,175,166, 64, 11,
+ 61, 60, 60,220,204,204,204, 64, 41, 45,172,239,143, 9,130, 48,197,209,209, 49,103,214,172, 89, 29,131,130,130,244, 83,166, 76,
+137, 76, 76, 76,252,172,234, 54,190,190,190, 95,254,240,195, 15,120,240,224, 65,210,162, 69,139,206,231,229,229, 45,168,231, 65,
+159, 73, 8, 89, 1, 0, 25, 25, 25,121, 7, 14, 28,104, 29, 17, 17, 49,115,197,138, 21,110, 83,166, 76, 81,188,247,222,123,147,
+ 77,136,228, 64, 42,149,106,170,107, 22,172, 14, 23, 23, 23, 67,117,125,180, 42,153,216,162,133,146,138,226,144,175,207,158, 21,
+197,180, 52,237,161,245,235,177,228,194,133, 73, 54,142,142,222, 78, 78, 78,212,215,211, 51,215,140,231,179, 75,114,115,185,230,
+189,123,203,142,110,220,232,163,244,245,141,222,181,107, 87,153, 40,138,199, 76, 72, 66,153,222,104,212, 89,120,185, 27, 7, 14,
+238,221,248,238,213, 91, 15,204,236,237,185,198,173,154,133,222,143, 77,186, 65, 0, 61, 30,189,106,197,198,198, 38, 40, 47, 47,
+ 15, 37, 37, 37,112,114,114,194,202,149, 43,225,226,226, 2,181, 90,141,168,168, 40,234,233,233, 73,206,157, 59, 7,119,119,119,
+228,230,230, 66,175,215, 67,173, 86,231,232,245,122, 77, 77,134, 87, 42,149,174,225, 56,242, 54, 33, 4,129,129, 13,179,191,251,
+238, 59, 35,165, 20,193,193,193, 24, 58,116, 40,206,158, 61,139,168,168,168,202, 40,147,209,215,215, 47,155,227,136,243,163,221,
+107,143, 8,214, 70, 69,196, 42, 41, 35, 35, 99,214,211,236,239,233,233,169, 18, 4, 97, 82,163, 70,141, 6,188,250,234,171, 6,
+185, 92, 14,181, 90, 93, 89, 22,134, 62,125,250,228, 15, 28, 56,192,225,143, 63,254,168, 53,157,121,121,121,241, 33, 33, 33,111,
+127,244,209, 71,191,173, 90,181,202,246,211, 79, 63,125,188, 8,183, 32, 8, 16, 69,241,113,148,109,239,222,189, 72, 76, 76,252,
+170,170,185, 98, 48, 24,140,127, 11,166,122,145,127, 92, 4,235,191,149, 25,137, 68,242,203,177, 99,199,154,117,238,220, 89,218,
+163, 71,143,112, 79, 79,207,240,180,180,180,200,138,155, 90,120,159, 62,125,194,157,157,157,177,114,229, 74,181, 68, 34,249,229,
+ 41,157,117,213,155,221, 37, 15, 15,143,217,123,246,236, 89, 59,113,226, 68,184,184,184, 52,251,111, 23,114,225,131, 7, 29,198,
+205,159, 47,170, 0,201, 31,191,253, 70, 23,158, 63,255,245,142,157, 59,229,254,254,254,160,148, 34, 41, 41,201,250,231,181,107,
+237, 71,246,234, 21,149, 85, 94, 78,226,178,178,132,232,131, 7,185,124,142,251, 62, 62, 62,190,206, 72,161,193, 96,184,150,146,
+156, 28,212,161, 83, 7,183,179,215,163,111, 14, 27, 50,160, 27, 39,229,184,196,228,204,107, 78, 14,246, 22, 23, 46,158, 47, 49,
+ 24, 12,215,234,210, 41, 47, 47, 79,228,121,222,158, 82,234,116,230,204, 25, 56, 58, 58,162,176,176, 16, 70,163, 17, 6,131, 65,
+175, 86,171, 85,247,239,223,135, 78,167,131, 78,167,131,181,181, 53,238,222,189,155,205,243,252,169,154, 52,121,158,159, 64, 8,
+153, 79, 41, 69, 76, 76, 76, 58, 0,184,187,187, 55,180,181,181,221,194,243, 60, 50, 50, 50,112,230,204,153,209, 25, 25, 25, 15,
+170,212,197, 90, 59,185,155, 88, 7,158,250,120, 57, 59, 59,135, 91, 88, 88,204,154, 58,117,170, 75, 88, 88, 24,180, 90, 45, 0,
+192,210,210, 18,106,181, 26,214,214,214,104,223,190,253,189, 5, 11, 22, 24, 40,197, 56, 74,105,173,131, 16,238,221,187,151, 27,
+ 20, 20, 52,117,226,196,137,243,130,130,130,252, 40,165, 8, 12, 12, 68,239,222,189,113,232,208, 33, 60,124,248, 16,229,229,229,
+194,213,171, 87,183,165,166,166, 30,100,151, 89, 6,131,193, 76,214, 11, 18,193,170,184, 33, 17, 66, 8,253,171,127, 48, 59, 59,
+ 59,215,211,211,243,200,141, 27, 55, 6,188,242,202, 43, 56,115,230,204, 56, 0,211, 1, 64,169, 84,142,123,229,149, 87,112,227,
+198, 13,220,191,127,255, 72,118,118,118,238,115, 58, 96,106,189,254, 81, 0, 71,165, 82,153,213,243, 70,237, 95,209, 52, 8, 74,
+169,127, 77,223,213, 17, 13,243,110, 55,116, 40, 87,118,235, 86,209,252,163, 71, 63,216,186,103,143,220,203,203, 11,165,165,165,
+144, 72, 36,176,182,182, 38,189,251,245,179, 91,179,117,171,171,151,149,213,133,201,227,199,199,124,117,252,184,250, 66,113,177,
+ 73,211, 43,104,181,218,181, 95, 46,152,221,237,183,205, 59,130, 27, 5, 7,218, 29, 58,118,250,166,131,131,181,153,175,175,191,
+178,184,168, 72,247,195,138, 37,210,242,242,242,117,117,233,104, 52,154,189, 39, 79,158, 28,226,229,229,229, 20, 25, 25, 9,189,
+ 94, 15, 65, 16,208,179,103, 79, 80, 74,149, 0, 68,169, 84,138,123,247,238,193, 96, 48,228, 60,124,248, 48, 61, 46, 46, 78, 9,
+ 96,113, 29,101,248, 39,163,196,113,220,200, 1, 3, 6,128,231,121,244,238,221, 27,251,246,237,123, 5,192,188,154,182,127,134,
+ 8, 86, 3,119,119,247, 69, 21,191,105, 82,231,118, 55, 55,183,142, 65, 65, 65,243,150, 46,253,134,184,184,184, 65, 16,120, 24,
+141, 6,228,230,230,163,180,180, 20,161,161,161,240,246,246,198,226,197,139, 1, 96, 95, 93,230,170,146, 7, 15, 30,196, 2, 24,
+ 53,126,252,120,249,217,179,103, 91,106,181,218,229,189,122,245,194,205,155, 55,113,251,246,237,215,156,157,157,115,188,188,188,
+120, 15, 15,143,183, 9, 33,214, 42,149,106,107,108,108,108, 58,187,220, 50, 24,140,127, 19,255, 45, 47,242, 95, 53, 88,117,101,
+204,197,197,197,188,164, 40,255,125, 95, 95, 95, 21, 0, 40,229,146,238,142,142,142, 95,229,229,229,149,213,247, 71,213,106,245,
+142,205,155, 55,191,244,237,183,223,202,251,245,235, 23,224,233,233,217, 26, 0,134, 13, 27, 22, 96,101,101,133,205,155, 55, 27,
+212,106,245,142,231,149, 73, 81, 20,123,183,106,213, 10, 5, 5, 5, 72, 74, 74,186, 94,159,125, 15, 28, 56, 96, 14,160,113, 93,
+223,213,134,222,104,116,178,118,115,147,102,159, 61,107,208,240,188,119, 80, 80, 16, 74, 75, 75,161, 80, 40,160,211,233,144,152,
+152, 8,185, 92, 78, 30, 38, 36, 56,206,156, 62,253,156, 89, 80,144,101,229, 8, 67, 83,200,200,200,208,184,187,187,191,183,240,
+203,133, 91,150, 46, 89,226, 92,144, 95,248, 64,174, 48,211,154,155, 41,237,103,124,180,128,102,103,103,127, 88,177, 70, 85, 93,
+ 44,222,178,101, 75,159,151, 94,122,233,142,151,151,151,115, 94, 94,158,107, 73, 73, 9, 45, 40, 40, 32,120,212,151,138, 0,192,
+157, 59,119,144,156,156,204, 11,130,112, 14,192,124, 74,169,222,212,180,122,122,122,218,181,110,221,186,143,131,131,195,227,166,
+200,230,205,155,247,241,244,244,252, 62, 45, 45,173,240,121, 86,238, 99,199,142,153,139,162, 24, 10, 0,125,250,244, 49,213,140,
+191, 62,114,228, 72, 98,102,102, 1,158,231,161, 84,202,161, 84, 42, 97,105,105, 13,123,123,123, 36, 39, 39,163,123,247,238, 98,
+ 66, 66,194,126,115,115,243,245,245, 77,211,233,211,167, 7,181,110,221,122,250,228,201,147, 97, 52, 26, 49,100,200, 16,164,167,
+167, 47, 77, 76, 76,220,238,234,234, 58,250,179,207, 62,115,116,112,112,192, 39,159,124, 98, 6, 96, 46,187,220, 50, 24, 12,102,
+178, 94, 0,131, 85,203, 77,177,149,179,179,243,148,156,156, 28, 85,101,211, 11, 33, 68,213, 52, 32,224, 23,119,119,247,159, 50,
+ 50, 50, 46,212,231, 71, 11, 11, 11, 75,220,220,220,246, 95,186,116,105,196,176, 97,195,112,252,248,241,177, 21, 6, 11,151, 46,
+ 93, 66, 66, 66,194,254,194,194,194,146,231,145, 65, 15, 15,143,151,187,117,235, 54,182,117,235,214, 56,112,224, 0, 4, 65, 56,
+ 85,159,253,171,142, 24,172,110, 20, 97,229,119,166,104, 41,148, 74,177,178,255,141, 68, 34,129, 86,171, 69,102,102, 38, 98, 98,
+ 98, 96,109,109,141,194,130, 2, 98,109,111,111,208,233,116, 66,125,243,153,145,145,145, 22, 20, 20, 20,167,209,106,101,118, 14,
+246,106, 43, 11, 5, 45, 41, 45,229,238,220,185,153,153,157,157,157,100, 98,165,214, 19, 66,186, 28, 61,122,244, 11,137, 68,242,
+138,135,135, 7, 70,140, 24, 65,122,244,232, 1,133, 66, 1,141, 70,131,162,162, 34, 28, 56,112, 0, 60,207,251, 1,128,147,147,
+147, 75,131, 6, 13,118,115, 28,151,157,144,144,240,102, 93,191, 33, 8,194,176,193,131, 7, 75,141, 70, 35, 22, 44, 88,128,185,
+115,231,162,111,223,190,210,107,215,174, 13, 3,240,235,115, 60, 65,241,210, 75, 47, 61,238,228, 94,181,115,123, 77,116,237,218,
+ 85, 42,145, 72,252, 61, 60, 60,144,148,148, 4,115,115,115,184,184,184,192,214,214, 22,142,142,142,248,246,219,111,177,124,249,
+242,219, 18,137,100, 85, 70, 70, 70, 92,125,211,228,237,237,253,246,152, 49, 99,222, 30, 49, 98, 4, 74, 75, 75,113,233,210, 37,
+116,232,208, 1,139, 22, 45,114, 61,127,254,252,180, 86,173, 90, 65, 42,149, 34, 34, 34, 2,130, 32,164,178,203, 44,131,193, 96,
+252,195, 13, 86,213,246,206,170,239,237,236,236,172, 85, 42,213,196, 1, 3, 6,116, 28, 50,100, 8,122,247,238,253,167,157, 87,
+174, 92,105,121,230,204,153, 25, 30, 30, 30, 93, 0,172, 74, 79, 79, 47,168, 71, 84,105,239,150, 45, 91,250,181,107,215,206,188,
+ 91,183,110,254, 0,160, 84, 42,245, 91,182,108, 81,139,162,184,183,190, 25,121,114,210, 71, 79, 79,207, 86, 18,137,100,220,192,
+129, 3, 91,189,241,198, 27,136,138,138,194,230,205,155,239, 5, 5, 5, 29,175,167,110,124, 29,163, 8, 87,212, 21,205, 82,200,
+100,185, 37,153,153, 14, 82, 55, 55,133,133, 66,145,122,237,218, 53,255,128,128, 0,146,144,144,128, 7, 15, 30,192, 96, 48,224,
+214,173, 91,148, 3,210, 36,214,214, 92,242,157, 59, 68, 46,147,213,123,206, 46, 51,185,216,226,243, 79, 38, 4,106,181,154,208,
+226,226, 98, 94, 42,149, 74,149, 50, 33,161,158,198, 68,231,237,237, 61, 88, 16, 4, 71,189, 94,111,116,113,113,145,157, 56,113,
+ 2, 10,133, 2,143, 70,127,134, 67,161, 80,232, 61, 61, 61, 75, 1,192,193,193,129, 91,180,104,145,108,218,180,105, 81,117,105,
+183,104,209, 66,214,160, 65,131,145, 65, 65, 65,184,120,241, 34,162,163,163,227, 47, 94,188,232,223,162, 69, 11,120,121,121,141,
+108,209,162,197,134, 27, 55,110, 24,159,151,193, 66, 61, 59,185, 71, 68, 68,136,238,238,238, 32,132, 64, 34,145, 64,173, 86, 35,
+ 33, 33, 1,237,219,183,199,186,117,235,176, 98,197,138, 77,153,153,153,235,159, 38, 61,227,199,143,151, 55,105,210,228,245, 17,
+ 35, 70, 32, 62, 62, 30,139, 23, 47,206,207,202,202, 58,125,244,232,209, 97,147, 39, 79,150,116,232,208, 1,121,121,121,216,176,
+ 97, 3,127,243,230,205,245,253,250,245,251,141, 93,158, 24, 12,198,191, 45,114, 85,221,251, 23, 46,130,229,225,225,209,223,222,
+222,254,173,145, 35, 71, 74, 26, 53,106,132,236,236,108, 88, 89, 40,245,132, 16, 5, 0, 88, 89,168,244, 70,163, 17,147, 39, 79,
+ 70,179,102,205, 90,207,152, 49,163,149,171,171,235,166,172,172,172,221,166,252,112,118,118,182,218,205,205,109,215, 59,239,188,
+179,248,214,173,155,126, 0,112,245,234,213,132,140,140,140,153, 38, 54,103, 85, 53, 65,149,147, 83, 18,115,115,243, 59,129,129,
+129,249,125,250,244,177, 27, 58,116, 40, 28, 29, 29,113,243,230, 77, 44, 90,180, 40, 74,171,213, 78, 57,115,230, 12,255,223, 46,
+100,158,231, 83,174, 28, 60,104,247,210,232,209,118, 11, 70,142,252,225,141,241,227,191,249,106,209, 34,185,135,135, 7,177,182,
+182,198,237,219,183,233,154, 95,127, 53,108, 95,178,228, 7,137,153,153,252,236,190,125, 10,193,104,140,173,207,111,120,122,122,
+118,233,215,167, 75,248,210,111,191,131, 70, 93,134,171,151, 14,162,176, 32, 15,191,252,186,167,177,167,167,103,151,180,180,180,
+136,122,164,215,127,215,174, 93,143,204,161, 66,129,249,243,231,195,221,221, 29,214,214,214, 40, 43, 43,195,132, 9, 19, 20,239,
+191,255, 62, 0, 32, 58, 58, 26,150,150,150, 38,233,102,102,102,118,155, 56,113,162,181,209,104,196,225,195,135,117,130, 32,188,
+119,252,248,241,189, 77,155, 54, 85,118,238,220,217,250,183,223,126,235, 14,224,232,223,120,114,139,238,238,238, 41,199,142, 29,
+243, 30, 49, 98, 4,228,114, 57, 10, 11, 11, 97,101,101,133,165, 75,151, 82,131,193,176,251,105,181,211,211,211, 21,142,142,142,
+ 10, 65, 16,176,107,215, 46,148,148,148,188,153,150,150,150, 21, 16, 16,176,119,198,140, 25, 31, 6, 6, 6,250,198,198,198, 38,
+ 11,130,176, 36, 61, 61, 61,145, 93,106, 25, 12, 6,227, 5, 53, 88, 0, 94, 59,114,228,136, 68, 20, 69,172, 94,189, 26, 55,110,
+220,160,150,214,246, 31, 88,217,144,141,214,214,214, 66, 81, 81,209,107,223,124,243,205,144, 47,190,248,130,116,234,212, 9,151,
+ 46, 93, 34,126,126,126,195, 0,236,174, 98,124,106, 93,109,187,184,184,248, 90,118,118,150, 95,149, 89,219,253,148, 74,213,181,
+ 58,204,212,159, 52,171,153,204,178,233,151, 95,126, 25,233,236,236,108,140,140,140,196,170, 85,171,196, 27, 55,110,252, 1, 96,
+105,118,118,182,198, 20,205,231, 65, 85, 77,187,160,160, 11,235,102,205,106,222,110,208, 32,218,253,149, 87,196,101, 10,197, 71,
+179,231,204,121,175,160,164,196, 75, 20, 69, 56,216,216,164,108,250,242,203,111, 59,116,234,164,185,123,249,178,197,249,223,127,
+ 55,115,105,208,224, 92,125,210,153,150,150, 22,209, 48,192, 27, 27,126,253, 22, 6,131, 14,153,233,201, 0,128,188,252, 98,212,
+102,174,170,211,228, 56,174,104,220,184,113,230,122,189,158,140, 28, 57, 82,150,147,147,131,128,128, 0, 0, 64, 73, 73, 9,254,
+248,227, 15, 4, 7, 63,154, 86,235,238,221,187,143,223,215,149, 78,115,115,243, 87, 58,118,236,136,164,164, 36, 68, 69, 69, 29,
+202,206,206,206,117,115,115, 59,148,156,156, 60,172,101,203,150,216,187,119,239,136,154, 12, 86,125,143, 81,229,196,162,245,169,
+ 75, 21,230,114,198,222,189,123, 39, 94,186,116,169,203,244,233,211, 73,143, 30, 61, 0, 0,229,229,229,130, 41,253, 13,107, 75,
+103,101,243,176, 40,138,240,242,242, 42, 7,128,184,184,184, 68, 0,239, 62,173,230,243,168,159, 76,147,105, 50, 77,166,249,191,
+160,249,111, 50, 88,188, 40,138, 56,115,230, 12,246,236,217, 35,232,245,250, 89,153,153,153, 49, 85,254,191,222,203,203,235,220,
+176, 97,195,150, 61,120,240, 64, 18, 29, 29, 13, 74,105,189,250, 14,105,181, 90, 35, 33,255,249,221,179,102,106,221,186,117,200,
+202,202,210, 39, 39, 39,255,110, 48, 24, 54,231,229,229,101, 62, 67, 84,227,153, 71, 17,254,114,227,134,238,101, 43,171,125, 51,
+187,117, 27,182,224,200, 17, 85,223,241,227,245, 93,251,244,249, 10,122,189, 94, 38,147,137, 48, 51,147, 72,204,204,228,209,151,
+ 47, 91, 44,157, 52,201,129,112,220,254, 31,163,163, 53, 79, 17,193,194,184,183,166, 65,163, 41,195,229,139, 7, 81, 84,144,135,
+ 75,215, 30,160,190, 17, 44,169, 84,234,109, 52, 26,149, 60,207,167, 83, 74,241,250,235,175, 67, 16, 4,104,181, 90,148,150,150,
+162,160,160, 64, 59,117,234, 84,174,194, 52,225,165,151, 94, 50,105, 86,127,127,127,127,111,169, 84,138,163, 71,143, 66, 34,145,
+236,126,100,136, 37,187, 79,158, 60, 57,108,228,200,145,240,240,240, 8, 34, 21, 99,116,107,211,121,188,216, 51, 65,224,163, 51,
+ 29,129,206,225, 67,238, 84, 46,246,204,113, 92, 98,179,102,205, 76,234,119,245, 36, 57, 57, 57, 57, 0,230,187,187,187,239,252,
+228,147, 79, 38,183,110,221, 58,124,222,188,121, 0, 32,121,214,122, 41,138, 34,120,158,127,166, 41, 36, 24, 12, 6,131,241, 15,
+ 55, 88,132,144,109,221,186,117, 27, 69, 41,149,112, 28,183,249, 9,115, 5, 0, 72, 77, 77, 77,240,244,244, 92,237,235,235,251,
+120, 1,232,122,154,151,108, 66,200,215, 28, 71, 62,121,244,185,254, 19, 75, 86, 89,218,230, 19, 0, 68, 42,149,109,190,114,229,
+202,167, 25, 25, 25, 89,245, 53,124,213,241, 60, 70, 17, 2,192,238,210,210,216,151, 45, 45,247, 79,110,218,116,224,144,247,222,
+163, 45,123,245,178,113,109,208,128,231,141, 70, 33,254,206, 29,114,126,239, 94,249,249,223,127, 55,147, 16,114, 96,119,121,121,
+ 76,125,211,153,150,150, 22, 17,224,239,121,108,248,176,126, 47,249,251,186, 3, 0,226, 19, 51,144, 87, 80,124,172, 62,230, 10,
+ 0,146,146,146,116, 0,116,110,110,110,195,118,236,216,177,171,194,244, 84,141, 10,233,164, 82,105, 67, 0, 40, 45, 45,245,217,
+187,119,239, 22,169, 84,154, 86,151,110,116,116,244,182, 57,115,230,140, 78, 72, 72,248, 61, 45, 45, 45,174, 34,221,113,238,238,
+238,171, 50, 50, 50, 70, 39, 39, 39,255, 70, 77,112, 31, 79, 44,246,140,168,243, 59, 85, 0, 26, 87, 46,246,252,180,107, 13, 86,
+165, 98, 94,174,247,221,221,221,219,245,238,221,123, 28,165, 52,231, 89,244, 84, 42,149, 81,167,211,241,130, 32, 72, 13, 6, 3,
+ 85,169, 84, 70,118,249, 97, 48, 24,140, 23, 23,242, 87, 62, 77,155, 26, 66,124,178,131,250,211,104,214, 71,195, 20, 77,119,119,
+247, 41,132, 16,127, 83, 53, 40,165,241, 25, 25, 25, 63,212,160,201, 85,126, 95,211, 98,207,212,104, 76, 86,249,251,159,219,116,
+247,174,182,186,224, 71,125,202,179, 97,195,134, 52, 54, 54,214,164, 78,130,117,105,122,122,122,170,164, 82,233,147, 17, 42, 93,
+133, 9,171,212, 32, 0, 36,148, 82,190, 62,233,124,218, 99,244, 56,130, 5,112, 34, 17,135,115,148,219, 5, 64,172,140, 96, 61,
+239,250,249, 12,117,137,171,250, 63,127,127,255,119,130,131,131, 71,223,185,115,103, 71,106,106,234, 74, 19,228,196,255, 82, 58,
+153, 38,211,100,154, 76,243,111,215, 52,129, 86, 0, 42,151,102,171,156, 39,211,233,137,247,122, 0, 85,239, 89,149,159,115, 1,
+ 92,171,162, 81,245,251,186,246, 5,128, 60, 0,119, 96,194,170, 40,117, 70,176,254,155, 60,237,114, 40,207, 91,227,137, 8,198,
+ 15,207, 81,238,113,232,103,211,221,187,106, 0, 71,254,202,242,124,248,240,225,115, 27,125,145,150,150,166, 5,160,173,163,236,
+ 41,128,255,218,224,129,106, 76, 84, 56,254, 55,249, 83, 71,176,248,248,248, 31,186,118,237,250,115,106,106, 42, 15, 6,131,193,
+ 96,212,219, 92, 17, 66, 14, 86,220,119, 6, 84, 24,189,131, 79,190,175,220,166,114,187,170,219, 84,106, 60,249,125,109,251, 2,
+192,204,153, 51, 63, 93,180,104,145, 57,128,211,166, 38,152, 99,199,140,193,248,239,241,119,140, 98,101, 48, 24,140, 23,128,199,
+198,232, 73, 35, 84,205, 67,255,128,170,127,107,163, 58,157,202,223,168,250,121,241,226,197, 95, 1,168,215, 74, 48, 82, 66, 72,
+120, 13, 9, 52, 57,244, 87,147, 70,109,255,171, 75,159,105, 50, 77,166,201, 52,153, 38,211,100,154, 47,158,230,243,218,255,121,
+ 80,157, 89,123, 34,226, 5, 66,200,193,153, 51,103,126,138,122, 52, 15, 86,138,255,101, 47, 0,225, 76,147,105, 50, 77,166,201,
+ 52,153, 38,211,100,154,207,248,234,255,200,178,208,254, 85,223, 87,247, 93,109,239,235,218,215,132,109, 77, 78,243,255, 68, 31,
+ 44, 6,131,193, 96, 48, 24,140, 90,200,173, 26,109,170,136, 48, 9, 51,103,206,252,180,106, 63, 41, 0, 58, 0,202,106,162,101,
+127,234,187, 85, 71,100,205,228,109,107,131, 25,172, 26,104, 22, 40, 89,224,237,237,220,242,113,148,175, 98,138, 2, 17,180, 50,
+242, 87,241, 70, 4, 21, 41, 50, 50,139,110,220,137,167,179,107,144,171,179,175, 91,167, 78,174,246, 18, 77,217,114, 65, 20, 58,
+ 0, 0, 1,119, 86, 38,179,157,126,242,106,122, 17,158,232, 44, 93, 19, 33, 1, 36, 68, 37,197,199,162,136, 38,132, 0,132,224,
+142,150,199,146,123,113,244,222,179,150, 7, 33,132,132,249, 97,130, 66,105, 62,210,198,214, 46,176, 48, 63,239,161,193,160,219,
+ 25,157,136, 95,232, 83, 12, 69, 13, 14, 32,205, 32, 96,134, 32, 66, 38,229,176,252, 94, 34, 61,207,106, 29,131,193,248, 47,241,
+172,253,143,171,187, 38, 63,235,224, 34, 54, 65, 94,237, 92, 3,208,170,138,233,201, 5,112,119,209,162, 69,133,139, 22, 45,170,
+250,221,109, 0, 77, 43,182,203,173,198, 40,233, 43, 62,235,171,217, 70,111,202,182,127,137,193, 10,243, 34,147, 65, 49, 23, 4,
+ 20,192,188,168, 84,186,170, 94,251, 7,146,158, 42,169,100, 13, 40, 36, 90,163,240, 33, 21,112,182,218,155,185, 4,157, 85, 50,
+201, 50, 16,136, 90, 94,120, 51, 42,150,158, 48,245, 55,194, 27,146, 62, 82,194,253, 38,138, 84, 38,136,116, 35, 68, 28,180, 52,
+226,194,165, 52,170,173, 79, 90,189,189,157, 91,238, 59,145,249,210,233,109,239,161, 77,179, 64, 80,209, 8, 80, 30,230,193, 31,
+227,228,166,215,209,166,177,247,163,239, 68, 35, 44,155, 47, 67,223,142, 54, 79,125,114,116,234,228,106,111, 38,138,119, 86,173,
+253,205,213, 59,176, 29,161,162, 14,177,183, 14,191,246,254, 39,159,117,235,209,218,163,201,201,171,117,175,241,216,180, 33,121,
+ 43,160, 65,163,143,167,125,246, 45,231,238,238,105, 41,242,122, 62, 51, 53,186,197,247,223,206,217,221,180, 33, 89,118,251, 33,
+ 93, 99,170,145, 10,245,197, 68,169, 76, 49,194,204,220, 34, 80,173, 46,141, 21,140,198,157,225, 1,210, 62, 75,190, 89,209,172,
+ 75,183,190,150,162, 46,139, 51,242, 36,116,251,142,173, 62, 63,252,180,170, 31, 33,100, 16,165, 84,172, 87,166, 5,124,112,119,
+255,132,225, 50,169,132, 4,247,255,213,130, 16,210,187,222, 26, 0,194,253, 72, 24,173, 99, 38,244,138, 43,223,143,145, 9, 52,
+234,105,142, 79,136, 31, 89, 75,128, 32, 0,187, 8,197,182,168,196,103,155, 19,139,193, 96,252,239,225,225,225,113, 58, 61, 61,
+189,219,115,214,108,147,158,158,126,133,149,238,115, 53, 89, 79,114,213,196,237,254,235,212, 55,130,181, 48, 42, 54,213, 14,162,
+ 1, 97, 65,254, 11, 0,212,203, 96,169,164,146,141,215,238,100,187,130, 26,240,235,183,239,108,215, 27, 1,158, 55, 64,224,141,
+ 16,120,227,163,247,130, 17, 34,175,197,156,229,103, 0,190, 20, 45,155, 53,220, 8,192,205,212,223,144,129,251,237,198,133, 99,
+246,132, 47,198,246, 13,139,166, 38,103,148, 77, 61,113, 53, 35, 47,204,151,204,138, 78,194,250,250,220,196, 79,111,123, 31,155,
+119, 31, 74, 91,249,235,142,251, 34, 40,236, 44,149,141,198, 12,139,242,218,180,251,116,234,138,117,218,251, 84,164,176,181, 82,
+ 54, 26, 59, 40,214,251, 89, 14,130, 68, 83,182,252,167, 95,215,187,122,251,248, 16, 99,226, 66,192,168,131,151,119, 63,201,103,
+211,222,114,155,247,205,143,223, 2, 24, 91,107, 52,200,159,132, 6, 53, 12,249,112,227,246,139,222,229,101, 57,250, 83,127,124,
+ 26, 71, 40, 53, 58, 58, 6,203,231, 47, 92,106,246,249,172,105,211,131,253,201,149,251,241, 52,186, 14,115,197,133,248, 98,255,
+ 87, 95, 45,105,210,163,215, 64, 75, 65,159, 43,209,150,149, 6,173, 89,191,118,110,112, 88,107,243,142,205, 61,229,185, 23, 38,
+ 17,117,105, 1, 12,212, 76,217,189,101, 15,107,245,152, 87,140,107, 55,109,157, 2,224,187,122,249, 43,254,255,231, 26, 49,240,
+ 80, 1,144,161,190, 29, 8, 31, 61,242,189,123,235,210,233,137,124,225, 53, 64, 52, 84,152, 94, 3, 32, 26, 65,171,252,109,251,
+234,122, 0,152,244, 84,143,186, 4, 47,157, 56,113,205, 45, 59, 59,179,213,242,229, 95,205, 10,245, 35,135, 65,240,219,189, 4,
+ 68, 60,141, 41,100, 48, 24,255,155,184,187,187, 11, 25, 25, 25,146,231,169,233,225,225,209, 47, 61, 61,253,208, 51,166,235, 99,
+ 0,111, 85,124, 92,147,145,145,177,228, 89,211,213,170, 85, 43, 79, 74,169,107,197,181, 63,235,218,181,107,105,172, 6,252,189,
+ 6, 75, 5, 42, 2, 23,134, 0,164,126,195, 21, 43,110,134, 42, 16, 9, 96, 44,195,224, 1, 61,225,232,224, 6, 8,229,128,160,
+ 1,120, 53, 32, 60,122,229,229, 38, 3,124, 57,144,123, 24, 60,165,202,122,231,202, 88, 12,228,236,196, 75,237,188, 97,107,165,
+194,251,163, 66, 29, 87,239,123,176,102,205,190,152,158, 0, 70,154,148, 86, 74,209,166,121, 32, 86,254, 90,126,255,247,211, 57,
+189, 1,160,127, 87,199, 35,109, 26,251,120,173, 88,167,189,255, 71, 68, 65, 31, 0,232,219,209,230,112,235,112, 87,111,241, 25,
+ 38,108, 21, 68,161,163,119, 64,115,194,167,124, 3,142, 43, 68, 89, 89, 30, 82,227, 55,192,209,165, 55,199,139, 98,231,186,246,
+ 55,147, 98,230,251, 31, 47,150,150,151,101,235, 41,159, 35,186, 88,230,201,101, 32, 18,177,252,156, 94,147, 85, 84,246,193,187,
+ 99,248, 15,103,126, 53, 19,192,232,218,116, 66,253, 48,101,217, 55, 43, 26,119,104,221,200, 57,235,252,251,164,172, 56, 27, 70,
+106,166, 28,212,165, 3,236,124, 66,197,236, 91,203,136,210,173, 39,236,124,253,145,118,119, 51,146,239,236, 33,157, 90, 15, 83,
+110,220, 34, 31, 83,147,193,106,232, 70, 58,246,126,169,245,118,127, 31,119, 55, 74, 69,136,162, 8, 74, 69,140, 29,217, 7,179,
+126,136, 67,185,134,199,128,158,109, 59, 56,216, 72,116,139, 62,236, 10, 74, 69,164,102,228,171, 79, 93,188,223, 35, 46,157,214,
+249,228, 71,128, 31,155,182,235,214,241,206,213, 75,193,134,140,131,104, 53,116,209,125, 2,156,175, 82,231, 58,222, 60,185, 62,
+ 24, 88,255, 84,199,134, 16, 66, 66,124, 33,164, 92, 94, 12,207,230, 19, 36,191,172, 63,226, 84,156,159, 62,118,207,142,159,134,
+255,180,250,151,205, 79,107,218, 24, 12,198,255, 30, 25, 25, 25,207,221,100, 93,188,120, 49,227, 89, 76, 86,171, 86,173, 58, 3,
+248, 38, 35, 35,163,210,108,125,211,166, 77,155, 47, 42,239, 83, 79, 80, 76, 41, 29,125,237,218,181,179,181,105, 78,159, 62,221,
+ 29,128,239,245,235,215, 43,127,195,183, 85,171, 86,190,213,109,107,110,110, 46, 52,109,218, 52,233,219,111,191,205, 96, 53,228,
+175, 53, 88,247,179,206,125,208, 92, 95,160, 6,128,251, 38,152,148, 63, 13,181,212, 26,133,197, 27, 86,140, 93, 28, 22,100,135,
+146, 82, 61,142,159, 75,170,136, 96,241, 16, 4,227,227,191,189,219, 57,162, 61, 63, 9,223,109,139, 1, 47,136,139,106,211,124,
+ 18,131, 40,190,218,172,243, 43, 59, 68, 74, 21,230,230, 92,113,128,151,131,243,135, 99,154,114,239,143, 10,131, 70,203,191, 18,
+234, 75, 78, 69, 39,210, 95, 77,210, 20,249,106,242, 84,205,119,162, 80,103,222,107,162,105, 35,179, 54, 67,251,118,178,134,177,
+ 0, 66,121, 34,244,130,136,204,204,114, 36,100,200, 97, 35,102,155,164, 41,138,104,226,234,234,102,126,241,216,140, 68,103,171,
+ 66,185,131,153, 32,151, 19,145,114, 70, 42,209,235,239,107,237,220,123,202, 68, 17, 77,234, 58, 70,102,102, 86,175,119,234,214,
+223, 38,229,228, 91,196,204,171, 47,156,253, 60,145,120, 99, 3,114, 34, 15, 34, 63, 39,153,216,208, 66,152, 55,244, 71,223, 97,
+163,240,205,148,150, 40, 41, 41, 3,201,141,183, 81, 40,148,182, 53,105, 82, 14,163,151,125,253,165,155, 84,202, 61, 42, 79,202,
+ 3,212, 8, 80, 35, 74,203,116,208,235,245, 80,201, 41, 44, 84, 20,168,104,134, 21, 4,189,121,147, 30, 51,223, 1,112,165,174,
+188, 71, 38,208,168, 48, 63,114, 30,148, 15,166,130, 6, 4, 56, 31,149, 64, 31,155,158,112, 63, 18,214,162,199,248,119, 9,240,
+227,211, 28,163,240, 6, 24,208, 50,216,210,194,140,191,143,180, 51, 83, 17, 39,168,168, 75,227,183, 48,106,244, 20,243, 95,214,
+172, 30, 72, 8,153, 92,181, 15,218, 95, 49,188,152,105, 50,205,127,170,166,141,141,141, 95,131, 6, 13,190, 48, 26,141,157,229,
+114,185,139,193, 96,128, 40,138, 89, 10,133,226, 92, 82, 82,210,252,226,226,226,132,255,181,188, 31, 62,124,216,100,147,101,138,
+166, 76, 38,195,161, 67,135, 98, 77, 53, 89, 79,106,114, 28,247,219,174, 93,187,176, 99,199, 14, 0,192,233,211,167,209,176, 97,
+ 67,139,234,246, 77, 77, 77,181,120,249,229,151,127, 3,224, 85,155,230,195,135, 15,253,190,252,242, 75,236,218,181, 11, 0,176,
+105,211, 38, 4, 5, 5, 85,155,158,219,183,111, 75, 62,255,252,115, 63, 0, 25,127,245, 49,122, 97, 13, 86,197, 26,187,117,117,
+210,139,119,181,146, 53,135,209, 8, 0,241,245,253,177,232, 56,250,117,211, 32, 89,159,147,123,126,236,172, 82,112,152,187,252,
+195,212,220,220,210,182, 82,201,163, 14,131,188, 0,206,206, 86,113,105,209,212,166,222,133,197, 90,252, 30,145,126, 54, 42,158,
+214, 43, 20, 26, 21, 71,143, 3,176,253,255, 27, 36, 9, 26,251,217,241,109,219,190,238,211,100,218,232, 38,216,127, 38,105, 26,
+128, 58,215,170,163,162, 8, 74,249,199,157,218, 43,190,172,104,114,250,255,239, 68, 74, 1,106, 4,173,103,255,196,121,243, 70,
+ 72,247,111,219,219,199, 66, 41,253,126,210,219, 19,173,141,249,209, 40, 46, 18,144,149, 87,142,228, 92, 91, 8,102, 1,120, 16,
+117, 69,144,112, 92,157,253,207, 8,135, 18,106, 44,183,178, 51, 51,227, 66, 91,191,227, 86, 28,249,105,137, 82, 98,148,216, 54,
+251,210, 42,251,238,178, 20, 94,151, 83, 70, 56, 24,234,210,177,182,177,105,168, 43, 77,146, 20, 23,229,195,182,113, 40,250, 14,
+ 26,136,185,111,134,160,180,180, 28,185,249, 23,105,160,143, 13,209,222,220,130,207, 94, 15, 70,126, 94, 38,244, 70,128, 43,209,
+ 22,104,245,218,178,154, 47, 22,248,229,131, 15, 63,121,213,199,211,201,162,114,176, 0, 21, 5, 52, 13,247, 71,175,110,109,112,
+252,210, 69, 92,187,249, 0, 34, 21, 43, 6, 19, 8, 72,203, 41,202,214, 26,132, 13,245,186,120,138,252,163, 72,104, 53, 6,236,
+105,162, 76,141, 27, 19,115,161, 28,179,219,134, 90,189, 57,227,117, 31, 43, 43, 5,129,214, 76,128, 86,107, 68,233,253, 31,224,
+224,217, 24,230, 42, 21,105,222, 92, 35, 5,192,214, 21,100, 48,170, 48, 98,196, 8, 85,118,118,246,153,254,253,251,135,246,236,
+217,211,188,115,231,206, 40, 47, 47,199,209,163, 71,161, 86,171,125,188,188,188,124,142, 29, 59, 54,172, 77,155, 54,209, 94, 94,
+ 94, 93,119,238,220,169,125,138,159,169,188, 95, 61,215,206,225, 10,133, 2,151, 46, 93,122,174,145, 44,133, 66,129,171, 87,175,
+198, 62, 77, 36,171,188,188, 92,238,234,234, 10, 7, 7, 7, 8,130,128,242,242,114,236,219,183, 15, 37, 37, 37, 16, 69, 17,102,
+102,102, 88,118,184, 24,218,152, 93, 88,243,253,151, 40, 46, 46,150,215,165,153,151,151, 71, 26, 53,106, 4,157, 78, 7,158,231,
+161,213,106,113,226,196,137,199,159,165, 82, 41, 22,236,202,134,238,193, 54,108,252,101, 25,242,242,242,200,127,171,238,152,232,
+ 69,254, 57, 6,171, 50, 67,255,141,140, 9, 2, 63,107,245,134,109,151,102, 77, 29,137, 41,175,247,240,154,255,221,222,158,209,
+241,116, 35, 0,132,250,147,177, 99,250, 5,122,219, 90,200, 48,239,231,235, 0,232,172,103,253,189,200, 36,250, 32, 44,128, 76,
+219,123, 38,249,204,167,111, 54,135,191,151,117,195,128, 0,162,136,139,163,117,247,247, 17,141,176,179, 84, 54,234,223,213,241,
+ 8,168, 8, 91, 75,101, 48,168, 0, 91, 43,101,163,190, 29,109, 14,139,148,194,214, 66, 30, 76, 69,211, 39,231,110, 29,174,124,
+219, 76,198,189,109, 97,101,235,253,193,164, 49,102,253,251,191,108,102,161,160,200,143, 62,132, 18, 26, 6,189,133, 5,168,186,
+ 8, 9, 15, 35,133,195, 17,215,211,149, 14,110, 31,213,153, 76, 1,103, 51, 82,239, 13,109, 16,216,211, 54,247,250,103, 57,126,
+ 61,182,248,114, 16,184,242, 75,195,114, 44,172, 66,229,231,111, 71,242,162,128,139,117,233,148,150,148, 36, 25, 13,112,211, 26,
+101, 86,113, 87,215, 99,230,152, 48, 20, 21,230, 66,171,227, 81, 84,206, 27,220, 28, 13, 74,109,225, 93,232,244, 60,116, 6, 10,
+153,185, 59,142, 93,138,204, 19,121,227,225,154, 52,227, 50,232, 45, 0,150, 85,191, 11,112, 39, 77,103,216,153,221,130,160, 65,
+114, 74, 6, 54,238,190,212,188, 98,187,103,120, 60,229, 65,249,255,191, 70, 87,118,126,127,154,206,237, 33, 13, 72,107, 51, 51,
+217,247,243,102,246, 15,237, 26, 38, 40,137, 54, 19, 4,128,185, 74, 10,157, 74,128,141,202, 31,212, 80, 74,213, 90,109, 81, 84,
+ 36,216,204,236, 12, 70, 21,130,131,131, 93,109,108,108,162, 62,252,240, 67,251,161, 67,135, 62, 54, 3, 27, 54,108,192,138, 21,
+ 43, 48,119,238, 92, 24,141, 70,172, 94,189,218,124,247,238,221,173,127,252,241,199, 52, 31, 31,159,176,228,228,228, 44, 19, 77,
+149,188,226,222,197, 85,152, 43, 97,222,188,121,116,238,220,185,168,250, 29,165,212,240, 52,233, 87, 40, 20, 80, 40, 20,184,127,
+255,254,115, 49, 89, 50,153, 12,114,185, 28, 10,133, 2, 49, 49, 49,245, 54, 89, 60,207, 75,210,210,210, 80, 82, 82,130, 94, 3,
+ 7, 98,197,226,197,232,220,185, 51,122,246,236, 9, 74, 41, 78,158, 60,137,246,118, 15, 96, 63,176, 11,238,221,187, 7,163,209,
+104, 82,203, 84, 90, 90, 26,242,243,243,209,103,224, 64,252,250,211, 79,104,209,162, 5, 26, 53,106, 4, 0, 56,115,230, 12,122,
+120, 36,193,178, 81, 79, 60,120,240,224,191, 86,119,254,155, 94,228,191, 26,193,250,111, 17, 25, 71, 47,135,250,145,131,163,250,
+183, 26, 48,176,123, 40,126,221,118,234,203,208, 80,178, 13, 0, 28,108,148, 11, 95,239,239,143,232,248, 66,156,188,154,113, 48,
+ 58,129, 94,126, 30,191, 41, 10,112,116,176, 53, 7, 56, 5,212,122,129,183,182,174,123,218, 3, 17, 20,230, 33, 51, 49,102,232,
+ 61,175, 54,141,189,188, 40,229, 43, 70, 12,126,139,177,131, 98,189, 91,133,185,120, 63,106,242, 50,194,186,253, 22, 64,180,168,
+ 51, 29,157,154,169,142,125,244,222,212,118,253, 7,142, 50,147,155, 59, 64,212,164,194, 88,112, 7,249, 9,167,161, 51,107,134,
+220,180, 68,108,219,255,123,241,253,132,236, 18,137,132, 59, 46,181,113,249,228,196,137,132,178,186,116,181, 18, 44,154,251,197,
+172,254,219, 54,111,181, 49,115,239,132,135,251,251, 21, 41, 36, 70,165,179, 71, 16, 52,188,149,176,116,221, 65,219,114, 96,113,
+ 93, 58,234,242,146, 61, 39, 78, 30, 25, 25,232,214,209, 42, 49,242, 32,212,106, 61,116, 70, 32,188, 69, 55, 8, 34, 85, 16,142,
+136,214, 18, 9,201,206, 46, 0, 49,138,217,231,110, 38,102,158,191, 22, 47,209,113,117,107,255,169,210,201, 37,239, 13,236,217,
+ 20, 16, 52, 24,212, 43, 28,203,215,157,156, 10, 96,252,179, 25, 44, 35,168,160, 1, 5, 58,134,249,145,159, 41,208,241,198,225,
+229,193, 45,251, 78, 67,125, 34, 88,225,126,164,111,227, 96,247,245,203,191,156,101,111,239,236, 37,129,160, 1,225, 75,168, 88,
+112, 25,210,242,135,176,246,236, 15,193,166, 3,126,249,105,105,153, 40,210,109,244,175, 92, 45,157,193,248, 7,162,213,106,247,
+ 44, 94,188,216,126,192,128, 71,163,221,203,202,202,112,241,226, 69,172, 89,179, 6, 22, 22,255,127,157,164,148,162, 95,191,126,
+160,148,218,207,153, 51,103, 15,128,118, 53,105,118,232,208, 97,224,183,223,126,155,210,170, 85,171,135,120, 52,199,145, 28,128,
+ 4, 0, 61,113,226, 4, 7, 0,173, 91,183, 22,174, 94,189, 42, 2,160,163, 71,143,150, 89, 90, 90, 54, 44, 43, 43,139,120, 90,
+131,165, 80, 40,144,158,158,254,204, 38, 75, 38,147, 61,214,147,203,229, 72, 79, 79,175,151,201,226,121, 94,250,199, 31,127,224,
+230,205,155,152,215,188, 57,222,119,115,131,131,131, 3, 34, 34, 34, 64, 41,133,133,133, 5, 10, 10, 10,176,109,219, 54,116,235,
+214, 13, 60,207,203, 77,209,221,183,111, 31,110,220,184,129, 5, 45, 91, 98,170,133, 5,108,109,109,113,230,204, 25, 0,128, 82,
+169, 68,122,122, 58, 78,156, 56,129,174, 93,187,178, 74,253, 87, 27,172,174,132, 72,137, 23, 92,141, 6, 13, 40, 79, 1, 2,247,
+208, 80, 34,143,142,174,255, 83, 2, 7,124,182,114,221,193,254,203,103, 13, 34, 19,134, 55,119,159,255,227,233,201, 0,240,230,
+ 43, 65, 30,230, 74, 41, 86,110,139,166, 28,240,217,243,200, 96,104, 40,145,115, 28, 38,247,234,208, 8, 25,121,122,196,167, 20,
+159,138, 78,160, 38, 53,233,156,220, 56, 6,155,246,156, 73, 93,177,254,207, 35, 6,215,239,187,145,178,108,163,246, 62, 5,133,
+173,153, 44,120,252,160,246,117,142, 34,108, 29,174,124,123,198,180,105,237, 6,191,246,137,153, 49,109, 47,116, 73,127, 0,130,
+ 26,234,114,130, 18, 62, 16,153, 41,105,152,183,124,107,170,206,200,189,122, 61, 90, 91, 47, 99,249,224, 1, 45, 11,245, 39, 67,
+ 23,127,253,197,241,175,230,205,177, 84,166,159, 44,145, 73, 81,206, 57,116,150, 45,252, 98,149,180,180, 88,255,114, 92, 50, 45,
+173, 75, 71,199, 97,241,215,203,190,235,255,214,152,161,247,131,188,186, 58, 8, 89,241, 14,234,226,226,156, 45,135,111,184, 86,
+ 60, 57, 18, 0,136, 75,204, 71,110, 65, 57, 47,240,198, 8, 43, 3,230, 71,165, 81,147, 71,255,249,187, 16,167,161,253,155,188,
+230,100,171,128,166,188, 16,206,118,114,244,238, 24,240,154,191, 11,153, 17,159, 77,115,159,246, 56, 87, 54, 17, 94, 90,211, 61,
+ 24,162, 33,152,138, 70,232,147,127,171,191, 14, 48,109,218, 72, 31, 27,123, 11, 61, 71,132,114, 64,102, 7, 40,156, 8,103,230,
+ 11,137,153, 55,146, 98,175,243,211,222, 25,153,159,148,148,181,214,145, 98, 9,187,132, 48, 24,127, 38, 57, 57,249,245, 79, 63,
+253,244,124,155, 54,109, 92, 28, 29, 29, 17, 30, 30,142, 3, 7, 14,224,163,143,254, 63, 24,223,172, 89, 51, 0, 64,126,126, 62,
+190,254,250,235,172,140,140,140,215,107,211,140,138,138,186,255,219,111,191,117,108,210,164,137, 94, 46,151, 23, 86,154,172,228,
+228,100,105,121,121, 57,209,235,245,212,194,194, 66, 84, 42,149,198, 17, 35, 70, 24,174, 94,189,218,176,188,188, 60,249, 89, 34,
+ 88, 45, 91,182,188, 91, 84, 84, 84, 76, 8,121,230, 41, 28, 42,205, 85,112,112,176,147, 94,175, 23, 0, 20, 60,205, 20, 14, 60,
+207,163,101,203,150, 56,113,246, 58, 14,159,189,139,178,220,120,140,126,185, 55,130,131,131,113,244,232,209,167, 62,102, 45, 91,
+182,196,137, 19,231,113,230,122, 12,178,147,163, 49,102,212, 16, 52,106,212, 8, 39, 78,156, 96, 21,250, 89, 13, 86, 93, 33,185,
+ 16, 31,210,212, 37, 92,177,233,179, 65, 1,161,210,240,185, 32, 82, 51,236, 93,127,160,195,172,175,126,190,223,216,131,140,190,
+107,194,104,175, 63, 69,177, 30,117, 76,222,122, 59, 58,248,181, 65,157,189,240,235, 78,243,217, 0,240, 74, 47, 63, 92,141,206,
+197,149,200,156,173, 81, 79, 57,103, 81, 85, 26,187, 16,115, 88, 96,235,215,159, 12,238,234,227,233,138, 53, 59,206,131, 80,236,
+ 49,233, 70, 75, 41,109,211,196, 27, 43,214, 63, 57, 98,208,205,123,217, 70,237,253,163, 23, 74,250, 2,192, 75,237, 44, 14,183,
+ 10,177,247,174, 43,146,161,146,113, 19,250, 14,122,221,140,207, 62, 10,177, 96, 39,100, 10, 57, 52,229, 2, 50,115,116,208,152,
+155,225,212,185, 8, 77,153,154,159,118, 39,150,127,170,168, 93,116, 60,141,111, 22, 68, 82,202, 53, 26, 55, 75,251,128,114,142,
+128,150,233,101,244, 70,116,122,121, 84, 50,141, 49, 69, 35, 46,142,234,219,121,146, 78,191,108,220,249,133, 76,166,120, 69, 34,
+ 1,113,182,181,112,250,121,229, 2, 88, 89, 89,130,242,165,160,186, 60, 12,125,243,171,220,187, 15, 13,126, 0, 16, 20, 68, 44,
+ 59, 55,149,111,148,114, 36,237,212, 77,253,231,117,134,128, 37,152, 52,122, 80, 83,153,104, 44,199,123,115,182,227,151,133,131,
+ 48,102, 96,136,236,143, 83, 15, 38, 1,152,255,244, 97,202, 71, 77,132,237, 38,156,189, 79,128,243, 20,232,120,253,224,194, 96,
+192,244,150,199, 22, 45,136, 76, 42, 37, 33, 33, 30,122,153,144,182, 13, 68,229, 65, 37,142, 93, 1,139,134,132, 90,134,227,135,
+149, 95,148,253,186,102,205, 49,145, 96,222,253,196,218,167,188, 96, 48,254,173, 80, 74,227,109,109,109,251,244,235,215,239,228,
+209,163, 71,237,195,195, 31, 45, 55,119,227,198,141,138,243,236, 81, 83, 84,118,118, 54, 94,125,245,213,188,204,204,204, 62,148,
+210, 90,251,244,150,150,150, 38,236,221,187,215, 69,163,209,180,250,252,243,207,179, 27, 52,104, 80,106, 52, 26,105,105,105, 41,
+120,158,167, 78, 78, 78,178, 22, 45, 90,144,176,176, 48,205,201,147, 39, 29, 82, 83, 83, 75, 1, 36, 61, 77,250,223,122,235, 45,
+236,222,189, 27, 0,240, 60,230,197,146,203,229,232,215,175,159,199,197,139, 23,211, 43, 52,175, 60, 67,217,226,206,157, 59, 56,
+ 23, 43, 64, 97, 97,135,164,251, 37, 56,241,251,126,140,158, 48, 17, 60,255,244,189, 21,110,223,190,141,109, 39,110,195,197, 35,
+ 0,197,186, 59,216,183,111, 31, 38, 79,158,252, 76,154, 79,153, 63,242,194,245,193,170,204,216,147,255, 12, 8, 32, 10,165, 30,
+115,122,183,245,248,100, 68,143, 0, 9,175,206,128, 40,138,144, 0,112,180,226,176,238,215, 95,252,118,238, 61,116,169,177,183,
+228, 59,232,197,207,238,102, 83,117, 61,194, 88,115,190,221,112,225,149,223, 22,116,145, 78, 30, 30,108, 15, 0,114, 25,135,149,
+ 91,163,120,112,152,243, 44,153,106,231, 73, 84,101,114, 76,112,245,181,153, 61,235,157,254,246, 93,219, 4, 33,226, 82, 36,190,
+219,124,233,172,194, 14,155,234, 19, 21,169,218,161,253,209,119,213, 4,191,104,221,149, 80, 16,169,171,194,220, 17,218,164, 67,
+144, 42,148,224,121, 3,114,179,213, 72,204, 18,161,114,151,225,234,157,100,205,144,215,134,254,241,180,121, 38,132,144,142,205,
+ 84,238,115, 22, 46,245,212,104, 74,249,146,162, 60, 94, 42,191, 36, 53, 55, 83,102,213, 71,231, 82, 26,213,118,105, 38,111, 1,
+ 42, 74,148, 18,170,158, 53,109,156, 69,250,131,163, 8,116,202, 0, 1,133,153,123,127, 88, 89, 72,228,157,154,202, 83, 0,192,
+215,193, 70,241,245,252,143,108, 62,152, 49,239,156, 41,209,196,198, 65,174, 31,132, 7,218, 35,226,202, 61,156,189,150, 28,117,
+246,242,131,176,110,173,221, 17,228,103,251,126,104, 40, 89,252, 52, 17,209, 71,199,224, 81, 19, 97,229, 40,194,112, 63, 18,214,
+106,192,231,213,142, 30,172, 9,223,155, 16, 31,248, 81, 16, 34, 1, 5, 1,180,233,224, 83,127,131,196,111, 42,221,179,127,161,
+102,205,175,107, 22, 68, 39, 82, 22,181, 98, 48,234,160,168,168,232,142,185,185,121,239,166, 77,155,110,120,239,189,247,172, 94,
+123,237, 53,247,183,222,122,139, 3,128,236,236,108,113,197,138, 21, 25,223,127,255,125,113, 94, 94,222,120,131,193,112,215,148,
+ 7, 94, 66,200,197,117,235,214,229,158, 63,127, 62,172,109,219,182,230,173, 90,181, 18,157,157,157,229,106,181, 90, 72, 77, 77,
+213, 92,186,116, 73,136,141,141,181, 41, 42, 42,138, 5, 16,247, 52,205,247,238,238,238,224, 56,110,190,151,151,215, 23,233,233,
+233,141,159, 71, 31,172,192,192, 64,119, 0,177, 30, 30, 30,129,245,109, 30,252,143, 27,182, 84,138,194,194, 66,148,166,197, 65,
+157,159,135, 70, 18, 53,154,217, 59,194,202,202,234,153,204, 80,113,113, 49,164,186,108,196,223, 73, 70, 81, 86, 18, 66,125, 90,
+194,194,194, 2, 58,157,238,239, 48,232,228, 69, 57, 15,106,108, 34, 12,243, 34,147,237, 20, 88, 49,110,132,159,220,207,199, 19,
+250,220, 27,184, 21, 87,134,207,215,182,142,150,200,173,116, 83,198,246,106,209,173,167, 19,186,116,109, 77, 26,248,216,190,191,
+120,241,170,119,195,188,201, 71, 81, 41,116,165, 41, 63, 28, 21, 71, 19, 66,252,200,154,211,215,210, 39,121, 58,105, 64, 65,113,
+250,122, 38,238,198, 21,174,185,151, 64, 19,234,147,137,176, 64,210, 83, 74,184,237, 84,160, 42, 27, 43,139,210,102,157,131, 29,
+123,118,108,194,245,233,214, 10,114, 41,112,254,202,109, 76, 91,184,231,178,168,160,253,111,220, 48,173,121, 16, 84,252, 15,227,
+244,104,196, 32,255,167, 17,131,148, 82, 10,145, 71, 93,243, 77, 74, 56,146, 85,158,125,221, 85, 97, 21, 10, 67,254, 41,100,103,
+151, 33, 42,222,128,255, 99,239,186,227,163, 40, 30,239,155,221,171, 73, 46,189,222, 37, 33, 64,168, 9, 37,141, 14,210,171, 20,
+ 81, 16, 16, 65, 80, 80, 64, 80, 65,165,137,244,162, 8, 34, 69,154, 10, 88, 64, 58,130,244, 18, 58,132, 4, 66, 73, 32,148, 64,
+218,165,247,114,125,119,126,127, 36,151,111, 8, 41,151,128,141,223,190,207,231, 62,119, 91,238,237,204,206,236,206,155, 55,173,
+ 0,222,200, 78, 76, 4,165, 92,252,220,185,187,106,253,132,184,184,184,184,213,111,212,184,193,154,205,187, 97,208,229,226, 81,
+212, 22, 20,228,165, 96,209,210, 63, 26,120,121,121,117, 78, 76, 76, 60,107,177, 88, 3,105,124,234,244,118, 55, 80,128, 21,201,
+240,231,166,157,200, 16, 89,193,197, 94, 2, 94,155,134,241,227, 70,218,247,123,117,164, 61, 0,196, 63,140, 68, 29, 39,203,116,
+181, 33, 7,175,191, 57,166,137, 3,184, 34,252,188, 63, 82,203, 16,244,249,249,143, 59, 15,187, 6, 59,200,223,236,233,227,184,
+ 96, 99,206, 27, 0,182,215,234,161,228,185,167, 70, 17,214,102,244,224, 46, 74, 57,191,250,228,225,246,147,233,138,161,253,130,
+172, 36, 34, 66,168, 54, 9, 60,145,144,239,214,253,148, 47, 37,216, 36, 20,157, 2, 4, 88,134,162,162,162, 8, 66, 72,139,207,
+ 62,251,108,196,172, 89,179, 94,177,177,177,169, 15, 0,133,133,133,177, 70,163,241, 28,128,237,148, 82,174, 6, 5, 47, 5,240,
+128, 16, 18,251,240,225, 67,247,159,127,254,217, 1,128,188,228,176, 22, 64, 14,128,212,154,112,150,135, 89, 76,169, 84,170, 47,
+ 95,212,125, 48,139, 41, 79, 79,207,134,181,249, 63,203,178, 28,195, 20,175,236, 35,147,201,112,254,252,121,244,237,216, 9,145,
+ 39,227,208,212,221, 27, 93, 71,190,131,253,103,206,128,101, 89,243,249, 53, 42, 71, 68, 34, 17, 46, 92,184,128, 33,253,187, 96,
+255,254,253,240, 13, 9,192,228,201,147,113,244,232, 81,136, 68,194,106,122,127,137,192, 2,197,130, 19,191, 47,145,128, 55, 98,
+247,111, 95,227,196,181, 34,253,189, 36,204,110,146,136, 85,187,145,207,167,101,236,249,224,207,208, 71,203,199,142,233,111,221,
+173,115, 79,116,123,165,171,168, 89, 64,231, 57, 0,190, 43,227,170, 52,175,106,174, 12,206,136,133,155,246,220,125,255,247,195,
+ 49, 4,166,124, 12, 27,216,138,114, 70, 44,172,198,169,121,134,211,222, 90,241,251,133,243,151, 29,193, 21, 32,229,241, 25,185,
+135,123,125,128, 26,113,255,126, 12,214,254,180,159, 15,189,124,239, 23, 61,139, 41, 15,163,104,161,165,156,197,138,202, 4,123,
+133,244,153, 17,131, 14, 86,226,166,189,218,217, 28,161,148, 82, 91,107,113,211,138,230,198, 42,207,169, 53,242,155,126,217,182,
+249,155,119,223,125,207, 38, 83,151,132,152,132, 59,208,178,158, 96,173, 27,224, 78,248, 49,141,198,200, 87, 59,117, 68, 85,247,
+ 51, 35, 35, 35, 45, 34, 60, 11,191,111, 93, 10,163, 81,135,180,228, 98,141,154,156,154, 7, 59, 59,207,203, 53,225, 52,152,248,
+220,215, 7,143,151, 88,201, 97, 53,242,205, 87,165, 15,213, 58, 4, 53,177, 45,206, 22,134, 12,220, 13, 61,143,174,110,197,157,
+ 33, 31,222,101, 81,167,173,202,162,112,218,218, 74,166,244,237,228,137,216,184, 20,156,143, 72,218,246, 40,137,170,125, 61,201,
+182,135,241, 57, 31, 12,234, 90, 7,223,254, 18, 53,185, 50,129, 85, 25,103,201,104,193,142,160, 70, 80,147, 22, 20,232,216,188,
+ 62,105,102,201,200,193,138, 56, 69, 12,222, 90,249,251,147, 47,118,135,166, 15,250,252,189, 78,118, 29,218,245,149,130, 55,210,
+252, 34,157, 49, 42,150,230, 61, 79, 26, 61,135, 59, 41,112, 10,156,255, 73,206, 18,177,243, 75,201,231, 69,114,170, 81,110, 94,
+166,231,141,123,217,230, 64,181, 90,205,170, 84, 42,174,186, 78,238, 22,112, 94, 45, 43,180, 74,220,171, 42, 93,172, 10, 56,213,
+109,218,180,113, 26, 48, 96, 0, 76, 38, 19, 30, 60,120,128,184,184, 56, 12, 24, 59, 6,142,142,142,184, 26, 21,133, 7, 15, 30,
+224,203, 47,191,132,201,100, 66, 88, 88, 88, 98,117,156, 98,177,216, 16, 16, 16, 32,121,237,181,215, 96, 50,153,240,232,209, 35,
+ 60,121,242, 4,147, 39, 79,134,189,189, 61,162,162,162,240,232,209, 35,124,249,229,151,208,233,116,136,141,141, 53,252, 29,121,
+233,255,143,192, 34,224,192, 27,145,123,109, 46, 54, 28,130,193, 96, 66,211, 59, 9,244,113,153, 51,214,183,244, 34, 7,111,222,
+185, 27, 27,113,181,155, 20,121,183, 0,160, 70, 53,135,152, 4,154,220,170,137, 40, 31,166,124, 59,164, 31,193,227,164,252,130,
+152, 4,154, 92, 11,247,130,128, 43, 2,114,195,177,255, 80, 40,100,242, 27,184,118,253, 46,119, 41, 34,230,119,134, 98, 97,212,
+ 99,122,191,230,156, 20,138,224, 85,120,103,224,195,226, 17,131,212, 8,202,155, 96,223, 97, 59,198, 12,108, 95,167, 85, 83,135,
+ 58,224,141,160,212, 8,199,238,103,128, 47,228, 85,242,133,221,214,109,238, 20, 40,127, 35, 63, 47,163, 77,207,174, 93,108, 92,
+ 27,191,137,220,251, 81,184,115,253,132, 38,252, 86,204,229,176,219,186,205,207,147,144,158,158,158,175,116,239,222, 4,195,222,
+153, 9,131, 46, 7,143,238,252,132,252,188, 20,156,191,168,192,221,248,188,118, 0, 44,118,176, 46,221, 54, 54, 3,128,142, 45,
+ 36,241,118, 82,189,199,168, 33,253, 33, 19,105,193, 27,243, 65, 12, 25,120,152,101,200,125, 99,110, 34, 7, 0,214,114, 34,178,
+ 17,229,218, 89,194,235,239,235,220,200, 90, 98,196,207, 7,238,128, 39,197,203, 44,241, 4,235,127, 62,248,240,131,133, 31, 6,
+193,223,215, 49,192,220, 0,111,113, 58, 1,147,194,255,152,223, 84,123,103, 14, 40,111,196,133,229,142, 77, 59,125,150, 61, 9,
+181,156, 97,253,214, 67,154, 4,224, 3, 63, 31,178,241,163,197, 71,231,132, 52,143,234, 56,237,131, 65,118, 32,194,194,232, 2,
+ 4, 8,248, 71,156,192,247,167, 79,159,190,145,101, 89, 87, 0,132, 82, 10,157, 78, 39,250,225,135, 31,196, 38,147,137, 97, 89,
+150,147,203,229,166,136,136, 8, 35,207,243,233, 6,131,225,253,234, 56,245,122,253,195,181,107,215, 54, 48, 26,141,165, 35, 14,
+117, 58, 29,126,249,229, 23,232,116, 58,200,100, 50, 40, 20, 10, 60,122,244, 8,132, 16, 3,199,113, 15,133,148,120,145, 2, 11,
+152,223,225,245,185,115, 65, 65, 64, 48,175,156,184, 2, 0,220, 76,164,234,102,222,228,147,102,129,157,231,150,136,178,249, 53,
+ 13,128,150,227,134,180, 10,110,188, 3, 0,116, 60,247,118,109, 34,145,167,213,188, 25,216,186,221,239, 60,165, 34, 19, 71,127,
+ 96, 24,236,209, 2,209, 15, 99,171, 31, 57, 87, 25,212,201, 57, 17,125, 59,218, 83,243, 18, 56,165,205,130, 37,211, 49, 80, 74,
+255,183, 12,221, 23,114,100,100,234,170,237, 77,125,254,134,182, 87,235,230,178,113,199,206, 94, 31,207,241,212,131,101, 72,138,
+214,200,111,122, 94,113, 5, 0,137,137,137,103,253,125,201,241,155, 29,221,123,185,148, 76,179,154,145, 3,100,228,226,120, 98,
+ 98,254,217,218,112,102,107,140,131,102, 45, 63,240,135, 84,196,138, 0, 10,158, 47,142,175,214,192,101,153, 69, 88,203, 70, 68,
+245,217, 15,166, 29, 44, 75,226,170,227,187,122, 43,249,219, 97,159,157,252,244,206,131,236, 31, 30, 39, 22,215,124, 30, 39,210,
+219, 13, 61,201,156,135, 9,249,159,222,126,144,253, 77, 77,251, 77, 16, 96, 93,171,129,115,159,217,247,188,247, 51, 58,142, 70,
+ 2, 24,220,172, 30,233, 57,108,194,154,105,132, 64, 88, 38, 66,128,128,255, 71, 48,187, 88, 12,195, 44,120, 81,156,102, 23, 11,
+192,131, 26,252,231, 42,128, 22, 47, 50,110, 17, 17, 17,153, 0, 50,133, 84,254,107, 65,254,202,105,124, 4,219,188,148,147,121,
+ 78, 58,190, 38,225,108,212,168, 17,125,240,224,129, 69,157, 5,133, 52, 18, 56, 5, 78,129, 83,120, 39,191,144,119,242,243,118,
+206,166,255,223,211,232,101,131,208,236,241,247,128,255, 59, 47,118,255,254,125, 34,220,114, 1, 2, 4, 8,248, 91,223,201,194,
+164,195, 2,158, 2, 35,220, 2, 1, 2, 4, 8, 16, 32, 64,128,128, 23, 11, 2,160,121,133, 82,188, 6,214, 31, 33,164,121,141,
+165,126, 53,252, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,124,156,213,113,191, 44, 77,143, 66, 31, 44,129, 83,224, 20,
+ 56, 5, 78,129, 83,224, 20, 56,255,113,206,151, 13, 66, 19,161, 0, 1, 2, 4, 8, 16, 32, 64,128, 32,176, 4, 8, 16, 32, 64,
+128, 0, 1, 2, 4,129, 37, 64,128, 0, 1, 2, 4, 8, 16, 32, 8, 44, 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32,
+ 64,128, 0, 1, 2, 4, 8,248,215,224, 47, 29, 69, 40, 64,128, 0, 1, 2, 4, 8, 16,240,255, 17, 12, 0, 16, 66,104,201,167,
+179,112, 75, 4, 8, 16, 32, 64,128, 0, 1,127, 55, 94, 54, 45, 82,186, 84, 14,165,148, 16, 66, 40,158,127, 61, 37, 1, 2, 4,
+ 8, 16, 32, 64,128,128, 26,227,101,210, 34, 76, 89,229, 8,160,139,144,188, 2, 4, 8, 16, 32, 64,128,128,127, 2, 47,147, 22,
+121,202,193, 18,146, 86,128, 0, 1, 2, 4, 8, 16,240, 79,225,101,210, 34,194, 40, 66, 1, 2, 4, 8, 16, 32, 64,128,128, 23,
+ 12, 97, 20,161, 0, 1, 2, 4, 8, 16, 32, 64,192, 11,134,224, 96, 9, 16, 32, 64,128, 0, 1, 2, 4,252,151, 4, 22, 33,164,
+185,192, 41,112, 10,156, 2,167,192, 41,112, 10,156, 2,167, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0,
+ 1, 2, 4, 8, 16, 32, 64, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 32, 8,
+ 44, 1, 2, 4, 8, 16, 32, 64,128,128,127, 8, 4, 64,133, 35, 1, 40,165,183, 45, 38,169,197,104,130,234,248, 5, 78,129, 83,
+224, 20, 56, 5, 78,129, 83,224,124,249, 56,171,227,174,137,254,248, 87, 11,172,191,114,162, 81, 66, 72,243, 23,125,163, 4, 78,
+129, 83,224, 20, 56, 5, 78,129, 83,224,124,249, 56, 95, 54, 8, 77,132, 2, 4, 8, 16, 32, 64,128, 0, 1, 47, 24,162,127,234,
+194,132, 16,166,140,192,227, 1, 80,250,156,118,218, 95,193, 41, 64,128,128, 23,131, 87, 2,201,116,169, 68, 60, 86,107, 48,126,
+117,225, 6,253,169, 75, 48,113, 54,241, 88, 38,151,136, 58,233,244,166,175,207, 71,210, 31,106,248,188, 63,181, 40,172,240,172,
+ 63, 63,122,245,234, 53, 30,192, 92, 74, 41,229,121,126,246,169, 83,167,182,189,136,119,189,135,135,199,112, 0,214, 0,192, 48,
+ 76,110, 82, 82,210, 46, 75,254,219,165, 75, 23, 81, 65, 65,193, 19, 0,158, 37,187,238, 71, 68, 68, 52,174,238,152,128,154, 35,
+ 60, 60,156,250,248,248,160, 69,139, 22,247, 82, 82, 82,214, 80, 74,215, 11,119,229, 95, 36,176,154,184, 89,181,173,235,237,250,
+234,145,240,184,217,213, 61,112,158,158,158,203, 92, 93, 93, 39, 20, 21, 21,105, 1, 80,134, 97,168,159,159, 31, 8, 33, 48,191,
+ 55, 57,142, 75,191,123,247,110,115, 75, 31,226, 23,197,217,184,113,227,112,134, 97,188,202,190,191,171,251,205,243,124, 98, 84,
+ 84, 84, 72,117,225, 84, 42,149,189, 25,134,153, 81,221,121, 60,207, 47, 75, 78, 78, 62, 86,213, 57, 45, 90,180,184,110, 99, 99,
+227,206, 48, 76,165,171,143,151, 45,115, 76, 38, 19, 45, 42, 42, 74,189,115,231, 78, 80, 77,211,214,211,211,115, 54,165, 52, 8,
+192,214,228,228,228,195,148, 82,238,121,242,138,167,167,231, 27,148,210, 47, 74,238,225,162,164,164,164, 61, 53,249,127,163, 70,
+141,194, 37, 18,137, 23,203,178,164,124,154, 84,180,205,243, 60,213,235,245,137,247,238,221, 11, 17, 30,251,191, 31,237, 3, 73,
+219, 38,245,148, 95,126,248, 86, 87,124,186,236,247, 15, 59,182, 32, 25, 86, 54,146,245,111,116,108,224,224,239,235,128, 5, 27,
+ 47, 79, 1, 96,177,192, 34,132, 16,111,111,239, 64,119,119,247,122, 26,141,134, 3,128,102,205,154, 81,150,101,159, 58,207, 96,
+ 48, 24,238,222,189,123, 88, 72, 1, 11, 11, 4,145,232,203,131, 7, 15, 42,121,158, 71,191,126,253,230, 1,216,246, 2,104,137,
+ 76, 38,179,122,252,248, 49,140, 70, 35,227,227,227,163,168, 97, 25,229, 18, 17, 17, 1,131,193,160,111,215,174,157, 79,217, 99,
+ 82,169,212,229,210,165, 75, 0,160, 15, 14, 14,246,169,109, 0,253,253,253,109,108,172,172,166,178,132,244,224, 40,109, 10, 0,
+ 44, 33,119, 57, 74, 79, 22,106, 52, 43,163,162,162, 10, 95,246,180, 63,113,226, 4,198,143, 31,143, 91,183,110, 53, 57,124,248,
+240,247, 42,149,106, 82,114,114,114, 87, 74,105,186,240,100,252,195, 2,171,161, 82,209,196,195,197,249,208, 87,139,231, 3,192,
+236,170,132,144, 82,169,252,170, 83,167, 78, 99,127,253,245, 87,155,125,251,246,217,212,171, 87, 15, 18,137, 4, 44,203,130,101,
+ 89, 48, 12, 3,150,101, 49,104,208, 32, 98,169,184, 42,203,121,234,212, 41,155,198,141, 27,151, 22,178,148,210, 82,145,213,175,
+ 95,191,106, 57, 25,134,241,186,126,253,186,155, 92, 46, 47,253, 63,207,243, 79,125, 40,165,165, 31,142,227,208,169, 83, 39,139,
+238, 19,195, 48, 51,162,163,163, 95, 41, 44, 44,124,138,195,124, 13,243,239, 87, 94,121, 5, 0,142, 85,195,165,186,120,254,148,
+ 27, 49,196, 2,166, 44, 80,214, 9,144,214, 7, 24, 89,133,231,103,101,101,161,107,215,174,108,109,210,215,213,213,117, 84,104,
+104,104,195,199,143, 31,191,182,100,201,146, 76,149, 74,245, 61,128, 31,213,106,117, 66,109,248, 40,165,139, 98, 99, 99, 27, 81,
+ 74,225,235,235,187, 16, 64,141, 4, 22,203,178, 94, 39, 78,156,112,147, 74,165,165,233, 92,217, 55,199,113, 48, 24, 12,232,211,
+167,143, 73,120,228,255,161, 23, 13,193,194, 97, 3,123, 66, 99,100, 96, 52,154, 92,149,174,182,191, 76, 25,213, 89, 12,170,199,
+182, 63,174,195,104,226,127,170,169,184,234,219,183,175,207,250,245,235, 69,209,209,209, 34, 63, 63, 63,112, 28, 87,250,225,121,
+190, 70,207,165,128, 82,129, 69, 24,134, 65, 82, 82, 18, 20, 10,133,125,215,174, 93,213, 28,199,205, 58,119,238,220,182, 23,125,
+173,242,206, 22, 33,164, 80,173, 86,111,255,187,227, 28, 24, 24,216,201,206,218,250,247,249,115, 63,113,107,218,172, 57,227,236,
+234,140,135, 15, 19, 33, 21,209, 14, 15,239,221,111,179,112,233,119, 31, 4, 6, 6, 14,187,113,227,198,249,151, 45,189,125, 94,
+255,225,123,222,100,152, 80,188,229, 0, 96, 19,242,243,243,241,222,123,239,225,192,129, 3,126,109,219,182, 93, 6, 96,172,240,
+100,252,131, 2,171,129,167,149,167,173,204,230,248,198, 13,107,136, 49, 63,213,177,154, 7,106, 81,167, 78,157,222,254,245,215,
+ 95, 29, 9, 33, 56, 53,249, 93, 56, 24,180, 80,125,249, 53, 28, 93, 92,161,159, 49, 30,182,156, 9, 45, 78, 71,214,228, 33,125,
+138,243,222,189,123,200,202,202,130,171,171, 43,172,173,173, 33,147,201, 32,145, 72, 32,149, 74, 45,229,132, 92, 46,199,137, 19,
+ 39, 32, 18,137, 74, 63, 44,203, 86,184,237,238,238,110,241,189,226,121,126, 89,211,166, 77, 91,198,196,196,216,101,103,103,163,
+ 93,187,118,121,132,144,155,101,132, 71,203,155, 55,111,218, 89,252,146, 50,196,162, 32,126, 3,104,246, 30,192,225,117,112,118,
+195,160, 69,253,167, 10, 25,179, 40,228,184,218,155, 78,233,233,233,134,115,231,206, 33, 48, 48, 16,191,255,254,187,115,118,118,
+246,151, 91,183,110,253, 66,165, 82,205, 86,171,213,203,106, 65,233, 4, 0,247,238,221, 3, 0,199,218,132, 73, 42,149,226,202,
+149, 43,160,148,150,138,114,134, 97,192, 48, 12, 14, 62,112, 65,161,158, 65, 81,234,109, 76, 25,224,131,122,245,234, 61,227,106,
+ 9,248,123,208, 41,128,244, 11, 9,108,222,214,199,187, 14, 66, 47,133, 65, 34, 21, 59, 76, 28,221, 31,182, 10, 17,150,255,248,
+ 39, 31,159,152,245,225,249, 72,186,205,194,103,147, 40,149,202,150,189,122,245,242, 94,191,126,189, 4, 0,110,223,190,141,228,
+228,100,184,185,185, 65, 46,151, 67, 44, 22,131,101, 89, 72, 36, 18,225,230,215, 0,193,193,193,205,122,247,238,109,195,113, 28,
+138,138,138,176, 97,195, 6,123,185, 92,110,223,191,127,127,139,157,172,138,154,237, 0, 52,213,233,116, 26,165, 82,105, 13,128,
+103, 24,166,160,188,179, 5, 0, 74,165,210,166, 2, 74, 19,128,140,224,224, 96, 79, 0,210, 18,190,210, 99,122,189,190,178, 99,
+150,198,185, 67, 72,160,223,225,133,139,230,218,164,164,222,135,189, 93, 10,120, 99, 26,190,255,254,123, 88, 89,217, 97,222,188,
+ 89,162,253, 33,193, 30, 31,127, 50,243, 80,171, 86,173,250, 92,187,118,237,242,203,148,230,188,201, 48, 33, 32,164,125,233,246,
+182, 19,171,161,179, 15, 66,210,188,121, 88,181,106, 21, 26, 53,106,212, 90,120, 50,254, 65,129,213,188,142,189,131,140,136,143,
+255,176,126,165, 20,134, 66,199,123,215, 46,162, 89,223,247,205, 98,225,118,217, 23, 35, 0,198,221,221,125,226,246,237,219,237,
+204,133, 93, 99,194,193, 1, 6,212,245,247,135,181,189, 3, 82, 77, 6, 80,163, 1, 82,137,164,194, 2,209, 18, 78,134, 97, 32,
+ 22,139,159,250, 72,165, 82,148,117, 59, 42,227, 44, 87,155, 3,203,178, 56,113,226, 4,140, 70, 35,134, 12, 25, 82,161,216,170,
+196,161,169,144, 51, 57, 57,249,152,167,167,231, 77, 74,233, 43, 60,207,131, 16,114, 51, 41, 41,169,179,249,184, 82,169,236, 29,
+ 16, 16, 48,131,231,249,101,213,113, 82, 74, 1, 83, 38,104,214,118,216,182,203, 64,222,101, 23, 16,155, 30,224,224,131,219, 15,
+ 82,112, 42,252, 9, 50,178, 10, 16,220,216, 13,189,218,249,130,231,121,139,195, 89, 22, 42,149,170,145,191,191,127, 83,163,209,
+136,115,231,206,129,227, 56,180,104,209, 2, 99,198,140, 97, 86,175, 94, 61, 6,192,178,154,114, 2,136,140,136,136,232,145,146,
+146, 2, 0,183, 44,112,188,110, 87, 36,132,127,254,249,103,104,181,218,103,206,119,236,188, 4,159,190,238,131, 49,147,183,225,
+235,152, 93, 88,183,110, 29,202,119,209,249, 43, 70,192, 8,156, 21,169, 34,140, 25, 58,248, 53,176, 18, 27,220,123,152,136,206,
+109,131,224,230,230,134,155,209, 15, 17,159,148,149, 74, 8,222,233,211, 65,182, 76,163,209,127,113,238, 6,253,177, 58, 78,165,
+ 82, 89,127,211,166, 77,226,178,251, 36, 18, 73,169, 11, 94,214, 13, 47,223,100, 40,164, 81,197,156,193,193,193,205,122,246,236,
+121,126,238,220,185,182,241,241,241,184,120,241, 34,124,124,124,160,209,104, 80, 93,215,182,114,156,207, 52,219, 81, 74,121, 0,
+191,213, 38,156,161,161,161, 38, 0, 94, 21,157, 83,213, 49, 75,226,222,162, 69, 11,107,107,185,124,231,130,133,115,108, 34, 34,
+ 14,163,125,135, 62,176,178,109, 8,147, 33, 17,153, 89, 5,200,126,160,198,210,165, 43,241,197, 23, 51,177,100,241, 66,219,225,
+ 35,199,252,222,174, 93,187, 70,151, 47, 95,214,190, 44,233,206,136, 36,235, 35,195, 47, 77, 0,128,188,232,189,248,104, 68,123,
+228,231, 63,192, 7, 31,204, 65, 82, 82, 18,238,223,191, 31,241,119,134,243,165, 21, 88,132, 16, 74, 41,173, 81, 21,223,203,139,
+200,109, 57,171, 67,223,127,187,204,222, 86, 97,237, 26,126,124, 63,226,226, 82,170,252, 79, 81, 81,145,254,192,129, 3, 56, 62,
+105, 44, 26, 17, 19, 28,191, 92, 14, 55,149, 10,185, 99, 7,161,192,104, 64,131, 35, 97,144, 41, 20,144,218, 40, 44,118, 28,138,
+138,138,244,103,206,156,193,157, 59,119, 32, 18,137,160, 80, 40, 96, 99, 99, 3,153, 76, 86, 42,172,204, 47, 96, 75, 57, 41,165,
+ 16,137, 68,184,125,251, 54,226,226,226,224,224,224,128,139, 23, 47,162, 71,143, 30, 79,137, 43,150,101,159,234,227, 85,131, 12,
+ 95,161,163, 84,210,239,234,152,197, 68, 98, 23,192,233,109,228, 95, 81, 1,142, 35, 97,164,246,224, 41,143, 27, 15, 50,241,254,
+200, 87, 1, 0, 19,191,216,128, 30,109,234,149, 54, 65,214, 4,158,158,158,239,183,108,217,114,229,132, 9, 19, 24, 27, 27, 27,
+232,116, 58,232,116, 58,220,187,119, 15,206,206,206,176,182,182,150,212,242,129,127,172, 82,169, 32,151,203, 65, 41,125, 92, 27,
+ 14, 66, 8,118,238,220, 89,225,177,119, 86, 70, 65, 84,220, 61, 11,235,215,175,135,201,100, 66, 77,243,183,128, 23,245,118,135,
+167,187,135, 23, 24,106,132, 58, 53, 3,131,250,245,130, 72,162,192,147,196, 12, 4,248,251, 42,223, 26,208, 65,201, 18, 19, 62,
+255,106,251, 68, 0, 63, 90,240,188,115,209,209,209,226,200,200, 72,176, 44, 11, 59, 59, 59, 88, 91, 91, 67, 34,145, 64, 38,147,
+149, 10, 43,193,193,170, 26,189,123,247,254,144,231,249, 89, 60,207,103,247,236,217, 83, 53,127,254,124,251,196,196, 68,220,190,
+125, 27,219,183,111,207,160,148,154, 74, 58,187,207,123,222,107, 89,224,108,129, 16, 82,227,126, 78,254,254,254, 18,147, 33,231,
+ 35,123, 43,110,160,136,177,243, 49,229, 21, 60,206, 51, 50, 7, 98, 18,213,171, 41,165, 85,118, 9,144,137,197, 31,174, 90, 62,
+203,221,197,217,128,222,189, 7,226,209,227,108,204,156, 57, 4,121,121, 90,252,250,243, 10, 0, 82, 24, 76, 44,130, 90,247,129,
+ 82,233,141,142,237, 59, 42,207, 93, 56, 55, 17,192,138,151, 37, 15,196,237,125,111, 34, 33,100, 97,157, 58,117,206,110, 88,186,
+180, 97,247,238,221, 1, 0,167, 78,157,194, 79, 35, 70, 96, 30, 48,106, 53, 33,201, 83, 40,157,249,119,133,169, 54, 90,228, 95,
+ 45,176,204, 17,170, 73,196, 8, 33,164,129,187,237,174,249,179, 62,172, 87,167,190,175,199,213, 63,119, 34, 54, 54, 9,169,169,
+217,149, 21,168,148, 16,194, 19, 66,248,250,245,235,195,206,168,133, 61,213,195, 77,169,130,173,147, 51,178,141, 37,206,149,141,
+ 13,164, 54, 10,139, 94,142,101, 57,253,253,253,145,154,154, 10,137, 68, 2,133, 66, 1, 91, 91,219, 82,129,101, 22, 87,150,190,
+112, 9, 33,224,121, 30, 34,145, 8, 55,111,222, 68,199,142, 29,225,237,237,141,223,127,255, 29,189,123,247,126,198,197,170, 77,
+211,147,185,207, 85, 89,231,138, 97,152, 25,150,116,110,127, 10,210, 6, 48,217,190, 9,198,186, 59, 12,212, 14, 58,170, 44,105,
+ 18,164,248, 51, 44, 21, 49,113, 25, 79, 53, 23, 90, 46,158,189, 84,114,185,124,219,194,133, 11,187,133,132,132,192, 96, 48, 0,
+ 0,172,173,173,161,211,233, 32, 22,139, 97, 48, 24,160,209,104,146,254,137,140,107,190,231,199,143, 31, 7, 33,164, 84,232,154,
+155, 10, 11,147, 19, 48,102,202,175,144,138,128,155, 55,111,162,105,211,166, 66,137,250, 15,193, 74, 46,119,150,202,237,193,155,
+180, 16,137,197,168,227, 93, 23, 60,167, 67,118, 94, 17,222,121,115, 0,174,223,138,194,225, 51, 87, 77, 70, 35,191,218, 82,206,
+198,141, 27, 35, 45, 45, 13, 44,203,194,214,214, 22, 54, 54, 54,104,210,164, 9, 18, 18, 18,158,114,177, 4, 84, 14,134, 97,102,
+ 31, 62,124,216,157,101, 89, 15,147,201,132,132,132, 4,220,188,121, 19,107,214,172, 73, 45, 44, 44,236, 18, 17, 17, 17, 83, 11,
+218,202,154,237,158,233,172, 94, 27,103,171, 92,229,175, 97, 29,119,249,201,229, 95, 77,242,106, 17,208,138,200, 89, 69,110,209,
+195,180,142, 97, 87, 47,119,248,226,199,221, 31,186,187,187,119, 79, 77, 77,173,180,242,198, 50, 76,143, 38,205,154, 51, 60,159,
+ 8, 86,210, 20,223,174,252, 20, 89,217,133, 40,200,215, 0,144, 66,111, 20, 65,167, 35,232,218,173, 59,126,223,121, 0,173, 66,
+ 90,177, 44,195,244,122,153, 4, 22, 0,176, 44,187,108,255,254,253, 13,229,114, 57, 22, 47, 94, 12, 91, 91, 91, 92, 89,184, 16,
+ 63, 73, 36,176, 2,176,222, 96,152, 1,224,111, 17, 88,181,209, 34,255, 9, 7,171,166,240,242,242, 90,209,182, 67,155, 87,234,
+251,183,146, 95, 61,186, 23, 15,238,199, 33, 35, 35, 23, 20,208, 84,165, 43, 8, 33, 84, 44, 22,195,237,243, 5,168,211,162, 5,
+138,198,191,129,108,163, 1,190,127, 94,129, 76,161,192,221,158, 65,160,122, 61, 58, 69,167, 90, 42, 92, 40, 33,132, 2,128,139,
+139, 11, 36, 18, 9,228,114, 57,228,114,121,105,223,171,178, 31, 75,197, 16,207,243,200,203,203,195,227,199,143, 49,126,252,120,
+ 88, 91, 91,131, 16,130,212,212, 84,248,248,248,128,101, 89, 36, 37, 37,225,244,233,211,168, 95,191, 62,164, 82,105,141, 50, 67,
+153, 78,237, 45, 61, 61, 61,207, 18, 66, 90,134,135,135,219,133,132,132,160, 70, 14, 22,145, 64, 7, 31,112,240, 2, 79,255,215,
+215,202,104,122,186,242,102, 22, 89,150,192,195,195,195,175,121,243,230,151,215,172, 89,109,235,230,230, 14,158,231, 96, 52, 26,
+145,155,155,135,162,162, 34,212,169, 83, 7, 54, 54, 54,116,249,242,229,132,227,184,127,108, 40,175, 89, 80,153, 29, 68,115,255,
+ 43,134, 97, 48,101, 96, 29,100,103,219,130,101,139,183, 45,141,187,128, 23, 15, 27, 27, 91, 39,145,196, 6, 60, 35,130,189,189,
+ 35, 68, 82, 27,240, 38, 17, 56, 30,176,181,119,193,165,235,247,112,249, 86,254,251,105,153,216,101,193,115, 67,155, 55,111, 78,
+ 89,150,133,155,155, 91,169,152, 18,139,139, 91, 12,221,221,221,145,151,151, 7,150,101, 75,247, 9,168,186, 34,249,228,201, 19,
+ 20, 22, 22,226,202,149, 43,216,185,115,103,122,121,113,213,171, 87,175, 9,214,214,214, 95,104,181,218,197, 71,143, 30,253,190,
+ 42,206,154, 54,219,213,198,249,138,136,136,104, 28, 28, 28, 44,246,114,147, 28, 62,178,119,165,151, 29,119,157,224,201, 56, 32,
+ 38, 47, 90, 17,230,214,190,123,235,254,196,127,193,199, 62,131,230,172, 60, 66, 8,241,171,108,196, 51, 5,154,203,173,228, 0,
+ 37,184,120,225,104,113,179, 96, 86, 62, 10, 10,181,208, 25, 88,232,244, 4, 90, 3, 65,247, 30,125,176,233,199, 29, 72, 78,203,
+ 6, 5, 90,188,108,249,160, 81,163, 70,193,158,158,158,248,248,227,143,161,221,190, 29, 5, 0,250, 3,216, 95, 82,169,182, 5,
+166, 9, 79,203,223, 40,176,188,188,188, 62, 12, 8, 8,120,111,243,214, 95, 21, 95,205,249, 60, 47, 59,250, 22,171,215, 24,108,
+116, 70,163,254, 97,114,230,234,170, 94,142, 77,155, 54, 45,174,117, 58, 56,194,218,206, 30,186,114,206, 21,213,235,193, 27,244,
+144, 88,248,114, 52,115, 82, 74, 97,101,101, 5,169, 84, 90,161,115, 85, 19, 7, 11, 0,114,114,114,176,115,231, 78,180,110,221,
+ 26,214,214,214, 96, 89, 22, 45, 91,182, 68,116,116, 52,124,125,125, 1, 0,251,247,239,199,235,175,191,142, 7, 15, 30,192,207,
+207,175, 38, 67,143, 75,155, 8,143, 31, 63,110, 71, 41,125,133, 82,138,244,244,218,141,134,229, 56, 14,133,133,133, 56,126,252,
+ 56,212,106, 53, 60, 60, 60,144,155,107, 11, 59, 21, 95, 42, 22,205, 31, 11, 95,188,159,191,251,238,187,182, 10,133, 2, 28,103,
+130, 88, 44, 46, 21,174, 98,177, 4,247,238,221,195,136, 17, 35,114,159, 60,121,242, 89,109, 70,253, 16, 66,136,151,151,210, 61,
+ 55, 55, 27,249,121, 57, 96, 89,120, 19, 66,216,218, 76,253,192, 48, 76,233,183,249, 67, 8,129, 68,204,194,195,221,181,180,227,
+123,137,123, 39, 52, 17,254,125,133,183, 13,128, 97, 0,222,238,210,218, 94,148,149,175, 1, 76,122, 60,126,242, 24, 57,133, 6,
+ 80,147, 17,241,137,201, 40,212,241,200,204,202, 71, 64,112,239, 53,103,206,156,153, 77, 8,153, 69, 41, 61,100, 73,158,191,118,
+237, 26,206,157, 59,135, 11, 23, 46,192,220, 81, 26, 0,236,236,236,112,226,196, 9,116,237,218, 85, 72,136, 42, 96, 48, 24, 22,
+247,234,213,107,150,135,135,135,124,197,138, 21,246,117,234,212, 1, 33, 36,175,188,115, 21, 18, 18, 50,123,198,140, 25,202, 33,
+ 67,134, 76, 1,240,125, 45, 47, 87, 85,103,245, 42,203,168,138,166, 98, 72, 75, 75,153,176,113,219, 24, 87, 27,241, 99, 53,158,
+124, 91, 34,190, 88,160, 40, 15, 56,243, 43, 36,175, 44,120, 50,178,219, 68, 55,117,254,234,119, 1,108,170, 36,147,242,247, 98,
+226,176,110,221, 42,124,241,197, 68,108,255,117, 21,120, 42, 65,126,161, 17,238,170, 64,232,141, 60, 8, 35, 70,187,246,157,112,
+225,210, 85,128, 51, 96,202,248,203, 47,221, 92,107,247,239,223, 15,139,139,139,107, 58,103,206, 28,108,241,244,132,173,173, 45,
+166,206,157,123,217,100, 50,181, 23,158,146, 23, 32,176,106, 98,201,121,121,121, 13, 86, 42,149, 95,253,250,235,175, 86,106,181,
+ 26,170, 70,205,236, 14,238,222,169,115, 83, 72, 52,201, 89,217,163,111, 36, 21, 84, 59,220,158, 97, 24,152, 22, 78, 69,166, 73,
+143,122, 7, 47, 65,166, 80, 32,166,119, 8,168, 94,143,246, 17, 79, 32, 83, 40, 32,146, 91,213, 56, 50, 21, 57, 86,101, 63,230,
+194,184, 58,232,245,122,135, 30, 61,122,160,123,247,238,120,227,141, 55, 74,155, 2, 3, 3, 3,177, 99,199, 14, 12, 30, 60, 24,
+145,145,145, 80,169, 84,104,210,164, 9,154, 52,105,130, 51,103,206,212, 40,172,102, 7,171,119,239,222,121,132,144,155,148,210,
+150, 97, 97, 97,118, 53,229, 48, 11,168,227,199,143,227,213, 87, 95,133,175,175, 47,174, 95,191,142, 19, 11,150, 67,164,112, 1,
+ 24, 55, 80,158,150, 58, 91,150,244,193,146, 72, 36, 29,235,215,175,143,148,148, 84,200,100, 50, 56, 58, 58,192,202,202, 10, 50,
+153, 28, 75,151, 46,229, 55,109,218,180,150, 16,178, 64,173, 86,103,213, 66,156, 55, 8, 8, 8,248,121,244,168,145,109,156,157,
+ 93,224,238,174,196,140,233, 51,251,108,223,241,251, 29, 79, 79,207,225, 73, 73, 73,183, 44,229, 34,132, 64,175,215,131,101, 89,
+236,143,113, 69,161,158, 32, 47, 49, 2, 31, 13,244, 41, 21, 91,230,166, 94,243,244, 23, 2,254, 30,176, 44,187,101,234,212,169,
+ 93,134, 14, 29, 74, 36,140, 81,127,226,216, 54, 17,199,153,200,167,179,126,224, 66,207,159,101, 56,206, 68,222, 24, 49,141, 63,
+124,250, 22,243,254,148,229, 92, 96,219, 87,113,251,246,109,143,254,253,251, 47, 2, 96,145,192, 50,167,113, 37,215, 23,154, 8,
+171,193,201,147, 39,215, 2, 88,219,171, 87,175, 20,107,107,107, 20, 20, 20, 60,211, 79,209,223,223,223,166, 89,179,102, 18,169,
+ 84,138,224,224, 96,215, 94,189,122,197, 16, 66, 86, 28, 59,118,108,115, 77,174, 85,145,179,245, 60,211, 52,216, 58,113, 3, 90,
+180,106, 98,123,207,102,142,173,149, 88,123,163,110,140,220,142, 0,200,213,120, 60,186,152, 56,188,128, 73, 99, 3, 90,116,243,
+135,173,216,122, 96,101, 2,139, 0, 55, 11,243,243,123, 21,105, 76, 56, 27, 26,137, 33, 67,234, 64,107, 96,160,209, 50, 48, 24,
+ 41, 24, 86, 2,194, 74, 48,122,236,123,208,155,120,228, 36, 39,131, 0,145, 47, 91, 62,224, 56,110,198,160, 65,131, 90, 45, 94,
+188,216,111,234,212,169, 0, 0,149, 74,213, 78,165, 82, 69,253,221,243, 96,189, 76,205,131, 79, 57, 88,213, 69,172, 75,151, 46,
+155,141, 70,227,107, 54, 54, 54,142,239,189,247,158, 33, 35, 35, 3,251,246,237,195, 79, 63,253, 84, 84,104,100,195,115, 50, 77,
+163, 30,169, 11, 18, 45, 41, 20, 25,134,129,196,104, 4, 53,253,207,185,226,117,186, 82, 39, 75,108,101, 93,211,218, 50, 40,165,
+ 21,138, 42,179,147, 85,147,151,173, 76, 38,203,185,112,225,130, 91, 98, 98,226, 83, 29,218,235,213,171, 7, 0, 8, 11, 11,195,
+149, 43, 87, 48,124,248,112,136, 68, 34, 72, 36, 18,220,188,121, 51,191, 38, 97, 54, 11, 30,243, 40, 66,165, 82,217,187, 77,155,
+ 54, 21,142, 30,180,132, 43, 62, 62, 30,190,190,190,208,233,116,112,112,112, 64,102,242, 99,196, 63,142, 69,145, 46, 6,245, 61,
+228, 72, 75, 75,131, 76, 38,179,244,129,227,204, 5,151, 78,167, 67,114,114, 10, 84, 42, 21,126,249,229, 87,108,222,188,121,184,
+ 90,173,222, 85,211, 48, 18, 66, 68, 74,165,114, 90,255,254,253, 23,189,246,218,107,162,162,194, 2, 80,190, 88,240, 72,164, 18,
+124,247,221,119, 77, 78,159, 62,125,195,211,211,115,137, 92, 46, 95,244,240,225, 67,125,117,105, 14, 0, 91,182,108, 1, 0, 88,
+183,157,139, 25, 67,235,226,237,137,219,176, 98,197,222,167,226,202,178, 44,230,207,159, 47,148,168,127, 35,218,182,109, 27, 56,
+107,214, 44,177,185, 79,156,170,206, 98,147,193, 96,224, 1,160,105,203, 87,254,231, 84,246, 6, 30, 60,120,128, 21, 43, 86,160,
+176,176, 16, 34,145,200, 98,155,185, 71,143, 30,232,221,187,119,105, 51,161,139,139, 11, 12, 6, 3, 76, 38,147, 32,174,106,232,
+100,189,250,234,171,179,120,158,167, 60,207,207, 49,239, 15, 14, 14,182,170, 83,167,206,197, 85,171, 86, 57,155, 76, 38, 76,155,
+ 54,205, 33, 35, 35,195, 97,210,164, 73, 51, 1,108,174,164,156,168,201,236,234, 22, 77,211, 80, 81,159, 46, 66, 72,125, 27, 27,
+123,164, 35, 5, 57, 46,198,192, 28,103, 83,214,241,228,247,111,122, 39, 4, 52,181,226,140,190, 76,158, 30,246, 86,118, 0, 79,
+ 27, 85,250,158,227,249,227,209,119,162,186,123,121,250,178, 7, 14,134,226,213, 1,131,161,213, 19,104, 13, 12, 8, 43, 6, 97,
+ 37,104,213,166, 61,234,249, 54, 6,207, 3, 81,145, 17, 6, 35,207, 31,121,153,210,222,231,245, 31,190,247, 26,176,110, 2, 0,
+ 76,251,238, 20,102, 47,252, 22, 35,223,232,141, 49, 99,198,252, 99,243, 96,189,180,125,176,170, 16, 87,239, 56, 58, 58,142, 24,
+ 59,118,172, 85, 88, 88, 24, 22, 46, 92, 40, 58,113,226,132,225,218,181,107, 38,142,227,166, 37, 37, 37,109,172,201, 69, 25,134,
+ 65,253, 95,255,132,202,195, 3,247,251,180,122,202,185, 58,219,210, 11,188, 78,135,158,177,185, 53,142,140,185, 41,203, 44,172,
+204,226,170,178,169, 20,170,169,129, 87, 56,239,213, 7, 31,124,128,205,155, 55,163,125,251,246,104,216,176, 33, 68, 34, 81,105,
+179, 84,109, 28, 44, 51,106, 60,122,176, 92,109,190, 78,157, 58,184,117,235, 22,236,237,237,241,243,207, 63,195,219,203, 19,163,
+122,213,131, 94,175,135,209,104, 68, 97, 97,161,217,193,170, 54,160, 60,207,223,217,183,111,159,239,208,161, 67,169, 72, 36, 34,
+ 58,157, 14, 0,176,122,245,234, 52,181, 90,189,167,166,225,243,244,244,124,163,126,253,250, 63, 14, 31, 62,220,182, 73,147, 38,
+ 72, 77, 77,197,213,171,151, 49,115,230,140,171, 98,177, 72,219,167,111,191, 46,126,126,205, 48,113,226, 68, 38, 48, 48,240,139,
+153, 51,103, 78,243,246,246, 30,147,144,144,176,179, 58,145,181, 99,199, 14, 0,192,187,223,221,133, 94,111, 4, 80, 60,106,208,
+195,195,227,169,115, 31, 62,124, 40,140, 34,252, 27, 97, 50,153, 40,195, 48, 36, 33, 33,193, 96,109,109, 77,156,156,156, 68, 50,
+153, 12, 58,157,174, 84,104, 61,120,240, 0,135, 14, 29, 66, 98, 98, 34,156,156,156, 24,123,123,123,152, 76,166,108, 75,243,124,
+217,209,130,102, 65, 37,136,171,154, 35, 52, 52,116, 45,128,181,101,132,235,120, 66,200,116,133, 66, 97,183,121,243,102, 7, 59,
+ 59, 59,114,232,208, 33,253,134, 13, 27, 10, 88,150,205, 6,176,188,170, 50,229, 69,205,174, 94,153,243, 5, 0,156, 9,247,179,
+ 11, 98,125,196, 10, 37, 31,169, 37,151, 62, 78,152,209, 52,155,105,228, 78,154, 53, 51, 13, 73,187,115,113,148,241, 81,251,244,
+212, 52,194, 81,122,183, 50,238,236,220,220,239,127,220,250,251, 71,251,246,108,171, 35,183,179,198,200,183, 63,196,241,147,231,
+ 33,149, 89,227,106,248, 13,232, 13, 28,158,196, 39, 97,248, 91, 35,161,116,115, 6, 91,164, 78,214,233,245, 27, 95,166,180,127,
+106, 30,172,144,246,184,184,119, 57,118,196,212, 65,210,194,133,255,232, 60, 88, 47,157,131, 85, 25,218,180,105, 99,171,211,233,
+190,251,228,147, 79,172, 10, 11, 11,145,145,145,129,204,204, 76, 92,189,122,245,132,209,104,252,168,170, 81, 26, 21,173,182,109,
+ 30,241,229,228,234, 6,153,194, 22, 84,175, 47,117,174, 36,214, 54,224,117, 58,240, 6, 61, 80, 73,115, 78,101,156,132,144,103,
+ 92, 43, 75,197, 85,121, 78,179, 35, 86,209,164,162,222,222,222, 88,178,100,201, 51,211, 52, 88, 18,206,146, 90, 90,111, 66, 72,
+ 75,179,243, 68, 41,109,169, 84, 42,123, 91, 50,114,176, 50, 78,158,231,209,185,115,103,156, 56,113, 2,183,110,221, 2,195, 48,
+232,219,183, 47, 8, 33,176,183,183,135, 72, 36, 42, 21,115,230, 1, 1, 85,113,114, 28,247,246, 79, 63,253,244,233,145, 35, 71,
+ 62,159, 60,121,178,213, 43,175,188, 98,238,231,149, 94, 50,242,167, 70,225,228,121,126,222,205,155, 55,109, 77, 38, 19, 22, 47,
+ 94,140,240,240,240,194,135, 15, 31,126,146,156,156,252, 35,165,148, 42,149,202,145,143, 30, 61, 94,247,229,151, 95,218,118,235,
+214, 13, 97, 97, 97,114,111,111,239, 47, 1,236,172, 46,238, 87,175, 94, 5,203,178, 48,101,197, 97,226,140,223,161,176, 22,227,
+222,189,123,200,204,204, 44,205,107,149, 53, 37,253,127, 94,181,254,175,230,188,118,237,218,238,181,107,215,126, 48,122,244,104,
+ 9,165,148,139,139,139, 51, 2, 32, 30, 30, 30,236,181,107,215,248, 63,254,248, 3, 26,141, 6, 94, 94, 94,140,167,167, 39, 57,
+113,226, 4, 31, 29, 29,125,149, 82, 58,203,210,112,150, 21, 87, 98,177, 24, 26,141,198, 34,113, 37,164, 81,181,156,115,247,238,
+221,171,212,106,181,144, 74,165,216,181,107,151, 97,219,182,109, 81,121,121,121,157, 34, 34, 34, 52,181,225,172,233, 52, 13,213,
+113,230,103, 51,135, 78, 28,143,106,105,236,250, 3,153,156,146,217,177,180, 96, 38,196,101,151,123,115, 23,121,235,128, 36,197,
+185,111,152, 2, 90,244, 71,101,156, 15, 31, 62,212, 7, 5, 5,189, 62,245,211, 57,103, 22,206,155,107,187,236,235,175,112,251,
+213, 33,200,201, 45,130, 78,207,193, 96,226, 49,111,222, 2,184, 57, 57,192, 81, 98, 40,200,209,144,215,163,162,162, 12, 47, 83,
+186, 63,207, 60, 88,127, 69, 56, 95, 54, 84,171, 62,138,138,138, 22, 54,110,220, 88, 26, 29, 29,141,135, 15, 31, 34, 38, 38, 6,
+ 28,199, 61, 72, 76, 76,236, 95,219,139, 50, 12, 3,123,123,123, 72,165, 82,180,187,149, 4,169, 68, 2,169, 77,113, 31,241,158,
+177,185, 0,165, 96,164,178, 26,115,150,159,243,234,121, 70, 17,113, 28, 87, 58, 67,187, 89,192, 85, 52, 90,173,166,206, 21,195,
+ 48, 51, 46, 95,190,108, 23, 23, 23, 7, 74, 41,246,238,221,107,247,198, 27,111,204,168,141,123, 69, 41, 69,102,102, 38,120,158,
+135, 88, 44, 70,183,110,221, 16, 20, 20,132,130,130, 2,112, 28, 87,218,124, 41,145, 72,106, 52,138, 48, 53, 53,181, 8,192,124,
+ 87, 87,215,141, 95,124,241,197,252,230,205,155,191,247,241,199, 31, 51,168,229,160, 8, 66,136,201,100, 50, 97,215,174, 93,216,
+179,103, 79, 62,165,180,177, 90,173, 78, 41,227,222,253,234,238,238,126, 98,240,224,193, 15, 30, 61,122,100,151,155,155, 11, 20,
+119,138,173, 46,111,162, 97,195,134,224, 56, 14, 95, 77,244, 66,126,126, 11,112, 28, 7,147,201, 4,107,107,235,167,150, 32, 18,
+102,113,255,123,193,113,220, 76, 66,200,209, 37, 75,150,204,152, 50,101, 74,155,209,163, 71,139, 37, 18, 9,159,148,148,100,218,
+190,125, 59,105,212,168, 17, 35, 22,139,201,241,227,199,249,176,176,176, 43, 38,147,233, 43, 74,105,141,150, 34, 41, 43,174,132,
+ 62, 87, 47, 20, 59,135, 14, 29, 58,122,200,144, 33, 86,129,129,129,178,159,126,250, 41,167,176,176,176, 66,113, 85,145,121, 89,
+217, 52, 13, 47, 98, 2,210, 50,239,140,141, 11,230,158,155, 56,178,225,136, 70,239, 57,215,197,201,194, 52,100,139, 89,198,206,
+129, 65,160, 15,139,162,156, 71,110, 39,195,246,198, 36, 39, 39,111,169,138,231,250,245,235,215, 67, 66, 66, 58,191,253,206,187,
+251,198,142, 30,171,250,252,227,143,196,135, 78,156, 1,103,212,225,252,169, 83,112, 81, 48,156,161, 48, 85,157,107,100, 6, 69,
+ 68, 68,188,116,253,175,226,246,190, 55, 17,192, 68, 66,200,240,185,115,231,110,159, 56,113, 34,120,158, 71,104,104, 40,214, 77,
+159,142,121, 28, 55,106, 53, 33, 69, 83, 40,157, 40, 60, 22, 47, 80, 96,181,110,221,186,110, 97, 97,225,207, 70,163, 49,144,231,
+121,233,217,179,103,161,213,106, 17, 29, 29,173,225,121,126,247,243,164,105,223,190,125,153,242,235,197, 85,242,146,182,180,115,
+ 93, 92,143, 30, 61, 94, 24, 39,207,243,137,101,215, 48,171,140,183,236,182,201,100, 74,180, 36,160, 60,207, 47,107,215,174,221,
+ 51,251,106,101,239,242,124,108,247,238,221, 13,229, 69, 87, 69,191,203,196, 63,209, 82,254,244,244,244, 84, 0,239, 43,149,202,
+ 85, 99,198,140,153, 11,224, 65, 45, 5,214, 34, 63, 63,191, 47,138,127,146,133, 73, 73, 73, 41, 21,136,186,116, 79, 79,207,247,
+188,189,189, 75, 23,128,174, 46,238, 61,123,246, 52, 84,183,200,115, 89,231,138,231,249, 68,225,145,255,251, 80, 34,152,206, 19,
+ 66, 58,173, 91,183,110,230, 7, 31,124,208,122,216,176, 97,162,206,157, 59,227,240,225,195, 92,104,104,232, 85,141, 70,179,172,
+166,194,138, 16, 82, 80,254, 25,170, 34, 12, 90, 33, 37,106,134,147, 39, 79, 78,237,208,161,195,220,157, 59,119, 62,241,241,241,
+145, 17, 66, 76, 22,138,171, 23, 62, 77, 67, 21,233,106,242,246,246, 30,240,235,136, 15, 14, 5, 78,126,215,167,119,251, 96,185,
+ 87, 3,165,199,189,184, 76, 36,220, 60,161,121,116,118,221, 99,170,205, 28, 96,137,227, 30, 30, 30, 30,217,160, 65,131,198, 27,
+127,218,252,174,132,101,123,242,148, 6,125, 54,105, 20, 24, 66,174, 27, 56,238, 68, 94,126,254,143,213,245, 9,253,175, 67, 38,
+145,140,154, 52,105, 18,126,249,229, 23,236, 91,181, 10,189, 19, 19,177, 67, 34,129,149, 68,130,245, 6,195, 4, 0,130,192,170,
+ 77,217, 87,217,200,170, 38, 77,154,236,200,202,202, 26,146,151,151,103, 50,153, 76, 28, 33,196, 68, 8,209,240, 60,191,128,231,
+249, 13,212,130, 33, 89,130, 21, 47,112, 10,156, 2,103,153,227,157,236,236,236, 62,230,121, 30, 5, 5, 5,171, 44, 17, 86,194,
+253,252,231, 56,187,117,235,182,146, 97,152, 54, 28,199,109, 61,115,230,204,166,231,225,172, 97,231,119,139,195, 73, 8, 17,121,
+120,120,140,165,142,138,254, 48,138, 26, 82, 3,123,143, 53,100, 29, 74, 78, 78,222, 82, 94, 92, 9,233, 94, 57,103, 76, 76, 12,
+117,114,114, 66, 86, 86, 22,246, 52,105,242,212, 49, 91, 96,125, 69, 14,214, 63,208, 68,216, 10,128,107,201,239, 12, 0,247, 0,
+ 4, 3,176, 2,160, 3, 80, 0,192,165,204,249,153, 37,199,204,199,207, 1, 48,254,221,181,204,191,236, 3,160,185,192, 41,112,
+ 10,156, 2,167,192, 41,112, 10,156, 2,231,115,126, 94, 5, 64, 1,208, 25, 51,102,204,164,148,246,153, 49, 99,198,204, 50,219,
+165,199,139,165, 13,125,181,220,241, 86,127,115,120,193, 64,128, 0, 1, 2, 4, 8, 16, 32,224, 63, 0, 74,105,255,101,203,150,
+ 45, 1,192, 46, 91,182,108, 73,153,109, 80, 74,251,151,253, 46,119,220,245,239, 14, 43, 1,208,188,146, 72, 88,108,253, 17, 66,
+154,215,226, 38,221, 22, 56, 5, 78,129, 83,224, 20, 56, 5, 78,129,243,255, 23,103,117,220,149,252,255, 85, 66,200, 33, 74,105,
+255,178,223,101,133, 87, 9,231,161,178,191,203, 29,255,243,239, 86,131, 66, 19,161,192, 41,112, 10,156, 2,167,192, 41,112, 10,
+156,255,250, 38,194,170,190, 43,251, 93,102,223,223,218, 68, 88,249,176,251,221,187,217, 36, 63,216, 73,173,172, 37, 0,160,215,
+ 20, 25, 60,163,145,135, 33, 67, 56, 8, 16, 32, 64,128, 0, 1, 2, 4,252,205, 32,132, 28,154, 49, 99,198,172,255, 66, 88, 69,
+149,137,171,140, 16,107, 23,145, 46,187, 49,103, 50, 52, 5, 0, 17, 67,239,102,132, 56,198,184,236,222,157,241,162, 69, 86,223,
+190,125,103, 81, 74,221,197, 98,241,159, 30, 30, 30,161, 27, 55,110, 52, 10,217,232, 31, 65,181,125,242,130,131,131, 29,117, 58,
+221,114,158,231,187,149,172,243, 23, 42,145, 72, 62,189,113,227, 70, 22,128, 74,135, 68,251,248,248,108,247,245,245,109, 76,139,
+ 1, 0, 79,205,203,101,222,103, 62, 30, 31, 31,127, 63, 33, 33,225, 45, 75, 3, 94,167, 78,157,122,114,185,252, 29, 66,136, 95,
+ 9, 79,180, 86,171,221, 26, 31, 31,255,248,255, 91, 34,170, 84, 42, 43, 74,233,107, 98,177,120,180,147,147, 83,235,244,244,244,
+121, 73, 73, 73,223,214,242,101, 38, 2, 48,205,193,193, 97,184,131,131, 67,253,172,172,172, 71,121,121,121, 59, 1,172,160,148,
+ 86,251,156, 46,252,208,179,237, 43,253, 58,207, 57,119,248,236,194, 57,107,147,174,148, 63, 62,255, 83,149,115,183,238, 29,230,
+ 28,249,243,210,130, 37,107,147,178,106, 24, 54,166, 76,158,229,205,217,231, 95,156, 46,129, 0,166,115, 28, 39,102, 24,230,219,
+228,228,228, 11,255,246,188,212,180,105,211,207,165, 82,233, 4,134, 97, 30,165,166,166,142, 85,171,213, 47,100,170, 19, 66, 8,
+227,227,227, 99, 27, 23, 23,151,111,201, 84, 10, 2,138,209,174, 93,187, 84,131,193,224, 86,213, 57, 18,137, 36,237,242,229,203,
+238, 47, 97,244, 51,204, 77,127, 0,210, 0,176, 37,219,250,146,239,212, 50,251, 82, 43, 57,254,207, 11,172, 36, 63,216,137,116,
+217,141, 51, 83,163,134,165, 39,223,120, 19, 0, 92,149,129, 59,157,221,253,127, 79,242,147, 26, 90, 53,125, 93, 33,182, 22,125,
+207,178,226, 64,173, 94,231, 34, 22,137, 51, 12, 38,227, 13, 70, 79, 39, 38,223,221, 27,111,201,133, 7, 12, 24,208, 24,128,125,
+ 80, 80,208, 53,189, 94,223,250,219,111,191, 85,238,217,179,167,101, 68, 68,196,136,129, 3, 7, 30,164,148, 30, 59,120,240,160,
+166, 70, 15,109,151, 46, 34,183, 28,167, 81,172, 72, 52, 0, 64, 75, 74, 1, 16,246, 38,111, 52,252,153,230,152,185,149, 22,207,
+209, 82,187,140, 29,236,220,152,240,134,207,196, 44,237,100,228,200,121,202, 72,150, 95,142,200,140,177, 92, 0,168,122, 72, 69,
+228, 7, 0,208,155,232,123,241,241,234,147,207,115, 94, 37, 47,240,158, 0,126, 37,132,136, 1,172,231, 56,110,127,106,106,106,
+ 36,165,212,244, 34, 50,139,191,191,191, 43, 33,228,230,202,149, 43,157,219,180,105,195,242, 60,143,211,167, 79,191,245,197, 23,
+ 95,244,110,214,172, 89,243, 59,119,238,164, 85,246, 95, 95, 95,223,198,167, 78,157, 10, 56,122,244, 40,218,183,111, 15,158,231,
+193,243, 60, 28, 28, 28,240,199, 31,127,160, 77,155, 54,165,251,220,221,221,209,185,115,103,139,195,229,235,235,251, 90, 96, 80,
+171, 41,159,124, 54,221,221,205,217,197,214,196,153, 12, 73, 73,201,170, 85,223,126,213,214,215,215,247,251, 71,143, 30,237,175,
+ 69, 1, 64,188,188,188,134,137,197,226,254, 0,252, 74,118, 71, 27,141,198, 67,137,137,137,191, 91, 90,144, 7, 4, 4,156, 99,
+ 24,166,110, 77,174,205,113, 92,252,205,155, 55, 59,214, 38,141, 60, 61, 61,135,122,122,122,254,212,182,109, 91,235,192,192, 64,
+ 72, 36, 18,124,253,245,215,211, 0,124,107,137,144,178,182,182, 30,102, 99, 99,227, 91, 80, 80,240, 80,163,209,236,145, 74,165,
+ 61,190,251,238, 59,239, 14, 29, 58,216,166,166,166, 18,150,101,221, 15, 30, 60, 56,106,205,154, 53,189, 9, 33,221,171,203, 91,
+217,143,248, 57, 50,113,211, 78,217, 15,207,204, 1,208,183,252,113,147, 86, 62,154, 21,123,247,103,233,245, 4, 0, 43,106, 82,
+ 64,123,121,121,125,231,238,238, 62, 70,163,209,104, 9, 33,148, 16, 66, 91,180,104, 97, 62, 14, 0,208,235,245,217,247,238,221,
+107, 82, 21, 87,189,118, 78,225, 44,195, 86, 58,119, 19,199,115,137,143, 47,103,133, 60,239,243, 67, 41,253, 56, 50, 50,114,136,
+ 72, 36, 34, 1, 1, 1, 54,132,144,222,150,138, 11,149, 74,213,152, 16, 50,155, 82,122, 45, 57, 57,249,123, 74, 41,231,233,233,
+217,149, 82,250,121, 73,124,191, 78, 74, 74, 58, 83,146, 7,190,111,216,176,225,192, 7, 15, 30,172, 79, 74, 74, 90, 84,219,240,
+ 54,106,212,104,226, 71, 31,125, 52,119,194,132, 9, 86,153,153,153, 62,189,122,245,250, 13, 64,167,231,185, 7,193,193,193,226,
+148,148,148,105, 45, 91,182,156,220,170, 85, 43,101, 84, 84, 84,138, 74,165, 90,237,225,225,177, 34, 34, 34,162, 90,193,222,178,
+101, 75,149, 72, 36, 26, 3, 96, 84, 73, 1,186, 3,192,214,235,215,175, 63,250,255, 32,176, 12, 6,131,219,201, 69,115, 64, 88,
+ 22,242, 78, 61,192,243, 60, 50,150,207,133, 41, 43, 3, 46,139, 86,195,100, 50,161, 71,143, 30,110, 47,105,244,195,254,107, 1,
+174, 80, 96, 73,173,172, 37,156,201,208, 52, 61,249,198,155,173,251,172,182, 7,128,176,163, 83,222,116,246,108,118, 91, 42,178,
+142,145,217,201,247,190, 62,160, 71,224,144,254,157,137,151,210, 13,137,201,105,238, 63,238, 56,214,231,208,177, 51,123, 81, 60,
+ 47, 69,181,200,203,203, 91,236,227,227,227,122,234,212,169, 39, 82,169,212, 74, 46,151,147,161, 67,135, 90,141, 24, 49,194,255,
+244,233,211,190, 71,143, 30, 29, 50,104,208,160,163, 18,137,228,207, 93,187,118, 85,187, 62,153,123,139,193,254, 30, 34,143,221,
+131, 94,235, 91,247,213,158,110, 82, 31, 15, 87,240,188, 28,247, 98, 13,117, 78,156,191,222,231,240,209,227,159,185,249, 15, 30,
+154, 22,181,239,150,165, 55,167,121,115,123, 7, 43,134, 78,181,146,210,225,125, 58,249,215, 27,208,183, 61,169,223,160, 62, 98,
+162, 99,124,207,156,189, 54,166,107,107,219,199, 26, 61,217,161,225,201,202,219,183,115,115,170,226,146,138,200,150,155,119, 30,
+168, 56,142,195,215, 95, 45, 57, 49,123,246,236,210,217,213,205, 31,142,227,240,234,171,131,240,205, 55,223, 64,167,211,161, 85,
+ 96,179, 45,248,223,188, 49,150,224,183,168,168, 40,231,162,162, 34, 28, 61,122,116,102,114,114,242,204, 99,199,142, 37,171, 84,
+170,207,146,147,147,119,188,128,218,253,218,245,235,215, 59,183,110,221,154, 53, 24,138,231, 55,237,208,161, 3, 59,107,214, 44,
+167,165, 75,151,174, 2, 48,188,138,194,133, 30, 61,122, 20, 63,255,252,115,198, 87, 95,125,149, 8, 0, 46, 46, 46,158,111,189,
+245,150,235,175,191,254,154,190,114,229,202, 68, 74, 41,156,157,157,189,134, 13, 27,230,106,105, 80,189,189,189,235, 7,183,106,
+ 51,101,235,150, 45,109,114,179,178,180, 63,172, 92,127, 93, 39,146, 21,249,248, 53,150,204,153,187,200,126,193,151, 51,223,247,
+246,246,190,157,144,144, 16,107,105, 36,149, 74,101,157,186,117,235,238,157, 53,107, 86,243,142, 29, 59,138,221,220,220,144,154,
+154,138,123,247,238, 53,191,120,241,226,107,251,247,239,159,166, 84, 42, 95, 79, 78, 78,174,182, 50, 65, 41,109,116,224,235, 37,
+110, 50,103, 23,240, 70, 35, 28, 91, 4,150, 30, 83,159, 62, 6,222,104, 4,111, 52,194,251,213,215, 74,157,188,174, 93,187,214,
+106, 74,114, 47, 47, 47, 85,227,198,141,127,153, 49, 99,134, 68,167,211,225,198,141, 27,184,124,249, 50,159,150,150,182,172, 58,
+113, 69, 8, 57, 62,119,238, 92,175,142, 29, 59,218,102,100,100,128,227, 56,151,253,251,247, 79, 12, 10, 10,178,243,242,242,146,
+110,219,182,205,188, 66,128,147,175,175,175,211,136, 17, 35,244, 63,255,252,243, 52, 0, 95, 85,230, 92,229, 60,228,231,164,136,
+124,251, 52, 9,121, 7, 41,162, 99,125,166,246, 86, 30,113,240,101, 74,157,172,190, 13, 26,216,214,111,106, 61, 93, 97,215,220,
+ 41, 55,233,196,244,190, 13, 26,108, 62,242,240, 97,181,139,166, 19, 66, 24, 79, 79,207,239,250,245,235,247,214,250,245,235,173,
+163,163,163,173,253,252,252,192,243, 60, 76, 38, 19, 56,142, 51,175,187,137,178, 19, 6, 87, 6,150, 97,189, 46,238,189,227,102,
+101,101, 85,250, 28,154,191, 11, 11, 11,209,123,116,219, 23,242,178,229,121, 94,106,206,215, 38,147, 73, 14, 64, 12,192,210, 9,
+ 44,231, 95,186,116,105,232,145, 35, 71, 70, 46, 90,180,168, 17,128, 15,121,158,159, 19, 29, 29,221, 25, 0,252,252,252,164, 0,
+206,168, 84,170,177, 19, 38, 76,152, 48,105,210, 36,140, 30, 61,122, 14, 33,100,113,109,159,123,169, 84,250,229, 7, 31,124, 96,
+101, 52, 26, 97,101,101, 5,131,193,208,224, 57, 43,104,146,162,162,162, 61,243,231,207,239, 63,104,208, 32,243, 18, 94, 30,231,
+206,157, 91,250,233,167,159,182, 15, 14, 14, 30, 92,153,200, 10, 14, 14, 14, 4,176,160, 97,195,134,189, 71,143, 30,205,118,232,
+208, 1, 5, 5, 5, 56,126,252,248,236,189,123,247,206, 14, 14, 14,190, 4, 96, 78, 68, 68, 68,232,203, 46,178, 88,133, 45,238,
+189,222, 21,190,209,153, 0,128,148,239,139,151,134,180,251,242, 27,193,226,251, 47, 8,172,234, 80, 84, 84, 20, 52,115,202, 40,
+ 48, 76,113, 45,177, 97,253, 58, 88, 58,107, 60, 57,112,232, 88, 80, 53,246,230, 74,142,227, 26, 57, 57, 57,125,166,213,106,229,
+171, 86,173,146, 39, 37, 37, 53,221,179,103, 15,141,140,140,132, 68, 34,129,189,189, 61,186,117,235, 38,235,211,167, 79,131, 75,
+151, 46,213,217,187,119,239,160, 87, 95,125,117,235,159,127,254,121,176, 50, 94,151, 22, 3, 27,185,187,122,156,253,102,209, 56,
+167,230,245,125,161, 55, 26,145,152,150, 4, 10, 41, 60,220,108, 48,242,181, 0, 73,135, 16, 73,195, 21,235, 78,133,186, 55, 31,
+244, 74,234,237, 3,119,170,139, 99,167, 96,155,176,193,157, 27, 4, 15,236,221,158,105,232,231, 15,137,204,186,244, 88,139,160,
+ 32,180, 8, 10, 34,227,199,231,215,143,188, 30,249,197,209, 83, 87,103,117, 10,182,137, 56, 31, 81, 88,249,194,152, 20, 50,243,
+218,105,175,191,241, 38, 26, 55,110,252,212,203,220,252,251,201,147, 39, 32,132, 32, 35, 35, 3, 60,133,180, 22,105,131, 43, 87,
+174, 32, 32, 32, 0,189,122,245,194,240,225,195,149,251,247,239,255,109,237,218,181,157, 1,140,127,158,204,194,113, 92,135,160,
+160, 32,214, 96, 48,128,101, 89,100,102,102, 34, 54, 54, 22,190,190,190, 44,199,113, 93,170, 17, 26,104,223,190, 61,190,250,234,
+171,196,179,103,207, 6, 1,192, 43,175,188,114,189, 77,155, 54,174, 43, 87,174, 76, 60,127,254,124,112,137, 96,139, 8, 9, 9,
+177,120, 56,173,181,181,245,187, 31,127,242,169,107,110, 86,182,198,152,159,111, 80,240,156,201, 78, 46, 38,121,233,153, 57,143,
+ 19,236,138,222,157, 48, 69,244,229,140,169,239, 2,176,168,205, 94,169, 84,214,105,218,180,105,216,230,205,155,221,156,157,157,
+145,147,147,131,204,204, 76,132,133,133,129,231,121,244,233,211, 71, 22,212,178,101,208,138,149, 43, 47, 43,149,202,118,150,136,
+ 44,153,179, 11,246,116, 46,126, 52,134, 62,202, 44,117, 88,142, 14, 31, 80,122,206,136,184, 92, 0,128, 92, 46,175,245,178, 62,
+148,210,118, 29, 58,116,144, 0,192,180,105,211,242, 10, 11, 11,151, 18, 66,126, 83,171,213, 73,213,252,117,218, 23, 95,124,225,
+ 89,191,126,125,159,223,126,251, 13, 5, 5, 5, 0,224, 86,191,126,125, 52,106,212,136, 59,123,246, 44, 26, 55,110, 12, 91, 91,
+ 91,156, 61,123, 22, 87,174, 92, 65, 96, 96,160,173, 68, 34,121,179, 50,129,245, 74,191,206,115,100,226,166,157,154,132,188, 3,
+133,157, 18,155,183,255,142,123,225, 91, 59,233,140,119,231,204,250,208,243,109,150,202,222,241,108,164,152, 81, 47,164,139,115,
+195,102,131, 80, 55,248,134,139,142, 59, 23, 59,103,146,239, 50,145, 92,187,109,238, 55,234,204,202,196,149,135,135,199,242,190,
+125,251, 14, 93,191,126,189, 3, 0,220,186,117, 11, 41, 41, 41,112,117,117,133, 92, 46,135, 88, 44,134, 72, 36,170,209, 82, 89,
+ 86, 86, 86, 72, 78, 78,134,185,226,192,113, 28,242,243,243, 75, 23, 13,159, 63,159, 48,115,231, 90,230, 54, 41,149,202,142, 65,
+ 65, 65,191,122,121,121,121,151,221,223,183,111, 95,140, 31, 63, 30,133,133,133, 8, 12, 12,236,224,238,238,174, 27, 55,110, 28,
+120,158, 71,106,106,106,193,173, 91,183,122, 38, 37, 37, 93,173, 36,222,154,148,148, 20, 76,152, 48, 1,241,241,241,147, 84, 42,
+ 85, 28,195, 48,114,169, 84,106, 62, 46, 85,169, 84,141, 27, 55,110,252,221,184,113,227,240,228,201, 19,196,196,196,132, 61, 79,
+165, 74, 38,147, 21,114, 28,231,102, 50,153,160,209,104,208,167, 79, 31,121,211,166, 77, 83,197, 98,241,221,156,156,156,145, 9,
+ 9, 9,201, 22,186,141, 34,165, 82,233, 33, 22,139,215, 79,153, 50,165, 95,231,206,157,113,247,238, 93, 28, 61,122, 20, 3, 7,
+ 14, 68,151, 46, 93, 48,123,246,236, 87,231,204,153, 51, 13, 64,101,149,129,221,123,246,236,169,231,229,229, 85,186, 36,146,157,
+157, 29,222,125,247, 93,140, 26, 53, 10,135, 15, 31,110,191,100,201,146, 61, 93,186,116,113, 11,125,142,150,138,255, 2,100, 33,
+237,225, 27,157,137, 71,126,206,197, 14,126,137,208, 50,111,195, 51, 72, 80, 54,255,102,129,165,215, 20, 25, 68, 12,189,235,170,
+ 12,220, 25,118,116, 74,105, 19, 33, 76,244,174,222, 80,100, 40,182,205, 41,242,138, 76,176,146, 49,120,146,156,143,219,143, 50,
+ 42,122,225,223, 46, 87,248,127,178,122,245,106,124,253,245,215,125, 53, 26, 77, 65,108,108,108,114, 65, 65, 65,225,200,145, 35,
+137, 88, 44,198,197,139, 23,241,248,241, 99,180,104,209, 2, 14, 14, 14,232,216,177,163,164, 87,175, 94,222, 99,199,142,125, 27,
+192,193,138, 56,201,208,161,172, 82, 42,251, 99,249,162, 97, 78,132,141, 65, 76,124, 14, 26,120,181,134,179,189, 55,146,210, 11,
+ 16, 17,117, 24, 49, 15,255, 68, 3,175, 58, 24,255, 86, 3,135,111, 55,164, 31, 34,193,239, 55,160, 17,255,235,231, 85,209,144,
+ 80,185,132,107, 53,111,117, 36,184,194,135,160,198,120, 80, 67,202,179,133,187,131, 55,154, 6,184,195, 90,234,202,220,138,254,
+182, 85, 85,113,215,153,232,231,139, 23,206,255,177,101, 96, 48,114,115,115,177,102,205,154, 82, 97, 69, 41, 45,173,113,183,109,
+219, 22, 70,163, 17, 63,254,248, 35,140,124,177,253, 95, 85, 56,203, 97, 68,155, 54,109,126,167,148, 74,173,172,172, 82, 2, 2,
+ 2,124, 62,252,240, 67,209,176, 97,195,160,209,104,198, 41,149,202, 99,201,201,201,251,106,200, 9, 0,168, 91,183,110,199, 46,
+ 93,186, 88,177, 44, 11,131,193,128,220,220, 92, 36, 38, 38, 34, 54, 54, 22, 46, 46, 46, 64,153,254, 91,149,113,150, 95, 11,145,
+ 82, 74,205,241, 47, 43,196,204,247,197,146,112, 18, 66,154, 58, 58, 56,218,252,176, 98,125,184,171,140, 37, 46,222, 42, 34,177,
+115, 16, 49, 10, 91, 25,101, 89,141,143,183,202,150, 16,210,180, 18, 65, 82,126,209,112, 82,183,110,221,189, 91,182,108,113, 19,
+139,197,224, 56, 14,174,174,174,136,141,141, 69, 78, 78, 14,242,243,243, 17,123, 55, 26,245,188,188,240,209,248,247,148,243,191,
+ 89,185,151, 16, 18, 82,182, 16,171,112, 49,110,163,177,124,152, 43, 43,136, 96, 73, 56,171,112, 72, 30,171,213,106, 88, 91, 91,
+195,207,207, 79,113,237,218,181,243, 73, 73, 73, 73,213,113,202,229,242, 55, 59,116,232, 96,187,125,251,118, 4, 7, 7,195,222,
+222, 30,103,206,156,193,173, 91,183, 96, 48, 24,152,252,252,124, 40, 20, 10, 44, 91,182, 12,117,234,212, 65,110,110, 46,226,226,
+226,156,197, 98,177, 75,101,156,231, 14,159, 93,152,253,232,204,156, 20,246, 88,159,205,219,127,199,184, 17,195,224, 97,122,116,
+222,177, 1,179,176,239,171,237,191,100,197,222,253,109,108,155, 59, 54,106, 62, 8, 18,169, 2, 31,126,190, 0, 49,183,255,112,
+ 44,202,191, 53,137, 51, 38,120, 3,248,168, 60, 39, 41,190, 65,140, 74,165,122,111,227,198,141,182,230,253, 12,195, 64, 44, 22,
+ 63, 37,172,204,139,177, 87,116, 79, 43,186,159, 28,199,193, 96, 48,192, 96, 48,128,231,121,164,167,167, 35, 63, 63, 31,142,142,
+142,197, 39,204, 5, 8, 8,161,149,172, 66, 95,150,147, 97,152,145,191,255,254,187,183,181,181,245, 51,231, 37, 36, 36, 32, 55,
+ 55, 23, 54, 54, 54,112,112,112,128,209,104,132,201,100,130, 78,167, 83,116,233,210,101, 34,128,171, 21,113,178, 44, 59,117,194,
+132, 9, 29, 14, 29, 58,228,187,104,209, 34, 24, 12,134,229,233,233,233, 48, 11,180,142, 29, 59,182,165,148,222,155, 50,101, 74,
+137, 32,156,111, 44, 40, 40,248,160,182,121,201,221,221,221,127,192,128, 1,142, 39, 79,158, 68,199,142, 29,161,211,233, 48,113,
+226, 68,187,247,222,123,207,238,210,165, 75,174,171, 86,173,218, 6,160, 71, 85,156,193,193,193,226,212,212,212,233, 35, 71,142,
+156,214,163, 71, 15,251,140,140, 12,200,100, 50,236,220,185, 19, 63,252,240,195, 17,131,193,240,197,158, 61,123, 22,111,218,180,
+169,207,160, 65,131,176,105,211,166, 41,132,144,175, 41,165,124, 5,156, 42,111,111,111,220,188,121, 19,142,142,142,112,113,113,
+ 65,110,110, 46,174, 92,185,130,176,176, 48, 52,109,218, 20,132, 16,199,146, 50,205,244, 60,207, 81, 13, 43, 53,127, 59,103,233,
+ 26,171,101,242, 46, 0,112, 40,158, 97,179,182,225, 36,132,136, 84, 42,213, 32, 7, 7,135, 73,148, 82, 81,118,118,246, 70,107,
+107,235,221,149, 45, 19, 36, 44,244,108,161,192, 34,132,152,211,165, 11,165,244,172,103, 52,242, 50, 66, 28, 99,156,221,253,127,
+119,246,108, 86,124, 19, 77,244, 46, 43,115,140,113, 15, 47,202, 3, 0,131,145,226,210,221,108,220,124,144,138,155,247, 83,160,
+144, 87, 95,235,118,118,118, 70,251,246,237,113,224,192, 1, 36, 36, 36, 40,150, 45, 91,214,200, 96, 48, 24, 6, 12, 24,160,174,
+ 91,183,110,118,199,142, 29, 33, 22,139,113,245,234, 85,228,229,229,129,101, 89, 72,165, 82,240, 60, 95,169,211,230,118,159,123,
+103,244,248, 32, 95, 23, 7, 6, 7, 47, 30, 67,219,166,131, 97, 45, 19, 35, 61, 91, 3,134, 16, 60,124,124, 18, 28,103,131,200,
+187,241,104,215,220, 6,157,218,216,123, 21,156,202, 26, 15, 96,157, 37, 55,200,144, 20, 10,105,221,215, 1,121, 51, 80,253, 67,
+240,250, 36, 80,177, 27, 10,139,228,200,120, 18,135,187, 87,118,131,154,138,170,229, 73, 72, 80,255,164, 82,169, 58,134,142,122,
+231, 29,158,231,241,213, 87, 95,133,222,191,127,191,107,217,115, 26, 52,104,112,102,246,236,217, 93,178,179,179,113,236,216,177,
+173,106,181,122, 75, 77, 18, 83,173, 86,159, 4,224, 84,214,141,185,126,253,250,246, 95,126,249,165,221,219,111,191,141, 93,187,
+118,125, 6, 96, 95, 77, 56,167, 76,153, 34, 62,112,224, 64,111, 43, 43,171, 53,115,230,204, 81,232,245,122, 36, 39, 39, 35, 37,
+ 37,165,212,109,187,115,231, 14, 39, 18,137, 46, 85, 83,248, 87,184,216,116,121,129, 85,102,159,165, 53,239, 2,189,209,168,179,
+241, 86, 25, 7, 12,234,221,226, 86,216,141, 24, 43, 39, 39,166, 69,171, 64,255,187, 15,158, 68,144,226, 38, 24,139,154, 97,188,
+188,188,134,205,157, 59,183,133,157,157, 29,120,158,135,189,189, 61,210,211,211, 75, 5,165, 62, 63, 15,134,188, 92,220,140,139,
+ 69,199, 46,221,208,171, 93, 91,191, 63,141,198, 97, 0,118, 84,197,235,212, 50,168,212,185,218,229,235, 92,186,127,248,147,156,
+ 82, 1,112,184,117, 67,200, 20, 54,104,254,241,204, 90, 63,204,201,201,201,215,125,124,124, 14,247,233,211,167,223,248,241,227,
+153,148,148,148,163,238,238,238, 29, 82, 83, 83,163,170,250,159, 66,161,104,144,145,145,129,252,252,124,216,219,219, 99,213,170,
+ 85,112,115,115, 67, 81, 81, 17,174, 93,187, 70,189,188,188,200,153, 51,103,224,233,233,137,204,204, 76, 24, 12, 6, 20, 21, 21,
+165,232,245,250, 74,251, 72,150, 52, 3,246,157,218, 75,121,228, 94,248,214, 78,158,136,189, 54,228,179, 78,247, 35,195, 98, 18,
+ 78,159,186,184,208,164,149, 39,228, 36,158,152, 94,191, 85,164,203,164,207,230, 99,237,242,185,184,119,245,108,150,123,157,252,
+117, 28,209,109,237,208,187, 74,151, 86, 27, 29, 29,109, 27, 25, 25, 9,134, 97, 96,103,103, 7, 27, 27,155,210,133,205,205,226,
+ 74, 36,178,220,160, 55, 87,112,204,226, 42, 61, 61, 29, 15,227, 98,176,231,244, 54, 24, 77, 70,151, 45,109,236, 82,124, 37,146,
+155, 46,185,100, 86,198,109,122,189,154, 2,112,227,240,225,195,135,121,122,122,218,150,221, 31, 16, 16,128,183,222,122, 11, 71,
+143, 30, 69,120,120,248, 83, 21,172,244,244,244,100,142,227,182, 86,198, 25, 31, 31,159,227,229,229,213,231,189,247,222,139,216,
+183,111,159,221, 55,223,124, 83,186,176,185,185, 89,212,252,189,125,251,118, 68, 68, 68,204, 73, 73, 73,185, 91,155,124,228,225,
+225,209,116,192,128, 1,231,214,173, 91,231,144,154,154,138,140,140, 12, 20, 22, 22, 66, 44, 22,195,100, 50,161, 97,195,134,132,
+227,184,122,213, 53, 7, 50, 12,243,199,233,211,167,123, 55,106,212, 8, 0, 96, 52, 26,113,241,226, 69,140, 31, 63, 62,211,218,
+218,250,205, 39, 79,158, 20,170, 84,170,217,135, 14, 29,234, 19, 16, 16,128, 22, 45, 90,120,164,165,165,217, 2,200,173,236, 29,
+194,113, 92,105,250,252,248,227,143,165,199,180,218,226, 37, 39,245,122, 61,105,213,170, 85,189,107,215,174,189,180,131, 91,226,
+126,217,140, 39,179, 38,195,231,252, 61, 0, 64,132,127,113,151, 43,159,179,209,197, 39,140, 26, 85, 35, 62,149, 74,229, 76, 41,
+ 29,215,163, 71,143,143,251,244,233,227,170, 84, 42,225,236,236,140, 91,183,110,117, 56,118,236,216, 26, 47, 47,175, 13, 28,199,
+109,176,196,173,127, 94,148,215, 34, 47,141,131, 69, 41, 37, 37,145, 35, 24, 50,132,115,217,189, 59, 35,201, 79,106,144,138,172,
+ 99, 0, 64,111, 40, 50,184,135, 23, 21, 79,211,176,112, 59, 40, 40, 56,190,196,109,160, 20,156,133,227, 64,180,119,223, 0,159,
+243, 7,220, 28, 7, 97,211,166,125, 72, 75, 75,147,172, 90,181,170,238,190,125,251,188, 70,142, 28, 25,223,176, 97,195,220,110,
+221,186, 97,219,182,109,240,240,240,128, 94,175, 7,207,243,149,170, 55, 91, 39,110, 72,155, 22, 13,217,152,184, 91, 8,105,244,
+ 6,234, 41, 59,226, 97, 82, 46,178,243,117,200,204,213,160,113,227,207,144,154, 85,132,188, 66, 45,110,221,251, 13, 94,202,250,
+ 12, 43,126,216,199, 82,129,165,123,248, 43,116,177,191, 67,162,236, 10,105,253, 97, 16,187,180, 67,194,189, 80,220, 56,185, 18,
+137,247, 47,128,242, 28,220,189,155, 90, 90, 51,153,183,122,245,234,145, 75,151, 46, 21, 77,158, 60,185,139,167,167,103,151,164,
+164,164, 80, 0,240,244,244,236, 50, 97,194,132, 46,182,182,182, 88,188,120,177,145, 82, 58,239,121, 19, 55, 57, 57, 57,222,211,
+211,115,210,201,147, 39, 35,199,142, 29,139,166, 77,155, 6, 17, 66, 24, 75, 58,214, 54,108,216,112,188, 84, 42, 29, 99, 50,153,
+ 26,141, 24, 49,130, 25, 55,110,156,194,205,205, 13, 79,158, 60,129, 78,167, 3,195, 48,144, 72, 36,184,115,231, 14,255,199, 31,
+127,228, 74, 36,146, 41, 22, 56, 44,112,113,113,241,236,212,169, 83, 4, 0, 56, 57, 57,121,241, 60, 15,103,103,103,175,246,237,
+219, 71, 0,128,163,163,163,103, 69, 66,172, 82, 1,108, 48, 92,139,143,139,107,220,161, 83, 7,229,185,240,168,235,175,191,214,
+191, 43, 35, 98,152,199,113,201,215, 92,157,157,108, 46, 94,186,144,103, 48, 24,174, 89,194, 37, 22,139,251,119,236,216, 81,148,
+157,157, 13,149, 74,133,244,244,116, 36, 37, 37,193,104, 52, 66,155,155, 13, 67, 94, 30, 12,185, 57,160, 69, 5,120,116,237, 42,
+252,188, 61,101,199,139, 59,193,239,168,174,198, 89,145, 67, 69, 8, 41,221, 39,179, 85,192,202,214,182,180,249,163, 6, 47,199,
+ 65,118,118,118,211,243,243,243, 15, 39, 37, 37, 45,210,235,245, 31, 46, 93,186,180,213,130, 5, 11, 92,166, 79,159,110, 55,125,
+250,244, 93,117,235,214, 13,124,242,228,137,174, 82,133, 90, 80,240,208,104, 52, 58, 3,112, 63,117,234, 20, 92, 93, 93,145,151,
+151, 7,163,209, 8,141, 70,163,119,116,116,148,103,102,102, 66,171,213, 66,175,215,195,206,206, 14, 17, 17, 17, 89, 38,147,233,
+ 96,117,225,115,104,192, 44,212, 25,239,206,113,242,183, 73,226,168,115,231,124, 13,159, 61,247, 27,245, 66, 0, 43,250, 54,104,
+176, 89,207,159,141,141,185,125,192, 49,246,218,153, 44,245,253, 34,223,205,127, 62,202,175,226, 62, 82, 66, 8, 79, 8,161, 77,
+154, 52, 65,122,122, 58, 88,150,133,141,141, 13, 20, 10, 5,154, 54,109,138,132,132,132, 90, 11,172,178,226,234,228,229, 67,200,
+ 40, 72,198,230,229,219,225,233,225,205, 0,112, 77, 74, 73,232, 57,118,218,208, 54,245, 59, 58, 46,141,189,144,189,172,138,138,
+206, 13, 0,118,101,247,121,122,122,118,117,116,116, 60,109, 48, 24,240,228,201, 19, 28, 63,126,188, 75, 98, 98, 98,141, 10,144,
+196,196,196, 71,158,158,158,125, 94,123,237,181,109, 45, 90,180,104, 64, 41, 69,211,166, 77, 49,104,208, 32,236,217,179, 7, 81,
+ 81, 81,200,203,203,227,207,159, 63,191, 37, 57, 57,185, 86, 29,114,148, 74,101,147, 87, 95,125,245,194,218,181,107, 29, 51, 50,
+ 50,160,213,106, 81, 80, 80,128,221,187,119,163, 67,135, 14,144,203,229, 88,189,122,117,158,201,100, 90, 91,149,184,162,148, 30,
+216,183,111, 95,111, 95, 95, 95,220,189,123, 23,231,207,159,135,171,171, 43,172,172,172, 48, 96,192, 0,231,223,127,255,253, 67,
+127,127,255,149, 98,177,120, 97,191,126,253,192,113, 28,194,195,195,147,227,226,226,242,171, 74,163, 74,203, 21,173, 22,148, 82,
+ 24,141,198, 85, 12,195,188, 25, 28, 28,220, 43, 34, 34, 34, 12, 47, 9,188,188,188,154,137,197,226,143, 28, 29, 29,145,158,158,
+142, 28, 30, 80,100, 21, 15,186,205, 45,121, 93,102,101,101,149,190,107, 26, 53,106,244,167, 70,163,153,149,152,152, 88,169,203,
+228,233,233,217,210,218,218,250,227, 1, 3, 6,140,124,245,213, 87, 89,131,193,128, 67,135, 14, 97,237,218,181,232,211,167, 15,
+ 26, 54,108,136,207, 62,251,204, 94,167,211,205, 56,122,244,232,116, 63, 63,191,163,249,249,249, 51,171,226,124, 65, 14,222,255,
+180,200,203, 34,176, 74, 34,244,191,126, 52, 67,134,112,158, 64,118, 73,141,198,197,201,201,105, 45,199,113, 93,241,229,151,176,
+ 21,217,227,201,195,251,200,207,230, 97,212,235,192,243, 20,148,183,236, 94,240, 57,127,192,238, 21,138,188,115, 4, 6,131, 1,
+110,110,110, 88,182,108, 25,114,115,115, 69, 99,199,142,173, 55,127,254,252, 27, 90,173, 22,133,133,133,208,104, 52,208,104, 52,
+ 85, 10, 44,137, 92,215,194,199,189, 17,242, 53,173, 97, 45,149, 34, 51, 79,135,236,124, 29, 50,114,180,216,123, 96, 4,116,154,
+ 34,152,244,122,112, 6, 19, 20,238,131,209,208,169, 43,128, 7,205, 45, 76,232,146, 64,155, 96, 72, 58, 1, 67,210, 9, 88, 7,
+204,198,129,213,111, 63,117,158,201,100, 89,147,127,114,114,114,188, 74,165,250,126,204,152, 49, 83, 94,123,237, 53,108,216,176,
+225,107, 0, 33, 37, 46,194,215,131, 7, 15,198,157, 59,119,112,238,220,185,245, 47,170,182, 64, 41,117,118,114,114, 2,195, 48,
+ 40, 42, 42,210, 85, 39,174,118,239,222, 77,230,207,159,127,116,192,128, 1,237, 62,252,240, 67,107, 15, 15, 15, 80, 74,161,215,
+235,145,152,152, 8,134, 97,144,147,147,131, 31,127,252,177, 48, 60, 60,156, 74,165,210, 75, 98,177,248,253, 59,119,238,168,171,
+ 11,139,163,163, 35, 70,140, 24,225,218,186,117,107,215,178, 35, 6,223,124,243, 77,215,144,144,144,210,125, 94, 94, 94, 22,199,
+ 79,171,213,254,184,120,225,156,174,191,252,186,179,105,147,166, 13, 29, 15, 31, 63,115,221,217,217,206,170, 94, 61, 95, 89,110,
+ 78,142,110,237,170,229,162,194,194,194,159, 44,164,243,115,113,113, 65, 74, 74, 10, 30, 60,120, 0,157, 78, 87,220,132, 83, 84,
+ 0,125, 78, 14, 12,185,217,128, 86, 3, 41,199, 65,151,145,138,122,190,245,128,255,141, 48,172,174,102, 86,161,192, 50,127, 91,
+217,219, 65,106, 99, 3, 86, 44,178,184, 15,150, 82,169, 12, 14, 10, 10,218,185,105,211, 38,201,212,169, 83,219,212,173, 91,119,
+109, 74, 74, 74,156,151,151, 87,247,229,203,151,135, 45, 90,180, 72, 54,114,228,200, 38, 27, 55,110, 28, 13, 96, 99, 21,247,112,
+231,225,195,135,223,170, 83,167,142,251,237,219,183,161,213,106,193,243, 60,250,246,237, 11, 0,114,243,121,247,238,221,211,104,
+ 52,154,212, 59,119,238,228,199,197,197, 25, 96,193,168,191, 57,107,147,174, 76, 29,234,245,186, 82,169,186, 44,149,249,212,103,
+138, 34, 6, 79, 29,234,245,205,202, 93,137,218, 35, 15, 31,230,207,153,228,187,172, 40,255,246, 36, 71,175,194,117,235, 14, 62,
+202,183, 36, 75,151,140, 24,132,139,139, 75,105,147,160, 68, 34, 49, 55,109, 33, 55, 55,183,202, 38,194,202, 10,239,220,220, 92,
+228,230,230,226,254,227,187, 72,207, 79,198,137, 29,151,193,113, 92,169, 59,162,114,247,194,201, 29, 97,182, 93,134,180,154,229,
+220,146,156,201,188, 73,175, 89,154, 79, 25,134,249,248,141, 55,222,128,193, 96,192,160, 65,131,176,125,251,246,143, 1,212,184,
+134,158,148,148,116,133, 16,210,232,193,131, 7,118, 70,163,113,224,128, 1, 3,182,246,235,215, 15,151, 47, 95,198,169, 83,167,
+186,232,245,250, 24,142,227, 52, 74,165,114,169, 82,169,116, 35,132, 44, 85,171,213, 85,142,118,110,220,184,241, 72, 91, 91,219,
+197, 86, 86, 86,249,253,250,245, 83,153,157,171,194,194, 66,152, 76, 38, 36, 38, 38,226,200,145, 35,201,135, 15, 31, 78,166,148,
+ 90, 23, 20, 20,204,141,143,143,223, 93, 89,179,160,209,104,220,255,199, 31,127,244,241,245,245,197,217,179,103,241,213, 87, 95,
+161, 65,131, 6,216,178,101, 11,218,183,111,143,122,245,234,193,201,201,233,163,188,188,188,118, 95,125,245, 85,191,160,160, 32,
+236,219,183, 15,105,105,105,107,170,122, 63, 85,245,158,213,104, 52,160,148,162, 91,183,110,227,167, 78,157,138, 1, 3, 6, 28,
+ 15, 9, 9,105, 29, 30, 30,126,255,191, 94, 72,171, 84,170,101, 61,122,244,152,222,178,101, 75,252,250,235,175,208,133,116,132,
+205,150,131,184,221,191, 3, 40, 0,213,150, 3, 0,128,219, 3,139, 7,116,212,235, 62, 4,211,167, 79,239, 55,120,240,224, 58,
+ 0,154, 85,194,249,205,219,111,191, 61,237,237,183,223,198,245,235,215,177,113,227, 70,220,184,113,163,180,204, 51, 26,141,136,
+142,142, 70,116,116, 52,148, 74, 37,250,247,239, 79,222,127,255,253,190,125,251,246,117, 53,151, 89,127,177,139,213,229,165,105,
+ 34,172, 74, 53,122,120,120,184, 56, 58, 58,222, 89,187,118,173,115,155, 54,109, 88,147,201,132, 83,167, 79,227,211,201, 99,209,
+167,255, 36,104,117, 82,152,180, 4,156, 68, 97,217, 21,237,250, 35,239, 28, 1,175,232, 7,189, 94,143,241,219, 37,112, 32,169,
+ 88,245,142, 59, 0, 16,141, 70, 3,157, 78, 7,141, 70,131,194,194, 66, 20, 22, 22,130,227,184, 74,223,146,249, 57, 54, 6,131,
+145, 71, 82, 90, 28, 18,147,111,195, 94, 81, 7,148,241, 70,106, 86, 17, 8,220, 96,212,222, 3, 95,242, 96,234, 52,137, 40,212,
+ 61,159, 40,230,242, 99, 43,112,102, 44,239, 83,201,113,220,226,229,203,151,143, 95,187,118,173,108,210,164, 73,193, 42,149,106,
+ 32, 0, 76,155, 54, 45, 88, 46,151, 99,221,186,117, 58,142,227, 22,191,160,140,202,122,122,122,126,252,202, 43,175, 32, 47, 47,
+ 15,119,238,220, 57, 84,221,127,102,207,158, 61,241,141, 55,222,104, 55,127,254,124,107,173, 86,139,162,162,226,230,207,220,220,
+ 92, 20, 22, 22, 34, 53, 53, 21,211,166, 77,203, 54, 24, 12, 19, 30, 63,126,188,167, 6, 66, 15,127,252,241, 7,126,249,229,151,
+167, 70, 12,190,249,230,155,174,219,183,111, 79, 91,189,122,117, 18,165,148, 58, 57, 57,121, 13, 25, 50,196,205,210, 22, 66,181,
+ 90,173, 81,169, 84, 83, 22, 45, 94,244,219, 55,203,151,187,101,101,102,199, 72,164, 86, 90,107, 43,153,211,244, 79, 23,210,212,
+212,212,105,169,169,169, 69,150,134, 51, 59, 59, 27,177,177,177,176,178,178,130, 68, 34, 1, 87, 84, 0,190,176, 16,186,236, 76,
+ 48,122, 29,100, 28, 7, 39,107, 25,188,221,221, 81,199,205,178,190,248,201,103,142,227,200,176,254, 79, 53, 11, 18, 66,112,180,
+125, 19, 72, 21, 54,144, 43, 20,232,184,255,124,113,133, 65, 34, 1, 86,109,178,164, 25,199, 69,165, 82,253,177,102,205, 26, 73,
+ 70, 70, 6,238,220,185, 19,249,228,201,147, 92, 39, 39, 39, 91,177, 88,204,223,191,127,255,228,189,123,247,250,215,171, 87, 15,
+148,210,234, 70,127,173,216,187,119,111,207, 14, 29, 58,152,234,213,171,103,147,158,158, 94, 39, 59, 59,155, 36, 39, 63,221,135,
+249,218,181,107,242,248,248,248, 34,158,231,247,161,120, 30,172,106, 51,254,212,161, 94,242, 75,215, 49,165,179, 75,189,150,246,
+174, 45,145, 97,188,209,242, 74,100,202,148,169, 67,189, 86,175,220,149,168,229,136,110, 43,103, 76,240, 22,201,181,219, 44,204,
+ 71,212,223,223, 31,148, 82, 92,187,118, 13,231,207,159,199,249,243,231,241,228,201,147,210,115,236,237,237,113,226,196, 9,116,
+237,218,213,226,103,165,168,168, 8, 74,165, 18, 14, 14, 14,216, 23,250, 51,126,248,102,123,105, 71,119, 51, 50, 50, 50, 96,109,
+109,141,197,159,174, 84,140,253,124,200, 66, 0,189, 44,225,246,246,246,174,223,161, 67,135, 87,221,221,221,145,157,157, 13, 87,
+ 87, 87,180,106,213,106,128,187,187,123,189,212,212,212, 90, 53,101,233,245,250,137, 93,187,118, 93, 52,109,218, 52, 24,141, 70,
+ 12, 27, 54, 12,177,177,177, 59, 31, 61,122,180,202,199,199,103,202,164, 73,147,220, 93, 92, 92, 48,113,226, 68, 27, 0,175, 87,
+198,211,180,105,211, 79,102,204,152,177,100,212,168, 81, 50,163,209,136, 83,167, 78,149,186,212, 38,147, 9,113,113,113,152, 59,
+119,110,114, 94, 94, 94,231,196,196,196,135,213,133, 43, 37, 37,101,218,254,253,251,251, 54,110,220, 24, 71,143, 30,197,132, 9,
+ 19,254, 84, 40, 20,205, 94,125,245,213, 58, 54, 54, 54,136,140,140,132,193, 96,128, 82,169,116,159, 49, 99, 70,255,222,189,123,
+227,228,201,147, 88,184,112,225, 33, 15, 15,143, 21,213,137, 96,145, 72, 4, 99,185, 62,141, 44,203,226,198,141, 27,232,214,173,
+ 27,166, 79,159, 14, 0, 56,121,242,164, 93,175, 94,189,110,119,233,210,197, 46, 52, 52, 84,247, 95, 46,164,109,108,108,198,108,
+217,178, 5, 15, 30, 60,192,133, 11, 23,144,153,153, 9,189, 94,143, 92,190,184,207,149,172,196,185,162,158, 62,104, 63,109, 22,
+134,247,127, 29,201,201,201, 96, 24,198,165,138,178, 97,228,172, 89,179,112,228,200, 17, 44, 91,182, 12,121,121,121, 21,158,103,
+101,101,133, 86,173, 90, 33, 48, 48, 16,177,177,177, 0,224,242, 87,199,247,165,116,176,170,112, 29, 86,125,255,253,247,206, 29,
+ 58,116, 96, 11, 11, 11,193,243, 60,218,181,109,139,209,239,140,198,177,125,187,161,172,223, 21,172,214, 10, 38, 91,107,203, 4,
+134,247, 86,100,101,101, 65, 38,147, 65, 94,210,161,244,102, 98,169,189, 11,173, 86, 91, 42,174,204,223, 85,193,164,151, 70, 68,
+ 63,226,188,243, 10,110,224,106,196, 47, 48,234,245,168,215,104, 38,116, 38, 23,216,184,189, 11,141,225, 15, 24,114,138, 71,238,
+ 74,237,186, 32, 53, 53, 3, 0,185,109, 97, 66, 63, 43,166, 52,207,118,118,231, 57,203, 5, 86,106,106,106,186, 82,169, 92,113,
+227,198,141,217,125,251,246,197, 15, 63,252,176,140, 82,138,126,253,250,225,218,181,107,136,140,140, 92,145,154,154,154,254, 2,
+196,149,200,195,195,227,199,117,235,214,245,115,119,119,199,222,189,123, 65, 41,173, 86, 16, 73,165,210,113, 83,166, 76,177, 54,
+187, 24, 82,169, 20, 26,141, 6, 41, 41, 41, 48, 24, 12,216,183,111,159, 78,175,215, 79,125,242,228,201,158, 26, 62, 52,180,117,
+235,214, 88,185,114,101,226,133, 11, 23,130, 1,160,125,251,246, 17, 33, 33, 33,174,171, 87,175, 78,186,114,229, 74, 48, 0,180,
+105,211, 38, 60, 48, 48,176, 70,243,184,168,213,234,196,198,141, 27, 63,212,104,181, 98, 71,103,167, 34, 91, 27, 41,205,203,207,
+103,110,222,188,158,156,154,154,250,164, 6, 84,209,119,238,220,105,158,148,148,132,184,184, 56,112, 69, 5, 96,116, 58, 16,157,
+ 6,221,219,181,133, 21, 40,100,224, 33,225,141, 16,179, 34,228,231, 23, 0, 64,116,181,174,109,153, 2,193, 44,174, 8, 33,144,
+ 43, 20,144,218, 42, 32, 83, 40,158,114,180, 44, 17,151, 86, 86, 86,191,109,220,184, 81,169, 84, 42,241,237,183,223, 66,169, 84,
+ 54,237,209,163, 71, 81,231,206,157,173, 92, 92, 92,208,184,113, 99,132,132,132,224,204,153, 51, 32,132, 60,172, 38,109, 76,132,
+144, 94, 23, 46, 92,152,118,233,210,165,161, 42,149,138,140, 26, 53, 10,125,250,244,129, 76, 38,131, 70,163, 65,118,118, 54,254,
+252,243, 79,194,113, 92, 80,137,192,243,169, 91,183,238,118, 66, 72,226,227,199,143,223, 44,207,185, 97,113, 75, 85,190,134, 31,
+171,244, 80,189,222,185,119,189, 22,221,122,247, 64,253, 70,221,209,173,119, 2, 0, 44,115, 17, 63, 30,246,245,236,230,251,234,
+121, 59,109,185,180,255,228,151, 29,251,118,253, 98,254, 20,167,133,115, 87,103, 89, 50, 77, 67,105, 97,203, 48, 76,133, 46, 21,
+203,178, 96, 24,203,214,178,231,120, 46,177,207, 59,237, 74,183,141, 38,131,139,167,135, 55, 99,118,174, 0, 32, 47, 47, 15,241,
+241,241, 48, 26,141,112,118,118,134,209,104,104, 89,131, 74,213,148, 97,195,134, 17,173, 86,139,105,211,166, 97,249,242,229, 24,
+ 52,104, 16,185,122,245,234, 20, 0, 31,215,194,209, 88, 62,113,226,196,105, 99,198,140, 65, 78, 78, 14, 78,159, 62,141,174, 93,
+187,226,251,239,191,119, 61,125,250,244,146,246,237,219,131,101, 89,156, 56,113, 2, 6,131,225, 94, 53,207,251,228, 81,163, 70,
+201, 18, 18, 18, 32,145, 72, 16, 18, 18,130,196,196, 68, 20, 22, 22, 34, 45, 45, 13, 11, 22, 44, 72,201,205,205,237,146,148,148,
+244,208,130,116, 97, 58,117,234,244, 81,195,134, 13,113,234,212, 41, 76,156, 56,241,136,141,141,205,235,217,217,217,239,235,116,
+186,213,253,251,247, 71,251,246,237,113,239,222, 61, 12, 24, 48, 0,173, 90,181,194,233,211,167, 49,125,250,244, 63,173,173,173,
+223,168,102, 30,172,251,161,161,161,205, 67, 66, 66, 80, 88, 88,136,252,252,124,136,197, 98, 56, 56, 56, 32, 58, 58, 26,141, 26,
+ 53,194,244,233,211,177,114,229, 74, 76,157, 58,149,239,213,171,151,201, 96, 48, 72,204,163, 44,255,203, 40, 44, 44,164,201,201,
+201,176,179,179,195,174, 93,187,112,235,228, 49, 28,158,252, 46,228, 95, 44, 7,165, 20,137,139,102,160,219,231, 95,160,109,228,
+ 35, 36, 39, 39, 99,219,182,109, 96, 24,166,116, 68,108,101,101, 91,110,110, 46, 2, 3, 3,113,237,218, 53,108,219,182, 13,223,
+126,251,109,169, 91, 43, 22,139,209,165, 75, 23,244,236,217, 19,247,239,223,199,198,141, 27, 97,103,103, 7, 1,181, 16, 88,148,
+ 82, 82,246,251,105,119,134,239,214,170, 85, 43,182,160,160, 0, 90,173, 22,169,169,169,120,252,248, 49,172,172,172,144,148, 22,
+143,214, 13, 10,144, 66,244,184,115, 35,134, 35,172,248, 70,117, 53, 16,131,193, 0,189, 94,143,155, 55,111, 22, 15,125,111,180,
+180,180,243,115, 73,159, 15,104,181, 90,132,134,134, 82, 43, 43, 43,216,216,216,144,170,218,222,121,147,238,200,153,139,145,253,
+222, 30,220, 77,122, 34,244, 7, 24,117, 38, 20,232, 28, 80,168,213, 35, 95, 35,134, 94,214, 27,132,156, 7,195,202,208, 62,176,
+ 1, 78, 95,184,175,229,140,134,163,150,169, 2, 14,172, 83, 75,112, 89, 55,203, 8,172,167,107,245, 18,153, 2,156,169,102,163,
+130,229,114,249,242, 21, 43, 86, 76,254,241,199, 31,109,223,127,255,253,198,230,194, 98,221,186,117,249,114,185,124,249,243, 10,
+ 43,165, 82,249,118,135, 14, 29, 22,204,157, 59,215, 51, 48, 48, 16, 17, 17, 17, 88,186,116,233,159, 41, 41, 41, 7, 44,168, 25,
+123, 57, 59, 59,163,160,160, 0, 82,169, 20, 28,199, 33, 45, 45, 13,241,241,241,144,201,100, 8, 11, 11,211,251,248,248,236,173,
+ 77,216, 44,233,208, 94,118, 68,101, 77, 96, 37,225,131,191,248,124,124, 67,173, 86,227,159,159,159,111, 18,137, 68, 34,153,152,
+139,173, 9,135,209,104, 60,116,254,252,249,215, 58,118,236, 40,139,185,121, 3,134,220, 92, 24,243,114, 32,225, 76,112, 10, 14,
+ 4,163,215,130,232,141,240,244,163,208,228,216,224,226,245, 71, 70,163,209, 88,173, 43,104, 22, 88, 12,203, 62,221,239,202,206,
+ 22, 82, 69,177,192, 42,187,159, 84,211,174,229,238,238,110,221,183,111,223,238, 65, 65, 65,160,148, 98,249,242,229,208,235,245,
+ 82,163,209, 8,163,209, 8,131,193,128,252,252,124,236,217,179, 7, 63,255,252,243, 69,123,123,251,106, 7, 75, 80, 74, 77, 94,
+ 94, 94, 31,242, 60,239,102, 50,153, 12,174,174,174,146,157, 59,119, 66, 46,151,131, 97, 24, 4, 6, 6, 66, 46,151,235, 84, 42,
+149,161, 36, 12,198, 21, 43, 86,136,222,123,239, 61, 73, 69,124, 1,173, 27,127,202, 81,231,206, 82,153, 79, 61,123,215,150,168,
+223,168, 59, 0,160,103,255,177,168,223,208, 27,185,233, 55,235,235,117,113,131, 89,146,233,248,203,229,164,232, 78,214,205,199,
+100, 38,134,198, 0,248,209,210,188,212,189,123,119,244,234,213,171,180, 57,208,205,205, 13,122,189, 30, 38,147,201, 98,113, 5,
+ 0,230, 73, 68,231,207, 39, 12,230, 2, 91,218,216,166, 0, 40,181, 39,115,115,115,145,144,144,128,184,184,184,210,247, 20, 79,
+ 45,171, 93,171, 84, 42,171,250,245,235,191,211,172, 89, 51,156, 62,125, 26, 55,111,222, 76, 58,123,246,172,103,235,214,173,225,
+229,229, 53, 70,165, 82,205, 82,171,213, 22, 79,168,236,234,234,106,211,169, 83,167,201, 99,198,140,193,189,123,247, 48,125,250,
+244,204,148,148,148,125,135, 14, 29,122,239,147, 79, 62, 97, 58,119,238,140,180,180, 52,108,216,176,129, 11, 11, 11,251,198,209,
+209,113, 65, 53,247, 49, 86,173, 86,215,213,106,181,200,204,204,132,121, 74,134,163, 71,143,226,216,177, 99,169, 57, 57, 57, 93,
+212,106,245, 3, 75,194,230,227,227, 99, 27, 28, 28,236, 30, 19, 19,131, 29, 59,118,192, 96, 48,124,241,228,201, 19,131,189,189,
+253,175,235,214,173,155,235,235,235,235,244,202, 43,175,160,125,251,246,160,148,226,224,193,131,152, 55,111,222,159, 86, 86, 86,
+175, 71, 69, 69, 25,170,161, 31,188,112,225,194,133, 46, 46, 46,111,190,245,214, 91, 76,112,112, 48,194,195,195,193,113, 28,186,
+119,239, 94, 42,174,142, 30, 61,250,219,209,163, 71,135, 0,144, 40, 20, 10,249,127,221,189, 50, 67,171,213, 34, 38, 38, 6,238,
+238,238,104,216,186, 29,166,223,126,140,243,151, 46,131, 82,138,142,119, 30,163,160,160, 16, 91,182,108, 65, 68, 68, 4, 88,150,
+133,175,175,111,181,156, 6,131, 1, 15, 30, 60, 64,122,122, 58, 6, 13, 26,132,145, 35, 71,226,235,175,191,134,193, 96,192,236,
+217,179,145,149,149,133, 77,155, 54,225,193,131, 7, 16,137, 68, 80, 40, 20,127,121, 60,171,210, 34, 47,165,131, 5, 20,183,125,
+243, 60, 15,181, 90,141,107,215,174,225,241,227,199,176,177,177,129,198,196,243,107,174, 68,242, 12, 17, 39,113, 20, 23,168, 9,
+159, 87,167,196,141, 70, 35, 17,137, 68,184,116,233, 18, 30, 62,124, 8,187,134,180,212,189, 50, 26,141,208,233,116, 40, 42, 42,
+130, 88, 44, 46,184,124,249,242,147,240,240,240,250, 34,145,168,210, 81, 96,105,141,216,173, 39, 78,158,250, 52, 56,208,191,113,
+143,206,243,112,232,208,151,200,201,203, 67,161, 78,132, 2,141, 1,133, 90, 10,149,109, 3,180,105, 25,132,244, 76, 61,238,223,
+137, 72,204,144, 56, 85,219, 6, 99,228,152,220,223,214,190,111, 63,112,200, 68,200, 61, 94,129,254,241, 78,240,154,212, 82,129,
+ 37,145,219,194,206,165, 14,242, 10, 52,184, 24, 29, 11, 35,199,228, 90,122,211, 99, 99, 99,243, 84, 42,213,226,139, 23, 47,126,
+101, 30,249,115,238,220, 57, 60,122,244,104,177, 90,173,206,171, 97,109,182, 7,128,237, 0,228,110,110,110,169,239,191,255,190,
+178, 87,175, 94,242,206,157, 59,131,101, 89, 92,191,126, 29,239,191,255,254,113,133, 66,241,186, 37, 35,243,164, 82,105,106,110,
+110,174,189, 76, 38,131,209,104, 68, 74, 74, 10,238,221,187, 7,141, 70,131,212,212, 84, 16, 66,212,161,161,161,154, 90, 60, 56,
+207,140, 34, 52,143, 10,170, 68,136, 89,172,176,188,188,188, 58,247,235,211,185,249, 55, 43, 87, 67, 83, 84,128,176,203,135,144,
+157,149,129,141,155,247,182,240,242,242,234,108,105,103,226,196,196,196,223,247,238,221, 59, 45,160, 89,179, 32, 95,111,111,220,
+138,123, 12, 9,207, 65,202,113, 96,245, 90, 48,156, 14, 94,205, 41, 24, 70,129,212,148,124,172, 63,126,250,118, 98, 98,226,239,
+213,241,122,246, 29,136, 17,113,185, 32,132,224,120, 39,127,200, 21, 10, 72, 20, 54,104,191, 39,180, 84, 84, 61, 89,246, 25, 36,
+ 54, 10, 56,182,170,126, 98,204,212,212,212,162,134, 13, 27,134,223,189,123,183, 85,147, 38, 77, 48,127,254,124, 36, 36, 36,128,
+ 82,138,180,180, 52,109,122,122,122, 82,102,102,230, 19, 66,200, 62,181, 90,189,217,210,217,194,121,158,119, 59,120,240, 32, 0,
+ 72, 0,224,212,169, 83, 80,169, 84,176,183,183, 71, 94, 94, 30, 70,141, 26, 37,155, 51,103, 14, 0,224,250,245,235, 98,185, 92,
+ 94, 41,215,157, 27,247, 86,100,231,209,108,166, 48,226,245, 12,211,141, 22,221,122, 39,162,103,255, 49, 56,113,104, 11, 78, 31,
+ 59, 9, 23,241,227, 88,206,170,224, 72,122,108, 70,126,114, 97,163, 13,254, 33,239,177,234,130, 99, 27, 39, 13,114, 20,121, 41,
+249, 93, 51,190,175,122,226, 94, 74, 41, 88,150,125,166, 67,123, 77,197, 85, 89,204,157, 75,121, 2, 66,234,139, 69, 55,146, 82,
+ 18,122,171,220,189, 74, 43, 23,241,241,241, 72, 72, 72, 64,195,134, 13,241, 56,238, 17,164, 82,201, 13, 11,243,253, 91,253,251,
+247,183,213,235,245,216,191,127,191,137, 16,210,255,224,193,131,225, 1, 1, 1,162,174, 93,187,218,110,217,178,229, 45, 0,155,
+107,210, 98,164, 80, 40, 36, 70,163, 17, 91,183,110, 69, 82, 82, 82,231,148,148,148,104,149, 74,181,225,131, 15, 62,248,222,207,
+207,175, 97,116,116,244,125,141, 70, 51, 81,173, 86,223,172,142, 44, 39, 39,103,116,159, 62,125,118,241, 60,239,211,161, 67, 7,
+155, 17, 35, 70,216, 81, 74,225,231,231,135,195,135, 15,171,213,106,181,197,125,152,226,226,226,242,207,159, 63,159,234,239,239,
+239,174, 84, 42, 33,145, 72,150, 41,149,202, 69, 10,133,226,155, 1, 3, 6, 56,237,220,185, 19,187,119,239,134,141,141, 13, 98,
+ 99, 99,213,119,239,222, 93,229,225,225,241,157, 37, 51,184, 71, 68, 68,196, 2, 24,209,186,117,235,121,223,126,251,237, 23, 12,
+195,188,125,252,248,241,210,185,206,204,226,170, 94,189,122,163,119,237,218, 53,242, 37, 51, 66,140,122,189, 30,206,206,206, 72,
+ 79, 79, 71, 90, 90, 26,234,212,169,131,118,237,218,193,104, 52,226,192,161, 63,113,254,252,121, 80, 74,225,226,226, 2, 59, 59,
+ 59, 68, 70, 70, 2, 64, 85,163,135,141, 6,131, 1, 78, 78, 78,200,201,201, 65,100,100, 36,220,220,220, 48,117,234, 84,232,245,
+122,236,220,185, 19, 55,110,220, 0,195, 48,112,117,117,133,173,173, 45,110,220,184, 81, 29,167,128,154, 10, 44,150,101,207,156,
+ 57,115,102, 72,203,150, 45, 69,247,239,223,199,253,251,197,207,155, 70,163, 49,137, 88,236, 78,189,185,127, 68, 21,110, 74,243,
+178,115,101, 72,165,210,245, 67,134, 12,153, 56,118,236, 88, 76,154, 52, 9, 12,195,224,199,235, 58,196,199,243, 48, 24, 12, 72,
+ 77, 77,197,173, 91,183,104,171, 86,173, 8,207,243,134, 46, 93,186,140,139,136,136,104,205,178,108, 94,101,156,116,215, 46,206,
+165,197,192, 65,235,214,111,190,244,206, 59,239, 56, 13, 28,180, 14,215,163,238, 32,167,176,184,149, 73,229, 98,131, 54, 77, 62,
+ 67, 90,166, 14,199,142, 28,202,230, 77,218, 55,232,237, 29,198,170,194, 9, 0,233, 69, 26,183, 13,219,246, 46,223,177,103,223,
+184,241,163, 71,200,187,116, 25, 13,113,254, 45,112,153, 17, 80, 53,234, 0,194, 90,227,106,228,117,220,124,144,160, 45,210,178,
+155,243, 12,154,207,170,227, 44, 11,134, 97,214,108, 90,191,122,201,209, 19,161,172,193, 96, 64,191, 62,221, 57,134, 97,214, 84,
+227, 78, 61,195,105,109,109,189, 35, 50, 50,210, 73,167,211, 33, 49, 49,177,126,227,198,141, 65, 41, 69, 92, 92, 28, 86,173, 90,
+101, 58,124,248,240, 58,185, 92, 62,189,178, 26, 98,121, 78,163,209,184,125,235,214,173, 51, 63,252,240, 67,121, 90, 90, 26,238,
+222,189,139,194,194, 66, 24, 12, 6, 68, 68, 68,104,141, 70,227, 14, 11, 92,180,103,194,105, 22, 88, 78, 78, 78,158,109,219,182,
+ 53,143, 34,244,228,121, 30,142,142,142, 94,173, 91,183, 14, 7, 0,123,123,251, 10, 71, 17, 86,117, 63, 19, 19, 19,207, 54,106,
+ 80, 7, 91, 55,175,132,193,160, 67,114, 82,177,211,144,145,153,139,170,196,213, 51,121,137, 82,170, 84, 42, 95,255,118,213,170,
+ 43, 19, 70,191,237,209,169, 91,119, 36,220,140,132, 62, 43, 29, 12,103,130,152,138, 80,148,102,133,212,212, 2, 44, 57,124, 50,
+ 77,163,213, 62, 35, 90, 43, 11,103,105,179,160,157, 45,100, 10, 5,164, 37,174,149,249,152, 84, 97, 11,177,141, 2,172, 68, 82,
+ 81,103,248,230, 21,204, 41,247,198,248,241,227,111, 30, 62,124,216,113,196,136, 17, 24, 56,112,224,245,156,156,156,174, 89, 89,
+ 89,150,116, 20,175,144,147, 97,152,180,126,253,250,185,233,245,122,211,176, 97,195, 68, 25, 25, 25, 48, 15,177,207,207,207,199,
+145, 35, 71,208,164, 73,241,170, 51,119,238,220,129,191,191,127,165,156,239,125,126, 43, 9,192,194,169, 67,189,190,185, 18,153,
+ 50, 5,192,178,250, 13,189,112,250,216, 73,156, 63,125,105, 70,219,230,252,234, 87,223,106,189, 64,222,237,205,207,252,131,223,
+ 99, 21,118, 74,108,219,187,135,141,138,248, 97,177,182,240,182, 47,128,207, 42, 11, 39, 33,164,120,165,250, 50,226, 74, 36, 18,
+161,168,168,200, 34,113, 85, 85, 94,162,160,212, 37,143,124,241,206,212,161,237, 78,237,184,106,107, 99, 99, 83,218,231,167, 65,
+131, 6, 16,137, 69,248,113,223,154,194,156,156,140, 57,150,112,218,216,216,124,216,181,107, 87, 60,122,244, 8, 55,111,222,220,
+163, 86,171,111,170, 84,170, 61,177,177,177,195, 90,183,110,141,223,127,255,253,195,202, 4, 86,101,156,230, 25,235, 75,220,222,
+172,146,102,242, 72, 0,109,107, 26,247,146,201, 66, 59, 0,128,159,159, 95,194,224,193,131,237, 76, 38, 19, 74,196,179,115, 77,
+242, 18,165,148, 87,169, 84,223,133,133,133, 45, 13, 12, 12,196,240,225,195,123,134,135,135,247, 12, 8, 8,128,175,175, 47,178,
+179,179, 17, 26, 26,250, 11,207,243, 31, 36, 39, 39,107,171,170, 68, 85, 22,247,176,176,176, 7, 0, 70, 5, 7, 7,191, 41, 18,
+137, 96,103,103,199, 38, 37, 37,177,199,143, 31, 7,128,241,187,118,237,226,106,147,238,207,209, 98,240,151,115, 18, 66,102,143,
+ 30, 61,122,195,251,239,191, 47,111,221,186, 53,114,115,115, 75, 69,255,225,195,135, 81, 50, 18, 27,206,206,206,120,240,224, 1,
+246,237,219,167,207,205,205, 93, 37,145, 72,150, 85,197, 57,106,212,168,167, 56,205,226,237,208,161, 67, 48, 15, 34,113,118,118,
+198,253,251,247,177,119,239, 94,109,110,110,238, 74,189, 94,255,245, 95, 25,247,255,119, 2, 43, 43, 43,235,163,153, 51,103,118,
+125,247,221,119,157, 53, 26, 13,235,226,226, 2,181, 90,109, 58,118,236, 88, 86,126,126,254, 71, 53,185,216,165, 75,151, 38,245,
+239,223,127,213, 79, 63,253,180,105,211,166, 77,157,135, 15, 31,142, 81,253,250, 97, 98, 59, 27,232,116, 58, 16, 66,112,236,216,
+177,123,103,206,156,169, 47,145, 72,116,115,231,206,229, 1, 92,169,142, 55,227,214, 31,247,221, 91, 12,238,188,122,205,247,187,
+131, 66,218,250,212,173, 87, 87,214,193,219, 30, 6, 35,135,212,180, 76,156,189, 20,165,187, 31, 21,153,192, 27,244, 67,211,162,
+170,159,197, 29, 0,162,162,168, 1,192, 71,254,254,118,243,191, 94,255,219,250,159,119,237, 25, 60,110,248,235,162,224, 22, 93,
+241, 56,229, 0,206,133,159, 49,101,231,211,125,249,122,118, 66, 84, 84, 94,118, 77,111,124, 98, 98,162,182, 97, 61,207, 92,173,
+ 86,235,244,248,241, 99,164, 38,171,243, 18, 19,147,180,181,105,118,211,233,116,120,244,232, 17, 78,158, 60,137,235,215,175,227,
+226,197,139,134,227,199,143,255,196, 48,204,226,202, 38,154,172, 12,205,155, 55,255,234,135, 31,126, 24,194,113,156,111,151, 46,
+ 93,228, 78, 78, 78,200,200,200, 64, 88, 88,152,254,198,141, 27,143,154, 55,111,254,117,109, 51,155,135,135, 7,134, 14, 29,234,
+ 22, 28, 28,236,102, 30, 49,232,237,237,141, 55,222,120,195, 45, 32, 32,160,116, 95,157, 58,117, 80,147,169, 26, 74, 28, 44,188,
+243,222, 39,208,104, 10,112,229,210, 33,228,100,101,224,242,181, 24,212,196,193, 2,138, 71,122, 42,149,202,182,139, 86,173,222,
+219,167, 77, 43,191,198, 42, 15,153,115,189,186,176,113,245, 64, 86,102, 38,174, 68, 62, 52,174, 61,113,246,182, 70,171,125,221,
+210,145,158, 60,207,151,142,114,243,159, 50, 3, 12,195,148,174,130, 96, 62,110, 23,210, 17,140, 72, 12,142, 2, 6,131,161, 90,
+247, 78,173, 86, 39,122,122,122,190, 49,121,242,228, 83, 91,183,110,101,186,116,233, 18,248,199, 31,127, 60,215,162,185,137,137,
+137, 94, 37,174,104,158,157,157,157,104,204,152, 49, 48, 26,141, 40, 42, 42, 66, 94, 94, 30, 50, 51, 51,117, 31,127,252,177, 12,
+ 0, 36, 18,137,177, 79,159, 62,213,190, 63, 86,238, 74,212, 78, 29,234,181,218, 69,252,120, 88,110,250,205,250, 46,226,199,177,
+109,155,243,171, 87,238, 74,212,126,245,190,227,162,164,244,208, 24,117,193,177,141,219,246,238, 97, 71, 15,126,131, 83, 42,238,
+207,112,241,198,174,174, 3, 45,120,121,149, 19, 88,181,117,174,158,121,159,220,166,215,235,183,179, 95,218,117,104,235, 89,139,
+166,173, 80,184,184,186,192,100, 50, 33, 54,254, 17,126,218,187,182, 48, 95,151,189, 56, 51,138,134, 91,194, 85,191,126,253,122,
+ 44,203,226,192,129, 3, 0, 96,158,218, 96,237,145, 35, 71,134,189,245,214, 91,168, 83,167,142,127,221,186,117,101, 85, 77,163,
+ 81,145,123,103, 52, 26,241,162,215,181, 38,132, 60,138,140,140,244,244,244,244, 36, 59,118,236, 40, 48, 24, 12,243,106,241,140,
+175,248,243,207, 63, 59, 81, 74,251, 4, 5, 5,193,199,199,167,228,125, 26,133,243,231,207,111, 79, 74, 74,122,231, 5, 45,238,
+ 76, 9, 33,200,203,203, 51,207,107, 98, 80, 40, 20, 47,229,162,209, 73, 73, 73, 63,187,187,187, 31,155, 55,111,222,151, 13, 26,
+ 52,248, 96,252,248,241,108,227,198,141,145,155,155, 11, 59, 59, 59, 40,149, 74, 36, 37, 37,225,231,159,127,230,210,210,210,126,
+ 98, 24,102,190, 90,173, 86,215,150,211,209,209, 17, 74,165, 18,137,137,137,102,206, 77, 70,163,113, 65,122,122,122, 42, 4,212,
+236,153,178,228, 33, 45,153,166,225, 59,142,227,186,154, 93,173,172,172,172,143, 82, 82, 82, 50,106,171,238,251,247,239,223, 32,
+ 35, 35, 99,147,193, 96,232, 60,112,224, 64, 12, 31, 62, 28, 3, 6, 12,192,240,225,195, 89,179,107,117,224,192,129,187, 53,225,
+ 52, 47,246,204,176,146,254,148,210,150, 0, 8, 97,152,106, 23,123,182, 68,137, 7,249,219,249, 90,201,248,205, 86, 82,190,163,
+ 70,207, 92,208,232,152,113,215,163,242, 30, 61, 79,205,166,100, 97,231, 95, 1, 64,103,164,111, 39, 36,168, 79,212,244,126,150,
+ 52, 17,238, 32,132,176,148,210, 53,148,210, 29, 74,165,242,145, 37,182,123, 5,156, 12, 80, 60,185,232,201,147, 39,191, 36,132,
+188,173,211,233, 92,101, 50, 89, 58,165,244,151, 30, 61,122, 44, 88,189,122,117, 85,188,124,101,225,244,246,246,254, 77,165, 82,
+ 53, 50, 59, 69,101, 11, 11,243,183,121,127,201,124, 68, 15, 19, 19, 19,223,178,244,126, 54,240,245, 58,230, 91,207,179,151,111,
+ 61, 21, 0,224,209, 99, 53, 30, 61, 78, 58,254,240, 81, 98,239,218,164, 81,217,197,158, 73,201, 84, 12,212,130,197,158,203,115,
+ 54,107,214, 44,156,101, 89,175,154, 60,148, 60,207,171,111,223,190, 29,100, 73, 56, 85, 42,213, 8,111,111,239,101,106,181,122,
+111, 66, 66,194, 39, 47,162,230,173, 82,169,218, 51, 12,115,152,231,121,171,242, 14,151, 89,132,121,120,120,248,200,100,178,167,
+ 58,185, 87,197,249,245,236,230,115, 58,116,238, 52,248,226,217,243,251, 62, 95,124,123, 97,217, 99, 31, 14,118, 26,251,214,164,
+143,190,254,109,221,119,159,175,221,151,245, 83,117,225,108,217,178,101, 40,128, 70,102, 55,171, 42,112, 28,167,190,125,251,118,
+ 72,109, 92, 7,231,150,164,149,131,141,203, 66,189,193, 16,192, 16, 80,177, 68, 18,153,147,147, 49,167, 34,113, 85, 25,167,151,
+151,215,178,134, 13, 27,126,244,240,225,195,237, 9, 9, 9,239,150,185,199,223,212,173, 91,119, 82, 66, 66,194,218,132,132,132,
+207, 44, 77,163,250,245,235,219, 5, 4, 4,100,207,159, 63,159,153, 59,119, 46,194,194,194,156, 18, 19, 19,179, 95, 68,186,251,
+248,248,120,200,229,242,109, 60,207,251,114, 28,183,238,209,163, 71, 43,106,195,233,239,239, 47,201,201,201,249,200,219,219,123,
+170,187,187,187,123,106,106,106, 92,124,124,252,210,148,148,148, 31, 44, 21, 87,150,164, 81,112,112,176, 14, 40, 94, 78,204,146,
+254, 86,255, 85, 7,171, 92,126,242,229,121,126,113, 64, 64,192,144,177, 99,199,146,232,232,104,156, 56,113, 2, 79,158, 60,217,
+ 71, 41,157, 85, 89,147,110, 77, 57,143, 29, 59, 70,227,226,226,118, 49, 12,243, 69, 98, 98,226,163,191, 43,238, 47, 29,204,211,
+238,255, 21, 31, 0,205,171, 59,231,213, 87, 95,109,208,186,117,235,208, 22, 45, 90,240, 45, 90,180,200,127, 17,156,127, 69, 56,
+205,159,206,157, 93,108, 94, 52,231, 95, 17,206, 90,114, 50,207,249,249,199,227,222,176, 97, 67,106,214,112, 47,105, 26,253, 39,
+ 57,215, 47,106,161,186,122,242,205,111, 55,127,213,220,179,252,177,121,147, 29,109, 79, 29,120,253,235,121,147, 29,109, 95,198,
+184, 3, 96, 42,217, 79,106,195,233,237,237,189,225,181,215, 94,227,188,189,189, 55,253,155,227, 14,128,248,248,248,200,132,231,
+232,197,115,186,187,187,135, 40,149,202,131, 74,165,242,160,167,167,103,235, 23,204,185,223,195,195, 35,232,159,136,251,203,246,
+ 17,253,211, 2,239,208,161, 67, 15, 1,116, 25, 56,112,160, 27,203,178,255,250, 69, 58, 67, 67,211, 11, 95, 98,189,253,159,183,
+216,239,223,191, 79,132,106,211,191, 15, 31,204,190,169, 6,240, 73,235,238,207, 30, 43,153,154,225,243,110, 3, 95,206,184, 87,
+230,218,212,118, 33,230,248,248,248, 15, 84, 42,213,212,154,140, 62,252,135,226, 77, 1,232,132,220,255,226,145,146,146, 18, 14,
+ 96,192,191,157,243,255, 59, 68,255,150,128,252,241,199, 31,105, 66,114, 8, 16, 32, 64, 64,245,248,183,139, 43, 1, 2, 4, 20,
+207,148,218,188,146,218,135,197,109,171,132,144,230, 53,189,112,117,252, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,124,
+156,213,113,191, 44,125,187,200,139, 30,137, 82,254,230,253,215, 59, 21, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,215,
+115,190,108, 96,132, 91, 32,224,175,198,154,113,196,115,205, 56,226,249, 87,157, 47, 64,128, 0, 1, 2, 4,252,219, 32,122,217,
+ 34, 20, 18, 18,226, 79, 41,125,139, 16, 50, 4, 0, 40,165,187, 9, 33,191,133,135,135, 91, 52, 3,173,149,149, 85,138, 86,171,
+117, 3, 0,185, 92,158,166,213,106,149,101, 69,123,153, 15, 80,188,214,166,121,212, 90,165, 86, 96,253,250,245, 83,116, 58,157,
+ 37,235,235,221, 32,132, 92,231,121, 62, 66,161, 80, 92,184,127,255,126,140,165,241,238,217,179,231, 7, 54, 54, 54,115, 52, 26,
+205,215,199,142, 29,251,238,175,190,207,132,144, 54,222, 42,143, 45, 70,147,129, 79, 73,203,154, 77, 41, 61, 80,209,121,223,191,
+ 75,150,138, 72,241,164,145,223,191, 75,150, 79,252,145,206,172,138,183,166,231, 87, 17,190, 16,177, 88,252,161,187,187,123,223,
+196,196,196,112, 0,159, 83, 74,133, 89,136, 5, 8, 16, 32, 64,192,191, 79, 96,181, 11,118,110, 76,120,195,103, 98,150,118, 50,
+114,228, 60,101, 36,203, 47, 71,100,198, 60, 79, 0, 84, 42,149, 55, 33,164, 11,165,212,143, 97,152, 91, 60,207, 31, 87,171,213,
+153, 53,225, 8, 14, 14,246, 6, 48, 28,192,136,182,109,219, 54,159, 48, 97, 2, 26, 54,108, 8,173, 86,139,176,176,176, 25,191,
+254,250,235,140,224,224,224,219, 40, 94, 82,102, 71, 68, 68, 68, 66,101, 92, 90,173,214,205,172,149, 8, 33,110, 67,134, 12, 9,
+ 43,179, 8, 47, 49, 47, 46, 75, 41,189, 2,224, 50, 33,228,210,142, 29, 59, 18,155,184, 89,181,173,235,237,250,234,145,240,184,
+217,229, 57,117, 58,157,219,141,131,251, 64, 77, 28, 10,146,226,209,224,245,225,165,199, 78,188,222, 29,180, 48, 15, 98,153,228,
+ 70,215, 63, 46, 93, 7, 16, 17, 31, 31,127,189, 78,157, 58, 49, 85,113,150, 71, 96, 96,224,130,121,243,230,185, 12, 28, 56,240,
+ 67, 0,149, 10,172,154,112, 86, 33, 94,100,109, 67, 90,158, 57,184,103,135, 28,132,193,107,131,135,108, 39,132,140, 42,191,152,
+244,247, 99,136, 59, 97,241,217,132,143, 39,176, 0,240,253,170,245,159,175,122,155,172,254,248, 23,154,226,233,233,217,149, 82,
+250,121, 9,223,215, 73, 73, 73,103,190, 31, 67,220,193, 96,250,132,143, 39, 16, 0, 88,191,106,253,103,223,143, 33,223, 77,220,
+ 66, 83,107, 24,190,137,239,188,243,206,234,197,139, 23,179, 37,147,240,245,241,247,247,111, 76, 8,241,167,148, 10,157,131, 5,
+ 8, 16, 32, 64,192, 63, 47,176,154, 55,183,119,176, 98,232, 84, 43, 41, 29,222,167,147,127,189, 1,125,219,147,250, 13,234, 35,
+ 38, 58,198,247,204,217,107, 99,186,182,182,125,172,209,147, 29, 26,158,172,188,125,187,234,245,195,230,140, 35, 70,147,169,248,
+154, 34, 17,184,109,199,189,246,245,232,209,163,222,216,177, 99, 17, 20, 20,132,240,240,240,174,187,118,237,250,200,219,219,251,
+154,209,104, 60, 44,147,201, 66,171,155,225, 56, 56, 56,120,153,167,167,231,231,211,166, 77, 35, 33, 33, 33,144,201,100,165,199,
+ 20, 10, 5,186,119,239,142,238,221,187, 35, 37, 37,165,121,104,104,104,243,223,126,251,109,105,112,112,240,215, 17, 17, 17, 51,
+ 44,185, 65,115,230,204, 9,174, 96,247, 49, 66,200, 67,134, 97, 34,154, 54,109,154,216, 80,169,104,226,238,234,124,232,171,197,
+243, 1,160, 82,225,178,191,119,123, 0,120, 74, 96, 25, 50, 82, 33,183, 85,220,144, 88, 89, 93, 7, 16, 1,224,122,157, 58,117,
+110, 88,202, 9, 0, 93,186,116,145,217,218,218, 18, 74, 41, 90,183,110,237,212,187,119,239, 24,134, 97,190, 59,114,228,200,250,
+178,231,213,132,179, 26,180,153,247,217, 36, 73,198,163, 27,184,123,233, 56, 6, 5,123,202,175,223,185,183, 8,192,158,170,133,
+ 15,195,108, 13,119,153,241, 49,240, 17,207,243,115,162,163,163, 59, 3,128,159,159,159, 20,192,153,109, 97,142,253,222,105,159,
+ 91,235,105, 22, 8, 33, 18,150,101,215,109,219,182,237,189, 81,163, 70, 33, 46, 46, 14, 23, 46, 92,128, 66,161,192,130, 5, 11,
+234, 78,155, 54,109, 41,128,143,132,199, 94,128, 0, 1, 2, 4,252,163, 2,171, 83,176, 77,216,224,206, 13,130, 7,246,110,207,
+ 52,244,243,135, 68,102, 93,122,172, 69, 80, 16, 90, 4, 5,145,241,227,243,235, 71, 94,143,252,226,232,169,171,179, 58, 5,219,
+ 68,156,143, 40,108, 93, 25,159,201, 4,209,210,197,191, 1, 0,182,109,126,139,141,137,137,169,103,101,245,191,201,162, 59,119,
+238,140,206,157, 59, 51, 75,151, 46,109,115,230,204,153, 54, 59,118,236, 48,120,122,122,174, 74, 74, 74,218, 85, 69, 48, 63,223,
+181,107, 23, 97, 89, 22, 44,203, 86,122,146,135,135, 7,122,246,236, 9, 15, 15, 15,242,217,103,159,125, 14,160, 66,129, 37,151,
+203,211, 8, 33,110, 0,224,232,232,200,205,155, 55, 47,146,150, 0, 0,120,158,191,194,178,236,101, 66,200,149,189,123,247, 38,
+ 53,240,180,242,180,149, 89, 31,223,180, 97, 13,140,121,169, 78,149, 93,191, 72,157,104, 86, 1, 79,237,151,218, 88,223,144,218,
+216, 92,151, 42, 20, 17, 0,174, 3,184, 97, 41,167, 89, 92, 89, 89, 89,157,219,176, 97,131, 35, 0, 76,158, 60,217,161,168,168,
+200, 97,220,184,113, 51, 0,148, 10,172,154,112, 86, 33, 96, 28, 58,181, 11,121,178,122,217,151,118, 65,109, 58,226,202,238,239,
+145,147, 83,136,194,252, 34,240, 60,255,204,202,191, 19,183,208,212,239,223, 37,203,191,255,118,253,116,194, 48, 36,160,247,231,
+232,237, 68,167,168, 84,170, 59,132, 16,177, 84, 42, 53,243,138,188,188,188, 84,141, 27, 7, 46,111,216,177, 9,214,127,183, 14,
+148,231, 41,128,229,150,186, 87,132, 16, 55, 91, 91,219, 3,199,143, 31,111,211,170, 85, 43, 92,185,114, 5,143, 30, 61,194,164,
+ 73,147,244,147, 38, 77,146,140, 30, 61,154, 76,157, 58,117, 50, 33,100, 55,165,244,162,240,232, 11, 16, 32, 64,128,128,127, 76,
+ 96,201, 37, 92,171,121,171, 35,193, 21, 62, 4, 53,198,131, 26, 82,158, 57,199,218,193, 27, 77, 3,220, 97, 45,117,101,110, 69,
+127,219,170,236,177,234, 70, 24,152,197,213,238, 21,170,102,154,194,100, 9, 0, 88,217, 40, 13,111, 76, 77,186,211,170, 85, 43,
+184,186,186, 74, 46, 93,186, 52, 21,192,174, 42, 56,137,254,102, 56,238, 14,232,128, 6,119,179, 96,109,109, 13,115,193,109, 70,
+ 76, 76, 12,206,157, 59,135,184,184, 56,248,250,250, 2,255,235, 67,245, 12,167, 70,163,241,232,211,167, 79,232,215, 95,127,253,
+202,178,101,203,110,109,223,190,189, 11,165,180,168, 66,119,175,142,189,131,148,138,143,111, 94,255,173, 24,250, 66,167,123,215,
+ 46,162, 89,223,247, 43, 12,103,189, 1,111, 96, 66, 78,113,211,227, 78,127, 21,228,118, 10,200, 20,182, 55,122, 30,187, 86,234,
+ 92, 1,184, 97, 41,103,183,110,221,198,136, 68,162,217, 0,236, 55,110,220,232,224,224,224,192, 28, 56,112,192,176, 97,195,134,
+124,137, 68,162, 39,132, 44,169, 77, 56,171,130,152,101, 23,126, 51,239, 51, 59,107,198,132,235,135,127, 65, 98, 92, 60,110, 62,
+ 72, 50,254,126, 62,138,211, 27,185,177, 21,221,207,137, 63,210,153,211, 6,203,182,132, 39,251, 30,236, 63,119, 82,163, 69, 3,
+221, 97, 48, 24, 54,167,167,167, 99,220,184,113,224,121, 30, 29, 59,118,236, 64, 41, 77,154, 50,101, 10,124,125,125,177,249,143,
+251, 69,162,188,171, 93,126, 61,149, 23,110, 73, 94, 34,132, 52,247,241,241, 57,126,230,204, 25,119, 79, 79, 79,132,134,134, 34,
+ 37, 37, 5, 74,165, 18,147, 38, 77,146, 46, 91,182,108, 91, 94, 94,222,208,197,139, 23,203,111,223,190,189,131, 16,226, 93,162,
+153, 95,248, 8, 24,129, 83,224, 20, 56, 5, 78,129,243, 47, 65, 43, 0,174, 0,210, 1, 92, 43,183,141,146,223,168, 96, 59,163,
+164,204, 47,187,120,121, 6,138,251, 79,187, 2,224, 0,132, 1,200,126,209, 1, 22,149, 20, 80,157, 1,132, 2,152, 79, 41,157,
+ 87,254, 36, 67, 82, 40,164,117, 95, 7,228,205, 64,245, 15,193,235,147, 64,197,110, 40, 44,146, 35,227, 73, 28,238, 94,217, 13,
+106, 42,170,254, 98, 34,152,214,172,122, 75,100,107, 13, 72,100,174,134,252,252,124,216,216,216, 64, 83,152, 44, 25, 61,174,212,
+217,146,156, 57,115, 6, 17, 17, 17, 80,169, 84,213,138, 64, 0,160,250,226, 86, 68,189, 94, 15,189, 94,143,148,126,173, 97,211,
+246, 21,100,191, 61, 9, 39, 79,158, 68,122,122, 58, 36, 18, 9, 36, 18, 9, 76,166,234, 39,139,103, 74, 86,226, 53,155, 86, 21,
+157,227,229, 69,228,182,156,213,161, 53, 43,151,216,217, 41,172,221,195,143,239, 71, 92, 92,138, 69, 55, 93,106, 99, 13,169,149,
+245, 13,169,141,213, 83,226,170, 38,156, 44,203, 46,216,179,103,143,167, 78,167,131, 68, 34,193,238,221,187, 13, 91,183,110,189,
+ 83, 88, 88,216, 41, 34, 34, 66,243, 34,194, 89, 30,206,174,174,127,190, 62,242,253, 73,139,222,237, 9, 77,161, 22,251,206, 71,
+225,212,173,199, 3, 1, 92,160,148, 86, 58,195,253,138,125,186, 7,158,158,158,221,199,141, 27,119, 99,239,222,189, 46,223,124,
+243, 13, 56,142,131,201,100,130,201,100, 42,253,205,113, 28,182,111,223,142, 11, 87,163,166,168,213,121, 22, 45,166, 75, 8, 81,
+213,171, 87,239,228,213,171, 87, 93,173,173,173,113,226,196, 9,228,228,228, 96,226,196,137,165,206, 85, 78, 78,206,240,245,235,
+215,191,241,228,201,147,111,206,159, 63,159, 9,128, 5,240,175, 95, 53, 64,128, 0, 1, 2,254, 63,161, 26, 45,226, 74, 8, 57,
+ 68, 41,237, 15,160, 7, 0,105,153,109, 16, 66, 14,149,148,219, 79,109,207,152, 49, 99,214,210,165, 75,239,152,183,205,231,204,
+156, 57,179,217,178,101,203,150,180,107,215,110,199,165, 75,151, 98,255, 50,129, 5, 32,148, 82, 90,105,223, 23,221,195, 95,161,
+139,253, 29, 18,101, 87, 72,235, 15,131,216,165, 29, 18,238,133,226,198,201,149, 72,188,127, 1,148,231,224,238,221,180,218,139,
+ 45,220, 76,197, 42,149, 42, 66,173, 86,227,250,245,235,120,248,240, 33,228,242,103, 90,150,112,234,212, 41, 0,128,187,187,187,
+101,130,165, 85, 7,120, 71, 38, 35, 33,160,120,192,159,119,100, 50, 0, 96,201,204,153,144, 74,165,144, 72, 36,165,231,114, 28,
+103, 73, 34,155, 5,150,121,148,224, 51,199, 27,184,219,238,154, 59,227, 67,159,122,190, 13, 85, 87,255,220,137,216,216, 36,164,
+166, 90,150, 62, 50,133,205, 13,153,173,205,117,169,213,255,154, 5,107,193,185,115,232,208,161, 99, 6, 15, 30,108,213,182,109,
+ 91,217,143, 63,254,152, 83, 94, 92, 61,111, 56,203, 66,169, 84,246,126,245,213, 87,255, 28, 63,126, 60, 6,245,233,129,183, 58,
+250,209,196,180, 92, 13,128, 19,148,210,106,111,106, 82, 82, 82,146,167,167,103,207,215, 95,127,253,215,102,205,154,249, 81, 74,
+209,180,105, 83, 12, 26, 52, 8,123,246,236, 65, 84, 84, 20,242,243,243, 13,231,207,159, 95,165, 86,171,127,178,240, 97,180,118,
+116,116, 60,122,250,244,105, 87,107,107,107, 28, 63,126, 28, 69, 69, 69,207, 56, 87, 75,150, 44,145, 63,126,252,120,237,177, 99,
+199,234,162,120, 93, 56, 65, 92, 9, 16, 32, 64,192,191, 15, 85,106, 17,179,112,162,148,246, 47, 43,152,202, 11, 45,243,111,243,
+121, 75,151, 46,237, 95, 86,124, 1,192,178,101,203,150,148,217, 46,250, 43, 34, 99, 22, 88, 93, 8, 33, 20, 64, 23, 74,233,217,
+114, 54, 96,241, 15,222, 4, 67,210, 9, 24,146, 78,192, 58, 96, 54, 14,172,126,251, 41, 34, 75,156,161,138,160,213,106, 33,150,
+ 58, 27,182,109,126, 75, 2, 0, 28,181, 49, 60,115,237,234, 28,172, 26, 76,150,106, 73, 56, 9, 33, 76, 25, 94,238, 89,247,202,
+107, 69,187, 14,109, 58, 54,108,209,218,250,234,209,189,120,112, 63, 14, 25, 25,185, 0,133,182, 50,206, 19,195,250,162,240, 81,
+ 12,172,236,236,110,244, 62, 29,249,148,115, 85, 27,206, 19, 39, 78,124,218,174, 93,187, 57,187,119,239, 86,251,250,250,202, 68,
+ 34,145,161,172,184,170,109, 56,203, 66,165, 82,117, 16,137, 68,199, 25,134,177,234,211,167, 15,166, 76,153,130,239,190,251,206,
+196,139,229,253,215, 31, 13, 31, 90,160, 51,204,182, 68, 92,149, 17, 89, 55, 1,248,215,173, 91, 87,102, 50,153,186, 14, 24, 48,
+224,112,191,126,253,112,249,242,101,156, 60,121,178,145,193, 96, 72, 46,185,238, 2, 0,238, 12,195,124, 93,197, 74,238,140, 68,
+ 34,217,113,242,228,201,102, 42,149, 10, 39, 78,156, 64, 81, 81, 81,169,115,245,206, 59,239, 60,229, 92, 93,186,116, 41, 83, 16,
+ 87, 2, 4, 8, 16,240,175, 70,165, 90,164,172,251, 84,145,200,178,176, 82,110, 22, 95,154, 25, 51,102,204, 34,132, 28, 42,113,
+184, 52, 0,212,127,137,192, 42,137, 8, 41,137, 88,181,163,184,184,252,216,103,246,241,124,237,203,173, 70, 61,142,221,177,178,
+178,194,250,245,235, 97,109,109, 93, 99,225, 84,120,120, 47, 18, 38,141, 44,117,174,204, 78, 22,122,143,174,173,192, 50, 59, 88,
+ 87, 80,174,137,208,203,203,235,195,150, 45, 91,190,187,105,235,175,182,203,230,124,158,155,119,247,142, 72, 91,164,179,209, 25,
+ 77,134,135,169, 25,149, 78,143, 96,202,203,129,204,198,230,134,216,218,170, 34,113, 85, 43,206,203,151, 47,107,187,119,239,190,
+101,201,146, 37,109,121,158,223,250, 34,194, 89, 86, 92, 57, 59, 59, 31, 91,187,118,173,149,149,149, 21,116, 58, 29,190,254,250,
+107,156, 58,117,170,127,114,114,242, 49, 0,199,106,155,222, 6,131,225,189, 30, 61,122,124,251,233,167,159,194,104, 52, 98,216,
+176, 97,120,242,228,201,241, 7, 15, 30,124,231,229,229,245,233,196,137, 19, 85, 46, 46, 46,152, 48, 97,130, 4,192, 59,149,208,
+124,245,219,111,191,245, 15, 8, 8,192,217,179,103,145,155,155, 11,165, 82,137, 15, 63,252, 80,186,116,233,210,109,249,249,249,
+ 67,151, 46, 93, 42, 56, 87, 2, 4, 8, 16,240, 31,129,165, 90,164,172, 19, 85, 67,126,243,255,196, 75,151, 46,189,179,116,233,
+210,167, 28,174,191, 68, 96,149, 68, 6, 0,186, 88,226, 14,241,154,103,251,240,240,156,169, 38,145,180,232, 60, 75,154,243,128,
+255,245,193,170, 64, 40, 61,179, 93,131, 62, 88,199, 40,165,151,202, 10, 44, 47, 47,175,215, 60, 60, 60,190,250,237,183,223,172,
+212,106, 53,188, 26, 55,183,255,115,207,239, 58,119, 27,153, 54, 49, 43,107,116,100, 82,193,238,202, 56,121,109,225, 13,185,141,
+226,186,220, 90, 81, 94, 92,213,154, 19, 0, 78,157, 58, 53,173, 2,135,237,185, 56, 85, 42, 85, 7, 23, 23,151, 99,107,215,174,
+181, 86,171,213,144, 72, 36, 80, 40, 20, 56,125,250, 52, 74,196, 85,173,225,229,229, 53,111,242,228,201,115,223,121,231, 29,100,
+103,103,227,228,201,147,232,218,181, 43,214,174, 93,235,115,250,244,233,111,219,183,111, 15,150,101,113,226,196, 9, 24,141,198,
+251,149,164,235,224,241,227,199,127,250,198, 27,111, 32, 44, 44, 12,201,201,201,152, 48, 97,130,254,195, 15, 63, 44,237,115,245,
+253,247,223,191,241,248,241, 99,193,185, 18, 32, 64,128,128,255, 8,170,210, 34,229,240, 39,128, 87,203,187, 90,229,197,151,217,
+161, 42,187, 93,254,252,146,227,218,191, 34, 62,102, 7,171,114,215,138,114, 96,157, 90,130,203,186, 89, 70, 96, 37, 63,117,138,
+ 68,166, 0,103,129,112,153, 51,142, 24,103,188, 5,209,207, 11, 24,136,165,206,134, 70, 61,142,221,169,236, 92,133, 66, 1,158,
+231, 45,210, 97,146,126,111,176, 13,122,191,134, 71, 45, 60, 64,141,134, 82, 39, 11,179,102, 61, 37,174, 36, 18, 9,244,122, 61,
+ 80, 65,179, 95, 57,132, 17, 66,158,176, 44,123,153, 82, 74,187,116,233,178,217,104, 52,190,166, 80, 40, 28,199,141, 27,103,200,
+200,200,192,190,125,251,176,101,203, 22, 77,129, 65, 20,158,157,105,124,251,145,186, 32,177, 10,190, 27,175,158,189,243,148,115,
+245, 2, 56,159,193,139,224, 84,169, 84, 29,220,220,220, 74,197,149, 76, 38,131, 66,161, 64, 82, 82, 18, 68, 34,209,115, 77,210,
+ 89,183,110, 93, 89,155, 54,109,166,143, 30, 61, 26,119,239,222,197,140, 25, 51,146,213,106,245,222, 3, 7, 14, 76,152, 58,117,
+170,168,115,231,206, 72, 75, 75,195,134, 13, 27,140, 97, 97, 97, 75, 82, 82, 82,150, 87,152,105, 69,162,247, 22, 46, 92, 72,213,
+106, 53,121,244,232,209, 83,206, 85, 94, 94,222,208,165, 75,151,202, 99, 99, 99, 5,231, 74,128, 0, 1, 2,254, 91, 14, 86, 85,
+ 45,104, 25, 37,226, 41,181,130,109,182,140,176, 42,191,157, 86,110, 27, 0,244,229,142, 71,254,101, 2,171, 50, 24, 57, 38,247,
+183,181,239,219, 15, 28, 50, 17,114,143, 87,160,127,188, 19,188, 38,181, 84, 96, 73,228,182,176,115,169,131,188, 2, 13, 46, 70,
+199,194,200, 49,185, 85,241,153, 76, 16, 77,254,248,127,163, 5, 29, 28, 28,144,155,155,251,148,163,101,109,109, 13,149, 74,133,
+188,188, 60,236,222,189, 27,213,205, 89, 68, 41, 93, 56,122,244,232, 47, 39, 78,156,200, 52, 24, 49, 22, 5, 87,206, 63,227, 90,
+201,229,114, 88, 89, 89, 33, 41, 41, 9,247,238,221,227, 41,165, 11,171, 81,209, 87, 25,134,185,177, 99,199,142,196, 46, 93,186,
+188,227,232,232, 56, 98,236,216,177, 86, 97, 97, 97, 88,184,112,161,232,196,137, 19,134,107,215,174,153, 56,142,155,150,148,148,
+180,193, 2, 85, 94, 94, 92, 61, 55,103, 5,226,234,185, 57, 85, 42, 85,123,149, 74,117,236,187,239,190,179, 78, 73, 73,129, 76,
+ 38,131,173,173, 45,226,227,227,177,112,225,194, 66,147,201,212,231, 57,243,155,204,198,198, 70,102, 52, 26,177,117,235, 86, 36,
+ 37, 37,181, 75, 78, 78,142,247,240,240,216,240,193, 7, 31,172,246,243,243,107,122,239,222,189,251, 5, 5, 5,147, 82, 82, 82,
+238, 86, 70,226,224,224,208,206,213,213,149, 92,190,124, 25, 19, 38, 76,208, 79,158, 60,185,180,207,149,224, 92, 9, 16, 32, 64,
+192, 75,137,176,106,182,255,117,168, 82, 96,165, 23,105,220, 54,108,219,187,124,199,158,125,227,198,143, 30, 33,239,210,101, 52,
+196,249,183,192,101, 70, 64,213,168, 3, 8,107,141,171, 55,174,227,230,195, 4,109,145,150,221,156,103,208,124, 86, 78, 88, 84,
+185,218,118,110,110, 46,234,214,173,139,227,155,155, 52,211,107,211, 36, 65, 78, 0,129,189,225,196,233,126,119,206,157, 59, 87,
+ 0, 96,115,163, 70,141,118, 85,197,121,253,250,245,249,129,129,129, 7,102,206,156,185,180, 81,163, 70,125,198, 47, 88, 7,201,
+199,163,161,137,186, 9,235, 46, 67,225,224,224,128,172,172, 44,132,135,135, 35, 63, 63,255, 40,165,116,230,141, 27, 55,110, 85,
+197, 73, 41,189,210,180,105,211,196, 54,109,218,216,234,245,250,239, 62,249,228, 19,171,194,194, 66,100,100,100, 32, 51, 51, 19,
+ 87,175, 94, 61, 97, 52, 26, 63, 74, 77, 77,125, 92,133,168, 42,229,228,121,190, 84, 92,189, 40,206,178,120, 81,156, 54, 54, 54,
+159,237,219,183,239, 41,231, 42, 46, 46, 14, 11, 22, 44, 40,212,106,181,125,212,106,181, 69, 19,116, 86,149,238, 60,207,195,100,
+ 50,129, 82, 10,169, 84,154, 7, 0, 37, 98,170,187,165,156, 25, 25, 25,161, 79,158, 60, 25,100, 99, 99,131,201,147, 39, 75,151,
+ 44, 89,178, 45, 55, 55,183,198,206,213,255,231, 85,235, 5, 78,129, 83,224, 20, 56,255,109,156, 47, 27,170, 20, 88, 81, 81,212,
+ 0,224, 35,127,127,187,249, 95,175,255,109,253,207,187,246, 12, 30, 55,252,117, 81,112,139,174,120,156,114, 0,231,194,207,152,
+178,243,233,190,124, 61, 59, 33, 42, 42,175,218,177,255, 34, 17, 76, 51,103,191, 37, 2, 0,177, 24,166, 89,253,251,135, 54,107,
+214,172,227,192,128, 52,201,132,201,197,206,214,250, 53,111, 73, 66, 67, 67,119,201,100,178,141,177,177,177,121,150, 68,162, 68,
+ 48,245,109,213,170,213, 43,159,126,250,233, 87,253,234,121,181, 30,220,174, 11,196, 98, 49,174, 93,187,134,172,172,172, 48,134,
+ 97,166, 95,191,126,253,156, 37,124, 7, 14, 28, 72, 4,128,162,162,162,133,141, 26, 53,146, 70, 71, 71,227,225,195,135,136,137,
+137, 1,199,113, 15, 18, 19, 19,107,212, 33, 78, 46,151, 95, 5,112,231, 69,114,150,197,139,226,212,104, 52, 75, 22, 45, 90,212,
+107,254,252,249, 50, 91, 91, 91,220,184,113, 3,243,231,207,175,145,184,170, 14,148, 82, 24,141,198, 26,141,252,172, 0,211, 3,
+ 2, 2,154, 44, 90,180,168, 81, 73, 95, 46,193,185, 18, 32, 64,128, 0, 1,255, 29,129,245, 63,161,149,151, 13,224,205, 32,127,
+ 59,223, 37,235,126,221,108, 37,229, 59,106,244,204, 5,141,142, 25,119, 61, 42,239,145,165, 23, 91,184,153,138,203,110, 47, 0,
+224,239,239,111,147,224,129, 2,243,190,132, 84, 64,173, 86,127, 93,155,200, 92,187,118,237, 28,128, 54, 65, 65, 65,131, 15, 19,
+ 50, 11,136, 5,165,116,201,245,235,215,247,213,132,167,117,235,214,117, 11, 11, 11,127, 54, 24, 12,129, 60,207, 75,207,158, 61,
+ 11,173, 86,139,232,232,104, 13,207,243,187,107, 26,174,216,216,216, 59, 47,154,243,175, 8,103, 98, 98,226, 53,149, 74,213,131,
+ 16,114,114,250,244,233,178,154, 58, 87,213,193,201,201,169, 40, 37, 37, 37, 83,171,213, 58,167,166,166,234,157,156,156,106, 53,
+247, 8,165,244, 1, 33,164,197, 39,159,124,178,224,211, 79, 63,253,236,171,175,190,146, 8,125,174, 4, 8, 16, 32, 64,192,127,
+ 78, 96,153, 81, 34,166,186,116,233,226,106,115,225, 82,122,225,139, 8, 64, 84, 84, 84,225,156,113,164,212,217, 18,137,158,127,
+134,237, 18, 65,181,175,182,255,207,207,207, 95,146,149,149,213, 54, 47, 47,207,244,248,241, 99, 13, 33,196, 68, 8,209,240, 60,
+191,128,231,249, 13, 47, 51,167, 90,173,190,232,225,225,209,233,226,197,139, 83, 11, 11, 11,215,170,213,234, 75, 47, 42,179, 69,
+ 68, 68, 24,149, 74,229,200, 1, 3, 6,140,229,121,126, 67, 82, 82,146,177,182, 92,148, 82, 61,128,233,132,144,189,183,110,221,
+218,121,233,210,165,100, 65, 92, 9, 16, 32, 64,128,128,255,164,192, 50, 35, 52,244,197,136, 43, 51,202, 59, 91,255, 52,238,221,
+187, 55, 28,192,240,255,143,156, 0,144,146,146, 18,254, 87,240, 2, 64,114,114,242,113, 0,199, 95, 20, 31,165,244, 26, 33,164,
+ 30,138, 71,137, 8,226, 74,128, 0, 1, 2, 4,252,119, 5,150, 0, 1,255, 38,148, 44,105, 36,136, 43, 1, 2, 4, 8, 16,240,
+175, 1, 1,208,188,146, 66,203,226,209, 1,132,144,230,181, 40, 20,111, 11,156, 2,167,192, 41,112, 10,156, 2,167,192,249,255,
+139,179, 58,238,151,101,116, 34,121,206,209, 92,213,222, 60, 97, 8,171,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,255,223,
+192, 8,183, 64,128, 0, 1, 2, 4, 8, 16, 32,224,197,162,198,125,176, 90,183,110,221, 16, 0,194,194,194, 30,252, 85,129, 34,
+132,124,168, 84, 42,199,181,108,217,210, 79, 34,145, 48,185,185,185,243, 67, 67, 67,231, 87,116,110, 64, 64, 64,120,175, 94,189,
+124,207,156, 57,163, 47,249, 47,202,126,115, 28,151, 24, 30, 30, 30, 34, 36,245, 63, 3,165, 82,121, 76, 46,151,251, 20, 79, 48,
+ 74, 97,226, 57,112, 60, 5,199,241, 48,114, 20, 6,189, 54, 78, 87,152,219,187, 86,220,129,175,215,225, 56,126, 41, 5, 93, 79,
+ 40,153, 64, 9, 93, 79, 40,249,128, 50,100, 61,225,233,251, 16,153,190,129, 73,244,169,136, 23,207, 86, 71,237, 74,120, 25,238,
+231,252,249,243,159,171, 82, 52,119,238,220, 10,215,159, 10, 10, 10, 58, 36,151,203, 27, 84,246,191,162,162,162,228,200,200,200,
+174, 47,115, 94,245,240,240,120,133, 97,152, 53, 0,154,149, 59,116, 23,192, 71,106,181,250,212,191, 45,204,110,110,110,231, 88,
+150,109, 84, 88, 84, 84,152,159,151,231,107,107,107,251,200,202,218,198,134, 51,113,247, 51, 50,210, 94, 17,222, 64, 2, 4,252,
+139, 5, 86,112,112,112, 99, 0,157, 9, 33,157, 41,165,175, 52,109,218,212,189,168,168, 8,193,193,193,169,132,144,115, 37,171,
+ 95,159,141,136,136,136,121, 17, 1, 98, 89,118,249,119,223,125, 55,109,242,228,201,165, 34,233,246,237,219, 85,157,239,181,108,
+217, 50,251,248,248,120, 72, 36, 18, 72,165,210,210, 15,203,178,104,219,182,109,141,174,239,228,228,100,235,230,230, 54,159, 16,
+ 50,148, 97, 24,182,186,243,121,158,231, 40,165,187,210,210,210,230,102,101,101,229,215,228, 90,173, 66, 90, 26, 1, 82,201, 53,
+ 40,119, 45,252,102,149,163, 43,155, 52,105, 18, 46, 18,137,188,202, 10,202, 50, 34,181,194,223, 28,199, 37,222,185,115, 39,196,
+210,123, 33,183,182,254,140, 48,162, 30,160,124,211, 98, 50,230, 46,229, 77, 39,181, 69, 69,203, 45,137,175, 76, 38,243,137,184,
+126,189, 81,212,189, 88,248,214,175, 3,189,193, 4,157,222,136, 3, 39,175, 33,192,175, 30, 6,246,235, 89,235,188, 98,226,201,
+188,217, 31,190,221,109,201,154,237,173,102, 77, 30,161, 88,178,102,123,200,172,201, 35,108,151,172,221, 30, 50,123,202, 91,182,
+139,214,252, 22, 50,123,202, 91,246,139,215,252,166, 7,240, 94,109,174,241,110, 11,159, 66,134, 51,201, 42, 76,123, 86,164,251,
+241, 86,156,205, 63,241,224, 46, 89,178,164,177,193, 96,136,126,103, 88,200,194,166, 13,221,210, 42, 58, 39, 55, 55,205,237,225,
+221,240, 57, 16, 75,252,252, 90,207,170,242,249,148, 72, 36,245,207,157, 59,215,200, 60,211, 62,199,113,224, 56, 14, 38,147, 9,
+122,189, 30,111,188,241,198, 11, 25, 16, 19, 18, 18, 50,150, 82,186,184, 56, 91,146, 69,225,225,225,107,159,163, 34,166, 16,137,
+ 68,159, 72,165,210,206, 38,147,201, 15, 0,196, 98,113,180, 78,167, 59,107, 50,153,190,165,148, 22,212,132,143, 97,152, 85, 97,
+ 97, 97,254,182,182,182, 48, 24, 12,165, 11,195,179, 44,219,180, 77,155, 54,235, 0, 52,178,148,203,203,203, 43,156, 16,226, 85,
+147,235, 83, 74, 19, 19, 19, 19, 67,106,248,190,108,244, 36, 94,237, 86,183,142, 10, 0, 96,109,109, 99,115,237,246, 99,183,224,
+102,117,133,210, 77,128,128,127,171,192, 10, 14, 14, 62, 12,160,115,211,166, 77,173,122,246,236,137,160,160, 32,248,248,248, 64,
+ 46,151, 3, 0,178,178,178,220,163,162,162,222,188,113,227,198,155,151, 47, 95, 70,112,112,176, 6,192,133,136,136,136, 10,221,
+136, 30, 3, 58, 77,150, 43,100,223, 1, 64,122, 82,102,114,226,163,180, 53,201,201,201,203, 41,165,124,153, 23,166,239, 59,239,
+188, 51,117,202,148, 41, 56,116,232, 16,182,111,223, 14,157, 78,135,220,220, 92,132,134,134, 86, 24, 78,142,227, 18, 71,141, 26,
+ 37,138,137,137, 49, 85,230, 96,213,176, 70, 56,127,216,176, 97, 31,251,251,251,151, 46,235, 98, 52, 26, 75,191,179,179,179, 49,
+117,234, 84,243, 11, 17, 60,207,227,244,233,211,147, 63,255,252,115, 0,248,164, 34,206,158,157, 27,132,139, 8,241,226,255, 39,
+202, 18, 79,156,123, 20, 2, 16,246, 90,120, 36, 41,247,146, 5, 0,180,110, 21, 88,173,184, 19,137, 68, 94,215,175, 95,119,147,
+ 72, 36, 22,197,141,231,121, 4, 5, 5, 89,116,174,167,167,103, 87, 27,133,221,246,193,195,223,117, 12, 12, 10, 18,123,169,148,
+ 48,154, 76,136,125, 28,223, 58,242, 70, 68,224,241,131,191,143,243,244,244, 28,145,148,148,116,166, 42, 30, 35,199, 35,242,206,
+ 3,156,184,112, 29, 3, 36,114, 20,105,245,200, 47,210,227,231, 63, 46, 34, 49, 45,183,214, 25,183, 77,155, 54,158, 54, 34,151,
+ 54, 83,222,123,205,230,155,239,183,217, 76,121,239, 53,172, 88,255,115,233,247,228,119, 7, 97,249,247,219, 20, 83,222, 29,132,
+ 53, 27,182,180,107,211,166,141,231,213,171, 87,147, 42,227,171, 44,141, 24,206, 36,219, 28,149,196, 2, 64,250,134, 13, 48,164,
+166, 66, 53,119, 46, 0, 96,124, 51, 47, 89, 77,194,220,188,121,243, 82, 65, 92,165,112, 52,153, 18,111,223,190, 29, 82,157,184,
+ 50,153, 76, 84, 36, 18,205, 57,127,100,254,238,246,173, 27, 63,117, 51, 99,238,199,216,207,251,114,238,144,157, 71,243,233,155,
+125,108,163,163,195,150, 84, 41,178,120,158,103,116, 58, 29,238,223,191, 95,225, 44,251, 12,195,112,181, 73,167, 46, 93,186,200,
+ 10, 11, 11,127, 83, 40, 20, 45, 11, 11, 11,199, 82, 74,191, 12, 13, 13,117,103, 24, 6, 61,122,244,248, 50, 36, 36,228,177, 76,
+ 38,251, 94,171,213,222, 80, 40, 20, 35, 66, 67, 67,117, 22,138,171, 87,108,109,109,127,222,191,127,191, 99, 80, 80, 16,147,145,
+145,129,122,245,234, 33, 43, 43,171,245,185,115,231,130,223,125,247,221,119, 9, 33,163, 40,165,231,106, 16,220, 38, 54, 54, 54,
+116,244,232,209,132,227,254, 23,221, 31,127,252, 17,193, 13, 82, 27, 76, 24, 98, 85,164, 53,208,220,243, 55,229, 31, 80,134, 94,
+120,242, 36, 39,183,138,240,121,205,223,252,145,155, 84, 42,133,209,104, 44,253, 80, 30, 0, 5, 40, 15, 80,158,130, 82, 0,148,
+128,231,120,172,152,185,185,214,207,131,181,141,141,181,135,135, 50,213,202,218,218,154, 10,229,154, 0, 1,255,122, 7,171,111,
+104,104, 40, 76, 38, 19,108,109,109,193,178,108,121,119, 3,175,188,242, 10,218,180,105,131, 30, 61,122,224,222,189,123, 86, 95,
+125,245, 85,165,118,196, 91,211,250,195,187,145,187, 89, 68, 40,207, 31,186,190,244,135,249,123, 92, 0,124, 90,230,180,177,227,
+199,143, 39,153,153,153, 24, 58,116,232, 57,157, 78, 55,136, 82, 90,229,114, 57,145,145,145, 47,180,249,143, 16, 50, 84,169, 84,
+ 98,199,142, 29,208,235,245,207, 28,183,179,179,195,157, 59,119,202,214, 32, 17, 24, 24,200, 18, 66,134, 86, 38,176, 24, 66,188,
+142,132, 62,112, 51,111, 15, 27, 24, 40,233,213,185, 65,170,136,145, 82, 0,100,246,236,217,165,226,138, 82,138, 5, 11, 22, 88,
+ 28, 94,137, 68,130,187,119,239,130,101, 89, 60,234,216,184,184, 32,191,158, 0,150,101, 17,217,178,184, 86,219,238,126, 54, 68,
+ 34, 17, 20, 10,133,165,226,170,139,187,210,107,255,204,185, 75,109,181, 70,138, 63, 79,135, 33, 94,125, 2,148, 82, 40,221,156,
+208, 62, 56, 72,236,215,162,165,219, 79,235,150,239,247,244,244, 28,148,148,148, 20, 90,185, 88,224,224,215,184, 62,182,238, 63,
+135,197,223,239, 70,102,158, 22,249, 69,197,247,181, 71, 59,127,252,184,162,246, 78,103,211,250,245,189,183,238, 60,134,246,109,
+ 91, 99,235,206,163,104,215,182, 53,182,238, 42,222,222,182,235, 24, 58,181,107,131,109,187,142,161,185, 95,163, 58,153, 79,114,
+151,163,138,185,189,158, 73,163, 65,197,105, 84,143,149, 16,115,218, 60,153, 48, 1, 0, 74, 5, 86,141, 31,182, 18, 65, 92,221,
+121, 85,137,224, 50,226, 10,105,105,105, 36, 39, 39,135, 58, 56, 56, 12, 41, 43,178,204,226,234,247, 35,121,208,196,172, 33,191,
+254,122,150, 31, 57,178,115,116,116,216, 18, 63, 96,110,133,139,104, 27, 12,134,199,189,122,245,162, 0,160,215,235, 61,165, 82,
+169,164,156, 0, 83,117,232,208,225, 25,129, 86, 93,211, 97, 97, 97,225,111,187,118,237, 26,236,238,238,142, 65,131, 6, 29,247,
+247,247,151, 90, 91, 91,227,200,145, 35,240,242,242,114,177,179,179, 59,188,116,233, 82,172, 92,185,178,206,241,227,199,183, 3,
+ 24,108,193, 51,218,163,107,215,174, 59, 14, 29, 58, 36,151, 72, 36,208,104, 52,184,115,231, 14,236,237,237, 33,149, 74, 49,104,
+208, 32,182,125,251,246,206, 93,187,118,221, 67, 8, 25, 65, 41, 61,105,105, 26,105, 52, 26, 58,115,230, 76, 88, 91, 91,195,198,
+198,166,244, 99, 37,229,200,250,121,245,173, 62, 94,150, 98, 53,251,243,145,203, 54,253,116,240, 76,157, 58,246, 95,198,199,231,
+230, 84,234, 98,177, 45, 48,227,211, 25,102,129, 10,169, 84,250,148,203,110,254, 45,145, 72, 16, 24, 24, 88,109,216,252,252,252,
+ 54,176, 44,235, 90, 78,248,178,115,190,152,101,186,117,231,158,141,209, 4, 27,173,222,136, 69, 11,190, 52,177, 12,203, 54,111,
+222,124, 31,165, 52,253,206,157, 59, 31, 8, 69,157, 0, 1,255, 46,129, 5,133, 66,129,107,215,174,129, 16, 2, 91, 91, 91,216,
+217,217,193,222,222, 30,121,121,121,136,138,138,194,221,187,119,241,248,241, 99, 48, 12, 3, 95, 95, 95,160,120,218,135,178,110,
+ 76,105,219,222,111, 43, 14, 65,174,144,129, 16,160, 85,207,150, 8,233, 22,128,219, 87, 31,125,164, 82,169, 54,171,213,234,251,
+132, 16, 81,243,230,205,223,109,219,182, 45, 86,174, 92, 9,157, 78,247,109, 69,226,170,162, 81, 11, 31, 12, 22,159,151,136, 24,
+111,131,137, 79,216,176,207,216, 41, 48, 48, 48, 60, 40, 40,168,222,173, 91,183,140,102, 55,171,124, 51, 89,217,126, 89,229, 57,
+ 51, 50, 50,192,243,188,197,174, 80, 78,206,179,239,216,114,139, 71, 63,117,108,209,210,149, 14,249,185,105, 88,248,245, 47, 48,
+ 26,141,152, 54,109, 26,120,158, 7,207,243,224, 56, 14,217,217,217, 64, 5,213,208,242,225, 52,199,137,101,217,167, 4,112,117,
+219, 85,113,186,186,186,218,200,228,214,219, 63,157,189,208,246,102, 76, 34, 14,157, 14, 3,165, 20, 7, 54,125, 9, 0, 24, 52,
+126, 1,146,146,211,209, 62,184, 41,222,121,255, 19,219, 85, 75,103,111,119,117,117,109,144,158,254,191,201,103,203,114, 26, 77,
+ 60,118, 31,189,140,228,204, 2,140, 26,220, 13, 58,189, 17,105,169,201,216,242,253, 55,152, 56,102, 47, 28, 21, 86, 30,190,190,
+190, 49,101,239,145,173,173, 45,171,213,106,207,197,196,196,188, 87, 89, 56,141, 70, 99,223,153, 31,143,195,170,205,187,209,204,
+215, 29,135, 78, 92, 65,171,230, 62, 56,124, 58, 12,237, 90,212,195,209,179,225,104, 31,224,139, 51,151,111,227,163, 15, 70,226,
+179,143,206,245,173, 81, 26, 45, 89,233,144,159,151,134, 63,151,108, 67,218,218,181,136,155, 60, 25,173, 74,242,196, 53,134,129,
+196,211, 19,176,171,254,126, 86,132,187,119,239, 66,167,123,214,168,145,201,100,104,218,180,105,149,156,102,231, 42, 53, 53,149,
+164,166,166,194,198,198,134, 68,223,185,205,249, 53,107, 62,132,203,218,185, 25, 0,138,157,171, 60, 20,221, 91, 13,205,253, 53,
+144,228,220, 98, 54, 45,120, 95, 63,254,203,141,209,230,103,180,124, 56, 35, 35, 35, 75,239, 79,219,182,109,239, 94,184,112,161,
+ 73, 25, 23, 24, 38,147, 73, 98, 50,153, 26,153,155, 13, 77, 38, 19,116, 58, 29, 70,140, 24,193, 86, 21,119, 43, 43,171,150,238,
+238,238,184,122,245, 42,230,205,155, 39,109,214,172, 25,238,223,191, 15,134, 97, 48,118,236, 88,248,251,251, 35, 61, 61, 29,173,
+ 90,181,194,249,243,231, 3, 45,200,243,182, 54, 54, 54, 63, 29, 60,120, 80,206, 48, 12,242,243,243,193,243, 60, 58,116,232, 0,
+ 66, 8,110,221,186,133, 47,190,248, 2,123,247,238,197,254,253,251,173,130,131,131,127, 34,132,248, 81, 74,243, 45, 72, 35,170,
+211,233,168, 92, 46,135, 92, 46,135, 76, 38,131, 76, 38,131, 68, 34,129, 70,207,226,253,185,143,117, 98,153,130,111,217,194,183,
+193,196,241,131,153,133,203,182,156, 6,112,160, 50, 78, 53,189, 3,167,102, 4,199,183,132, 99,208,132, 87, 32, 17, 75, 33, 17,
+ 75, 32,149, 72, 33, 46,249, 45, 17, 75, 32, 21,203,192,186,104,171,205, 75, 98,177,216,229,250,245,235, 14,101,159,101,147,201,
+ 20, 61,121,242,100,223,193, 3,251,187,239,220,123,136,125,123,216, 32,206,195,221, 45, 35, 33, 33,238, 1, 0,135,224,224, 96,
+ 90,211,252, 89, 83, 8,156, 2,231,223,132, 86, 0,202, 86, 48,244, 0,164,230, 98,187,228,221,230, 92,110, 63, 0,164,155,139,
+183, 74,182, 51, 0, 68, 1,240, 43,217,199, 1, 8, 3,144,253,188, 1, 22,149,188,180,104,153,155, 70, 42,184,145,200,203,203,
+ 67, 94, 94, 30, 18, 18, 18,176,126,253,122,136,197, 98,136, 68, 34,136, 68, 34, 48, 12, 83,218, 95,161, 50,156, 60,120,126, 13,
+128, 53,193,193,193,226, 31, 46,239, 62, 60,123,235, 71,221,219,244, 12,102,195, 79,220, 26, 2, 96, 17,128,190,163, 71,143,118,
+ 1,128,109,219,182,101, 0, 56, 98,177,139, 35, 98,188, 87,127,247, 75,157, 41, 31,189,109, 22, 20, 94,155, 55,111,118, 76, 76,
+ 76,124,170,150, 40,145, 72,170,237,151, 69, 41,221,245,224,193,131,143,149, 74,101,105, 65, 82,182,153,208,100, 50, 65, 46,151,
+151,138, 33,157, 78,135,223,126,251,205, 68, 41,221, 85, 5, 39, 98,238,156,194,253, 59,103,192,113,252, 83, 98, 74,171,213, 98,
+222,188,121,165,238, 21, 0, 76, 40,113, 74, 44, 69, 85,206, 21,203,178,184,224, 91,172, 4,250,165,211,103,250,106,149,135, 88,
+ 42,159,214,239,245,145, 78, 38,202,150,138,171,226, 56, 20,139, 11,169, 88, 4, 43,153, 24,247, 31, 37,160,158,103, 48,186,247,
+121,205,241,228,225, 61,211, 0, 84, 56, 8,193,200,241,232,215, 37, 24,223,239, 56,131,188, 2, 45,242,114,178,144,145,112, 23,
+209, 55,195, 32,149, 74,113,229,202, 21, 91,123,123, 7,219,250,245,235,129,227,120, 92,184, 18, 14,107,107, 43,236,216,254,107,
+ 61,159,122,245, 17,247, 56,246,189, 74,132,173,168,125,136, 31,242, 50,226, 33, 18,137,208, 62,168, 1, 68, 34, 17, 58, 4, 55,
+ 2,203,178,232,216,170, 9, 88,150, 69,231, 54,254,104,208,160, 1,120,158, 23, 85,243,178, 64,204,237, 83,136,137, 58, 3,202,
+243,224,248,226,230, 95, 10,192,144,156,252,108,188, 82, 82, 64,237,220,106,243, 82,194,244,233,211,115,212,106,181,161,252, 49,
+149, 74, 37,217,187,119,175, 67, 85, 83,167, 72, 36, 18, 63,145, 72, 20,157,149,149,197, 91, 91, 91, 51, 28,103,226,253,154, 53,
+103,207, 31,153, 95,186,246,228,188, 5,243,119,191,217,199,110,200, 47, 91, 14, 82,137,107, 7, 66, 88,153,105,220,151, 27,165,
+ 16, 75,252, 44,172, 52, 48, 58,157, 14,247,238,221,171,118, 81,238,138,222, 23,229, 28,172,119, 6, 13, 26,116,252,131, 15, 62,
+144,155, 43, 47, 34,145,168, 84,244, 63,124,248, 16, 12,195, 96,211,166, 77,208,233,116,213,102,124,145, 72,244,241,158, 61,123,
+236,165, 82,105,169,184,162,148,130,101, 89,220,189,123, 23, 43, 86,172,192,232,209,163, 17, 31, 31, 15,165, 82,137,105,211,166,
+ 41,150, 45, 91,246, 49,138,151, 62,173, 14, 55,245,122,125,136,149,149, 21,100, 50, 25,204, 66, 11, 0, 34, 30,186,223,142,141,
+141,109,225,227,227,226, 81,207,255,214, 31, 93, 58,182, 12,112,118,118,104,103, 22, 88, 21, 86, 80, 11,234, 32, 63, 70,132,206,
+157, 59,227,236,217,115,232,223,191, 63, 56,137, 4,188, 84, 10, 94, 42, 5,149, 72, 0,169, 20, 68, 42, 5,181,182,182, 40,251,
+176, 44,139,148,148,148,167,246,141, 31, 63, 62,110,228,200,145,110, 0,133, 90,157, 68, 63,249,120, 74, 82, 70, 70, 6,117,119,
+119, 23, 44, 4, 1,255, 41, 84,163, 69, 92, 9, 33,135,202, 28,239,111,222,158, 49, 99,198,172,165, 75,151,222, 33,132, 28, 42,
+187,223,124, 94, 9,247,161,138,182, 75,254,235, 60,115,230,204,230,203,150, 45, 91,210,174, 93,187, 29,151, 46, 93,138,125, 97,
+ 2,139, 82, 74, 8, 33,180,186,151,101,121,231,228,233,166, 32,203, 38,210,142,136,136, 48,122,122,122,254,112, 55, 60,182,123,
+147,144, 70,176,178,145,245, 36,132,172,145,201,100,159,140, 26, 53, 10, 87,174, 92,193,237,219,183,127,172,201,178, 39, 6, 19,
+159, 48,229,163,183, 97, 48,241, 9,102,135,106,218,180,105,146, 11, 23, 46, 24, 42,115,176, 42,227, 74, 75, 75,155, 27, 22, 22,
+134,170, 58,185,191,249,230,155,101, 11,163,210, 78,238,149,190, 21,121, 10,131,193,136,194, 66, 77,177,176, 42, 41,188, 57,142,
+ 67, 97, 97, 33,134, 13, 27, 86, 42,186,120,158, 71, 90, 90, 90,173, 18,147, 97, 24,139,157,171, 74, 57, 88,182,119,203,128, 32,
+241,233, 75, 55,159, 42, 92, 95,123,127, 17,164,146, 98,113,101, 37,151,192, 74, 38, 70,130, 58, 21, 77,253,154, 73,206,158, 56,
+212,187, 82,129,101,226,176,230,215, 19, 0, 33,216,125,232, 52, 66,234, 89, 99,254, 23,211, 49,116,232, 80, 72,165,114,236,217,
+179, 11,203,215,109,197, 4, 31, 31, 80, 0,109, 66, 2,241,245,134, 29, 88,184, 96, 1,179,107,231,238,142,213,133, 87, 44, 22,
+131,101,217,210, 66,187,252, 55,203,178,176,100,174, 55,202, 83, 24,140, 70, 20, 21,106,192,241, 60,120,158,130,242, 60, 64, 41,
+ 60, 23, 47,134,231,226,197,184,198, 20, 15,224,243, 47, 44,132, 70,163, 1,186,180,172,177,184,210,235,245, 80,171,213,134,200,
+200,200,103, 74,191,128,128,128, 84,189, 94, 95,101,120,103,205,154, 21,179,100,201, 18, 63, 39, 39,167,232,155, 55, 35,141, 45,
+ 91, 6,136,203,247,193,106,220,168,113,238,188, 5,243,119,191, 61,102,192,144, 13, 95, 12, 55,125, 48,247,103,145, 37, 29,221,
+203,184,100,143,123,244,232, 97, 81, 87, 30,141, 70,147, 82,217,177,144,144,144,177,132,144,197,141, 27, 55,150,117,235,214, 13,
+231,206,157,195,226,197,139,121,147,201,148, 1, 0,237,219,183,119, 93,184,112, 33,137,138,138,130,131,131, 3,210,210,210,182,
+134,132,132, 44,172,170,227,187, 84, 42,237,210,170, 85, 43, 70,167,211,149, 86, 74, 24,134,193,221,187,119,177,108,217, 50,140,
+ 24, 49, 2,141, 27, 55, 46,125,182,186,118,237, 42, 94,189,122,117, 23, 75, 4, 22,195, 48, 31,117,239,222,253, 27, 20,143, 34,
+ 44,251,146,139, 6,240, 25, 0,196,197,101,164,140,120,163,253,157,238,157,131, 66, 26,212,243, 84, 86,197,151, 41,126, 8,101,
+144, 21, 36, 98, 9, 70,127, 62, 16,135, 14, 29,194,164,121, 35, 75,156,172, 98, 7, 75, 44,150, 64, 34,150, 66,234, 90,187,133,
+ 8, 74,222, 35,196,206,206, 30, 0, 96,111,111,111,126,199, 17, 0,148, 97, 24,161, 75,150,128,255, 12, 44,209, 34,102,129, 84,
+ 94,104, 45, 93,186,180,127,249,125,101,197, 84, 69,191,203,254,119,217,178,101, 75,202,112, 23,189,136,248,188,176,165,114,140,
+198,170,215,237,237,214,173,219,100, 91, 91,219,239, 74, 94,188,120,114, 49, 9, 79, 46, 38,193,175, 73,179, 14, 65, 1, 33, 57,
+ 35, 70,140,128,179,179, 51, 62,251,236, 51, 10,224,167,154, 92,123,195, 62, 99,167,178,219, 55,110,220,168,117,191,172,146,145,
+113,159,160,146,254, 84,181,204, 52, 48, 26,140, 40, 44,210,194, 96, 48,192,104,228, 96, 50,113, 8,246,183,197,207, 27,167, 67,
+175, 55,192,200, 21,239, 43,118,202, 56,200, 36, 58,116,110,235,109, 4, 97, 52,103, 47,199,217, 85,197,223, 44, 34, 30, 44,203,
+226,102,128,103,133,206, 85, 79,181,193, 98,161, 69,121,174,137,187,187, 27,226,143, 94, 45,174,133, 91,203,113,108,219, 66,216,
+ 88, 23,215,228,251,142,158, 85, 44,178,100, 18, 24, 12,122,184,185,215,133,137, 51, 54,169,140,207,100, 52,232, 91, 54,242,132,
+131,173, 21, 34,175, 93,198, 39, 31,190,135,177, 99,223,133, 68,110,139,179,103,207, 32, 94,157,134,135,137,217,248,112,238,247,
+ 48, 26, 57, 24, 76, 28,140, 38, 30,171,182, 28,130,129,171, 94, 25, 73, 36, 18, 76,155, 54,205,170,178,227, 59,118,236,208, 88,
+ 36,176,104,137, 8, 46,210, 64,167,213, 65,111, 40, 78, 11,174,190, 24,139,190, 24, 9,163,209, 8,205,240,118, 48, 24,141,224,
+ 62, 26, 12,131,193,128, 4,107, 17,211, 49, 68,101, 4, 97, 52, 23,174, 37,218, 89, 42,176, 42, 11, 15,165,180,194,166,195,202,
+ 68, 86,203,150, 1,209,163,135,133, 44,189,120,233, 90,250,197, 75,215,158, 57,175,126,227,144, 71, 31, 44,218, 49,179, 38,226,
+ 10,120,186,185,240, 57,243,253,151,161,161,161,238, 10,133, 2, 49, 49, 49, 96, 89, 22,132,144,204,136,136, 8,119, 0,152, 55,
+111, 94,134, 88, 44,118,102, 89, 22, 31,127,252, 49, 88,150,117,157, 52,105,210, 28, 0,149, 10, 44,147,201,228,103,107,107,139,
+252,252,252,210,251, 40,149, 74, 49, 99,198, 12,188,253,246,219,165,226, 74, 42,149, 98,235,214,173, 8, 14, 14,134, 94,175,183,
+200,185, 75, 76, 76,188, 6,160,147, 5,162,166,184,153,149,231,171,204, 88,138, 66,111,104, 31, 75,193, 73, 36,216,113,224, 0,
+222,126,251,109, 72,165,178, 82,231, 10, 18, 9,136, 84, 10, 70, 34, 1,199,202,106,124,127,121,158, 71, 94, 94, 30,187,117,235,
+214,250,205,154, 53, 35, 20, 64,211,166,254,228,208,159,127,214, 81, 40, 20,177, 78, 78, 78, 6,161,200, 22,240, 18,186, 92,135,
+202,139,172,231,225,154, 49, 99,198, 44, 0,116,198,140, 25,179,204,219, 75,151, 46,213, 0, 80,255,107, 4, 86,117, 14,214,202,
+149, 43,209,162, 69,139, 42, 11,159,213,171, 87,227,231,159,127, 94, 73, 41,125, 84,147,107,191,255,154,248,170,181,149, 68, 89,
+164, 49, 36,111,220,111,108, 19, 16, 16, 16,222,174, 93,187,250,225,225,225,149, 58, 88,149,205,141,245, 87, 76,211, 64, 41,133,
+222, 96, 68, 81,145, 6, 90,189, 30, 83,167,175,179, 40,237, 13,250,124,209,171,125, 94,177,170,206, 73,180,164, 15, 86,117, 77,
+131, 79,139,101, 19,204, 26,160,160, 72,139,174, 35,102,224,218, 31,223, 1, 64,169,184,178,146,137, 33,151,138,193, 16,128,160,
+114,110,163, 38,111,224,231,147,223, 59,191,254,199,159,189, 94,123,101, 28,166, 76,153, 2,145,212, 26,142,206,174, 48,113, 20,
+117, 84,110,120,152,152,141, 61,107,167,151,116, 59,163,120,229,173,121, 88,249,197, 56, 44,159, 87,125,173,158,101, 89,172, 93,
+187, 86, 83,222,181, 42,235,100, 89, 42,130,205, 46,163, 70,167,199,167, 51,191,183, 60,141,122,119,178,178,244,222, 86, 52,112,
+194, 82, 1, 86, 94,100, 1, 96, 1,160,178, 82, 84,230, 12,248,117,232,247,197, 63,249, 50,228,121, 30,127,254,249,231, 51,238,
+106,249, 52,180,212,109,229,121, 30,113,113,113,184,125,251, 54,218,181,107,135,220,220, 92,136, 0, 76,187,117, 11,254,163, 70,
+ 65, 87,210,117, 65, 42,149, 98,252,248,241,127,209, 27,190,164, 31, 27,169, 58,161, 10,173, 19,225,222, 92,134,159,150,237,195,
+228, 5,163,225,218, 84,142, 21, 51, 55,149, 30, 95,254,195,188,146,126, 88, 82,200, 21, 53, 15, 70, 94, 94,158,232,155, 21, 43,
+ 90,182,105,221,214,234,237,209, 99, 25,189,137,199,162,175,190, 99,119,110,223,230,188,109,219, 47, 86,114,185, 60, 90, 40,142,
+ 5,188,132, 46, 87,255, 23,201,101,118,176,150, 46, 93,122,103,233,210,165,207,184, 97,127,169,192, 98, 89, 22,101,135, 44, 87,
+ 84,200, 91,210, 7,107,234,212,169,176,181,181,173,240,152,193, 96,160, 55,111,222,140, 74, 78, 78,222, 76, 41,173,241,188, 56,
+ 82, 49,227,190,242,155, 45, 94, 83, 62,122,155, 7,138, 71,107,173, 91,183,206,193,220, 7,171,108, 63,172,234,250, 96,185,185,
+185,205,255,250,235,175,167,244,237,219,151, 97, 24,230,169,194,207, 60, 45, 67,217,143,209,104,196,193,131, 7,167, 44, 93,186,
+ 20,149,185, 94,148, 22, 55, 63, 21, 22,105,160,213, 21, 23,176, 15,111,239,182, 52, 7, 84,123,138,217,185,106, 27,147, 85,161,
+115,117,212,189,184,224,234,151, 94, 61, 23, 97,216,152,199,113, 9,173, 61, 92, 28,144,157, 91, 0, 89, 73,179,160, 25,102,113,
+101, 37,147,192,209, 94,129,172,204, 52,136,197,226,152, 42, 50,112, 28, 33,164,211,176,193,253,142, 51,172, 72, 94,246,152,216,
+202,206,250,196,197, 91,142,169,217, 69,224,203,196,147,167, 20,147, 23, 90,102, 98,138,197, 98, 76,154, 52,169, 82,129,115,224,
+192, 1, 77,205, 5,150,174,102,105, 84, 3, 39,179, 58, 7,203, 82,129, 85, 30,230,209,133, 18,137,196,175, 68,124, 89,140,128,
+128,128, 35,214,214,214,245, 44, 61,223,210, 73, 71, 9, 33, 11,186,117,235,182,216,203,203,203,237,131, 15, 62, 32, 34,145, 8,
+ 33, 33, 33, 46, 95,126,249,101, 46, 0,248,249,249,217,154,223, 49,171, 86,173, 66,116,116,116, 58, 33,100, 97,149,207,186, 84,
+122,215,222,222, 62,164, 91,183,110,200,205,205, 69,124,124, 60, 20, 10, 5,252, 87,172,192,173,137, 19, 17,176, 97, 3,152,110,
+221,138, 5,166, 76,134, 91,183,110, 65, 38,147,221,173,140,207,211,211,179, 13,165,244,107, 0, 29,240,191,102, 65, 10,224, 34,
+ 33,228,243,164,164,164,171,207,252,137, 33, 76,113, 69,173,234,132,146,230,186, 67,151, 32,195, 59,239,188, 3,137, 68, 10, 72,
+165,248,244,211, 79,203,188,143,164, 96, 75,250, 99,241,156,212,146,218, 54, 45, 39,214,137, 76, 42,149,141, 30,243, 46,243,249,
+167,159,240, 70,147,137, 23,137,196,204,180,217, 75,152,251,247,110,203, 10, 11, 11, 25, 82,147,154,149, 0, 1,255, 17, 7,171,
+172,208, 42,227, 66, 85,134,244,178,253,178, 42, 19,104,101,251,100, 1,208,189,136,176,138,202,188,220,203, 63,136,247, 35, 35,
+ 35, 27, 53,107,214, 12,241,241,241, 21,142,148, 3, 80, 60,132,217,202, 10, 15, 30, 60, 0,128,251,149, 93,232,244,233,211,107,
+ 0,172, 49,111,171, 84,170,118, 93,134,118,185, 24,208, 45, 8,187,191,221,153,155,156,156, 28, 96,158, 19,139, 16, 66, 84, 42,
+213,219, 98,169,232,205, 6,205,235,116,230,120,254,235,211,127, 92,152, 95, 25,119,249, 62, 88, 38,147,169,214,125,176, 8, 33,
+ 67,251,246,237,203, 68, 69, 69, 97,216,176, 97,248,229,151, 95, 42,189,121,111,191,253, 54,118,236,216,129,222,189,123, 51,203,
+150, 45, 27, 90,185,192, 2,140, 6, 19, 10,139,180,208,106,117,127, 89,198,123, 94,231, 10, 0, 40,111, 58,121,235, 70, 68, 96,
+139,224,118,226,199, 9, 41,144, 75,197, 79, 9, 44,107,153, 4,114, 89,241, 62, 15, 87, 71,132, 93, 58,107, 48,153,140, 39,171,
+ 17, 22,113,168, 96,146, 70,153,173, 75, 76,207, 14, 45, 28, 43,116, 60,103,142, 70,139,223, 87, 90, 36,176,126,252,241, 71, 77,
+101,238,149,165,247,128, 82,148, 54, 17, 22,105, 94,108, 26,185,187,187,187,186,185,185,173,119,112,112,144,155,251, 14, 85,118,
+188, 42,135,171, 58,113, 85, 50, 47, 86,244,146, 37, 75,106, 36,178,164, 82,105,189,139, 23, 47, 54, 50,247, 11,172,234, 91,175,
+215,227,205, 55,223,180,200, 22, 12, 15, 15,255, 41, 40, 40,232,161,171,171,235,137,246,237,219,203,162,162,162,176,104,209, 34,
+ 34, 22,139,237,204,207,101,126,126, 62, 68, 34, 17,178,179,179, 65, 8,121, 39, 60, 60,252,104, 85,156, 58,157, 46, 52, 52, 52,
+ 52,112,224,192,129,108,116,116, 52, 68, 34, 17,120,158,135,174,109, 91, 4,108,216,128,219,159,124,130, 87, 30, 63,134,206,104,
+132, 92, 46,199,209,163, 71, 13, 69, 69, 69,161, 85,196,125,211,229,203,151,155,201,229,114, 24, 12, 6,240, 60, 15,134, 97, 8,
+203,178, 29,155, 53,107,182, 26,197, 35,151, 74, 81,175,158,155,219,164,247,250, 53,225,120,158, 75, 82,167,167, 87,233, 86,218,
+166,195,213, 79, 86,218,223, 74, 34,150, 64, 34, 42, 22, 86,102,231, 74, 34,150, 64, 34,145, 66, 38,181,168, 9,159,150,207, 59,
+230,190, 87, 54, 54,214,124,195,134, 13,163,238, 63,120,232, 15,128,177,183,119,176,184, 95,172, 0, 1,255, 50,135,138, 84, 37,
+148,202, 62, 98,101,182,211, 81,188,182,114,255,146,223, 40,243,251, 26,128, 86,229,206, 53, 31,215,151,251, 54, 31,143,252,171,
+ 29,172,126,239,189,247,222,134, 94,189,122,117,159, 54,109, 26, 20, 10, 5,146,147,147, 75, 31, 90,169, 84, 10,111,111,111,104,
+ 52, 26,156, 59,119, 14, 57, 57, 57,167, 1,188,111,233,133,147,147,147,175, 60,184,113, 63,179,227,192, 54,206,126,109,154, 56,
+ 36,198, 36,182, 5,112,137, 16, 66, 60, 61, 61,127, 24,254, 73,223, 49, 93, 95,111, 13,137, 84,140,132, 7, 41, 85,114,149,239,
+131,245, 60,115, 99, 49, 12,195, 18, 66, 48,108,216, 48,139,206, 31, 62,124, 56,206,158, 61,139,170,154, 19,139,155, 8, 13, 40,
+ 42,212,160,232, 5, 10, 44, 66, 8, 56,142, 43,117,174,204,159,158,106, 3, 24,134, 41, 21, 22,125,211,120,139, 57,181, 69, 69,
+203,207,159, 60, 48,190,137,127, 75,215,118, 65,141,113, 63, 54, 1,203,103,253,175,169,229,211, 9,195,177,117,199, 65,168, 60,
+156,161,211, 20,224,216,225,131,185,121,121,121,203,107, 27,135,173,251,206, 2, 0, 58,189,245,244, 24,129, 97, 31,175,178, 44,
+ 3,139, 68, 24, 59,118,108,165, 14,214,137, 19, 39, 52,101,157,200,234,210,168,176, 80,139, 34,141,230,133,165,145, 74,165, 10,
+104,219,182,237,137,141, 27, 55, 58,187,184,184, 64,173, 86, 63, 37,176, 84, 42, 85, 64,155, 54,109, 78,108,220,184,209,217,213,
+213, 21,241,241,241, 22, 79, 17, 82, 78, 92, 33, 61, 61,157,100,103,103,243,142,142,142, 53, 18, 89, 12,195, 64,167,211, 33, 58,
+ 58,218,210,103,196,226, 73, 71,235,213,171,247,203,119,223,125, 39,123,242,228, 9,140, 70, 35,162,162,162,158, 25,132,192,178,
+ 44,102,204,152,129,217,179,103,175, 7,224, 83, 21,159,201,100,250,118,212,168, 81,239, 37, 37, 37, 57,186,255, 31,123,215, 29,
+ 22,197,245, 69,207,155,237,133,222,119, 65, 64, 65,164,136, 5,176, 99, 55, 86,140, 41,118,141, 37,177,198, 22, 19, 91,162,177,
+ 70,108, 81, 99,172, 81, 99,139, 13,163,198,216, 53,246, 46, 96, 69, 5, 69, 81, 96,233,189,108,159,153,223, 31, 2, 65,126,148,
+ 5, 77, 52,201,156,239,219,111,203,204,158,121,243,230,205,155,243,238,187,239, 94, 71, 71, 36, 37, 37, 65, 40, 20,130,101, 89,
+144,246,237,209,250,233, 83,232,105, 26, 82,169, 20,143, 30, 61,194,198,141, 27, 11,244,122,253,138,242,184, 60, 61, 61, 69, 20,
+ 69,121, 9,133, 66, 12, 26, 52,232,149,109,219,182,109, 67, 11,223,172,160, 81, 31,137,242,105, 86,168,205,135,239, 49,138,162,
+200,184, 17,221,235, 5,183,104,224,127, 63,234,217, 19, 85,106,230,229, 74,197,127,142, 45,244, 42, 49, 32, 20,254,233,111, 85,
+228,115,197, 19,137, 74, 86, 20,178, 34, 17, 24,145,105,193,130, 75,139, 38, 66, 8,108,109,109,181, 43, 87, 44, 21,203,229,114,
+ 26, 0,204,205,228,244,222,109,107, 96,107, 99,163,101,107, 98, 10,229,192,225,221,197,205,183,244,223, 55, 47,176, 34, 34, 34,
+158, 2,232, 20, 16, 16, 48,240,194,133, 11,203, 39, 79,158,108, 31, 28, 28,140,204,204, 76,184,185,185, 65,161, 80, 32, 60, 60,
+ 28,183,111,223, 78,103, 89,246,203,240,240,240, 29,229, 8,128, 10,179,109,179, 44,203, 42,149,202, 48,125, 97,225,216, 70,193,
+222, 56,191,239, 98,168, 66,161, 24,229,226,226, 50,113,200,140,247,135,181,251,160, 9,162, 35,159,225,218,201,187, 72,122,145,
+142,161,173,167, 86,200,105,138, 15, 86,233,247,178, 62, 88,165, 57, 25,134,161,117, 58, 29,246,236,217, 99,146,200,218,181,107,
+ 23, 52, 26, 13, 24,134,161, 43, 58,119,154,161,137,185,133, 61,156, 93,125,161,215, 21,128, 97, 76, 31, 89,178, 85,212,167,209,
+104,196,220,185,115, 49,101,202, 20,204,159, 63,191, 82, 33,178,102,205, 26, 84,117,141, 50, 51, 51,243,148, 74,229,224,221,155,
+127,216, 55,112,196, 4,115,151,150,141,240,243,222,163, 48,232, 13,144,136,249,176,182, 48, 67,221,218,206,208,105, 10,177,246,
+199,229,185, 26,141,122,112, 89,223,179,234,100, 89, 31,250, 97, 91, 44,222,120, 8, 23,119,254,105,160,108, 61,112, 54,126, 89,
+ 54, 30, 1, 1, 91, 42,229,164,105, 26, 2,129, 0, 59,119,238, 84, 87,180,154,144,199,227,161, 34,129, 85,246, 26, 89, 88,216,
+195,197,221, 15, 58, 77,254, 27,187, 70,182,182,182, 83, 54,109,218,100,171, 86,171,241,240,225, 67, 60,124,248, 16,132,144, 7,
+101,183, 23, 20, 20,224,222,189,123,197, 34,231,129,169,245, 89,108,185, 74, 75, 75, 35, 73, 73, 73,144,201,100,212,157, 59,119,
+ 52, 13, 27, 54,124,128, 34, 31,173,170,206, 93,171,213,198,117,236,216,177, 34,139,145,179, 88, 44,126, 37,101, 83,113,208,209,
+178, 83,133,229,149, 51, 62, 62,254,214, 15, 63,252,224, 90,175, 94, 61,252,244,211, 79, 90,115,115,115,209,228,201,147,193,227,
+241,200,202,149, 43,217,204,204, 76,253,244,233,211, 69,151, 46, 93, 66, 65, 65,193,173,170,218, 39,203,178,121,132,144,145, 45,
+ 91,182,220,126,236,216, 49,169,151,151, 23,114,114,114, 94,138,245,173, 91, 49,110,220, 56, 72,165, 82, 68, 71, 71,163, 87,175,
+ 94,133,133,133,133, 35, 75,199,192, 42,205,105, 52, 26,137, 64, 32, 96, 25,134,193,204,153, 51, 95, 9, 44, 42,147,201, 32, 21,
+209,216, 48,207, 67,254,197,226,100,249,132,177,159,124,242,178,157, 48,244,253,168,103, 79, 54,252,124,232, 44,128, 11,149,157,
+ 59, 99,153, 3, 59,175,151, 22, 44, 65,113,204, 43,161,248,149,213,131, 47,227, 96,189,140,139, 85,213,185,151,117,197,176,177,
+177, 49, 6, 6, 6, 68,169,213,106, 94,177,150,178,179,179,187, 87,180, 47, 91,171, 86, 45, 93,153,230, 89,173,123,179, 26, 3,
+ 61,142,147,227,228, 80, 77, 11, 22, 0, 32, 50, 50,114,167,191,191,255,177, 69,139, 22, 45, 58,112,224,192,136, 9, 19, 38, 16,
+ 11, 11, 11,132,133,133,177,153,153,153, 91, 68, 34,209,148,171, 87,175,214, 40, 94, 4,203,178, 91, 47,253,126,109,204,128, 47,
+122,146, 9,203,134,182,186,117,238,222,131,134,173,188,208,160,165, 23,194,207, 68, 97,205,215,187,119, 24, 13,198,111,147,146,
+146, 94, 84,198, 99,138, 15, 86,241,139,207,231, 87, 25, 7,235,192,129, 3, 19,186,119,239, 78,221,184,113,227,255,124,174, 74,
+251, 97,157, 58,117, 10,122,189, 30, 97, 97, 97, 76,101,113,176, 24,224,183, 21,203,190, 29,178,121,219, 17, 17, 69,244,184,122,
+225, 87,228,100, 85,110,149, 19, 10, 5,248,101,215,111,122, 62,159,247,168,146,178, 62,143,136,136,176, 93,188,120, 49,143,162,
+ 40,172, 89,179,230, 21,203, 85, 89,220,189,123,151, 49, 24, 12, 85, 94, 43,149, 74,117,202,201,201,169,255,250, 21,243,182,182,
+239,242,190,149,143, 79,125,190,131,131, 43,248, 20,133,236,204, 52,220,188,118,201,120,252,200,193,108,157, 78, 55, 84,165, 82,
+157,122,157, 6, 24,186,225, 96,185,191,127, 60, 97,121, 85, 86, 20,163,193, 96,224,203,229,114, 24,141,198,114,197, 85,199,142,
+ 29,165,151, 47, 95, 86,235,245,122,240,120,188, 74, 21,211,203,107, 52,123,200,230,237,111,246, 26,209, 52,237,155,149,149,133,
+130,130, 2,132,135,135,179,107,214,172, 73,203,206,206,254,186,244,246,204,204, 76,228,229,229,225,230,205,155,236, 79, 63,253,
+148,150,155,155,251,181,169,245, 87, 28, 23, 43, 43, 43,139,145,201,100,148,193, 96, 48, 52,108,216, 80, 34, 20,154, 22,243, 10,
+ 0,110,221,186,213,181,162,109,173, 90,181,138,185,124,249,114,221,210,185, 9,141, 70,163, 80,171,213,122,245,234,213,171,202,
+254, 67, 42,149, 14,248,245,215, 95,119, 74, 36,146, 6, 26,141,230,179,212,212,212,173, 0, 92,121, 60, 30, 30, 63,126,156,110,
+ 52, 26,251,204,156, 57,115,115, 65, 65,193, 93, 51, 51,179,129, 38,246, 27,199, 9, 33, 3,253,252,252,126,158, 51,103,142,188,
+ 93,187,118, 2,165, 82,137,192,192, 64, 68, 71, 71,227,200,145, 35,250,181,107,215, 22, 22, 22, 22, 14,103, 89,246, 84, 37,131,
+ 14, 22, 0, 49, 26,141,175,228, 48, 21,137, 68, 16, 8, 4, 40,212, 82, 24, 49, 51, 86,205, 64,160, 94,184,116,199, 17,150, 5,
+ 81, 37,165,167, 39,167,100, 95,231, 27, 12, 23,226, 84,121, 57,149,149,147, 78,151,193,221,194,191,100,112, 71, 8, 1,197, 80,
+ 32,122, 2, 30,205, 3,207,192, 3,225,243, 95, 90,183, 76, 75,119,197, 26,141, 70,132,132,132,224,240,225,195,248,224,131, 15,
+ 88, 84,226, 43,114,248,240, 97,152, 98,189,229,192,129,195, 91, 18, 88, 0,112,239,222,189,108, 0,163,154, 52,105,178,109,252,
+248,241,135, 25,134, 17, 48, 12,211,227,214,173, 91, 23, 95,231,224, 73, 73, 73, 17, 74,165,242,107,123,103,171,208,174, 3, 91,
+161,126, 19, 55,208, 70, 26,151,143,222,194,150,133, 7,119, 39,196, 39, 12, 43,157,171,176, 34,152,226,131, 85,214,130, 85, 17,
+ 87,106,106,234,236, 5, 11, 22,224,187,239,190,171,246, 42,194,138,246,185,114, 51,113, 84,139, 32,133,203,199,239,183,234, 66,
+ 17,194,106, 43,241,179, 33, 4,108,177,167, 5,159,207,123,116,254, 90,124,195,138,246, 77, 78, 78,238, 56,118,236,216, 63, 40,
+138,114, 43, 53,170, 64, 37, 15,251,164,140,140,140,206,166, 92,155,228,228,228, 99, 46, 46, 46,245,206, 31, 63, 52,227,210,233,
+ 99,237,104, 90,239, 73, 64, 32, 20, 10,159, 24,104,227, 57,131, 78, 23,154,144,144,240,218,129,216,102,140,250, 0,207, 85,233,
+224,243,121, 47, 99, 79, 21, 93,238, 95, 87, 77, 70, 64,192, 47, 21,254, 79, 44, 22, 31,251,249,231,159, 67, 62,249,228, 19,194,
+231,243, 75,166,221,138,207,159,162, 40, 92,187,118, 77,173,211,233,176,101,203, 22, 86, 42,149, 86, 26,184,246,175,186, 70,249,
+249,249,195,123,245,234,181, 21,128, 24,192,227,156,156,156,209, 42,149, 42,161,244,246, 15, 62,248, 96, 43, 0, 49, 33,228,255,
+182, 87,133,226,144, 13,214,214,214, 15,138, 44, 87,146,154, 56,186, 87,210,190,121, 21, 77, 31,154, 50, 85, 88,148, 91,240,163,
+226,239, 65, 65, 65,243,198,140, 25, 83, 58,217,243, 5, 0, 30, 53, 24,156,157, 34,132,212,159, 57,115,230, 68,169, 84,218, 94,
+173, 86,251, 0,128, 76, 38,123, 88, 88, 88,120, 86,175,215,255,192,178,108,118,101, 28, 79,158, 60,209,213,169, 83, 39,218,104,
+ 52,250, 59, 56, 56,148,172, 62, 20,137, 94, 90,147,174, 61,180, 9, 79, 76, 76,108, 82,195,193, 99, 66,101, 22,229,138,254, 83,
+217,118,157, 78,151,118,229,202, 21,155,211,167, 79,243,104,154,198,241,227,199, 75, 6,125,229,205, 6,198,198,198, 66,167,211,
+105,184,199, 28, 7, 14,111, 7,228,175,156,166, 55,213,132,168, 84, 42,251, 73,228,226,177,110,245, 20, 13, 85, 79, 83,163,242,
+178, 11,127, 73, 74, 74,218,192,178, 44,205,153, 79,255,189,156, 34,153,197, 9,194, 19,186, 85,248,192,161,245,207,117,133,185,
+ 93,202,227,108,214,172,153,179, 80, 40, 92,170,213,106,187, 85, 22,165,157,199,227, 25,165, 82,233, 49,141, 70, 51,165,108,178,
+231,127, 98,125,206,157, 59,183, 92,147,132,169,171, 8,103,207,158,205, 84,167,156,141, 26, 53, 58, 43,147,201,202, 13,168, 89,
+ 88, 88,248,226,246,237,219,157,223,133,250, 44, 94, 45,103,138,223, 81,105,206, 26,173, 34,124, 75,247,145,139,139,139,196,194,
+194, 98, 41, 69, 81, 10, 19,197,177, 46, 53, 53,117,114,122,122,122, 50,215, 47,113,156,220, 20,225, 59,106,193,250,171,161, 82,
+169,246, 0,216,195, 93,142,255, 22,138,197, 83, 77, 80, 36,150,250,255,215,234,172, 88, 32,149,243,251, 67, 0,111,124, 73,190,
+ 41,225, 24,222, 5,212,212,161,187, 72, 64,181,254, 39,156, 99, 66, 66,130, 6,192, 56,174,231,224,192,225,159, 1,110,130,158,
+ 3, 7, 14, 28, 56,112,224,192,225, 13,131, 0,240,175, 96, 68,104,178,233,143, 16,226, 95,131, 17,231, 61,142,147,227,228, 56,
+ 57, 78,142,147,227,228, 56,255, 91,156, 85,113,255, 91,166, 30,223, 9, 31, 44,142,147,227,228, 56, 57, 78,142,147,227,228, 56,
+ 57, 31,172,127, 19,184, 41, 66, 14, 28, 56,112,224,192,129, 3,135,183, 37,176,204,156,124,125,237,221, 27,109,181,169,213,240,
+142, 77,173,134,119,236,221, 27,109, 53,115,242,245,253, 47, 86,154, 82,169,148, 42, 20,138,129,174,174,174,167, 26, 55,110,156,
+235,236,236,252, 5,215,148,170,143,118,132,240,251, 19,242,249, 16, 66, 94, 12, 33,228, 69,127, 66, 62,111, 71, 8,255,223,118,
+158,243,199, 57, 55,191,120,124,208,177,249,227,156,203, 13,192, 54,247, 43,165,237,229, 19,125,127,248,122,156,179,205, 27, 26,
+ 89,154, 59, 58, 58,254,228,228,228, 20,231,232,232,248,220,209,209,241,103, 66,136, 37,215,226, 56,112,224,192,225,239,131, 73,
+ 15, 51, 27,183, 6,159,249,250,120, 79,153, 55,123, 6,113,118,178,151, 25,140,180,254, 89, 92,130,223,236, 5,139,246,217,184,
+ 53, 88,158,249,252,238,166, 26, 60, 4,136,139,139, 75, 63,129, 64, 16, 2,160, 88,168, 61, 48, 24, 12,135, 19, 18, 18,246,152,
+186, 42,168, 97,195,134,151,120, 60,158,107,117,142,205, 48, 76,220,237,219,183,219,212,164,194,156,157,157,251, 56, 59, 59,255,
+220,188,121,115, 89,227,198,141, 33, 20, 10,177,100,201,146, 47, 1,172, 48,249,220,219,181,227, 59,100,219,124,194,227,243,123,
+ 2,104,200,178, 0, 8,239, 14, 99,208, 31, 73,181,206,216,202,158, 59,103, 82, 24,113,133, 66,241, 53, 33,100, 40, 94, 46, 43,
+223,164, 82,169,150,254, 21,141, 68,169, 84,214, 34,132,180,103, 89,214,135,162,168,187, 12,195,156, 84,169, 84, 25,175,203,235,
+ 8,140,106, 25, 28,252,195,144, 47,191,228,169, 47, 92,192, 15, 63,255,188, 18,185,185, 0,176,166,186,109,169, 89,179,198,189,
+205,205, 17, 66,128, 0, 16, 16, 10,236,173,204,108,234,232,205,155,145,123, 76,137,165, 86, 17, 2, 3, 3,143, 0,232, 94,244,
+245,104, 68, 68, 68,143,234,114,100,197, 50,179,196, 2,159,214, 89, 79,206,206, 2,208,173,236,118,163, 70, 50,132, 39,168, 21,
+194, 99, 35,227, 1,124,255,154,226, 74,102,111,111,127,231,224,193,131, 46,205,154, 53,227, 3, 64,120,120,248, 39, 33, 33, 33,
+ 29,138, 76,250,185,111,163,163,105,209,162,133,181,209,104,220,198, 35,164, 57,195, 48, 86, 0, 64, 81, 84, 54,205,178,215,248,
+124,254,144,154, 6, 43,230,192,129, 3,135,127,172,192, 50,115,244,241,171, 95,223,247,203,227, 7,182,213,202,206,204,214,172,
+ 89,186, 53, 82,205, 23, 21,214,246,243, 18,174, 90,190,216,106,220,164,175, 38,153, 57,250, 92,207, 79,121, 24,101,234, 65, 21,
+ 10,133,171,187,187,251,254,175,191,254,218, 63, 56, 56, 88,224,224,224,128,148,148, 20, 60,122,244,200,255,242,229,203, 31, 28,
+ 60,120,240, 75,133, 66,241, 81, 85, 17,220, 1, 64, 46, 18,214,217,179,120,161,147,200,202, 26, 44,109,132, 85,253, 70, 0, 0,
+150, 97,144,116,238, 20, 24,131, 1, 44, 67,195,165,235,251, 47,127,103, 89, 52,109,218, 84, 88,147,202,114,113,113, 81,214,171,
+ 87,111,199,244,233,211,133, 90,173, 22,183,110,221,194,213,171, 87,153,212,212,212, 69, 38,139,138, 6, 31,250, 57,241,157,246,
+245,250,160,155,123,143,247, 28, 68,110, 78,246, 96, 24, 9, 30, 61,213,187,158,186, 24,217,245,232,241,147, 83, 28,252, 62,236,
+147, 26,117,224,110,101, 60,254,254,254,205, 41,138,250, 46, 49, 49,177, 88, 4, 45,105,214,172,217,183,165,247, 41,171, 81, 25,
+134, 1,159,207, 79, 41, 44, 44,236,119,239,222,189,200,242,120,103,141, 32, 6,163,241,101,187,224,243, 65,111, 59,233,114,160,
+ 83,167, 78,181,135, 15, 31,142,128,128, 0,132,135,135,183, 15, 11, 11,155, 88,171, 86,173,155, 6,131,225,168, 88, 44, 62, 23,
+ 23, 23, 87,163, 4,139, 66, 96,234,144, 47,191,228,153,197,197,193,236,214, 45, 12,202,205,229, 47, 6,166, 86, 71, 96, 5, 6,
+ 6,214,233,220, 41, 96,223, 7, 31,181,245,117,114,242, 19, 10, 4,118, 96, 89, 22, 6, 67,102,189,180,180, 7,189, 45, 45, 49,
+189,105,211,166, 31,223,184,113,227,177, 41,124, 77,154, 52,113,100, 24,102, 61,203,178, 66, 66,200,120, 0,221,143, 31, 63, 14,
+154,166,209,163, 71,143,238,129,129,129,117, 88,150,253,209,204,204,140, 85,171,213,159,222,188,121, 51,165, 50,203, 85,246, 19,
+102, 86, 50,223,163,171,119,208, 80, 36,243, 79,116,157,220, 69,113,204,202,131,154, 63,107,117,226, 53, 0,232,230,233,105, 94,
+199, 71, 54,205,204,194,223, 38, 39,241,212,180,110,158,158, 27,143, 61,121,146,247, 26, 98,120,233,182,109,219,106, 53,111,222,
+188, 36, 72,110,227,198,141,121, 75,150, 44,113,158, 60,121,242, 74, 0,195, 76,228,169,103,107,107,123,130, 97, 24,237,253,251,
+247,235, 21,255,238,208,232,163,150,182,230,242,142,105, 89,121, 23,210,239, 31, 60,111, 10, 87, 80, 80,208,112, 33, 69,253,180,
+124,230, 56,158,111,195,134,144,217, 57, 64,175, 82,161,192,104,176,185,118,251,126,143,197, 43,126, 74, 11, 10, 10, 26, 25, 30,
+ 30,254, 51,215, 37,115,224,192,225, 63, 35,176,196, 98,209,244,217,223, 76, 35, 89, 25,217,106,125, 94,174, 94,198,234,140, 22,
+ 50, 9,201, 77, 77,203,126,102, 33, 43,156, 60,105,130,100,218,244,111,166, 3, 24,100,170,184,242,241,241,185,177,113,227, 70,
+ 7, 27, 27, 27,228,228,228, 32, 35, 35, 3, 55,110,220, 0,203,178,232,214,173,155,184, 81,131, 6, 1,203, 87,172,184,170, 80,
+ 40, 90, 84, 37,178,248, 2, 62, 17,200,229,248,181,109, 0, 40,161, 16, 31, 63, 76,122, 41, 46, 12,122, 28,239,223, 19, 0,192,
+ 19,137,208, 55, 38, 21, 0, 32,145, 72,106, 92, 89, 44,203,182,104,213,170,149, 16, 0,190,252,242,203,220,130,130,130, 80, 66,
+200, 78,149, 74,149,104,202,255,237, 26,188,239,229,104,239,116,126,217,130, 17, 54,254,117, 60,160, 51, 24,144,144,154, 8, 22,
+ 34, 56, 57,200, 49,232,131, 70,194, 86, 65,194,186,223,175,249,227,156,163,127,175, 54, 41,247,126,187, 95,161,176,148,203,183,
+173, 92,185, 18,123,247,238, 5, 0,156, 61,123, 22, 94, 94, 94,242,170,202,240,232,209, 35,143,161, 67,135,238, 6, 80,183,188,
+237, 70, 35,248,161,223,237, 4, 0,108,219, 56,144, 23, 29, 29, 93, 91, 42,253, 51,151,114,219,182,109,209,182,109, 91, 42, 52,
+ 52,180,217,217,179,103,155,237,222,189, 91,239,236,236,188, 50, 49, 49, 49,172, 38,117,170,190,112, 1,102,183,110, 1, 23, 46,
+ 84,251,191,141, 27, 55,118,173, 95,223,254,234,247,203,190,181,255,253,240,125, 44, 91,246, 51,158, 60,121, 2, 0,240,240,240,
+192,192, 1,125, 4, 59,127, 89, 95,127,250,244, 57, 87, 2, 3, 3,131, 35, 34, 34,170,140,110,206, 48,204,250,208,208,208,247,
+205,204,204, 48,125,250,244,232, 58,117,234,192,194,194, 2, 27, 54,108,128,181,181, 53, 12, 6, 67,244,146, 37, 75,248, 42,149,
+ 10,171, 86,173,218, 92,202,186,245,127,104,211,189,237, 44,177,192,167,181,119,208, 80,152, 89, 40,176,113,215, 30, 60, 10,223,
+218, 90,107,120, 56,235,235,113,206,131,121,172,120,168,179,151,217,244,218, 65,237,108,235,214,239, 5,247,192, 91,118, 90,250,
+194,211, 89,159,123, 44,226, 75, 52,219,102, 47,251,127, 43, 33,233,179,143,231,159,123,211,230,222, 41,121, 6,203,150, 4, 13,
+ 37, 40,138,129,229,164, 80,246,108,219,182, 45,175, 88, 96,199,197,197, 65,167,211,193,207,207,143,210,233,116, 38,197,180, 82,
+ 42,149,245,218,180,105,115,105,199,142, 29,182,173, 91,183, 78, 43,189,205,201,214,170,203,249,253, 43, 39,124,247,195, 47, 62,
+ 14,126, 31,102, 87, 53, 16, 8, 10, 10, 26,222,160,158,199,166,149, 75,102, 19, 94, 65, 2,248, 86, 25, 0,147,129,164,221,155,
+ 1,153, 13,122,140,158,140, 38,205,154,241, 38, 76,250,122, 83,147, 38, 77,216,155, 55,111,110,225,186,101, 14, 28, 56,252, 39,
+ 4, 22,195, 50, 13,237,237,109, 36,171,150,110, 13, 87, 72, 40,226,228,162, 36, 34, 11, 43, 62,204,228, 98,138, 39, 80,123,120,
+184, 8, 25,150,105, 88,129, 32,121,101,133, 1, 33,132,184,187,187,239,223,178,101,139,131, 64, 32, 0,195, 48,176,183,183,199,
+211,167, 79,145,149,149,133,252,252,124, 60,121,240, 0,238,181, 92, 48, 97,228, 8,197,252,101,223,239, 39,132, 4,149,158, 46,
+ 44,203,201, 50, 44, 24,227,171, 51,106,132, 16,148, 55,191, 88, 81, 26, 25, 83, 87, 66, 48, 12,243, 76,165, 82, 65, 38,147,193,
+215,215,215,236,230,205,155, 23, 19,139, 77, 72, 85,157,123,159, 62, 60,133, 72,124,104,233,130,126, 54,132, 23,141,232, 23,217,
+240,116,105, 10, 91,203, 90, 72, 76,203, 71, 68,212, 81, 68, 63, 57, 2, 79, 23, 87,140, 28,232,105,181, 98,125,218, 97, 18, 56,
+202,147,141,216, 96, 40,143, 51, 47, 47,207,204,213,213, 21,206,206,206, 96, 24, 6, 52, 77,227,254,253,251, 37,159,139,243, 37,
+ 22,127, 94,185,243, 50,172,121,233,232,247, 97,119,100,102,102,154,153,122,238,197,226,106,223,247,202,250,234,130, 36, 33, 0,
+ 72,229, 10,253,199,147, 19,239, 55,105,210, 4,246,246,246,194, 43, 87,174, 76, 6, 16, 86,221,250,212, 3, 75,126,216,178,101,
+213,160,156, 28, 10, 0, 54, 17,194,232, 95, 70,213, 54,169, 45,117,126,175,241,129, 21, 43,102,217, 19, 54, 10, 54,150,139,113,
+227,198,115,232,245, 47,175,124, 70, 70, 42,198,127,158, 11, 62,223, 28,223,127, 63,219,182,111,191, 49,191, 22, 77,145, 49,149,
+149,147,101, 89,225,195,135, 15, 81,191,126,125,236,222,189,155,207,227,241,112,253,250,117, 72,165, 82, 12, 29, 58, 20,254,254,
+254,124,169, 84,138,139, 23, 47, 34, 55, 55,151, 84, 86,206, 11, 71,207,207,207,138, 61, 59, 43,153,119,162,235,198, 93,123, 48,
+ 98, 64, 63, 56, 25, 99, 47, 90,123, 82,243,187,245,104,249, 45, 79, 80, 43, 68,110,238,111,237,229,223, 11, 66,145, 25,198, 77,
+157,135,232,123,135,172, 11,243,238,126, 78, 27,226,107, 1,152, 88,150,147, 13,235, 77, 47,223,234, 16,120,218, 53,210, 77, 25,
+ 56,234,122, 82,228, 79,119,254, 60,186, 47, 31,148,218,170, 88, 92, 61,126,252, 24, 79,158, 60, 1,143,199,131, 90,173,126, 37,
+ 81,112,105,206,128,128,128, 81, 52, 77,127, 11, 0, 58,157,110,171,163,163,227,240, 31,127,252,209,150,199,251, 51, 83, 84,177,
+229, 42, 51, 59, 55,235,202,205,251,143, 38,143,234,221,238,194,181,123,241, 86,141, 62,120,145,125,251, 96, 78,121,245,217,162,
+ 69, 11,107, 17,143,247,211, 15,203,230, 18, 58,246, 15,136,125,219,129,111,230, 5,218,144, 8, 77, 86, 62,212, 79,147,161,223,
+176, 26, 30,163, 39, 97,233,146,239,200,128,193,159,254,228,233,233,185,255, 73, 41, 11,222, 95,177, 74,137,227,228, 56, 57,206,
+119,147,243, 63, 39,176, 8,161,114,245,122,131,192,162,150,179,225,227,143,218, 52,136,188,126, 47,218,204,198,146,106,212,180,
+129,223,189,232,132, 8, 24,105, 61, 33,148, 73,126, 29, 46, 46, 46,253,102,207,158,221,192,194,194, 2, 12,195,192,210,210, 18,
+105,105,105,208,235,245,200,205,205,133, 54, 63, 15,250,188, 92,220,126, 17,135,224,118,237,240, 94,139, 22,190, 71, 13,134,126,
+ 0,118, 87,196, 73, 83, 60,214, 54,160, 41,250,196,102,128,209,235, 16,230, 97, 91, 98,181,234, 31,151, 13, 66, 8,104,157, 22,
+ 71,155,214,133,216, 76,142,134, 83,102,215,184,178,146,146,146, 34,221,220,220,142,117,237,218,181,219,200,145, 35,169,228,228,
+228,227,142,142,142,173, 82, 82, 82,170,156, 30,117,136,161,135, 14, 25, 25,224, 97,103, 69,225,247,203, 39,208,220,231, 67,200,
+196, 2,164,101,169, 65, 17,130, 39,207, 78,131,166,229,184,253,240, 5, 90,248,203,209,186,153,165, 75,254, 31,153, 35, 81,241,
+116, 25,201,202,202, 66,106,106, 42, 12, 6, 3,140, 70, 35,122,247,233,131,109, 91,183,162,160,160, 0, 26,141, 6, 58,157, 14,
+ 12,243, 82, 79, 36,167,229,227,198,237,227, 8,106, 80, 15,168, 36,226, 55,159, 15,227,143, 43, 7,242,205,101,128, 80,108,175,
+207,203,203,131, 92, 46,135,186, 32, 73, 56,100, 68,137,101, 75,120,246,236, 89, 68, 68, 68, 64,169, 84,154,212,142,202,195, 19,
+224,167,103, 52, 61,179,219,129, 3, 14,151, 15, 28, 96,174,253,254,123,130, 56, 47,111,131, 41,255,109,214,172,113,239,113,227,
+122,248, 74, 37, 82, 36,188, 88, 9, 31, 31, 33,190,252,194, 22,161,139,211, 1, 0, 19,198,185, 32, 40,200, 22,185,217,251, 96,
+231,240, 53,190,156,252,129,103,126, 62,251, 9,128,173,149,183,119, 50,254,151, 95,126,137,238,220,185, 51, 63, 50, 50, 18, 98,
+177, 24, 82,169, 20, 18,137, 4, 82,169, 20,201,201,201,208,233,116, 8, 11, 11, 51, 22, 77, 33, 86,136,162,105,192,110,147, 59,
+ 43,142, 61, 10,223,218,218,153,122,122,251,131,201, 45,159, 69, 94,191,157,127,230,143,203,243,141, 26, 73,124,118,194,169,105,
+117,154,220,182,251,124,202, 92,172, 94, 58, 27,143,174,159,207,116,116,205, 91, 67, 19,237,214, 86,229,196,185,111,215,110, 46,
+127,236,204, 1,134,177,195, 63,182, 60,172,184, 50,226, 48, 31,233, 41,153,119,151, 33,246,134, 90,236, 85,127,112,189, 58, 68,
+119,230,204, 25,105,155, 54,109,160, 86,171, 95,222, 11, 60, 30,126,249,229, 23,198,104, 52,158, 45,175,156, 6,131,225,219,136,
+136, 8, 69, 97, 97, 33, 6, 12, 24, 48, 97,206,156, 57,114,129, 64,240,242,254,162,233, 87, 44, 87, 11, 86,108, 63, 49,233,219,
+ 53,103, 79,236, 94,172, 92, 48,125,120,187, 65,227,190, 59, 11,224,120,249,214, 80,227,182, 21,139,103,240,196, 86,122,144, 38,
+157,161, 79, 85,227,249,166,145,208,229,168, 81,111,254, 60, 0, 66,232,244, 60, 28,254,160, 15,120, 54, 74,124,214,166, 21,127,
+195,249, 75,219, 0,124,192,117,205, 28, 56,112, 40,131, 38, 0,236,139, 62,167, 23, 61,199,108, 1, 20, 91,217,237, 1,232, 0,
+136, 74,253,167,236,247,210,251,150,253, 94,250,115, 58, 94,250, 54,219, 3,160, 1,220, 0, 80,109, 63, 81,170,232,161,194,150,
+122,192,176,101,172, 54, 23,158,196,198,169,219,181, 13, 82,156,189, 17, 19,217,245,195,247,154,182,233,208,172,121, 74, 70,110,
+172,147,189,133,252,202,245,107, 98,134, 97, 76,154,223, 17, 8, 4, 33,193,193,193,252,172,172, 44,200,100, 50,164,165,165, 33,
+ 49, 49, 17,122,189, 30,234,156,108,104,179,179,160,206,202,132, 33, 47, 27, 79,110, 94,135,183,171,179,184,200, 9,222, 36,148,
+181, 80, 21,103,176, 39, 20, 5,137,133, 57,164, 22, 22,224,241,170, 23,153, 66,169, 84,246,242,241,241,185,230,236,236, 60,179,
+104,132,255,121,104,104,104, 58,203,178,152, 54,109,154,133,133,133, 69,152,187,187,187,184, 42, 30,115, 27,186,119,179, 6,117,
+121,209,207,239, 34,200,235, 99,212, 86,180,193,147,196, 28,164,229,104,144,156, 89,128,122,245,166,192, 94, 57, 2,150, 78,163,
+113,247, 81, 60, 20, 78,181, 41,158, 64,216,181, 50,206,228,228,228, 87,190,239,218,185, 19,133,133,133,168, 91,183, 46,250,247,
+239,143,169, 83,167,162, 95,191,126, 80, 42,149,104, 93,151,143,225,131,123, 35, 53, 53,181,210,114,206,223,200, 10, 22,237, 84,
+ 68, 14,153,205, 70,214,237,120,236,254,147, 39, 79, 16, 29,253,255, 51,107,127,252,241, 7,114,114,114, 74, 30,192,166,192,209,
+209,113,134, 66,161,184,163, 80, 40,238, 43, 20,138,163, 41, 74,229, 67,131,135,135, 99,171, 15, 62, 32,126,125,251,242,226,229,
+114,242,172, 86, 45, 51, 83,184, 44, 44,208, 35, 40, 40, 88,148,157,245, 51,128,151, 34,114,248, 48,123, 92, 58, 95, 31,151, 47,
+ 6, 98,252, 56, 15, 80, 68, 2, 66, 9, 81, 88,240, 7,252,234,251, 11,205,205,217, 74,219, 82,145, 67,123,108,253,250,245,249,
+ 99,198,140,129, 88, 44,198,182,109,219,176,110,221, 58, 44, 95,190, 28,209,209,209,112,115,115,131, 66,161,128,163,163, 35, 31,
+ 64,108,209,127, 42,133,149, 39, 53, 95,107,120,120,209,218, 75, 30, 75, 40,135,150, 90,163,228,227,217,203, 84, 25,243,215,196,
+126,255,236,145,218,227,225,245,243, 25,209,247,126, 99,158,222, 60,155,174,138,201,247,152,191, 38,246,251,133,171, 19, 51,203,
+227, 58,127,126, 54,125,240,232,121,125, 65,126, 33,191, 87,183,142,234,209,195,250,215,179,145,121,255, 2,231,206,141,221,107,
+ 41, 6,207, 94,184, 74,247,217,152, 73,250, 77,155,127,102,243,242,242,144,155,155,139, 31,126,248,193,248,251,239,191, 39,210,
+ 52, 61,169,130, 34,242,138, 4, 17,250,244,233, 35,151, 74,165,136,143,143, 47,177,130, 2, 64, 82, 90,198,221,203, 55,239, 61,
+156, 60,186, 79,219, 2,173, 86,123,226, 92,248, 3, 63, 47, 55, 23, 66, 88,247,138,206,155, 71, 72,243,250, 13, 27,130,101,179,
+ 65,241, 93,145,176,125, 25,212,201,153, 40, 76,203, 4, 37,144,195, 0, 9,244,172, 8,146,134, 77,241, 60,226, 22, 28,205, 44,
+192, 39,164, 21,247, 28,225,192,225,191,137,202,180, 8, 0,123, 66,200, 97, 66,200,225, 25, 51,102,180, 7, 96, 75, 8, 57, 92,
+ 36,130,236,139, 62,139,138,247,169,224,187,125,105,158, 50,255, 45,253,217,110,198,140, 25, 29, 8, 33,135, 91,182,108, 57,184,
+ 72,200, 85, 27, 85,170, 13,158, 70, 23, 58, 99,230,108,202,194, 76,100,238,231, 91,219,250,247,147, 23, 34, 47, 95,187,245,192,
+ 92, 38, 17,231, 23, 20,136,150,255,184,206,149, 20,170, 77,117,242,246,181,179,179,131, 94,175,199,227,199,143,145,144,144, 0,
+189, 94, 15, 99, 97, 1,180,217,217,208,100,101,129, 41,204,135,144,102,160, 78, 79,131,181, 68, 4,252,185,194,176, 50, 83,101,
+137,152, 42, 79,112, 17, 66, 32,177, 48,135,200,220, 12, 20,159,103,114,229, 40, 20,138,192,198,141, 27,239, 61,115,230, 76,179,
+224,224,224,249,238,238,238,150,201,201,201,207, 83, 82, 82, 58, 46, 93,186, 84,107,111,111,143, 65,131, 6,121, 27, 12,134, 33,
+ 85,113, 9, 37,218, 6,110,142, 94,112,117,236, 5,165,109,115,100,228,106,145,150,173, 70,114, 70, 33,246,252,218, 31,167,142,
+245,199,173,139,131,241,248,250,112,100, 20, 88, 64, 98,211, 30, 0, 91,105, 4,221,107,215,174, 97,253,250,245, 37,175,213,171,
+ 87, 35, 51, 51, 19,245,235,215, 71,124,124, 60,142, 31, 63,142,228,228,100,216,219,219,227,214,173, 91,216,176, 97, 3,174, 95,
+191, 94,237, 70,162,209,104, 32, 16,217,234,183,109, 28,136,109, 27, 7,130,102,229,250,210,117,111,114, 99,163,168,161, 73, 31,
+124,208, 32,201,202,202,175, 97,195,134,221,250,246,237,235,209,172, 89,179,146,237,158,158,158,174,124, 62, 63, 89,169, 84,110,
+ 82, 42,149,141, 43, 37, 99,216, 0,107, 27, 95,232,180, 15,139,174, 49, 31,132,136,209,225,189, 7,104,213, 58, 2,122,131, 8,
+132, 18,131, 34, 18, 24,141, 25,176, 48,119, 4,203, 86, 25,145,184,251,241,227,199,177,126,253,122, 60,125,250,180,100,122, 52,
+ 36, 36,100,252,128, 1, 3,246,211, 52,141,195,135, 15,227,224,193,131,168, 83,167, 14, 26, 55,110, 12,189, 94,223,189,170,243,
+158,181, 58,241,218,206,229,199,250, 11,140, 86,141, 69, 98,183, 58, 84,158,172,215,231,237,236,229, 0,112,236,201,147, 60, 71,
+215,188, 69,133,121,247, 94, 88,187, 20, 44,174,202,193,157,101,193,134, 71,223,191,190,251,215,147, 57, 41,233, 25,130,128, 70,
+254,234,239,230, 78, 17,186,215,174,187,100,246,180,177,142,137,185,146,156,247, 38, 28,123,184,255,248,141,252, 79,134,143, 52,
+126, 58,114,156,230,196,201, 63, 14, 48, 12,211,176,162, 21,132, 12,195, 32, 41, 41, 9,247,238,221,195,211,167, 79,145,158,158,
+142,180,180, 52,228,229,229,149, 76, 43,202,242,114,143,172,222,242,251,109,185, 84, 42,107,214,192,203,245,122,100, 84,170, 92,
+ 42,149,121,213,118,173, 71, 72,249, 9,168, 25,134,177,122, 89,135, 4,121,247, 46, 64,147,153, 7,117,118, 62,212,153,249,208,
+234,121,208,104, 41,104,244, 20,236, 90,119, 70,126,129, 26,154,204,108, 48, 44,107,205, 61,102, 56,112,224, 80,201,243, 62,100,
+209,162, 69, 11, 43,219, 94,234, 93, 87,230, 59, 8, 33,135, 89,150, 13, 97, 89, 54,164, 72, 76, 21,235,132,195,165,121, 22, 45,
+ 90,180,144,101,217,144, 43, 87,174,236, 2, 80, 88,147,178, 86, 57,181,147,158, 30,157,111, 97,239,247,209,164,105,223, 30,253,
+101,227, 42,135,204,204,172,104,161, 68,170,145, 72, 68, 54, 83,167,205,181, 42, 40,204,249, 40, 63,211,244, 85, 79, 89, 89, 89,
+ 37, 15, 47,161, 80, 8,186,176, 0,180,186, 16,154,172, 12, 16,189, 22, 66,154,134,141, 76, 6, 87,165, 35,220, 29,157,170,228,
+227, 49, 52, 81,157, 58,138, 19,131, 63,124,101, 90,144,209,235,112,188,165, 55, 68,102,114, 72,173,172, 17,124,240,226, 75,161,
+ 35, 20, 2,179, 23, 87,201,235,228,228,100,167, 84, 42, 15,253,248,227,143,194,244,244,116,220,191,127,255,118, 92, 92, 92,142,
+141,141,141,185, 64, 32, 96, 98, 98, 98, 78, 63,122,244, 40,164,118,237,218, 96, 89,214,179, 42,190,188,108,185, 94,111, 96,144,
+152,250, 28, 9, 73,247, 96,105,230, 10,150,170,133,148,204, 66, 16, 56,192,160,121, 84,226, 75,166, 85, 39,160, 64,107, 90,222,
+ 94,189, 94, 15,131,193, 0,131,193, 0,157, 78,135, 79, 62,249, 4, 87,174, 94,197,206,131,231, 16, 31, 31,143, 58, 78, 50,244,
+239,215, 7,141, 26, 53, 66,120,120,120,141, 27,181, 87,167, 19,247,165, 82, 41,214,173, 91, 7,153, 76,134,234, 10, 44,133, 66,
+241,189,143,143, 79,221, 71, 5, 5,136,122,248, 16, 77,251,244, 1, 0, 92,186,116,169,100, 31,181, 90,141,129, 3, 7,138,158,
+ 62,125,250,233,195,135, 15, 63, 85, 40, 20,203,147,146,146,190,172,136,243,200,145,171, 24, 61, 58, 10,105,105, 47, 45,187,123,
+118,249,149,108,123,246, 84,143,174, 61, 94,206, 92, 89, 89, 89,225,251,239, 77,203,246, 64,211, 52, 54,108,216, 0,169, 84, 90,
+ 34,176,132, 66, 97,171,201,147, 39,127, 84,222,254,126,126,126, 85,114, 78,238,227, 34,185,245, 92,250,185,101,221,218,254,150,
+246, 13,145,110,188,213, 32, 50, 49,121,252,228, 62, 46, 43,151,135, 37,104,104,162,221, 74, 27,226,107,241, 37,154,109,166,148,
+241,201,177, 85, 58,235, 58,163,182, 37,167,230,124, 51,110,228, 32, 91, 43,107,199,252, 77, 63,134, 90, 81, 20,133,223, 35,116,
+ 89,245, 61,108,173,123, 53,255, 33,127,244, 23,179, 34,117,198,231,227, 17,127,248, 81,145,185, 27, 21, 9,172,196,196, 68,164,
+167,167,227,197,139, 23, 72, 75, 75, 3, 33, 4,105,105,105,213,178, 80,150,103, 81,214, 37, 36, 34,249,192,102, 56, 13, 28,132,
+122,243,230,129, 97, 4, 80, 23, 26,177,175,117, 71,228,230,168,161, 99, 8,172, 2, 91,226,189,195, 23, 65, 49, 70,224,234, 21,
+238, 9,194,129, 3,135,202,250,149,195,211,167, 79,255,218,196,221, 79, 3, 48, 41,180, 78, 89,193, 53,125,250,244,175,139,143,
+ 21, 26, 26,170, 6,160,122,227, 2, 11, 0,114,211,162, 98,109,221, 26, 38,229, 23,170, 37,214, 54,214,133,230,102, 34, 54, 39,
+ 59,135,247,240,113,180, 38, 63,233,241,163,106, 28,239,193,253,251,247,253, 19, 19, 19,241,226,249,115, 24, 10, 11, 64,116, 90,
+ 64,163, 70,167,214,173, 32, 1, 32, 33,128,144,209,131,199, 19, 33, 63, 63, 23, 0, 30, 84, 69,202, 24, 12,175,116,234, 37,211,
+130,230,230, 16,153,201, 33,182, 48,127,197,162,101, 10,164, 82,233,206, 13, 27, 54, 40, 20, 10, 5, 86,172, 88, 1,133, 66,225,
+211,169, 83,167,194,182,109,219, 74,237,236,236, 80,175, 94, 61, 4, 5, 5,225,236,217,179, 32,132, 60,169,138,207,168, 19, 69,
+ 60,136,165,107,229,230,223,194,245,136, 29, 48,232,116,168,237, 53, 3, 90,163, 29,228, 14,159, 66,173, 63, 4,125,246, 57, 0,
+128,200,162, 29, 82, 82,210, 1,144,123, 85, 89,238,202,126,191,115,231, 14,182, 30,184, 4, 87,223,118, 72,206, 60,142,123,247,
+194,225,104,125, 18, 94,126,245, 97, 40, 85, 79,166, 88, 5, 77, 21, 36, 38,222, 20, 3,103,204,152,129, 28,169, 20,232,209, 3,
+194,216, 88,232,245,122, 52,111,222, 28, 77,154, 52, 1, 0, 52,111,222, 28, 60, 30, 15,117,235,214,133,141,141, 13,246,239,223,
+ 63, 16, 64,185, 2,139, 37,228, 22, 67,103,248,120,120,120,148, 8,172,109,219,211, 16, 25,222, 9, 4, 34,172, 90,253,231, 37,
+113,117,117, 69,114,242, 83, 16, 82,165, 83,230,209, 30, 61,122,116,183,182,182,198,176, 97,195, 32,149, 74,241,225,135, 31, 66,
+173, 86,247, 45, 26,209, 96,198,140, 25, 0,128,217,179,103, 99,206,156, 57, 40, 44, 44,172, 48, 68,197,250,239, 26, 42,243,212,
+204,112,133, 66,249, 97,123,187,218, 13, 59,116,233,132, 58, 94, 29,209,161, 75, 60, 0, 44,180, 19, 60,235,179,228, 27,255, 3,
+181,107,217,108,185,114,240,244,183,193,221,218,207,156, 59,193,102,254,236, 85,153, 85, 14, 88,178,159,253,148,247, 80,208,115,
+229,170,245,198, 21,179,191,158, 44,126,158,174,207, 84,101, 49,249,114, 49,223,220,211, 17,102,227,167,206,127,170, 82, 61,254,
+ 10,241, 39,163, 77,185,134, 79,159, 62,133, 86,171, 5, 77,211,208,106,181,200,207,207, 71, 66, 66, 66,201,245, 85,203, 45,186,
+142, 27,214,179, 81,129, 90, 93,120,253,110,204,139,153, 19, 6,181, 40, 80,171, 11, 99,158,189,136,102,217, 31,152, 10,174,121,
+118, 97, 94,190,141, 46,207,128,236,219,209,176,235,224, 6,157,145, 64,107,228, 33, 51, 61, 15,122, 26, 48, 80, 2,184,244,254,
+ 4, 70,194, 71,110, 90, 50, 40, 66,184,120, 88, 28, 56,112,168, 82, 8,133,134,134,134,252, 85,220, 0, 16, 26, 26,122, 63, 52,
+ 52,244,181,142, 85, 44,176,218,149,154,239,108, 87, 78, 71, 73, 26, 55,116,117, 94,248,245, 71, 74,131, 65,231,147,159,159, 79,
+243,249, 34,126, 45, 75,117,114,117, 14,102, 48, 24, 14, 95,188,120,241,131,214,173, 91,139, 99,238,222,134, 54, 39, 7,218,156,
+108, 8, 25, 35,108, 36, 65,160, 12, 58, 16,157, 22,206,222, 12,212,185, 18, 92,189,249,200, 96, 48, 24, 14, 87, 90, 33, 96, 89,
+198,248, 82, 56, 80, 20,239,149,169, 66,177,185, 25, 68,102,102, 16,155,153,151, 59,133, 88, 17, 28, 29, 29,101,221,186,117,235,
+ 24, 16, 16, 0,150,101,177,116,233, 82,232,116, 58, 81,177,165, 72,175,215, 35, 47, 47, 15,191,254,250, 43,182,111,223,126,217,
+210,210,178,202,165,229,140, 81,123,236,236,229,219,221, 7,127,216, 65,116,234,220, 38, 24,180, 70,228,107,173, 80,160,209, 33,
+ 79, 45,128, 78,220, 5,132, 92, 4,197, 19,163,101, 99, 79,156,185, 20,163,161, 13,250,227,213, 17, 67,132, 16,104,181, 90,164,
+166,166, 33, 51,239, 44,144,151, 8, 59,125, 30,242,159, 61, 65,227, 79,134, 64,167,211, 85,201, 53,107, 4, 49, 76, 31, 8,254,
+246,121, 20, 4, 34, 91,189, 87,167, 19, 21,134,138, 48, 51, 51, 43,241,209, 49, 73,168,231,230, 98,199,142, 29,104,222,188, 57,
+218,182,109,139,196,196, 68,196,198,198,162,123,247, 63,103,217,110,223,190,141,200,200, 72,120,122,122, 86,193,197, 30,205,204,
+124,220,167, 87,175, 94,194,107,215,174,129,101, 89,120,121, 89,194,194,220, 12,132, 18,195,215,215, 30,192, 35, 16, 66,208,174,
+ 93, 59,232,245, 42, 99, 65, 1,142, 86,198, 25, 17, 17,209, 35, 48, 48,176,142,193, 96,136,246,247,247,231, 39, 39, 39,163,119,
+239,222,216,179,103, 79,241,136, 6,211,167, 79,127,229, 63,249,249,249,154,138,248, 26, 53,173,247, 21,205,218,182, 21,137,221,
+234, 88,218, 55, 68, 29,175,142, 0,128,247, 66,134,163, 78,221, 90,200, 73,187, 83, 71,167,125,254, 33,143,100, 88,255,114, 45,
+ 49,170,181,204,127, 88,122,252,185, 24, 0,155, 76,184,230, 44, 33, 36,229,133,192, 98,239,190,223, 14,143,234,217,243,125,190,
+129,102,140,254,174,124,203, 61,251,143,164, 38, 62,127,241, 3, 94,156,188, 95,122,255, 74, 4, 22,157,157,157, 13, 51, 51, 51,
+196,198,198,106,123,246,236, 41, 86,171,213,136,137,137, 41, 17, 88, 14,118, 54,126,173,154,248,251, 44, 88,177,253,132, 92, 44,
+ 22,119,105, 23,228, 27, 21,243, 60,129,101, 73, 92,133,188, 44,123, 45,230,193,131, 30,246,118,174, 72, 58,119, 5,242,224,110,
+208,106, 9, 52,122, 6, 58, 26, 48,242,132,176,108,212, 20, 82, 15, 95, 48, 44,240,224,238,109, 24, 89,246, 50,247, 8,225,192,
+225, 63,139, 74,181, 72,177, 5,171, 69,139, 22,187, 75, 91,153,138, 63, 3,208, 2,168,204, 39, 58,173,180,136, 42,158, 54,172,
+232, 56,101,120,107, 38,176, 88,150, 61,143, 74, 86,150,217,217,217, 57,248,122,215,247,216,184,121, 19,244,218, 28,196, 70,109,
+ 65, 65, 94, 10,102, 45,188,234,233,226,226,210, 54, 33, 33,225,188, 41, 7, 75, 72, 72,216,179,127,255,254, 47, 27,213,175, 31,
+224,238,226,130, 59,113,207, 32,100,105, 8,105, 26,148, 94, 11, 62,173,131,139, 31, 3,138,146, 35, 57, 57, 15, 27,142,255,113,
+ 47, 33, 33, 97, 79,165,163,111,194, 67,173,158, 31, 99,192,123, 61,192, 26,244, 56,217,218, 15, 18, 51, 51,136,173,172,208,242,
+215,115, 47, 67, 54, 24, 13,136, 91, 52, 5, 66,185, 25,108,154,183,171,178,156, 41, 41, 41,133,117,235,214, 13,127,248,240, 97,
+ 19,111,111,111,204,157, 59, 23,241,241,241, 96, 89, 22,169,169,169,154,180,180,180,196,140,140,140, 56, 66,200, 1,149, 74,181,
+209,148, 72,225,169, 94,188,173,167, 78,255,241, 85, 96, 99,191,122,157,218,206,193,225,195,223, 34, 59, 55, 23, 5, 90, 62,242,
+213,122, 20,104, 88, 40,205, 61,209,172, 97, 0,210, 50,116,136,185, 31,145,144, 46,180,249,169,154,166, 83,220,190,125, 27,110,
+ 54, 4, 81,209,145,176,211,100,194,219,202, 12, 1,193,173,241,244,233, 83,147, 44, 83, 70, 35,248,227, 39,253,185, 90,208,202,
+202, 10, 57, 57, 57,175,252, 79, 38,147, 65,169, 84, 34, 55, 55, 23,251,246,237, 3,107,218, 67,209,160,211,233,224,227,227,131,
+155, 55,111,226,244,233,211,232,208,161, 3,218,180,105,131,115,231,206, 33, 60, 60, 28,145,145,145, 32,132,192,214,214,182,216,
+218, 86,161,201,237,198,141,219, 97,102,102,100,198,176, 97, 99,252, 7, 13, 26,132, 95,127,221,141,225,195,188, 65, 40, 49, 8,
+ 17,227,253,158, 62,152, 55, 63, 28,205,154,181,131,157,157, 16,167, 79,223,127,202,231, 91,110, 55, 65,184,252,184,100,201, 18,
+190, 68, 34,129, 78,167, 67,126,126, 62, 50, 50, 94,134,163, 42,207,130,165, 86,171, 43, 12,172,118,255,214,163,239,179,114,217,
+ 44,170, 48,226,195,116,195,173,134, 29,186, 36,224,189,144, 97, 56,117,120, 11,206,156, 56, 13, 59,193,179,167,180, 52,255, 88,
+218,211,244, 60, 85,190,215, 6,191,160,207,120, 73, 5, 39,214,127,222,203,154,231,162, 96,194,166,175,205,201,174,170,188,153,
+ 81, 59, 14, 29, 98,241,126,112,243,166,158, 13, 92,149,162,204,140, 84,236,255,237,216,125,253,179, 95, 15,227,229,180,160, 41,
+166,200,121,171, 86,173,250, 22, 0, 24,134,217,186, 98,197,138,207,190,250,234, 43,251,196,196,196, 18,129,149,154,158,121,166,
+101,143,241,116, 70,118,142,238,231, 21, 83,123, 75, 37, 98,209,204, 69, 63,159, 51,240,112,173,194,206,133,207, 31,242,245,218,
+ 95,210,246,133,109,225,217, 75,132,184, 52,109, 54, 98,255, 56, 11, 61, 17,162,203,201,235,208,233,105,228,166,102,224,204,176,
+177,176, 86,216,224,104, 70, 12,157,147,151, 59,132,123,198,112,224,240,159,181, 78, 85,166, 69,210, 74, 9,162, 76, 0,113,161,
+161,161,233,165,172, 75,105, 0,110, 3,104, 84,180, 95, 90,153,255,165, 1,184, 9,160, 73, 41,158,180, 82, 66,171,244,103, 93,
+153,125,110,191,142, 5,171, 82,164,167,167,167,222, 8,191,135,203,167,214,193,104,208, 34, 39,243,101,236, 79, 85,138, 6, 22,
+ 22, 22, 87, 43,121,224,191,146,109,155,101, 89, 86,161, 80,124,180, 98,229,202,107,163,134, 12,118,106,211,177, 35,158,223,189,
+ 3,109,102, 58,120, 52, 13, 30, 17, 32, 63, 93,130,148,228, 92,132, 30, 58,150,170,214,104, 62, 42, 59,242, 46, 47,131,119,177,
+147, 59, 75, 8, 36,150, 22, 16,203,229, 16, 91, 90,252,105,177, 34, 4, 34, 51,115, 8,228,102,224, 9, 69, 85,150, 19, 0, 10,
+ 11, 11, 63, 30, 57,114,228,157,163, 71,143, 90, 15, 24, 48, 0,239,191,255,126,100,118,118,118,251,204,204, 76,147,252,205,254,
+239,220,195,194,104,187, 6,239,247, 90,179,110,227,149,161, 67,135,218,188,223,107, 13, 34,163,238, 35,187,192, 1, 0,160,180,
+147,163,153,247, 20,164,102,104,113,226,216,225, 44,198,168,249,152,189,183,219, 80, 17, 39,203,178,172,157,157,221, 43, 86, 57,
+ 30,143,135,115,231,206, 97,226,196,137,176, 51, 63,135,188,184, 88, 52,104,221, 22,239, 13, 26,130,225,195,135,131,199,227,193,
+214,214, 22,165, 31,186, 85,101, 68,207,201,201,129,187,187, 59, 78,110,244,174,175,211,164, 10, 3,108, 0, 2, 75,253,169, 51,
+221,239, 95,184,112, 33, 31,192, 70, 47, 47,175,176,170,234,147, 16,242,205,194,133, 11,215,181,106,213, 74,106,102,102, 6, 47,
+ 47, 47, 92,190,124, 25,151, 47, 95,198,197,139, 47,253,227,108,109,109, 97, 99, 99,131,236,236,108,196,199,199,171, 9, 33,223,
+ 84,210,150,152, 38, 77,154,124,112,234,212,129,235, 61,123,126,100,215,181,107, 11, 56, 57,229,193,104, 76, 7,161,132, 16, 75,
+ 28,176,113,227, 34,164,166,100,226,202,213,171,153,249,249,252,143,195,195, 95, 77, 65, 84, 65, 57,245,199,143, 31,135, 68, 34,
+193,175,191,254,106,116,116,116,228, 91, 89, 89, 85,104,193,210,104, 52,226,138, 56, 63,155,122, 55, 17,192,252,201,125, 92,150,
+ 93,185,159,242, 1,128,157,117,234,186,224,204,137,211,184,120,230,202,244,230,254,204,170, 30, 3,155,206,147,116,232, 59,197,
+ 47,240, 51,158,153,133, 2,219,246,255,202,139,138,216,244,157,166,224,158, 7,128, 41, 85, 92, 35, 22, 0,242, 83, 83,102,132,
+ 46, 95,189, 53,116,238,183,210,165, 63,172, 85,169,211,147,191,198,203,165,149,108,233,253, 42, 42,103,108,108,236, 6, 0, 37,
+225, 49,148, 74,229,142, 69,139, 22, 93, 24, 60,120,176,125,177,133, 50,245,254,111, 87, 1, 92,245,111,255,233,172,150, 77,234,
+123,127,247,195, 47, 39, 94,196,167,252,146, 29,245, 50, 6, 86,121,229,188,122,245,106, 86, 80, 80,208,200, 41,211,230,108,154,
+ 59,111, 54,241,153, 52, 29,209,151,111, 66,171,214, 67,207,242, 96, 0, 65,196,130,229, 48,183,183,192, 37, 54,147,213,242,168,
+ 17, 79,202, 56,249, 87,213, 62,107, 2,142,147,227,228, 56,223, 77,206, 42,112,179, 60,123,136, 9,251,221, 52,129,231, 47,129,
+ 73, 2,203,217,217,185,205,123, 29,155,163,213,123, 99,160,215,102, 35,246,254,207,200,207, 75,129,179,147, 24,177, 47,114, 91,
+ 0, 56,111,234, 1,147,146,146, 94, 40, 20,138,230,223,173, 92,181,191, 75,211, 38,190, 94,206, 10,177,149,187, 27,228, 14,142,
+ 72, 79, 75,195,245,136,104,195,218, 19,103,238,169, 53, 26,147, 82,229, 48, 12,195,178, 44, 11,161, 80, 8,150,199,131,223,248,
+105,160, 40,170,204,106, 65, 2,139,160, 96, 80,124, 1, 12, 38,250, 12,169, 84,170, 4,103,103,231,143,199,143, 31,255,199,214,
+173, 91,169,118,237,218, 53, 62,116,232, 16,243, 58,149,157,126,247, 80,140, 99,131, 15,219,174,250,113,237,190,128,160,230,110,
+238,181,221,197,173,106, 89, 66,111,160,145,146,154,129,243, 87,162,180, 49, 81,183,227, 25,189,174, 79,106, 84,197, 81,220, 1,
+192, 96, 48,188, 80, 42,149,142,115,230,204,129,209,104, 4, 77,211, 48, 26,141, 72, 79, 79, 71,100,100, 36, 2,155,183,128,207,
+167,159, 33, 51, 51, 19,155, 55,111,134,139,139, 11,186,119,239,142,188,188, 60, 92,184,112,225, 69,197, 86, 7, 24,103,124, 51,
+144, 15, 0, 2, 1,140, 95,135,132,156,171, 95,191,126,240,251,141, 82,133, 99,198,191,180,108, 45, 94, 52, 80,120,238,220,185,
+ 48,177, 88,188,225,233,211,167,149,198, 64,243,244,244, 20,105, 52,154,198, 44,203,242,115,115,115, 87,106,181,218,161,147, 39,
+ 79, 86, 44, 89,178, 4, 13, 27, 54, 68,122,122, 58,108,108,108,160, 80, 40,144,159,159,143,167, 79,159,210,122,189,126, 61, 77,
+211,243, 82, 82, 82,210, 42,189,219,110,222,124, 22, 16, 16,208, 34, 37,121,221,254, 49,163, 59,123, 25, 12, 65, 34, 11,203,214,
+ 96, 89, 35,178,179,226, 65,216, 59,250, 3, 7,255,120,146,157,205,251, 40, 60, 60, 60,198,148,107, 68, 81,212,232,223,127,255,
+ 29,197,169,114, 84, 42, 85, 44, 69, 81, 21, 90,176, 76,193,242,176, 4, 13,128, 93,203,190,104, 49, 41, 39,237, 78, 61, 59,193,
+179,167,205,253,153, 85,203,195, 18, 52,139, 71, 89, 47, 72, 76, 59, 23,173,202, 63,177, 97,219,254, 95,121, 67, 62,252,152, 86,
+152,197, 76,183,171,133,176,246,239, 87, 57,218, 99, 27, 53,106,228, 74, 81,153,181, 83, 51, 30,133, 15, 31, 49,170,175,165, 80,
+125,180,161,115,122, 93,163,163,159, 36, 42, 42, 42,174,104, 55,182, 58,237, 84,165, 82, 69, 43,149,202, 54,223,127,255,253,137,
+178,166,241,212,244,204, 51, 45, 66,198,177,217,217, 57,183, 82,163,126,187, 91, 21, 87,120,120,248,207, 65, 65, 65,248,100,240,
+240,159, 70,124, 58,146,231, 63, 97, 42, 18,206,254, 1, 24, 13, 72,186,120, 30, 50,115, 26,135,211,227,232, 66, 30, 53, 50, 60,
+ 60,156,139,226,206,129, 3,135,127, 13,136,169,125,175,167,135,203, 9,143,218,206,157, 61,106, 43, 1, 0,177,207, 84,136,125,
+150,120,242, 73,108, 66,151,154, 40,220,210,201,158, 73, 81, 40, 6,214,132,100,207,101, 57,253,253,253, 35, 41,138, 82, 86,231,
+164,105,154, 78,184,127,255,126,144, 41,229, 84, 42,149, 3,106,213,170,181, 72,165, 82,237,143,143,143,255,226, 77,168,251,226,
+100,207, 20, 79, 24,194,178,108, 67, 0,132, 80, 84,149,201,158, 75,115, 58, 59, 59, 55,144, 74,165, 27,248,124,190,107,177, 73,
+181,184,202,244,122, 61, 47, 39, 39, 71,162,211,233,120, 0,136, 80, 40, 52,154,153,153,105, 4, 2,129,145,166,233, 23, 6,131,
+ 97, 84, 98, 98,226, 93, 83, 71, 33,126,126,126,242,144,160, 7,249,197, 41,116,102,124, 51, 16,161, 91, 88, 98,202,185, 63,126,
+252,184,158,181,181,117, 63, 66, 72,111,150,101,189,243,242,242,180,223,126,251,237,173,243,231,207,231,186,186,186,118,109,221,
+186, 53,185,115,231, 14,226,226,226,216,252,252,252,125, 20, 69,125,147,144,144, 16, 91,205,182, 68,181,108,217,184,191,185, 25,
+122, 48, 44, 26, 1, 44, 33,132,220,205,207, 39, 71, 21,138,218,191,132,133,133,209, 53, 29,129, 5, 6, 6, 30,201,207,207,239,
+ 30, 19, 19, 83,209,185,130,101,255,172,139,202, 56,151,125,211,224,155, 22,109,131, 63,190,124,254,226,129,169,223,221,155, 95,
+122,219,184, 15,109,134, 15,252,124,226,146,157,107,126,152,186,250, 64,230,207,166,148, 51, 48, 48,176, 14,128,254, 44,203,214,
+ 39,132,120, 49, 12, 36,132,176,153,132,144, 40,134, 97,110, 51, 12,243,251,157, 59,119, 84,239,194,136,182,116,178,103, 66,211,
+ 86, 52, 33, 38, 37,123,230, 44, 4, 28, 39,199,201, 89,176,254,169, 48, 57, 2,119,177,144,242,242,242, 98, 31, 63,126,252,202,
+ 67,165, 38, 40, 18, 80,187, 81, 73,148,118, 83,112,239,222,189,128,191,178,130, 84, 42,213, 46, 0,187,222, 36,103,145,128,250,
+185,232, 85, 35, 20, 9,164,102,127, 71, 35,137,138,138, 42,152, 53,130,148, 88,182,248,124, 24, 77,253,111,231,206,157,159,235,
+245,250,211, 0, 18, 0, 88, 1,200, 52, 24, 12,199,211,210,210, 82,156,156,156,130,158, 63,127, 62,171,200, 18, 57, 63, 57, 57,
+ 57,188,134,109,137, 1,176,179,232,245, 70, 17, 17, 17,209, 67,169, 84, 70,218,218,218,122,106, 52, 26,145, 70,163, 17,148,110,
+251, 82,169, 52,205, 84, 46, 75, 11,108,227,145, 12, 91,107, 11,242,127,150, 26, 59,103,252,170, 46,184, 87,207,206, 25,191, 86,
+163,108, 79, 27, 55,110,188,131,162,168,218, 12,195, 56, 2,176, 96, 89,164,179, 44,155, 78,211,116,194,221,187,119, 85,239, 74,
+ 71, 83, 36,160, 66,192,129, 3, 7, 14,156,192, 42, 31, 49, 49, 49,132,171,182,255, 30,230,111,100, 5, 53,249, 95, 92, 92,156,
+ 22,192,149,162,215, 43, 40, 18, 84, 61,223,245,115, 87,169, 84,111, 68,196, 23,249,100,125,209,180,227,255,111, 43, 10,205, 48,
+181,195,251,213,227,188,117,235,214, 11, 0, 47,184, 22,202,129, 3, 7, 14,239, 22, 40,174, 10, 56,112,224,192,129, 3, 7, 14,
+ 28,222, 44, 8,128,114, 67, 92, 87,103,110,149, 16,226, 95,221, 3, 87,197,207,113,114,156, 28, 39,199,201,113,114,156, 28,231,
+191,143,179, 42,238,127,139,111, 23,169,230, 2,163,234,145,115, 14,128, 28, 39,199,201,113,114,156, 28, 39,199,201,113,254, 7,
+193, 77, 17,114,224,192,129, 3, 7, 14, 28, 56,188, 97, 84,232,228,238,225, 81,203,143,162,153, 86, 44, 75,241, 88,138, 53,144,
+ 92,245,158, 39,101,130,108,186,186,186, 90, 9, 40,244, 36, 44, 43, 39,132,161, 25, 30,117, 57, 54, 54, 62,202,148, 3,251,249,
+249, 9, 1, 12, 21, 8, 4,193,122,189, 94, 33, 16, 8,146, 52, 26,205, 37,129, 64,176, 53, 42, 42, 74,255, 46, 85, 82,112,112,
+112,255,125,251,246, 89,133,132,132,104,245,122,189, 81, 40, 20,242,119,239,222, 45, 30, 54,108, 88,246,165, 75,151,106,180, 10,
+ 50, 32, 32,160,253,226,197,139,235,116,236,216, 17,193,193,193, 5,221,186,117, 19, 6, 5, 5, 9,167, 77,155,246, 52, 50, 50,
+242,108,117,184, 28, 29, 29,253,248,124,254,118, 66, 8,143,101,217, 79,138, 67, 48,252, 21, 32,132, 12, 0,208, 7,128, 2, 64,
+ 50,128,189, 44,203,238,170, 33, 87, 87,188,116,114,111, 88,244,211, 29, 0,191,179, 44,123,252, 53,202,215, 21, 64, 79, 66, 72,
+ 35, 0, 96, 89,246,246, 27,228,108, 88,196,249,198,202,249,186,231, 30, 24, 24,248,173, 72, 36, 26, 1, 0, 58,157,238,103, 51,
+ 51,179,208,242,246, 59,127,254,188,174,162,208, 39,126,117, 8, 27,245,187,207,203,207, 61, 31, 2, 0,170,252,254,180,134,171,
+136, 31,248,178,229,241,194,247, 65,141, 23,207, 40,149,202,177,221,187,119,159,118,252,248,241,239, 18, 18, 18,126, 2, 7, 14,
+ 28, 56,188,171, 2,203,195,163,150, 95,239, 15, 62, 90, 56,122,212, 24,194,227, 81,120,240,240, 33,255,243, 9, 95,116,246,245,
+245,117,150,107, 52,190, 44,192,168,165,210,123, 60, 30,149,184,110,205,143,230,222,245,234,209, 52,205, 96,253,134,117,221, 60,
+ 60,106,125, 93,149,200,114,112,112,168,163, 80, 40, 86, 78,152, 48,193,161,115,231,206,148,163,163, 35, 18, 18, 18, 44, 14, 28,
+ 56, 80,119,243,230,205, 33, 14, 14, 14,147, 82, 83, 83,159,214,228,132, 20, 10, 69,107,133, 53,186, 74,197,108,123,228, 18,168,
+141,228,108,146,142, 61,158,148,148,116,177,166,149,164,211,233,198, 23, 22, 22, 54,247,243,243, 99,214,173, 91, 71, 70,142, 28,
+201, 18, 66, 40,181, 90,189, 5, 53, 12, 51, 33,149, 74,215,116,236,216,209, 43, 56, 56, 56,246,242,229,203, 61, 0, 28,233,211,
+167,143,135, 84, 42,141, 1,224, 93, 29, 46, 30,143,183, 37, 42, 42,170,145, 90,173, 70, 80, 80,208,102, 0,129,127,145,184,218,
+108,109,109,109, 88,187,118,237,134,198,141, 27,123,102,101,101, 21,140, 26, 53,170, 19, 33,164, 3,203,178,159, 86,131, 71, 14,
+ 96,149, 76, 38,227, 77,154, 52,233,216,135, 31,126,120, 91, 46,151,155, 61,122,244, 72, 48,113,226,196, 79, 8, 33,189, 1, 76,
+ 96, 89,182,160,186,156,182,182,182,210, 5, 11, 22, 68,180,108,217, 50, 85, 34,145, 72,159, 62,125, 74, 38, 77,154, 52,242, 53,
+ 57,133,243,230,205,187,220,174, 93,187, 88,177, 88, 44,123,241,226, 5,239,171,175,190, 26,254, 58,156, 86, 86, 86,162,111,191,
+253,246,106,219,182,109,227, 36, 18,137, 60, 54, 54,150,154, 60,121,242,103,213,225,108,219,182,109,127,138,162,230, 94,184,112,
+ 1, 0,208,162, 69,139,111,117, 58,221,204,178,251,177, 44,139,224,224, 96, 77,219,182,109, 71,156, 63,127,190,220,246,186, 53,
+124, 74,127, 0,248,106, 86,241,247,151,239,229,125, 31, 26,180,180,218,109,222,175,206,203,252, 98,159,127,181,118,240,203,247,
+151,191,175, 43,186, 43,215,244, 36,108,117, 68,155,179,179,243,168,166, 77,155,206,184,126,253,250,182,160,160,160,137, 63,253,
+244,147, 32, 36, 36,100,129, 82,169,244,236,218,181,107,239,171, 87,175, 46,125,248,240,225, 26,174,139,231,192,129,195, 59, 37,
+176, 40,154,105, 53,122,212, 24,210,111, 64,255,228,164,148, 84,198,204,220,114,192,222,176, 48, 89,189,122,245, 40,205,170, 85,
+ 48,166,167,131,254,242,203,150,231,207,159, 55,140,155,244,165, 90,171, 41,220,162,112,116,144,237,217,181,219,105,255,175,251,
+ 90, 1,136,170,204,114,165, 80, 40, 86,254,250,235,175, 78,117,234,212,129, 78,167, 67, 90, 90, 26,244,122, 61, 62,252,240, 67,
+ 94,243,230,205,157,134, 15, 31,190,210,207,207,239,163,234, 88,178,236,237,237, 29,189, 93, 5, 71,231,124,209,181, 94,251, 54,
+ 65, 82, 39,231,218, 64, 2,131,196,216,152, 38,127, 92,139,152,208,166,174,115,244,163, 28,125,247,180,180,180,148,234, 86, 82,
+ 70, 70,198,180, 81,163, 70,237,107,216,176,161,189, 88, 44,134,163,163, 35,249,236,179,207, 82,146,146,146,230,213,180,226,139,
+163,131, 83, 20, 69,151,121,175, 9,157,139,165,165, 37, 44, 44, 44, 0,192,249,117, 26, 68,159, 62,125,120, 47, 94,188, 24,193,
+ 48,140,111,233,223,147,146,146, 60,236,237,237,211,159, 61,139,107,164,209,233,155,141,253,106,238,130,126, 61,219, 91, 92,189,
+122,149,234,209,163,135,128, 16, 50,160, 26,150,172, 85,222,222,222,119,151, 44, 89,162,123, 16,243,212,255,228,185,171,148,131,
+141,156,169,227,238,110,118,255,254,125, 97,104,104,104, 90,104,104,232, 42, 0,195,171, 81,244, 85,239,189,247, 94,252,140, 25,
+ 51,120, 15,162,159,120, 92,188,122, 11, 22,102, 34,218,213, 69, 41,185,122,245, 42,127,221,186,117,248,250,235,175,171,205,217,
+190,125,251,152,249,243,231,179,201,169,153,117,159, 62, 75,130,185,153,200,104,107,107, 43, 61,119,238, 28,217,186,117,171,110,
+226,196,137,213,230,108,217,178,229,147,217,179,103,147,135,143,159,214,189,116,245, 22,204,228, 66,163,187,171,139,228,198,141,
+ 27,228,199, 31,127, 52,124,251,237,183, 38,113,178, 44,187,126,233,210,165,248,237,183,223, 0, 0,187,118,237,130,135,135,199,
+ 43, 13, 72,173,209,128, 16,130,184,103,207,100,163, 71,143, 94, 95,222,128, 32,234,119, 31,108, 13, 7,134, 14, 29,106, 90,242,
+246, 7, 75,171,109,181, 42, 22, 86, 99,198,140, 73,168, 96,175,193,126,117, 76, 23, 89,173, 90,181,154,182,103,207, 30,187,176,
+176,176,175, 14, 28, 56, 0, 0,144,201,100,178,213,171, 87,143,237,213,171, 23, 62,253,244,211,105, 0, 56,129,197,129, 3,135,
+119, 75, 96,177, 44,197,227,241, 40,164,166,164, 27,222,235,212,121,248,234,181,107,197, 34,145, 8, 58,157, 14, 5,103,206,128,
+213,106, 97, 41,149,162,123,247,238, 2,127,127,127,139,145,195,135,127,150,154,146,188,129,199,163,156, 88,150,226, 85,113,204,
+161, 19, 38, 76,112,168, 83,167,206, 43, 9,132,105,154, 70, 74, 74, 10,204,205,205,209,183,111, 95,187, 29, 59,118, 12, 5, 96,
+146,185,223,209,209,209,221,219,195,225, 74,216,166,175,156, 28,172, 8,144,246, 43,240, 60, 6,216, 41,129,151,131, 27,188, 58,
+180,145,246,108,230,223,168,255,146,173,183, 28, 29, 29, 91,166,164,164,196, 85,167,146,158, 61,123,118, 73,169, 84,142,208,104,
+ 52, 7, 1, 80,151, 47, 95,102, 95,188,120, 49, 58, 57, 57,249,121, 77, 43,158,166,105,100,103,103,131, 97, 24, 30,128,146,119,
+218,196, 84, 62,127, 5,250,244,233,195,139,143,143, 31,229,235,235, 91,119,227,198,141, 72, 77, 77,133, 68, 34, 1,195, 48,104,
+209,162,133,107,167, 78,157,158,164,101,230, 88, 27,141,180, 62,225,249,179,160, 69, 75,111,165, 53,242,243,190, 20, 22, 22,214,
+216,206,206,174, 47, 76, 8,200, 74, 8,233,106,110,110,206,255,238,187,239,212, 78, 46, 30,253, 20,174, 94,130, 43, 55,239, 70,
+ 11,101, 34, 54, 35, 39, 47,239,214,173, 91,209,115,231,206,109,115,244,232,209, 84, 66, 72, 87, 83,166,204, 8, 33, 93,109,109,
+109,165,211,167, 79, 39,150,182,202,247,130,219,184, 10, 34,238, 68, 61, 17,201, 68, 76,112,112,112,207, 43, 87,174,108,158, 60,
+121,114,227, 35, 71,142,228, 86,135,211,198,198, 70, 48,111,222, 60,218, 81,233,214,203,181,118, 93,129,179,147,157, 31, 0, 60,
+138,126,188, 41, 37, 37,229,201,232,209,163,155, 29, 59,118, 44,175, 58,156,150,150,150,194,111,191,253,150,245,245,111, 60,188,
+126,195, 64,234,247,147, 23,174, 74,229, 34, 58,183, 64,157, 31, 21, 21,245,100,234,212,169, 77,143, 28, 57, 98, 18,103, 97, 97,
+161,185,139,139, 11,156,156,156,192,168,213,200,205,205,197,254,253,251,145,151,151, 7,154,166, 33,149, 74,241,195,241, 76,104,
+ 30,255,142, 13, 43,231, 65,173, 86,155,191,137,118,226,215,243, 33,162, 76,181, 47, 63,240,101,215, 93, 28, 55,184, 18, 97,133,
+ 82,194,107, 48, 30,248,178,149, 77, 23,150,178, 92, 37,132,133,133, 57,120,122,122,162, 93,187,151, 9,220,135, 15, 31,142, 78,
+157, 58,225,183,223,126,195,201,147, 39, 95,124,248,225,135, 79, 35, 34, 34,150,198,199,199,175,231,186,122, 14, 28, 56,252,221,
+ 40,215, 92,194, 18, 82,112,255,193, 3,129,153,149,213,224,213,107,215,138, 5, 2, 1,226,226,226, 16, 21, 21,133,194, 51,103,
+160,190,114, 5,169,169,169,200,203,203,131,189,189, 61, 66,151, 46,149, 11,165,242,225, 49,143, 31,243, 88,138, 53,148, 26, 97,
+255,223, 10, 3,145, 72, 20,220,189,123,119,170,162,213,139,201,201,201,232,220,185, 51,159,207,231, 7, 87, 48,106, 47,155,156,
+151, 40,237,201,239,123,127,154,228,228,192,191, 11, 60,158, 8,100, 95, 4,140,217,128, 58, 31,120,118, 23, 56,240, 61, 92, 50,
+ 31,147,157, 19,250, 56, 58, 75,133,191,147,210, 25,146, 81,245,146, 80, 23, 23, 23, 15, 79, 79,207,141, 31,127,252, 49, 5, 0,
+193,193,193,196,211,211,115,131,139,139,139, 71, 37,214,133, 74, 57, 53, 26,205,181,172,172, 44,210,163, 71, 15,219,150, 45, 91,
+158,234,209,163,135, 45, 0,162,209,104,174,213,148,179, 8,182, 29, 58,116,200,240,240,240,216,229,238,238, 46, 54,193, 10, 82,
+194,249,226,197,139, 17, 62, 62, 62,117, 55,110,220,200,227,241,120,248,233,167,159,176,119,239, 94, 92,184,112, 1,105,105,105,
+178,201,147, 39, 91, 29, 58, 19,121,250,212,197,219,135, 39,141, 25,197,188, 23,216, 88, 33, 78, 79,206,176,181,181,237, 6,192,
+201,196,114,246, 28, 63,126,252,209,200,168,103, 78,132, 39, 22, 11,133, 66,137,147,163,157,131,194,193,209, 93,225,224, 88,207,
+ 92, 38,179, 46, 40, 40,120,113,240,224, 65, 22,165,130,144, 86,197, 57,119,238,220, 27, 81, 49, 47, 28, 88, 74, 40, 18, 10, 5,
+ 66, 59,107, 43,155,222,239,119,238, 9, 0, 50,177, 88, 86, 80, 80,144,180, 99,199,142,106,113,206,158, 61,251, 98, 98, 74,182,
+ 19, 95, 32, 20, 75,196,226,146, 44,225, 54,214,150,206,102,114,185, 76,167,211,197,111,220,184,209, 88, 29,206,153, 51,103, 94,
+126,240,248,133, 35, 69,241,120, 20, 69,248,246,182,214,118,182,182,182, 10, 91,107, 27,103,169, 72, 36,207,207,207, 79,216,181,
+107, 23,109, 42,103, 74, 74, 10, 30, 62,124,136, 90, 77,154,224,244,233,211,168, 85,171, 22,250,244,233,131,126,253,250, 65, 42,
+149,162,169,213, 19,124,216,181, 37,158, 60,121, 82,225,117, 47,246,135,170, 12, 74,165,242,124,117,218, 18,240,114, 90,176, 50,
+113, 85,150,179,188,253,202,114,182,106,213,106,218,254,253,251,237, 86,172, 88,209,248,139, 47,190,136,221,191,127, 63, 26, 54,
+108,136, 7, 15, 30,192,217,217, 25,187,119,239,198,184,113,227, 98,231,204,153,211,120,239,222,189,142,254,254,254,211,107,120,
+ 31, 85, 11, 28, 39,199,201,113,114, 48,201,130,101, 96,240,251,248,137,147,123,254,186,127,191, 76, 36, 18,225,217,179,103, 72,
+ 73, 73,193,209,195,135,233,163, 13, 26, 20,242,120, 60,246,163, 95,127, 53,239,211,175, 31, 17, 10,133,168, 91,183, 46,186,119,
+239, 46,253,108,228,152, 84,126,129,122, 79, 21, 23,197,193,222,222, 30,211,167, 79, 71,104,232,171,254,184, 67,135, 14,197,202,
+149, 43, 97,110,110, 14, 66,136,131, 41, 39,160, 80, 40,250, 12,255,170,125, 45, 11, 55,139, 20, 54,114,139,128,128,178, 1, 95,
+ 6, 80, 34, 64,102, 6, 48, 52, 96,208, 65, 27,126, 37,147,109,183, 58,183, 75, 64,129,115,178,110, 87, 31, 0,123, 77,173, 36,
+ 59, 59,187,153, 97, 97, 97,246, 83,167, 78,101,243,242,242, 72,106,106, 42, 59,117,234, 84,251,153, 51,103,206, 4, 48,180, 38,
+ 21,175, 82,169, 22, 12, 31, 62,188,203,207, 63,255,236,244,241,199, 31, 91, 21,141,192,147, 85, 42,213,130,215,185,160, 2,129,
+128,119,230,204, 25,155,245,235,215,247, 95,176, 96, 65,253,142, 29, 59, 58,101,103,103,199, 37, 37, 37,245,174,202,226,198, 48,
+140,239,198,141, 27,193,227,189, 52, 66,242,120, 60,136, 68, 34, 72, 36, 18, 88, 90, 90,102, 63,125,250,212,232,110, 43,228,191,
+120,145, 92,232,166,116, 49,183,108,228,231,232,224,226,250, 81, 65, 65, 65, 4, 76,207, 10,208,176,107,215,174,151, 15,157,189,
+131,177,159,118,170,199, 39, 58,190, 68, 34,172, 39, 19, 10,136,128, 98, 89,198,200,210,155,247, 92,254,205,205,205,205,151, 16,
+ 98,210,116, 39, 33,164, 81,235,214,173, 19, 79, 95,139,162,174,223,138,137,117,180,145, 91,125,216, 45,184,121,201, 1, 3, 2,
+250,149,218,215,212,212, 54, 13,219,181,107,247,240,113, 66, 6,229,170,180,123,197, 39,206,222,222,190, 11, 0, 20,230,231,110,
+ 85, 40, 20,222, 98,177,216,212, 92,152, 13, 59,116,232, 16,115,250,218,125,202,201,222,170,184,125,191, 50,144, 72, 79, 73,218,
+225,230,230, 86,143, 16,226,100, 10,225,193,131, 7,113,235,214, 45,204,243,243,195, 84, 55, 55,216,219,219,227,204,153, 51, 96,
+ 89, 22,114,185, 28,217,217,217, 8, 11, 11, 43,177,242,188, 14,148, 74,229,121,149, 74,213,182,196, 49,253, 13,160,152,211, 84,
+235,216,165, 75,151,246,135,133,133,141,245,244,244,196,176, 97,195, 60,182,108,217, 18,235,237,237,237, 17, 28, 28,140, 75,151,
+ 46, 97,234,212,169,177,115,230,204,241, 24, 58,116, 40,182,110,221,138,219,183,111,111,227,186,121, 14, 28, 56,188, 53,129, 69,
+ 8, 97, 89,150, 37,197,239, 47, 94,188,200,246,245,245,117,246,244,244,164,116, 58, 29,114,114,114,112,226,216, 49,122,247,222,
+189, 71,116, 58,221, 4,138,162,132, 91,183,111, 95,239,224,232,216,190,119,159, 62,196, 96, 48,160, 99,199,142,162, 51,103,206,
+216,222,121,241, 34,175,178, 3,242,120,188, 18,235,209,216,177, 99,177,114,229, 74, 0,192,144, 33, 67,254, 20,120, 6, 3,202,
+ 24,153, 42,132,204,146, 14,105,219,169,190,121,188,252, 71,115, 77,203,220,188, 58,209,206, 87,204,242,228, 77,193,151,240, 33,
+ 51, 3, 99,132, 49, 38,191,121, 68,236,243,218,190,146,163,169,181, 91,121, 55,197,222,171, 7, 66,170, 35,176,164, 82,105, 83,
+185, 92,142, 7, 15, 30,100, 6, 5, 5,101, 91, 88, 88, 88,122,121,121,217, 73,165,210,166, 53,173,248,148,148,148,103,206,206,
+206,109, 63,250,232,163,207, 41,138,234,196, 48,204,233,140,140,140, 53, 41, 41, 41,207, 76,249,191,179,179,243, 24,150,101,103,
+ 3,216, 87,252,155, 94,175, 7, 69, 81, 96, 89, 22, 61,123,246,196,162, 69,139,252, 78,159, 62,141, 11, 23, 46,216, 12, 28, 56,
+240,154, 82,169,204, 38,132,124,154,152,152, 88,161,149, 44, 35, 35, 3,235,214,173, 3,143,199,131,149,149, 21,204,205,205, 33,
+145, 72,208,174, 93,187,148, 37, 75,150,120,133,133,133, 25, 50,234,166,178,162,252,156, 2, 91,169,151,146,178,179,175,243,249,
+200, 81,215, 1,132,153,122,238,102,102,102,230,230, 60,117, 62,143,213,240, 86,172,218,192,151,241, 41,200, 5, 66, 72,168,124,
+ 50,227,219,249,172,132,240,100,168,102, 26, 39,161, 80, 40,179, 20, 65, 39,148, 9,104, 51,153,232,141,164,115,146, 74,165,114,
+ 51, 33,116, 21,109, 23, 81,124, 17, 0, 9, 33,164,208, 84, 78,137, 68, 98,102, 33, 98,181, 21,109, 55, 23, 8,133,132, 16, 9,
+128,114,157,220,251,116, 34,108,216,202, 98,129, 35, 41,249,157,166,105, 52,105,210, 4,123,127, 59,141, 19, 23,239, 35, 51, 33,
+ 10,131,251,116,131,187,187, 59, 24,134,169,180, 76,197, 62, 88, 38, 12, 10, 94, 10,162, 83,150, 85,239, 92,228,119, 85,213,212,
+ 96,105,206,151,226,170, 98, 31, 44, 23, 23,151,145,141, 27, 55, 30,114,224,192, 1,180,111,223, 30, 33, 33, 33,240,246,246,246,
+ 24, 56,112, 32, 0,160, 77,155, 54, 8, 13, 13,245,232,223,191, 63, 14, 30, 60,136,163, 71,143, 34, 40, 40,104,162, 82,169, 76,
+ 85,169, 84,107,185,238,158, 3,135,119, 27,101,181,200,191,210,130, 5, 0, 98,189,222, 91,179,110, 29, 10, 79,159,134,232,212,
+ 41, 28,105,212, 40,223,104, 52,126,169, 82,169,226, 1,192,209,209,113, 82,216,190,125,151, 59,159, 61,107,161,123,240, 0,181,
+238,221, 3,191, 94,189,198,166, 30,184,216,122,165,215,191,244, 99,223,182,109, 27,114,115,115,145,147,147, 3,163,209,228, 92,
+194, 16, 8, 72, 43, 7, 59, 87, 36, 33, 6, 12,159,111,254,204, 79,215, 82,174,182, 72,172,245,204, 46, 63, 71,208,136, 68,167,
+ 54, 50,215,228, 25,154, 81, 66, 29,116,217, 26, 40,109,157,193,167,248,173,170, 83, 73,197, 22, 29,169, 84,154, 25, 17, 17,241,
+126,235,214,173, 15, 1,176, 43,254,189,166, 72, 76, 76,124, 12, 96, 98, 77,254, 75, 81,212,236,115,231,206, 57,132,133,133,141,
+ 91,189,122, 53, 11, 0, 58,157,174,196, 73, 94,167,211,129,207,231,131, 97, 24,200,229,114,240,249,124,199, 3, 7, 14, 56,246,
+234,213,107, 13,128, 10,175,147, 76, 38,131,163,163, 35, 4, 2, 1, 44, 45, 45, 81,144,155, 37, 95,183,112,102, 59,153,181,163,
+205,196,137, 95, 82, 67,135, 14,189,191,122,245,106, 23,165,103,221,250, 15, 31, 62,124, 49, 96,216,240,203,187,119,239,206,175,
+134,131,251,157,216,216, 88, 81,125,223,186,146, 35,251,242, 25, 25,159,133, 44,253, 59,200,164, 10,136, 68, 46,144,137,197, 16,
+138, 68,118, 73,201,201, 41, 44,203, 62, 49,133,144,101,217,219, 79,159, 62,229,213,118,117, 18,229, 21, 26,243,100, 60,218,252,
+113,228,157,232,186, 1, 13,235, 1,128,230,193,157,115,226,218,158,162,164,172, 28,177, 82,169,140,170, 70, 57,133,142,142,142,
+162,251, 15, 30,111,180,179,177,112,117,116,116,120, 15, 0, 12,234,194,251, 68,167, 81,241,248,124, 69,102, 86, 86,154, 70,163,
+121,108, 42,103,116,116, 52,223,211,221, 69,188,255,240,169,159, 29, 44,204,106,217, 73,197,142, 22,114,161,153,136,166, 11, 68,
+ 12,173, 18,138,197, 78,170,228,228,116,150,101,163, 43, 34, 89,119,113,220,224,151,159, 54,239, 40, 58,255, 98,235, 14,174,196,
+178,176,182, 87, 34, 35,254, 17,206,252,126, 16, 67,198,142, 51,233,126, 90, 54,127,216,238,101,243,135, 85, 24,158,161,140, 32,
+130,234,117,211, 72, 63,240, 61,255,255,156,149,119,168, 93,187,118,253,230,167,159,126,146,149, 80, 60,120,128,224,224,151, 6,
+192,185,115,231,162, 75,151, 46,240,242,242, 66, 84, 84, 20,220,220,220,176,127,255,126,240,120, 60,193,200,145, 35,167, 1,224,
+ 4, 22, 7, 14, 28,254, 86, 84,184,100,141, 97, 89,134,206,202, 2,171,211, 21, 91, 8, 88,150,101,101,127, 10, 27,129,204,202,
+202,138, 8,156,157, 65, 36,146, 98,249,249,218, 30,218,124, 62,191, 90, 2,139,166,193, 3, 49,128, 5, 11,128, 2, 1,133, 66,
+169, 8,115, 28, 67,200, 12,197, 52, 94,154,204,154, 16, 30, 5, 66, 17,128, 0,172,129, 1,205,210,213, 85, 70,108,126,126, 62,
+180, 90,173,181,167,167,231, 17,141, 70, 99, 93,244, 96, 99,223,214,133,163,105, 58,150,162, 40,124,242,201, 39,192,203,148, 71,
+208,233,116,136,142,142,134, 70,163,129, 78,167, 67, 84, 84, 20,114,115,115,161,211,233, 16, 30, 30, 14, 55, 55, 55,240,249,124,
+ 69,101,188, 70,163, 17,246,246,246, 80, 40, 20,208, 22,228,202,127,253,105,101,143, 37,115,103,216, 13,240,100,169,205,171,190,
+103,234,213,171,151, 93,191,126,125, 59,169, 84,154,213,176, 97,195,140,221,187,119, 31,168, 78,136, 6, 0,191,207,152, 49,163,
+ 89,187,118,237,188,172,204,165, 6,185, 4,144,241, 10, 32, 98,213, 16, 24, 83,224, 85,167, 46, 67,100, 50,239,254,253,251,107,
+ 1,252,110, 42,231,228,201,147, 61,253,253,253, 21,214, 22,226, 2,169,144, 36, 75,120,116, 82,118,212,157,107, 0, 32,182,178,
+ 81, 67, 44,245, 31, 50,100,136,186, 58,156, 83,167, 78,245,173, 93,187,182,147,144,207, 22, 18,218,248,167,164,208,106, 82,120,
+ 2, 97, 33,132,194,128,137, 19, 39,234,171,195,249,213, 87, 95,249, 52,106,212,200,209,222, 82, 82, 32, 21, 64, 37,229,209, 42,
+129, 78, 27, 47, 52,234, 82, 36,214,214,133,144,202, 26, 15, 30, 60, 88, 87, 17,103,177,245,170,172,101,136,207,231, 67,165, 82,
+ 33,243,217, 21,100, 62,187,139,122, 84, 30,154, 57,218,195,204,204,172,234,251,201,247, 1,137,122,202,146,168,167, 44,129,239,
+ 3, 82,222,247,114, 68, 86,165,109,191, 82,191,174, 7,190,231,107,194,121,244,232,209,197,189,122,245, 50,244,235,215, 15,167,
+ 78,157, 2, 33, 4,151, 46, 93, 66, 98, 98, 34,186,116,233, 2,150,101,113,235,214, 45,232,245,122, 60,120,240, 0,189,123,247,
+ 70, 72, 72, 72,225,241,227,199,191,227,186,122, 14, 28, 56,188, 45,129,213,142, 16,194, 2, 40,113,212, 48,136,197,247,153,241,
+227, 97,249,219,111, 16,196,196,160,247, 71, 31, 89,136,197,226, 85, 10,133, 34, 80,169, 84,182,146, 74,165,107, 38, 79,158,108,
+110, 27, 26, 10,229,133, 11, 72, 58,117, 10, 6,129,224,102,117, 14,174, 86,171,139,173, 49,208, 21, 9, 57, 43, 43, 43, 48, 12,
+ 3, 83,181, 11, 75,227,106, 82, 90, 12, 68,112, 7, 11,228, 29,203,235,112,117, 64,236, 60,199,211,121,245,234,197,228, 10, 60,
+151, 56, 52,179,219, 88,187,229, 77, 53, 17,228, 11, 45, 68, 80,169, 84, 96,193, 92,173, 78, 57, 53, 26, 77, 78, 65, 65, 1,241,
+244,244,180,139,136,136,240,172, 91,183,174, 45, 0,162,213,106,111,188, 78,229, 43,149,202, 22, 1, 1, 1,123, 3, 3, 3,159,
+ 6, 4, 4,236, 85, 42,149, 45,170,241,247,205,145,145,145,224,241,120, 24, 57,114, 36,242,242,242,160,211,233, 16, 31, 31,143,
+ 23, 47, 94, 64,167,211,225,254,253,251,120,248,240, 33,116, 58, 29,110,221,186, 5,173, 86,107,138,112,131,185,185, 57,178, 51,
+ 82,229,123,214,125,223,227,187,185,179,164, 57,143, 35,144,160, 74, 1, 67,171, 85,179,102,205,138,245,244,244,188,164,213,106,
+125,140, 70, 99,119,150,101,247, 84,195,252, 75, 1,184,229,237,237,221,110,217,178,101,173,230, 45,222, 46,178, 52,203,133,216,
+202, 6, 34,107, 25, 68,110, 65, 24, 50,101, 57,127,195,134,181,119, 46, 93,186,148,102,226,202, 60, 10,192,173, 38, 77,154,180,
+ 74, 78, 78,110, 27, 16, 16, 16,228, 92,187,182, 92,238,164,200, 18, 59, 41,211, 25,173,230, 26,156,156,219,108,219,182,237,198,
+217,179,103,147,170,195,233,230,230,214,102,237,218,181,205,220,221,221,155,201, 44, 44,204, 52,121,121, 59,140,133,133, 97, 60,
+ 51, 51, 17,164,242,206,199,143, 31,191,180,123,247,238,228,234,112,250,250,250,182, 14, 13, 13,109, 18, 24, 24,216,204,197,195,
+195, 76,234,224,148, 33, 87,186,164, 74,189,252,132,112,114,233,180,109,219,182, 43,231,206,157, 75, 50, 53,224, 40, 69, 81,224,
+243,249, 48, 51, 51,195,249,243,231, 17,210,218, 27, 10, 42, 19, 13,221, 21,232, 54,236, 83,156, 60,121, 18, 2,129, 0,175,107,
+109, 45, 11, 83, 4, 81,117,197, 87, 85,156, 42,149,106,109,120,120,248, 15,125,251,246, 69,167, 78,157,112,251,246,109, 76,157,
+ 58, 53,246,220,185,115, 0,128,219,183,111, 99,193,130, 5,177, 87,175, 94,197,176, 97,195, 16, 28, 28,140, 91,183,110,109,227,
+130,143,114,224,240,143,193,255,105,145,127,188,192, 98, 89,246,124,233,119, 79, 27, 27,115,141,166, 48,225,252,249,243,122,138,
+162, 32,149, 74,209,167, 95, 63,106,225,119,223,181,254,160, 81,163, 51,131, 90,182, 60,182,103,207,158,128,128,128,128,146, 78,
+254,208,161, 67,234,156,156,236, 12, 87, 87, 87, 43, 83, 15,158,158,158, 14,224,229, 20, 92, 65, 65, 1, 88,150, 45, 25,113,155,
+234,131, 85,144, 75,157,186,116,254,126, 54, 75,143,125,209, 57,102,181, 97, 81,210,199, 45,242, 24,150,159,207, 24,144, 83,200,
+ 34, 79,203,242,175,179, 86, 77, 70,121,133, 24, 98,219, 53,125,116,245, 89, 68,166,154,213,157,170, 78, 37,101,101,101,205, 28,
+ 59,118,108,186,163,163, 35, 49, 55, 55,135,163,163, 35, 53, 98,196,136,180,248,248,248,249, 53,173,120, 63, 63,191,254, 45, 91,
+182, 60, 20, 25, 25,217,123,239,222,189,238, 97, 97, 97,125, 90,182,108,121,200,207,207,175,191,137, 20,123,151, 45, 91, 86, 32,
+ 18,137,208,188,121,243, 18,129, 85,217,171,120, 58,182, 50, 48, 12, 3,137, 68,130,176, 77, 43, 59,127, 55,119,150, 52,227,193,
+ 85,220,185,116, 10,199,159,105, 11,103, 47,250,225,154, 68, 34,169,217,249, 58,200, 27, 52,247,114,122,248,205,248,225,177,179,
+102,205,146,223,185,115, 71, 54,113,194,120, 54, 41, 57, 7,226,122, 63,128,170, 61, 27, 15,147,237,208,173,123, 27,118,198,148,
+207,155, 0,152, 80, 29,206, 9, 19, 38,200, 22, 47, 94, 92, 24, 28, 28,156,147,155,155, 43,145, 91,219,250, 11, 45,173, 27, 38,
+103,102,137,218,180,105,115,123,248,240,225,153, 12,195,140,175,110, 57, 47, 95,190, 44,238,222,189,123, 65, 94, 94,158, 76, 32,
+149, 6, 80, 18, 73, 96, 78,126,161,168,255,128, 1,145, 61,122,244,200, 99, 24,102, 66,117, 57, 31, 61,122, 36, 14, 14, 14,206,
+207,205,205,149,153,219,217, 55,230, 91,217, 4,168, 50, 50, 69,193,173, 91,223, 26, 62,124,120,110,101,231,222,103,210,159,226,
+ 68, 42,149,102,248,250,250, 98,230,204,153,152, 61,123, 54,250,244,233,131,196,196, 68,116, 29, 56, 8,141,134,140,192,217,123,
+ 81, 72, 74, 74,194,215, 95,127, 13, 47, 47, 47, 80, 20,149,244,119,137,172,138, 28,225,253,234,144,243,149,249, 89, 85, 37,178,
+ 58,119,238, 60,172, 87,175, 94,248,237,183,223, 74, 28,218,251,245,235, 7,161, 80,136,198,141, 27,227,203, 47,191,244, 88,182,
+108, 89,236,242,229,203,209,162, 69, 11,184,184,184,188,207, 61,179, 56,112,248,103,160,172, 22,249,167,131, 95,234,196, 74, 58,
+ 61,214, 66,218,239,167,181,107, 44,199, 77,250,178,192,207,207,207,218,209,209, 17, 20, 69,161,107,183,110,164,197,137, 19,230,
+ 2,133, 2,182, 13, 26,128,101, 89, 48, 12,131,139, 23, 46,224,204,153, 51, 5, 59,126,222,236, 60,252,179,207,122, 2,216, 86,
+ 73, 5,178, 69, 35,122,164,165,165,193,201,201, 9, 60, 30, 15, 18,137, 4, 42,149, 10, 78, 78, 78, 16, 10,133,224,241,120,252,
+162,212, 47,149, 78, 59, 58, 57, 57,109, 15, 93, 16, 53, 61,190,225, 87,117,130,101, 20, 57, 86,144, 12, 10, 4, 70,150, 1,165,
+102,193, 48, 44,180, 6,160,190, 51,207,250,180, 22, 86, 55,238,159,122,234,228,228,180,189, 58,149, 20, 27, 27,123, 86,161, 80,
+140, 46, 40, 40,216, 7,128,186,118,237, 26,243,236,217,179,207, 77,117, 72, 47, 15, 82,169,116, 74, 88, 88,152,205,252,249,243,
+179,206,156, 57,147,211,161, 67, 7,203,208,208, 80,219,254,253,251, 79,129, 9,209,225, 85, 42,149, 90,169, 84,110, 75, 73, 73,
+249,188, 73,147, 38,200,204,204,132, 78,167, 67,100,100, 36,234,214,173,139,240,240,112,120,123,123,227,198,141, 27,240,241,241,
+ 1, 77,211,208,104, 52,160, 77, 8,180,165,138,127,110, 38,211,102, 89,168,174, 31,197,163, 59,225, 56, 26,171, 45, 92,250,243,
+158,163, 13, 26, 7, 21,152, 42,124, 75,195,219, 81, 94, 95,105,111,123, 98,249,178, 69,230,137,215,143, 97,239,134,229,236, 31,
+135, 15, 7,138, 45,240, 73,139,247,198,245, 49,232, 81,139, 97, 33, 12, 14,110,137,158,129,247,137, 64,139,172, 63,194, 43,143,
+100, 94, 30,231,190,237,187, 2, 52, 64,253, 58,117,234,244,228,241,120,246, 0,244, 52, 77, 71,193,196, 20, 52, 21,149, 83, 3,
+212, 87, 40, 20, 61, 37, 18,137, 51, 33, 68,173, 86,171, 99,222, 4,167,135,135, 71, 79, 30,143,167, 4, 80, 72,211,116, 52,170,
+153, 42,167, 83,167, 78, 75, 55,111,222, 60, 89,171,213,218,150,178,182,146, 99,199,142, 65,167,211, 65, 36, 18,177,114,185, 28,
+241,241,241, 44,128, 36,150,101, 71,191,169,142,227,227,143, 63,198,181,107,215,230, 2,152, 93,217,126,153,153,153,124, 27, 27,
+ 27, 99, 85,194,203, 84,206,235,215,175, 47, 30, 49, 98,196,148,227,199,143, 39,204,153, 51,167,241,208,161, 67,113,240,224, 65,
+184,186,186,226,209,163, 71,152, 60,121, 50, 8, 33, 30,203,150, 45,187,181,123,247,110, 69,114,114,242,247,220, 99,139, 3,135,
+127,148,200, 34,255,150,115, 41,215,201,157, 48, 68,224, 85,183, 46,173, 43,204,223,242,217,176, 97,163, 67,151, 44,145,249,249,
+249,193,104, 52, 66,115,227, 6,116, 18, 9, 44,191,253, 22, 20, 69,225,250,181,107,152, 48,126,124,190,166, 48,127, 83,237,218,
+238,254,132,101,229, 37, 60,229,100,219,214, 21,207, 5,226,229, 20,161, 90,173,134, 80, 40,132,153,153, 25,210,210,210, 32, 18,
+137, 32,149, 74,209,168, 81, 35, 42, 55, 55, 55, 4,192,111,175,148,173, 12,103, 68, 68,132,193,217,217,185,247,111, 67, 38, 30,
+237,188,109,133,211, 72,171,218,228,146, 58, 3,105,180, 22, 44, 0,123,115, 10, 94, 78, 20, 12, 5,169,236,221, 45, 3,146,136,
+ 49,167,119, 68, 68,162,161, 50,206,178, 80, 42,149,245,234,215,175,191,166, 75,151, 46, 20, 0,180,110,221,154,146,203,229, 63,
+ 42,149,202, 40,149, 74, 85,174, 51,114, 85,156, 18,137, 68, 12, 0,167, 78,157,202,188,124,249,114, 8, 77,211,135, 7, 12, 24,
+ 96, 93,252,187, 41,156, 20, 69,253,180, 97,195,134,207,151, 46, 93,138,212,212, 84,232,116, 58,104,181,218,114,173, 87, 78, 78,
+ 78, 56,125,250, 52, 24,134, 57, 82, 85, 57,125,253, 27,230,111,227, 91,165,108, 61,244,135, 99, 38, 35,201, 95,250,243,158,227,
+213, 17, 87,165, 57,235, 43,204,188,157,237,109, 79,124,191,116,145,121,198,131,171,120,124, 55, 28, 71,175, 39,222, 82,179,108,
+ 34,128,133, 69, 47,180, 15, 36,113, 39,246, 77,183, 71,108, 8,142, 95, 1,251, 26,156,137, 0,142,191,225,114,190, 51,156, 97,
+ 43,125, 74,210,203,204,154, 53,235,198,172, 89,179,250, 86,248,199, 7,190,231,225,123,151,212,164,125, 86,114, 47, 64, 85,228,
+225,174, 82,169,230, 0,152, 83, 46,167,239, 3,178,166, 39, 97, 1, 84,185,146,208,100, 78, 0, 69,233,111,214,244,232,209,227,
+121,113, 40,134,125,251,246, 97,254,252,249,216,181,107, 23,178,178,178,208,178,101, 75,184,184,184, 56, 92,191,126,189,206,155,
+ 60,119, 83,175, 17,199,201,113,114,156, 28,128, 10,156,220, 9, 97,104,154,102,224,224,232, 96,158,150,154,186,122,236,216, 49,
+ 25,243,230,205,211,156, 63,127, 30,186,135, 15,161,137,140,196,233,211,167, 49,113,226,196,194, 81,163, 71, 39,105, 10,243, 87,
+ 58, 57, 58,216,209, 52, 3, 66,152, 74, 45, 36, 20, 69,197,198,196,196, 0, 0,180, 90, 45,126,252,241, 71,131, 94,175,135,133,
+133, 5, 88,150,197,198,141, 27, 25, 0,232,216,177,163, 92, 32, 16,152,148,130, 36, 49, 49,241, 78,110,188,170,243,175,253,199,
+196, 62,216,253,123,110,131, 12, 29,250, 74, 20,248,160, 1,139, 58,146,231,120,113,245,231,156,171,235, 63,138, 45,204,138,239,
+146,152,152,120,167,186,149,228,228,228,244,237,206,157, 59, 29, 34, 34, 34, 88,173, 86,139,196,196, 68,118,202,148, 41, 14, 78,
+ 78, 78,223,190, 78,251,204,206,206, 6, 69, 81, 76, 81,189, 20,175,165, 55, 89,189, 39, 36, 36,220,219,183,111,223,111,103,207,
+158,133,139,139, 11,104,154, 46, 17, 88,165,223,249,124, 62, 8, 33, 88,191,126,125, 54, 33,100, 70, 85,188, 34,145, 8, 27,246,
+ 30, 61,246,213,186,253,123,247,158,190,177,191,166,150, 43, 0,144,153, 91,204,255,126,233, 34,203,226,169,198,157, 17,170, 92,
+ 66,179,229, 79,213,233, 19, 95,182, 17, 2,246,141,113,254, 21,229,124,139,156,111, 19, 69, 66,136, 40,149, 74,252,250,235,175,
+213,246,193,242,171, 67,254,207,185,189,166,156,247,238,221, 91,212,183,111,223,148, 57,115,230,172,213,104, 52, 5, 69,131, 55,
+253,247,223,127,191,108,220,184,113, 41,137,137,137,156,229,138, 3, 7, 14,239,158, 5,139,225, 81,151,215,111, 88,215,109,207,
+174,221, 78, 60, 30,229,244,244,233,179,155,159,124,250,105,226,133, 11, 23,108, 4,117,235, 54,165, 40,138,209, 77,159,126, 53,
+ 63, 55, 39,115,251,150,159,221,106,215,118,111, 84,148,236,153,101,120,212,229,202, 14,152,153,153,185,117,210,164, 73, 77,183,
+109,219, 38, 92,186,116,105, 65, 98, 98,226,201,235,215,175,119, 91,187,118,173,100,227,198,141,133, 57, 57, 57,135,142, 30, 61,
+218,171,125,251,246, 70,157, 78,103,114,124,161,148,148,148, 40, 66,136, 15,181,124,227,192,232, 13, 59, 58,179, 60,170, 37, 52,
+ 66, 16,150,190, 66, 25,243, 79,166,170, 84, 59, 89,150, 53,214,164,146, 36, 18, 73, 35,169, 84,138,199,143, 31,103, 53,109,218,
+ 84, 39, 18,137, 4,238,238,238,182, 18,137,164,209,107,152, 65,217,172,172, 44,176, 44,203, 7, 64,104,154,230, 3, 0, 83, 85,
+208,162, 50, 16, 10,133,253,135, 15, 31,254,219,218,181,107, 59,119,236,216, 17, 30, 30, 30, 48, 24, 12,240,246,246,134, 78,167,
+131,151,151, 23, 52, 26, 13,126,248,225, 7,228,231,231, 79, 78, 76, 76,204,170,140,143, 97, 24,136,197, 98,136, 68, 34,120,251,
+250, 23, 74, 36, 18,212, 84, 92, 1,128, 92,132, 58,241,215,142,224,241,221, 8,236,137, 76,202, 46,208, 51, 93, 31,165, 22,220,
+ 47,187, 95,161, 14, 5,237,187,142,121, 41,188, 13,200,127, 19,156,127, 69, 57,223, 54,103,159, 73, 15,209,238, 67,211,247, 13,
+ 59,253,102, 58, 10,149, 74, 85,237, 70, 16,245,148, 37,120,224,203,226,193,234,114, 99, 92,213,132,179, 24, 69,233,111,214, 3,
+128,139,139,203,147, 9, 19, 38, 76, 73, 76, 76, 92, 81, 20,239,106, 54,215,181,115,224,192,225,157, 20, 88,177,177,241, 81, 30,
+ 30,181,190,222,255,235,190, 86, 44, 75,241, 88, 66, 10, 0,234,247,251,247,239,103,151,222,207,211,198,198,124,248,136,225,253,
+ 8, 67, 4,132, 48, 52,195,163, 46,199,198,198, 71, 85, 97,109,186, 59,100,200,144,213,237,219,183,255,148,166,233, 37, 49, 49,
+ 49, 39,189,189,189,111,117,237,218,245, 43,163,209,184,236,201,147, 39, 39,125,124,124, 78,237,217,179,103, 42, 77,211,213,178,
+ 16, 21, 9,168,109,168,196, 7,172,134,152, 7,192, 82, 44, 22,231,132,135,135,239, 14, 14, 14,238, 79, 8,177, 4,144, 83, 83,
+ 66,173, 86, 59, 33, 47, 47,207,174, 95,191,126, 6, 0,222, 31,126,248,225,140,152,152, 24, 65, 65, 65, 65,108,117,120,226,226,
+226,180,238,238,238,189,198,142, 29,187, 73, 40, 20,118, 44,178,128,177,165,234, 4, 44,203,130,166,233, 67, 42,149,170,210,122,
+ 17, 8, 4,249, 61,122,244, 48, 51,193,194,149,111,106,249,146,211,243, 38, 44,216,122, 52, 84,107, 96, 24, 35,195,142,126,148,
+ 82, 80,238, 18,178, 27,247,217,250,111,154,179, 58,248,167,112, 2,192,152,214,171,119,224,193,234, 18,135,247,226,208, 13,101,
+191,255, 85, 40,178, 56,177, 0,230, 86,185,115,145,197,170,170,220,133,213,226, 44,131,162, 85,130,220, 74, 65, 14, 28, 56,188,
+ 83, 32,127,101, 40, 39,110,126,154,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,255, 34, 40,174, 10, 56,112,224,192,129, 3,
+ 7, 14, 28,222, 44, 8, 0,255,242, 54, 84, 71,153, 18, 66,252,171,123,224,170,248, 57, 78,142,147,227,228, 56, 57, 78,142,147,
+227,252,247,113, 86,197,253,111,177,140,113, 83,132, 28, 39,199,201,113,114,156, 28, 39,199,201,113,190,117,206,127, 27,184, 41,
+ 66, 14, 28, 56,112,224,192,129, 3, 7, 78, 96,189,125, 16, 66, 62, 33,132, 28, 39,132,220, 35,132,156, 32,132,124,242, 26, 92,
+ 82, 66,200,244, 82,124,199, 8, 33, 83, 9, 33, 98,174,166,223,233, 54,192,227,106,129,195,187, 4,165, 82, 89,207,207,207, 47,
+ 66,169, 84,214,227,106,131, 3,135,183, 15,126, 69, 27, 60, 61, 61,175, 80, 20, 85,135,162,168,226, 7, 74,233,135, 75,185,239,
+ 44,203, 62,141,138,138,106, 89, 17,103,157, 58,117, 74, 56, 41,138, 2, 33, 4, 20, 69,193, 96, 48,152,243,120,188,188,242, 56,
+105,154, 78,120,244,232, 81,208, 59,244, 96,221, 97,109,109,109, 88,187,118,237,154,128,128,128,186,153,153,153, 5, 35, 71,142,
+236, 66, 8,233,196,178,236,224,106,114,249, 19, 66,182, 55,105,210,100,255,184,113,227,194,252,252,252,204, 11, 10, 10,196,123,
+246,236,113, 90,191,126,253, 69, 66,200,112,150,101,163,184,102,250,238, 64,161, 80, 4, 16, 66, 86,123,121,121, 5, 41,149,202,
+155, 0, 62, 87,169, 84,183,185,154,249, 91,239,193,207, 68, 34, 81, 87, 47, 47,175,166, 90,173, 54,235,233,211,167, 55,104,154,
+254,150,101,217,228, 55,196,111, 9,224, 91,177, 88,220,204,211,211,179, 86, 76, 76, 76,188, 94,175,191, 14, 96, 30,203,178, 57,
+239,170,184,106,214,172,217,165,133, 11, 23,218,206,152, 49,227,146, 82,169, 12,174, 40,203, 4, 7, 14,165,225,234,234,106, 85,
+ 80, 80,176,137,162,168, 0,137, 68,226,100,110,110, 14, 51, 51,179,100,177, 88,124, 75, 38,147,125,122,228,200,145,108,174,150,
+222,176,192,226,241,120, 46, 55,110,220,112, 48, 55, 55, 7, 77,211, 96, 24, 6, 12,195,148,228, 31, 44,237,187, 85, 20,103, 9,
+237,219,183,175, 52,155, 48,159,207,175, 21, 17, 17,225, 96,102,246,103,168, 37,189, 94,143,134, 13, 27, 50,145,145,145, 14,101,
+ 19, 9,235,116, 58, 4, 6, 6,178,239, 74,101, 17, 66, 6,217,218,218,234,158, 63,127,209, 66,163,213,183, 28, 59,101,254,183,
+253,222,111,107,121,245,234, 85,170,103,207,158, 2, 66,200, 39, 44,203,110, 55,145, 75, 74, 8,217, 60,115,230,204, 69,124,161,
+204, 97,223,209, 43,252, 31, 55,236,140,247,247,173, 77, 38,141, 31, 43,155, 48, 97,194, 13, 31, 31,159,159, 9, 33,173, 89,150,
+213,114, 77,245,157,184,254,252, 90,181,106,253, 22, 26, 26,234,156,156,148,132,229, 43, 86, 52, 7,176, 22, 64,115,174,118,254,
+182,107, 48,125,238,220,185,161, 3, 7, 14,132,209,104,132, 90,173, 86, 62,121,242,164,254,204,153, 51, 63, 36,132, 52,101, 89,
+ 54,246, 53,249,237,189,188,188, 30, 78,154, 52,201,166,105,211,166,160, 40, 10,217,217,217,202, 75,151, 46, 53,223,188,121,243,
+ 39,132, 16, 31,150,101,211, 94,131,159,178,181,181,157, 0,160, 61,195, 48, 98, 0,215,179,178,178, 22,176, 44,171,127,157,114,
+ 91, 91, 91,255,178,108,217, 50, 91,177, 88,140, 45, 91,182,216,246,237,219,247,162, 82,169,108,205,137, 44, 14,149,193,206,206,
+238,179,188,188,188, 53, 50,153, 76,104,101,101, 5,169, 84, 10,161, 80, 8,145, 72,228,106,109,109,237,106,102,102,214,125,192,
+128, 1,159,239,218,181,107, 19, 87, 91,111, 80, 96, 81, 20, 5,169, 84,138, 61,123,246,128,199,227, 65, 40, 20, 66, 32, 16, 64,
+ 32, 16,188,242,185,248,123,173, 90,181, 76,233, 92, 0, 0,135, 14, 29,130,165,165, 37, 44, 44, 44,224,235,235, 11, 66, 8,196,
+ 98, 49, 78,159, 62,253, 10,111, 80, 80,208,107, 69, 17,175, 9,250,116, 34, 44, 80,126,240,198, 30,109,204,208,115,224,194,143,
+ 11,181,134, 54, 44, 75,212,201, 89,134,204,121, 75,215, 68, 53,174,239, 75,246,238,221, 27,104,103,103, 55, 0,128,169,137,164,
+ 39, 54,109,218,244,144, 17, 34,199,225, 67,135, 13, 29, 70, 17,227, 71,195,190,156,123, 41,242, 73,214, 38,191,128,157,105,105,
+ 9,163,127,252,241,199,232,177, 99,199, 78, 0,176,196,212,242, 55,105,210,228, 5,195, 48,181,138, 68,114,186, 84, 42, 85,156,
+ 59,119,206,248,182, 27, 26, 33, 68, 9, 96, 41, 0, 3,128,197, 44,203, 62, 44,181,173,158, 80, 40, 92,162,215,235, 51, 1,204,
+102, 89, 54,254, 93,188, 89,156,157,157,125, 6, 15, 30,108,151,145,150,134,229, 43, 86, 20,255, 28,100, 74, 82,242, 55,141,192,
+192,192, 58, 18,137,100, 41,128, 0,173, 86,235, 12, 0, 82,169, 52,145,101,217, 3,106,181,250,155,136,136, 8,117, 13,175, 83,
+ 45, 0,245, 81,113,202, 38,118,201,146, 37,209, 83,166, 76,121,250,119,115, 18, 66,220, 29, 29, 29, 23,246,233,211, 7, 71,142,
+ 28,193,209,163, 71, 13, 18,137,132, 63,116,232, 80,242,249,231,159, 91, 79,154, 52,169, 59,128, 31, 94,179,106,187,207,157, 59,
+215,198,215,215, 23,251,246,237,195,237,219,183,213,245,234,213,147,182,109,219, 22, 60, 30,207,230,155,111,190,233, 6, 96,107,
+ 53,235, 84, 12, 96, 2,128,246, 60, 30,175,245,208,161, 67,141,227,199,143, 23, 80, 20,101, 88,185,114,165,253,166, 77,155,250,
+217,217,217, 5,164,167,167,231,215,180,208, 89, 89, 89, 11,230,207,159,191,109,245,234,213,230,177,177,177,152, 59,119,174,221,
+184,113,227,206, 43,149,202,182,156,200,170, 24, 60, 30, 79,207, 48,140, 0,128,132,101, 89,109, 85,223,255, 77,231,110,107,107,
+ 59, 38, 43, 43,107,173, 82,169,132,189,189,125,201,179,150, 97, 24, 20, 20, 20, 64,173, 86,163, 78,157, 58, 66, 95, 95,223,141,
+227,198,141, 19,172, 94,189,122, 29,215, 98,170, 41,176, 8, 33,109, 89,150, 61, 95,170, 51,104,203,178,236,121, 66, 8, 24,134,
+129, 64, 32, 0,143,199, 3,159,207, 47, 17, 62,165, 63, 23,191,202, 19, 66,101, 87, 24, 80, 20, 69,242,242,242, 74,196,149,165,
+165,101,137, 37,204, 96, 48,252, 31, 39, 77,211,160, 40,138,173,140,243, 77,160, 52,103,216, 74, 31,108, 13,159,210,127,107,248,
+203,239,221, 6,190,124,223, 26, 14,156,190, 62,122,233,146,117,173,106, 77, 92,176, 37, 52, 35, 35, 59,213,207,197,222, 56, 96,
+ 96, 91, 55, 81,122, 74,186,109,237,218, 33, 0, 82,171, 81,206,224,209,163, 71,239,219,119,246,177, 92, 44, 22,137,120, 20,120,
+245, 60,234, 8,156, 45,234,218,216,119,105, 42,138,139,141,189,248,201, 39,159,140, 30, 59,118,172,109,177,192, 50,229,220, 89,
+150, 85,156, 60,121, 18,124, 62, 31,157, 58,117,178, 46, 18,209, 70, 83,206,253,175,168,207, 82,152,153,146,146,210, 95,163,209,
+ 32, 40, 40,232,125, 66, 72,123,150,101,111, 17, 66, 26,244,234,213,235, 98, 88, 88,152,121,100,100, 36,154, 55,111, 46, 5,208,
+247, 45,150,243,255,160, 84, 42, 79, 2,120,143,199,227, 65,167,209,232,150,126,255, 74,154,187,240,210,226,234,239, 40,103,227,
+198,141,125,100, 50,217,149,239,191,255,222,194,207,207,143, 8, 4, 2, 24,141, 70,196,196,196,212,218,177, 99,199,168,155, 55,
+111,118, 11, 12, 12,244,139,136,136, 48,212,224,220,235, 95,188,120,177,192,195,195,163, 92,193, 88, 88, 88,200,243,240,240,104,
+ 7,224,233, 91,224, 76, 72, 73, 73,249,224,189,247,222, 27,157,156,156,252,208,104, 52, 78, 3,224,111,103,103, 23,249,241,199,
+ 31, 67, 42,149,182, 55, 69, 96, 85,118,141, 28, 28, 28,122,181,108,217, 18,171, 87,175,198,226,197,139, 59,177, 44,251, 7, 33,
+164, 99,110,110,238,233,247,223,127, 31, 86, 86, 86, 31,148, 39,176, 42,226, 36,132,248,137,197,226,173,187,118,237, 50,243,240,
+240,240, 16, 10,133,148,135,135, 7, 50, 51, 51,161,209,104,196, 11, 22, 44,104, 32,145, 72,110,255,240,195, 15, 91, 1,124, 84,
+195,246, 89,175,105,211,166, 27, 39, 79,158,108,126,248,240, 97,120,121,121, 33, 55, 55, 23,195,135, 15,119, 88,181,106,213, 57,
+165, 82,217,174, 88,100,253,221,247, 17, 33, 36, 7,128, 5, 0,171,234, 76,175, 86, 82,159, 57, 0, 74,252, 83, 5, 2, 1,196,
+ 98, 49, 36, 18, 9, 36, 18, 9,158, 62,125,250, 43,143,199, 27, 86, 52,144,171,146,147,252,249,224,106, 68, 8,185,193,227,241,
+ 42,253,206,178, 44,243,182,251, 37, 66,136, 11, 33,100, 37,128,246,120,233, 71,125,222,193,193, 97, 98,114,114,242,115, 83, 57,
+149, 74,165,109,126,126,254, 15, 74,165, 18, 14, 14, 14,197, 98, 19, 65, 65, 65,208,104, 52,184,127,255, 62, 24,134,193,147, 39,
+ 79, 96, 97, 97,129, 6, 13, 26,252, 48,119,238,220,125,179,103,207,206,248,171,206,189, 34, 45,242, 79,183, 96,157, 43,106,103,
+197, 39,115,174,120,164, 73,211,116,137,192, 42, 43,126,202, 10, 46, 66, 8, 88,150, 37, 85, 84, 32,165,211,233, 74,196,149,133,
+133, 69,137, 56, 51, 26,141,229, 10,172,154,194,218,218,250, 68,118,118,246, 10,150,101, 79,214,228,255, 67,135, 14,253, 63,127,
+142,233,211,167,199,167,165,165,209,189,130,235,137,183,111, 63,146,241, 73, 72, 59, 39, 63, 79, 23,111,185,173, 67,163,194,194,
+194,155, 0, 4,213, 49,136,248,249,249,153,175,219,117, 62,117,224,132,165,243, 92, 28,205,232, 38, 94,142, 22,158, 54,114,145,
+173,132,111,180, 98,141,217, 50,153,172, 62,128,140,234,150,221,210,210, 18,135, 14, 29,122,215,218,154,181, 90,173, 70, 86, 86,
+ 22,214,175, 95,111, 49,122,244,232,179,132,144,137,189,122,245, 90,189,111,223, 62,121,118,118, 54,244,122, 61, 0,168,223,193,
+251,100,190,181,181,117,155,246,237,219,139,118,239,221, 43, 98, 89,182, 0, 47,211, 17,229,179, 44, 59,238,239, 46,140, 68, 34,
+249,106,193,130, 5, 22,126,126,126, 36, 61, 61, 29, 44,203,130,162, 40,216,217,217, 97,202,148, 41,146,111,190,249,198, 57, 58,
+ 58,250,107,212, 32,237, 12, 0, 82,145, 16, 2, 0,153, 76, 70,163,250,139, 99,202,229, 52, 26,141,164, 85,171, 86, 83,210,211,
+211, 27,168,213,234,239, 76,120,240, 24, 1, 28, 42,122, 21,247, 41,183, 31, 62,124,168,230,243,249,210,218,181,107, 55,123,221,
+186,173, 87,175, 94, 11,129, 64,128,235,215,175,107, 1, 20,119,238,231,239,220,185,163,253,232,163,143,196,181,106,213,106, 81,
+ 29,203,149, 88, 44,222,250,248,241, 99,111,133, 66, 33,189,118,237, 26, 26, 54,108,136,244,244,116, 36, 39, 39, 35, 63, 63, 31,
+201,201,201,248,244,211, 79, 29,150, 47, 95,174, 48, 85, 76,121,122,122,158,178,179,179,147, 22,167,193,234,209,163,135, 96,201,
+146, 37,230, 9, 9, 9, 48, 26,141,152, 49, 99, 6, 66, 66, 66, 96,109,109,141, 97,195,134, 57,110,220,184,241, 23, 0,129,111,
+249, 30,202, 22, 8, 4,144,203,229, 86,217,217,217, 57,175,193, 35, 6, 32, 2, 0, 62,159, 95, 34,174,196, 98, 49,196,226,127,
+255,186, 32, 66,136, 51, 33, 36, 74, 32, 16,136,229,114,185,144,162, 40,200,229,242, 46, 46, 46, 46,247, 63,249,228, 19,255,237,
+219,183,199,153,194,163,209,104,182, 75,165, 82,129,189,189, 61, 0,160,115,231,206, 24, 58,116, 40,210,210,210, 24,149, 74, 5,
+111,111,111,234,252,249,243, 72, 73, 73,193,237,219,183,209,164, 73, 19,129,141,141,205,118, 0,221,254,194,211,171, 80,139,252,
+147, 5,214, 43, 39, 87,122, 35,195, 48,175,136,171,242, 44, 87,165, 45, 88, 85, 77,231, 17, 66, 64,211, 52,156,156,156, 32,147,
+201, 32,147,201, 74,182, 21,139,185,210, 47,150,101,107, 60, 69, 88,183,110,221, 14, 50,153,172, 53, 33,228,125,150,101, 77, 78,
+121,219,103,210,195, 18,171, 85, 89, 52,106,212,232,202,140, 25, 51,186,158, 57,115, 38,171, 69,195, 58,140, 88, 21,159, 33,179,
+182,107, 72,236, 29, 58,141, 29, 49,242, 42,128, 93,213, 40,162, 74,163,209,136,221,157, 40,181, 42, 39, 87, 87,199,194,210,170,
+142,165,153,204,221,206,210,214, 90, 34,162,228,142, 14, 74,131,193,144, 13, 64, 85, 21, 81,233,105, 65,137, 68,162, 35,132,240,
+173,172,172, 96,105,105,169,207,202,202,210, 4, 6, 6, 66, 36, 18,165, 11,133, 66,147,167, 11,155, 54,109,154, 66,211,180, 67,
+101,251, 8,133,194,212,171, 87,175, 58,154,120,190,223, 52,106,212,168,237,218,181,107,237,189,188,188,176,126,253,122,139,125,
+251,246,109,253,229,151, 95,144,157,157,141,103,207,158, 97,248,240,225,185,120, 57,141,248, 78,193,198,198,230, 82,239,222,189,
+177,105,211, 38,182,104, 16, 33, 39,132, 52,180,180,180,124, 20, 21, 21,165,255,187,203, 67, 81, 84, 23,111,111,111,146,147,147,
+ 3,150,101,193,227,241, 94,121, 77,153, 50, 69,250,233,167,159,206,108,209,162,197, 20,129, 64,144,107, 52, 26,119,231,231,231,
+127,119,239,222,189,119,202, 89,181,117,235,214, 95,196,199,199,135,184,185,185,253,254, 26,163,125,182, 73,147, 38, 58,150,101,
+165, 60, 30, 79,240,186,101, 42, 94, 29, 74,211,180,166, 56, 57, 60,203,178,198,192,192, 64, 77,209,195,189, 58,171, 71, 39,132,
+133,133,153, 43, 20, 10,169, 90,173, 70,108,108, 44, 2, 3, 3,145,151,151,135,130,130, 2, 20, 22, 22, 66,175,215, 35, 39, 39,
+199,138,166,105,157,137,109,241,151, 29, 59,118,184,184,184,184,192, 96, 48,192, 96, 48,160,160,160, 0,231,207,159,135, 86,171,
+ 45, 73,244,190,104,209, 34,205,231,159,127, 46,217,187,119,111,170, 90,173, 30,244,182,175, 53,143,199,131, 88, 44,134, 64, 32,
+200,118,117,117, 5, 69, 81,146,184,184,184,154, 76,185, 89, 0,200,229,243,249,162,210,194, 74, 34,145,224,222,189,123,123, 42,
+178, 94, 85,214,126,170,243,253, 29, 16, 88, 43, 5, 2,129,216,214,214, 86, 88,252,155, 94,175, 23, 90, 91, 91,195,205,205,109,
+ 53,128,238, 38,242, 52,182,181,181, 5, 33, 4, 66,161, 16, 35, 70,140,192,141, 27, 55, 14, 36, 36, 36,124,146,154,154,138,252,
+252,252,237, 22, 22, 22, 31,166,166,166,130,166,105,196,197,197,161, 81,163, 70,141,255,166,211,252,199, 11,171, 87, 4, 22, 33,
+164,109,233,247, 98, 49,196,178,108,149,150,171,202,166, 8,203, 66,175,215,155,133,132,132, 48,197, 98,172,120, 21, 33, 0, 66,
+211, 52,132, 66,225, 43,156, 69, 2,171, 70, 13, 92, 44, 22,163,123,247,238, 18,153, 76,118,176, 72,100,157,169,105, 37, 29,218,
+183,211,113,201,236, 25,179,109,148,181, 61,191,254,250,107,126,183,110,221, 78,239,222,189,187,137, 93,112,135,174, 23,254,216,
+227,184,126,218,161,223,247,236,217,147,103,170,131,123, 17, 46, 31, 56,112, 64,241,213,248,177,194,182,109,219,254, 58,164,193,
+100,190, 66,196,152,219,136,133, 60, 25,143, 79,137,107,185,119,253,227,252,133, 36, 0, 23, 76,232, 36, 20,167, 79,159,134,149,
+149, 21, 0,136,116, 58, 29,172,172,172,176,126,253,122,137,133,133, 5, 44, 44, 44,208,178,101, 75,107,161, 80, 88,233,116, 97,
+105,208, 52,237,112,238,220, 57,152,153,153,161,160,160, 0, 90,173, 22, 70,163, 17, 44,203,150,140, 28,219,181,107,231, 80,141,
+142, 44,150, 16,210,102,236,216,177, 23,214,174, 93,107,239,233,233,137,121,243,230, 33, 35, 35, 3, 47, 94,188,192,160, 65,131,
+114,159, 62,125,218,190,180,111,214,187,128, 6, 13, 26,176,151, 47, 95,198,177, 99,199,208,179,103, 79,114,232,208, 33, 61, 77,
+211,194,196,196,196,187,111,171, 76, 70,163,209, 92, 36, 18,193, 96, 48,128,207,231,151, 76,225, 23, 11, 44,103,103,103,156, 58,
+117,138, 95, 88, 88,200,207,200,200,144,109,222,188,121,124,120,120,184, 2,192,128,183, 89,151,235,214,173,115, 27, 49, 98,196,
+ 11, 62,159,207,118,237,218,117,240,243,231,207, 63, 80, 40, 20,127,156, 61,123,246,123, 0,213, 14, 45,224,239,239, 31,206,227,
+241, 92, 0, 8, 15, 30, 60,104,160,105, 90,216,160, 65,131,148, 98,203, 78,241,179,209,104, 52, 38, 68, 71, 71, 7,153,194, 39,
+145, 72,132, 63,253,244,147, 65,163,209, 8, 27, 54,108,152, 82,138, 71,248,219,111,191, 25, 12, 6,131,208,219,219, 59,220,196,
+149,205,237,154, 53,107,230,150,157,157, 13, 75, 75, 75,228,231,231, 35, 60, 60, 28,126,126,126, 80,169, 84,160, 40, 10, 86, 86,
+ 86, 88,183,110, 93, 33, 33, 36,211,148,115,206,204,204, 28, 52,105,210,164,139,123,246,236,177,227,241,120,120,254,252, 57, 50,
+ 51, 51, 97,101,101,133, 29, 59,118,192,221,221, 29,167, 79,159,206,164,105,250,179, 77,155, 54,205, 84,171,213,131,222,182, 15,
+ 22, 69, 81, 37, 66,168,148, 32,210, 52,111,222, 28,151, 47, 95,222, 89, 29, 81,196,178,172,174,120, 90,176,244,212,160, 88, 44,
+ 6,143,199,171,246,148, 7, 77,211, 66, 66, 72, 99,252, 57,107, 83,233,247,119, 0,109,229,114,185,176,236,143, 89, 89, 89, 66,
+111,111,239,214,213,120, 62,218, 74,165,210,151,132,109,219, 34, 53, 53,149,246,240,240,232,215,183,111, 95, 3, 0,140, 26, 53,
+170, 95, 90, 90,154,198, 96, 48,240,248,124, 62,210,210,210, 80,167, 78, 29,219,191, 65, 64,254,159, 22,249, 71, 11, 44,150,101,
+ 9, 33,132, 45,253, 94,218,130, 85,149,229,170,120, 91,177, 80,170,226, 70,203,142,136,136,144,203,229,242,146,223, 12, 6, 3,
+ 26, 55,110,204, 48, 12, 67,202, 30,235,117, 44, 88, 98,177, 24, 86, 86, 86, 24, 48, 96,128, 44, 49, 49,113, 43, 0, 23, 83,254,
+247,210, 7,235, 85,113,181, 97,241,188,213, 63, 46, 89, 96,251,228,216, 22,108, 90,181,140,150,203,205, 34, 27, 53,106,212, 38,
+ 39, 39, 71,107, 37,215, 34, 57, 3,251, 88,150,253,165, 26,141,136, 2,176,231,234,213,171,183, 58,119,238,124,245,217,179,103,
+214,207, 31, 63,190,100,161,203,207, 55,171, 85,219, 40,116,112,236,165,214, 27,248,189,123,247,118, 4,176,202, 4, 62, 48, 12,
+131, 35, 71,142,192,220,220, 28, 22, 22, 22,176,178,178, 66,177,184,170, 41,158, 62,125,138,132,132, 4,200,229,114,200,229,114,
+152,153,153,193,204,204, 12, 34,145,232, 21,235, 99, 53, 68, 86, 52, 33,100,226,254,253,251,119,135,134,134, 34, 43, 43, 11, 5,
+ 5, 5,152, 61,123, 54, 98, 99, 99, 39,177, 44,123,235, 93,186, 57, 26, 54,108,200, 94,189,122, 21,151, 46, 93, 66, 65, 65, 1,
+ 86,175, 94, 13,133, 66,209, 1,192,172,183, 89, 46,134, 97,132,197,161, 78, 40,138,250, 63, 11, 86,177,216,146, 74,165,176,179,
+179,195,140, 25, 51,132,189,122,245, 10,121,155,101, 94,178,100, 73,221,149, 43, 87,110,222,182,109,219,177, 65,131, 6,237,189,
+119,239,222, 48, 75, 75,203,187,103,206,156, 89, 32, 22,139,153, 26,117, 94,124,190,203,173, 91,183, 74,139,124, 1, 77,211, 50,
+154,166, 97, 52, 26, 97, 48, 24, 80, 88, 88,136, 78,157, 58,153,204,119,227,198, 13, 25, 0,204,154, 53, 75, 0, 64,198, 48, 12,
+ 74,243,169,213,106, 65,199,142, 29, 93, 76, 44,162,210,218,218, 90,240,226,197, 11, 24,141, 70, 4, 4, 4, 96,221,186,117,232,
+219,183, 47,234,215,175,143,188,188, 60, 68, 69, 69, 97,235,214,173,214, 66,161,240, 99,147,204,222, 42, 85,180, 82,169,108,221,
+175, 95,191, 43,187,119,239,182,118,115,115, 67, 66, 66, 2, 84, 42, 21, 60, 61, 61,177,106,213,170, 2,150,101, 91, 21,137,170,
+223,222,246, 61, 68, 81, 84,137, 8, 42,239, 85,195, 1,134,133, 68, 34,201,149, 72, 36,162, 98,161,117,243,230,205,106, 91,175,
+ 74,245, 75,183,170,243,253,109,162,184, 15, 54, 24, 94, 61, 77,185, 92, 14, 47, 47, 47,147,121,228,114, 57, 41,126,198, 26, 12,
+ 6, 36, 37, 37,209,247,238,221,163, 3, 2, 2, 0, 0, 10,133,130,190,118,237, 26,173,213,106,121,230,230,230, 0, 0, 43, 43,
+171,191, 84,100, 86,166, 69,254,209, 22,172, 82, 86,146, 11,101, 45, 88,197,130,167, 50, 39,119, 62,159,111,170,192, 2,143,199,
+195,241,227,199, 97,102,102, 6,115,115,115,248,248,248, 20, 87,110,185, 86,177,154, 10, 44,145, 72, 4, 75, 75, 75,156, 60,121,
+ 82,115,251,246,237, 17, 53,181, 92,109, 88, 60,111,245,162,239,230,218,102, 60,184,138, 4, 85, 18, 50, 82,244,225,151,239,197,
+157, 0,112, 2, 0,240,192,247, 60,124, 31,152, 44,174,124,237,101,141,154,123, 57,253,214,254,189,174,206, 31, 12, 25, 75,125,
+254,249,231, 45,134, 14, 29,154, 57,120,240,224, 9, 82,169,180,190,209,104,204, 58,125,254,124, 92,159, 62,125,108,115,114,114,
+134,178, 44, 91,165, 79, 18,143,199, 75,234,220,185,115, 45, 0, 48, 55, 55,215,253,252,243,207, 34, 43, 43, 43, 12, 28, 56, 80,
+147,156,156, 44, 41,170,143, 44, 83,173, 87, 69, 15,155,212,207, 62,251,204,161,138, 58, 78,173,230,232,164,113, 72, 72,200,198,
+ 61,123,246, 32, 35, 35, 3, 5, 5, 5, 16, 10,133, 88,186,116, 41, 94,188,120,241, 3, 33,228,222,187,210,153, 53,106,212,136,
+189,126,253, 58,238,222,189, 11,173, 86,139, 17, 35, 70,148,246, 49,236,252,182,103, 10, 18, 19, 19,177, 99,199, 14,208, 52,141,
+ 65,131, 6,193,221,221,189, 68, 96, 37, 39, 39,227,231,159,127, 6, 77,211,248,236,179,207,224,234,234, 10,131,193, 32,105,215,
+174, 29,255,109,173, 40,157, 60,121,242,147, 3, 7, 14, 28,139,143,143,239,182,120,241,226,182,132, 16,102,202,148, 41,139, 44,
+ 44, 44, 94,107,245,101, 86, 78, 30, 30, 61,126, 14,163,209, 88,238,203,222,206,166,218,124, 49,177, 47, 96, 52,210, 37, 28, 52,
+253, 39,159,173, 77,181,248, 18, 51, 51, 51,189,120, 60,158,240,241,227,199,112,115,115, 67,211,166, 77,177,112,225, 66,164,165,
+165,193,104, 52,194,193,193,129, 49, 24, 12,145, 58,157,238,130,169,164, 73, 73, 73,133, 25, 25, 25, 5,159,125,246,153,213,198,
+141, 27,137,151,151, 23,158, 61,123, 6,129, 64, 0,115,115,243,194,135, 15, 31,190, 51,171, 6,203, 90,174,138, 95, 69,150, 43,
+ 10,192,239, 0,170, 37,176, 89,150,213,213,170, 85,235, 21,255,171,154, 88,175,254, 42,252,149, 43, 19,189,188,188,206, 91, 88,
+ 88,132, 60,124,248,240, 21, 43,214,128, 1, 3,244,158,158,158, 23, 77,229,177,176,176,200, 18,137, 68,182, 26,141, 6, 87,175,
+ 94,133,143,143,143, 48, 39, 39, 39,148, 16, 50,189,104,112, 25,154,146,146, 34,116,118,118, 6, 0,120,123,123, 35, 39, 39, 39,
+203,148,104, 1,175,137,255,211, 34,255,120,129,197,178,108,219,210,239,165, 26,178, 73,211,131,165, 44, 88, 85, 90, 90,212,106,
+117,137, 69, 68, 46,151,131, 97,152, 87,166, 35,203, 10,172,178,171, 8,171,115, 99,159, 61,123, 86,179, 97,195,134,222, 44,203,
+158, 48,245,127,165,125,176,126, 90,190, 96, 73,177,184,186,115,233, 20,126,123,152,147, 62,101,225,242,149, 53,173,108, 63,123,
+121, 67, 39, 71,187,115,203,151, 46,178, 72,188,126, 12,123, 55, 44,103,239,220,184,209,100,204,141, 27, 31,143, 25, 51,198, 6,
+ 47,253,173, 18, 1, 92, 2,240,131, 41,226, 10, 0,174, 93,187,230, 90,252,185,105,211,166, 6, 11, 11, 11,152,153,153, 33, 45,
+ 45, 77,104,102,102, 38, 57,119,238, 92,181,125, 29,174, 95,191,238,248, 38, 27, 26, 33,164, 94,207,158, 61, 47,252,250,235,175,
+242,236,236,108,196,197,197, 97,234,212,169, 88,179,102, 13, 44, 44, 44,112,228,200, 17,243,144,144,144,115,132,144,150,111, 59,
+184,106,227,198,141,217,155, 55,111, 34, 46, 46, 14, 70,163, 17, 31,124,240, 1,222,165,209, 20,195, 48,236,164, 73,147,176,113,
+227, 70, 80, 20,133, 33, 67,134, 32, 55, 55,183,100,187,141,141, 77,121,219,120,168, 98, 69,233, 95,218,209,240,249,236,249,243,
+231, 23,183,109,219, 22,241,241,241,221, 2, 3, 3,127, 28, 54,108, 88,226,235,242, 90, 91,154,163,145,159, 7,180, 90, 45,180,
+ 90, 45,148, 74, 37,242,242,242,240,228,201, 19,104,181, 90, 56, 58, 88, 85,155,175,113,253,186,208,233,116,208,106,181,112,112,
+112, 64, 65, 65, 1,158, 61,123, 6,173, 86, 11,123,123,235,234,208,157,191,116,233,146, 91,167, 78,157,188,163,162,162,112,225,
+194, 5,232,116, 58, 52,110,220, 24, 49, 49, 49,104,209,162, 5,114,115,115,175,223,188,121,243, 80, 53,238,163, 90, 93,186,116,
+ 57,187,115,231, 78,219, 95,126,249, 69,247,209, 71, 31,137,230,205,155, 71, 44, 44, 44,144,146,146,130,119,204,101,232,255,132,
+ 85,120,120,248, 30,161, 80,200, 2,168,145,181,169, 24,241,241,241,226, 6, 13, 26,104,197, 98,177,232,202,149, 43, 59,107,106,
+189,250, 75, 70, 63,175,185, 50,177, 50,212,173, 91,119,146,139,139, 75,167,128,128, 0, 68, 69, 69, 9,197, 98, 49, 6, 15, 30,
+172,239,222,189,187,158,207,231,155,188,224, 70, 34,145, 60, 48, 55, 55,111,163,213,106,161,211,233,112,250,244,105,216,216,216,
+ 76, 13, 9, 9,153,152,148,148, 4,149, 74, 37, 18,139,197, 37, 86,242,246,237,219, 35, 51, 51,243,193, 95, 93,119, 21,105,145,
+127,186, 5,171, 92, 49, 84,218,130, 85,217,244,160,169, 2,139,162, 40,232,116, 58,200,100,178, 18,129, 85, 58, 82,124, 77, 56,
+ 43,194,173, 91,183,174,196,198,198,126,207,178,236,209,154,252, 63,236,151,109, 10, 75,166,176,150,234,250, 81, 60,186, 19,142,
+ 3, 81,217,233, 83, 22, 46, 31,255,126,239,129, 41,101, 5, 89,152, 9, 46,244,245, 28,228,254,206,142,182,231,150, 47, 93,100,
+145,241,224, 42, 30,223, 13,199,209,235, 9, 17, 90,150,141, 1,240,221,155,188,168,197,115,235,239, 88, 71, 59,169,120,181, 96,
+108,108, 44, 6, 13, 26,148, 29, 23, 23, 55,246,131, 15, 62, 88,115,226,196, 9,107,107,107,107,156, 60,121,210,188, 86,173, 90,
+161, 0, 66,222, 98,231,200,210, 52,141,140,140,151,139, 55, 91,181,106,133,119,205, 84, 29, 30, 30, 46,236,217,179,231, 31, 0,
+ 58, 60,120,240, 0, 12,195, 92,137,136,136,104, 85,188,189,178,109,166,232,183,188,188, 60,129,185,185,121,185, 15, 43,161, 80,
+ 40,172,174,197,161, 52,231,229,203,151, 23,125,255,253,247, 7,190,252,242,203,199,175,201, 89,174, 5, 43, 36, 36, 4, 26,173,
+ 1, 9, 41, 57, 48, 26,141, 40,212,165,188,150, 5, 43, 36, 36, 4,106,141, 14, 47,146, 50, 97, 52, 26,145,175,169,150,161,100,
+213,128, 1, 3,122, 95,190,124, 57,211,219,219,219,230,230,205,155, 72, 77, 77,133,193, 96, 64,135, 14, 29, 32, 22,139,159,135,
+134,134, 10, 97,130, 27, 64, 81,219,148,189,247,222,123, 39,118,239,222,237,116,229,202, 21,232,116, 58, 38, 60, 60,252,217,200,
+145, 35, 45, 62,253,244, 83,219,151,213,248,206,221,247, 16,139,197,120,240,224, 65,177,176, 26,242,166,132, 80,177, 5,235,191,
+132, 95,126,249, 37,113,203,150, 45,126, 10,133, 98,229,224,193,131,219, 43,149, 74, 74, 36, 18,157,231,243,249, 19, 1, 60,175,
+ 70,221, 13,179,182,182,126,194,227,241,120,137,137,137,120,252,248, 49,120, 60, 30, 88,150, 21,169,213,106, 56, 58, 58,130,199,
+227, 21, 91,199,224,226,226, 66,199,196,196, 12, 3,135, 55, 35,176,138, 49,127,254,124,108,216,176, 1,163, 70,141,170,116,191,
+162,176, 0,164, 76,135,240, 74,182,237,226, 85,132,115,230,204,121,229,127,197, 83,129, 99,199,142,125,133,243,224,193,131,255,
+ 55, 69,104,106, 6,239, 39, 79,158,152,172,128, 75,115, 22,251, 96,245, 25, 52, 36,105,245,162,217,119,183, 30,250,163, 65,146,
+154, 77,154,178,112,249,228,178,226,202, 84, 78, 95, 39, 51, 95, 23, 7,219,243,223, 47, 93,100, 89,108, 13,219, 29,153,156, 3,
+ 35, 59,170,154, 15,255, 42,207, 93, 32, 16, 36,181,108,217,178, 22, 96,218,180,224,223,149,101, 93,171,213,226,218,181,107, 0,
+128,225,195,135,103,199,197,197,181, 97, 89,246, 62, 33,228, 65,215,174, 93,207, 31, 63,126,220,186,104,244,157,241, 54,203, 9,
+188, 92,209,202,231,243,225,229,229, 85,109,113,245,119,149, 51, 41, 41,105,212,232,209,163, 55,104,181, 90,126, 65, 65,193, 40,
+ 83,183, 85, 85,206,176,176,176,199, 94, 94, 94,109, 81,113, 40, 6, 6,192,213,215,225, 92,185,114, 37, 0,120,191, 14,103, 69,
+ 22,172, 61,123,246,128,166,105,184, 56, 90, 66,171,213,162,180,191,167, 41,156,101, 45, 88,123,247,238, 5,195, 48,112, 85,216,
+ 64,171,213, 86,232,123, 88, 30, 39,203,178, 90, 66,200,176,150, 45, 91,110, 95,176, 96,193, 83, 31, 31,159, 90, 45, 91,182,180,
+206,204,204, 76,189,117,235, 86,220,134, 13, 27,204,140, 70,227,176,138,166,137,202,114,218,218,218, 46,223,182,109,155,203,131,
+ 7, 15,144,152,152,136, 21, 43, 86, 60, 79, 75, 75,235,206,231,243,197, 63,254,248,227,185, 30, 61,122, 56, 26,141, 70,237,187,
+208, 62,139,161, 82,169, 14,225,101,248,154,106, 9, 43, 83,202,121,227,198,141,189, 69,220, 71, 77,225,254,187,206,253,117, 87,
+ 38, 86, 85,206, 97,195,134, 37,160, 76,204,180,234,150,243,228,201,147,113,253,251,247,159,239,239,239, 63,199,204,204, 12,209,
+209,209, 37, 97,145,138, 7,232,132, 16,244,233,211, 7, 99,198,140,193,201,147, 39,231,247,238,221, 59,238,175,174,207,255,140,
+192,162,105, 58, 62, 46, 46, 78,177,109,219, 54, 30, 33, 4, 59,118,236, 64, 89,199,218,226,119, 0,184,118,237,154,145,101,217,
+ 39,149, 29,140,166,233,248,240,240,112,199, 45, 91,182, 8,164, 82, 41,196, 98, 49, 84, 42, 21, 24,134, 97, 82, 82, 82,168,157,
+ 59,119,190,226,172,123,245,234, 85,163, 94,175,127,241,182, 42,231, 98,212,243,137,199,143, 28,176,107,209,188, 77,182,133,141,
+ 77,185, 66,165, 56,226,123,101,144,155, 91, 44,250,126,233, 34,171, 98,113,181, 39, 50, 57, 91,163,165,219, 63, 72, 43,188,243,
+166,203,124,249,242,101,215,119,180,173,205,110,219,182, 45, 3,192, 14,192, 76,246,165,229, 14, 69, 34,171,185,151,151,215,151,
+ 0,164, 0,102,191, 77,235, 21,195, 48, 37,150,211,119,217,201, 50, 34, 34,226, 41,128,142,213,221, 86, 21,122,247,238, 29, 11,
+ 32,246, 77,150,245,175,224, 44, 70,102,118, 46,158, 60, 75, 44, 74,229, 69,131,126,158, 92,202,127,202,128,204,220,234,133,145,
+203,202,201,195,147,103, 9, 96, 24,246, 37, 31,157, 88,226,228,110, 52, 26,145,158, 93,189, 48,109, 44,203, 70, 17, 66, 90, 76,
+155, 54,109, 2,128, 96, 0,174, 0, 94,224,165, 27,192, 42, 83,125,112, 4, 2, 65,240,202,149, 43,187, 83, 20, 69, 93,187,118,
+ 77,187,116,233,210,248,180,180,180, 94, 44,203,190, 0, 0,165, 82,217,238,224,193,131,191,188, 11, 33, 25,202, 96,200, 63,148,
+187,198,248,167,172, 76,220,189,123,247,220,177, 99,199,242,155, 53,107,246,117,147, 38, 77,168,103,207,158, 33, 53, 53,181,100,
+112,217,165, 75, 23,184,185,185, 49, 71,143, 30, 93,248,225,135, 31,206, 5,135, 55, 39,176,210,211,211,187, 12, 25, 50,228, 20,
+ 69, 81,181, 43, 74,238, 92,218,186,196, 48, 76, 92, 74, 74, 74,165, 65,200,210,211,211,187,204,158, 61,251, 20,159,207,175, 93,
+ 42,153,179, 54, 35, 35, 99,108,159, 62,125,214, 10, 4, 2,113,105,107, 23,195, 48,207,147,146,146,254, 86,135,226,178,113,176,
+186,246,248, 48,253,117, 57,229, 34,120,196, 95, 59,130,199,119, 35,176, 39, 50, 57, 43, 79, 71,183,139, 78, 43,248, 79, 41,127,
+150,101, 83, 1,140,173, 96,219, 99, 0,163,222,129, 50,254,107, 86,175,252, 23, 96, 52, 26, 19, 58,117,104,135,178, 97, 25,202,
+126,167,105, 58,193, 84,190,142,237,219, 86,200, 83,252,217, 84,190,210,150, 44,188,204,198,176,164,166,231,202,227,241,190,108,
+214,172, 25,239,203, 47,191, 76, 57,118,236,216, 31, 89, 89, 89,147, 89,150, 45, 44,101, 41,138,198,219, 15, 38,202,225,207,107,
+254,143, 88,153,184,118,237,218, 89, 83,167, 78,221,170, 84, 42,119, 4, 7, 7,123,123,122,122, 90,152,155,155, 35, 55, 55, 55,
+ 47, 51, 51,243,209,145, 35, 71, 6, 13, 25, 50,228, 41,119, 69,223,176,192, 74, 75, 75, 43, 0,208,226, 77, 30,172, 10, 78,183,
+119,165, 82,134, 6, 45,221,141, 7, 75, 95,201, 67, 88, 44,190,202,253, 94,133, 15, 86, 82,122,238,152, 5, 91,143, 44,211, 26,
+ 89, 70,111,100,134, 71,167, 22, 68,113, 77,239,157,237, 24, 57,113,245, 15,193,189,123,247,130,222,101,190, 55, 9,157, 78, 55,
+177,101,203,150, 63,208, 52,253,189,193, 96,184,196, 93,125, 14,111, 10, 75,150, 44,121, 90,252, 92,238,211,167, 15, 15, 0,194,
+194,194,232,119,176,168, 77, 0,216, 3, 40, 78,182,110, 15, 64,135,151,145,253,211, 0,220,252,199, 8,172,255, 42,194, 78,255,
+249,128, 45, 43,156,170,250, 94, 17, 30, 37,231,159,231, 70,151, 28, 56,112,120, 13,225,255, 2, 64, 47,174, 38, 56,252,165,207,
+191,119, 83, 88, 21,195,158, 16,114,152,101,217, 16, 0, 40,254, 92,250,183,119, 13, 20,215,164, 56,112,224,192,129, 3, 7, 14,
+ 28,222, 44, 8, 0,255, 10, 70, 76, 38,251, 8, 17, 66,252,107, 48, 34,187,199,113,114,156, 28, 39,199,201,113,114,156, 28,231,
+127,139,179, 42,238, 10,254,223,163, 10, 11,214,145,119, 78, 96,253,149,129,233,254,238, 37,193, 28, 39,199,201,113,114,156, 28,
+ 39,199,201,113,254, 51, 57,171,192, 63, 78, 96,113, 62, 88, 28, 56,112,224,192,129, 3,135,119, 29,234,233,211,167,127, 77, 8,
+ 57, 12, 0,211,167, 79,255,250, 93, 47, 48, 39,176, 56,112,224,192,161, 20,148, 74,101, 79, 0,115,241,210,133, 34, 84,165, 82,
+237,229,106,133,195,191, 9,246,246,246,114, 91, 91,219, 63, 40,138,114, 3, 94, 13,185, 84, 94,254, 95,134, 97,146, 50, 51, 51,
+ 59, 39, 39, 39,167,255,157,156,101,112, 37, 52, 52,180, 48, 52, 52,180,216,161, 61, 13, 47,103,225, 66,240,231,202,194,127,182,
+192,154,222,185,118,107,165,179,243,206,236,140,140, 72,109, 97,222,167, 11,255, 72,204,172,201,129, 9, 33,182, 34,145,168,159,
+ 92, 46,239,196,178,172, 7,143,199,123,152,147,147,115,218, 96, 48,236,102, 89, 54,159,187, 5, 56,188,109, 52,110,220,184,129,
+ 72, 36,154, 74, 8,105,110, 52, 26, 93, 4, 2,129, 10,192,117,173, 86,187, 52, 50, 50, 50,146,171,161,127, 7, 8, 33,148, 66,
+161,248,193,202,202,170, 89,118,118,246, 32, 0, 95, 71, 71, 71, 55,164, 40, 10,126,126,126, 95, 43,149,202, 39,230,230,230,155,
+242,242,242,174, 36, 37, 37, 77,172, 78,238, 56, 14,239, 46, 60, 61, 61,195, 41,138,114, 41,157,174,173,172, 32, 40,251,206,178,
+236,211,168,168,168,150, 21,113,186,184,184,120, 88, 88, 88,172, 5,208,164, 60, 81, 81, 26, 69,238, 57, 55,115,115,115,199, 38,
+ 36, 36,148, 27,136,215,198,198,198,220,193,193, 97, 46, 33,164, 15, 69, 81,188,170,206,137, 97, 24,154,101,217,176,212,212,212,
+217,153,153,153,121, 21,237,103,107,107,123,250,194,133, 11, 77,236,236,236,170, 12, 75, 99, 52, 26,145,144,144, 96, 31, 18, 18,
+114, 1,128,207,223,201, 89, 6, 58, 0, 55,254, 73,109,172,218, 2,139,208, 24,252,233,136, 33,206,217,241,209,206,219,118, 31,
+175,247, 77, 23,183,118,223,157,120,158, 92, 29, 14,169, 84,218,207,223,223,127,213,170, 85,171,108,107,215,174, 77,164, 82, 41,
+146,146,146,124,110,223,190,253,225,156, 57,115,102, 11, 4,130, 97, 6,131,225,212,107,118,154, 86, 54,102,252,169, 25,121,134,
+ 25, 92, 87,194,161, 58,232,211,167, 15, 47, 62, 62,126,142,157,157,221, 87,211,166, 77, 19,215,169, 83, 7,102,102,102, 72, 77,
+ 77,117,141,137,137,169,181,118,237,218,158, 45, 91,182,252, 81, 40, 20,126,115,238,220, 57, 35, 87, 99,255,108, 40, 20,138, 31,
+ 46, 92,184, 48, 78,169, 84,162, 85,171, 86, 87, 26, 55,110,108, 33,147,201,112,236,216, 49,120,120,120,212,183,180,180,188,190,
+126,253,122,193,220,185,115, 27,237,223,191, 31, 0,198,115,181,246,207, 7, 69, 81, 46,145,145,145, 14, 50,153, 12, 52, 77, 23,
+101, 3, 96,192,178,108,201,123,105, 49, 68,211, 52,218,183,111,175,175,140, 83, 34,145,172,185,123,247,110,167,226, 12, 39,165,
+132, 84,185, 80,169, 84,157,218,183,111,191, 6, 64,185, 1,181, 29, 28, 28,230,246,237,219,119, 82,253,250,245, 75, 82,205, 49,
+ 12, 83,242,158,158,158,142,207, 63,255,188,228, 24, 12,195,224,194,133, 11, 19,190,248,226, 11, 0,248,162,146,115,119,179,179,
+179, 35, 85,165,192,155, 51,103, 14,230,204,153,131, 85,171, 86, 17, 62,159,111, 85, 69,125,190,113,206,127, 58,170, 47,176,192,
+ 30, 61,186,111,239,167, 33,109,189,201,208, 94, 1, 94,191, 28, 10,191, 58,189, 83,157, 54,139, 78, 63,141, 55, 81, 92, 77, 24,
+ 61,122,244,162,121,243,230, 73, 30, 61,122,132,168,168, 40, 24,141, 70,152,153,153,161, 65,131, 6,212,209,163, 71, 21, 19, 38,
+ 76,216, 39, 18,137,134,235,116,186,253, 53, 61, 49, 39,107,222, 82,185,148, 55, 80,196,231, 95,215, 25,141,135,222,197,202,111,
+214,172,217, 73,131,193,176, 56, 50, 50,242,236, 63,165,193, 4, 6, 6,182, 18, 10,133,179, 69, 34, 81,215,127,171,184,120,254,
+252,249,236,214,173, 91,127, 53,103,206, 28,241,179,103,207, 16, 29, 29,141,164,164, 36,212,174, 93, 27,181,107,215, 38,171, 86,
+173,146,252,248,227,143,227,111,223,190, 77, 1,152, 82, 29, 75,137,147,147,211,103, 29, 59,118,252,216,206,206,206, 50, 49, 49,
+ 49,231,242,229,203,191, 37, 37, 37,253,196,178,108,141,234,146, 16, 66,217,217,217, 13, 13, 9, 9,249,216,198,198,198, 38, 41,
+ 41, 41,243,143, 63,254,248, 45, 53, 53,117,211,235, 88, 90, 8, 33, 10, 0, 13, 1,216, 22,253,148,228,238,238,126,255,217,179,
+103,169,111,144, 83,229,238,238, 30, 85, 19, 78,123,123,123, 57,159,207,223, 75, 8, 81, 86, 98, 33, 80, 25,141,198,190, 69, 1,
+142, 43,132,133,133, 69,115,133, 66,129,235,215,175, 99,230,204,153, 54,237,219,183, 71, 76, 76, 12, 40,138,194, 87, 95,125, 69,
+252,252,252, 4,201,201,201, 8, 10, 10,194,233,211,167, 91,114,210,164, 90,215, 60, 12,128, 21,128, 1, 44,203,166,151,250,221,
+ 14,192, 65, 0,169, 44,203,126,244,182,202, 39,149, 74,177,107,215, 46, 8, 4, 2, 8,133, 66,100,101,101,193,217,217, 25, 66,
+161, 16, 2,129,160,228, 37, 20, 10, 81,171, 86,173, 42,249, 24,134,105,202,227,241,144,159,159, 15,154,166, 75,210, 44,229,228,
+228,128,101, 89,136, 68,162,146,223,139,183, 49, 12,211,180,146,250,235,163, 84, 42,177,123,247,110,232,116,186,242,218, 46,238,
+221,251,211,207,156,199,227,161, 81,163, 70, 20, 33,164, 79,101, 2,139, 16,194, 2,192,136, 17, 35, 94, 73, 79, 87,246, 85,156,
+ 59,152,101,217,146, 20, 98,127, 39,231,191, 90, 96,205,232, 88,103,108,253,128, 70, 75, 69, 34,129,148,161, 13, 96,140, 6,212,
+247,247, 2,195, 24,241,244,121, 18, 60, 28, 68, 24,222,205,211,109,251,201,152,123, 95,119,246,106,182,240,100, 76,116,153, 14,
+238, 94,153, 11,224,222,164, 73,147,185, 11, 22, 44,144,252,241,199, 31,120,244,232, 17, 22, 46, 92, 8, 0,144,203,229, 56,118,
+236, 24,104,154,198,242,229,203,205,187,118,237,186,150, 16,114,158,101,217,204,202, 56, 43,184,208,110,109,130, 92,122,237, 95,
+214, 70, 92,255,195,125, 43, 9, 33, 71, 88,150,165, 43,233,136,223,248, 74, 8, 83, 56,141, 70,227,123, 2,129,160,101, 64, 64,
+ 64, 79, 83, 68,214,219, 42,103,105,113, 37, 16, 8,142,235,245,122,153, 72, 36,226,163,130, 68,210,111,187,156,175,195,217,184,
+113,227, 6, 54, 54, 54, 95,205,158, 61, 91,124,237,218, 53,100,101,101, 33, 53, 53, 21, 19, 39, 78,196,186,117,235, 80,191,126,
+125,200,229,114,140, 31, 63, 94,242,249,231,159,143,109,210,164, 73,216,205,155, 55,195,171, 42, 39, 33,132,106,219,182,237,174,
+ 29, 59,118,212, 54, 26,141, 20, 0, 24, 12, 6,235,231,207,159, 15,153, 49, 99, 70, 91, 66,200,128,138, 68, 86,101,156, 45, 91,
+182,220,241,203, 47,191,120,138, 68, 34,170,168,179,182,255,228,147, 79, 62,253,230,155,111,218, 19, 66, 6, 86,212,238, 43,171,
+ 79, 66, 72, 99,153, 76,230, 59,118,236,216,244, 94,189,122, 37, 2, 64, 68, 68, 4,185,117,235, 86,171,185,115,231,198,205,158,
+ 61,251, 86, 13, 56, 3,101, 50,153,247,184,113,227,210,186,119,239,174, 18, 10,133,204,181,107,215,120,247,238,221, 11, 94,184,
+112, 97,236,215, 95,127,125,167, 58,156, 2,129, 96,207,254,253,251,219, 58, 59, 59,211, 0,216,226, 14,158, 16,194, 82, 20,197,
+ 82, 20,133,216,216, 88,247,222,189,123,239, 4,240,126,101,156,217,217,217, 67,130,131,131, 47,204,156, 57,211, 6, 0, 46, 92,
+184, 0, 62,159, 95,242, 64,120,244,232, 17,180, 90, 45, 86,173, 90,165,207,203,203,251,236,223,214,230,255, 98,206, 90, 0,154,
+ 2, 56, 67, 8,233,192,178,108,122,145,184, 58, 11,192, 15,192,229,183, 85, 78,138,162, 64,211,116,137,136, 58,117,234, 20,214,
+173, 91,135,221,187,119,195,217,217,249, 21,129, 37, 16, 8,202,245, 35, 42,231, 25, 87,220,183,131,166,105,220,184,113, 3,155,
+ 54,109,130,131,131, 3,236,108,109, 97,103,111,143,102,205,154,161,216,106, 70,211,244,255,241,150,229, 76, 79, 79, 7,195, 48,
+166,158, 35,114,115,115, 77,174,207,202,132, 80,233, 87,117,174,209,235,112,254,167, 4,150,194,201,238,155,222, 31,191, 39, 5,
+109, 4,244, 5,128,190, 16,172,190, 16,172,174, 0, 68, 36, 5,107,208, 64,206,203,192,168,142,142, 22,251,174,166, 60,152,222,
+193,173,199,162, 51,207,143, 87, 50, 82,156,181, 97,195, 6,203,187,119,239, 34, 58, 58, 26, 43, 86,172,192,188,121,243, 74, 70,
+ 14,239,191,255, 62,174, 92,185, 2,157, 78,135,153, 51,103,218, 76,155, 54,109, 28, 94, 58,155, 86,207,122,101,203, 95,183,119,
+251, 42, 27, 27,105, 58,134,247,186,105,187,102,111,220, 88, 0, 63,190,139, 23, 96,218,180,105,178, 37, 75,150,252,110,170,200,
+122,155,150, 43,177, 88,124,124,214,172, 89,242, 89,179,102,209,111,136,179, 62,159,207,223, 99, 48, 24,190,140,140,140, 60, 81,
+131,209,177,107,147, 38, 77, 22, 70, 71, 71, 31,207,205,205,253,165,236,118,145, 72,244,126, 96, 96,224,160,171, 87,175,126, 93,
+ 85, 34,242, 98,136,197,226, 9, 95,125,245,149, 36, 33, 33, 1,217,217,217, 16,139,197,175,116,110, 98,177, 24, 20, 69, 65, 36,
+ 18,225,147, 79, 62,145,108,222,188,121, 50,128,254, 85,182, 73, 39,167,207,182,111,223, 94, 91,175,215, 83, 5, 5, 5, 16, 10,
+133, 16, 10,133,104,208,160, 1,111,202,148, 41,181, 38, 77,154, 52, 26,192,234,234,156,191,181,181,245,144, 29, 59,118,120,138,
+ 68, 34, 42, 41, 41, 9,173, 90,181,194,245,235,215,209,172, 89, 51,222,148, 41, 83, 92,199,143, 31, 63, 18,192,186,234, 90,153,
+100, 50, 89,253, 11, 23, 46,196, 43,149,127, 26,135,106,215,174,205,118,235,214, 45, 51, 58, 58,218, 59, 50, 50, 50, 35, 32, 32,
+ 32,190, 26,156,206, 50,153,204,231,196,137, 19, 73,243,230,205,235,184,110,221,186, 94, 0,208,180,105,211, 67, 11, 23, 46,252,
+ 35, 35, 35,195,239,198,141, 27, 25, 77,155, 54, 77,172, 70, 81,109,157,156,156,140, 99,199,142, 53, 47,187, 97,246,236,217,152,
+ 59,119, 46,182,110,221,154, 1,192,161, 50, 18,165, 82,217,147,162,168,185,245,235,215,183,232,208,161, 3, 46, 92,184,128,241,
+227,199,107, 13, 6, 67, 12, 0,116,234,212,169,222,156, 57,115, 68,145,145,145,176,182,182, 22, 36, 37, 37,253,172, 84, 42, 57,
+199,119,211,209, 11,192, 57, 0,245,139, 68, 86, 95, 0,251, 0,248, 2,136, 6,208,251,109, 22,174, 88, 96, 37, 38, 38, 98,243,
+230,205, 88,184,112, 33,188,188,188,160,215,235,193,231,243, 75,196, 21,159,207, 7, 33,196,228, 84, 90, 52, 77,227,230,205,155,
+216,190,125, 59,102,126,243, 13,204,205, 95, 54, 83,189, 94,143,204,172, 44, 72, 36,146, 18, 17, 86,133, 96, 10,123,252,248,241,
+ 36,103,103,231,146,105,202,210, 83,132, 0, 96,102,102, 6,134, 97, 96, 52, 26,161,213,106,177,113,227, 70, 35,203,178, 97, 85,
+220,147, 37, 98,232,139, 47,190,128, 86,251,103,206,241,134, 13, 27, 2, 0,220,221,221,209,168, 81,163,146,239,197, 22, 42, 83,
+ 56, 55,181,106, 0,117,169,189,189,231, 44, 3, 0,184,184,184,192,219,219, 27, 10,133,194, 36,206,127,133,192, 42, 78,112, 91,
+ 54,209,109,114,114,234,226,173,235,127, 94, 38, 18, 80,130, 78, 45,189, 97, 45, 54,130,200,108, 32,108, 59, 29,196,202,237,101,
+ 3,200,140,133,238,196,116,244,109,148, 78,109,215,242, 14,206,237,230,105, 63,251,216,147,114,157,235, 40,138,106,238,234,234,
+138, 11, 23, 46,160,118,237,218,152, 53,107, 22,124,124,124, 32,147,201,144,146,146,130,130,130, 2,200,229,114,208, 52,141,128,
+128, 0,158,185,185,121,251,234, 10, 44, 66, 72,192,103,125,155, 53,229, 91,248,160, 85,215, 22, 56,185,182,173,124,235, 97,213,
+ 12, 66,200,207,165,147,163,190, 43,248,224,131, 15,144,146,146, 34,219,177, 99, 71,141, 69, 86,179,102,205, 78, 26,141,198,247,
+ 76, 48,135,159,189,120,241, 98,135,154,138,171,205,155, 55,203,173,172,172, 80,149,243,102, 53,196,213,165, 33, 67,134, 88,236,
+216,177,227, 64, 64, 64,192,135,213, 17, 89,132, 16,215,190,125,251, 30,217,180,105,147, 79,143, 30, 61,204, 0,252,159,192,170,
+ 95,191,254, 7, 39, 79,158,252,112,204,152, 49,245, 9, 33, 61,139,146, 74, 87,197,219,178, 78,157, 58,120,241,226, 5, 82, 82,
+ 82,160,213,106,145,146,146, 2, 0, 72, 72, 72,128,139,139, 11,172,173,173,225,226,226,130,122,245,234, 17,138,162,154,153, 82,
+222,246,237,219,247, 2, 64,197,198,198, 34, 45, 45, 13,150,150,150,144,203,229,112,118,118, 70,135, 14, 29,248,158,158,158,221,
+171, 43,176,186,117,235,246,177, 76, 38,163,158, 63,127,142,184,184, 56,104,181, 90,196,196,196,192,210,210, 18,157, 58,117, 18,
+120,122,122,134, 84, 87, 96, 1,240, 31, 57,114,100,106,105,113, 85, 12,185, 92, 78,188,189,189, 51,173,172,172,130, 0,196, 87,
+135,115,252,248,241, 41,161,161,161,109, 78,159, 62, 61,173,248,199,211,167, 79, 79, 5,128,213,171, 87, 95,176,177,177, 9, 2,
+ 80, 29,129, 5,150,101,153, 79, 63,253,244,177, 72, 36, 66,241,171, 88,184, 46, 91,182, 12, 20, 69, 89,154, 64,243,117,116,116,
+116, 67, 51, 51, 51, 68, 71, 71,131,199,227,129, 16,242, 88,165, 82, 53, 44, 26, 0, 61,209,104, 52, 30, 26,141, 6,189,123,247,
+ 38, 61,122,244,104,176, 98,197,138,111, 0,188, 19, 2,139, 16,210, 4,192,114,188,116, 0,254,134,101,217,235,239, 82,255,198,
+178,108, 10, 33,164, 93, 41,145,117, 11,128,184, 72, 92,181, 99, 89, 54,229, 45,214, 29, 24,134, 1,159,207,199,178,101,203,160,
+215,235,241,203, 47,191, 96,223,190,125,160, 40, 10,132, 16, 16, 66, 96, 97, 97,129, 31,126,248,161,228,187, 41, 48, 26,141,216,
+178,101, 11,166, 79,155, 86, 34,174, 0, 64, 40, 20,194,201,209, 17,182,118,118,136,141,141,173, 82, 96,165,166,166,206,190,113,
+227, 6, 42,115,114,255,232,163, 63,103, 88, 75, 59,185,155, 82, 78, 30,143, 7,173, 86,139,247,222,251,243,241, 49,110,220,184,
+146,207, 89, 89, 89,197,247, 4,136,137, 39,207,227,241,160,102,129, 15, 36,127,254,214,253,203, 47, 95,177,200, 85,196, 89,145,
+ 22,249, 87, 90,176, 68,193,207, 87, 63,187, 66, 53,234, 19,210, 98,168,141,133, 20, 76,158, 10,194,142,115,112, 55, 83,134,149,
+235, 95, 62, 11, 39,245, 14,128,255,123, 11,160,253,185, 51, 58,184,235, 68, 63, 71, 74,167, 0,152, 85, 30,159,157,157,157,157,
+209,104, 4, 69, 81,144,203,229,176,177,177,129, 84, 42, 69,122,122, 58, 38, 76,152,128,227,199,143, 67,167,211, 65, 40, 20,162,
+ 78,157, 58,208,235,245, 30,213,182, 94, 89,243, 55,173, 88,182,208, 42, 35,118, 39, 34, 30,101, 67,102,233,130,111, 70, 6, 89,
+207, 89, 27, 62, 27,192,212,119,241, 34,248,249,249, 97,226,196,137,178, 31,127,252,177, 70, 34,203,104, 52,206,231,243,249,173,
+190,252,242, 75,105,239,222,255, 63, 32,140,138,138,194,232,209,163,213,133,133,133,223,213, 68, 92,137, 68,162,227,155, 54,109,
+146, 91, 90, 90,226,197,139, 23,111, 76, 92,173, 90,181,202,194,195,195, 3, 2,129, 64,178,101,203, 22,147, 69, 22, 33,164,222,
+ 71, 31,125,116,116,211,166, 77,110, 35, 71,142, 76,184,112,225, 66, 28, 33,164, 60, 33,158, 53,116,232,208,231, 91,183,110,245,
+100, 24,230, 4, 33, 36,132,101,217, 7, 85,212,165,171, 76, 38, 67,122,122, 58, 38, 77,154,244,138,131,106,241,116, 54, 0, 68,
+ 71, 71,195,197,197, 5, 26,141,198,217,148,115,182,177,177,177,102, 89, 22, 35, 70,140, 64,124,252,159,218,196,217,217, 25,241,
+241,241, 48, 26,141, 54,213,173, 71,107,107,107, 27,131,193,128,182,109,219, 66,163,209, 0, 0,250,246,237, 11,129, 64,128,212,
+212, 84,232,245,122,219, 26, 92, 30,187, 30, 61,122,168, 42,218, 40,151,203, 13,214,214,214,238,213,228,180, 13, 9, 9, 73,220,
+176, 97,195,251,101, 55,220,184,113,227,125, 75, 75,203,211, 54, 54, 54,222, 53, 40, 43, 35, 22,139, 33, 22,139, 33, 16, 8, 32,
+ 18,137, 32, 22,139, 33, 18,137, 32, 16, 8,192,227,241, 76,154, 87, 97, 24, 6, 71,142, 28, 1, 69, 81,175, 76, 93,204,154, 53,
+107,148,149,149,149,227,249,243,231, 75, 6,128,249,249,249,168, 91,183,110,157, 78,157, 58,221, 78, 78, 78,142,139,138,138,250,
+240, 45,119, 31, 75, 1, 20,251,133,173, 3,208,232, 93,235,223,138, 68, 86, 31, 0,225, 69,226, 74, 7,224,227,183, 41,174, 74,
+ 95,123, 62,159, 95,114,159, 75, 36, 18, 4, 4, 4,148,136, 41, 66, 8, 10, 11, 11, 75,166, 8, 77,125,232,231,228,228, 64,161,
+ 80,192,220,220, 28,117,189,188,240, 56, 38, 6, 0, 74, 62,139, 68,162, 18, 33, 86, 25,138, 86, 2,126,129, 74,252,169,106, 40,
+ 46, 89, 0,224,243, 43,119,195, 86, 40, 20, 96, 24,166, 88, 88,178,111,130,211,206,206, 14,249,249,249, 38,113,254, 43, 4, 86,
+121,138,113,238, 92, 66,105,175,212,222,220,167,123,211,161,190, 46,114,104,211, 99, 33, 50,179, 5,177,114,199,202,245, 39,240,
+ 32,238,165,107,212,202,125,145,216, 58,163, 11,136,204, 6, 10,245, 35,152, 75,196, 31, 86, 36,176, 50, 50, 50,242,245,122,189,
+141, 84, 42, 5,159,207,135, 80, 40, 68,122,122, 58,190,253,246, 91,236,221,187, 23,238,238,238, 48, 26,141, 16,137, 68, 72, 75,
+ 75,131, 80, 40,172,214,234, 68, 62,159,244,152, 51,177, 91,109,185,173, 23, 50, 34,231,189,252,209, 34, 0, 35,251,242, 68,223,
+111,191, 63,132, 16,242, 61,203,178,169,239,218, 69, 48, 51, 51, 67,163, 70,141, 48,112,224, 64,217, 47,191,252,178, 13,128, 75,
+117,254, 31, 17, 17,113, 57, 48, 48,176,243,242,229,203, 79, 38, 37, 37, 73, 27, 55,110, 12, 51, 51, 51,152,153,153, 33, 54, 54,
+ 22,243,230,205,211,104,181,218,144,154, 88,199,248,124,254,150, 79, 63,253, 84,110, 97, 97,129,216,216, 88,216,216,216,188,214,
+185, 6, 6, 6,214, 23, 8, 4,151, 86,173, 90,101,225,233,233,137,135, 15, 31, 34, 48, 48, 16, 78, 78, 78,146,208,208, 80, 83,
+ 69,214,154,157, 59,119,186,139, 68, 34,178,107,215, 46,215, 93,187,118, 77,168,234,184,219,183,111,119,223,181,107,215, 42, 66,
+ 72,167,202,156,191,133, 66, 97, 66, 90, 90,154,103,173, 90,181,176,121,243,102, 80, 20, 5,149, 74,133,111,190,249, 6,161,161,
+161,104,214,172, 25,204,205,205, 81,171, 86, 45, 60,126,252, 24, 18,137, 36,201,148,243, 78, 76, 76,204, 4,224,112,252,248,113,
+164,165,253, 25,178,197,205,205, 13,153,153,153,208,106,181, 25,213,173,203,196,196,196, 12, 0,142,183,111,223, 70, 92, 92, 28,
+186,118,237,138,131, 7, 15, 34, 40, 40, 8, 52, 77,195, 96, 48,100,212,224, 18,209, 60, 30,143,173,164, 19, 37, 0,172,171,201,
+105,172,140, 19, 47,227, 77, 85,151, 19, 44,203,178, 21,137, 43,145, 72,132, 42,142, 89,162,155,125,124,124,230,214,169, 83,199,
+247,155,111,190, 17,240,249,124, 4, 7, 7,215,155, 50,101,202,115,169, 84,106, 59,125,250,116, 89,121,198, 96, 0, 13,125,125,
+125,229,239, 64,247, 81,218, 74,247, 78, 46, 58, 33,132, 56, 20, 89,252, 68, 0,244, 69,239,187,139,125,178,222,182, 5, 75, 40,
+ 20, 98,206,156, 57, 24, 51,102, 12, 28, 29, 29, 49,109,218, 52,240,249,252,146, 87,177, 85,166,216,170,101, 98,219,132,163,131,
+ 67,229, 55, 90,145,147,123, 21, 3,179,191, 36, 76, 67,177, 24, 50,197, 23,170,148,181,201, 36,209,246, 58,156,255, 38,235, 85,
+137,192, 42,107,150, 43, 17, 87, 93, 3,135,250,184, 72,113, 43,242, 30,252,157, 12, 96, 5,130, 74, 90,139, 1, 68, 40,135,149,
+148,239, 82,201, 5,136,140,139,139,115,179,178,178,130, 94,175,135, 72, 36,130,191,191, 63,174, 94,189, 10,173, 86, 11,157, 78,
+ 7,177, 88, 12,161, 80,136,251,247,239, 67,175,215, 95,168,198,205,194,115,180,230,173,154,250,245, 60,115, 36,110,134,149,185,
+ 8,237,155,123, 2,114, 95,240, 10, 30, 97,249,204, 16,155, 81,223, 28, 92, 9, 19,252,101,222,134,192,122,254,252, 57,118,237,
+218, 85,168,213,106,135,212,132,163, 88,100,237,221,187,247,164,149,149,149,180, 89,179,102,136,137,137,193,119,223,125,167,209,
+106,181, 61,106,234,223,101, 52, 26,135,109,220,184,241,184,209,104,148, 23,139,139,215,181, 92, 77,152, 48,193,188,110,221,186,
+120,242,228, 9, 44, 45, 45, 97,110,110,142,218,181,107, 67,161, 80, 72, 38, 76,152, 96,138,200,250,124,224,192,129, 71,183,110,
+221,234, 54,114,228,200,132,221,187,119, 31, 2,144, 83, 94,213,126,244,209, 71,239,111,221,186,213,109,212,168, 81, 47, 0, 76,
+168,106,101, 29,195, 48, 87,158, 60,121,226,225,227,227, 67,234,213,171, 7,145, 72, 4,103,231,151, 70,170,134, 13, 27,194,199,
+199, 7, 66,161, 16, 0,240,228,201, 19,192,196,184, 44, 23, 47, 94,252, 45, 58, 58,250,179,160,160, 32,158,147,147,211, 43,171,
+147, 66, 67, 67,245,207,159, 63,175,118,154,135, 51,103,206, 28,188,119,239,222,136,224,224, 96,190,181,181, 53,196, 98, 49,252,
+253,253,161, 80, 40,240,221,119,223,233,159, 61,123, 86,147,212, 17, 47,110,223,190, 45,241,242,242,162, 43,104,171,230, 0,170,
+107,121, 72,136,136,136, 16, 54,111,222,252,208,177, 99,199,234,151,222,208,180,105,211, 67,102,102,102,150, 0,146,106, 80, 86,
+166,244,212, 96,233,169, 66,145, 72, 4, 62,159, 95,165, 5, 75,165, 82,253,238,228,228,244,212,209,209,241,114,203,150, 45, 45,
+195,195,195, 49,107,214, 44,161, 86,171,117, 61,125,250,116,201,131,184,188, 7,104, 65, 65,129,228, 29,232, 62, 38, 1, 88, 1,
+ 64, 6, 96,218, 59, 40,174, 28,241,210,161,221, 27, 47,167, 5,251, 22,137,173, 98,159,172,183, 42,178, 24,134,129, 64, 32,128,
+183,183, 55,190,248,226, 11, 44, 94,188, 24, 99,199,142, 69,221,186,117, 75,174,125,177, 15, 86,209,138, 55,147, 30,252, 66,161,
+ 16,142, 78, 78, 48, 24, 12, 37,214, 43, 0,120, 28, 19, 3, 62,159, 15,134, 97,160,213,106,171,156, 34,116,112,112,152,187,100,
+201,146, 9,221,186,117,163, 74,175,184, 99, 89,182, 36,156, 68,233,151,193, 96,192,239,191,255, 62, 33, 52, 52, 20,166, 88,189,
+120, 60, 30, 26, 54,108,248,202,180,224,234,213,127,122, 42, 4, 4, 4,160, 83,167, 78,213, 90,237,199,227,241,224, 61,103,217,
+ 43,211,130, 71,237,255,172,182, 90,159,140, 68,221,239, 86,149,203,249,159,152, 34,212, 95,117, 91,208,187, 75,163,161, 62,206,
+ 98,220,142,188,143,195,225,105,143,156, 90,242,189,237, 10,210,192,164, 61,196,164,222, 1, 88,185,239,101,156,197, 73,189, 3,
+192,164,222, 7,155, 21, 11, 88,212, 66,106, 1,163,170,196,220,185,116,254,252,249,237,214,175, 95,111,157,155,155, 11,129, 64,
+128,132,132, 4,180,111,223, 30, 15, 30,188,156,185, 17,137, 68,160, 40, 10,179,102,205, 74, 75, 75, 75, 91,111,234,137,200,165,
+212,200,197,223,244,119, 20,138,205,129,204, 11,176,176,176,194,230,245,203, 0,173, 10,160, 68,232,217,169, 17,111,238,143,231,
+ 59, 16, 66,234,177, 44, 27,253, 46, 93,132, 23, 47, 94, 96,206,156, 57,133,106,181,250,181, 28,221,139, 69,214,250,245,235, 79,
+166,167,167, 75, 15, 28, 56,240, 90,226,170, 20,103,215,109,219,182, 29,119,114,114,146,187,187,187,215,248, 60,133, 66,225,116,
+189, 94,111,177, 98,197, 10,122,229,202,149, 21,117,120, 98,153, 76,182, 4,192,137, 74, 70,135,209,132,144,246,124, 62,255,200,
+166, 77,155,124,146,146,146,220,207,159, 63,223,179, 28, 65,183,117,235,214,173,110, 99,198,140,121,178,107,215, 46,147,124,176,
+180, 90,237,234,117,235,214,245, 89,179,102,141,212,204,204, 12,132, 16,216,219,219,151, 8,225,226, 7,185, 94,175,199,218,181,
+107,213,106,181,122,165, 41,231,158,145,145,177,121,202,148, 41,237,103,204,152,225,214,172, 89, 51,129,173,173, 45, 84, 42, 21,
+118,237,218,165,255,233,167,159, 18,179,179,179,127,170,110,125,230,230,230,110,153, 58,117,106,199,111,190,249,198,173, 83,167,
+ 78,130,172,172, 44,104,181, 90,124,247,221,119,250,159,126,250, 41, 49, 47, 47,175,218,156, 45, 90,180,120,146,152,152,216, 74,
+171,213,102,137,197,226, 87, 58, 56,129, 64, 64, 36, 18, 73, 83, 0,219,171,195, 25, 20, 20,244, 36, 46, 46,174,197,130, 5, 11,
+206, 27, 12, 6,193,141, 27, 55,122, 21,139,171,181,107,215,158,149, 72, 36,157, 0, 84,187,172, 20, 69, 49,101, 69, 85,105,177,
+ 37, 16, 8, 76,154, 34,244,241,241,217,185,125,251,118,203, 7, 15, 30, 32, 55, 55, 23,105,105,105,208,104, 52, 37, 83,185, 21,
+197, 49, 42, 44, 44,148,190,237,190,131,101,217,115,120, 25,250,226, 93,197,190, 82,226,170, 93, 57, 62, 89,191,225,207, 41,206,
+191,221,130,197,178,108,201, 96,167,127,255,254,232,216,177, 35,220,220,220, 74, 68, 85,233, 85,132,213, 17, 25, 52, 77,195,223,
+223, 31,218, 34,151,151,226, 54,196,231,243, 97,111,111,143,199, 79,158,152,228,228, 78, 8,233,211,173, 91, 55, 42, 42, 42, 10,
+253,250,245,195,142, 29, 59, 42,220,119,240,224,193,216,189,123, 55,186,116,233, 66, 45, 90,180,168, 79, 21, 2,171, 90,214, 38,
+ 19,173,119,127, 5,231, 63, 95, 96, 21, 43,197,226,119, 71,107,249, 48, 95, 5, 31,183,111, 63,192,161,136,204,173,132, 80,251,
+ 35,159,105, 15,119,169,147, 7,253,222, 1,240,239,179, 3, 91,103,116,121,249, 64, 76,189, 15,125,216, 96, 16,153, 29, 30,231,
+202,161,214,101, 31,169,164, 51,184, 97,109,109,189,103,251,246,237,159, 14, 29, 58, 84,196, 48, 12,164, 82, 41, 38, 79,158, 92,
+ 18, 35,132,199,227, 97,236,216,177,249,169,169,169, 43, 76, 93,249, 69, 8,145, 58,219,139,102, 14, 26, 49, 75,130,248, 13, 0,
+ 37, 68, 58, 26,163, 97,155, 79,145, 26,119, 21, 40,120, 0, 16, 33,214, 47,250,204,238,253, 97,223,255, 4,160,245,187,114, 1,
+ 30, 62,124,136,217,179,103,191,182,184, 42, 43,178, 14, 29, 58,180, 77,171,213,142,120,131,156, 93, 23, 47, 94,124,220,193,193,
+161,198,211, 34,206,206,206,159,164,167,167,127,106,138,225,204,132, 7,203, 11, 66, 72,143,184,184,184,133,209,209,209,229,174,
+ 92,189,127,255,254,193,206,157, 59,203,170,179,138, 48, 50, 50, 50,178,121,243,230,235, 86,172, 88, 49,118,226,196,137, 18,169,
+ 84, 10, 11, 11, 11, 68, 71, 71,195,213,213, 21, 0,160, 86,171, 49, 99,198, 12,181,193, 96,216,122,243,230,205,171, 38, 62, 8,
+ 25, 66,200,160,209,163, 71,127, 86,175, 94,189,247, 25,134,177,213,233,116, 25,207,159, 63, 63,146,151,151, 87,163, 56, 88, 69,
+156, 3,199,140, 25, 51,212,203,203,235, 99,189, 94,111,107, 52, 26, 51,226,227,227, 15,229,230,230,110,174, 9,231,149, 43, 87,
+210, 54,109,218, 20,155,156,156,236,167, 80, 40,114, 44, 45, 45,117, 58,157,142,103,102,102,102, 46, 18,137, 2, 1, 92, 5,240,
+160, 58,156, 55,111,222, 76, 89,191,126,125,156, 86,171,173,183,113,227,198, 11,114,185,252, 15, 66, 8, 17, 10,133,214,114,185,
+188, 61,128,243, 0, 30, 87,183,172, 20, 69, 49,197,211,130,101,173, 88, 66,161, 16,132, 16,147, 4,214,147, 39, 79, 46,207,159,
+ 63,191, 65,157, 58,117,176,126,253,250, 76, 51, 51, 51,243,143, 63,254,152,159,147,147, 67, 42,179, 96,169,213,106, 9, 56, 84,
+ 57,182, 40,178,242,246, 42,246,185, 42, 37,178,246, 1,200,126,203, 2,245, 21, 33,229,234,234,250,138,168, 42,189,173, 58, 2,
+203,104, 52, 66, 40, 20,130,207,231,195, 73,161, 40, 17,115, 44,203, 34,230,241, 99,100,101,101,149,132,105,168,162,141,243, 8,
+ 33,232,215,175,159, 73,199,237,223,191, 63,206,159, 63,143,170,166, 19, 75,175,248,171,106,208, 92, 44,152, 40,138, 50,121, 21,
+161,139,139, 75,141, 56,203,106,145,127,165, 5, 75,149, 89,184, 96,211,129, 91, 51, 84,185,198,253,226,150,207,191,152, 51, 7,
+236,140,142,238, 39, 93,228,162,206,190, 84, 34,180, 63, 5,131, 88,188,124,216,176,249, 42, 16,185, 19,178, 4,174,248, 61, 50,
+ 57,153, 18,240,150, 84,118,192,236,236,236, 73, 63,252,240, 3,239,248,241,227,125, 22, 46, 92,104,229,237,237,141, 65,131, 6,
+ 65,167,211,225,238,221,187, 24, 61,122,116,102, 90, 90,218,134,236,236,236,197,166,158,132,157, 5,255,219,149, 95,119,182,165,
+152,124, 32, 55, 2,224, 91,194,206,198, 28,119,194, 47, 0, 57,225, 0, 37, 4, 40, 17,130, 26,251,160, 97,125, 79, 31, 66, 72,
+ 48,203,178,151,222,133, 11, 48,106,212,168, 55, 38,174, 74, 11, 34, 0,117,222,100, 57,139, 69,214,151, 95,126,121,156, 97, 24,
+ 89, 77, 56,194,194,194,104, 0,244, 27,236, 28, 95, 0, 24, 88,209,118,157, 78,119, 8, 64,181,131,204, 26, 12,134, 25, 81, 81,
+ 81, 24, 55,110,220,152,193,131, 7, 75,189,189,189,225,230,230,134,152,152, 24, 68, 71, 71, 99,221,186,117, 26,134, 97, 54,103,
+103,103,127, 85,205,242,210, 0, 54, 20,189,222, 84, 29, 48, 0,126, 46,122,189, 17,124,246,217,103,247, 30, 63,126,156,233,236,
+236,220,140,199,227, 53,192,203, 64,145, 73, 69,199,120, 92, 19,206,209,163, 71,223,142,141,141, 77,119,114,114,106, 38, 20, 10,
+ 61,139, 56, 19, 1,108,174, 33,103,198,157, 59,119, 60,155, 54,109,202,240,120, 60, 86, 32, 16,176, 69, 15, 67,150,207,231,179,
+132, 16,246,196,137, 19, 18, 0, 85,250, 92, 38, 36, 36, 76,216,186,117, 43,107,102,102,214, 44, 63, 63,127, 16,128,109,106,181,
+186,105,118,118,118,165, 22, 44,141, 70, 35,230,244, 83,149,237,243,131, 10,126, 79, 1, 16,252, 46,148,113,254,252,249,216,176,
+ 97, 3,170,138, 64,126,232,208, 33,160,138, 41,194,226,182, 82,236, 95,165,211,233, 16, 21, 21, 5, 66, 72,201,247,210, 65, 70,
+105,154,174, 52,210, 59,195, 48,180, 78,167,195,158, 61,123, 76, 18, 89,187,118,237,130, 70,163, 1,195, 48, 38,245,179, 69,129,
+ 73,145,149,149, 85, 18, 58, 33, 32, 32,160,100,187, 94,175,175,118,125,242,120, 60,120,123,123, 35, 61, 61, 29,118,118,118, 0,
+ 94, 78, 11,150,136,207,130,130,255, 76,251, 39,149, 93,220,210,152,219,206,221, 82,195,167, 14, 52,114,102,218, 5,185,137, 97,
+103, 37, 1, 79, 32, 70,174,134, 32, 74,165,193,165, 7,185,241,180,145, 13,249,238,143,103, 38, 5,136, 35,132, 52, 87, 40, 20,
+ 95,211, 52, 93,159,162, 40, 25,203,178,249, 60, 30,239,150, 74,165,154,203,178,236,253,234,156,132,149, 57,239,177,181,156,103,
+ 41, 16,137, 88,218,200, 0,160, 0,138, 2, 8, 5,128, 87,244,254,242,187, 90,173, 23,210, 12,217,159,146,150,254,217,219,174,
+252, 54,109,218,156, 44, 40, 40,248,199, 69,114,151, 74,165,179,121, 60, 94,215,127,123,154,152, 38, 77,154, 4, 73,165,210,175,
+ 25,134,105,162,209,104,156,164, 82,105, 10, 33, 36, 60, 47, 47,111,209,173, 91,183,174,113,143,207,183,135, 55, 25,201,189, 44,
+138,147, 61,219,217,217,121,221,185,115, 71, 82,218,130, 85,186,191,172,206,170, 50, 14,239, 30,124,125,125,175,239,220,185, 51,
+200,213,213,149, 42,118,184,166, 40,170,228, 85, 60,141, 85,108,109,185,118,237,154,241,243,207, 63,191,122,251,246,237, 54, 21,
+113,214,173, 91,247,228,233,211,167,223, 43,109,161, 42, 22, 82,101, 63,211, 52,141,194,194, 66,204,158, 61,251,212,227,199,143,
+203, 77,149,227,227,227,179, 98,230,204,153, 19,186,119,239, 78, 81, 20,245,127, 62, 87,101,253,176,244,122, 61,246,239,223,207,
+108,217,178,101,213,195,135, 15, 43,156, 34,108,220,184,113,252,173, 91,183, 92,138, 67, 38,148,125,149, 93, 81, 11, 0,205,155,
+ 55, 79,186,126,253,186,242,239,228,252,207, 8,172,162, 14,133, 76,235,224,214,151,128,234, 67, 17,198, 31,132,136, 24, 22,209,
+ 4, 56, 41,146,232,214,206,254, 93,165, 46,179,191,255,155,142,200,203,113,114,156,111,131,147, 16, 66,153,146,122,134,171,207,
+127, 15,103,221,186,117, 31, 63,126,252,216,179, 18,158, 18,129,197,213,231, 63,143,211,222,222, 94,110,111,111,255, 7, 69, 81,
+110, 21, 37,119, 46, 45,174, 25,134,137, 75, 73, 73,233,152,146,146, 82, 88, 17,167,139,139,139,135, 68, 34, 89,195, 48, 76, 83,
+ 83,146, 61, 83, 20,117, 67,163,209,124, 94, 58,217,115,105,206, 55,181,138,176,108, 57,235,215,175,255,228,198,141, 27, 30, 82,
+169,180,100,234,178,116,187, 46,139,103,207,158,225,227,143, 63,126,126,251,246,109,247,191,146,243,223,134,106,229, 34,100, 95,
+214,216,158,162, 23, 7, 14,255, 25,188, 78, 94, 63, 14,255, 76,168,213,234, 44,123,123,251,124,141, 70, 35,208,106,181, 2,163,
+209,248,202, 3, 78, 42,149,166,113,181,244,207, 69,145,101,179,217,155,228, 44, 18, 74,157,223, 20,223, 95, 21, 7, 43, 43, 43,
+ 43,164, 73,147, 38, 39,248,124,190,184,172,248, 41, 79, 12,209, 52,173,201,200,200,232,250,119,115,254,167, 4, 22, 7, 14, 28,
+ 56,252, 87,144,152,152,216,140,171, 5, 14,255, 70,168, 84,170,104, 0,110,239, 58,231, 63, 29, 20, 87, 5, 28, 56,112,224,192,
+129, 3, 7, 14,156,192,226,192,129, 3, 7, 14, 28, 56,112,224, 4, 22, 7, 14, 28, 56,112,224,192,129, 3, 39,176, 56,112,224,
+192,129, 3, 7, 14, 28, 56,212, 24,255, 27, 0, 30,206, 65, 61,139,248,242,231, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
0};
diff --git a/source/blender/editors/datafiles/preview.blend.c b/source/blender/editors/datafiles/preview.blend.c
index 63731e97342..670d49d6b81 100644
--- a/source/blender/editors/datafiles/preview.blend.c
+++ b/source/blender/editors/datafiles/preview.blend.c
@@ -1,1754 +1,1791 @@
/* DataToC output of file <preview_blend> */
-int datatoc_preview_blend_size= 446288;
+int datatoc_preview_blend_size= 567892;
char datatoc_preview_blend[]= {
- 66, 76, 69, 78, 68, 69, 82, 95, 86, 50, 52, 55, 82, 69, 78, 68,
- 0, 0, 0, 32,191,255,241,160, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 20,112,114,101,118,105,101,119, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 0, 0, 0, 32,191,255,241,144, 0, 0, 0,165,
- 0, 0, 0, 1, 32, 32, 32, 53, 0, 5, 0, 0, 0,245, 0, 15, 0, 1, 1, 0, 7, 31,229,144, 7,159,144, 32, 0, 0, 0, 0,
- 0, 0, 0, 64, 0, 0, 83, 82, 0, 0, 0,120, 7, 31,229,144, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 83, 82,115, 99,114,101,101,110, 0, 45, 83, 99,114,105,112,116,105,110,103, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 29,221,112, 7, 31,232, 48, 7, 31,232,112, 7, 31,235,176, 7, 31,235,240,
- 13, 64,121,112, 7,159,144, 32, 0, 0, 3,231, 1,143, 4,174, 3,232, 3, 32, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 7, 29,221,112, 0, 0, 0,161,
- 0, 0, 0, 1, 7, 31,230, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20,
- 7, 31,230, 48, 0, 0, 0,161, 0, 0, 0, 1, 7, 31,230,112, 7, 29,221,112, 0, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 20, 7, 31,230,112, 0, 0, 0,161, 0, 0, 0, 1, 7, 31,230,176, 7, 31,230, 48, 0, 0, 0, 0,
- 3,232, 3, 32, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 7, 31,230,176, 0, 0, 0,161, 0, 0, 0, 1, 7, 31,230,240,
- 7, 31,230,112, 0, 0, 0, 0, 3,232, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 7, 31,230,240, 0, 0, 0,161,
- 0, 0, 0, 1, 7, 31,231, 48, 7, 31,230,176, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20,
- 7, 31,231, 48, 0, 0, 0,161, 0, 0, 0, 1, 7, 31,231,112, 7, 31,230,240, 0, 0, 0, 0, 3,232, 3, 6, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 20, 7, 31,231,112, 0, 0, 0,161, 0, 0, 0, 1, 7, 31,231,176, 7, 31,231, 48, 0, 0, 0, 0,
- 3, 32, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 7, 31,231,176, 0, 0, 0,161, 0, 0, 0, 1, 7, 31,231,240,
- 7, 31,231,112, 0, 0, 0, 0, 3, 32, 3, 6, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 7, 31,231,240, 0, 0, 0,161,
- 0, 0, 0, 1, 7, 31,232, 48, 7, 31,231,176, 0, 0, 0, 0, 1,236, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20,
- 7, 31,232, 48, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, 0, 7, 31,231,240, 0, 0, 0, 0, 1,236, 3, 6, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,232,112, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,232,176, 0, 0, 0, 0, 7, 31,230, 48,
- 7, 31,230,112, 0, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,232,176, 0, 0, 0,162, 0, 0, 0, 1,
- 7, 31,232,240, 7, 31,232,112, 7, 31,230, 48, 7, 31,230,240, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
- 7, 31,232,240, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,233, 48, 7, 31,232,176, 7, 31,230,112, 7, 31,231, 48, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,233, 48, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,233,112, 7, 31,232,240,
- 7, 31,230,240, 7, 31,231, 48, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,233,112, 0, 0, 0,162,
- 0, 0, 0, 1, 7, 31,233,176, 7, 31,233, 48, 7, 31,230,176, 7, 31,231,112, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 24, 7, 31,233,176, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,233,240, 7, 31,233,112, 7, 31,231, 48, 7, 31,231,176,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,233,240, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,234, 48,
- 7, 31,233,176, 7, 31,231,112, 7, 31,231,176, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,234, 48,
- 0, 0, 0,162, 0, 0, 0, 1, 7, 31,234,112, 7, 31,233,240, 7, 31,230,176, 7, 31,231, 48, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,234,112, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,234,176, 7, 31,234, 48, 7, 29,221,112,
- 7, 31,230,240, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,234,176, 0, 0, 0,162, 0, 0, 0, 1,
- 7, 31,234,240, 7, 31,234,112, 7, 29,221,112, 7, 31,231,240, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
- 7, 31,234,240, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,235, 48, 7, 31,234,176, 7, 31,231,112, 7, 31,231,240, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,235, 48, 0, 0, 0,162, 0, 0, 0, 1, 7, 31,235,112, 7, 31,234,240,
- 7, 31,230,240, 7, 31,232, 48, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 7, 31,235,112, 0, 0, 0,162,
- 0, 0, 0, 1, 7, 31,235,176, 7, 31,235, 48, 7, 31,231,176, 7, 31,232, 48, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 24, 7, 31,235,176, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 0, 7, 31,235,112, 7, 31,231,240, 7, 31,232, 48,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,204, 7, 31,235,240, 0, 0, 0,164, 0, 0, 0, 1, 13, 64, 24,144,
- 0, 0, 0, 0, 7, 31,230,240, 7, 31,230, 48, 7, 31,230,112, 7, 31,231, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,232,
- 0, 0, 3, 7, 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 3,232, 0, 0, 3, 7, 0, 0, 3, 33, 0, 0, 0, 0, 0, 0, 3,232,
- 0, 0, 3, 32, 0, 0, 3, 32, 0, 5, 0, 4, 0, 1, 7, 7, 3,233, 0, 1, 1, 0, 1, 0, 2,189, 0, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 22,196, 96, 7, 22,196, 96,
- 7, 31,236,240, 13, 64, 23,128, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,236,240, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,238, 0,
- 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66, 76, 69, 78, 68, 69, 82, 95, 86, 50, 52, 57, 82, 69, 78, 68, 0, 0, 0, 32,
+191,255,241, 96, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 20,112,114,101,118,105,101,119, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 0, 0, 0, 32,191,255,241, 80, 0, 0, 0,170, 0, 0, 0, 1,
+ 32, 32, 32, 48, 0, 0, 0, 0, 0,245, 0, 15, 0, 1, 1, 0, 8,192,222, 48, 3,160,158, 32, 0, 0, 0, 0, 0, 0, 0, 64,
+ 0, 0, 83, 82, 0, 0, 0,120, 8,192,222, 48, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 83, 82,115, 99,114,101,101,110, 0, 45, 83, 99,114,105,112,116,105,110,103, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 78, 9, 80, 8,192,224,144, 8,192,224,208, 8,192,228, 16, 8,192,228, 80, 8,193,115,224,
+ 3,160,158, 32, 0, 0, 3,231, 1,143, 4,174, 3,232, 3, 32, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 2, 78, 9, 80, 0, 0, 0,166, 0, 0, 0, 1,
+ 2, 76,195, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 2, 76,195, 64,
+ 0, 0, 0,166, 0, 0, 0, 1, 8,192,222,208, 2, 78, 9, 80, 0, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 20, 8,192,222,208, 0, 0, 0,166, 0, 0, 0, 1, 8,192,223, 16, 2, 76,195, 64, 0, 0, 0, 0, 3,232, 3, 32,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,192,223, 16, 0, 0, 0,166, 0, 0, 0, 1, 8,192,223, 80, 8,192,222,208,
+ 0, 0, 0, 0, 3,232, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,192,223, 80, 0, 0, 0,166, 0, 0, 0, 1,
+ 8,192,223,144, 8,192,223, 16, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,192,223,144,
+ 0, 0, 0,166, 0, 0, 0, 1, 8,192,223,208, 8,192,223, 80, 0, 0, 0, 0, 3,232, 3, 6, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 20, 8,192,223,208, 0, 0, 0,166, 0, 0, 0, 1, 8,192,224, 16, 8,192,223,144, 0, 0, 0, 0, 3, 32, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,192,224, 16, 0, 0, 0,166, 0, 0, 0, 1, 8,192,224, 80, 8,192,223,208,
+ 0, 0, 0, 0, 3, 32, 3, 6, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,192,224, 80, 0, 0, 0,166, 0, 0, 0, 1,
+ 8,192,224,144, 8,192,224, 16, 0, 0, 0, 0, 1,236, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,192,224,144,
+ 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 8,192,224, 80, 0, 0, 0, 0, 1,236, 3, 6, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 8,192,224,208, 0, 0, 0,167, 0, 0, 0, 1, 8,192,225, 16, 0, 0, 0, 0, 2, 76,195, 64, 8,192,222,208,
+ 0, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,225, 16, 0, 0, 0,167, 0, 0, 0, 1, 8,192,225, 80,
+ 8,192,224,208, 2, 76,195, 64, 8,192,223, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,225, 80,
+ 0, 0, 0,167, 0, 0, 0, 1, 8,192,225,144, 8,192,225, 16, 8,192,222,208, 8,192,223,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 8,192,225,144, 0, 0, 0,167, 0, 0, 0, 1, 8,192,225,208, 8,192,225, 80, 8,192,223, 80,
+ 8,192,223,144, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,225,208, 0, 0, 0,167, 0, 0, 0, 1,
+ 8,192,226, 16, 8,192,225,144, 8,192,223, 16, 8,192,223,208, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
+ 8,192,226, 16, 0, 0, 0,167, 0, 0, 0, 1, 8,192,226, 80, 8,192,225,208, 8,192,223,144, 8,192,224, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,226, 80, 0, 0, 0,167, 0, 0, 0, 1, 8,192,226,144, 8,192,226, 16,
+ 8,192,223,208, 8,192,224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,226,144, 0, 0, 0,167,
+ 0, 0, 0, 1, 8,192,226,208, 8,192,226, 80, 8,192,223, 16, 8,192,223,144, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 8,192,226,208, 0, 0, 0,167, 0, 0, 0, 1, 8,192,227, 16, 8,192,226,144, 2, 78, 9, 80, 8,192,223, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,227, 16, 0, 0, 0,167, 0, 0, 0, 1, 8,192,227, 80,
+ 8,192,226,208, 2, 78, 9, 80, 8,192,224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,227, 80,
+ 0, 0, 0,167, 0, 0, 0, 1, 8,192,227,144, 8,192,227, 16, 8,192,223,208, 8,192,224, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 8,192,227,144, 0, 0, 0,167, 0, 0, 0, 1, 8,192,227,208, 8,192,227, 80, 8,192,223, 80,
+ 8,192,224,144, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,192,227,208, 0, 0, 0,167, 0, 0, 0, 1,
+ 8,192,228, 16, 8,192,227,144, 8,192,224, 16, 8,192,224,144, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
+ 8,192,228, 16, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 0, 8,192,227,208, 8,192,224, 80, 8,192,224,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,204, 8,192,228, 80, 0, 0, 0,169, 0, 0, 0, 1, 8,193, 16,224, 0, 0, 0, 0,
+ 8,192,223, 80, 2, 76,195, 64, 8,192,222,208, 8,192,223,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,232, 0, 0, 3, 7,
+ 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 3,232, 0, 0, 3, 7, 0, 0, 3, 33, 0, 0, 0, 0, 0, 0, 3,232, 0, 0, 3, 32,
+ 0, 0, 3, 32, 0, 5, 0, 4, 0, 1, 7, 7, 3,233, 0, 1, 1, 0, 1, 0, 2,189, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192, 8,144, 8,192, 8,144, 8,192,229, 80,
+ 8,193, 15,208, 68, 65, 84, 65, 0, 0, 0,228, 8,192,229, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,192,230, 96, 0, 0, 0, 0,
+ 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 7, 31,238, 0, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,239, 16, 7, 31,236,240, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,230, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,192,231,112, 8,192,229, 80, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 7, 31,239, 16, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,240, 32, 7, 31,238, 0, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,231,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,192,232,128, 8,192,230, 96, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,240, 32, 0, 0, 0,163,
- 0, 0, 0, 1, 7, 31,241, 48, 7, 31,239, 16, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,232,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,192,233,144, 8,192,231,112, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,241, 48, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,242, 64,
- 7, 31,240, 32, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,233,144, 0, 0, 0,168, 0, 0, 0, 1, 8,192,234,160, 8,192,232,128,
+ 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 7, 31,242, 64, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,243, 80, 7, 31,241, 48, 76, 97,109,112,
+ 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,234,160, 0, 0, 0,168, 0, 0, 0, 1, 8,192,235,176, 8,192,233,144, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 7, 31,243, 80, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,244, 96, 7, 31,242, 64, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,
-112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,244, 96, 0, 0, 0,163,
- 0, 0, 0, 1, 7, 31,245,112, 7, 31,243, 80, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,235,176,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,192,236,192, 8,192,234,160, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,112,111,116, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,245,112, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,246,128,
- 7, 31,244, 96, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,236,192, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,192,237,208, 8,192,235,176, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 31,244, 96,
- 68, 65, 84, 65, 0, 0, 0,228, 7, 31,246,128, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,247,144, 7, 31,245,112, 80,114,101,118,
-105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,237,208, 0, 0, 0,168, 0, 0, 0, 1, 8,192,238,224, 8,192,236,192,
+ 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 7, 31,247,144, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,248,160, 7, 31,246,128, 76,105,110,107,115, 32, 97,110,100, 32, 80,105,
-112,101,108,105,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,236,192, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,238,224, 0, 0, 0,168, 0, 0, 0, 1, 8,192,239,240, 8,192,237,208, 80,114,101,118,105,101,119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,248,160, 0, 0, 0,163,
- 0, 0, 0, 1, 7, 31,249,176, 7, 31,247,144, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,239,240,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,192,241, 0, 8,192,238,224, 76,105,110,107,115, 32, 97,110,100, 32, 80,105,112,101,108,105,
+110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,249,176, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,250,192,
- 7, 31,248,160, 82, 97,109,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,241, 0, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,192,242, 16, 8,192,239,240, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 31,248,160,
- 68, 65, 84, 65, 0, 0, 0,228, 7, 31,250,192, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,251,208, 7, 31,249,176, 83,104, 97,100,
-101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,242, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,192,243, 32, 8,192,241, 0,
+ 82, 97,109,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 31,251,208, 68, 65, 84, 65, 0, 0, 0,228,
- 7, 31,251,208, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,252,224, 7, 31,250,192, 77,105,114,114,111,114, 32, 84,114, 97,110,115,
-112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
+ 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,252,224, 0, 0, 0,163,
- 0, 0, 0, 1, 7, 31,253,240, 7, 31,251,208, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,241, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,243, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,192,244, 48, 8,192,242, 16, 83,104, 97,100,101,114,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 7, 31,253,240, 0, 0, 0,163, 0, 0, 0, 1, 7, 31,255, 0,
- 7, 31,252,224, 77, 97,112, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,244, 48, 68, 65, 84, 65, 0, 0, 0,228, 8,192,244, 48,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,192,245, 64, 8,192,243, 32, 77,105,114,114,111,114, 32, 84,114, 97,110,115,112, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5, 24, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 31,252,224,
- 68, 65, 84, 65, 0, 0, 0,228, 7, 31,255, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 0, 32, 7, 31,253,240, 77, 97,112, 32,
- 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,245, 64, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,192,246, 80, 8,192,244, 48, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 31,252,224, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 0, 32, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 1, 48, 7, 31,255, 0, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,
-101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,246, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,192,247, 96, 8,192,245, 64,
+ 77, 97,112, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 1, 48, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 2, 64, 13, 64, 0, 32, 77,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 24, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,245, 64, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,247, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,192,248,112, 8,192,246, 80, 77, 97,112, 32, 84,111, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 2, 64, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 3, 80,
- 13, 64, 1, 48, 77,111,100,105,102,105,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,245, 64, 68, 65, 84, 65, 0, 0, 0,228, 8,192,248,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,192,249,128, 8,192,247, 96, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,
+108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 3, 80, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 4, 96, 13, 64, 2, 64, 83,104, 97,112,
-101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 2, 64, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 4, 96, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 5,112, 13, 64, 3, 80, 77,101,115,104, 32, 84,111,111,108,115, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,249,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,192,250,144, 8,192,248,112, 77,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 5,112, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 6,128, 13, 64, 4, 96, 77,101,115,104, 32, 84,111,111,108,115, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,250,144, 0, 0, 0,168, 0, 0, 0, 1, 8,192,251,160, 8,192,249,128,
+ 77,111,100,105,102,105,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 6,128, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 7,144,
- 13, 64, 5,112, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,251,160, 0, 0, 0,168, 0, 0, 0, 1, 8,192,252,176, 8,192,250,144, 83,104, 97,112,101,115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 7,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 8,160, 13, 64, 6,128, 87,111,114,108,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,250,144, 68, 65, 84, 65, 0, 0, 0,228, 8,192,252,176,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,192,253,192, 8,192,251,160, 77,101,115,104, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 8,160, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 9,176, 13, 64, 7,144, 77,105,115,116, 32, 47, 32, 83,116, 97,114,115,
- 32, 47, 32, 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,253,192, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,192,254,208, 8,192,252,176, 77,101,115,104, 32, 84,111,111,108,115, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 9,176, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 10,192, 13, 64, 8,160, 65,109, 98, 32, 79, 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,192,254,208, 0, 0, 0,168, 0, 0, 0, 1, 8,192,255,224, 8,192,253,192,
+ 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64, 8,160, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 10,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 11,208,
- 13, 64, 9,176, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,192,255,224, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 0,240, 8,192,254,208, 87,111,114,108,100, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 11,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 12,224, 13, 64, 10,192, 77, 97,112, 32,
- 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 10,192, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 12,224, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 13,240, 13, 64, 11,208, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 0,240,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 2, 0, 8,192,255,224, 77,105,115,116, 32, 47, 32, 83,116, 97,114,115, 32, 47, 32, 80,
+104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 13,240, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 15, 0, 13, 64, 12,224, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 2, 0, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 3, 16, 8,193, 0,240, 65,109, 98, 32, 79, 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 15, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 16, 16,
- 13, 64, 13,240, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193, 0,240, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 3, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 4, 32, 8,193, 2, 0,
+ 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 13,240,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 16, 16, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 17, 32, 13, 64, 15, 0, 79, 98,106,101,
- 99,116, 32, 97,110,100, 32, 76,105,110,107,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101,
- 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 4, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 5, 48, 8,193, 3, 16, 77, 97,112, 32, 84,111, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 17, 32, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 18, 48, 13, 64, 16, 16, 65,110,105,109, 32,115,101,116,116,105,110,103,
-115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 3, 16, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 5, 48,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 6, 64, 8,193, 4, 32, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 18, 48, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 19, 64, 13, 64, 17, 32, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 6, 64, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 7, 80, 8,193, 5, 48, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 19, 64, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 20, 80,
- 13, 64, 18, 48, 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 7, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 8, 96, 8,193, 6, 64,
+ 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 20, 80, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 21, 96, 13, 64, 19, 64, 67,108,111,117,
-100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,
-117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 21, 96, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 22,112, 13, 64, 20, 80, 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0,
+ 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 6, 64, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 8, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 9,112, 8,193, 7, 80, 79, 98,106,101, 99,116, 32, 97,
+110,100, 32, 76,105,110,107,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 9,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 10,128, 8,193, 8, 96, 65,110,105,109, 32,115,101,116,116,105,110,103,115, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 22,112, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 23,128, 13, 64, 21, 96, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 70, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 10,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 11,144, 8,193, 9,112, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 23,128, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 0,
- 13, 64, 22,112, 82,101,110,100,101,114, 32, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 11,144, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 12,160, 8,193, 10,128,
+ 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 31,236,240,
- 68, 65, 84, 65, 0, 0, 0,204, 13, 64, 24,144, 0, 0, 0,164, 0, 0, 0, 1, 13, 64, 96, 96, 7, 31,235,240, 7, 31,231,112,
- 7, 31,231,176, 7, 31,231, 48, 7, 31,230,176, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 65, 45, 68,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,
-128, 0, 0, 0,128, 0, 0, 0,188,163,215,226,128, 0, 0, 0, 0, 0, 3, 33, 0, 0, 3,232, 0, 0, 0, 0, 0, 0, 3, 5,
- 0, 0, 3, 33, 0, 0, 3,232, 0, 0, 2,235, 0, 0, 3, 5, 0, 0, 3, 33, 0, 0, 3,232, 0, 0, 0, 0, 0, 0, 2,234,
- 0, 7, 0, 6, 0, 2, 4, 4, 0,200, 2,235, 1, 0, 1, 0, 1, 76, 0, 4, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 86, 32, 13, 64, 94,112, 7, 27,181,240, 7, 27,222,144, 13, 64, 25,144, 13, 64, 85, 16,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 25,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 26,160, 0, 0, 0, 0, 84,114, 97,110,
-115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,112,111, 0,
+ 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,167,
- 1, 62, 0,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 26,160, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 27,176, 13, 64, 25,144, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0,
+ 3,210, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 12,160, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 13,176, 8,193, 11,144, 67,108,111,117,100,115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 59,144, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 27,176, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 28,192, 13, 64, 26,160, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 13,176,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 14,192, 8,193, 12,160, 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 28,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 29,208,
- 13, 64, 27,176, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 14,192, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 15,208, 8,193, 13,176, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 29,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 30,224, 13, 64, 28,192, 70,111,114,109,
- 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2,140, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 15,208, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 8,193, 14,192,
+ 82,101,110,100,101,114, 32, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 30,224, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 31,240, 13, 64, 29,208, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,
-101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,229, 80, 68, 65, 84, 65,
+ 0, 0, 0,204, 8,193, 16,224, 0, 0, 0,169, 0, 0, 0, 1, 8,193, 90,208, 8,192,228, 80, 8,192,223,208, 8,192,224, 16,
+ 8,192,223,144, 8,192,223, 16, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 45, 68,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,128, 0, 0, 0,
+128, 0, 0, 0,188,163,215,226,128, 0, 0, 0, 0, 0, 3, 33, 0, 0, 3,232, 0, 0, 0, 0, 0, 0, 3, 5, 0, 0, 3, 33,
+ 0, 0, 3,232, 0, 0, 2,235, 0, 0, 3, 5, 0, 0, 3, 33, 0, 0, 3,232, 0, 0, 0, 0, 0, 0, 2,234, 0, 7, 0, 6,
+ 0, 2, 4, 4, 0,200, 2,235, 1, 0, 1, 0, 1,156, 0,103, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193, 80,144, 8,193, 88,224, 2, 76,232, 48, 8,192, 31,208, 8,193, 17,224, 8,193, 79,128, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 17,224, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 18,240, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,
+109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,112,111, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 1,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 31,240, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 33, 0, 13, 64, 30,224, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,167, 1, 62, 0,204,
+ 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 18,240,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 20, 0, 8,193, 17,224, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 33, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 34, 16,
- 13, 64, 31,240, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 8,193, 51,224, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 20, 0, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 21, 16, 8,193, 18,240, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 34, 16, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 35, 32, 13, 64, 33, 0, 76, 97,109,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 21, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 22, 32, 8,193, 20, 0,
+ 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 35, 32, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 36, 48, 13, 64, 34, 16, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,
-112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 22, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 23, 48, 8,193, 21, 16, 70,111,114,109, 97,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 28, 1, 62, 0,224, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 85, 16, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 36, 48, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 37, 64, 13, 64, 35, 32, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 23, 48,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 24, 64, 8,193, 22, 32, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,
+108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 37, 64, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 38, 80,
- 13, 64, 36, 48, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 24, 64, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 25, 80, 8,193, 23, 48, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 36, 48,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 38, 80, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 39, 96, 13, 64, 37, 64, 77,101,115,104,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 25, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 26, 96, 8,193, 24, 64,
+ 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 39, 96, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 40,112, 13, 64, 38, 80, 77,111,100,105,102,105,101,114,115, 0, 0, 0,
+ 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 26, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 27,112, 8,193, 25, 80, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 40,112, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 41,128, 13, 64, 39, 96, 83,104, 97,112,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 27,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 28,128, 8,193, 26, 96, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,112,111,116, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64, 39, 96, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 41,128, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 42,144,
- 13, 64, 40,112, 77,101,115,104, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 28, 1, 62, 0,224, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 77, 96, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 28,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 29,144, 8,193, 27,112, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 42,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 43,160, 13, 64, 41,128, 77,101,115,104,
- 32, 84,111,111,108,115, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 96,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 43,160, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 44,176, 13, 64, 42,144, 84,101,120,116,117,114,101, 32,102, 97, 99,101,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 29,144, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 30,160, 8,193, 28,128,
+ 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 44,176, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 44,176, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 45,192, 13, 64, 43,160, 85, 86, 32, 67, 97,108, 99,117,108, 97,116,105,111,110, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 28,128, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 30,160, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 31,176, 8,193, 29,144, 77,101,115,104, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 45,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 46,208,
- 13, 64, 44,176, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 31,176,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 32,192, 8,193, 30,160, 77,111,100,105,102,105,101,114,115, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 46,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 47,224, 13, 64, 45,192, 67,117,114,118,
-101, 32, 97,110,100, 32, 83,117,114,102, 97, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 32,192, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 33,208, 8,193, 31,176, 83,104, 97,112,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 47,224, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 48,240, 13, 64, 46,208, 67,117,114,118,101, 32, 84,111,111,108,115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 8,193, 31,176, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 33,208, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 34,224, 8,193, 32,192,
+ 77,101,115,104, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 48,240, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 50, 0, 13, 64, 47,224, 67,117,114,118,101, 32, 84,111,111,108,115, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,250, 94, 1, 62, 0,254, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 34,224, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 35,240, 8,193, 33,208, 77,101,115,104, 32, 84,111,111,
+108,115, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 50, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 51, 16,
- 13, 64, 48,240, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 96, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 35,240,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 37, 0, 8,193, 34,224, 84,101,120,116,117,114,101, 32,102, 97, 99,101, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 51, 16, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 52, 32, 13, 64, 50, 0, 76,105,110,107,
-115, 32, 97,110,100, 32, 80,105,112,101,108,105,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 37, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 37, 0, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 38, 16, 8,193, 35,240, 85, 86, 32, 67, 97,108, 99,117,108, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 52, 32, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 53, 48, 13, 64, 51, 16, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 38, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 39, 32, 8,193, 37, 0,
+ 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 53, 48, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 54, 64, 13, 64, 52, 32, 82, 97,109,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 39, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 40, 48, 8,193, 38, 16, 67,117,114,118,101, 32, 97,110,
+100, 32, 83,117,114,102, 97, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64, 52, 32, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 54, 64, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 55, 80,
- 13, 64, 53, 48, 83,104, 97,100,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 40, 48,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 41, 64, 8,193, 39, 32, 67,117,114,118,101, 32, 84,111,111,108,115, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,253, 52, 1, 62, 0,224, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 55, 80,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 55, 80, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 56, 96, 13, 64, 54, 64, 77,105,114,114,
-111,114, 32, 84,114, 97,110,115,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,
-114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,248,
- 1, 62, 1, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 56, 96, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 57,112, 13, 64, 55, 80, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 41, 64, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 42, 80, 8,193, 40, 48, 67,117,114,118,101, 32, 84,111,111,108,115, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 16, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 57,112, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 57,112, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 58,128, 13, 64, 56, 96, 77, 97,112, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 42, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 43, 96, 8,193, 41, 64,
+ 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 16, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 58,128, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 59,144,
- 13, 64, 57,112, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 43, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 44,112, 8,193, 42, 80, 76,105,110,107,115, 32, 97,110,
+100, 32, 80,105,112,101,108,105,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 44,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 45,128, 8,193, 43, 96, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,252, 16, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 57,112,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 59,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 60,160, 13, 64, 58,128, 82,101,110,100,
-101,114, 32, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 60,160, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 61,176, 13, 64, 59,144, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 45,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 46,144, 8,193, 44,112, 82, 97,109,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 61,176, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 62,192, 13, 64, 60,160, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193, 44,112, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 46,144, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 47,160, 8,193, 45,128,
+ 83,104, 97,100,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 62,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 63,208,
- 13, 64, 61,176, 77,105,115,116, 32, 47, 32, 83,116, 97,114,115, 32, 47, 32, 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0,
+ 0, 0,253, 52, 1, 62, 0,224, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 47,160, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 47,160, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 48,176, 8,193, 46,144, 77,105,114,114,111,114, 32, 84,
+114, 97,110,115,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,248, 1, 62, 1, 28,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 48,176,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 49,192, 8,193, 47,160, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 63,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 64,224, 13, 64, 62,192, 65,109, 98, 32,
- 79, 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,
-100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 62,192, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 64,224, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 65,240, 13, 64, 63,208, 84,101,120,116,117,114,101, 32, 97,110,100, 32,
- 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 16, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 49,192, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 50,208, 8,193, 48,176, 77, 97,112, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 65,240, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 67, 0, 13, 64, 64,224, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 16, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193, 48,176, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 50,208, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 51,224, 8,193, 49,192,
+ 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64, 64,224, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 67, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 68, 16,
- 13, 64, 65,240, 77,117,108,116,105,114,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,252, 16, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 48,176, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 51,224, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 52,240, 8,193, 50,208, 82,101,110,100,101,114, 32, 76,
+ 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 68, 16, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 69, 32, 13, 64, 67, 0, 79, 98,106,101,
- 99,116, 32, 97,110,100, 32, 76,105,110,107,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101,
- 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 52,240,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 54, 0, 8,193, 51,224, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 69, 32, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 70, 48, 13, 64, 68, 16, 65,110,105,109, 32,115,101,116,116,105,110,103,
-115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 54, 0, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 55, 16, 8,193, 52,240, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 70, 48, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 71, 64, 13, 64, 69, 32, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 55, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 56, 32, 8,193, 54, 0,
+ 77,105,115,116, 32, 47, 32, 83,116, 97,114,115, 32, 47, 32, 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 71, 64, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 72, 80,
- 13, 64, 70, 48, 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 56, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 57, 48, 8,193, 55, 16, 65,109, 98, 32, 79, 99, 99, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 72, 80, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 73, 96, 13, 64, 71, 64, 66, 97,107,101,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 55, 16, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 57, 48,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 58, 64, 8,193, 56, 32, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,
+116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 28,192, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 73, 96, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 74,112, 13, 64, 72, 80, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 58, 64, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 59, 80, 8,193, 57, 48, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 29,208, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 74,112, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 75,128, 13, 64, 73, 96, 80, 97,114,116,105, 99,108,101, 32, 83,121,115,116,101,109, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193, 57, 48, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 59, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 60, 96, 8,193, 58, 64,
+ 77,117,108,116,105,114,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 75,128, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 76,144,
- 13, 64, 74,112, 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 60, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 61,112, 8,193, 59, 80, 79, 98,106,101, 99,116, 32, 97,
+110,100, 32, 76,105,110,107,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 76,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 77,160, 13, 64, 75,128, 86,105,115,117,
- 97,108,105,122, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,
-105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 61,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 62,128, 8,193, 60, 96, 65,110,105,109, 32,115,101,116,116,105,110,103,115, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 77,160, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 78,176, 13, 64, 76,144, 69,120,116,114, 97,115, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 62,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 63,144, 8,193, 61,112, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 78,176, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 79,192, 13, 64, 77,160, 67,104,105,108,100,114,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 63,144, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 64,160, 8,193, 62,128,
+ 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64, 77,160, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 79,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 80,208,
- 13, 64, 78,176, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 64,160, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 65,176, 8,193, 63,144, 66, 97,107,101, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 80,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 81,224, 13, 64, 79,192, 84,101,120,116,
-117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,
-117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64, 81,224, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 82,240, 13, 64, 80,208, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 8,193, 21, 16, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 65,176,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 66,192, 8,193, 64,160, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 80,208, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 82,240, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64, 84, 0, 13, 64, 81,224, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 8,193, 22, 32, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 66,192, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 67,208, 8,193, 65,176, 80, 97,114,116,105, 99,108,101, 32, 83,121,115,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 84, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 85, 16,
- 13, 64, 82,240, 83, 83, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 67,208, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 68,224, 8,193, 66,192,
+ 80,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, 55, 80,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 85, 16, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 0, 13, 64, 84, 0, 83,107,121, 47,
- 65,116,109,111,115,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
+ 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 68,224, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 69,240, 8,193, 67,208, 86,105,115,117, 97,108,105,122,
+ 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,220,
- 13, 64, 86, 32, 0, 0, 0,142, 0, 0, 0, 1, 7,159,132, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 13, 64, 24,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,193, 0, 0, 0,
- 67,163, 0, 0,196, 48, 0, 0, 67,104, 0, 0,193, 0, 0, 0, 67,163, 0, 0,196,125,223, 92, 67,104, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 66, 40, 0, 0, 69, 0, 0, 0, 67,225, 0, 0, 63, 0, 0, 0,
- 63,154,225, 72, 0, 0, 0, 1, 0, 1, 0, 1, 0,200, 2,235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 4, 13, 64,160, 96,255,255, 0, 0, 0, 0, 0, 0, 1,150, 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 3, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 4, 7,159,132, 32, 0, 0, 0,137, 0, 0, 0, 1, 13, 64, 87, 48,
- 13, 64, 86, 32, 0, 0, 0, 1, 63, 51, 51, 51, 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,127,198, 52,188,166, 29,146, 61, 22,153, 97, 0, 0, 0, 0, 61, 43,252, 13, 62,247, 11, 89,191, 95,248, 90, 0, 0, 0, 0,
- 52, 67,176,196, 63, 96, 42,246, 62,247, 67, 44, 0, 0, 0, 0, 64, 78, 45, 74, 62,172, 87,201,194, 41,171, 79, 63,128, 0, 0,
- 63,127,198, 53, 61, 43,251,248, 52, 80, 0, 0, 0, 0, 0, 0,188,166, 29,186, 62,247, 11,119, 63, 96, 43, 16, 0, 0, 0, 0,
- 61, 22,153, 99,191, 95,248,117, 62,247, 67, 75, 0, 0, 0, 0,191,211,125,192,194, 21,161,185, 65,161,133, 59, 63,128, 0, 0,
- 63,139,224,100,190, 96,221, 21,189, 22,154,236,189, 22,153, 97, 61, 60, 27,174, 64,167, 52,239, 63, 95,250,166, 63, 95,248, 90,
- 52, 86, 9, 86, 65, 23,185, 41,190,247, 69,181,190,247, 67, 44, 64, 97,129,137, 64,105, 75, 27, 66, 41,152,145, 66, 41,171, 79,
- 63,105,225, 95, 61, 39,247, 84,186,185, 46,176,184,146,196,144,186,245,126,178, 61, 54,117, 48, 61,165,157, 23, 52,153,160, 0,
- 66,165, 56,225, 68,233,202,192,196,124, 94, 18,194, 71,254, 87,194,165, 77,102,196,233,177, 39, 68,124, 65,193, 66, 72, 0,101,
- 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 45, 68,171, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,128, 0, 0, 0,128, 0, 0, 0,188,163,215,226,128, 0, 0, 0,
- 63,127,198, 52,188,166, 29,146, 61, 22,153, 97, 0, 0, 0, 0, 61, 43,252, 13, 62,247, 11, 89,191, 95,248, 90, 0, 0, 0, 0,
- 52, 67,176,196, 63, 96, 42,246, 62,247, 67, 44, 0, 0, 0, 0, 64, 78, 45, 74, 62,172, 87,201,194, 41,171, 79, 63,128, 0, 0,
- 63, 92, 99,141,191, 2, 35, 43,188, 46,238,188,188,148, 32, 94, 66, 25,240, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 7,159,156, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0,255,226, 0, 0, 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,124, 56, 68,
- 60, 35,215, 10, 67,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 68, 77,201, 64,111, 66,228,191,205, 97,230, 60,149,191,128,
-191, 77,109,116, 63,230,165,248, 0, 20, 0, 0, 0, 7, 0, 99, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,255,255, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 69,240,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 71, 0, 8,193, 68,224, 69,120,116,114, 97,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 1, 88, 13, 64, 87, 48, 0, 0, 0,141, 0, 0, 0, 1, 13, 64, 88,176, 7,159,132, 32, 0, 0, 0, 2,
- 63, 51, 51, 51, 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 63,128, 0, 0, 67,122, 0, 0,192,160, 0, 0, 64,160, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2,235, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 16, 0, 0, 2,235, 60, 35,215, 10, 60, 35,215, 10, 70,106, 96, 0, 68,122, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,159,184, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 67,122, 0, 0,189,204,204,205, 63,140,204,205, 68, 65, 84, 65, 0, 0, 0,128, 13, 64, 88,176, 0, 0, 0,148, 0, 0, 0, 1,
- 13, 64, 89, 96, 13, 64, 87, 48, 0, 0, 0, 9, 63, 51, 51, 51, 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,194,224, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 0, 0, 5, 0, 0, 0, 17,
- 0, 0, 2,225, 0, 0, 2,227, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,207, 0, 0, 2,227, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 1, 8, 13, 64, 89, 96, 0, 0, 0,146, 0, 0, 0, 1, 13, 64, 90,144, 13, 64, 88,176, 0, 0, 0, 6,
- 63, 51, 51, 51, 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0,
- 0, 0, 0, 0, 67,128, 0, 0,190,120, 0, 0, 63,159, 0, 0,190,242, 0, 0, 63,188,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124,
- 0, 0, 0, 0, 0, 0, 1,242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 1, 8, 13, 64, 90,144, 0, 0, 0,145, 0, 0, 0, 1, 13, 64, 91,192, 13, 64, 89, 96, 0, 0, 0, 3, 63, 51, 51, 51,
- 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,209, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,190, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
- 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0,
- 0, 0, 1,124,195,190, 0, 0,195,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1,
- 0, 1, 0, 1, 1,108, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3,142, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,176,
- 13, 64, 91,192, 0, 0, 0,230, 0, 0, 0, 1, 13, 64, 92,160, 13, 64, 90,144, 0, 0, 0, 11, 63, 51, 51, 51, 13, 64, 24,144,
-192,128, 0, 0, 67,122, 0, 0,192,128, 0, 0, 67,127, 0, 0,192,128, 0, 0, 66, 72, 0, 0,192,128, 0, 0, 67,127, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 16, 0, 0, 1,124, 63,128, 0, 0, 67,129,128, 0, 70,250, 0, 0, 67,129,128, 0,
- 61,204,204,205, 65, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,180, 13, 64, 92,160, 0, 0, 0,147, 0, 0, 0, 1, 13, 64, 93,128, 13, 64, 91,192, 0, 0, 0, 13, 63, 51, 51, 51,
- 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 68,122, 0, 0, 0, 0, 0, 0, 68,122, 0, 0,192,160, 0, 0, 66,130, 0, 0, 0, 0, 0, 0, 67,182, 0, 0, 0, 0, 1,108,
- 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,196,
- 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 68,122, 0, 0, 68,122, 0, 0, 61,204,204,205,
- 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192, 13, 64, 93,128, 0, 0, 0,240, 0, 0, 0, 1, 13, 64, 94,112, 13, 64, 92,160,
- 0, 0, 0, 12, 63, 51, 51, 51, 13, 64, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0,
- 66, 2, 0, 0,196,122, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 66, 2, 0, 0,194,150, 0, 0, 64,160, 0, 0, 0, 0, 1,108,
- 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128,
- 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 70,250, 0, 0, 68,122, 0, 0, 60, 35,215, 10,
- 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,200,
- 13, 64, 94,112, 0, 0, 0,144, 0, 0, 0, 1, 0, 0, 0, 0, 13, 64, 93,128, 0, 0, 0, 5, 63, 51, 51, 51, 13, 64, 24,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 83, 97,118,101, 32, 70,105,108,
-101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,
-111,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 71, 0, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 72, 16, 8,193, 69,240, 67,104,105,108,100,114,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,114,116,105, 99,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,114,101,118,105,101,119, 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193, 69,240, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 72, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 73, 32, 8,193, 71, 0,
+ 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 82, 0, 0, 0, 0, 1, 76, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,204, 13, 64, 96, 96,
- 0, 0, 0,164, 0, 0, 0, 1, 13, 64,121,112, 13, 64, 24,144, 7, 31,231,240, 7, 31,232, 48, 7, 31,231,176, 7, 31,231,112,
- 0, 0, 0, 0, 63,238, 38, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,163,215,225,
- 0, 0, 0, 0, 0, 0, 1,237, 0, 0, 3, 31, 0, 0, 0, 0, 0, 0, 3, 5, 0, 0, 1,237, 0, 0, 3, 31, 0, 0, 0, 0,
- 0, 0, 0, 26, 0, 0, 1,237, 0, 0, 3, 31, 0, 0, 0, 27, 0, 0, 3, 5, 0, 9, 0, 8, 0, 1, 6, 6, 1, 51, 2,235,
- 1, 0, 1, 0, 0,220, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,111, 48,
- 13, 64,119,128, 7, 23, 59,224, 7, 23, 59,224, 13, 64, 97, 96, 13, 64,110, 32, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 97, 96,
- 0, 0, 0,163, 0, 0, 0, 1, 13, 64, 98,112, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,
-116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,112,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,167, 1, 62, 0,204, 0, 0, 0, 0, 0,162, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 98,112, 0, 0, 0,163, 0, 0, 0, 1,
- 13, 64, 99,128, 13, 64, 97, 96, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 73, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 74, 48, 8,193, 72, 16, 84,101,120,116,117,114,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64, 99,128, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,100,144, 13, 64, 98,112,
- 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 74, 48,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 75, 64, 8,193, 73, 32, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,228, 13, 64,100,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,101,160, 13, 64, 99,128, 65,110,105,109, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 73, 32, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 75, 64, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193, 76, 80, 8,193, 74, 48, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 0, 0, 1, 62, 0,204,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,101,160,
- 0, 0, 0,163, 0, 0, 0, 1, 13, 64,102,176, 13, 64,100,144, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 76, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 77, 96, 8,193, 75, 64,
+ 83, 83, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,192, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,102,176, 0, 0, 0,163, 0, 0, 0, 1,
- 13, 64,103,192, 13, 64,101,160, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0,
+ 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 47,160, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193, 77, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 78,112, 8,193, 76, 80, 83,107,121, 47, 65,116,109,111,
+115,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 78,112,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193, 79,128, 8,193, 77, 96, 77,101,115,104, 32, 84,111,111,108,115, 32, 77,111,114,101, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,103,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,104,208, 13, 64,102,176,
- 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251,120, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 79,128, 0, 0, 0,168, 0, 0, 0, 1,
+ 0, 0, 0, 0, 8,193, 78,112, 84,101,120,116,117,114,101, 32, 70, 97, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,228, 13, 64,104,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,105,224, 13, 64,103,192, 80,114,101,118,105,101,119, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193, 59, 80, 68, 65, 84, 65, 0, 0, 0,220, 8,193, 80,144, 0, 0, 0,147, 0, 0, 0, 1, 3,160,146, 32, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 0, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0,193, 0, 0, 0, 67,163, 0, 0,196,180, 64, 0, 67,104, 0, 0,193, 0, 0, 0, 67,163, 0, 0,
+196,133, 50,225, 67, 53,230,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 66, 40, 0, 0,
+ 69, 0, 0, 0, 67,225, 0, 0, 63, 0, 0, 0, 63,154,225, 72, 0, 0, 0, 1, 0, 1, 0, 1, 0,200, 2,235, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 3,160,158, 32,255,255, 0, 0,
+ 0, 0, 0, 0, 1,150, 0, 0, 1, 53, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 28, 3,160,146, 32,
+ 0, 0, 0,142, 0, 0, 0, 1, 8,193, 81,160, 8,193, 80,144, 0, 0, 0, 1, 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,127,198, 52,188,166, 29,146, 61, 22,153, 97, 0, 0, 0, 0, 61, 43,252, 13,
+ 62,247, 11, 89,191, 95,248, 90, 0, 0, 0, 0, 52, 67,176,196, 63, 96, 42,246, 62,247, 67, 44, 0, 0, 0, 0, 64, 78, 45, 74,
+ 62,172, 87,201,194, 41,171, 79, 63,128, 0, 0, 63,127,198, 53, 61, 43,251,248, 52, 80, 0, 0, 0, 0, 0, 0,188,166, 29,186,
+ 62,247, 11,119, 63, 96, 43, 16, 0, 0, 0, 0, 61, 22,153, 99,191, 95,248,117, 62,247, 67, 75, 0, 0, 0, 0,191,211,125,192,
+194, 21,161,185, 65,161,133, 59, 63,128, 0, 0, 63,139,224,100,190, 96,221, 21,189, 22,154,236,189, 22,153, 97, 61, 60, 27,174,
+ 64,167, 52,239, 63, 95,250,166, 63, 95,248, 90, 52, 86, 9, 86, 65, 23,185, 41,190,247, 69,181,190,247, 67, 44, 64, 97,129,137,
+ 64,105, 75, 27, 66, 41,152,145, 66, 41,171, 79, 63,105,225, 95, 61, 39,247, 84,186,185, 46,176,184,146,196,144,186,245,126,178,
+ 61, 54,117, 48, 61,165,157, 23, 52,153,160, 0, 66,165, 56,225, 68,233,202,192,196,124, 94, 18,194, 71,254, 87,194,165, 77,102,
+196,233,177, 39, 68,124, 65,193, 66, 72, 0,101, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 45, 68,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0,128, 0, 0, 0,
+128, 0, 0, 0,188,163,215,226,128, 0, 0, 0, 63,127,198, 52,188,166, 29,146, 61, 22,153, 97, 0, 0, 0, 0, 61, 43,252, 13,
+ 62,247, 11, 89,191, 95,248, 90, 0, 0, 0, 0, 52, 67,176,196, 63, 96, 42,246, 62,247, 67, 44, 0, 0, 0, 0, 64, 78, 45, 74,
+ 62,172, 87,201,194, 41,171, 79, 63,128, 0, 0, 63, 92, 99,141,191, 2, 35, 43,188, 46,238,188,188,148, 32, 94, 66, 25,240, 23,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3,160,170, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0,255,226, 0, 0, 66, 12, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 58,124, 56, 68, 60, 35,215, 10, 67,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 68, 77,201,
+ 64,111, 66,228,191,205, 97,230, 60,149,191,128,191, 77,109,116, 63,230,165,248, 0, 20, 0, 0, 0, 7, 0, 99, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0,255,255, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,105,224,
- 0, 0, 0,163, 0, 0, 0, 1, 13, 64,106,240, 13, 64,104,208, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 10,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 88, 8,193, 81,160, 0, 0, 0,146, 0, 0, 0, 1, 8,193, 83, 32, 3,160,146, 32,
+ 0, 0, 0, 2, 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 63,128, 0, 0, 67,122, 0, 0,192,160, 0, 0,
+ 64,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2,235, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 0,
+ 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 16, 0, 0, 2,235, 60, 35,215, 10, 60, 35,215, 10, 70,106, 96, 0,
+ 68,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,161, 14, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,106,240, 0, 0, 0,163, 0, 0, 0, 1,
- 13, 64,108, 0, 13, 64,105,224, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 68, 65, 84, 65, 0, 0, 0,128, 8,193, 83, 32, 0, 0, 0,153,
+ 0, 0, 0, 1, 8,193, 83,208, 8,193, 81,160, 0, 0, 0, 9, 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,195,192, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 0, 0, 5,
+ 0, 0, 0, 17, 0, 0, 2,225, 0, 0, 2,227, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,207, 0, 0, 2,227, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193, 83,208, 0, 0, 0,151, 0, 0, 0, 1, 8,193, 85, 0, 8,193, 83, 32,
+ 0, 0, 0, 6, 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 67,128, 0, 0, 0, 0, 0, 0, 67,128, 0, 0,190,120, 0, 0, 63,159, 0, 0,190,242, 0, 0, 63,188,128, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 8, 8,193, 85, 0, 0, 0, 0,150, 0, 0, 0, 1, 8,193, 86, 48, 8,193, 83,208, 0, 0, 0, 3,
+ 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,
+195,209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,190, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1,124,
+ 0, 0, 0, 0, 0, 0, 1,124,195,190, 0, 0,195,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 1, 0, 1, 0, 1, 0, 1, 1,108, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,142, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,176, 8,193, 86, 48, 0, 0, 0,235, 0, 0, 0, 1, 8,193, 87, 16, 8,193, 85, 0, 0, 0, 0, 11, 63, 51, 51, 51,
+ 8,193, 16,224,192,128, 0, 0, 67,122, 0, 0,192,128, 0, 0, 67,127, 0, 0,192,128, 0, 0, 66, 72, 0, 0,192,128, 0, 0,
+ 67,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0,
+ 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 16, 0, 0, 1,124, 63,128, 0, 0, 67,129,128, 0, 70,250, 0, 0,
+ 67,129,128, 0, 61,204,204,205, 65, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,108, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,109, 16, 13, 64,106,240,
- 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,180, 8,193, 87, 16, 0, 0, 0,152, 0, 0, 0, 1, 8,193, 87,240, 8,193, 86, 48, 0, 0, 0, 13,
+ 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 68,122, 0, 0, 0, 0, 0, 0, 68,122, 0, 0,192,160, 0, 0, 66,130, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,
+ 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 68,122, 0, 0, 68,122, 0, 0,
+ 61,204,204,205, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192, 8,193, 87,240, 0, 0, 0,245, 0, 0, 0, 1, 8,193, 88,224,
+ 8,193, 87, 16, 0, 0, 0, 12, 63, 51, 51, 51, 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 0, 0, 0, 66, 2, 0, 0,196,122, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 66, 2, 0, 0,194,150, 0, 0, 64,160, 0, 0,
+ 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 70,250, 0, 0, 68,122, 0, 0,
+ 60, 35,215, 10, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1,200, 8,193, 88,224, 0, 0, 0,149, 0, 0, 0, 1, 0, 0, 0, 0, 8,193, 87,240, 0, 0, 0, 5, 63, 51, 51, 51,
+ 8,193, 16,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 83, 97,118,101,
+ 32, 70,105,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,111,110, 47, 68,
+101,115,107,116,111,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,228, 13, 64,109, 16, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,110, 32, 13, 64,108, 0, 77, 97,112, 32, 84,111, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,112,114,101,118,105,101,119, 46, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 82, 0, 0, 0, 0, 1, 76, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,204,
+ 8,193, 90,208, 0, 0, 0,169, 0, 0, 0, 1, 8,193,115,224, 8,193, 16,224, 8,192,224, 80, 8,192,224,144, 8,192,224, 16,
+ 8,192,223,208, 0, 0, 0, 0, 63,238, 38, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+188,163,215,225, 0, 0, 0, 0, 0, 0, 1,237, 0, 0, 3, 31, 0, 0, 0, 0, 0, 0, 3, 5, 0, 0, 1,237, 0, 0, 3, 31,
+ 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 1,237, 0, 0, 3, 31, 0, 0, 0, 27, 0, 0, 3, 5, 0, 9, 0, 8, 0, 1, 6, 6,
+ 1, 51, 2,235, 1, 0, 1, 0, 0,220, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,105,160, 8,193,113,240, 8,192, 64, 80, 8,192, 64, 80, 8,193, 91,208, 8,193,104,144, 68, 65, 84, 65, 0, 0, 0,228,
+ 8,193, 91,208, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 92,224, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,
+111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,112,111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,110, 32,
- 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 0, 13, 64,109, 16, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,
-116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,167, 1, 62, 0,204, 0, 0, 0, 0,
+ 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 92,224, 0, 0, 0,168,
+ 0, 0, 0, 1, 8,193, 93,240, 8,193, 91,208, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 62, 0,204, 0, 0, 0, 0, 0,162, 0, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,111, 48, 0, 0, 0,146, 0, 0, 0, 1,
- 7,159,136, 32, 0, 0, 0, 0, 0, 0, 0, 6, 63, 51, 51, 51, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 0, 0, 0, 0, 67,128, 0, 0,189,204, 0, 0, 63,140,192, 0,191,117,128, 0,
- 63,250,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 51, 0, 0, 0, 0, 0, 0, 2,235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 4, 7,159,136, 32, 0, 0, 0,137, 0, 0, 0, 1, 13, 64,112, 96,
- 13, 64,111, 48, 0, 0, 0, 1, 63, 51, 51, 51, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 64, 75, 54, 62,191,102,119,191, 11, 73, 11, 0, 0, 0, 0,191, 40,254,108, 62,217,202, 94,191, 30,124,246, 0, 0, 0, 0,
-180,186, 33,218, 63, 82,254,184, 63, 16,248,193, 0, 0, 0, 0, 62, 8,228, 73,192, 33,158, 72,193,210,148,125, 63,128, 0, 0,
- 63, 64, 75, 68,191, 40,254,161, 54, 58,221,101, 0, 0, 0, 0, 62,191,103, 10, 62,217,202,178, 63, 82,255, 4, 0, 0, 0, 0,
-191, 11, 73, 20,191, 30,125, 78, 63, 16,248,219, 0, 0, 0, 0,193, 87,166, 3,193,114, 36, 19, 65,135,230,213, 63,128, 0, 0,
- 63,178,226,132, 62,209, 88, 18, 63, 11, 74,121, 63, 11, 73, 11,191,157, 53,169, 62,238, 53, 87, 63, 30,126,150, 63, 30,124,246,
-181, 45, 39, 38, 63,102,198,153,191, 16,250, 62,191, 16,248,193, 62,126,177, 46,192, 48,197, 31, 65,210,109,176, 65,210,148,125,
- 62,206,202,119,190,181,145,194,185, 84, 1, 62,183, 73, 79,188, 62,174,236, 32, 62,199, 10,100, 63, 64,245, 33, 55, 52,160, 0,
- 68, 40, 79, 84, 68, 60,252,158,196, 84, 35, 68,194, 71,205,165,196, 40, 46, 68,196, 60,214,248, 68, 84, 1, 62, 66, 71,207,188,
- 63,238, 38, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,163,215,225, 0, 0, 0, 0,
- 63, 64, 75, 54, 62,191,102,119,191, 11, 73, 11, 0, 0, 0, 0,191, 40,254,108, 62,217,202, 94,191, 30,124,246, 0, 0, 0, 0,
-180,186, 33,218, 63, 82,254,184, 63, 16,248,193, 0, 0, 0, 0, 62, 8,228, 73,192, 33,158, 72,193,210,148,125, 63,128, 0, 0,
- 63, 83,252, 84,190,223, 25,104, 62, 40, 52,115, 62,159,211,119, 65,198,183, 96, 65,198,183, 96, 0, 0, 0, 0, 0, 1, 0, 0,
- 7,159,156, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0,255,251, 0, 0, 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,213,207,174,
- 60, 35,215, 10, 67,250, 0, 0,188,218, 18,228,188, 23,180, 37,189, 22,146,163,190,122, 51,174,192, 58,244, 29, 54,224, 0, 0,
- 63, 88,146, 56, 64, 71, 37,198, 0, 20, 0, 0, 0, 7, 0,115, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,255,255, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 93,240, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 95, 0,
+ 8,193, 92,224, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,220, 13, 64,112, 96, 0, 0, 0,142, 0, 0, 0, 1, 13, 64,113,112, 7,159,136, 32, 0, 0, 0, 4,
- 0, 0, 0, 0, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 4, 0, 0, 0, 0, 68,160, 0, 0,196, 46, 0, 0, 67,100, 0, 0, 55,136,197,197, 68, 78,209,118,195,231,222, 40,
- 67, 25,158,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 66, 40, 0, 0, 69, 0, 0, 0,
- 67,225, 0, 0, 63, 0, 0, 0, 63,154,225, 72, 0, 0, 0, 1, 0, 1, 0, 1, 3,233, 2,235, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0,
- 1,150, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 88, 13, 64,113,112, 0, 0, 0,141,
- 0, 0, 0, 1, 13, 64,114,240, 13, 64,112, 96, 0, 0, 0, 2, 63, 51, 51, 51, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205,
- 63,128, 0, 0, 67,122, 0, 0,192,160, 0, 0, 64,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2,235,
- 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 16, 0, 0, 2,235,
- 60, 35,215, 10, 60, 35,215, 10, 70,106, 96, 0, 68,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7,159,184, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 68, 65, 84, 65,
- 0, 0, 0,128, 13, 64,114,240, 0, 0, 0,148, 0, 0, 0, 1, 13, 64,115,160, 13, 64,113,112, 0, 0, 0, 9, 63, 51, 51, 51,
- 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,194,224, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 61,204,204,205, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,225, 0, 0, 2,227, 0, 0, 0, 5, 0, 0, 0, 17,
- 0, 0, 2,207, 0, 0, 2,227, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,115,160, 0, 0, 0,145,
- 0, 0, 0, 1, 13, 64,116,208, 13, 64,114,240, 0, 0, 0, 3, 63, 51, 51, 51, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,
-195,190, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124,195,190, 0, 0,195,190, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,108, 1,124, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,142, 0, 1, 0, 0,
+ 0, 0, 0, 0, 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,228, 8,193, 95, 0, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 96, 16, 8,193, 93,240, 65,110,105,109,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
+101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,176, 13, 64,116,208, 0, 0, 0,230, 0, 0, 0, 1,
- 13, 64,117,176, 13, 64,115,160, 0, 0, 0, 11, 63, 51, 51, 51, 13, 64, 96, 96,192,128, 0, 0, 67,122, 0, 0,192,128, 0, 0,
- 67,127, 0, 0,192,128, 0, 0, 66, 72, 0, 0,192,128, 0, 0, 67,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 16,
- 0, 0, 1,124, 63,128, 0, 0, 67,129,128, 0, 70,250, 0, 0, 67,129,128, 0, 61,204,204,205, 65, 32, 0, 0, 0, 8, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,180, 13, 64,117,176, 0, 0, 0,147,
- 0, 0, 0, 1, 13, 64,118,144, 13, 64,116,208, 0, 0, 0, 13, 63, 51, 51, 51, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 68,122, 0, 0, 0, 0, 0, 0, 68,122, 0, 0,
-192,160, 0, 0, 66,130, 0, 0, 0, 0, 0, 0, 67,182, 0, 0, 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124,
- 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 1,124,
- 0, 0, 0, 0, 0, 0, 0, 0, 68,122, 0, 0, 68,122, 0, 0, 61,204,204,205, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192,
- 13, 64,118,144, 0, 0, 0,240, 0, 0, 0, 1, 13, 64,119,128, 13, 64,117,176, 0, 0, 0, 12, 63, 51, 51, 51, 13, 64, 96, 96,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 66, 2, 0, 0,196,122, 0, 0, 0, 0, 0, 0,
-191, 0, 0, 0, 66, 2, 0, 0,194,150, 0, 0, 64,160, 0, 0, 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 2, 14,
- 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 2, 14,
- 0, 0, 0, 0, 0, 0, 0, 0, 70,250, 0, 0, 68,122, 0, 0, 60, 35,215, 10, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 0, 0,
+ 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
+ 8,193, 96, 16, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 97, 32, 8,193, 95, 0, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,200, 13, 64,119,128, 0, 0, 0,144, 0, 0, 0, 1,
- 0, 0, 0, 0, 13, 64,118,144, 0, 0, 0, 5, 63, 51, 51, 51, 13, 64, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 83, 97,118,101, 32, 70,105,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0,114, 47,114,101,108,101, 97,115,
-101, 47,100, 97,116, 97,102,105,108,101,115, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,192, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 97, 32, 0, 0, 0,168,
+ 0, 0, 0, 1, 8,193, 98, 48, 8,193, 96, 16, 76,105,110,107, 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,114,101,118,105,101,119, 46, 98,108,101,110,
-100, 0, 0, 0, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 8, 0, 46, 0, 0, 0, 0, 1, 85, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,204, 13, 64,121,112, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0,
- 13, 64, 96, 96, 7, 29,221,112, 7, 31,230,240, 7, 31,232, 48, 7, 31,231,240, 0, 0, 0, 0, 63,157, 86,198, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 79, 65,252, 0, 0, 0, 0, 0, 0, 0, 0,189, 60, 82,166,188,131, 1,237,
-191,153,213,185,191,128, 0, 0,128, 0, 0, 0,128, 0, 0, 0,193, 65,194,239,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,235,
- 0, 0, 0, 0, 0, 0, 3, 5, 0, 0, 0, 0, 0, 0, 1,235, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 1,235,
- 0, 0, 0, 27, 0, 0, 3, 5, 0, 11, 0, 10, 0, 1, 1, 1, 1,236, 2,235, 1, 0, 1, 0, 2, 86, 0, 0, 0, 7, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,159,140, 32, 13, 64,145,160, 7, 27,196,112, 7, 27,196,112,
- 13, 64,122,112, 13, 64,136, 64, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,122,112, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,123,128,
- 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 73,112,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193, 98, 48, 0, 0, 0,168, 0, 0, 0, 1, 8,193, 99, 64,
+ 8,193, 97, 32, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0,167, 1, 62, 0,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64,123,128, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,124,144, 13, 64,122,112, 79,117,116,112,
-117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,
-101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,228, 8,193, 99, 64, 0, 0, 0,168, 0, 0, 0, 1, 8,193,100, 80, 8,193, 98, 48, 80,114,101,118,
+105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64,124,144, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,125,160, 13, 64,123,128, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
+ 8,193,100, 80, 0, 0, 0,168, 0, 0, 0, 1, 8,193,101, 96, 8,193, 99, 64, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,125,160, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64,126,176, 13, 64,124,144, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,101, 96, 0, 0, 0,168,
+ 0, 0, 0, 1, 8,193,102,112, 8,193,100, 80, 83,104, 97,100,111,119, 32, 97,110,100, 32, 83,112,111,116, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,126,176, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,127,192,
- 13, 64,125,160, 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,102,112, 0, 0, 0,168, 0, 0, 0, 1, 8,193,103,128,
+ 8,193,101, 96, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3,192, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64,127,192, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,128,208, 13, 64,126,176, 76,105,110,107,
- 32, 97,110,100, 32, 77, 97,116,101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,
-105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64,128,208, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,129,224, 13, 64,127,192, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,228, 8,193,103,128, 0, 0, 0,168, 0, 0, 0, 1, 8,193,104,144, 8,193,102,112, 77, 97,112, 32,
+ 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72,
+ 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,102,112, 68, 65, 84, 65, 0, 0, 0,228,
+ 8,193,104,144, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 8,193,103,128, 84,114, 97,110,115,102,111,114,109, 32, 80,114,
+111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 62, 0,204, 0, 0, 0, 0,
+ 0,162, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,105,160, 0, 0, 0,151,
+ 0, 0, 0, 1, 3,160,150, 32, 0, 0, 0, 0, 0, 0, 0, 6, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 0, 0, 0, 0, 67,128, 0, 0,189,204, 0, 0, 63,140,192, 0,
+191,117,128, 0, 63,250,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 51, 0, 0, 0, 0, 0, 0, 2,235, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 28, 3,160,150, 32, 0, 0, 0,142, 0, 0, 0, 1,
+ 8,193,106,208, 8,193,105,160, 0, 0, 0, 1, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 64, 75, 54, 62,191,102,119,191, 11, 73, 11, 0, 0, 0, 0,191, 40,254,108, 62,217,202, 94,191, 30,124,246,
+ 0, 0, 0, 0,180,186, 33,218, 63, 82,254,184, 63, 16,248,193, 0, 0, 0, 0, 62, 8,228, 73,192, 33,158, 72,193,210,148,125,
+ 63,128, 0, 0, 63, 64, 75, 68,191, 40,254,161, 54, 58,221,101, 0, 0, 0, 0, 62,191,103, 10, 62,217,202,178, 63, 82,255, 4,
+ 0, 0, 0, 0,191, 11, 73, 20,191, 30,125, 78, 63, 16,248,219, 0, 0, 0, 0,193, 87,166, 3,193,114, 36, 19, 65,135,230,213,
+ 63,128, 0, 0, 63,178,226,132, 62,209, 88, 18, 63, 11, 74,121, 63, 11, 73, 11,191,157, 53,169, 62,238, 53, 87, 63, 30,126,150,
+ 63, 30,124,246,181, 45, 39, 38, 63,102,198,153,191, 16,250, 62,191, 16,248,193, 62,126,177, 46,192, 48,197, 31, 65,210,109,176,
+ 65,210,148,125, 62,206,202,119,190,181,145,194,185, 84, 1, 62,183, 73, 79,188, 62,174,236, 32, 62,199, 10,100, 63, 64,245, 33,
+ 55, 52,160, 0, 68, 40, 79, 84, 68, 60,252,158,196, 84, 35, 68,194, 71,205,165,196, 40, 46, 68,196, 60,214,248, 68, 84, 1, 62,
+ 66, 71,207,188, 63,238, 38, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,140, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 1, 80,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,163,215,225,
+ 0, 0, 0, 0, 63, 64, 75, 54, 62,191,102,119,191, 11, 73, 11, 0, 0, 0, 0,191, 40,254,108, 62,217,202, 94,191, 30,124,246,
+ 0, 0, 0, 0,180,186, 33,218, 63, 82,254,184, 63, 16,248,193, 0, 0, 0, 0, 62, 8,228, 73,192, 33,158, 72,193,210,148,125,
+ 63,128, 0, 0, 63, 83,252, 84,190,223, 25,104, 62, 40, 52,115, 62,159,211,119, 65,198,183, 96, 65,198,183, 96, 0, 0, 0, 0,
+ 0, 1, 0, 0, 3,160,170, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0,255,251, 0, 0, 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 58,213,207,174, 60, 35,215, 10, 67,250, 0, 0,188,218, 18,228,188, 23,180, 37,189, 22,146,163,190,122, 51,174,192, 58,244, 29,
+ 54,224, 0, 0, 63, 88,146, 56, 64, 71, 37,198, 0, 20, 0, 0, 0, 7, 0,115, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,255,255,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,129,224, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64,130,240, 13, 64,128,208, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,220, 8,193,106,208, 0, 0, 0,147, 0, 0, 0, 1, 8,193,107,224, 3,160,150, 32, 0, 0, 0, 4, 0, 0, 0, 0,
+ 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4,
+ 0, 0, 0, 0, 68,160, 0, 0,196, 46, 0, 0, 67,100, 0, 0, 55,136,197,197, 68, 78,209,118,195,231,222, 40, 67, 25,158,172,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 66, 40, 0, 0, 69, 0, 0, 0, 67,225, 0, 0,
+ 63, 0, 0, 0, 63,154,225, 72, 0, 0, 0, 1, 0, 1, 0, 1, 3,233, 2,235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1,150, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 88, 8,193,107,224, 0, 0, 0,146, 0, 0, 0, 1,
+ 8,193,109, 96, 8,193,106,208, 0, 0, 0, 2, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 63,128, 0, 0,
+ 67,122, 0, 0,192,160, 0, 0, 64,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2,235, 0, 0, 0, 16,
+ 0, 0, 3,168, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 16, 0, 0, 2,235, 60, 35,215, 10,
+ 60, 35,215, 10, 70,106, 96, 0, 68,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,161, 14, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 68, 65, 84, 65, 0, 0, 0,128,
+ 8,193,109, 96, 0, 0, 0,153, 0, 0, 0, 1, 8,193,110, 16, 8,193,107,224, 0, 0, 0, 9, 63, 51, 51, 51, 8,193, 90,208,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,195,192, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 61,204,204,205, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,225, 0, 0, 2,227, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,207,
+ 0, 0, 2,227, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,110, 16, 0, 0, 0,150, 0, 0, 0, 1,
+ 8,193,111, 64, 8,193,109, 96, 0, 0, 0, 3, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,190, 0, 0,
+181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124,195,190, 0, 0,195,190, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,108, 1,124, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,142, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,176, 8,193,111, 64, 0, 0, 0,235, 0, 0, 0, 1, 8,193,112, 32,
+ 8,193,110, 16, 0, 0, 0, 11, 63, 51, 51, 51, 8,193, 90,208,192,128, 0, 0, 67,122, 0, 0,192,128, 0, 0, 67,127, 0, 0,
+192,128, 0, 0, 66, 72, 0, 0,192,128, 0, 0, 67,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 16, 0, 0, 1,124,
+ 63,128, 0, 0, 67,129,128, 0, 70,250, 0, 0, 67,129,128, 0, 61,204,204,205, 65, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,180, 8,193,112, 32, 0, 0, 0,152, 0, 0, 0, 1,
+ 8,193,113, 0, 8,193,111, 64, 0, 0, 0, 13, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 68,122, 0, 0, 0, 0, 0, 0, 68,122, 0, 0,192,160, 0, 0,
+ 66,130, 0, 0, 0, 0, 0, 0, 67,182, 0, 0, 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0,196,
+ 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68,122, 0, 0, 68,122, 0, 0, 61,204,204,205, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192, 8,193,113, 0,
+ 0, 0, 0,245, 0, 0, 0, 1, 8,193,113,240, 8,193,112, 32, 0, 0, 0, 12, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 66, 2, 0, 0,196,122, 0, 0, 0, 0, 0, 0,191, 0, 0, 0,
+ 66, 2, 0, 0,194,150, 0, 0, 64,160, 0, 0, 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 0,128,
+ 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 2, 14, 0, 0, 0, 0,
+ 0, 0, 0, 0, 70,250, 0, 0, 68,122, 0, 0, 60, 35,215, 10, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,200, 8,193,113,240, 0, 0, 0,149, 0, 0, 0, 1, 0, 0, 0, 0,
+ 8,193,113, 0, 0, 0, 0, 5, 63, 51, 51, 51, 8,193, 90,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 86, 83, 97,118,101, 32, 70,105,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0,114, 47,114,101,108,101, 97,115,101, 47,100, 97,
+116, 97,102,105,108,101,115, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,114,101,118,105,101,119, 46, 98,108,101,110,100, 0, 0, 0,
+ 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 46, 0, 0, 0, 0, 1, 85, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,204, 8,193,115,224, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 8,193, 90,208,
+ 2, 78, 9, 80, 8,192,223, 80, 8,192,224,144, 8,192,224, 80, 0, 0, 0, 0, 63, 24, 70,104, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62,200,150, 82, 0, 0, 0, 0, 0, 0, 0, 0,188,182, 67, 15,187,253,148,153,191,132, 86,200,
+191,128, 0, 0,128, 0, 0, 0,128, 0, 0, 0,192, 2, 43,100,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,235, 0, 0, 0, 0,
+ 0, 0, 3, 5, 0, 0, 0, 0, 0, 0, 1,235, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 1,235, 0, 0, 0, 27,
+ 0, 0, 3, 5, 0, 11, 0, 10, 0, 1, 1, 1, 1,236, 2,235, 1, 0, 1, 0, 2, 86, 0, 88, 0, 7, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,160,154, 32, 8,193,140, 16, 8,192, 68, 32, 8,192, 68, 32, 8,193,116,224,
+ 8,193,130,176, 68, 65, 84, 65, 0, 0, 0,228, 8,193,116,224, 0, 0, 0,168, 0, 0, 0, 1, 8,193,117,240, 0, 0, 0, 0,
+ 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 73,112,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 33, 0,167, 1, 62, 0,204, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193,117,240, 0, 0, 0,168, 0, 0, 0, 1, 8,193,119, 0, 8,193,116,224, 79,117,116,112,117,116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,130,240, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,132, 0,
- 13, 64,129,224, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,119, 0,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193,120, 16, 8,193,117,240, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64,132, 0, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,133, 16, 13, 64,130,240, 83,104, 97,100,
-111,119, 32, 97,110,100, 32, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,120, 16, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193,121, 32, 8,193,119, 0, 65,110,105,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48,
- 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228,
- 13, 64,133, 16, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,134, 32, 13, 64,132, 0, 84,101,120,116,117,114,101, 32, 97,110,100, 32,
- 73,110,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,121, 32, 0, 0, 0,168, 0, 0, 0, 1, 8,193,122, 48, 8,193,120, 16,
+ 70,111,114,109, 97,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,134, 32, 0, 0, 0,163,
- 0, 0, 0, 1, 13, 64,135, 48, 13, 64,133, 16, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,192, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193,122, 48, 0, 0, 0,168, 0, 0, 0, 1, 8,193,123, 64, 8,193,121, 32, 76,105,110,107, 32, 97,110,100,
+ 32, 77, 97,116,101,114,105, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,133, 16, 68, 65, 84, 65, 0, 0, 0,228, 13, 64,135, 48, 0, 0, 0,163, 0, 0, 0, 1, 13, 64,136, 64,
- 13, 64,134, 32, 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,123, 64,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193,124, 80, 8,193,122, 48, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,228, 1, 62, 0,204, 0, 0, 0, 0, 0, 34, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,228, 13, 64,136, 64, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 0, 13, 64,135, 48, 80,114,101,118,
-105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119,
- 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 1,116,
- 1,152, 1, 76, 0, 4, 0, 0, 2, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 4,
- 7,159,140, 32, 0, 0, 0,137, 0, 0, 0, 1, 13, 64,137, 80, 0, 0, 0, 0, 0, 0, 0, 1, 63, 51, 51, 51, 13, 64,121,112,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 51,160, 0, 0,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 51,162, 33,104, 0, 0, 0, 0,
- 60, 41,199, 78,191,230,129,210,193, 30,230,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,127,255,255, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 0, 1, 51,160, 0, 0, 0, 0, 0, 0,
-188, 41,199, 79,193, 30,230,226, 63,230,129,216, 63,128, 0, 0, 63,157, 86,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 61, 60, 82,166, 60,131, 2, 13, 63,153,213,185, 63,128, 0, 0,177,110,137,192, 63, 79, 65,252,179,194,218,164,179,162, 33,104,
- 62,240, 79, 64,191,166, 74, 13,190, 50,105, 0, 65, 30,230,225, 63, 80, 67,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 51,208, 0, 0, 63,158, 26, 71,179,128, 0, 0, 58, 96, 80, 64, 63, 81,241,110,190, 24, 70, 67,189,169, 29,122,
-189, 29,107, 44, 60,107,183,198, 62, 34,200, 16, 61,203, 63,156, 63,157, 86,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 79, 65,252, 0, 0, 0, 0, 0, 0, 0, 0,189, 60, 82,166,188,131, 1,237,191,153,213,185,191,128, 0, 0,
-128, 0, 0, 0,128, 0, 0, 0,193, 65,194,239,128, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 51,160, 0, 0,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 51,162, 33,104, 0, 0, 0, 0,
- 60, 41,199, 78,191,230,129,210,193, 30,230,225, 63,128, 0, 0, 63, 53, 4,244,191, 53, 4,243, 0, 0, 0, 0, 0, 0, 0, 0,
- 65, 21,104,229, 63,128, 0, 0, 0, 0, 13,255, 0, 2, 0, 0, 7,159,156, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0,255,251, 0, 0,
- 66, 12, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 59, 88,186,208, 60, 35,215, 10, 67,250, 0, 0,188,218, 18,228,188, 23,180, 37,
-189, 22,146,163, 64,198, 40, 85,192,173,239,178, 54,224, 0, 0, 63, 88,146, 56, 64, 71, 37,198, 0, 20, 0, 0, 0, 7, 0,207,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,255,255, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,124, 80, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193,125, 96, 8,193,123, 64, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8,
- 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,220, 13, 64,137, 80, 0, 0, 0,142,
- 0, 0, 0, 1, 13, 64,138, 96, 7,159,140, 32, 0, 0, 0, 4, 0, 0, 0, 0, 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 68,160, 0, 0,196, 46, 0, 0,
- 67,100, 0, 0, 55,136,197,197, 68, 78,209,118,195,231,222, 40, 67, 25,158,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67,128, 0, 0, 66, 40, 0, 0, 69, 0, 0, 0, 67,225, 0, 0, 63, 0, 0, 0, 63,154,225, 72, 0, 0, 0, 1,
- 0, 1, 0, 1, 3,233, 2,235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2,
- 0, 0, 0, 3, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1,150, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 1, 88, 13, 64,138, 96, 0, 0, 0,141, 0, 0, 0, 1, 13, 64,139,224, 13, 64,137, 80, 0, 0, 0, 2,
- 63, 51, 51, 51, 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205, 63,128, 0, 0, 67,122, 0, 0,192,160, 0, 0, 64,160, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 2,235, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 16, 0, 0, 2,235, 60, 35,215, 10, 60, 35,215, 10, 70,106, 96, 0, 68,122, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,159,184, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 67,122, 0, 0,189,204,204,205, 63,140,204,205, 68, 65, 84, 65, 0, 0, 0,128, 13, 64,139,224, 0, 0, 0,148, 0, 0, 0, 1,
- 13, 64,140,144, 13, 64,138, 96, 0, 0, 0, 9, 63, 51, 51, 51, 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,194,224, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 0, 0, 5, 0, 0, 0, 17,
- 0, 0, 2,225, 0, 0, 2,227, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,207, 0, 0, 2,227, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,140,144, 0, 0, 0,146, 0, 0, 0, 1, 13, 64,141,192, 13, 64,139,224, 0, 0, 0, 6,
- 63, 51, 51, 51, 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0,
- 0, 0, 0, 0, 67,128, 0, 0,190,120, 0, 0, 63,159, 0, 0,190,242, 0, 0, 63,188,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124,
- 0, 0, 0, 0, 0, 0, 1,242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 1, 8, 13, 64,141,192, 0, 0, 0,145, 0, 0, 0, 1, 13, 64,142,240, 13, 64,140,144, 0, 0, 0, 3, 63, 51, 51, 51,
- 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,209, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,190, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
- 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0,
- 0, 0, 1,124,195,190, 0, 0,195,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1,
- 0, 1, 0, 1, 1,108, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3,142, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,176,
- 13, 64,142,240, 0, 0, 0,230, 0, 0, 0, 1, 13, 64,143,208, 13, 64,141,192, 0, 0, 0, 11, 63, 51, 51, 51, 13, 64,121,112,
-192,128, 0, 0, 67,122, 0, 0,192,128, 0, 0, 67,127, 0, 0,192,128, 0, 0, 66, 72, 0, 0,192,128, 0, 0, 67,127, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 16, 0, 0, 1,124, 63,128, 0, 0, 67,129,128, 0, 70,250, 0, 0, 67,129,128, 0,
- 61,204,204,205, 65, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,180, 13, 64,143,208, 0, 0, 0,147, 0, 0, 0, 1, 13, 64,144,176, 13, 64,142,240, 0, 0, 0, 13, 63, 51, 51, 51,
- 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 68,122, 0, 0, 0, 0, 0, 0, 68,122, 0, 0,192,160, 0, 0, 66,130, 0, 0, 0, 0, 0, 0, 67,182, 0, 0, 0, 0, 1,108,
- 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,196,
- 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0, 68,122, 0, 0, 68,122, 0, 0, 61,204,204,205,
- 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192, 13, 64,144,176, 0, 0, 0,240, 0, 0, 0, 1, 13, 64,145,160, 13, 64,143,208,
- 0, 0, 0, 12, 63, 51, 51, 51, 13, 64,121,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0,
- 66, 2, 0, 0,196,122, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 66, 2, 0, 0,194,150, 0, 0, 64,160, 0, 0, 0, 0, 1,108,
- 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128,
- 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 70,250, 0, 0, 68,122, 0, 0, 60, 35,215, 10,
- 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,200,
- 13, 64,145,160, 0, 0, 0,144, 0, 0, 0, 1, 0, 0, 0, 0, 13, 64,144,176, 0, 0, 0, 5, 63, 51, 51, 51, 13, 64,121,112,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 83, 97,118,101, 32, 70,105,108,
-101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,
-111,112, 47, 0,114, 47,114,101,108,101, 97,115,101, 47,100, 97,116, 97,102,105,108,101,115, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,125, 96, 0, 0, 0,168, 0, 0, 0, 1, 8,193,126,112, 8,193,124, 80,
+ 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-112,114,101,118,105,101,119, 46, 98,108,101,110,100, 0, 0, 0, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 46, 0, 0, 0, 0, 1, 85, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0, 5, 96, 7,159,144, 32,
- 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67,112,114,101,118,105,101,
-119, 0, 0, 99,101,110,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,159,156, 32,
- 13, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,147,144, 13, 64,155, 16, 13, 64,147,144, 62, 18, 2, 17, 62,117,122,104,
-191,188,208, 62,188,211,197,192, 65, 59,229, 76, 64,184,106,208,188,211,197,192, 65, 59,229, 76, 64,184,106,208,188,211,197,192,
- 65, 59,229, 76, 64,184,106,208, 0, 0, 0, 2, 62,214,245, 65, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,155, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,155,176,
+ 0, 0,255, 24, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193,126,112, 0, 0, 0,168, 0, 0, 0, 1, 8,193,127,128, 8,193,125, 96, 83,104, 97,100,111,119, 32, 97,
+110,100, 32, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 1, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 1,224, 0, 60, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 25, 0,141, 2, 88, 2, 88, 0, 2, 0, 2, 0, 0, 0, 24, 0, 4, 0, 0, 0, 0,
- 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 64, 0, 0, 0, 5, 0, 25, 0, 10, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,158, 64, 13, 64,158, 64, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 2,
- 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 48, 1, 62, 0,204,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,127,128,
+ 0, 0, 0,168, 0, 0, 0, 1, 8,193,128,144, 8,193,126,112, 84,101,120,116,117,114,101, 32, 97,110,100, 32, 73,110,112,117,
+116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,228, 8,193,128,144, 0, 0, 0,168, 0, 0, 0, 1,
+ 8,193,129,160, 8,193,127,128, 77, 97,112, 32, 84,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 72, 1, 62, 0,204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,127,128, 68, 65, 84, 65, 0, 0, 0,228, 8,193,129,160, 0, 0, 0,168, 0, 0, 0, 1, 8,193,130,176, 8,193,128,144,
+ 84,114, 97,110,115,102,111,114,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 86,105,101,119, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,228, 1, 62, 0,204, 0, 0, 0, 0, 0, 34, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,228, 8,193,130,176, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 8,193,129,160, 80,114,101,118,105,101,119, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 51,100, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,204,205,
- 63, 76,204,205, 63, 76,204,205, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 0, 0, 0, 6,
- 0, 0, 0, 16, 63,128, 0, 0, 63,128, 0, 0, 2,173, 0, 95, 63,217,153,154, 0, 0,172, 68, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 26, 32,144, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 1,116, 1,152, 1, 76,
+ 0, 4, 0, 0, 2, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 28, 3,160,154, 32,
+ 0, 0, 0,142, 0, 0, 0, 1, 8,193,131,192, 0, 0, 0, 0, 0, 0, 0, 1, 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51,160, 0, 0,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 51,162, 33,104, 0, 0, 0, 0, 60, 41,199, 78,
+191,230,129,210,193, 30,230,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,127,255,255, 0, 0, 0, 0, 0, 0, 0, 0,191,128, 0, 1, 51,160, 0, 0, 0, 0, 0, 0,188, 41,199, 79,
+193, 30,230,226, 63,230,129,216, 63,128, 0, 0, 63, 24, 70,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,182, 67, 15,
+ 59,253,148,216, 63,132, 86,200, 63,128, 0, 0,176,230,220,112, 62,200,150, 82,179,167,160, 95,179,162, 33,104, 62,104,147, 88,
+191, 32,239,249, 65, 3,190,250, 65, 30,230,225, 63,215, 48,137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,179, 46,200, 82,
+182,129,140,216, 64, 35, 92, 69, 52,132, 68, 58, 59,166,242,192, 64,156, 64,224,191, 98,170, 80,190,251,187,175,189, 46,200, 82,
+192,129,140,216, 63,101, 74,199, 63, 2, 34, 29, 63, 24, 70,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,200,150, 82, 0, 0, 0, 0, 0, 0, 0, 0,188,182, 67, 15,187,253,148,153,191,132, 86,200,191,128, 0, 0,128, 0, 0, 0,
+128, 0, 0, 0,192, 2, 43,100,128, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51,160, 0, 0,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 51,162, 33,104, 0, 0, 0, 0, 60, 41,199, 78,
+191,230,129,210,193, 30,230,225, 63,128, 0, 0, 63, 53, 4,244,191, 53, 4,243, 0, 0, 0, 0, 0, 0, 0, 0, 66,160,240, 16,
+ 63,128, 0, 0, 0, 0, 13,255, 0, 2, 0, 0, 3,160,170, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0,255,231, 0, 0, 66, 12, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 59,223,239,235, 60, 35,215, 10, 67,250, 0, 0,188,218, 18,228,188, 23,180, 37,193, 36,172, 83,
+192, 56,152, 79,192,204,230, 29,188, 41,199, 96,193, 30,230,225, 63,230,129,216, 0, 20, 0, 0, 0, 7, 0,207, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0,255,255, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,156,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 10,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 48,137,193,191, 13, 88,168, 62, 2,185, 28, 62,230,218,212, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,220, 8,193,131,192, 0, 0, 0,147, 0, 0, 0, 1, 8,193,132,208, 3,160,154, 32,
+ 0, 0, 0, 4, 0, 0, 0, 0, 8,193,115,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 68,160, 0, 0,196, 46, 0, 0, 67,100, 0, 0, 55,136,197,197, 68, 78,209,118,
+195,231,222, 40, 67, 25,158,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 66, 40, 0, 0,
+ 69, 0, 0, 0, 67,225, 0, 0, 63, 0, 0, 0, 63,154,225, 72, 0, 0, 0, 1, 0, 1, 0, 1, 3,233, 2,235, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0,255,255, 0, 0,
+ 0, 0, 0, 0, 1,150, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 88, 8,193,132,208,
+ 0, 0, 0,146, 0, 0, 0, 1, 8,193,134, 80, 8,193,131,192, 0, 0, 0, 2, 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205,
+ 63,140,204,205, 63,128, 0, 0, 67,122, 0, 0,192,160, 0, 0, 64,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 2,235, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 3,168, 0, 0, 0, 16,
+ 0, 0, 2,235, 60, 35,215, 10, 60, 35,215, 10, 70,106, 96, 0, 68,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,161, 14, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,122, 0, 0,189,204,204,205, 63,140,204,205,
+ 68, 65, 84, 65, 0, 0, 0,128, 8,193,134, 80, 0, 0, 0,153, 0, 0, 0, 1, 8,193,135, 0, 8,193,132,208, 0, 0, 0, 9,
+ 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,195,192, 0, 0, 0, 0,
+ 0, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 2,225, 0, 0, 2,227, 0, 0, 0, 5,
+ 0, 0, 0, 17, 0, 0, 2,207, 0, 0, 2,227, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,135, 0,
+ 0, 0, 0,151, 0, 0, 0, 1, 8,193,136, 48, 8,193,134, 80, 0, 0, 0, 6, 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,128, 0, 0, 0, 0, 0, 0, 67,128, 0, 0,190,120, 0, 0,
+ 63,159, 0, 0,190,242, 0, 0, 63,188,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,242, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,136, 48, 0, 0, 0,150,
+ 0, 0, 0, 1, 8,193,137, 96, 8,193,135, 0, 0, 0, 0, 3, 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,195,209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,182, 0, 0,
+195,190, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124,195,190, 0, 0,195,190, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,108, 1,124, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,142, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,147,144, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,147,224,
- 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 96, 0,227, 7,159,156, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,147,224, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,148, 48, 13, 64,147,144, 0, 0, 8, 0, 0, 0, 0, 2, 0, 0, 0, 0,
- 46,224, 1,169, 7,159,248, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,148, 48, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,148,128,
- 13, 64,147,224, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1,122, 7,159,172, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,148,128, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,148,208, 13, 64,148, 48, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 0,
- 1, 2, 1,220, 7,159,168, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,148,208, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,149, 32,
- 13, 64,148,128, 0, 0, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 48, 1, 67, 7,159,244, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,149, 32, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,149,112, 13, 64,148,208, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 16, 0,
- 46,224, 1, 49, 7,159,208, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,149,112, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,149,192,
- 13, 64,149, 32, 0, 0, 0, 33, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1,122, 7,159,212, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,149,192, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,150, 16, 13, 64,149,112, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 20, 0,
- 46,224, 0, 52, 7,159,204, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,150, 16, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,150, 96,
- 13, 64,149,192, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 20, 0, 46,224, 0, 47, 7,159,200, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,150, 96, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,150,176, 13, 64,150, 16, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 20, 0,
- 46,224, 1, 85, 7,159,196, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,150,176, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,151, 0,
- 13, 64,150, 96, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 20, 0, 46,224, 0, 10, 7,159,192, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,151, 0, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,151, 80, 13, 64,150,176, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 20, 0,
- 46,224, 1,113, 7,159,188, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,151, 80, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,151,160,
- 13, 64,151, 0, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 0, 1, 1, 1,147, 7,159,240, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,151,160, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,151,240, 13, 64,151, 80, 0, 0, 4, 14, 0, 0, 0, 3, 0, 0, 0, 0,
- 1, 2, 1,220, 7,159,164, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,151,240, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,152, 64,
- 13, 64,151,160, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 16, 0, 0,255, 2, 91, 7,159,232, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,152, 64, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,152,144, 13, 64,151,240, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 0,
- 0,253, 1,180, 7,159,236, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,152,144, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,152,224,
- 13, 64,152, 64, 0, 0, 0, 32, 0, 0, 0, 15, 0, 0, 0, 0, 1, 0, 1,122, 7,159,252, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,152,224, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,153, 48, 13, 64,152,144, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0,
- 1, 1, 1,123, 7,159,228, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,153, 48, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,153,128,
- 13, 64,152,224, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 1, 0, 1,123, 7,159,216, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,153,128, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,153,208, 13, 64,153, 48, 0, 0, 4, 28, 0, 0, 0, 4, 0, 0, 20, 0,
- 46,224, 1,204, 7,159,176, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,153,208, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,154, 32,
- 13, 64,153,128, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 1, 1, 1,122, 7,159,224, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,154, 32, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,154,112, 13, 64,153,208, 0, 0, 4, 28, 0, 0, 0, 5, 0, 0, 20, 0,
- 46,224, 2,229, 7,159,184, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,154,112, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,154,192,
- 13, 64,154, 32, 0, 0, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0,204, 1,147, 7,159,220, 32, 68, 65, 84, 65, 0, 0, 0, 28,
- 13, 64,154,192, 0, 0, 0,118, 0, 0, 0, 1, 13, 64,155, 16, 13, 64,154,112, 0, 0, 4, 28, 0, 0, 0, 6, 0, 0, 20, 0,
- 46,224, 1, 9, 7,159,180, 32, 68, 65, 84, 65, 0, 0, 0, 28, 13, 64,155, 16, 0, 0, 0,118, 0, 0, 0, 1, 0, 0, 0, 0,
- 13, 64,154,192, 0, 0, 13,223, 0, 0, 0, 3, 0, 0, 4, 0, 46,224, 0,227, 7,159,160, 32, 68, 65, 84, 65, 0, 0, 0, 40,
- 13, 64,155, 96, 0, 0, 0,117, 0, 0, 0, 1, 1, 44, 0, 0, 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 1,244, 0,200,
- 0,100, 0, 20, 0, 0, 39, 16, 61,204,204,205, 65,240, 0, 0, 64, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,188, 13, 64,155,176,
- 0, 0, 0,132, 0, 0, 0, 1, 0, 1, 0, 1, 63, 76,204,205, 66,180, 0, 0, 0, 9, 0, 1, 63,128, 0, 0, 58,131, 18,111,
- 0, 32, 0, 32, 0, 32, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 7, 0, 5, 0, 5,255,255, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50,
- 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50,
- 0, 10, 0, 0, 62,128, 0, 0, 0, 0, 0, 0, 56,209,183, 23, 61,204,204,205, 0, 0, 0, 0, 0, 0, 0, 50, 60, 35,215, 10,
- 60, 35,215, 10, 63,166,102,102, 63,192, 0, 0, 66, 52, 0, 0, 63,122,225, 72, 61,204,204,205, 0, 3, 0, 1, 2, 0, 1, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,156,160, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 6, 0, 0, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191,127, 10, 78, 61,177, 44, 36,191,127, 10, 78, 61,177, 43,213,
- 13, 64,157,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,176, 8,193,137, 96, 0, 0, 0,235, 0, 0, 0, 1,
+ 8,193,138, 64, 8,193,136, 48, 0, 0, 0, 11, 63, 51, 51, 51, 8,193,115,224,192,128, 0, 0, 67,122, 0, 0,192,128, 0, 0,
+ 67,127, 0, 0,192,128, 0, 0, 66, 72, 0, 0,192,128, 0, 0, 67,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,124, 0, 0, 0, 16,
+ 0, 0, 1,124, 63,128, 0, 0, 67,129,128, 0, 70,250, 0, 0, 67,129,128, 0, 61,204,204,205, 65, 32, 0, 0, 0, 8, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,180, 8,193,138, 64, 0, 0, 0,152,
+ 0, 0, 0, 1, 8,193,139, 32, 8,193,137, 96, 0, 0, 0, 13, 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 68,122, 0, 0, 0, 0, 0, 0, 68,122, 0, 0,
+192,160, 0, 0, 66,130, 0, 0, 0, 0, 0, 0, 67,182, 0, 0, 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 1,124,
+ 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,196, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 1,124,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68,122, 0, 0, 68,122, 0, 0, 61,204,204,205, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192,
+ 8,193,139, 32, 0, 0, 0,245, 0, 0, 0, 1, 8,193,140, 16, 8,193,138, 64, 0, 0, 0, 12, 63, 51, 51, 51, 8,193,115,224,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, 66, 2, 0, 0,196,122, 0, 0, 0, 0, 0, 0,
+191, 0, 0, 0, 66, 2, 0, 0,194,150, 0, 0, 64,160, 0, 0, 0, 0, 1,108, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 2, 14,
+ 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 1,108, 0, 0, 0, 16, 0, 0, 2, 14,
+ 0, 0, 0, 0, 0, 0, 0, 0, 70,250, 0, 0, 68,122, 0, 0, 60, 35,215, 10, 66, 72, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,200, 8,193,140, 16, 0, 0, 0,149, 0, 0, 0, 1,
+ 0, 0, 0, 0, 8,193,139, 32, 0, 0, 0, 5, 63, 51, 51, 51, 8,193,115,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 83, 97,118,101, 32, 70,105,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 47, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0,114, 47,114,101,108,101, 97,115,
+101, 47,100, 97,116, 97,102,105,108,101,115, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 72, 13, 64,157,208, 0, 0, 1, 30, 0, 0, 0, 6, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 61,204,204,205, 63,121,188, 86, 0, 0, 0, 0, 62,153,153,154, 63, 75, 60, 96, 0, 0, 0, 0, 63, 51, 51, 51, 62, 83, 14,128,
- 0, 0, 0, 0, 63,102,102,102, 60,200,117, 79, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 72, 13, 64,158, 64, 0, 0, 0,123, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114,
- 76, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,195,240,
- 0, 15,255,255, 0, 0, 0, 0, 0, 0,127,255, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 73, 77, 0, 0, 1,128,
- 13, 64,158,176, 0, 0, 0, 32, 0, 0, 0, 1, 7, 30,176,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 73,109,
- 97,103,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 53, 0, 0, 0, 0,
- 85,110,116,105,116,108,101,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,114,101,118,105,101,119, 46, 98,108,101,110,
+100, 0, 0, 0, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 8, 0, 46, 0, 0, 0, 0, 1, 85, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0, 5,124, 3,160,158, 32, 0, 0, 0,140, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67,112,114,101,118,105,101,119, 0, 0, 99,101,110,101, 46, 48, 48, 49, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,160,170, 32, 8,193,193,208, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,142, 0, 8,193,155, 32, 8,193,152,160, 64, 88,103,200, 62,117,122, 54,193, 50,105,189, 66, 7,191,212,191,103,203,252,
+ 63,217, 88, 65, 65,193,235,187,191,103,204, 1,192, 73,182, 96, 66, 46,137,203,191,103,203,247, 64,209,135, 83, 0, 0, 0, 2,
+ 62,214,245, 65, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,155,112,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,155,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,128, 1,224, 0, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 25,
+ 0,141, 2, 88, 2, 88, 0, 4, 0, 4, 0, 0, 0, 24, 0, 4, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 32, 0, 0, 0, 0, 0, 64, 0, 0, 0, 5, 0, 25, 0, 10, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,158,112, 8,193,158,112, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 0, 0, 0, 6, 0, 0, 0, 16, 63,128, 0, 0, 63,128, 0, 0,
+ 2,173, 0, 95, 63,217,153,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,172, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 3, 2, 70, 45, 16,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,156,208, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,142, 0, 0, 0, 0,123, 0, 0, 0, 1, 8,193,142, 80, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0,
+ 1,183, 0,208, 3,161, 2, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,142, 80, 0, 0, 0,123, 0, 0, 0, 1, 8,193,142,160,
+ 8,193,142, 0, 0, 0, 0, 33, 0, 0, 0, 2, 0, 0, 0, 0, 1,183, 0,208, 3,160,254, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,142,160, 0, 0, 0,123, 0, 0, 0, 1, 8,193,142,240, 8,193,142, 80, 0, 0, 0, 33, 0, 0, 0, 3, 0, 0, 0, 0,
+ 46,224, 1, 43, 3,160,250, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,142,240, 0, 0, 0,123, 0, 0, 0, 1, 8,193,143, 64,
+ 8,193,142,160, 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 0, 46,224, 1, 43, 3,160,246, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,143, 64, 0, 0, 0,123, 0, 0, 0, 1, 8,193,143,144, 8,193,142,240, 0, 0, 0, 33, 0, 0, 0, 5, 0, 0, 0, 0,
+ 46,224, 2, 66, 3,160,242, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,143,144, 0, 0, 0,123, 0, 0, 0, 1, 8,193,143,224,
+ 8,193,143, 64, 0, 0, 0, 33, 0, 0, 0, 6, 0, 0, 0, 0, 46,224, 2, 66, 3,160,238, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,143,224, 0, 0, 0,123, 0, 0, 0, 1, 8,193,144, 48, 8,193,143,144, 0, 0, 0, 33, 0, 0, 0, 7, 0, 0, 0, 0,
+ 1,153, 1, 33, 3,160,234, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,144, 48, 0, 0, 0,123, 0, 0, 0, 1, 8,193,144,128,
+ 8,193,143,224, 0, 0, 0, 33, 0, 0, 0, 8, 0, 0, 0, 0, 1,153, 1, 33, 3,160,230, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,144,128, 0, 0, 0,123, 0, 0, 0, 1, 8,193,144,208, 8,193,144, 48, 0, 0, 0, 33, 0, 0, 0, 9, 0, 0, 0, 0,
+ 1, 36, 1, 92, 3,160,226, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,144,208, 0, 0, 0,123, 0, 0, 0, 1, 8,193,145, 32,
+ 8,193,144,128, 0, 0, 0, 33, 0, 0, 0, 10, 0, 0, 0, 0, 1, 36, 1, 92, 3,160,222, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,145, 32, 0, 0, 0,123, 0, 0, 0, 1, 8,193,145,112, 8,193,144,208, 0, 0, 0, 33, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 57, 1,210, 3,160,218, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,145,112, 0, 0, 0,123, 0, 0, 0, 1, 8,193,145,192,
+ 8,193,145, 32, 0, 0, 0, 33, 0, 0, 0, 12, 0, 0, 0, 0, 0, 57, 1,210, 3,160,214, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,145,192, 0, 0, 0,123, 0, 0, 0, 1, 8,193,146, 16, 8,193,145,112, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 0,
+ 1, 9, 2,117, 3,160,210, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,146, 16, 0, 0, 0,123, 0, 0, 0, 1, 8,193,146, 96,
+ 8,193,145,192, 0, 0, 4, 14, 0, 0, 0, 2, 0, 0, 0, 0, 1, 9, 2,117, 3,160,206, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,146, 96, 0, 0, 0,123, 0, 0, 0, 1, 8,193,146,176, 8,193,146, 16, 0, 0, 4, 14, 0, 0, 0, 3, 0, 0, 0, 0,
+ 1,100, 1,198, 3,160,202, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,146,176, 0, 0, 0,123, 0, 0, 0, 1, 8,193,147, 0,
+ 8,193,146, 96, 0, 0, 4, 14, 0, 0, 0, 4, 0, 0, 0, 0, 1,100, 1,198, 3,160,198, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,147, 0, 0, 0, 0,123, 0, 0, 0, 1, 8,193,147, 80, 8,193,146,176, 0, 0, 4, 14, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0,154, 1,198, 3,160,194, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,147, 80, 0, 0, 0,123, 0, 0, 0, 1, 8,193,147,160,
+ 8,193,147, 0, 0, 0, 4, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0,154, 1,198, 3,160,190, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,147,160, 0, 0, 0,123, 0, 0, 0, 1, 8,193,147,240, 8,193,147, 80, 0, 0, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 1, 15, 1, 76, 3,160,170, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,147,240, 0, 0, 0,123, 0, 0, 0, 1, 8,193,148, 64,
+ 8,193,147,160, 0, 0, 8, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,188, 1, 90, 3,161, 78, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,148, 64, 0, 0, 0,123, 0, 0, 0, 1, 8,193,148,144, 8,193,147,240, 0, 0, 0, 33, 0, 0, 0, 13, 0, 0, 0, 0,
+ 0,174, 1,151, 3,160,186, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,148,144, 0, 0, 0,123, 0, 0, 0, 1, 8,193,148,224,
+ 8,193,148, 64, 0, 0, 4, 14, 0, 0, 0, 7, 0, 0, 0, 0, 0,254, 1,166, 3,160,182, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,148,224, 0, 0, 0,123, 0, 0, 0, 1, 8,193,149, 48, 8,193,148,144, 0, 0, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0,217, 0,233, 3,161, 74, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,149, 48, 0, 0, 0,123, 0, 0, 0, 1, 8,193,149,128,
+ 8,193,148,224, 0, 0, 0, 32, 0, 0, 0, 14, 0, 0, 16, 0, 0,116, 1, 27, 3,161, 38, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,149,128, 0, 0, 0,123, 0, 0, 0, 1, 8,193,149,208, 8,193,149, 48, 0, 0, 0, 33, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0,174, 1,151, 3,161, 42, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,149,208, 0, 0, 0,123, 0, 0, 0, 1, 8,193,150, 32,
+ 8,193,149,128, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 20, 0, 46,224, 1, 67, 3,161, 34, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,150, 32, 0, 0, 0,123, 0, 0, 0, 1, 8,193,150,112, 8,193,149,208, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 20, 0,
+ 46,224, 1, 96, 3,161, 30, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,150,112, 0, 0, 0,123, 0, 0, 0, 1, 8,193,150,192,
+ 8,193,150, 32, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 20, 0, 1,181, 1, 43, 3,161, 26, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,150,192, 0, 0, 0,123, 0, 0, 0, 1, 8,193,151, 16, 8,193,150,112, 0, 0, 0, 1, 0, 0, 0, 15, 0, 0, 20, 0,
+ 0, 12, 0,160, 3,161, 22, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,151, 16, 0, 0, 0,123, 0, 0, 0, 1, 8,193,151, 96,
+ 8,193,150,192, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 20, 0, 0,175, 0,161, 3,161, 18, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,151, 96, 0, 0, 0,123, 0, 0, 0, 1, 8,193,151,176, 8,193,151, 16, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0,123, 1, 57, 3,161, 70, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,151,176, 0, 0, 0,123, 0, 0, 0, 1, 8,193,152, 0,
+ 8,193,151, 96, 0, 0, 4, 14, 0, 0, 0, 11, 0, 0, 0, 0, 0,254, 1,166, 3,160,178, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,152, 0, 0, 0, 0,123, 0, 0, 0, 1, 8,193,152, 80, 8,193,151,176, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 16, 0,
+ 0,238, 1,122, 3,161, 62, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,152, 80, 0, 0, 0,123, 0, 0, 0, 1, 8,193,152,160,
+ 8,193,152, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 0, 0,237, 1,119, 3,161, 66, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,152,160, 0, 0, 0,123, 0, 0, 0, 1, 8,193,152,240, 8,193,152, 80, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 1,
+ 0,152, 1,114, 3,161, 82, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,152,240, 0, 0, 0,123, 0, 0, 0, 1, 8,193,153, 64,
+ 8,193,152,160, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0,123, 1, 65, 3,161, 58, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,153, 64, 0, 0, 0,123, 0, 0, 0, 1, 8,193,153,144, 8,193,152,240, 0, 0, 0, 1, 0, 0, 0, 17, 0, 0, 0, 0,
+ 0,123, 1, 26, 3,161, 46, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,153,144, 0, 0, 0,123, 0, 0, 0, 1, 8,193,153,224,
+ 8,193,153, 64, 0, 0, 4, 28, 0, 0, 0, 4, 0, 0, 20, 0, 1, 45, 1,117, 3,161, 6, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,153,224, 0, 0, 0,123, 0, 0, 0, 1, 8,193,154, 48, 8,193,153,144, 0, 0, 0, 2, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0,251, 1,119, 3,161, 54, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,154, 48, 0, 0, 0,123, 0, 0, 0, 1, 8,193,154,128,
+ 8,193,153,224, 0, 0, 4, 28, 0, 0, 0, 5, 0, 0, 20, 0, 0,197, 1,129, 3,161, 14, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,154,128, 0, 0, 0,123, 0, 0, 0, 1, 8,193,154,208, 8,193,154, 48, 0, 0, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0,
+ 0,100, 1, 54, 3,161, 50, 32, 68, 65, 84, 65, 0, 0, 0, 28, 8,193,154,208, 0, 0, 0,123, 0, 0, 0, 1, 8,193,155, 32,
+ 8,193,154,128, 0, 0, 4, 28, 0, 0, 0, 6, 0, 0, 20, 0, 1, 65, 1, 29, 3,161, 10, 32, 68, 65, 84, 65, 0, 0, 0, 28,
+ 8,193,155, 32, 0, 0, 0,123, 0, 0, 0, 1, 0, 0, 0, 0, 8,193,154,208, 0, 0, 13,223, 0, 0, 0, 18, 0, 0, 4, 0,
+ 46,224, 1, 76, 3,160,174, 32, 68, 65, 84, 65, 0, 0, 0, 40, 8,193,155,112, 0, 0, 0,122, 0, 0, 0, 1, 1, 44, 0, 0,
+ 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 1,244, 0,200, 0,100, 0, 20, 0, 0, 39, 16, 61,204,204,205, 65,240, 0, 0,
+ 64, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,232, 8,193,155,192, 0, 0, 0,137, 0, 0, 0, 1, 0, 1, 0, 1, 63, 76,204,205,
+ 66,180, 0, 0, 0, 9, 0, 1, 63,128, 0, 0, 58,131, 18,111, 0, 32, 0, 32, 0, 32, 0, 1, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 7, 0, 5,
+ 0, 5,255,255, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50,
+ 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0, 56,209,183, 23, 61,204,204,205, 0, 0, 0, 0, 0, 0, 0,250, 61,204,204,205, 61,204,204,205, 63,166,102,102,
+ 63,192, 0, 0, 65,240, 0, 0, 63,122,225, 72, 61,204,204,205, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 2, 67, 0, 3,
+ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 8, 8,193,156,208, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 6, 0, 0,
+ 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191,127, 10, 78, 61,177, 44, 36,191,127, 10, 78, 61,177, 43,213, 8,193,158, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,134,110,108, 0, 0, 1, 0, 1, 0, 0, 1,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 0, 0, 1,128, 7, 30,176,144, 0, 0, 0, 32, 0, 0, 0, 1,
- 0, 0, 0, 0, 13, 64,158,176, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 82,101,110,100,101,114, 32, 82,101,115,117,108,116, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 72, 8,193,158, 0, 0, 0, 1, 37, 0, 0, 0, 6, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 61,204,204,205,
+ 63,121,188, 86, 0, 0, 0, 0, 62,153,153,154, 63, 75, 60, 96, 0, 0, 0, 0, 63, 51, 51, 51, 62, 83, 14,128, 0, 0, 0, 0,
+ 63,102,102,102, 60,200,117, 79, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 72,
+ 8,193,158,112, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 97,121,101,
+114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,196,160, 0, 15,255,255,
+ 0, 0, 0, 0, 0, 0,127,255, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 73, 77, 0, 0, 1,128, 8,193,158,224,
+ 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 73,109, 97,103,101, 46,
+ 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 53, 0, 0, 0, 0, 85,110,116,105,
+116,108,101,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,134,110,108, 0, 0, 1, 0, 1, 0, 0, 1, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0, 0,132, 8,193,160,144, 0, 0, 0, 30, 0, 0, 0, 1, 8,193,161, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 62, 76,204,205, 66, 96,148,117, 63,128, 0, 0,
+ 66,112, 0, 0, 65,240, 0, 0, 64,192, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 67, 65, 0, 0, 0,132, 8,193,161, 64, 0, 0, 0, 30, 0, 0, 0, 1, 0, 0, 0, 0, 8,193,160,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 65,116,109,111, 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 62, 76,204,205, 66, 68,137,145, 63,128, 0, 0, 66,112, 69,210, 66, 12, 0, 0,
+ 64,234, 14,161, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128,
+ 8,193,161,240, 0, 0, 0, 40, 0, 0, 0, 1, 8,193,165, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,
+109,112, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 65,160, 0, 0, 66, 52, 0, 0, 62, 25,153,154, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 8,193,163,160, 0, 1, 0, 0, 63, 0, 0, 0, 66, 32, 0, 0, 66, 52, 0, 0, 63,128, 0, 0,
+ 64, 64, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0, 0, 2, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 65, 32, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,165, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,163,160, 0, 0, 1, 39, 0, 0, 0, 1,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,
+191, 53, 4,242, 63, 53, 4,243, 8,193,164,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 4,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 67, 65, 0, 0, 0,132, 13, 64,160, 96, 0, 0, 0, 30, 0, 0, 0, 1, 13, 64,161, 16, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 62, 76,204,205, 66, 96,148,117, 64,176, 0, 0, 66,112, 0, 0, 65,240, 0, 0,
- 64,192, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0, 0,132,
- 13, 64,161, 16, 0, 0, 0, 30, 0, 0, 0, 1, 0, 0, 0, 0, 13, 64,160, 96, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,
-109,101,114, 97, 65,116,109,111, 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 62, 76,204,205, 66, 68,137,145, 64,176, 39, 76, 66,112, 69,210, 66, 12, 0, 0, 64,234, 14,161, 63, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120, 13, 64,161,192, 0, 0, 0, 40,
- 0, 0, 0, 1, 13, 64,165, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 46, 48, 48, 49, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 65,160, 0, 0, 66, 52, 0, 0, 62, 25,153,154, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 13, 64,163, 96, 0, 1, 0, 0, 63, 0, 0, 0, 66, 32, 0, 0, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 2, 0, 0, 3,
- 0, 1, 0, 0, 0, 2, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 65, 32, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,164,208, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 8,193,165, 16,
+ 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128, 8,193,165, 96, 0, 0, 0, 40, 0, 0, 0, 1, 8,193,168,208,
+ 8,193,161,240, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 65,160, 0, 0, 66,143,152,182, 62, 25,153,154, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 8,193,167, 16, 0, 1, 0, 0,
+ 63, 0, 0, 0, 66, 32, 0, 0, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1,
+ 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,164,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 1, 8, 13, 64,163, 96, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,168,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 8, 8,193,167, 16, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 13, 64,164,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 8,193,168, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
- 13, 64,164,144, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 13, 64,164,208, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120,
- 13, 64,165, 32, 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,168,128, 13, 64,161,192, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,
-109,112, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 65,160, 0, 0, 66,143,152,182, 62, 25,153,154, 63,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 13, 64,166,192, 0, 1, 0, 0, 63, 0, 0, 0, 66, 32, 0, 0, 66, 52, 0, 0, 63,128, 0, 0,
- 64, 64, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 8,193,168, 64, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 8,193,168,128, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128,
+ 8,193,168,208, 0, 0, 0, 40, 0, 0, 0, 1, 8,193,171,240, 8,193,165, 96, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,
+111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 12,204,205, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 8,193,170,128, 0, 4, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0,
+ 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,168, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,166,192, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243,
- 13, 64,167,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,167,240, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 13, 64,168, 48, 0, 0, 0, 19, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 76, 65, 0, 0, 1,120, 13, 64,168,128, 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,171,144, 13, 64,165, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 12,204,205, 65,239,255,247, 66,150, 0, 0,
- 62, 25,153,154, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 13, 64,170, 32, 0, 4, 0, 0, 63,128, 26, 46, 65,240, 4, 25,
- 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,170, 32, 0, 0, 1, 32, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,170,128, 0, 0, 1, 39, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,
-191, 53, 4,242, 63, 53, 4,243, 13, 64,171, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 53, 4,242, 63, 53, 4,243, 8,193,171,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,171, 80, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120, 13, 64,171,144,
- 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,174,160, 13, 64,168,128, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,171,176, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128, 8,193,171,240,
+ 0, 0, 0, 40, 0, 0, 0, 1, 8,193,175, 16, 8,193,168,208, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 16, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,102,102,102, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 13, 64,173, 48, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0,
+ 63,128, 0, 0, 8,193,173,160, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0,
11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,173, 48, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1,
- 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 13, 64,174, 96,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,173,160, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242,
+ 63, 53, 4,243, 8,193,174,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 24, 13, 64,174, 96, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120, 13, 64,174,160, 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,177,176,
- 13, 64,171,144, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0, 63, 27,182,200, 63,128, 0, 0, 13, 64,176, 64, 0, 1, 0, 0,
- 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1,
- 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,174,208, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128, 8,193,175, 16, 0, 0, 0, 40,
+ 0, 0, 0, 1, 8,193,178, 48, 8,193,171,240, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 51, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0, 63, 27,182,200, 63,128, 0, 0,
+ 8,193,176,192, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,176, 64,
- 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
-191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 13, 64,177,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,176,192, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243,
+ 8,193,177,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,177,112, 0, 0, 1, 30,
- 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65,
- 0, 0, 1,120, 13, 64,177,176, 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,180,192, 13, 64,174,160, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 65, 83,112,111,116, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,204,204,205, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154,
- 63,128, 0, 0, 63, 27,182,200, 63,128, 0, 0, 13, 64,179, 80, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0,
- 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 8,193,177,240, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128, 8,193,178, 48, 0, 0, 0, 40, 0, 0, 0, 1,
+ 8,193,181, 80, 8,193,175, 16, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,204,204,205, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0, 63, 27,182,200, 63,128, 0, 0, 8,193,179,224,
+ 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,179, 80, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242,
- 63, 53, 4,243, 13, 64,180,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 8, 8,193,179,224, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1,
+ 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 8,193,181, 16,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,180,128, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120, 13, 64,180,192, 0, 0, 0, 40,
- 0, 0, 0, 1, 13, 64,183,208, 13, 64,177,176, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 53, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 83, 78, 80, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 13, 64,182, 96, 0, 4, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3,
- 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 8,193,181, 16, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128, 8,193,181, 80, 0, 0, 0, 40, 0, 0, 0, 1, 8,193,184,112,
+ 8,193,178, 48, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 83, 78, 80,
+ 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 8,193,183, 0, 0, 4, 0, 0,
+ 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1,
+ 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 1, 8, 13, 64,182, 96, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 1, 8, 8,193,183, 0, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 13, 64,183,144, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 8,193,184, 48, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
- 13, 64,183,144, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120, 13, 64,183,208, 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,186,224, 13, 64,180,192,
+ 8,193,184, 48, 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,128, 8,193,184,112, 0, 0, 0, 40, 0, 0, 0, 1, 8,193,187,144, 8,193,181, 80,
0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,179, 51, 51, 65,239,255,247,
- 66, 72, 0, 0, 63, 8,156,171, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 13, 64,185,112, 0, 4, 0, 0, 65, 68,207, 78,
+ 66, 72, 0, 0, 63, 8,156,171, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 8,193,186, 32, 0, 4, 0, 0, 65, 68,207, 78,
65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,185,112, 0, 0, 1, 32,
- 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243,
- 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 13, 64,186,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8,
+ 8,193,186, 32, 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 8,193,187, 80, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,186,160, 0, 0, 1, 30, 0, 0, 0, 2,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120,
- 13, 64,186,224, 0, 0, 0, 40, 0, 0, 0, 1, 13, 64,189,240, 13, 64,183,208, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,
-111,116, 46, 48, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 65,239,255,247, 66,150, 0, 0, 62, 25,153,154, 63,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 13, 64,188,128, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25, 66, 52, 0, 0, 63,128, 0, 0,
- 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,187, 80,
+ 0, 0, 1, 37, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 65, 0, 0, 1,128, 8,193,187,144, 0, 0, 0, 40, 0, 0, 0, 1, 8,193,190,176, 8,193,184,112, 0, 0, 0, 0,
+ 0, 0, 0, 0, 76, 65, 83,112,111,116, 46, 48, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 65,239,255,247, 66,150, 0, 0,
+ 62, 25,153,154, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 8,193,189, 64, 0, 1, 0, 0, 63,128, 26, 46, 65,240, 4, 25,
+ 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 11, 64, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,189, 64,
+ 0, 0, 1, 39, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 8,193,190,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 13, 64,188,128, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243,
- 13, 64,189,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,189,176, 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 1,120, 13, 64,189,240, 0, 0, 0, 40, 0, 0, 0, 1,
- 0, 0, 0, 0, 13, 64,186,224, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,192, 0, 0, 65,160, 0, 0, 66, 52, 0, 0, 62, 25,153,154, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 13, 64,191,144,
- 0, 1, 0, 0, 63, 0, 0, 0, 66, 32, 0, 0, 66, 52, 0, 0, 63,128, 0, 0, 64, 64, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0,
- 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,190,112, 0, 0, 1, 37,
+ 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65,
+ 0, 0, 1,128, 8,193,190,176, 0, 0, 0, 40, 0, 0, 0, 1, 0, 0, 0, 0, 8,193,187,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,192, 0, 0, 65,160, 0, 0, 66, 52, 0, 0, 62, 25,153,154,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 8,193,192, 96, 0, 1, 0, 0, 63, 0, 0, 0, 66, 32, 0, 0, 66, 52, 0, 0,
+ 63,128, 0, 0, 64, 64, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 58,131, 18,111, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8,
- 13, 64,191,144, 0, 0, 1, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0,191, 53, 4,243, 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 13, 64,192,192, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 8, 8,193,192, 96, 0, 0, 1, 39,
+ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 1, 67,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,191, 53, 4,243,
+ 63, 53, 4,242,191, 53, 4,242, 63, 53, 4,243, 8,193,193,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,192,192,
- 0, 0, 1, 30, 0, 0, 0, 2, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 87, 79, 0, 0, 1,100, 13, 64,193, 0, 0, 0, 0,116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 79, 47,141, 62,209, 19, 64, 63, 14, 23, 73, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 28,204,205, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,193,144, 0, 0, 1, 37, 0, 0, 0, 2,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0, 1,108,
+ 8,193,193,208, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,
+114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62, 79, 47,141, 62,209, 19, 64, 63, 14, 23, 73, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 28,204,205, 0, 0, 0, 0, 0, 1, 0, 32, 0,128, 0, 5,
+ 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
65, 32, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61, 76,204,205, 0, 0, 0, 5, 0, 0, 0, 0, 59,163,215, 10, 0, 0, 0, 0,
62,128, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,194,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32,
- 13, 64,194,144, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0, 0,120, 13, 64,194,224, 0, 0, 0, 28, 0, 0, 0, 1,
+ 0, 0, 0, 0, 8,193,195,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32,
+ 8,193,195,112, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0, 0,120, 8,193,195,192, 0, 0, 0, 28, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 84,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1,
- 13, 64,195,128, 13, 64,195,128, 13, 64,195,128, 13, 64,195,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7,159,150, 32,255,255,255,255, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
- 13, 64,195,128, 0, 0, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,195,192, 0, 0, 0, 0, 0, 0, 0, 0,
- 70, 82, 69, 69, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,195,192, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 71, 82,
- 0, 0, 0, 76, 13, 64,195,240, 0, 0, 0,232, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,196, 96, 8,193,196, 96, 8,193,196, 96, 8,193,196, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,160,164, 32,255,255,255,255, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
+ 8,193,196, 96, 0, 0, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 77,244, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 70, 82, 69, 69, 68, 65, 84, 65, 0, 0, 0, 4, 2, 77,244, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 71, 82,
+ 0, 0, 0, 76, 8,193,196,160, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
71, 82, 79,118,101,114,114,105,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,196,112, 13, 64,198,176, 0, 15,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 24, 13, 64,196,112, 0, 0, 0,231, 0, 0, 0, 1, 13, 64,196,176, 0, 0, 0, 0, 7,159,208, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,196,176, 0, 0, 0,231, 0, 0, 0, 1, 13, 64,196,240,
- 13, 64,196,112, 7,159,204, 32, 7,162,150, 32, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,196,240,
- 0, 0, 0,231, 0, 0, 0, 1, 13, 64,197, 48, 13, 64,196,176, 7,159,200, 32, 7,157,170, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,197, 48, 0, 0, 0,231, 0, 0, 0, 1, 13, 64,197,112, 13, 64,196,240, 7,159,196, 32,
- 7,157,174, 32, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,197,112, 0, 0, 0,231, 0, 0, 0, 1,
- 13, 64,197,176, 13, 64,197, 48, 7,159,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
- 13, 64,197,176, 0, 0, 0,231, 0, 0, 0, 1, 13, 64,197,240, 13, 64,197,112, 7,159,188, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,197,240, 0, 0, 0,231, 0, 0, 0, 1, 13, 64,198, 48, 13, 64,197,176,
- 7,159,232, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,198, 48, 0, 0, 0,231,
- 0, 0, 0, 1, 13, 64,198,112, 13, 64,197,240, 7,159,176, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 24, 13, 64,198,112, 0, 0, 0,231, 0, 0, 0, 1, 13, 64,198,176, 13, 64,198, 48, 7,159,184, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 13, 64,198,176, 0, 0, 0,231, 0, 0, 0, 1, 0, 0, 0, 0,
- 13, 64,198,112, 7,159,180, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,156, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,160, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97,
+ 0, 0, 0, 0, 8,193,197, 32, 8,193,199, 96, 0, 15,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 8,193,197, 32, 0, 0, 0,236, 0, 0, 0, 1, 8,193,197, 96, 0, 0, 0, 0, 3,161, 38, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,197, 96, 0, 0, 0,236, 0, 0, 0, 1, 8,193,197,160,
+ 8,193,197, 32, 3,161, 34, 32, 3,163,234, 32, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,197,160,
+ 0, 0, 0,236, 0, 0, 0, 1, 8,193,197,224, 8,193,197, 96, 3,161, 30, 32, 3,163,238, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 24, 8,193,197,224, 0, 0, 0,236, 0, 0, 0, 1, 8,193,198, 32, 8,193,197,160, 3,161, 26, 32,
+ 3,163,242, 32, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,198, 32, 0, 0, 0,236, 0, 0, 0, 1,
+ 8,193,198, 96, 8,193,197,224, 3,161, 22, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24,
+ 8,193,198, 96, 0, 0, 0,236, 0, 0, 0, 1, 8,193,198,160, 8,193,198, 32, 3,161, 18, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,198,160, 0, 0, 0,236, 0, 0, 0, 1, 8,193,198,224, 8,193,198, 96,
+ 3,161, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,198,224, 0, 0, 0,236,
+ 0, 0, 0, 1, 8,193,199, 32, 8,193,198,160, 3,161, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 24, 8,193,199, 32, 0, 0, 0,236, 0, 0, 0, 1, 8,193,199, 96, 8,193,198,224, 3,161, 14, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 24, 8,193,199, 96, 0, 0, 0,236, 0, 0, 0, 1, 0, 0, 0, 0,
+ 8,193,199, 32, 3,161, 10, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,170, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,160,174, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,160, 96, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,160,144, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,188, 41,199, 78,193, 30,230,225, 63,230,129,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1759,2794 +1796,3570 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 48,136, 90, 64, 0, 0, 0, 0, 0, 0, 0, 0,
168, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-176,136, 90, 64, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 8, 0,
- 0, 1, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, 63,128, 0, 0, 40, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,
+176,136, 90, 64, 63,128, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, 63,128, 0, 0, 0, 0, 8, 0,
+ 0, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,160, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,164, 32, 7,159,156, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 65,116,109,111, 0, 97,109,101,
-114, 97, 46, 48, 48, 49, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,161, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80,
+ 3,160,174, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,178, 32, 3,160,170, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,
+109,101,114, 97, 65,116,109,111, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-188, 41,199, 78,193, 30,230,225, 63,230,129,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,244, 47,173,
- 37,113,155,162, 37,170, 80, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 37,170, 80, 40,165,113,155,162,
- 0, 0, 0, 0, 37,170, 80, 39,190,169, 64,157, 63,113,155,163, 0, 0, 0, 0, 37,113,155,165,191,113,155,163,190,169, 64,157,
- 0, 0, 0, 0,188, 41,199, 78,193, 30,230,225, 63,230,129,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,161, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188, 41,199, 78,193, 30,230,225, 63,230,129,216, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,244, 47,173, 37,113,155,162, 37,170, 80, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 37,170, 80, 40,165,113,155,162, 0, 0, 0, 0, 37,170, 80, 39,190,169, 64,157, 63,113,155,163, 0, 0, 0, 0,
+ 37,113,155,165,191,113,155,163,190,169, 64,157, 0, 0, 0, 0,188, 41,199, 78,193, 30,230,225, 63,230,129,216, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,154, 0, 0, 1, 25,127,255,254,
- 0, 0, 0, 0, 37,171, 80, 41, 63,128, 0, 1, 51,128, 0, 1, 0, 0, 0, 0, 45,255,255,135,136,127,255,137, 63,128, 0, 0,
- 0, 0, 0, 0, 48,128, 0, 0, 53,128, 0, 1, 52,128, 0, 2, 63,128, 0, 0, 63,128, 0, 0, 37,170, 80, 39, 37,113,155,166,
- 0, 0, 0, 0,165,113,155,162, 63,113,155,164,190,169, 64,158, 0, 0, 0, 0,165,170, 80, 40, 62,169, 64,159, 63,113,155,162,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 13,223, 4, 0, 0, 0, 0, 0, 0, 0,
- 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 63,100, 41, 6, 63,128, 0, 0, 62,204,204,205, 63,100, 41, 6, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0,154, 30,205,143, 25, 88, 25,122, 0, 0, 0, 0, 37,171, 76,175, 63,128, 0, 1, 51,124,134,212, 0, 0, 0, 0,
+ 45,255,255,135, 50, 31,154, 19, 63,128, 0, 0, 0, 0, 0, 0, 48,128, 0, 0, 53,128, 0, 1, 52,128, 0, 2, 63,128, 0, 0,
+ 63,128, 0, 0, 37,170, 80, 39, 37,113,155,166,128, 0, 0, 0,165,113,155,162, 63,113,155,164,190,169, 64,158,128, 0, 0, 0,
+165,170, 80, 40, 62,169, 64,159, 63,113,155,162,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 13,223, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 63, 16,225,187, 63,128, 0, 0,
+ 62,204,204,205, 63, 80, 32,210, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 2, 0, 0, 0,
+ 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,
+ 0, 0, 3, 80, 3,160,178, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,182, 32, 3,160,174, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 49, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,164, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,168, 32, 7,159,160, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 49, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0,
- 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 77,243, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,119,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 75,234,112, 61,122, 36,113,192,186, 24,157, 64, 71, 38, 28, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 23, 97,112, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,115, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,198,240, 55,142, 84, 52,192,188, 12,194,
- 64, 71, 38, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,190, 36, 69,
- 64,190, 36, 69, 64,190, 36, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 63, 73, 15,218,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,134,115, 83, 64,134,115, 82, 0, 0, 0, 0, 0, 0, 0, 0,192,134,115, 82,
- 64,134,115, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,190, 36, 68, 0, 0, 0, 0, 55,142, 84, 52,
-192,188, 12,194, 64, 71, 38, 28, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 52, 85,230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160, 0, 0, 0, 0, 50, 26, 90, 29,
- 50, 26, 90, 31, 62, 44, 85,173, 0, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24, 0, 0, 0, 0,190,247,176,158,
-190,246,108,212,190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14, 4, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0,
- 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
- 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 61,122, 36,113,192,186, 24,157, 64, 71, 38, 28,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160,128, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173,
+128, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24,128, 0, 0, 0,190,247,176,158,190,246,108,212,190, 97,232, 64,
+ 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169,
+ 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 71,141, 96,
+ 2, 71,150, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 2, 75,234,112, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80,
+ 3,160,182, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,186, 32, 3,160,178, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,
+101, 99,107,101,114,115, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 29,237,208, 7, 29,244,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 76, 22,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,113,208,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 77,237,160, 61,122, 36,113,192,186, 24,157, 64, 71, 38, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 61,122, 36,113,192,186, 24,157, 64, 71, 38, 28, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 61,243,183,207,189,243,183,205, 37,162, 83,160,128, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173,128, 0, 0, 0,
+189,243,183,205,189,243,183,207, 50, 87,107, 24,128, 0, 0, 0,190,247,176,158,190,246,108,212,190, 97,232, 64, 63,128, 0, 0,
+ 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0,
+ 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1,
+ 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 71,127,224, 2, 71,134,160,
0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 4, 13, 64,198,240, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 4, 32, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,168, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,172, 32, 7,159,164, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,
-114,115, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 4, 2, 77,237,160, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,186, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,160,190, 32, 3,160,182, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,
+114,115, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7, 22,250,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,109,208, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,125,176, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,199, 32, 55,142, 84, 52,192,188, 12,194, 64, 71, 38, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,190, 36, 69, 64,190, 36, 69, 64,190, 36, 68, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 63, 73, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,134,115, 83,
- 64,134,115, 82, 0, 0, 0, 0, 0, 0, 0, 0,192,134,115, 82, 64,134,115, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64,190, 36, 68, 0, 0, 0, 0, 55,142, 84, 52,192,188, 12,194, 64, 71, 38, 28, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 2, 77,235, 16, 60,102,131, 0, 64,164,112, 14, 63,229,211, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,
+180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0, 60,102,131, 0, 64,164,112, 14, 63,229,211, 24, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 52, 85,230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,243,183,207,
-189,243,183,205, 37,162, 83,160, 0, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173, 0, 0, 0, 0,189,243,183,205,
-189,243,183,207, 50, 87,107, 24, 0, 0, 0, 0,190,247,176,158,190,246,108,212,190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14,
- 4, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+165,143,118,252, 0, 0, 0, 0, 0, 0, 0, 0,165,168,193,176, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,155, 40,193,176, 53, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231,
+ 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,
+189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 2, 77,235, 16, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,190, 32, 0, 0, 0,113,
+ 0, 0, 0, 1, 3,160,194, 32, 3,160,186, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48,
+ 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 70,134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,154,144, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 71, 42, 32,191,207, 84, 38,192,239,225, 0, 64, 70,169, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 0, 0, 0, 63,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,162, 33,105, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,128, 0, 0, 51,162, 33,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,191,207, 84, 38,192,239,225, 0, 64, 70,169, 15, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 51,162, 33,105,
+ 0, 0, 0, 0, 0, 0, 0, 0,176,136, 90, 64, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0, 52,128, 0, 0, 63,128, 0, 0, 61,243,183,207,189,243,183,205,
+ 37,162, 83,160,128, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173,128, 0, 0, 0,189,243,183,205,189,243,183,207,
+ 50, 87,107, 24,128, 0, 0, 0,190,247,176,158,190,246,108,212,190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1,
+ 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 71,114, 96, 2, 71,121, 32, 0, 0, 0, 25, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 2, 71, 42, 32,
+ 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,194, 32, 0, 0, 0,113, 0, 0, 0, 1,
+ 3,160,198, 32, 3,160,190, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 53, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 70,134,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,160,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 77, 39,144,
+191,207, 84, 38,192,239,225, 0, 64, 70,169, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 0, 0, 0, 63,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,162, 33,105, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,128, 0, 0, 51,162, 33,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,191,207, 84, 38,192,239,225, 0, 64, 70,169, 15, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 51,162, 33,105, 0, 0, 0, 0,
+ 0, 0, 0, 0,176,136, 90, 64, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0, 52,128, 0, 0, 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160,
+128, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173,128, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24,
+128, 0, 0, 0,190,247,176,158,190,246,108,212,190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68,
+ 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 74, 90,192, 2, 74, 99, 96, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 2, 77, 39,144, 0, 0, 0, 0,
+ 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,198, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,202, 32,
+ 3,160,194, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 54, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 76, 61,240,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,166,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 76,223,192, 63,223, 0, 93,
+192,239,220,205, 64, 70,170,222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
+191,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,162, 33,105,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 51,162, 33,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,223, 0, 93,192,239,220,205, 64, 70,170,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,179,162, 33,105,167, 34, 33,105, 0, 0, 0, 0,
+ 48,136, 90, 64, 63,128, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 52, 0, 0, 0,181, 0, 0, 0, 53, 0, 0, 0, 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160,128, 0, 0, 0,
+ 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173,128, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24,128, 0, 0, 0,
+190,247,176,158,190,246,108,212,190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2,
+ 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,
+201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7, 23, 89,240, 7, 22,192,224, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,199, 32, 0, 0, 0, 0, 0, 0, 0, 1,
- 7,160, 0, 32, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,172, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,176, 32, 7,159,168, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 74, 73,128, 2, 74, 82, 32, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 2, 76,223,192, 0, 0, 0, 0, 0, 0, 0, 1,
+ 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,202, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,206, 32, 3,160,198, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 28,254,192, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,120,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,199, 80, 60,102,131, 0, 64,164,112, 14,
- 63,229,211, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,
- 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151,
- 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0, 60,102,131, 0,
- 64,164,112, 14, 63,229,211, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 70,222,240, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,172, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 70,145,240, 63,223, 0, 93,192,239,220,205,
+ 64, 70,170,222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,191,201, 15,218,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,162, 33,105,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 51,162, 33,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,223, 0, 93,
+192,239,220,205, 64, 70,170,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 53, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240, 0, 0, 0, 0,164,217,209, 65,
- 49,255, 57, 51, 61,201,126,232, 0, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70, 0, 0, 0, 0,187, 29,136, 18,
-191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,179,162, 33,105,167, 34, 33,105, 0, 0, 0, 0, 48,136, 90, 64,
+ 63,128, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+181, 0, 0, 0, 53, 0, 0, 0, 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160,128, 0, 0, 0, 50, 26, 90, 29,
+ 50, 26, 90, 31, 62, 44, 85,173,128, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24,128, 0, 0, 0,190,247,176,158,
+190,246,108,212,190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0,
79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
- 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
+ 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 74, 60, 0, 2, 74, 66,192, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 2, 70,145,240, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32,
+ 0, 0, 79, 66, 0, 0, 3, 80, 3,160,206, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,210, 32, 3,160,202, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 76, 1,240, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,178, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 77,218, 48, 61,122,115,185,193, 18,209, 28, 64, 71, 38, 27,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,192, 73, 15,218, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,128, 0, 0,180, 34, 33,105, 0, 0, 0, 0, 0, 0, 0, 0, 52, 34, 33,105,191,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 61,122,115,185,193, 18,209, 28,
+ 64, 71, 38, 27, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,167,128, 0, 0, 0, 0, 0, 0, 47, 5,164, 0, 63,128, 0, 0,
+151, 5,164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 49,128, 0, 0, 0, 0, 0, 0,
+153,128, 0, 0, 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160,128, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31,
+ 62, 44, 85,173,128, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24,128, 0, 0, 0,190,247,176,158,190,246,108,212,
+190, 97,232, 64, 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0,
+ 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 76, 7, 0, 2, 74, 53, 64, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 2, 77,218, 48, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66,
+ 0, 0, 3, 80, 3,160,210, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,214, 32, 3,160,206, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 76, 31, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,184, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,199,160, 61,122,115,185,193, 18,209, 28, 64, 71, 38, 27, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,192, 73, 15,218, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,128, 0, 0,180, 34, 33,105, 0, 0, 0, 0, 0, 0, 0, 0, 52, 34, 33,105,191,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 61,122,115,185,193, 18,209, 28, 64, 71, 38, 27,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,167,128, 0, 0, 0, 0, 0, 0, 47, 5,164, 0, 63,128, 0, 0,151, 5,164, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 49,128, 0, 0, 0, 0, 0, 0,153,128, 0, 0,
+ 63,128, 0, 0, 61,243,183,207,189,243,183,205, 37,162, 83,160,128, 0, 0, 0, 50, 26, 90, 29, 50, 26, 90, 31, 62, 44, 85,173,
+128, 0, 0, 0,189,243,183,205,189,243,183,207, 50, 87,107, 24,128, 0, 0, 0,190,247,176,158,190,246,108,212,190, 97,232, 64,
+ 63,128, 0, 0, 0, 0, 4, 14, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169,
+ 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 27,180,176, 7, 22, 19,240,
- 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 4, 13, 64,199, 80, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 4, 32, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,176, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,180, 32, 7,159,172, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 75,226, 80,
+ 2, 75,250,128, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,193,199,160, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80,
+ 3,160,214, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,218, 32, 3,160,210, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,
+101, 99,107,101,114,115, 46, 48, 49, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,190, 48,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,168,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,199,208,193,129,252,227, 64,164,112, 14, 63,229,197, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,193,129,252,227, 64,164,112, 14, 63,229,197, 9, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0,178,216, 66, 17, 0, 0, 0, 0, 0, 0, 0, 0,165,168,193,176, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 27, 40,193,176,181, 0, 0, 0, 52, 0, 0, 0, 63,128, 0, 0,
+ 61,201,126,231, 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0,
+ 48,172, 66,235,189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0,
+ 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0,
+ 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1,
+ 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 65,110, 57, 42, 64, 11,114,237, 64,121, 99,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136,
- 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,
-191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0, 65,110, 57, 42, 64, 11,114,237, 64,121, 99,120, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 4, 8,193,199,208, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,218, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,160,222, 32, 3,160,214, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,
+114,115, 46, 48, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,200,224, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,200, 0,193,129,252,227, 64,164,112, 14, 63,229,197, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,
+180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,193,129,252,227, 64,164,112, 14, 63,229,197, 9, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
-179, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 51,128, 0, 0, 63,128, 0, 0,178,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 41, 64, 0, 0, 53, 64, 0, 0,181, 64, 0, 0, 63,128, 0, 0, 62,255,247,138,
-191, 44, 21,164, 63, 11,203,251, 0, 0, 0, 0, 62,182, 26,141, 63, 59,248,176, 63, 20, 7, 45, 0, 0, 0, 0,191, 74, 39, 37,
-189,194, 67, 9, 63, 27, 45,217, 0, 0, 0, 0,193,142, 14,147, 64,234,125, 35,192, 0,119, 85, 63,128, 0, 0, 0, 0, 4, 28,
- 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+178,216, 66, 17, 0, 0, 0, 0, 0, 0, 0, 0,165,168,193,176, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 27, 40,193,176,181, 0, 0, 0, 52, 0, 0, 0, 63,128, 0, 0, 61,201,126,231,
+ 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,
+189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,193,200, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,222, 32, 0, 0, 0,113,
+ 0, 0, 0, 1, 3,160,226, 32, 3,160,218, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48,
+ 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,180, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,184, 32, 7,159,176, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,211,144, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,200, 48, 65,130, 56, 8, 64,164,112, 14, 63,229,197, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151,
+ 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 34,159,177, 0, 0, 0, 0, 65,130, 56, 8, 64,164,112, 14, 63,229,197, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,178,216, 66, 15,
+ 0, 0, 0, 0, 0, 0, 0, 0, 38,112,222,138, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 28,112,222,138, 53,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219,
+ 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231,
+ 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1,
+ 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,171,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-191,210, 76, 84,193, 71,162,178, 64,178,186,210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,
-190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138,
- 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47,
- 0, 0, 0, 0,191,210, 76, 84,193, 71,162,178, 64,178,186,210, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,200, 48,
+ 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,226, 32, 0, 0, 0,113, 0, 0, 0, 1,
+ 3,160,230, 32, 3,160,222, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 49, 51, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,222, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,200, 96,
+ 65,130, 56, 8, 64,164,112, 14, 63,229,197, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177,
+ 0, 0, 0, 0, 65,130, 56, 8, 64,164,112, 14, 63,229,197, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 52,191,255,250,179,191,255,250,
- 0, 0, 0, 0,178,255,255,248, 63,127,255,248, 51,255,255,248, 0, 0, 0, 0, 38,255,255,248,179,127,255,248, 63,128, 0, 0,
- 0, 0, 0, 0,180,255,255,250,182,191,255,250, 53,127,255,244, 63,128, 0, 0, 62,255,247,136,191, 44, 21,164, 63, 11,203,251,
- 0, 0, 0, 0, 62,182, 26,139, 63, 59,248,173, 63, 20, 7, 44, 0, 0, 0, 0,191, 74, 39, 36,189,194, 67, 17, 63, 27, 45,217,
- 0, 0, 0, 0, 63,189,129,191,192,104,159,176,192, 53,194,132, 63,128, 0, 0, 0, 0, 4, 28, 16, 0, 0, 0, 0, 0, 0, 68,
- 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,178,216, 66, 15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 38,112,222,138, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 28,112,222,138, 53,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,
+128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,
+128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68,
+ 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,200, 96, 0, 0, 0, 0,
+ 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,230, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,234, 32,
+ 3,160,226, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 49, 52, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,232,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,200,144, 66, 2, 38,176,
+ 64,164,112, 14, 63,229,149, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
+178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0,
+ 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,
+ 66, 2, 38,176, 64,164,112, 14, 63,229,149, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,177,214,137,120,177,162,159,176, 0, 0, 0, 0,
+ 38,112,222,138, 63,128, 0, 0, 37, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 54,127,255,254, 52,255,255,255, 52,127,255,255, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,128, 0, 0, 0,
+164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,128, 0, 0, 0,
+187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2,
+ 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,
+201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,184, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,188, 32, 7,159,180, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,200,144, 0, 0, 0, 0, 0, 0, 0, 1,
+ 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,234, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,238, 32, 3,160,230, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 49, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,183,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 16,188,238,193, 57,119,229,
- 65,141,218, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 15, 79,202,191, 12,100,179, 63,234, 92,112,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 96,197,171, 63, 83, 27,149, 63, 5,118, 10, 0, 0, 0, 0,191, 99,218,142,
- 61, 75, 4,109,190,232, 3,179, 0, 0, 0, 0,190,204,142,233,191, 16, 64,104, 63, 57, 28,174, 0, 0, 0, 0,193, 16,188,238,
-193, 57,119,229, 65,141,218, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,243,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,200,192, 66, 2, 38,176, 64,164,112, 14,
+ 63,229,149, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,
+ 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151,
+ 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0, 66, 2, 38,176,
+ 64,164,112, 14, 63,229,149, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,178,127,255,254, 52, 32, 0, 0, 0, 0, 0, 0,178,128, 0, 0,
- 63,128, 0, 0, 51,192, 0, 2, 0, 0, 0, 0,179, 0, 0, 0, 38, 0, 0, 0, 63,128, 0, 1, 0, 0, 0, 0,181,127,255,255,
-182, 0, 0, 0, 54, 0, 0, 0, 63,128, 0, 0,190, 96,197,175,191, 99,218,143,190,204,142,235, 0, 0, 0, 0, 63, 5,118, 11,
-190,232, 3,179, 63, 57, 28,172, 0, 0, 0, 0,191, 83, 27,150,189, 75, 4,119, 63, 16, 64,105, 0, 0, 0, 0,193, 14,181,128,
-191, 61,177,214,193,128,133, 29, 63,128, 0, 0, 0, 0, 4, 28, 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,177,214,137,120,177,162,159,176, 0, 0, 0, 0, 38,112,222,138,
+ 63,128, 0, 0, 37, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 54,127,255,254,
+ 52,255,255,255, 52,127,255,255, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65,
+ 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,
+191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0,
79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
- 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
- 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,200,192, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32,
+ 0, 0, 79, 66, 0, 0, 3, 80, 3,160,238, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,242, 32, 3,160,234, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 49, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,
- 0, 0, 3, 68, 7,159,188, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,192, 32, 7,159,184, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 66, 76, 97,109,112, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,254, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,200,240,194, 2, 10,237, 64,164,112, 14, 63,229,147,184,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178,
+ 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,194, 2, 10,237, 64,164,112, 14,
+ 63,229,147,184, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254, 51, 7,206,130, 0, 0, 0, 0, 0, 0, 0, 0, 38,112,222,138, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 28,112,222,138, 53,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51,
+ 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203,
+ 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0,
+ 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 64,174,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,104,147,176,193, 23, 84, 42, 64,171, 77,116, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176,
- 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0, 64,104,147,176,193, 23, 84, 42, 64,171, 77,116,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,200,240, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66,
+ 0, 0, 3, 80, 3,160,242, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,246, 32, 3,160,238, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 49, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,201, 32,194, 2, 10,237, 64,164,112, 14, 63,229,147,184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0, 0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,194, 2, 10,237, 64,164,112, 14, 63,229,147,184,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0,180, 31,255,255,167,159,255,254, 0, 0, 0, 0, 50,255,255,254, 63,127,255,254, 50,255,255,252,
- 0, 0, 0, 0,178,255,255,254, 39,159,255,254, 63,127,255,254, 0, 0, 0, 0, 52,127,255,253,181,127,255,254, 52,255,255,253,
- 63,128, 0, 0, 62,255,247,137,191, 44, 21,165, 63, 11,203,251, 0, 0, 0, 0, 62,182, 26,141, 63, 59,248,176, 63, 20, 7, 46,
- 0, 0, 0, 0,191, 74, 39, 37,189,194, 67, 20, 63, 27, 45,217, 0, 0, 0, 0,192, 93, 99, 91,190, 80, 98,136,192,112,119,223,
- 63,128, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10,
- 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,127,255,254, 51, 7,206,130, 0, 0, 0, 0, 0, 0, 0, 0, 38,112,222,138, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 28,112,222,138, 53,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,
+128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180,
+ 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169,
+ 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,192, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,196, 32, 7,159,188, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48,
- 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,193,201, 32, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80,
+ 3,160,246, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,160,250, 32, 3,160,242, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,
+101, 99,107,101,114,115, 46, 48, 49, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 19,176,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,177,176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,201, 80,194, 34,134, 13,192, 63, 92, 58, 63,229,147,184, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 63,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 77,252,144, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0,193, 34,159,178, 53, 77,252,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,194, 34,134, 13,192, 63, 92, 58, 63,229,147,184, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 49,154,187, 34, 23,196,149,225, 0, 0, 0, 0, 39,194, 58, 16, 63,128, 0, 0, 37,162,159,177, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 61,201,126,231, 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0,
+ 48,172, 66,235,189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0,
+ 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0,
+ 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1,
+ 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,192,251,147,249,193, 24, 0,206,192,104,131, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136,
- 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,
-191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0,192,251,147,249,193, 24, 0,206,192,104,131, 67, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 4, 8,193,201, 80, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,250, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,160,254, 32, 3,160,246, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,
+114,115, 46, 48, 49, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 30, 96, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,201,128,194, 34,134, 13,192, 63, 92, 58, 63,229,147,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 63,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 77,252,144,
+ 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0,193, 34,159,178, 53, 77,252,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,177, 0, 0, 0, 0,194, 34,134, 13,192, 63, 92, 58, 63,229,147,184, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,
- 50,255,255,254,166,127,255,254, 0, 0, 0, 0, 38,127,255,254, 63,128, 0, 0,179, 0, 0, 0, 0, 0, 0, 0,178,255,255,254,
- 51, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,181,127,255,254,181,128, 0, 0, 41, 0, 0, 0, 63,128, 0, 0, 62,255,247,137,
-191, 44, 21,165, 63, 11,203,251, 0, 0, 0, 0, 62,182, 26,139, 63, 59,248,176, 63, 20, 7, 45, 0, 0, 0, 0,191, 74, 39, 36,
-189,194, 67, 19, 63, 27, 45,217, 0, 0, 0, 0, 64,176,142,147,191,170, 22, 97, 64,246, 28, 27, 63,128, 0, 0, 0, 0, 0, 1,
- 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 49,154,187, 34, 23,196,149,225, 0, 0, 0, 0, 39,194, 58, 16, 63,128, 0, 0, 37,162,159,177, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231,
+ 48,171,145,219, 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,
+189,201,126,231, 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 1, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,193,201,128, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,160,254, 32, 0, 0, 0,113,
+ 0, 0, 0, 1, 3,161, 2, 32, 3,160,250, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48,
+ 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 41, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,201,176, 66, 34,160,176,192, 63, 67, 28, 63,229,149, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,128, 0, 0, 0,191,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 77,252,144,193, 34,159,178,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178, 53, 77,252,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 34,159,177, 0, 0, 0, 0, 66, 34,160,176,192, 63, 67, 28, 63,229,149, 45, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,177,154,187, 34,
+ 0, 0, 0, 0, 0, 0, 0, 0,167,194, 58, 16, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,156,194, 58, 16, 52,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219,
+ 30,247,120,240,128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231,
+ 49,251,201, 70,128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1,
+ 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,201,176,
+ 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 2, 32, 0, 0, 0,113, 0, 0, 0, 1,
+ 3,161, 6, 32, 3,160,254, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 46, 48, 50, 49, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 51,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,201,224,
+ 66, 34,160,176,192, 63, 67, 28, 63,229,149, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+128, 0, 0, 0,191,201, 15,218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 77,252,144,193, 34,159,178, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 34,159,178, 53, 77,252,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177,
+ 0, 0, 0, 0, 66, 34,160,176,192, 63, 67, 28, 63,229,149, 45, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,177,154,187, 34, 0, 0, 0, 0,
+ 0, 0, 0, 0,167,194, 58, 16, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,156,194, 58, 16, 52,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,
+128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,
+128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68,
+ 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,201,224, 0, 0, 0, 0,
+ 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 6, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 10, 32,
+ 3,161, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,168,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110, 57, 42,
+ 64, 11,114,237, 64,121, 99,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254,
+ 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,
+191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0,
+ 65,110, 57, 42, 64, 11,114,237, 64,121, 99,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,179, 43,249, 60, 51, 37,175,234, 0, 0, 0, 0,
+ 51, 84, 6,193, 63,128, 0, 0, 50, 73,103, 94, 0, 0, 0, 0, 51, 49,123,229, 49,185, 95,236, 63,128, 0, 0, 0, 0, 0, 0,
+169, 5, 28,236,167,139, 7,241,181, 64, 0, 0, 63,128, 0, 0, 62,255,247,138,191, 44, 21,164, 63, 11,203,251,128, 0, 0, 0,
+ 62,182, 26,141, 63, 59,248,176, 63, 20, 7, 45,128, 0, 0, 0,191, 74, 39, 37,189,194, 67, 9, 63, 27, 45,217,128, 0, 0, 0,
+193,142, 14,147, 64,234,125, 35,192, 0,119, 85, 63,128, 0, 0, 0, 0, 4, 28, 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1,
+ 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,
+201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,196, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,200, 32, 7,159,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 53, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 10, 32, 0, 0, 0,113, 0, 0, 0, 1,
+ 3,161, 14, 32, 3,161, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,180,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,171,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 65, 54, 41,142,191,115,124, 24,192, 58,215,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191,210, 76, 84,193, 71,162,178, 64,178,186,210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,
190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138,
0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47,
- 0, 0, 0, 0, 65, 54, 41,142,191,115,124, 24,192, 58,215,162, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,210, 76, 84,193, 71,162,178, 64,178,186,210, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,
- 0, 0, 0, 0, 51,128, 0, 0, 63,128, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 53,128, 0, 0, 0, 0, 0, 0,181, 64, 0, 0, 63,128, 0, 0, 62,255,247,136,191, 44, 21,164, 63, 11,203,251,
- 0, 0, 0, 0, 62,182, 26,139, 63, 59,248,175, 63, 20, 7, 46, 0, 0, 0, 0,191, 74, 39, 36,189,194, 67, 25, 63, 27, 45,217,
- 0, 0, 0, 0,193, 49,192,139, 65, 36, 99, 40, 63,249,156, 89, 63,128, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 68,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1, 52,184, 23,192,179,213, 54,101,
+ 0, 0, 0, 0,178,225,250,166, 63,127,255,248, 52, 5,159,109, 0, 0, 0, 0, 50,117, 31,137,179,130, 0,234, 63,128, 0, 1,
+ 0, 0, 0, 0,180,255,255,253,182,191,255,250, 53,127,255,245, 63,128, 0, 0, 62,255,247,136,191, 44, 21,164, 63, 11,203,251,
+128, 0, 0, 0, 62,182, 26,139, 63, 59,248,173, 63, 20, 7, 44,128, 0, 0, 0,191, 74, 39, 36,189,194, 67, 17, 63, 27, 45,217,
+128, 0, 0, 0, 63,189,129,191,192,104,159,176,192, 53,194,132, 63,128, 0, 0, 0, 0, 4, 28, 20, 0, 0, 0, 0, 0, 0, 68,
0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 14, 32, 0, 0, 0,113,
+ 0, 0, 0, 1, 3,161, 18, 32, 3,161, 10, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 50, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,200, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,204, 32, 7,159,196, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,184,112, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,183,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 19,239,220,193, 54,239,215,
- 65, 60, 9, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,103,251, 67,191, 24, 27,164, 64, 3,136, 37,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,197,143, 31, 63, 59,184,209, 63, 15, 80,138, 0, 0, 0, 0,191, 64, 66, 57,
- 61,210,119,132,191, 38,249,118, 0, 0, 0, 0,191, 9, 43, 37,191, 44, 15, 35, 63, 2,212,114, 0, 0, 0, 0,193, 19,239,220,
-193, 54,239,215, 65, 60, 9, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,180, 0, 0, 1, 52, 32, 0, 1, 0, 0, 0, 0, 38,128, 0, 1,
- 63,128, 0, 0,179, 0, 0, 1, 0, 0, 0, 0,179, 0, 0, 1,179,128, 0, 0, 63,128, 0, 1, 0, 0, 0, 0, 53,128, 0, 0,
-170, 0, 0, 1, 42, 32, 0, 1, 63,128, 0, 0,190,197,143, 31,191, 64, 66, 56,191, 9, 43, 35, 0, 0, 0, 0, 63, 15, 80,139,
-191, 38,249,117, 63, 2,212,112, 0, 0, 0, 0,191, 59,184,208,189,210,119,142, 63, 44, 15, 35, 0, 0, 0, 0,193, 0,135,195,
-190,148,252,127,193, 48,180, 8, 63,128, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0,
- 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
- 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
- 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,193, 16,188,238,193, 57,119,229, 65,141,218, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 15, 79,202,191, 12,100,179, 63,234, 92,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 96,197,171, 63, 83, 27,149,
+ 63, 5,118, 10, 0, 0, 0, 0,191, 99,218,142, 61, 75, 4,109,190,232, 3,179, 0, 0, 0, 0,190,204,142,233,191, 16, 64,104,
+ 63, 57, 28,174, 0, 0, 0, 0,193, 16,188,238,193, 57,119,229, 65,141,218, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,178,181,144,174,
+ 52, 21, 37,184, 0, 0, 0, 0,178,176,221,147, 63,128, 0, 0, 51,252, 33,177, 0, 0, 0, 0,179, 70,191,185, 49,245, 47, 3,
+ 63,128, 0, 1, 0, 0, 0, 0,181,127,255,255,182, 0, 0, 0, 53,255,255,255, 63,128, 0, 0,190, 96,197,175,191, 99,218,143,
+190,204,142,235,128, 0, 0, 0, 63, 5,118, 11,190,232, 3,179, 63, 57, 28,172,128, 0, 0, 0,191, 83, 27,150,189, 75, 4,119,
+ 63, 16, 64,105,128, 0, 0, 0,193, 14,181,128,191, 61,177,214,193,128,133, 29, 63,128, 0, 0, 0, 0, 4, 28, 20, 0, 0, 0,
+ 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 18, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,161, 22, 32, 3,161, 14, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48,
+ 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,175, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64,104,147,176,193, 23, 84, 42, 64,171, 77,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136,
+ 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,
+191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0, 64,104,147,176,193, 23, 84, 42, 64,171, 77,116, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+180, 17,201,197, 50,102,220, 99, 0, 0, 0, 0, 50,191,165,123, 63,127,255,254, 50,140,194, 10, 0, 0, 0, 0,178,180,160, 41,
+ 50, 73,103, 91, 63,127,255,254, 0, 0, 0, 0, 52,127,255,254,181,127,255,254, 52,255,255,253, 63,128, 0, 0, 62,255,247,137,
+191, 44, 21,165, 63, 11,203,251,128, 0, 0, 0, 62,182, 26,141, 63, 59,248,176, 63, 20, 7, 46,128, 0, 0, 0,191, 74, 39, 37,
+189,194, 67, 20, 63, 27, 45,217,128, 0, 0, 0,192, 93, 99, 91,190, 80, 98,136,192,112,119,223, 63,128, 0, 0, 0, 0, 0, 1,
+ 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80,
+ 3,161, 22, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 26, 32, 3,161, 18, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,
+109,112, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,178, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,251,147,249,193, 24, 0,206,192,104,131, 67, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0,
+ 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0,192,251,147,249,193, 24, 0,206,192,104,131, 67, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,127,255,254, 50,222,105, 55, 51, 17,168,186, 0, 0, 0, 0,178, 47,228,243, 63,128, 0, 0,178,155, 76, 81, 0, 0, 0, 0,
+ 50, 22,191,170, 51, 50, 89,214, 63,127,255,254, 0, 0, 0, 0,181,127,255,254,181,128, 0, 0,168,136, 5, 35, 63,128, 0, 0,
+ 62,255,247,137,191, 44, 21,165, 63, 11,203,251,128, 0, 0, 0, 62,182, 26,139, 63, 59,248,176, 63, 20, 7, 45,128, 0, 0, 0,
+191, 74, 39, 36,189,194, 67, 19, 63, 27, 45,217,128, 0, 0, 0, 64,176,142,147,191,170, 22, 97, 64,246, 28, 27, 63,128, 0, 0,
+ 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0,
+ 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0,
+ 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,
- 0, 0, 3, 68, 7,159,204, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,208, 32, 7,159,200, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 66, 76, 97,109,112, 46, 48, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
+ 0, 0, 3, 80, 3,161, 26, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 30, 32, 3,161, 22, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 66, 76, 97,109,112, 46, 48, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 64,186,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,164, 99,104,193, 51,244,239, 64, 19,110,188, 0, 0, 0, 0,
+ 8,193,181, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 54, 41,142,191,115,124, 24,192, 58,215,162, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164, 61,194, 67, 28, 63, 59,248,176,
- 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0,192,164, 99,104,193, 51,244,239, 64, 19,110,188,
+ 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0, 65, 54, 41,142,191,115,124, 24,192, 58,215,162,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0,178,255,255,254, 51,128, 0, 1, 0, 0, 0, 0,167, 64, 0, 2, 63,128, 0, 0, 51, 0, 0, 1,
- 0, 0, 0, 0,179,192, 0, 2, 51,128, 0, 1, 63,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,255,247,137,191, 44, 21,165, 63, 11,203,251, 0, 0, 0, 0, 62,182, 26,139, 63, 59,248,178, 63, 20, 7, 45,
- 0, 0, 0, 0,191, 74, 39, 36,189,194, 67, 18, 63, 27, 45,217, 0, 0, 0, 0, 64, 91, 24, 96,192,108, 50,226, 63,219, 9,101,
+ 63,128, 0, 0, 63,128, 0, 0,178, 47,228,244, 51, 37,175,235, 0, 0, 0, 0, 51, 84, 6,195, 63,128, 0, 0, 50, 73,103, 94,
+ 0, 0, 0, 0, 51, 49,123,230, 49,185, 95,239, 63,128, 0, 0, 0, 0, 0, 0, 53,127,255,255, 51,127,255,252,181, 63,255,255,
+ 63,128, 0, 0, 62,255,247,136,191, 44, 21,164, 63, 11,203,251,128, 0, 0, 0, 62,182, 26,139, 63, 59,248,175, 63, 20, 7, 46,
+128, 0, 0, 0,191, 74, 39, 36,189,194, 67, 25, 63, 27, 45,217,128, 0, 0, 0,193, 49,192,139, 65, 36, 99, 40, 63,249,156, 89,
63,128, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10,
- 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169,
+ 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,208, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,212, 32, 7,159,204, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48,
- 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
+ 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,189,240, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 30, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 34, 32, 3,161, 26, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,188, 75,145,193,107,197, 44, 64, 81,147, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,201, 15,218, 37,128, 0, 0, 37,127,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 37,127,255,255,165,128, 0, 0, 0, 0, 0, 0, 37,127,255,255, 51,162, 33,105, 63,128, 0, 0, 0, 0, 0, 0, 37,128, 0, 0,
-191,128, 0, 0, 51,162, 33,105, 0, 0, 0, 0, 63,188, 75,145,193,107,197, 44, 64, 81,147, 5, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,184,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 19,239,220,193, 54,239,215, 65, 60, 9, 42,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,103,251, 67,191, 24, 27,164, 64, 3,136, 37, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,190,197,143, 31, 63, 59,184,209, 63, 15, 80,138, 0, 0, 0, 0,191, 64, 66, 57, 61,210,119,132,
+191, 38,249,118, 0, 0, 0, 0,191, 9, 43, 37,191, 44, 15, 35, 63, 2,212,114, 0, 0, 0, 0,193, 19,239,220,193, 54,239,215,
+ 65, 60, 9, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254,
- 53,107,197, 44,180, 81,147, 4, 0, 0, 0, 0, 37,127,255,253, 63,128, 0, 0, 48,136, 90, 64, 0, 0, 0, 0,165,127,255,254,
-155,107,197, 44, 63,128, 0, 0, 0, 0, 0, 0, 51,255,255,254,181,255,255,255, 52,127,255,254, 63,128, 0, 0, 63,128, 0, 0,
-178, 23, 25, 45,179, 75,199,107, 0, 0, 0, 0,165,128, 0, 1, 63,128, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,177,108,127, 0,
- 50, 29, 9,206, 63,128, 0, 0, 0, 0, 0, 0,191,189,159, 32,191,188,164, 47,192,153,188,150, 63,128, 0, 0, 0, 0, 0, 32,
- 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,179,254, 23,172, 52, 71,224,218, 0, 0, 0, 0,178, 16, 68, 59, 63,128, 0, 0,
+179, 18, 70,107, 0, 0, 0, 0,178,240,247,161,179,181, 50, 89, 63,128, 0, 1, 0, 0, 0, 0, 53,128, 0, 0,169,254, 23,172,
+ 42, 71,224,218, 63,128, 0, 0,190,197,143, 31,191, 64, 66, 56,191, 9, 43, 35,128, 0, 0, 0, 63, 15, 80,139,191, 38,249,117,
+ 63, 2,212,112,128, 0, 0, 0,191, 59,184,208,189,210,119,142, 63, 44, 15, 35,128, 0, 0, 0,193, 0,135,195,190,148,252,127,
+193, 48,180, 8, 63,128, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0,
+ 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 34, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 38, 32, 3,161, 30, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,187,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,164, 99,104,193, 51,244,239,
+ 64, 19,110,188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,103, 90, 85,190,186, 45,254, 63,128,209,115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,255,247,136, 63, 74, 39, 37, 62,182, 26,138, 0, 0, 0, 0,191, 44, 21,164,
+ 61,194, 67, 28, 63, 59,248,176, 0, 0, 0, 0, 63, 11,203,251,191, 27, 45,217, 63, 20, 7, 47, 0, 0, 0, 0,192,164, 99,104,
+193, 51,244,239, 64, 19,110,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,178,142, 78, 41, 51,156,219,142, 0, 0, 0, 0,178, 47,228,245,
+ 63,128, 0, 0, 50, 73,103, 93, 0, 0, 0, 0,179, 90, 80, 22, 51,153, 44,237, 63,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,255,247,137,191, 44, 21,165, 63, 11,203,251,128, 0, 0, 0, 62,182, 26,139,
+ 63, 59,248,178, 63, 20, 7, 45,128, 0, 0, 0,191, 74, 39, 36,189,194, 67, 18, 63, 27, 45,217,128, 0, 0, 0, 64, 91, 24, 96,
+192,108, 50,226, 63,219, 9,101, 63,128, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0,
+ 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
+ 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 38, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 42, 32,
+ 3,161, 34, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 46, 48, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,190,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,188, 75,145,
+193,107,197, 44, 64, 81,147, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,201, 15,218, 37,128, 0, 0,
+ 37,127,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 37,127,255,255,165,128, 0, 0, 0, 0, 0, 0,
+ 37,127,255,255, 51,162, 33,105, 63,128, 0, 0, 0, 0, 0, 0, 37,128, 0, 0,191,128, 0, 0, 51,162, 33,105, 0, 0, 0, 0,
+ 63,188, 75,145,193,107,197, 44, 64, 81,147, 5, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,127,255,254, 53,107,197, 44,180, 81,147, 4, 0, 0, 0, 0,
+ 37,127,255,253, 63,128, 0, 0, 48,136, 90, 64, 0, 0, 0, 0,165,127,255,254,155,107,197, 44, 63,128, 0, 0, 0, 0, 0, 0,
+ 51,255,255,254,181,255,255,255, 52,127,255,254, 63,128, 0, 0, 63,128, 0, 0,178, 23, 25, 45,179, 75,199,107,128, 0, 0, 0,
+165,128, 0, 1, 63,128, 0, 0, 40, 0, 0, 0,128, 0, 0, 0,177,108,127, 0, 50, 29, 9,206, 63,128, 0, 0,128, 0, 0, 0,
+191,189,159, 32,191,188,164, 47,192,153,188,150, 63,128, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1,
+ 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,
+201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,212, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,216, 32, 7,159,208, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 0, 0,108, 97,110,101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 42, 32, 0, 0, 0,113, 0, 0, 0, 1,
+ 3,161, 46, 32, 3,161, 38, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 99,104,101, 99,107,101,114,115, 0, 0,108, 97,110,101,
46, 48, 48, 51, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7, 28,231, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,131, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,199,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,136, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,202, 16,
60,102,131, 0, 64,164,112, 14, 63,229,211, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 65, 34,159,178, 65, 34,159,178, 65, 34,159,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
128, 0, 0, 0,178, 89,250,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,178,180, 10,120,151, 0, 0, 0, 0,
0, 0, 0, 0, 52, 10,120,151, 65, 34,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 34,159,177,
0, 0, 0, 0, 60,102,131, 0, 64,164,112, 14, 63,229,211, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,
- 0, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232, 0, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,
- 0, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,165,143,118,252, 0, 0, 0, 0,
+ 0, 0, 0, 0,165,168,193,176, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,155, 40,193,176, 53, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,201,126,231, 48,171,145,219, 30,247,120,240,
+128, 0, 0, 0,164,217,209, 65, 49,255, 57, 51, 61,201,126,232,128, 0, 0, 0, 48,172, 66,235,189,201,126,231, 49,251,201, 70,
+128, 0, 0, 0,187, 29,136, 18,191,189,200,203, 58, 9,139,180, 63,128, 0, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 68,
0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,202, 16, 0, 0, 0, 0,
+ 0, 0, 0, 1, 3,161, 86, 32, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 46, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 50, 32,
+ 3,161, 42, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 68, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,202, 64,189, 7, 82,100,
+191,103,204, 21, 63,230,165,241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64,155, 39,153, 64,155, 39,153, 64,155, 39,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,201, 15,218, 37,192, 0, 0,
+ 36,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,155, 39,153, 38, 27, 39,152,166,232,187,102, 0, 0, 0, 0,
+ 38,232,187,102, 52,196,134,157, 64,155, 39,153, 0, 0, 0, 0, 38, 27, 39,154,192,155, 39,153, 52,196,134,157, 0, 0, 0, 0,
+189, 7, 82,100,191,103,204, 21, 63,230,165,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,152,206, 48,236, 24, 41, 66, 9, 0, 0, 0, 0,
+152, 60, 55,216, 63,128, 0, 0,166,105,133, 88, 0, 0, 0, 0,151, 91,159,226, 38, 93,218, 64, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 83, 50, 25, 36,158,101,147, 35,211, 50, 27,128, 0, 0, 0,
+164,158,101,147, 62, 83, 50, 25, 38,189,119, 59,128, 0, 0, 0,173,204, 94, 0,175, 96, 79,158, 62, 83, 50, 25,128, 0, 0, 0,
+ 59,153, 62,135,185,110, 94,217, 63,238, 71,118, 63,128, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2,
+ 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,
+201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 4, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7, 26, 8, 80, 7, 26, 13,176, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,199,128, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 0, 32, 0, 0, 79, 66,
- 0, 0, 3, 68, 7,159,216, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,220, 32, 7,159,212, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 66,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 26, 31,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,154, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,199,176,189, 7, 82,100,191,103,204, 21, 63,230,165,241, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,155, 39,153, 64,155, 39,153, 64,155, 39,153,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,201, 15,218, 37,192, 0, 0, 36,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64,155, 39,153, 38, 27, 39,152,166,232,187,102, 0, 0, 0, 0, 38,232,187,102, 52,196,134,157, 64,155, 39,153,
- 0, 0, 0, 0, 38, 27, 39,154,192,155, 39,153, 52,196,134,157, 0, 0, 0, 0,189, 7, 82,100,191,103,204, 21, 63,230,165,241,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,153, 34, 33,106, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,153, 34, 33,106, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,179,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62, 83, 50, 25, 36,158,101,147, 35,211, 50, 27, 0, 0, 0, 0,164,158,101,147, 62, 83, 50, 25, 38,174, 59,158,
- 0, 0, 0, 0,173,204, 94, 0,175, 96, 79,158, 62, 83, 50, 25, 0, 0, 0, 0, 59,153, 62,135,185,110, 94,217, 63,238, 71,118,
- 63,128, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10,
- 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,202, 64, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 50, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 54, 32, 3,161, 46, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 46, 48, 48, 50, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 26, 19,192, 7, 26, 25,160, 0, 0, 0, 25, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,199,176,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,220, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,224, 32, 7,159,216, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 46, 48, 48, 50, 0, 46, 48,
- 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,107,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,202,160, 8,193,202,160, 8,193,202,112,191,213,187,242, 63,134,145,194,
+ 64, 35,100,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 28, 0,243,
+ 65, 28, 0,246, 65, 28, 0,243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,135,110, 48, 62, 59,169,180,191, 1,115,138,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 6, 49,198,192,148,154,115,191,227,113, 3, 0, 0, 0, 0, 64,106,250,159,
+ 64, 91,207,189, 65, 5,170, 80, 0, 0, 0, 0,192, 86,151, 46,192,251, 94,125, 64,150,127,188, 0, 0, 0, 0,191,213,187,242,
+ 63,134,145,194, 64, 35,100,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1, 49,153,198,100,179,110, 73,125, 0, 0, 0, 0, 49,211, 40,194,
+ 63,128, 0, 0, 50,145,137, 64, 0, 0, 0, 0, 48, 35, 64,101, 51, 39,164,144, 63,128, 0, 0, 0, 0, 0, 0,166, 83, 40,194,
+180, 0, 0, 0,167, 17,137, 64, 63,128, 0, 0, 61,180,174,143, 61, 30, 48,160,189, 16,118,223,128, 0, 0, 0,188,153, 29,162,
+ 61,179,248, 38, 61, 74,162,115,128, 0, 0, 0, 61, 72, 21, 15,189, 19,250,160, 61,169, 57, 88,128, 0, 0, 0, 63, 50,107, 4,
+190,204, 46, 88, 63, 79,206,177, 63,128, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0,
+ 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
+ 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,104, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,200, 16, 13, 64,200, 16, 13, 64,199,224,
-191,213,187,242, 63,134,145,194, 64, 35,100,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 65, 28, 0,243, 65, 28, 0,246, 65, 28, 0,243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,135,110, 48,
- 62, 59,169,180,191, 1,115,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 6, 49,198,192,148,154,115,191,227,113, 3,
- 0, 0, 0, 0, 64,106,250,159, 64, 91,207,189, 65, 5,170, 80, 0, 0, 0, 0,192, 86,151, 46,192,251, 94,125, 64,150,127,188,
- 0, 0, 0, 0,191,213,187,242, 63,134,145,194, 64, 35,100,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1,167, 0, 0, 1,179,128, 0, 1,
- 0, 0, 0, 0,179, 0, 0, 1, 63,128, 0, 0, 51, 0, 0, 1, 0, 0, 0, 0,166,128, 0, 1, 51, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,180,174,143, 61, 30, 48,160,189, 16,118,223,
- 0, 0, 0, 0,188,153, 29,162, 61,179,248, 38, 61, 74,162,115, 0, 0, 0, 0, 61, 72, 21, 15,189, 19,250,160, 61,169, 57, 88,
- 0, 0, 0, 0, 63, 50,107, 4,190,204, 46, 88, 63, 79,206,177, 63,128, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 68,
- 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,202,112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 68, 8,193,202,160, 0, 0, 0, 78, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 31, 83,117, 98,115,117,114,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80,
+ 3,161, 54, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 58, 32, 3,161, 50, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,
+101,118,105,101,119, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 71,170, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 62,112,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,199,224, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 68, 13, 64,200, 16, 0, 0, 0, 78, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 31,
- 83,117, 98,115,117,114,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,224, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,228, 32, 7,159,220, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,
-119, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,203, 16,187,203,194, 16, 63, 45, 89,155, 63,230,153,244, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 72,135, 56, 63, 72,135, 56, 63, 72,135, 56, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 72,135, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 72,135, 56, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 72,135, 56, 0, 0, 0, 0,187,203,194, 16, 63, 45, 89,155, 63,230,153,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47,200,135, 57,178,200,135, 57, 63,128, 0, 1, 0, 0, 0, 0,176,192, 0, 0, 51,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,163,104,144,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, 34, 52, 33, 50, 51,206,250,252, 63,163,104,144,128, 0, 0, 0,
+173,202,240, 60,191,163,104,144, 51,204, 63,183,128, 0, 0, 0,187,173, 93,105,193, 88,176,172,186,118, 52, 95, 63,128, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0,
+ 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1,
+ 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7, 22,191, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,148,176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,200,128,187,203,194, 16, 63, 45, 89,155, 63,230,153,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 72,135, 56, 63, 72,135, 56, 63, 72,135, 56, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 72,135, 56,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 72,135, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 72,135, 56, 0, 0, 0, 0,187,203,194, 16, 63, 45, 89,155, 63,230,153,244, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,200,135, 57,
-178,200,135, 57, 63,128, 0, 1, 0, 0, 0, 0,176,192, 0, 0, 51,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,163,104,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 52, 33, 50, 51,206,250,252, 63,163,104,144, 0, 0, 0, 0,173,202,240, 60,
-191,163,104,144, 51,204, 63,183, 0, 0, 0, 0,187,173, 93,105,193, 88,176,172,186,118, 52, 95, 63,128, 0, 0, 0, 0, 0, 2,
- 4, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 71,158,160, 2, 71,164, 96,
+ 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 4, 8,193,203, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 58, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,161, 62, 32, 3,161, 54, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,
+119, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 32, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 62,112, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,203, 64, 58, 10, 31, 0, 63,236, 94, 59, 63,231, 84,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,110,188, 91, 63,110,188, 91, 63,110,188, 91, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,201, 15,218,128, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,110,188, 91,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,151, 50, 90, 63,110,188, 91, 0, 0, 0, 0, 0, 0, 0, 0,
+191,110,188, 91, 51,151, 50, 90, 0, 0, 0, 0, 58, 10, 31, 0, 63,236, 94, 59, 63,231, 84,236, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,127,255,254,179, 25, 53,226, 0, 0, 0, 0, 0, 0, 0, 0,
+167, 50,115, 84, 63,128, 0, 1, 0, 0, 0, 0,174,128, 0, 1,179,255,255,254, 39,153, 53,226, 63,128, 0, 0, 63,137, 65,160,
+128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,150,221,204,136, 63,137, 65,160, 40, 40,226,194,128, 0, 0, 0, 45, 14,127,248,
+176,150,195,159, 63,137, 65,161,128, 0, 0, 0,188, 63, 80, 29,187,226, 95, 62, 65, 74, 19, 87, 63,128, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7, 29,251, 48, 7, 30, 0,144, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,200,128, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,228, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,232, 32, 7,159,224, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 32, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,193,203, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 62, 32, 0, 0, 0,113,
+ 0, 0, 0, 1, 3,161, 66, 32, 3,161, 58, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 46, 48, 48,
+ 53, 0, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,148,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,200,176, 58, 10, 31, 0, 63,236, 94, 59,
- 63,231, 84,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,110,188, 91,
- 63,110,188, 91, 63,110,188, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,201, 15,218,128, 0, 0, 0,128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,110,188, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 51,151, 50, 90, 63,110,188, 91, 0, 0, 0, 0, 0, 0, 0, 0,191,110,188, 91, 51,151, 50, 90, 0, 0, 0, 0, 58, 10, 31, 0,
- 63,236, 94, 59, 63,231, 84,236, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,127,255,254,179, 25, 53,226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 1, 0, 0, 0, 0,174,128, 0, 1,
-179,255,255,254, 39,153, 53,226, 63,128, 0, 0, 63,137, 65,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,123, 29,164,
- 63,137, 65,160, 40, 19, 46,157, 0, 0, 0, 0, 45, 14,127,248,176,150,195,159, 63,137, 65,161, 0, 0, 0, 0,188, 63, 80, 29,
-187,226, 95, 62, 65, 74, 19, 87, 63,128, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0,
- 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56,
- 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0,
- 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 1, 64, 0, 0, 0, 0, 0, 0, 32, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,165, 96, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,189,195,155,128, 64,188,145, 20, 65, 88,220, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,134,180,221, 37,141,190, 48, 35, 57, 55,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 35, 57, 55,253,
+165,141,190, 48, 0, 0, 0, 0, 37,112,128,219, 62,253,177, 52, 63, 94, 93, 94, 0, 0, 0, 0, 37, 22,133, 52,191, 94, 93, 94,
+ 62,253,177, 52, 0, 0, 0, 0,189,195,155,128, 64,188,145, 20, 65, 88,220, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 25, 31, 42,118,
+153,131,108,242, 0, 0, 0, 0,176, 0, 0, 0, 63,128, 0, 0,178, 66, 21,210, 0, 0, 0, 0,176, 0, 0, 5, 50,158,245, 25,
+ 63,128, 0, 1, 0, 0, 0, 0, 50, 0, 0, 0, 11,159, 42,118,140, 3,108,242, 63,128, 0, 0, 63,128, 0, 0, 37,112,128,219,
+ 37, 22,133, 53,128, 0, 0, 0,174,231, 90, 80, 63, 94, 93, 94, 62,253,177, 52,128, 0, 0, 0,172,239, 68, 0,190,253,177, 50,
+ 63, 94, 93, 95,128, 0, 0, 0, 61,174, 98,150,193,144,101, 85, 64,253,124,196, 63,128, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0,
+ 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 4, 13, 64,200,176, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,232, 32,
- 0, 0, 0,109, 0, 0, 0, 1, 7,159,236, 32, 7,159,228, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,
-119, 46, 48, 48, 53, 0, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 66, 32,
+ 0, 0, 0,113, 0, 0, 0, 1, 3,161, 70, 32, 3,161, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,
+119, 46, 48, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,165, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 87, 96, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,189,195,155,128, 64,188,145, 20, 65, 88,220, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,134,180,221, 37,141,190, 48, 35, 57, 55,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 35, 57, 55,253,165,141,190, 48, 0, 0, 0, 0, 37,112,128,219, 62,253,177, 52, 63, 94, 93, 94, 0, 0, 0, 0, 37, 22,133, 52,
-191, 94, 93, 94, 62,253,177, 52, 0, 0, 0, 0,189,195,155,128, 64,188,145, 20, 65, 88,220, 94, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 8,193,203,112,190,252, 52, 94, 65,228,101,174, 65, 17,116,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 30,239,235, 66, 30,239,236, 66, 30,239,235, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 95,174,138, 37,123,132, 98,165, 87, 56, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 30,239,235,
+168, 5,158,105,168, 28, 39,108, 0, 0, 0, 0, 40, 77,129,212, 65,204, 15, 66, 65,243,186,158, 0, 0, 0, 0,165, 13, 89, 55,
+193,243,186,156, 65,204, 15, 65, 0, 0, 0, 0,190,252, 52, 94, 65,228,101,174, 65, 17,116,141, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 25,127,255,255,153,128, 0, 1, 0, 0, 0, 0,176, 0, 0, 0, 63,128, 0, 0, 10, 0, 0, 1, 0, 0, 0, 0,176, 0, 0, 5,
- 51, 0, 0, 1, 63,128, 0, 1, 0, 0, 0, 0, 50, 0, 0, 0, 12, 0, 0, 0,140, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0,
- 37,112,128,219, 37, 22,133, 53, 0, 0, 0, 0,174,231, 90, 80, 63, 94, 93, 94, 62,253,177, 52, 0, 0, 0, 0,172,239, 68, 0,
-190,253,177, 50, 63, 94, 93, 95, 0, 0, 0, 0, 61,174, 98,150,193,144,101, 85, 64,253,124,196, 63,128, 0, 0, 0, 0, 0, 64,
- 16, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205,
- 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 24,232,169,151, 25,157,190,151, 0, 0, 0, 0, 24,149, 24, 21, 63,128, 0, 0,178, 59,157,109, 0, 0, 0, 0,153, 64,231,191,
+178,199,158, 1, 63,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,206, 43,101,
+ 35, 5, 74, 25,159,183, 90,141,128, 0, 0, 0,162,202,143, 41, 60,158, 20,101, 60,132, 89,193,128, 0, 0, 0, 34,173, 83,188,
+188,132, 89,192, 60,158, 20,103,128, 0, 0, 0, 60, 70,215, 11,191, 67, 43, 61, 63, 31,241,185, 63,128, 0, 0, 0, 0, 0, 64,
+ 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205,
+ 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,236, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,240, 32, 7,159,232, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 46, 48, 48, 54, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,169, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,200,224,
-190,252, 52, 94, 65,228,101,174, 65, 17,116,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 30,239,235, 66, 30,239,236, 66, 30,239,235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 95,174,138,
- 37,123,132, 98,165, 87, 56, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 30,239,235,168, 5,158,105,168, 28, 39,108,
- 0, 0, 0, 0, 40, 77,129,212, 65,204, 15, 66, 65,243,186,158, 0, 0, 0, 0,165, 13, 89, 55,193,243,186,156, 65,204, 15, 65,
- 0, 0, 0, 0,190,252, 52, 94, 65,228,101,174, 65, 17,116,141, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 25, 80, 0, 0, 25,120, 0, 2,
- 0, 0, 0, 0, 24,216, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 12, 0, 1,179, 0, 0, 1, 63,128, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,206, 43,101, 35, 5, 74, 25,159,183, 90,141,
- 0, 0, 0, 0,162,202,143, 41, 60,158, 20,101, 60,132, 89,193, 0, 0, 0, 0, 34,173, 83,188,188,132, 89,192, 60,158, 20,103,
- 0, 0, 0, 0, 60, 70,215, 11,191, 67, 43, 61, 63, 31,241,185, 63,128, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 68,
- 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,193,203,112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 70, 32, 0, 0, 0,113,
+ 0, 0, 0, 1, 3,161, 74, 32, 3,161, 66, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119, 99,117, 98,
+101, 0,117, 98,101, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,200,224, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66,
- 0, 0, 3, 68, 7,159,240, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,244, 32, 7,159,236, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 66,112,114,101,118,105,101,119, 99,117, 98,101, 0,117, 98,101, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 95, 32, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,176,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,201, 16, 59, 88,253,128, 63,160,118,220, 64, 37, 15, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 68, 88, 84, 64, 68, 88, 84, 64, 68, 88, 83,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,237,190, 1,190,217,230,108, 63, 52,151, 20, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64, 8, 38, 67, 63,231,228,191, 63,162, 31,186, 0, 0, 0, 0,192, 13,118, 35, 63,220, 61, 2, 63,160, 44, 31,
- 0, 0, 0, 0, 60,234, 52,166,191,227,223,102, 64, 31,229, 55, 0, 0, 0, 0, 59, 88,253,128, 63,160,118,220, 64, 37, 15, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 8,193,203,160, 59, 88,253,128, 63,160,118,220, 64, 37, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 68, 88, 84, 64, 68, 88, 84, 64, 68, 88, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,237,190, 1,190,217,230,108, 63, 52,151, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 38, 67, 63,231,228,191,
+ 63,162, 31,186, 0, 0, 0, 0,192, 13,118, 35, 63,220, 61, 2, 63,160, 44, 31, 0, 0, 0, 0, 60,234, 52,166,191,227,223,102,
+ 64, 31,229, 55, 0, 0, 0, 0, 59, 88,253,128, 63,160,118,220, 64, 37, 15, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0,178,155,255,255, 49, 64, 0, 2, 0, 0, 0, 0,178,211,255,254, 63,127,255,254,164,159, 0, 0,
- 0, 0, 0, 0, 51, 2, 0, 1, 50,255,255,255, 63,128, 0, 1, 0, 0, 0, 0, 51,234, 0, 0,179,255,255,254, 37,175,128, 1,
- 63,128, 0, 0, 62,103,115, 10,190,112,122,201, 59, 71, 17,255, 0, 0, 0, 0, 62, 9,205,116, 62, 8, 36,205, 62,135,232,136,
- 0, 0, 0, 0,190, 69, 27, 1,190, 59, 50,224, 62, 65,176, 25, 0, 0, 0, 0,192, 16,176,110,192, 9, 71,158, 63,244, 90,115,
- 63,128, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10,
- 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,178,173,119, 22,
+ 48,207, 79,155, 0, 0, 0, 0,179, 33,101,225, 63,128, 0, 0,178,235,101,178, 0, 0, 0, 0, 50,194,156,191, 50,154, 60, 97,
+ 63,128, 0, 1, 0, 0, 0, 0, 51,149, 0, 0,180, 0, 0, 0,180,128, 0, 1, 63,128, 0, 0, 62,103,115, 10,190,112,122,201,
+ 59, 71, 17,255,128, 0, 0, 0, 62, 9,205,116, 62, 8, 36,205, 62,135,232,136,128, 0, 0, 0,190, 69, 27, 1,190, 59, 50,224,
+ 62, 65,176, 25,128, 0, 0, 0,192, 16,176,110,192, 9, 71,158, 63,244, 90,115, 63,128, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236,
+ 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,201, 16,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68, 7,159,244, 32, 0, 0, 0,109, 0, 0, 0, 1,
- 7,159,248, 32, 7,159,240, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119,104, 97,105,114, 0,108, 97,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,203,160,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 74, 32, 0, 0, 0,113, 0, 0, 0, 1,
+ 3,161, 78, 32, 3,161, 70, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119,104, 97,105,114, 0,108, 97,
110,101, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,141,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65, 97,208, 13, 65, 97,208, 13, 64,201, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,147, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,100, 96, 8,194,100, 96, 8,193,203,208,
63,200, 92, 86, 63,227,205, 7,189, 9,199,149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 64, 47,126,234, 64, 47,126,234, 64, 47,126,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 2, 80,225,
191, 15,211, 5, 62, 18,219, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 18,254,224, 62,169,209, 23, 63,186,251, 27,
0, 0, 0, 0,191,133,254, 71, 64, 17, 40,207, 63,144,194,229, 0, 0, 0, 0,191,137, 38, 78,191,192,162, 48, 64, 1,176,125,
0, 0, 0, 0, 63,200, 92, 86, 63,227,205, 7,189, 9,199,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 1,179, 0, 0, 1,179,128, 0, 1,
- 0, 0, 0, 0, 50,128, 0, 0, 63,128, 0, 1, 51,128, 0, 1, 0, 0, 0, 0,179,128, 0, 1,179, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 40, 12, 0, 2,180, 0, 0, 1,180, 44, 0, 1, 63,128, 0, 0, 62,156,100,244,190, 14,143,135,190, 17,235, 52,
- 0, 0, 0, 0, 62, 70,239,175, 62, 26, 4,102, 62,137,251, 72, 0, 0, 0, 0,189, 52,172,174,190,154,112,211, 62, 76,243, 67,
- 0, 0, 0, 0,191, 36, 56,149,192, 66, 98,139, 64, 68, 5,168, 63,128, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,179, 25,128,225,179, 88,103,157,
+ 0, 0, 0, 0, 50,132,162,249, 63,128, 0, 1, 51,139,156, 89, 0, 0, 0, 0,179,139,204,225,178,185, 96,160, 63,128, 0, 0,
+ 0, 0, 0, 0, 52, 0, 0, 1,180, 0, 0, 1,180, 84, 0, 1, 63,128, 0, 0, 62,156,100,244,190, 14,143,135,190, 17,235, 52,
+128, 0, 0, 0, 62, 70,239,175, 62, 26, 4,102, 62,137,251, 72,128, 0, 0, 0,189, 52,172,174,190,154,112,211, 62, 76,243, 67,
+128, 0, 0, 0,191, 36, 56,149,192, 66, 98,139, 64, 68, 5,168, 63,128, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 68,
0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100,
- 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0,
- 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0,
+ 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,202, 32, 13, 64,202, 32,
- 13, 64,201,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 64,201, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,128, 13, 64,201,112, 0, 0, 0,111, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,204,176, 8,193,204,176, 8,193,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,193,203,208, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,193,204, 0, 0, 0, 0,115, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 62, 76,204,205, 60,163,215, 10, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205,
+ 62, 76,204,205, 60,163,215, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 64, 8,193,204,176, 0, 0, 1, 49, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,162, 32, 7,246,240, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 64, 13, 64,202, 32, 0, 0, 1, 42,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 74, 32, 12,117, 80, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,156,100,244,190, 14,143,134,190, 17,235, 52,
- 0, 0, 0, 0, 61, 52,172,172, 62,154,112,211,190, 76,243, 69, 0, 0, 0, 0, 62, 70,239,176, 62, 26, 4,102, 62,137,251, 73,
- 0, 0, 0, 0,191, 12,211,188,190,160,176,198, 63, 22,156, 56, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 2, 17,
- 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,156,100,244,190, 14,143,134,190, 17,235, 52, 0, 0, 0, 0, 61, 52,172,172, 62,154,112,211,190, 76,243, 69, 0, 0, 0, 0,
+ 62, 70,239,176, 62, 26, 4,102, 62,137,251, 73, 0, 0, 0, 0,191, 12,211,188,190,160,176,198, 63, 22,156, 56, 63,128, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 17, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65, 97,144, 68, 65, 84, 65, 0, 0,114,216, 12,117, 80, 32, 0, 0, 1, 40, 0, 0, 0,150, 0, 0, 0, 0,192, 17,135, 20,
-192, 97,121, 36, 63,141, 32,112,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,203,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 32, 96, 77, 62,160,201,185, 63, 6, 3,160,190,248, 34, 11, 60,185, 53,206,
- 61,178,197,192, 63, 53,184,174,190,162,172,223, 62,224,136,109,191, 61,173,142, 60, 10, 96,180, 61,163,196,200, 63, 99,182, 78,
- 60,180,242,165, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,150,112,248,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 7, 46,111,192, 60, 26,143, 63,207,147, 28,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,204,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,229,121, 6,191, 41, 50,108,191, 7,152,136,190,146,100,156,
-191, 25,141,146, 62,142, 92, 39, 63, 18,104,212,190,105,105,227, 62, 96,156,113,191, 69,226,137, 61, 17,247,147, 62, 44,172, 51,
- 63, 54,125, 17, 61,169,195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62,245, 63,144, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,189,174,103,224,192, 17, 88, 60, 64, 76, 35,230,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,205,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,155,160,101, 62,152, 87, 59,191, 84,199,118,
- 62,183, 89, 86, 62,231,103,118,189,177, 47,110,191, 4, 8,155, 62,199, 60,100,189,177, 40,197, 62, 46, 14, 2, 62, 39, 96,102,
- 61,242,119,101, 62,146,168,189, 62,221, 9, 55, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 61, 87, 36,135, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,192,131,102, 75, 63, 26,241,196, 64, 76,198,140,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98,
- 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,206,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 39, 80, 49,190,218, 26,171,
- 63, 16,118, 89,190,138, 72,130,190,122,255,169,191, 14,111,185, 63, 38,207, 21, 61,211,252, 73,191, 80,177,198,189,203,154, 43,
- 61, 53,146,227, 63,115,180, 63, 59, 42,113,216, 58,144, 63,125, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,142, 95,175, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189,226, 43, 64,191,220, 85,253, 64,101,104,225,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,207,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 45, 97,119,
-190,205, 47,119, 63, 19,117, 35, 62, 98,125,166, 62, 73,195,242, 62,243,228,124, 63, 11, 86,119, 62, 89,156, 70, 63, 88,232,230,
-190,204, 53,130, 62,128,120,250, 62, 20,194, 19, 62, 90, 15, 61, 62,200, 30, 92, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,253,129, 53, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,129,159,108, 63, 6,210, 8, 64,152,221, 35,191, 55, 81,190,
-191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 64,208,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-190,210,167, 41, 62,139,172,194, 63, 35,220,250,191, 22,182, 30, 61,136, 3,122,190,176,164,109,190,147,153, 30,188, 10,248,255,
-190,160, 90,234,190,205,241, 89, 63, 25,235,148, 62,146,172,206, 61, 52,195,137, 61,139,142, 99, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 77,227, 37, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,189,167,114,192,104, 59,217, 63,184,179,184,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,209,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,121, 45, 57, 63, 98,126,120,189,135,171, 60,190,200,174,139, 63, 21,142,220,191, 40, 70, 77, 62,150, 70,118,
- 61, 92,245, 4,190,174,118,159, 63, 49,217,176, 60,104,167,120, 60,235,104,166, 63, 73,251,218, 62, 44, 25, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,247, 2,217, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 30,112, 86,192, 82, 69,111,
- 64, 51,191, 59,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,210,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,190,137,227, 49,191, 71,195,206,190, 96, 31, 70, 63, 5, 46,127,189,214, 51, 99,191, 67, 61,228,
- 62, 2, 90,134,190,146,214,120, 62, 33,111, 34,190,187,229,136, 60,241,112, 27, 60,177,187, 0, 62,171,134, 4, 63, 29, 35,164,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 56,192,130, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,176,148,118,
- 63, 1,200, 88, 64,146, 48, 89,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,211,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 82,169, 42, 63, 57,214,102,191, 36,112, 55, 62, 9,205, 59, 63, 5,139,184,
-190, 43, 32,105,191, 37, 62,120, 63, 15,215,220, 63, 8, 2,180, 62,163,170,198, 63, 8,178,160, 62,184,164,185, 61, 63, 72, 68,
- 61,112,104, 16, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,192,249, 97,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,100, 32, 68, 65, 84, 65, 0, 0,147,168, 7,246,240, 32, 0, 0, 1, 47,
+ 0, 0, 0,150, 0, 0, 0, 0,192, 17,135, 20,192, 97,121, 36, 63,141, 32,112,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,206, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 32, 96, 77, 62,160,201,185, 63, 6, 3,160,190,248, 34, 11,
+ 60,185, 53,206, 61,178,197,192, 63, 53,184,174,190,162,172,223, 62,224,136,109,191, 61,173,142, 60, 10, 96,180, 61,163,196,200,
+ 63, 99,182, 78, 60,180,242,165, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,150,112,248, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 7, 46,111,192, 60, 26,143, 63,207,147, 28,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,207, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,229,121, 6,191, 41, 50,108,191, 7,152,136,190,146,100,156,191, 25,141,146,
+ 62,142, 92, 39, 63, 18,104,212,190,105,105,227, 62, 96,156,113,191, 69,226,137, 61, 17,247,147, 62, 44,172, 51, 63, 54,125, 17,
+ 61,169,195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,245, 63,144,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-191,168, 80,200,191,165,154, 8, 64, 80,248,229,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,212,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 5,145, 56, 62,126, 77, 83,191, 63,133, 14, 62,167, 5,190,
-190, 96,212,123, 62,176,136,233,189, 80,193, 25, 62, 18, 49,147, 62, 25, 40,222,191, 10,204, 59, 62,104, 46,177, 62,150,106, 36,
- 62,138, 61, 2, 62, 86,131, 4, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 19, 27, 39, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,189,246,190, 0,192, 90,129,233, 64, 20,155,224,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,
-190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,213,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 14, 77, 30, 62,154, 81,231,191, 22,220, 41,
-191, 0,189,104,190,160,167,214,190, 22, 60,140, 63, 74, 85, 37,191, 8,253, 32, 61, 23,146, 96,190,177, 30,196, 60,187, 25, 79,
- 60,194,244,207, 62,253,234, 53, 62,234, 52,233, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 79, 21,218, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,190, 67,231,176,189, 11,105,144, 64,153,111,210,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,214,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,205,110, 74,191, 27,226,146,
- 61,219, 95, 73, 63, 45, 3, 75,190,147,109,222, 63, 40,196,152,190,116,136, 36,190,190, 21,181,190,213, 38,211, 62,183,230,114,
- 63, 24,217,206, 62, 25,222, 59, 61,134, 50, 0, 62, 63,161,139, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,127, 67,180, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,158,217, 58,192, 17,225,122, 64,120,158,213,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,215,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 22, 95,176,
-190,210, 95,172,191, 46, 70,114, 62, 26, 71, 67, 61,234,164,188,191, 78,120,121,188,108,229,186,190, 72,225,144,190, 42,218,197,
-191,114,104, 83, 62, 73,213, 34, 61, 49,230,217, 61,187,117,217, 63, 42,253,143, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 95,144,226, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,127,205, 29,191,142,116,231, 64,100, 64,116,191, 55, 81,190,
+189,174,103,224,192, 17, 88, 60, 64, 76, 35,230,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,
+190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,208, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62,155,160,101, 62,152, 87, 59,191, 84,199,118, 62,183, 89, 86, 62,231,103,118,189,177, 47,110,
+191, 4, 8,155, 62,199, 60,100,189,177, 40,197, 62, 46, 14, 2, 62, 39, 96,102, 61,242,119,101, 62,146,168,189, 62,221, 9, 55,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61, 87, 36,135, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192,131,102, 75,
+ 63, 26,241,196, 64, 76,198,140,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,209, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 39, 80, 49,190,218, 26,171, 63, 16,118, 89,190,138, 72,130,190,122,255,169,191, 14,111,185, 63, 38,207, 21,
+ 61,211,252, 73,191, 80,177,198,189,203,154, 43, 61, 53,146,227, 63,115,180, 63, 59, 42,113,216, 58,144, 63,125, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,142, 95,175, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189,226, 43, 64,191,220, 85,253,
+ 64,101,104,225,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,210, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 45, 97,119,190,205, 47,119, 63, 19,117, 35, 62, 98,125,166, 62, 73,195,242, 62,243,228,124, 63, 11, 86,119, 62, 89,156, 70,
+ 63, 88,232,230,190,204, 53,130, 62,128,120,250, 62, 20,194, 19, 62, 90, 15, 61, 62,200, 30, 92, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,253,129, 53, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,129,159,108, 63, 6,210, 8, 64,152,221, 35,
+191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,211, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,210,167, 41,
+ 62,139,172,194, 63, 35,220,250,191, 22,182, 30, 61,136, 3,122,190,176,164,109,190,147,153, 30,188, 10,248,255,190,160, 90,234,
+190,205,241, 89, 63, 25,235,148, 62,146,172,206, 61, 52,195,137, 61,139,142, 99, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 77,227, 37, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,189,167,114,192,104, 59,217, 63,184,179,184,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 64,216,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-189,132, 25,196,191, 41,167, 67,190,174,145,249, 63, 41,227,171, 62, 94,208, 84, 63, 50, 21, 98,191, 46,162,138,191, 56, 53,136,
- 62,160, 44, 9,190,188, 42, 15, 62,145,124,109, 62,135, 84, 47, 62, 95, 56, 95, 62,111, 38,104, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 87,116,183, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 67,106,143, 62,236, 1,239, 64,105,139,230,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,217,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 72, 62, 61, 62,176,226,147,191, 48,185, 67,191, 26,215,255,187,254,158,242,190,201,238, 89, 63, 39,166, 99,
-191, 3,238,102, 62, 10,229,206, 62,230, 53,165, 62,100,227, 37, 63, 54, 38,230, 61, 43, 4, 87, 60,190, 1,166, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,126, 26,213, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 58, 63,114,191,102, 44,242,
- 64,119,155,239,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,218,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 61,131,238,198,191, 58, 99, 49, 63, 26,180, 63,190,162, 92,201, 62,209,254,113, 63, 12, 67,151,
- 62,197,138, 80,191, 72,116,197,190,182,129,117, 62, 76,137,180, 62,178,134,232, 62,113,134, 23, 62, 46,242,235, 62,122,121, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,169, 12,248, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,175,173,244,
- 61,141,194,136, 64,164,239, 0,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,219,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 28, 38,213, 60,166,248, 66,191, 67,199,227,190, 83,123,127,190,224,119,122,
- 62,149, 46, 73, 62, 62, 43,135, 62,199,175, 30, 63, 2,224, 97, 62,250,198,180, 63, 48, 97,211, 61,130,134, 38, 61, 8, 53,167,
- 62, 91, 40, 56, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,157,115, 93,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 36,188,127,192, 42,192, 83, 63,202, 24, 20,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,220,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 82,121, 10,190,216,142,233,191, 83,156, 94, 62,158, 73,222,
- 63, 3,207,170,191, 39, 41, 63, 62,147,164, 2,191, 38,187, 36, 62,218, 1, 0,191, 32,119,145, 60,154,242,191, 62,130,165, 14,
- 63, 49,236,127, 60,253, 44,163, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62,130,194, 13, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 51,117,191,192, 44,247, 40, 64, 82, 59, 84,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,221,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 71,176, 89,191, 18, 55,214,190,223, 82, 67,
- 63, 50, 2,142, 61,202, 17,235, 62,199,118, 51, 63, 72,125,129,191, 36,250, 86, 61, 90, 99, 70, 63, 25, 38,125, 61,227, 50,218,
- 61,110,152, 48, 62,104, 58,166, 63, 26,161,121, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62, 35, 69, 21, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,192, 44,218, 23,190,159,112,131, 64, 80,196, 68,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,222,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 39, 65, 62,190,203,203,175,
-191, 8, 58, 24,190,185,178,132, 63, 27,133, 48, 63, 35,150,166,189,174,164,195,189,209, 20,146,191, 3, 43,124, 63, 54,188,219,
- 62, 53,126, 23, 63, 22,113, 93, 62, 42,104, 29, 61,140,168,166, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,222,122, 90, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 61,253,222,190, 43,216,212, 64,140,239,219,191, 55, 81,190,191, 71,243,109,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,212, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,121, 45, 57, 63, 98,126,120,
+189,135,171, 60,190,200,174,139, 63, 21,142,220,191, 40, 70, 77, 62,150, 70,118, 61, 92,245, 4,190,174,118,159, 63, 49,217,176,
+ 60,104,167,120, 60,235,104,166, 63, 73,251,218, 62, 44, 25, 13, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 62,247, 2,217, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 30,112, 86,192, 82, 69,111, 64, 51,191, 59,191, 55, 81,190,191, 71,243,109,
63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,223,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,251, 62, 59,
- 62,132,207,154,191, 19,198,191,191, 25, 82,122,190,169,114,179,191, 46, 80,242,189,100, 92,161, 62,188,103,125,191, 23,234, 0,
- 63, 22,140, 12, 62,252, 36, 24, 62,121,130,191, 61,198,245, 96, 62, 42,186, 98, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 89,205, 62, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,212,168,192,192, 30,175, 47, 64, 12,228, 94,191, 55, 81,190,
-191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 64,224,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 6,136,242,191, 58,135,240, 61,233,198, 89, 63, 41,148, 57,190,189,188,151,190,189, 72,156, 63, 86, 14,184,190,165, 54,185,
- 62, 49,220,131,189,189, 87, 60, 61,167,198,118, 62, 80,200, 92, 63, 10,210,157, 62, 48, 9,240, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,181,132,186, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,238,184,114,191,230,206,237, 64, 85,122,208,
-191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,225,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 30,165,128,190,249, 50,161,189, 86,213,180,191, 29, 10,178,191, 49,247,227,189, 7,139,215,189,154,249,222,
-191, 23, 77,153, 63, 14, 58,160, 61, 15, 47, 72, 62, 94,132,138, 62, 48,190,167, 62,136, 41,203, 62,176, 52,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,233,177, 38, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,104, 19, 67,191,254,122,179,
- 64,123, 37,115,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,226,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,181,231, 69, 63, 51, 19, 36,191, 6, 5,126,190,170, 27,231,189, 35,253,128,189,151, 11,182,
- 62,178,171, 74, 63, 49,231,127, 62,128,146,204, 62, 17,100, 88, 62,124,245,197, 61,130,108, 30, 61,229,152,201, 63, 19,193,242,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 79,156, 56, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,191,106,172,
-192, 42,225,110, 64,110,170, 2,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,
-191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,227,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 27,227, 49, 63, 26, 83, 17,191, 2,229, 27, 61,135, 48, 83, 62,134,244,199,
-190,151, 37, 55,189,237,195,210, 63, 17, 39,249, 61, 76, 1,154,191, 79,194, 75, 61,249, 99,240, 60,249, 88,190, 61,183, 20,174,
- 63, 66, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,178, 40,150,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,213, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,137,227, 49,191, 71,195,206,190, 96, 31, 70,
+ 63, 5, 46,127,189,214, 51, 99,191, 67, 61,228, 62, 2, 90,134,190,146,214,120, 62, 33,111, 34,190,187,229,136, 60,241,112, 27,
+ 60,177,187, 0, 62,171,134, 4, 63, 29, 35,164, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 56,192,130, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,176,148,118, 63, 1,200, 88, 64,146, 48, 89,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,214, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 82,169, 42, 63, 57,214,102,191, 36,112, 55, 62, 9,205, 59,
+ 63, 5,139,184,190, 43, 32,105,191, 37, 62,120, 63, 15,215,220, 63, 8, 2,180, 62,163,170,198, 63, 8,178,160, 62,184,164,185,
+ 61, 63, 72, 68, 61,112,104, 16, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,192,249, 97, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,168, 80,200,191,165,154, 8, 64, 80,248,229,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,215, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 5,145, 56, 62,126, 77, 83,191, 63,133, 14, 62,167, 5,190,190, 96,212,123,
+ 62,176,136,233,189, 80,193, 25, 62, 18, 49,147, 62, 25, 40,222,191, 10,204, 59, 62,104, 46,177, 62,150,106, 36, 62,138, 61, 2,
+ 62, 86,131, 4, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 19, 27, 39,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 12, 3,121,190,252, 11, 63, 64, 89,136,146,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,228,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 20, 59,104, 63, 17, 36, 30,190,252, 57,112, 62,162,101, 32,
- 62,160, 6,139, 61, 80,160, 57, 61,245,243,109,190,224, 18, 41,188,227,154,182,190,139,196,238, 62,108, 28,173, 62,246,152,191,
- 62, 61, 50,199, 61,210,254, 31, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 56,166, 20, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,191,187,104,250,189,139, 86, 56, 64,131, 23,145,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,
-190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,229,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 19, 80,228,191, 16,138,118,191, 6,210,122,
- 62,138, 14,139, 62,189, 65, 73,189,244, 89, 19, 62, 83, 5,205,190,107,159, 94, 62,255,199, 19,190, 48,124, 14, 62,208, 67, 15,
- 62,190, 57,184, 61,219,154,119, 61,234,114,111, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,223, 51,203, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,161, 56, 52,191,207,221,255, 64,120,110,202,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,230,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 47,124,138, 63, 0,193, 12,
- 62,176, 39,124,190,204, 3, 68, 61, 43,180,132,189,104,184, 66,191, 54,173, 69,189,116,239, 24,190, 53,183,191,190,198, 91,120,
- 62,150, 33,123, 61,226, 30, 68, 62, 27,121,224, 62,227,154, 4, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63, 35, 22,117, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 41, 89, 63,192, 25,107,117, 63,222,245,174,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,231,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,207,202, 66,
- 63, 47, 32,211,191, 0,219,139,190,172,212,197, 63, 65, 68,195,190,217,152,105,190,214,218,159,190, 84,113, 85,190,158,108,194,
- 61,235,217,229, 60,202,179, 82, 62,157,106,197, 63, 33,197,211, 61, 18,243, 9, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,102,162, 1, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,220,238, 94,191,150, 70, 91, 64, 72,192,203,191, 55, 81,190,
-191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 64,232,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+189,246,190, 0,192, 90,129,233, 64, 20,155,224,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,
+190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,216, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 14, 77, 30, 62,154, 81,231,191, 22,220, 41,191, 0,189,104,190,160,167,214,190, 22, 60,140,
+ 63, 74, 85, 37,191, 8,253, 32, 61, 23,146, 96,190,177, 30,196, 60,187, 25, 79, 60,194,244,207, 62,253,234, 53, 62,234, 52,233,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 79, 21,218, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190, 67,231,176,
+189, 11,105,144, 64,153,111,210,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,217, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 62,205,110, 74,191, 27,226,146, 61,219, 95, 73, 63, 45, 3, 75,190,147,109,222, 63, 40,196,152,190,116,136, 36,
+190,190, 21,181,190,213, 38,211, 62,183,230,114, 63, 24,217,206, 62, 25,222, 59, 61,134, 50, 0, 62, 63,161,139, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,127, 67,180, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,158,217, 58,192, 17,225,122,
+ 64,120,158,213,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,218, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
63, 22, 95,176,190,210, 95,172,191, 46, 70,114, 62, 26, 71, 67, 61,234,164,188,191, 78,120,121,188,108,229,186,190, 72,225,144,
-190, 42,218,197,191,114,104, 83, 62, 77,183, 13, 62,182,153,158, 62,143, 59, 65, 62, 38,159, 52, 0, 0, 0, 0, 0, 0, 0, 0,
+190, 42,218,197,191,114,104, 83, 62, 73,213, 34, 61, 49,230,217, 61,187,117,217, 63, 42,253,143, 0, 0, 0, 0, 0, 0, 0, 0,
66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 95,144,226, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192,116,234, 61,188,238,101,224, 64, 56, 20,165,
-191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,233,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 6,136,242,191, 58,135,240, 61,233,198, 89, 63, 41,148, 57,190,189,188,151,190,189, 72,156, 63, 86, 14,184,
-190,165, 54,185, 62, 49,220,131,189,189, 87, 60, 60,242,255, 31, 63, 83,194,231, 62, 5, 56,189, 60, 85,188, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,181,132,186, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189,240,209,128, 63, 95,183,178,
- 64,176, 67, 5,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,234,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 86,114,107,191, 2,141,137, 61,105,140,227,190, 63,121, 70, 62,218,242,130,190,132,163,237,
- 60, 16,235,219, 62,248,203, 85,191, 80,244, 79, 62,148, 0,103, 63, 85,189,153, 61,200,104,151, 60,142, 55,246, 61, 76, 57, 74,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 33,252, 31, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 25, 54,206,
- 62,162,197,171, 64,121, 16, 6,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,
-191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,235,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,244,100,219,191, 91, 69,182,189,144,137, 60, 62, 59,126,161,190,200,228, 28,
- 62,170, 49, 60,189,250,139,225, 62,111,143,244,191,100,103,252, 62, 79, 32,148, 62,163,246,104, 63, 16,201, 91, 61,136,104, 24,
- 61, 66,230,227, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 41, 88,182,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 61, 57, 29,191, 39, 53,236, 64, 55,221,173,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,
-190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,236,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 43,167, 61,225,210,242, 63, 30, 58,197, 63, 67, 8,229,
- 61,222,176,215, 63, 12, 15, 70, 62,165,195, 80, 61,227, 72,218,191, 87, 66,188, 62,195,213,145, 61,212,218, 39, 63, 25, 20,242,
- 62,118, 70,122, 61,107,226,159, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 64, 74,173, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,191, 40, 62,249, 63, 26,113, 16, 64,160,179, 50,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,237,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,224, 29,190, 63, 4, 44,239, 63, 49,217,125,
-190,121, 25,107, 62,217,172,117,190,116, 98,242, 63, 42,162,148,190,199,178,142,191, 13,105, 54,190,163,107, 83, 63, 45,186, 64,
- 62, 91,122,109, 61, 21,134, 32, 61,144,118, 21, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 73,107,113, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,191,138, 51, 90,192,110, 14,199, 63,203, 66, 18,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,238,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 39, 78, 36,190,251, 50,128,
-190,189,185,139, 62,226, 4,175,190,153, 23,118,190,120,228, 67,191, 42,226, 50,191, 86,243,239,190,189, 42, 37,190,190, 1, 66,
- 59,153,223,235, 59,243,174, 21, 63, 60,160,231, 62,128,135,251, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,105,245,167, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,186, 75, 44,191,204,205,170, 64, 61,169,132,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,239,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,155,223,118,
-191, 3,196,249,190,163, 12,115,191, 60, 73,212, 62, 85,208, 59, 62,155, 11, 65,189,173, 17, 28,190,254, 16, 20, 63, 32,229,213,
-189, 28,221,216, 62, 52, 19, 79, 62,146, 52,229, 62,171,228,191, 62, 79,185,106, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 37,184, 45, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,219,119, 4,192, 28, 73,231, 64,128,117, 83,191, 55, 81,188,
-191, 71,243,109, 63, 42,237,100, 62,214,163,233,190,183,206,202,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 64,240,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62,254,109,168, 63, 4,146,210, 63, 23,131,232, 62,187,212, 66,190,158,109, 9, 62,216, 12, 71, 59,153, 20, 64, 62, 7, 2, 11,
- 62, 91,134, 92,191, 33,128, 43, 62, 51, 75,186, 60,144,251,206, 61, 19, 49,198, 63, 69,114, 22, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,115,100,221, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,194, 59,172,192, 13, 29, 35, 64, 30,208, 13,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,127,205, 29,191,142,116,231, 64,100, 64,116,
191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,241,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,155,223,118,191, 3,196,249,190,163, 12,115,191, 60, 73,212, 62, 85,208, 59, 62,155, 11, 65,189,173, 17, 28,
-190,254, 16, 20, 63, 32,229,213,189, 28,221,216, 61,227, 31, 97, 62,104,207,168, 62,237, 89, 38, 62, 74,238, 93, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 37,184, 45, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 82,190,197, 62,174,148,251,
- 64, 91,189, 29,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,242,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 10,132,170, 62,237, 61, 82,190,223,191,127, 63, 12,148, 11, 62, 92,142,236, 63, 32,199, 17,
-189,242,206,157, 63, 15,114,199,191, 33, 82, 91,190,167,247, 3, 62, 37, 10,210, 63, 65,152,124, 61,106,110, 28, 60,207,189,179,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,140, 23, 40, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,163,157,120,
- 63, 33,219, 44, 64,167, 25,250,191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,237,190,183,206,199,190, 61,137,206,
-191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,243,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 4,175,102,190, 50,200,160, 63, 77,214,248,190,110,194,226, 61,198, 10,138,
- 62, 62,213,210, 61,253,163,141, 61,160,130,106,191,101,229,201, 62, 50,145,103, 63, 61,192, 52, 62, 23, 50, 16, 61, 1, 56, 40,
- 61,162,254, 43, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,220, 81, 89,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 79, 63,131,191,203,225, 22, 64,133, 83,183,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,244,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,194,155, 70,191, 3, 93, 82,191, 19,133, 23,191, 2,146,179,
- 62,104,198,131, 63, 93,189, 15,190,209,226, 77,191, 21,122,159,190,234,192,169, 63, 35,128, 16, 62,167,188, 9, 61,138,167,141,
- 61,185,163,186, 63, 3,152,147, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 59,236,249, 25, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 89,218, 20,192, 81, 21,169, 64, 38,226, 50,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,
-190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,245,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 52,169,139, 62,156,163, 97,190,184,132, 26,
- 63, 7, 25, 82, 62,151,117,127, 62,247,206,254, 63, 76,144, 27, 62,204, 57,150,188,246,181,184, 63, 19,222,196, 61, 18,237,175,
- 61, 0, 0, 50, 62,208, 45,180, 63, 6,186, 72, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,186,195, 61, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,190,166, 91,192, 62,151,138,203, 64,159, 4,232,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98,
- 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,246,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 7,240,212,191, 18, 2,213,
-191, 5, 90,228, 62,178, 92,221, 63, 16,236, 8, 62,151,216, 90, 62,128,193,155,188,245, 60, 56,190,160,129,118,191,113,157, 47,
- 63, 40,117,114, 62, 37, 92,164, 61, 78,198, 72, 62, 5, 28, 6, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,226, 96,137, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,191,137,104,190,208,156,143, 64,116,245,234,191, 55, 81,190,191, 71,243,109,
- 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,247,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 49,218,173,
-191, 23,109,113, 62, 55, 16, 32,190,188,117, 54, 62,208, 20, 25,191, 46,245,118,186,236,158, 72,191, 97, 10, 55, 62,183,128,140,
-190,146,230,177, 62,174,217,121, 62,188, 55, 45, 62, 25, 76, 41, 62, 16,146,138, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 48, 85, 96, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 78, 6,218,191, 2,247,240, 64,131,181, 2,191, 55, 81,190,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,219, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,132, 25,196,
+191, 41,167, 67,190,174,145,249, 63, 41,227,171, 62, 94,208, 84, 63, 50, 21, 98,191, 46,162,138,191, 56, 53,136, 62,160, 44, 9,
+190,188, 42, 15, 62,145,124,109, 62,135, 84, 47, 62, 95, 56, 95, 62,111, 38,104, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 87,116,183, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 67,106,143, 62,236, 1,239, 64,105,139,230,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 64,248,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-189,236, 25,179, 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,190,103,198,244, 62,187,192,251,190,101, 39,179, 62,138,210,110,
-191, 54,168,145,190, 63, 20,208, 62,211,209,237, 62,129,168, 1, 62, 7,237,108, 62, 77, 30,188, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,109,210, 2, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,251,181,100, 63, 79, 67,160, 64,143,115, 83,
-191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,249,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 61,237,243,122,190,169,234, 11,191, 55,226,211,191, 25,175,184, 63, 39,201, 24,190, 71, 23,204, 62,218, 61, 87,
- 63, 39,211, 31,190,215,101,108,189,244,125, 35, 62,250, 56, 31, 62,248,208,174, 60, 79, 43, 50, 60, 79,186,252, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,186,130, 83, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 16,143,166,192, 31, 40,219,
- 63,240,165,188,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,250,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 15,157,192,190,205, 51, 47,190,136, 40,152, 63, 44,122,128, 63, 92,144,194,190, 99, 36,235,
-190,206, 22,244, 62,220, 32,143, 63, 19,244,169,189,238,205,160, 61, 69,255, 93, 62,129,237,131, 63, 29,113,199, 61,169,188, 16,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,151,139,249, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 46, 16, 47,
- 62, 17,135,234, 64,101,174,196,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,
-191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,251,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,162,110,186,190,105,104,145, 62,239,168,247, 63, 74,235, 3,190,178, 77,140,
- 63, 72, 49, 80, 62,112, 45,164, 63, 44,101, 43, 62,173,162, 95,190,104,215,180, 62,112,185,132, 63, 31,198, 76, 61,186,148, 82,
- 61, 75,140,149, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,120,174,161,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,220, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 72, 62, 61, 62,176,226,147,
+191, 48,185, 67,191, 26,215,255,187,254,158,242,190,201,238, 89, 63, 39,166, 99,191, 3,238,102, 62, 10,229,206, 62,230, 53,165,
+ 62,100,227, 37, 63, 54, 38,230, 61, 43, 4, 87, 60,190, 1,166, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 61,126, 26,213, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 58, 63,114,191,102, 44,242, 64,119,155,239,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,221, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,131,238,198,191, 58, 99, 49, 63, 26,180, 63,
+190,162, 92,201, 62,209,254,113, 63, 12, 67,151, 62,197,138, 80,191, 72,116,197,190,182,129,117, 62, 76,137,180, 62,178,134,232,
+ 62,113,134, 23, 62, 46,242,235, 62,122,121, 45, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 62,169, 12,248, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62,175,173,244, 61,141,194,136, 64,164,239, 0,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,222, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 28, 38,213, 60,166,248, 66,191, 67,199,227,190, 83,123,127,
+190,224,119,122, 62,149, 46, 73, 62, 62, 43,135, 62,199,175, 30, 63, 2,224, 97, 62,250,198,180, 63, 48, 97,211, 61,130,134, 38,
+ 61, 8, 53,167, 62, 91, 40, 56, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,157,115, 93, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 36,188,127,192, 42,192, 83, 63,202, 24, 20,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,223, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 82,121, 10,190,216,142,233,191, 83,156, 94, 62,158, 73,222, 63, 3,207,170,
+191, 39, 41, 63, 62,147,164, 2,191, 38,187, 36, 62,218, 1, 0,191, 32,119,145, 60,154,242,191, 62,130,165, 14, 63, 49,236,127,
+ 60,253, 44,163, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,130,194, 13,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 34, 76,221,191,220, 63,195, 64, 19, 92,101,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,252,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 32, 89,101, 63, 82, 91,234, 60, 86, 78,243, 63, 12, 61, 22,
-190,178,120,249,191, 37, 19,203, 63, 24, 65,128, 63, 52,226,196,191, 0,214,219,190,210,228,203, 61,144, 5,191, 62,203,251, 27,
- 62,232,217, 8, 61,156,169,185, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62,113,165, 7, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,191,208,209, 0,192, 57, 98,175, 63,244, 39,214,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 64,253,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 6,136,242,191, 58,135,240, 61,233,198, 89,
- 63, 41,148, 57,190,189,188,151,190,189, 72,156, 63, 86, 14,184,190,165, 54,185, 62, 49,220,131,189,189, 87, 60, 61,100,142, 40,
- 62, 18, 81,206, 63, 34,238, 52, 62, 40,209,214, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 61,181,132,186, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,192, 19,146,156, 63, 38,169,132, 64,133,240,119,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 64,254,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,104,191,123,190,172, 12, 91,
- 62,112, 97,100, 61,150, 67,240, 61,241,234,237,190, 65, 15,121, 62, 61, 2,224,190,233, 38,159,187,191, 62,118, 63, 29,119,107,
- 62,202, 98,177, 63, 14,134,157, 60,213,140,246, 60,179,116, 97, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63, 69,173,159, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,211,209,100,192, 64, 57, 80, 64,100, 52,239,191, 55, 81,190,191, 71,243,109,
+ 63, 51,117,191,192, 44,247, 40, 64, 82, 59, 84,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 59, 71,176, 89,191, 18, 55,214,190,223, 82, 67, 63, 50, 2,142, 61,202, 17,235, 62,199,118, 51,
+ 63, 72,125,129,191, 36,250, 86, 61, 90, 99, 70, 63, 25, 38,125, 61,227, 50,218, 61,110,152, 48, 62,104, 58,166, 63, 26,161,121,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 35, 69, 21, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 44,218, 23,
+190,159,112,131, 64, 80,196, 68,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,225, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191, 39, 65, 62,190,203,203,175,191, 8, 58, 24,190,185,178,132, 63, 27,133, 48, 63, 35,150,166,189,174,164,195,
+189,209, 20,146,191, 3, 43,124, 63, 54,188,219, 62, 53,126, 23, 63, 22,113, 93, 62, 42,104, 29, 61,140,168,166, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,222,122, 90, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 61,253,222,190, 43,216,212,
+ 64,140,239,219,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,226, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+190,251, 62, 59, 62,132,207,154,191, 19,198,191,191, 25, 82,122,190,169,114,179,191, 46, 80,242,189,100, 92,161, 62,188,103,125,
+191, 23,234, 0, 63, 22,140, 12, 62,252, 36, 24, 62,121,130,191, 61,198,245, 96, 62, 42,186, 98, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 89,205, 62, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,212,168,192,192, 30,175, 47, 64, 12,228, 94,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,227, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 6,136,242,
+191, 58,135,240, 61,233,198, 89, 63, 41,148, 57,190,189,188,151,190,189, 72,156, 63, 86, 14,184,190,165, 54,185, 62, 49,220,131,
+189,189, 87, 60, 61,167,198,118, 62, 80,200, 92, 63, 10,210,157, 62, 48, 9,240, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,181,132,186, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,238,184,114,191,230,206,237, 64, 85,122,208,191, 55, 81,190,
+191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,228, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 30,165,128,190,249, 50,161,
+189, 86,213,180,191, 29, 10,178,191, 49,247,227,189, 7,139,215,189,154,249,222,191, 23, 77,153, 63, 14, 58,160, 61, 15, 47, 72,
+ 62, 94,132,138, 62, 48,190,167, 62,136, 41,203, 62,176, 52,157, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 62,233,177, 38, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,104, 19, 67,191,254,122,179, 64,123, 37,115,191, 55, 81,190,191, 71,243,109,
63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 64,255,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,157, 46,129,
-191, 47,142,239, 60,219,129, 7, 63, 40,203,124,189,122,175, 5, 62,139, 33,180, 61, 63, 8,162,191, 26,191, 75, 61,189,191, 52,
-190,100,188,125, 61,112,222,131, 60,161,149,150, 61,202,188,127, 63, 82,141,219, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 58, 78, 34, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,195, 40,204,192, 22, 66,169, 64, 88, 69, 56,191, 55, 81,190,
-191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 25, 69,168, 62,124,123, 76,191, 32,238,100, 62,220,140,234, 61,120,159, 84, 61,244,254,187, 63, 59,215,103,190, 71,235,244,
-191, 73,172, 9,190,165,228, 94, 62, 39,198,237, 61,180,166,232, 62,106, 45, 33, 63, 4,238, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,104,255,128, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,124, 41,179,192, 92, 52,215, 64, 56,194, 1,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,229, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,181,231, 69, 63, 51, 19, 36,191, 6, 5,126,
+190,170, 27,231,189, 35,253,128,189,151, 11,182, 62,178,171, 74, 63, 49,231,127, 62,128,146,204, 62, 17,100, 88, 62,124,245,197,
+ 61,130,108, 30, 61,229,152,201, 63, 19,193,242, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 79,156, 56, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,191,106,172,192, 42,225,110, 64,110,170, 2,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98,
+ 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,230, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 27,227, 49, 63, 26, 83, 17,191, 2,229, 27, 61,135, 48, 83,
+ 62,134,244,199,190,151, 37, 55,189,237,195,210, 63, 17, 39,249, 61, 76, 1,154,191, 79,194, 75, 61,249, 99,240, 60,249, 88,190,
+ 61,183, 20,174, 63, 66, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,178, 40,150, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 12, 3,121,190,252, 11, 63, 64, 89,136,146,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,231, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 20, 59,104, 63, 17, 36, 30,190,252, 57,112, 62,162,101, 32, 62,160, 6,139,
+ 61, 80,160, 57, 61,245,243,109,190,224, 18, 41,188,227,154,182,190,139,196,238, 62,108, 28,173, 62,246,152,191, 62, 61, 50,199,
+ 61,210,254, 31, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 56,166, 20,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+191,187,104,250,189,139, 86, 56, 64,131, 23,145,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,
+190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,232, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 19, 80,228,191, 16,138,118,191, 6,210,122, 62,138, 14,139, 62,189, 65, 73,189,244, 89, 19,
+ 62, 83, 5,205,190,107,159, 94, 62,255,199, 19,190, 48,124, 14, 62,208, 67, 15, 62,190, 57,184, 61,219,154,119, 61,234,114,111,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,223, 51,203, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,161, 56, 52,
+191,207,221,255, 64,120,110,202,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,233, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 47,124,138, 63, 0,193, 12, 62,176, 39,124,190,204, 3, 68, 61, 43,180,132,189,104,184, 66,191, 54,173, 69,
+189,116,239, 24,190, 53,183,191,190,198, 91,120, 62,150, 33,123, 61,226, 30, 68, 62, 27,121,224, 62,227,154, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 35, 22,117, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 41, 89, 63,192, 25,107,117,
+ 63,222,245,174,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,234, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,207,202, 66, 63, 47, 32,211,191, 0,219,139,190,172,212,197, 63, 65, 68,195,190,217,152,105,190,214,218,159,190, 84,113, 85,
+190,158,108,194, 61,235,217,229, 60,202,179, 82, 62,157,106,197, 63, 33,197,211, 61, 18,243, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,102,162, 1, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,220,238, 94,191,150, 70, 91, 64, 72,192,203,
191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 1,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,175,191,249, 63, 67,210, 72,190,255, 44, 91, 62, 97,232, 36,191, 70, 89,183,190,246, 37, 58, 61,211,174,112,
-189,119,174,231,191,119, 2,237, 62, 35,205,180, 59,158,119,225, 59, 89,185, 62, 62,150, 41, 58, 63, 50,212,186, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 32,102, 78, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 66,215, 78,189, 17,102, 16,
- 64, 82, 64,251,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 2,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,190,158, 15, 40,191, 27, 48, 97,191, 41,181, 48,190,160, 19, 31,189,153, 23, 91,190,110,243,100,
-190,164,169,182,191,120,129, 97, 60, 90,101,145, 61,186, 53,193, 62, 31, 65, 94, 63, 45, 57,152, 61,248,240,117, 61, 61,128, 59,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,137, 79,196, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,243,234,243,
-192, 50,199, 12, 64,118,173,246,191, 55, 81,192,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,197,190, 61,137,205,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 3,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,136,137,130,191,106, 7,101,190,155,249,249, 60,155,218,146,188,184,212,179,
-189,201,215, 68,191, 61,244, 40, 61, 70,234,114,191, 1,226,154, 63, 91,139,119, 61,207, 64,202, 60, 89,106, 46, 61, 13, 53, 30,
- 63, 89,222,236, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 87, 40, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,235, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 22, 95,176,
+190,210, 95,172,191, 46, 70,114, 62, 26, 71, 67, 61,234,164,188,191, 78,120,121,188,108,229,186,190, 72,225,144,190, 42,218,197,
+191,114,104, 83, 62, 77,183, 13, 62,182,153,158, 62,143, 59, 65, 62, 38,159, 52, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 95,144,226, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192,116,234, 61,188,238,101,224, 64, 56, 20,165,191, 55, 81,190,
+191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,236, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 6,136,242,191, 58,135,240,
+ 61,233,198, 89, 63, 41,148, 57,190,189,188,151,190,189, 72,156, 63, 86, 14,184,190,165, 54,185, 62, 49,220,131,189,189, 87, 60,
+ 60,242,255, 31, 63, 83,194,231, 62, 5, 56,189, 60, 85,188, 68, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 61,181,132,186, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189,240,209,128, 63, 95,183,178, 64,176, 67, 5,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,237, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 86,114,107,191, 2,141,137, 61,105,140,227,
+190, 63,121, 70, 62,218,242,130,190,132,163,237, 60, 16,235,219, 62,248,203, 85,191, 80,244, 79, 62,148, 0,103, 63, 85,189,153,
+ 61,200,104,151, 60,142, 55,246, 61, 76, 57, 74, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 33,252, 31, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,192, 25, 54,206, 62,162,197,171, 64,121, 16, 6,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98,
+ 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,238, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,244,100,219,191, 91, 69,182,189,144,137, 60, 62, 59,126,161,
+190,200,228, 28, 62,170, 49, 60,189,250,139,225, 62,111,143,244,191,100,103,252, 62, 79, 32,148, 62,163,246,104, 63, 16,201, 91,
+ 61,136,104, 24, 61, 66,230,227, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63, 41, 88,182, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 61, 57, 29,191, 39, 53,236, 64, 55,221,173,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,
+190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,239, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 43,167, 61,225,210,242, 63, 30, 58,197, 63, 67, 8,229, 61,222,176,215,
+ 63, 12, 15, 70, 62,165,195, 80, 61,227, 72,218,191, 87, 66,188, 62,195,213,145, 61,212,218, 39, 63, 25, 20,242, 62,118, 70,122,
+ 61,107,226,159, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 64, 74,173,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-191, 54,176,174,191,187,173, 99, 64, 93, 31,209,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 4,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 71,176, 89,191, 18, 55,214,190,223, 82, 67, 63, 50, 2,142,
- 61,202, 17,235, 62,199,118, 51, 63, 72,125,129,191, 36,250, 86, 61, 90, 99, 70, 63, 25, 38,125, 62,129,144,101, 62, 91, 1,185,
- 62,121, 67, 60, 62,148, 77, 32, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62, 35, 69, 21, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,192,100,131,238,191, 81,185,222, 64, 27, 50, 40,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 5,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 43,167, 61,225,210,242, 63, 30, 58,197,
- 63, 67, 8,229, 61,222,176,215, 63, 12, 15, 70, 62,165,195, 80, 61,227, 72,218,191, 87, 66,188, 62,195,213,145, 60, 70,146,197,
- 63, 44,125, 83, 62,156,124, 64, 60, 10,144,125, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 64, 74,173, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,190,248, 77,226,190,103,109, 12, 64,143,231,230,191, 55, 81,190,191, 71,243,107, 63, 42,237,100,
- 62,214,163,235,190,183,206,199,190, 61,137,204,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 6,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,251, 62, 59, 62,132,207,154,
-191, 19,198,191,191, 25, 82,122,190,169,114,179,191, 46, 80,242,189,100, 92,161, 62,188,103,125,191, 23,234, 0, 63, 22,140, 12,
- 63, 3,173, 53, 62, 78,233,187, 61,187,225, 77, 62, 68,112,203, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62, 89,205, 62, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 10, 80,129,192, 74,130,253, 64,109,179,124,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 7,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 71,176, 89,
-191, 18, 55,214,190,223, 82, 67, 63, 50, 2,142, 61,202, 17,235, 62,199,118, 51, 63, 72,125,129,191, 36,250, 86, 61, 90, 99, 70,
- 63, 25, 38,125, 60,202, 2,215, 59,181,116, 38, 60,204,167,240, 63,113,223,193, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 35, 69, 21, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 55, 37, 73,191,210, 44, 92, 64, 12, 20,134,191, 55, 81,190,
+191, 40, 62,249, 63, 26,113, 16, 64,160,179, 50,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,240, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,190,224, 29,190, 63, 4, 44,239, 63, 49,217,125,190,121, 25,107, 62,217,172,117,190,116, 98,242,
+ 63, 42,162,148,190,199,178,142,191, 13,105, 54,190,163,107, 83, 63, 45,186, 64, 62, 91,122,109, 61, 21,134, 32, 61,144,118, 21,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 73,107,113, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,138, 51, 90,
+192,110, 14,199, 63,203, 66, 18,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,241, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 39, 78, 36,190,251, 50,128,190,189,185,139, 62,226, 4,175,190,153, 23,118,190,120,228, 67,191, 42,226, 50,
+191, 86,243,239,190,189, 42, 37,190,190, 1, 66, 59,153,223,235, 59,243,174, 21, 63, 60,160,231, 62,128,135,251, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,105,245,167, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,186, 75, 44,191,204,205,170,
+ 64, 61,169,132,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,242, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,155,223,118,191, 3,196,249,190,163, 12,115,191, 60, 73,212, 62, 85,208, 59, 62,155, 11, 65,189,173, 17, 28,190,254, 16, 20,
+ 63, 32,229,213,189, 28,221,216, 62, 52, 19, 79, 62,146, 52,229, 62,171,228,191, 62, 79,185,106, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 37,184, 45, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,219,119, 4,192, 28, 73,231, 64,128,117, 83,
+191, 55, 81,188,191, 71,243,109, 63, 42,237,100, 62,214,163,233,190,183,206,202,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,243, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,109,168,
+ 63, 4,146,210, 63, 23,131,232, 62,187,212, 66,190,158,109, 9, 62,216, 12, 71, 59,153, 20, 64, 62, 7, 2, 11, 62, 91,134, 92,
+191, 33,128, 43, 62, 51, 75,186, 60,144,251,206, 61, 19, 49,198, 63, 69,114, 22, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,115,100,221, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,194, 59,172,192, 13, 29, 35, 64, 30,208, 13,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 8,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 15, 7, 34,190, 46,194,135, 62,148, 82, 36,191, 66, 22,185, 63, 53,135,211,190,172, 29,111, 62,229, 68,200, 62,140,167,253,
-190, 99,223,181,190,176,226, 35, 61, 50,158,144, 62,230,247, 53, 62,236, 25,253, 61, 52,215,226, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,214,199,202, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,152,163, 4,192, 16,189,233, 64, 39, 29,148,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 9,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,189,236, 25,179, 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,190,103,198,244, 62,187,192,251,190,101, 39,179,
- 62,138,210,110,191, 54,168,145,190, 63, 20,208, 61,250,136,113, 62, 71, 45,109, 62,222,240,248, 62,125,172,108, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,109,210, 2, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,213,219, 83,192, 77,221,119,
- 64, 90,157, 98,191, 55, 81,192,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,197,190, 61,137,205,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 10,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 4,225, 56, 63, 35,172,239,191, 4, 44, 92,190,112,166, 88,190,176,149,229, 63, 6,184,233,
-191, 44,120, 91, 63, 20, 36,208, 63, 79, 84,165, 61, 89,145,190, 60,192,154,154, 60, 43,233,206, 62, 0, 13, 68, 63, 87, 72, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 32,131, 34, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,106, 39,118,
- 63,114, 29,130, 64,164,123,156,191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,
-191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 11,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 45, 97,119,190,205, 47,119, 63, 19,117, 35, 62, 98,125,166, 62, 73,195,242,
- 62,243,228,124, 63, 11, 86,119, 62, 89,156, 70, 63, 88,232,230,190,204, 53,130, 63, 54, 27,149, 62,133, 38,243, 60, 53, 55,232,
- 60,143,130, 91, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,253,129, 53,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,244, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,155,223,118,191, 3,196,249,
+190,163, 12,115,191, 60, 73,212, 62, 85,208, 59, 62,155, 11, 65,189,173, 17, 28,190,254, 16, 20, 63, 32,229,213,189, 28,221,216,
+ 61,227, 31, 97, 62,104,207,168, 62,237, 89, 38, 62, 74,238, 93, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 37,184, 45, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 82,190,197, 62,174,148,251, 64, 91,189, 29,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,245, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 10,132,170, 62,237, 61, 82,190,223,191,127,
+ 63, 12,148, 11, 62, 92,142,236, 63, 32,199, 17,189,242,206,157, 63, 15,114,199,191, 33, 82, 91,190,167,247, 3, 62, 37, 10,210,
+ 63, 65,152,124, 61,106,110, 28, 60,207,189,179, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 62,140, 23, 40, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,190,163,157,120, 63, 33,219, 44, 64,167, 25,250,191, 55, 81,190,191, 71,243,107, 63, 42,237,102,
+ 62,214,163,237,190,183,206,199,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,246, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 4,175,102,190, 50,200,160, 63, 77,214,248,190,110,194,226,
+ 61,198, 10,138, 62, 62,213,210, 61,253,163,141, 61,160,130,106,191,101,229,201, 62, 50,145,103, 63, 61,192, 52, 62, 23, 50, 16,
+ 61, 1, 56, 40, 61,162,254, 43, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 60,220, 81, 89, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 79, 63,131,191,203,225, 22, 64,133, 83,183,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,247, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,194,155, 70,191, 3, 93, 82,191, 19,133, 23,191, 2,146,179, 62,104,198,131,
+ 63, 93,189, 15,190,209,226, 77,191, 21,122,159,190,234,192,169, 63, 35,128, 16, 62,167,188, 9, 61,138,167,141, 61,185,163,186,
+ 63, 3,152,147, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 59,236,249, 25,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192,102, 71, 4,190,194,109,241, 64, 47, 39,108,191, 55, 81,192,191, 71,243,107, 63, 42,237,100, 62,214,163,233,190,183,206,198,
-190, 61,137,204,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 12,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,105,157,127, 62,184, 8,148,191, 7,109,181,191, 68,194,177,
-190,220, 77,163, 63,101,120, 58, 61, 25,105,241, 62, 86,197, 69,190,236, 78,214, 63, 46,136,126, 61, 22,203,152, 63, 61,161,132,
- 62, 79,196, 67, 60,160, 22, 79, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 93,148,112, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,214,224, 12,192, 5,182,225, 64,136, 59,246,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 13,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 24, 46,192,191, 43, 20, 41, 62,183,184,186,
- 62,136,173, 42, 63, 50, 75, 75, 62,126, 83, 40, 63, 8,195,188, 62,238,211,234, 61,152, 36, 69, 62,145,106,235, 62,131, 28,211,
- 60, 46,255, 24, 60,139,165, 11, 63, 55, 88,113, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 57,122, 93, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 92,158, 95,192, 67,243,117, 64, 70,154, 16,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 14,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 4,175,102,190, 50,200,160,
- 63, 77,214,248,190,110,194,226, 61,198, 10,138, 62, 62,213,210, 61,253,163,141, 61,160,130,106,191,101,229,201, 62, 50,145,103,
- 61,104, 55,112, 61, 9, 23, 14, 62,129, 82,208, 63, 40, 65,176, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 60,220, 81, 89, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 31,234, 87,192, 65,234,204, 63,172,200,110,191, 55, 81,190,191, 71,243,109,
+ 62, 89,218, 20,192, 81, 21,169, 64, 38,226, 50,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,
+190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,248, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 52,169,139, 62,156,163, 97,190,184,132, 26, 63, 7, 25, 82, 62,151,117,127, 62,247,206,254,
+ 63, 76,144, 27, 62,204, 57,150,188,246,181,184, 63, 19,222,196, 61, 18,237,175, 61, 0, 0, 50, 62,208, 45,180, 63, 6,186, 72,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,186,195, 61, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,166, 91,192,
+ 62,151,138,203, 64,159, 4,232,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,249, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 7,240,212,191, 18, 2,213,191, 5, 90,228, 62,178, 92,221, 63, 16,236, 8, 62,151,216, 90, 62,128,193,155,
+188,245, 60, 56,190,160,129,118,191,113,157, 47, 63, 40,117,114, 62, 37, 92,164, 61, 78,198, 72, 62, 5, 28, 6, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,226, 96,137, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,191,137,104,190,208,156,143,
+ 64,116,245,234,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,193,250, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 49,218,173,191, 23,109,113, 62, 55, 16, 32,190,188,117, 54, 62,208, 20, 25,191, 46,245,118,186,236,158, 72,191, 97, 10, 55,
+ 62,183,128,140,190,146,230,177, 62,174,217,121, 62,188, 55, 45, 62, 25, 76, 41, 62, 16,146,138, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 48, 85, 96, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 78, 6,218,191, 2,247,240, 64,131,181, 2,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,251, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,236, 25,179,
+ 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,190,103,198,244, 62,187,192,251,190,101, 39,179, 62,138,210,110,191, 54,168,145,
+190, 63, 20,208, 62,211,209,237, 62,129,168, 1, 62, 7,237,108, 62, 77, 30,188, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,109,210, 2, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,251,181,100, 63, 79, 67,160, 64,143,115, 83,191, 55, 81,190,
+191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,193,252, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,237,243,122,190,169,234, 11,
+191, 55,226,211,191, 25,175,184, 63, 39,201, 24,190, 71, 23,204, 62,218, 61, 87, 63, 39,211, 31,190,215,101,108,189,244,125, 35,
+ 62,250, 56, 31, 62,248,208,174, 60, 79, 43, 50, 60, 79,186,252, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 61,186,130, 83, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 16,143,166,192, 31, 40,219, 63,240,165,188,191, 55, 81,190,191, 71,243,109,
63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 15,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 99,180,162,
- 62,145,169,127, 62,174, 95,114,189,223,121,169, 63, 73,190,173,190, 51, 72,118,190,162, 48,116,189,139, 98, 59, 62,191,245, 77,
- 61,253,124, 75, 60, 48,252,197, 62, 62,176,163, 63, 72, 93,216, 60,166, 65, 94, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 12, 69, 81, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,189,122, 76,191,102,243,238, 64, 93,253,158,191, 55, 81,190,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,253, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 15,157,192,190,205, 51, 47,190,136, 40,152,
+ 63, 44,122,128, 63, 92,144,194,190, 99, 36,235,190,206, 22,244, 62,220, 32,143, 63, 19,244,169,189,238,205,160, 61, 69,255, 93,
+ 62,129,237,131, 63, 29,113,199, 61,169,188, 16, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 61,151,139,249, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,192, 46, 16, 47, 62, 17,135,234, 64,101,174,196,191, 55, 81,190,191, 71,243,107, 63, 42,237,100,
+ 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,254, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,162,110,186,190,105,104,145, 62,239,168,247, 63, 74,235, 3,
+190,178, 77,140, 63, 72, 49, 80, 62,112, 45,164, 63, 44,101, 43, 62,173,162, 95,190,104,215,180, 62,112,185,132, 63, 31,198, 76,
+ 61,186,148, 82, 61, 75,140,149, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 61,120,174,161, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 34, 76,221,191,220, 63,195, 64, 19, 92,101,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193,255, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 32, 89,101, 63, 82, 91,234, 60, 86, 78,243, 63, 12, 61, 22,190,178,120,249,
+191, 37, 19,203, 63, 24, 65,128, 63, 52,226,196,191, 0,214,219,190,210,228,203, 61,144, 5,191, 62,203,251, 27, 62,232,217, 8,
+ 61,156,169,185, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,113,165, 7,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+191,208,209, 0,192, 57, 98,175, 63,244, 39,214,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62, 6,136,242,191, 58,135,240, 61,233,198, 89, 63, 41,148, 57,190,189,188,151,190,189, 72,156,
+ 63, 86, 14,184,190,165, 54,185, 62, 49,220,131,189,189, 87, 60, 61,100,142, 40, 62, 18, 81,206, 63, 34,238, 52, 62, 40,209,214,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,181,132,186, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 19,146,156,
+ 63, 38,169,132, 64,133,240,119,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,104,191,123,190,172, 12, 91, 62,112, 97,100, 61,150, 67,240, 61,241,234,237,190, 65, 15,121, 62, 61, 2,224,
+190,233, 38,159,187,191, 62,118, 63, 29,119,107, 62,202, 98,177, 63, 14,134,157, 60,213,140,246, 60,179,116, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 69,173,159, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,211,209,100,192, 64, 57, 80,
+ 64,100, 52,239,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+190,157, 46,129,191, 47,142,239, 60,219,129, 7, 63, 40,203,124,189,122,175, 5, 62,139, 33,180, 61, 63, 8,162,191, 26,191, 75,
+ 61,189,191, 52,190,100,188,125, 61,112,222,131, 60,161,149,150, 61,202,188,127, 63, 82,141,219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 58, 78, 34, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,195, 40,204,192, 22, 66,169, 64, 88, 69, 56,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 3, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 25, 69,168,
+ 62,124,123, 76,191, 32,238,100, 62,220,140,234, 61,120,159, 84, 61,244,254,187, 63, 59,215,103,190, 71,235,244,191, 73,172, 9,
+190,165,228, 94, 62, 39,198,237, 61,180,166,232, 62,106, 45, 33, 63, 4,238, 32, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,104,255,128, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,124, 41,179,192, 92, 52,215, 64, 56,194, 1,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 16,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-189,218,139, 33,190,222, 81,160,190,151, 71, 75,191, 88, 33, 47,190,128,174,152,190,107,218, 43,190, 66, 96, 40,190,113, 29,219,
-190,184,240, 89, 62,204, 92,153, 62,135,159,101, 62,174,216,253, 62, 96, 99,217, 62, 50,171,104, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,207, 27, 5, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 67, 75,227, 61, 78,124, 48, 64,171,150,200,
-191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 17,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,190,190, 19, 92, 62,147,203,188, 62, 2,242, 19, 63, 95,138,223, 60, 24, 50,144, 63, 64,174,148,191, 11,158,196,
- 63, 64, 22,220,190, 19, 35, 98, 62, 44, 93,217, 63, 58,115,191, 60, 2,198,121, 59,167,102,254, 62,132,100,178, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 27,176,189, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,139, 37, 24, 63, 62,231, 4,
- 64,179,205,174,191, 55, 81,188,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,206,191, 80, 38,156,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 18,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 60,239,220, 87,191, 46,204,168, 61, 84, 95, 78,191, 58,105, 8, 63, 43,245,231, 62,151,254, 91,
- 61,206,143, 77, 63, 42,139,177,190,196,107, 26,190,139,211,150, 63, 92, 23, 50, 61, 15, 27,169, 60, 83, 43, 8, 61,189, 83, 59,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 49,221,121, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,225,247, 32,
-192, 81,175, 37, 63,198,254,248,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 19,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,130,132, 59,190,120,166,131,191,109,191, 15, 61,238,164,170,190, 78, 93, 20,
-189,231,164,245, 62, 16,254,254,190,234,189, 61,189,116,167,116, 63, 16,175, 67, 61, 2,132, 66, 61,189, 37,191, 63, 64, 5,173,
- 62, 0,181, 91, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 2, 93,129,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 4, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,175,191,249, 63, 67,210, 72,
+190,255, 44, 91, 62, 97,232, 36,191, 70, 89,183,190,246, 37, 58, 61,211,174,112,189,119,174,231,191,119, 2,237, 62, 35,205,180,
+ 59,158,119,225, 59, 89,185, 62, 62,150, 41, 58, 63, 50,212,186, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 32,102, 78, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 66,215, 78,189, 17,102, 16, 64, 82, 64,251,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 5, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,158, 15, 40,191, 27, 48, 97,191, 41,181, 48,
+190,160, 19, 31,189,153, 23, 91,190,110,243,100,190,164,169,182,191,120,129, 97, 60, 90,101,145, 61,186, 53,193, 62, 31, 65, 94,
+ 63, 45, 57,152, 61,248,240,117, 61, 61,128, 59, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 61,137, 79,196, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,243,234,243,192, 50,199, 12, 64,118,173,246,191, 55, 81,192,191, 71,243,107, 63, 42,237, 98,
+ 62,214,163,235,190,183,206,197,190, 61,137,205,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 6, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,136,137,130,191,106, 7,101,190,155,249,249, 60,155,218,146,
+188,184,212,179,189,201,215, 68,191, 61,244, 40, 61, 70,234,114,191, 1,226,154, 63, 91,139,119, 61,207, 64,202, 60, 89,106, 46,
+ 61, 13, 53, 30, 63, 89,222,236, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63, 87, 40, 6, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,191, 54,176,174,191,187,173, 99, 64, 93, 31,209,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 7, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 71,176, 89,191, 18, 55,214,190,223, 82, 67, 63, 50, 2,142, 61,202, 17,235,
+ 62,199,118, 51, 63, 72,125,129,191, 36,250, 86, 61, 90, 99, 70, 63, 25, 38,125, 62,129,144,101, 62, 91, 1,185, 62,121, 67, 60,
+ 62,148, 77, 32, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 35, 69, 21,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 61,165,110,200, 62,239, 43,183, 64,169,243,129,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 20,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 49,218,173,191, 23,109,113, 62, 55, 16, 32,190,188,117, 54,
- 62,208, 20, 25,191, 46,245,118,186,236,158, 72,191, 97, 10, 55, 62,183,128,140,190,146,230,177, 63, 66,109, 62, 61,170,159,244,
- 60,243,150, 79, 62, 2,136, 69, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 48, 85, 96, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,191,243,158, 12,192,104,237,244, 63,155, 34,138,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 21,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 49, 22,155, 62,165,232,223,191, 6,208,133,
-190,190,253, 93,190,194,234,190,191, 29, 89,239,191, 23,110,134,191, 30,217, 8,190,205,159,107,190,185, 94, 18, 60, 92,106,228,
- 61, 35, 25, 23, 63, 93,111,136, 61,167,105,211, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,132,153,252, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 8, 74,118,192, 1,240, 0, 64,108,123, 28,191, 55, 81,190,191, 71,243,107, 63, 42,237,102,
+192,100,131,238,191, 81,185,222, 64, 27, 50, 40,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 8, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 43,167, 61,225,210,242, 63, 30, 58,197, 63, 67, 8,229, 61,222,176,215, 63, 12, 15, 70,
+ 62,165,195, 80, 61,227, 72,218,191, 87, 66,188, 62,195,213,145, 60, 70,146,197, 63, 44,125, 83, 62,156,124, 64, 60, 10,144,125,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 64, 74,173, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,248, 77,226,
+190,103,109, 12, 64,143,231,230,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,199,190, 61,137,204,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 9, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,190,251, 62, 59, 62,132,207,154,191, 19,198,191,191, 25, 82,122,190,169,114,179,191, 46, 80,242,189,100, 92,161,
+ 62,188,103,125,191, 23,234, 0, 63, 22,140, 12, 63, 3,173, 53, 62, 78,233,187, 61,187,225, 77, 62, 68,112,203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 89,205, 62, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 10, 80,129,192, 74,130,253,
+ 64,109,179,124,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 10, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 59, 71,176, 89,191, 18, 55,214,190,223, 82, 67, 63, 50, 2,142, 61,202, 17,235, 62,199,118, 51, 63, 72,125,129,191, 36,250, 86,
+ 61, 90, 99, 70, 63, 25, 38,125, 60,202, 2,215, 59,181,116, 38, 60,204,167,240, 63,113,223,193, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 35, 69, 21, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 55, 37, 73,191,210, 44, 92, 64, 12, 20,134,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 11, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 15, 7, 34,
+190, 46,194,135, 62,148, 82, 36,191, 66, 22,185, 63, 53,135,211,190,172, 29,111, 62,229, 68,200, 62,140,167,253,190, 99,223,181,
+190,176,226, 35, 61, 50,158,144, 62,230,247, 53, 62,236, 25,253, 61, 52,215,226, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,214,199,202, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,152,163, 4,192, 16,189,233, 64, 39, 29,148,191, 55, 81,190,
+191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 12, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,236, 25,179, 63, 27,158,127,
+ 62,239,235,123, 63, 33,108, 59,190,103,198,244, 62,187,192,251,190,101, 39,179, 62,138,210,110,191, 54,168,145,190, 63, 20,208,
+ 61,250,136,113, 62, 71, 45,109, 62,222,240,248, 62,125,172,108, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,109,210, 2, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,213,219, 83,192, 77,221,119, 64, 90,157, 98,191, 55, 81,192,191, 71,243,107,
+ 63, 42,237, 98, 62,214,163,235,190,183,206,197,190, 61,137,205,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 13, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 4,225, 56, 63, 35,172,239,191, 4, 44, 92,
+190,112,166, 88,190,176,149,229, 63, 6,184,233,191, 44,120, 91, 63, 20, 36,208, 63, 79, 84,165, 61, 89,145,190, 60,192,154,154,
+ 60, 43,233,206, 62, 0, 13, 68, 63, 87, 72, 51, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 32,131, 34, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,106, 39,118, 63,114, 29,130, 64,164,123,156,191, 55, 81,190,191, 71,243,107, 63, 42,237,102,
62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 22,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,104,155,217,190, 29,164,215,
-190,179, 60,175, 62, 43,201,201, 61, 67, 60,100,189, 90, 42,171,191, 4, 85, 68, 62,130,249, 67,190,133,199,230, 63,107, 14,149,
- 62,101,242,233, 61,181,120,181, 62, 43,136,231, 63, 4,241,245, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,108,179,252, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,231, 24, 26,191, 21,105, 44, 64, 98, 32,186,191, 55, 81,190,191, 71,243,107,
- 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 23,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 49, 52,126,
- 63, 43, 9,201,190, 96,234,166,190, 37,210,182, 61, 54, 58,206, 63, 63, 1,231,191, 34,173,133,190,170,154, 5, 63, 51,112, 93,
-191, 23, 61, 18, 62,138,189, 66, 62,210,103,114, 62, 62,128,117, 62, 7, 54, 35, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,126,132, 33, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 5, 52,141,192, 49,103, 10, 64, 37,154,230,191, 55, 81,190,
-191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 24,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 32, 96, 77, 62,160,201,185, 63, 6, 3,160,190,248, 34, 11, 60,185, 53,206, 61,178,197,192, 63, 53,184,174,190,162,172,223,
- 62,224,136,109,191, 61,173,142, 61,184, 47,132, 61,207,157,244, 62,225, 0,168, 62,189, 11,249, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,150,112,248, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,177, 45,136, 63, 99,253, 22, 64,155, 58, 8,
-191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 25,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 55,202, 47,190, 89,235,249,190, 92, 18,127,191, 32,129,146,190, 8,212, 7,190,171, 50,167, 62,123,120, 97,
-189,249,152,232, 62,149, 18,140, 61, 13,111, 37, 63, 28,253,147, 62,184,184,231, 60, 58, 48, 48, 60,111, 78, 59, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 18, 61,115, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 57,255, 42,192, 65, 4,235,
- 64, 19, 7, 77,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 26,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,189,133,218,208,189,176, 10,116, 63, 10,237,186, 63, 85, 61, 14,190, 38,219,182, 62,206,175,174,
- 63, 10,240, 47,190,114,232, 31,190,207,162, 91,190,193, 85,173, 61,128,255,228, 61,172, 32, 76, 63, 5,152,147, 62,169,134,205,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,212, 38, 62, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,137, 68,184,
- 61,226,177,204, 64,141,247,196,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 27,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,146,138,133,187, 8, 75,133, 62, 68,235, 28, 63,122,141,122, 63, 92,117,116,
-190,125,147, 7,190,147, 49, 87, 63, 41, 88, 9, 63, 2,255, 63, 61,126, 44, 71, 63, 0,166,107, 62,154, 29, 23, 61,165,214, 34,
- 61,236,130, 42, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,103,170,241,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 14, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 45, 97,119,190,205, 47,119, 63, 19,117, 35, 62, 98,125,166,
+ 62, 73,195,242, 62,243,228,124, 63, 11, 86,119, 62, 89,156, 70, 63, 88,232,230,190,204, 53,130, 63, 54, 27,149, 62,133, 38,243,
+ 60, 53, 55,232, 60,143,130, 91, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,253,129, 53, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,102, 71, 4,190,194,109,241, 64, 47, 39,108,191, 55, 81,192,191, 71,243,107, 63, 42,237,100, 62,214,163,233,
+190,183,206,198,190, 61,137,204,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 15, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,105,157,127, 62,184, 8,148,191, 7,109,181,191, 68,194,177,190,220, 77,163,
+ 63,101,120, 58, 61, 25,105,241, 62, 86,197, 69,190,236, 78,214, 63, 46,136,126, 61, 22,203,152, 63, 61,161,132, 62, 79,196, 67,
+ 60,160, 22, 79, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 93,148,112,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 82,103, 22,191,201, 75, 73, 64, 0,247, 1,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 28,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,168,120,231,191, 7,154,179, 63, 48,180, 41,190,187,232,239,
-191,104, 35, 9, 62,114, 8,222,190,177,143, 76,191, 28, 29,107, 62,234,112,210,190, 92,249, 9, 59,118,109, 73, 63, 4,155,168,
- 62,243, 2, 73, 59,108,198,186, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62,184, 4, 74, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,191,246,241,194, 62,236,130, 87, 64,135,209, 50,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 29,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,223,197,124,190,189,243, 32,190,140,213,199,
-191, 69,149, 13,190,199,235,221, 62,240, 79,159,190, 14,202,113,190, 60,168,186,190,220,145, 5, 62,148, 8, 42, 62,219, 99, 49,
- 62,242, 73, 85, 61, 79, 14,127, 61, 67,141, 68, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,192,236,157, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,189,149,228,224,190,221, 13,233, 64,145,251,210,191, 55, 81,190,191, 71,243,107, 63, 42,237,100,
- 62,214,163,235,190,183,206,199,190, 61,137,204,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 30,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,190, 19, 92, 62,147,203,188,
+ 63,214,224, 12,192, 5,182,225, 64,136, 59,246,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 24, 46,192,191, 43, 20, 41, 62,183,184,186, 62,136,173, 42, 63, 50, 75, 75, 62,126, 83, 40,
+ 63, 8,195,188, 62,238,211,234, 61,152, 36, 69, 62,145,106,235, 62,131, 28,211, 60, 46,255, 24, 60,139,165, 11, 63, 55, 88,113,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 57,122, 93, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 92,158, 95,
+192, 67,243,117, 64, 70,154, 16,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 17, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191, 4,175,102,190, 50,200,160, 63, 77,214,248,190,110,194,226, 61,198, 10,138, 62, 62,213,210, 61,253,163,141,
+ 61,160,130,106,191,101,229,201, 62, 50,145,103, 61,104, 55,112, 61, 9, 23, 14, 62,129, 82,208, 63, 40, 65,176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,220, 81, 89, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 31,234, 87,192, 65,234,204,
+ 63,172,200,110,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 18, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 99,180,162, 62,145,169,127, 62,174, 95,114,189,223,121,169, 63, 73,190,173,190, 51, 72,118,190,162, 48,116,189,139, 98, 59,
+ 62,191,245, 77, 61,253,124, 75, 60, 48,252,197, 62, 62,176,163, 63, 72, 93,216, 60,166, 65, 94, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 12, 69, 81, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,189,122, 76,191,102,243,238, 64, 93,253,158,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 19, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,218,139, 33,
+190,222, 81,160,190,151, 71, 75,191, 88, 33, 47,190,128,174,152,190,107,218, 43,190, 66, 96, 40,190,113, 29,219,190,184,240, 89,
+ 62,204, 92,153, 62,135,159,101, 62,174,216,253, 62, 96, 99,217, 62, 50,171,104, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,207, 27, 5, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 67, 75,227, 61, 78,124, 48, 64,171,150,200,191, 55, 81,190,
+191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 20, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,190, 19, 92, 62,147,203,188,
62, 2,242, 19, 63, 95,138,223, 60, 24, 50,144, 63, 64,174,148,191, 11,158,196, 63, 64, 22,220,190, 19, 35, 98, 62, 44, 93,217,
- 63, 4,141,198, 62, 19, 71, 3, 61,174,186, 60, 62,129,146, 99, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 63, 58,115,191, 60, 2,198,121, 59,167,102,254, 62,132,100,178, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 62, 27,176,189, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 89,120, 0,190,120,169,164, 64,155, 78, 26,191, 55, 81,192,191, 71,243,109,
- 63, 42,237, 98, 62,214,163,234,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 31,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 94,201,118,
- 62,213,189,192, 62, 67, 27,142,190, 55, 93,214,190,131,154, 6,190,178, 48,133,190,192, 11,139,189,147,123, 39,191, 57,130, 29,
-190, 33,253, 46, 63, 24, 89,224, 61,198,174,189, 61,101,152, 2, 62,128,237,143, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,117,122, 59, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 26, 80, 92,189,239, 3,232, 64, 99,210,182,191, 55, 81,190,
-191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 32,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-190,153, 16,148,191, 33, 1,224, 62,168,253, 43, 63, 35, 36,254,191, 19,255,124,190,138, 97, 70, 62, 6,109,188,190,223, 58, 64,
-189,189,121,154, 62,170,126, 9, 62,126,248,115, 63, 12, 41, 84, 62, 4, 55,153, 61,152, 85, 62, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,106,244, 74, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190, 70,245, 80,192, 37,148,136, 64, 57,107, 41,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 33,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,249,246, 44, 62,140,102,200, 63, 10,199,154, 63, 32,102, 40,191, 19, 10, 78,190,250,238,224,190,111, 13, 0,
- 61,187,232,243, 62, 99, 10,106, 62,221, 96,163, 61,239,237,208, 61,210, 34, 10, 62,181,101, 62, 62,218, 22,205, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 25,143, 35, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 25,172,253,191,249,234, 68,
- 64, 73,217, 59,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 34,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,230,109,205,190,189, 47, 67,189,155,119,205,191, 79, 53,238,191, 88,144,223, 62,146,163, 88,
-190,208, 99, 63, 62,130,235,236,190, 17, 10, 72, 63, 15,223,124, 62, 64,172, 12, 62, 51, 24,160, 62,156, 49,145, 62,169,236, 26,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 72,237,254, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 60, 63, 77,
-191,245, 70,192, 63,248,177,246,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 35,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 16,162, 50,190,219,180, 33,190,177,166, 24,191, 29, 8,234,190, 48, 26, 24,
-190,115, 70,240, 63, 54,197, 0, 62, 75,201, 69,189, 10,174, 28, 63, 78,128, 81, 60,175,109,172, 62,214,135, 7, 63, 9, 12, 59,
- 60,198,154,150, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,138, 50, 34,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,162,125, 6,192, 64,233, 63, 64, 86,167,147,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 36,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 11,120,234,190,253, 35,200,190,233,152, 2,191, 0, 38, 0,
-191, 36, 3,214,190, 45,239, 3,191, 9,175,135,190, 42,130, 18, 63, 38,197,156,190,238, 37,181, 61,119, 49, 4, 60,224,251,119,
- 62, 47, 5, 94, 63, 61,195,188, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62,191,162, 89, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,192, 27, 96,184,191,179, 23,251, 64, 38, 77,193,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 37,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 32,231,177, 62,239, 89,150,190,188,156,128,
-191, 0, 45,225, 62,210,133,247, 63, 40,169, 51, 63, 26,184,146,190,223, 39,209,191, 15,238,182,190,146, 63, 75, 61,213,161,166,
- 62,218,242,217, 62,191, 18, 39, 61,194, 74, 89, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 61,129,236, 81, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 21, 0,185,192, 14,241,137, 64, 61, 27,206,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,139, 37, 24, 63, 62,231, 4, 64,179,205,174,191, 55, 81,188,191, 71,243,107,
+ 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,206,191, 80, 38,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 21, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,239,220, 87,191, 46,204,168, 61, 84, 95, 78,
+191, 58,105, 8, 63, 43,245,231, 62,151,254, 91, 61,206,143, 77, 63, 42,139,177,190,196,107, 26,190,139,211,150, 63, 92, 23, 50,
+ 61, 15, 27,169, 60, 83, 43, 8, 61,189, 83, 59, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 49,221,121, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,225,247, 32,192, 81,175, 37, 63,198,254,248,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 38,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,213, 79,214, 63, 10, 19, 95,
-191, 56, 25, 60, 62, 10,193,193,190, 10,232,127,190, 93,126,162, 63, 7,169, 25,190,221,209, 38, 62,186,214, 52,191, 41, 63, 21,
- 62, 27, 36, 58, 62, 28,151,245, 62,179, 23, 82, 62,177, 10,148, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63, 41,241, 98, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189, 57, 80, 64,191,166, 80,193, 64,123,172,242,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 39,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,232,174,160,
- 61,164, 99, 64, 63, 12,108, 41,191, 50,126,106, 62,124,117, 66, 63, 82, 54,134, 62,191, 55, 38,190,197,232,121,189, 70,203,188,
-191, 51, 88, 26, 62,170,225,199, 62, 23, 67,114, 62, 33, 56,202, 62,184,224, 26, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,138,213,216, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,219,106,202, 63,127,216, 17, 64,173,251,140,191, 55, 81,190,
-191, 71,243,110, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 40,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-190,213, 79,214, 63, 10, 19, 95,191, 56, 25, 60, 62, 10,193,193,190, 10,232,127,190, 93,126,162, 63, 7,169, 25,190,221,209, 38,
- 62,186,214, 52,191, 41, 63, 21, 63, 79,203, 10, 62, 32, 14,104, 60, 44,238,252, 60,175,180, 55, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 41,241, 98, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 91, 39,111,191,150, 81, 64, 64, 15, 68, 89,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 41,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,191, 0,212,130,191, 38,161, 15,190,123,203,131,191, 3, 48,207, 63, 64, 6,112,190, 34, 53,137,191, 6,202,175,
- 62, 19,241, 66,190, 85,105,119, 61,146,246,149, 60, 25, 88, 25, 63, 25, 74, 85, 62,196,185,199, 59,249,179,210, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 90,223,198, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 40, 17,231,190,153, 44,141,
- 64,161,123, 68,191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 42,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 68,219, 69, 62, 74, 75,190, 62,229,129,250,190,210, 78,198,188, 59, 63, 65, 62,214,173,173,
- 62, 85,159, 18,189,185,160, 25,191, 46,193,169,190, 77, 21,177, 63, 32,133,202, 61, 36,163, 25, 60,225,136, 45, 62,156, 71,133,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,141,208, 22, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 95, 50,
-191,249,101, 34, 64,132, 96,176,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 43,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,236, 25,179, 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,190,103,198,244,
- 62,187,192,251,190,101, 39,179, 62,138,210,110,191, 54,168,145,190, 63, 20,208, 62,138, 45, 62, 61, 30,142, 35, 61,128, 78,173,
- 63, 32,246,170, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,109,210, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 22, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,130,132, 59,190,120,166,131,191,109,191, 15, 61,238,164,170,
+190, 78, 93, 20,189,231,164,245, 62, 16,254,254,190,234,189, 61,189,116,167,116, 63, 16,175, 67, 61, 2,132, 66, 61,189, 37,191,
+ 63, 64, 5,173, 62, 0,181, 91, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63, 2, 93,129, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61,165,110,200, 62,239, 43,183, 64,169,243,129,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 23, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 49,218,173,191, 23,109,113, 62, 55, 16, 32,190,188,117, 54, 62,208, 20, 25,
+191, 46,245,118,186,236,158, 72,191, 97, 10, 55, 62,183,128,140,190,146,230,177, 63, 66,109, 62, 61,170,159,244, 60,243,150, 79,
+ 62, 2,136, 69, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 48, 85, 96,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 6,133,111,191,225,152,167, 64, 32, 16, 84,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 44,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,241, 57,184, 62,173,244,209, 61,188,195,202, 63, 79, 10,229,
-191, 34,223, 15,190, 40, 65,171, 61, 38,228,158, 63, 12,225,187,189, 13,196,198,191, 14,253,185, 61,217,107,245, 62,174,147,253,
- 62,218,232,227, 62, 0, 80, 70, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62,183,168, 8, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,190,228, 99, 80,191, 51, 59, 44, 64,133, 75,221,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98, 62,214,163,234,
-190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 45,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 23,191, 52, 62, 82,209,247, 62,204, 21, 34,
- 63, 43, 58, 21, 61,139, 3, 1, 61,135,159, 52,189, 36,117, 30, 62,244,123,230, 62,185,104, 79, 63, 33, 73, 17, 62,213,208,117,
- 62, 76,118,118, 62, 5,254, 32, 62,128,245, 65, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 4,246,179, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,192, 74,101, 85,191,105,185,166, 64, 36,141, 18,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
- 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 46,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 3,157,221, 62,215, 81, 67,
- 63, 5, 46,135,191, 9,108,121,190, 16, 83, 37,190,130,244, 37, 62,216, 18,191, 63, 53, 44,221,189,162,136,153,190,252,138, 80,
- 61,102,214,221, 63, 25, 22, 50, 62,157, 42,139, 61, 30,113,164, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63, 26,208,145, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,218,234,122,191,232,177, 50, 64, 42,174,108,191, 55, 81,190,191, 71,243,109,
+191,243,158, 12,192,104,237,244, 63,155, 34,138,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 24, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 49, 22,155, 62,165,232,223,191, 6,208,133,190,190,253, 93,190,194,234,190,191, 29, 89,239,
+191, 23,110,134,191, 30,217, 8,190,205,159,107,190,185, 94, 18, 60, 92,106,228, 61, 35, 25, 23, 63, 93,111,136, 61,167,105,211,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,132,153,252, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 8, 74,118,
+192, 1,240, 0, 64,108,123, 28,191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 25, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,104,155,217,190, 29,164,215,190,179, 60,175, 62, 43,201,201, 61, 67, 60,100,189, 90, 42,171,191, 4, 85, 68,
+ 62,130,249, 67,190,133,199,230, 63,107, 14,149, 62,101,242,233, 61,181,120,181, 62, 43,136,231, 63, 4,241,245, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,108,179,252, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,231, 24, 26,191, 21,105, 44,
+ 64, 98, 32,186,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 26, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 49, 52,126, 63, 43, 9,201,190, 96,234,166,190, 37,210,182, 61, 54, 58,206, 63, 63, 1,231,191, 34,173,133,190,170,154, 5,
+ 63, 51,112, 93,191, 23, 61, 18, 62,138,189, 66, 62,210,103,114, 62, 62,128,117, 62, 7, 54, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,126,132, 33, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 5, 52,141,192, 49,103, 10, 64, 37,154,230,
+191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 27, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 32, 96, 77,
+ 62,160,201,185, 63, 6, 3,160,190,248, 34, 11, 60,185, 53,206, 61,178,197,192, 63, 53,184,174,190,162,172,223, 62,224,136,109,
+191, 61,173,142, 61,184, 47,132, 61,207,157,244, 62,225, 0,168, 62,189, 11,249, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,150,112,248, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,177, 45,136, 63, 99,253, 22, 64,155, 58, 8,191, 55, 81,190,
+191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 28, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 55,202, 47,190, 89,235,249,
+190, 92, 18,127,191, 32,129,146,190, 8,212, 7,190,171, 50,167, 62,123,120, 97,189,249,152,232, 62,149, 18,140, 61, 13,111, 37,
+ 63, 28,253,147, 62,184,184,231, 60, 58, 48, 48, 60,111, 78, 59, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 18, 61,115, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 57,255, 42,192, 65, 4,235, 64, 19, 7, 77,191, 55, 81,190,191, 71,243,109,
63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 47,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 59, 41, 98,
- 61,252, 70,236,191, 25, 96, 77,190,154,195, 33,190,242,119, 31,190,204, 79,125,190, 18, 53, 23,190,214, 31,102,190,199,174,165,
-188,169,105, 48, 62, 8, 50,229, 62,148,251,227, 62,206, 65,133, 62, 49, 82, 75, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 5,230, 44, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,206,106,254, 62,150, 36,205, 64,137, 42, 96,191, 55, 81,190,
-191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 48,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 23,191, 52, 62, 82,209,247, 62,204, 21, 34, 63, 43, 58, 21, 61,139, 3, 1, 61,135,159, 52,189, 36,117, 30, 62,244,123,230,
- 62,185,104, 79, 63, 33, 73, 17, 62,231, 15, 87, 62,207,237, 49, 61,141, 43,254, 61,150,225,226, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 4,246,179, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,167, 61,200,191,171, 5,119, 64,147,214, 86,
-191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 49,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 70, 39,111,188,218,103, 91, 63, 30, 24, 44, 62, 12, 81, 28, 63, 16,129, 26, 61,162,153,215,191, 31,203, 11,
- 63, 2,132,222,190,154, 4, 26, 62,100,112,202, 62,214, 36,216, 60,122, 85,172, 60,142,247, 44, 63, 12,140,132, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,115, 61, 48, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,251, 14,194,190,105,213, 44,
- 64,109,188,165,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 50,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,191, 3, 49,173, 63, 9,133,178, 63, 16, 18,104, 62,186, 16,159, 62,245,147,183, 62,111, 88,220,
- 63, 2, 25,220,191, 77, 44, 80, 62,152,136, 76, 61,176,242,126, 62,155, 13,239, 62,234, 17, 40, 62, 13,128, 92, 61,208,130,226,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,208,147, 65, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 46, 47,102,
- 63, 45,212, 64, 64,127, 35, 61,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 51,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 48,164, 8,191, 38,100, 32,190,157,157,163, 61,167, 78, 10, 59, 54, 8, 4,
-190,147,155,139, 63, 50, 41, 11, 62,140,101, 27, 63,110,237,241, 59,179,188, 18, 62,165, 31, 74, 63, 37,208,207, 60,141,227, 74,
- 60, 76, 28, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 80, 24,129,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 29, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,133,218,208,189,176, 10,116, 63, 10,237,186,
+ 63, 85, 61, 14,190, 38,219,182, 62,206,175,174, 63, 10,240, 47,190,114,232, 31,190,207,162, 91,190,193, 85,173, 61,128,255,228,
+ 61,172, 32, 76, 63, 5,152,147, 62,169,134,205, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 60,212, 38, 62, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,137, 68,184, 61,226,177,204, 64,141,247,196,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 30, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,146,138,133,187, 8, 75,133, 62, 68,235, 28, 63,122,141,122,
+ 63, 92,117,116,190,125,147, 7,190,147, 49, 87, 63, 41, 88, 9, 63, 2,255, 63, 61,126, 44, 71, 63, 0,166,107, 62,154, 29, 23,
+ 61,165,214, 34, 61,236,130, 42, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,103,170,241, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 82,103, 22,191,201, 75, 73, 64, 0,247, 1,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,168,120,231,191, 7,154,179, 63, 48,180, 41,190,187,232,239,191,104, 35, 9,
+ 62,114, 8,222,190,177,143, 76,191, 28, 29,107, 62,234,112,210,190, 92,249, 9, 59,118,109, 73, 63, 4,155,168, 62,243, 2, 73,
+ 59,108,198,186, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,184, 4, 74,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-191, 83,203, 10,192, 29, 15,133, 64, 42, 82,237,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 52,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,232,194, 41, 63, 35,110,156,190, 75,200,233,191, 22,158,170,
-189,193,122, 83,189,149, 58,217,191, 18, 15, 80,189,145, 37, 66,189,219,184, 98,191, 86,185, 70, 61,239,150, 21, 62, 24,193,130,
- 62,217, 71, 46, 62,158,114,141, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 75,231,122, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,102, 71, 47,191, 44, 13, 16, 64,156,187, 24,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,
-190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 53,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 61, 40,120,191, 15,196,150,191, 54,219,159,
- 62,191,195,234,190,122, 96,104,191, 74, 71,193,190, 56,230, 15, 61,203,156, 61, 61,177, 39,227,190,193,222, 25, 63, 13,206,178,
- 60,237,101,144, 60,198,227, 16, 62,201, 30, 16, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 61,189,137, 74, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,252,210,140,191, 44, 58,216, 64,149,217, 98,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98,
- 62,214,163,234,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 54,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 38,152, 86,191, 17,225,169,
-189,140,217, 57,190,254,124, 67, 62, 17, 65, 13, 63, 15,204,229, 62,241,148,180,191, 73,210,175, 63, 21,161,182,188,169,222,186,
- 63, 4,174,235, 61,156,216,125, 61,115,228,114, 62,176,239,124, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 61,165,104, 86, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 46,210,181,191,135, 4, 59, 64, 44, 99,164,191, 55, 81,190,191, 71,243,109,
- 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 55,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 45, 97,119,
-190,205, 47,119, 63, 19,117, 35, 62, 98,125,166, 62, 73,195,242, 62,243,228,124, 63, 11, 86,119, 62, 89,156, 70, 63, 88,232,230,
-190,204, 53,130, 61,201, 69,154, 63, 3,143, 74, 62,162, 10,155, 61,146, 21,186, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,253,129, 53, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 60, 64,235, 64, 63,147,210,203, 64,185, 32,205,191, 55, 81,190,
-191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 56,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 62,136,137,130,191,106, 7,101,190,155,249,249, 60,155,218,146,188,184,212,179,189,201,215, 68,191, 61,244, 40, 61, 70,234,114,
-191, 1,226,154, 63, 91,139,119, 63,109,168,135, 61,112, 44, 87, 59,115, 72,106, 60, 24, 90,214, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 87, 40, 6, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0,185,160,192, 38,235,197, 63,245,221,182,
+191,246,241,194, 62,236,130, 87, 64,135,209, 50,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62,223,197,124,190,189,243, 32,190,140,213,199,191, 69,149, 13,190,199,235,221, 62,240, 79,159,
+190, 14,202,113,190, 60,168,186,190,220,145, 5, 62,148, 8, 42, 62,219, 99, 49, 62,242, 73, 85, 61, 79, 14,127, 61, 67,141, 68,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,192,236,157, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189,149,228,224,
+190,221, 13,233, 64,145,251,210,191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,199,190, 61,137,204,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 33, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,190,190, 19, 92, 62,147,203,188, 62, 2,242, 19, 63, 95,138,223, 60, 24, 50,144, 63, 64,174,148,191, 11,158,196,
+ 63, 64, 22,220,190, 19, 35, 98, 62, 44, 93,217, 63, 4,141,198, 62, 19, 71, 3, 61,174,186, 60, 62,129,146, 99, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 27,176,189, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 89,120, 0,190,120,169,164,
+ 64,155, 78, 26,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98, 62,214,163,234,190,183,206,197,190, 61,137,202,191, 80, 38,157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 34, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 94,201,118, 62,213,189,192, 62, 67, 27,142,190, 55, 93,214,190,131,154, 6,190,178, 48,133,190,192, 11,139,189,147,123, 39,
+191, 57,130, 29,190, 33,253, 46, 63, 24, 89,224, 61,198,174,189, 61,101,152, 2, 62,128,237,143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,117,122, 59, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 26, 80, 92,189,239, 3,232, 64, 99,210,182,
191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 57,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,241, 54,241,190, 60, 75, 25,190,166, 31,137, 63, 76,162, 26, 62,180, 23,214,191, 22, 28,134, 62,184,125,189,
- 63, 49,143,170, 62,208,100, 42, 63, 12,182,201, 61,103,123, 85, 62, 90, 65,230, 63, 29,215, 33, 61,233, 5,124, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 78, 6,233, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,247,118,132,192, 8, 66, 87,
- 64, 20, 88, 93,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 58,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,157,149,183, 62,150,241,169, 63, 5, 72,210,191, 61, 98,196,191,103, 43, 94, 62, 13,249,141,
-190, 28, 40,108,189, 89,143,180, 62,180,169,159, 63,102,210, 50, 61,186,245, 15, 62,140,211,252, 62,252,184,237, 62, 15,107,164,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,126, 53,234, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190, 2,252, 96,
-192, 63, 32,189, 64, 40,176,249,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,
-191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 59,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,185,185,227,190,133, 55, 69, 62,246,101, 76,191, 65, 32,146,190, 47,142, 11,
-191, 16,240,207, 60,250, 47,178, 62,135, 12,147,190,192,130,250, 63, 63,224,182, 61,141,251,109, 61,135, 15,209, 62,212,122,152,
- 62,230, 66,150, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,201, 22,194,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192, 60, 37,186,192, 19, 36,209, 63,212,102,200,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 60,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,253,116,133, 63, 23,178,160,191, 32, 78,114, 61,221, 97, 57,
-189,236,244,191, 62,214, 56,206,191, 40,142, 77, 61,161, 48, 31, 63, 7, 95, 82,190, 62, 70,244, 59,141,146,144, 62,182,189, 24,
- 63, 34, 24, 12, 59,183, 33,242, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 90, 4, 51, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,155,165, 62,191,200,188, 35, 64,140,201,156,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 61,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,205,198, 68, 63, 99, 21, 50,190, 86,246, 18,
-189,178, 24,237, 62, 74,177,229,190,174, 94,233,189, 17,113, 14, 62,211,148,144,190, 80,182,157,191, 66,214, 18, 62,182,112, 54,
- 61, 2,202,156, 61, 40,146, 65, 63, 18, 18, 24, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,124, 84,229, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 1, 48,150, 62,211, 14,133, 64,175,209,120,191, 55, 81,190,191, 71,243,107, 63, 42,237,102,
- 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 62,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,181, 0, 30, 63, 39, 21,183,
-191, 42, 28,174, 62,185,254,206, 61,180,101, 60, 62,162,164,224,191, 78, 22,169,190,146,164, 15, 62,188, 47, 66,191, 63,255,233,
- 63, 76, 61, 26, 60,171,234,214, 60, 47,187,230, 62, 46,146,126, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63, 41,195,113, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 98,144,196,191,112,190, 62, 64,138,224,153,191, 55, 81,190,191, 71,243,109,
- 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 63,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,148, 80,255,
- 63, 5,138, 17, 62, 38, 16,171,191, 73, 50,107, 63, 32,126,214, 62,148, 14,143,191, 4, 31,183, 62,145,152, 70,189, 89, 32, 21,
- 62,100,239, 63, 62,220,212, 51, 61,238, 96, 49, 61,205,246, 1, 62,180, 22, 64, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76, 33,247, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 2,243, 80,191, 91, 84, 18, 64, 77, 0,110,191, 55, 81,190,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 35, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,153, 16,148,
+191, 33, 1,224, 62,168,253, 43, 63, 35, 36,254,191, 19,255,124,190,138, 97, 70, 62, 6,109,188,190,223, 58, 64,189,189,121,154,
+ 62,170,126, 9, 62,126,248,115, 63, 12, 41, 84, 62, 4, 55,153, 61,152, 85, 62, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,106,244, 74, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190, 70,245, 80,192, 37,148,136, 64, 57,107, 41,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 64,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-191, 69,146, 49,190, 69,123,236,191, 26,188,179,189, 47,182,207,191,105, 14, 96,190, 31,120, 55, 62, 18, 41,138,189,183, 73,210,
-189, 57, 99,105,190,137,155, 32, 62, 79,143,112, 62,220, 36, 13, 62,119,171,207, 62, 0,124,168, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,199,151,184, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 34, 81,228,192, 39, 55,178, 64, 68, 36, 87,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 65,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 3,148,230, 62,239, 68,224, 62,241, 64, 72,191, 11, 35, 71,191, 31,202,248, 62,182, 98, 68,191, 48,127, 18,
-189, 26,108,158,190,173, 93,145,191, 16,155,161, 61,244, 72,144, 61,173, 98,152, 62,154,243, 16, 62,252,162, 38, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,245,111, 69, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,132,206,226,191,254,157,153,
- 64, 57, 78, 61,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 66,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,217, 64, 45,190,213, 24,151, 61,187,174, 94, 63, 76,136,102, 63, 32, 1, 27,189,162, 95,236,
-191, 29, 18,124,190,155, 78, 75,191, 43,134,124,190,184,202,174, 62, 35,138, 49, 62, 85,209,237, 62,186, 75,126, 62,137, 6,113,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61, 76,100,111, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,237,163,228,
-192, 58, 20, 55, 64, 64,122, 9,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 67,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189, 55, 95, 82,190,181, 21, 43,191,101, 3,230, 62,137,248, 87, 62, 75,208, 4,
- 59,115,115, 0,190, 95,196,100, 62, 83, 15,191,191, 81,222, 84, 62,169, 58, 36, 61,163,215,187, 61, 92,207, 90, 62,152,248,188,
- 63, 17, 59,182, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,112,119,230,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 36, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,249,246, 44, 62,140,102,200,
+ 63, 10,199,154, 63, 32,102, 40,191, 19, 10, 78,190,250,238,224,190,111, 13, 0, 61,187,232,243, 62, 99, 10,106, 62,221, 96,163,
+ 61,239,237,208, 61,210, 34, 10, 62,181,101, 62, 62,218, 22,205, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 25,143, 35, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 25,172,253,191,249,234, 68, 64, 73,217, 59,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 37, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,230,109,205,190,189, 47, 67,189,155,119,205,
+191, 79, 53,238,191, 88,144,223, 62,146,163, 88,190,208, 99, 63, 62,130,235,236,190, 17, 10, 72, 63, 15,223,124, 62, 64,172, 12,
+ 62, 51, 24,160, 62,156, 49,145, 62,169,236, 26, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 72,237,254, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,192, 60, 63, 77,191,245, 70,192, 63,248,177,246,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 38, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 16,162, 50,190,219,180, 33,190,177,166, 24,191, 29, 8,234,
+190, 48, 26, 24,190,115, 70,240, 63, 54,197, 0, 62, 75,201, 69,189, 10,174, 28, 63, 78,128, 81, 60,175,109,172, 62,214,135, 7,
+ 63, 9, 12, 59, 60,198,154,150, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,138, 50, 34, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,162,125, 6,192, 64,233, 63, 64, 86,167,147,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 39, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 11,120,234,190,253, 35,200,190,233,152, 2,191, 0, 38, 0,191, 36, 3,214,
+190, 45,239, 3,191, 9,175,135,190, 42,130, 18, 63, 38,197,156,190,238, 37,181, 61,119, 49, 4, 60,224,251,119, 62, 47, 5, 94,
+ 63, 61,195,188, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,191,162, 89,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-191,148, 59,202,191, 56,242,188, 64,113,111,189,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 68,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,192, 21,202, 63, 8, 22,216, 63, 66, 84,188, 62,186, 70,158,
- 62, 98,211,240, 62,155, 7,124, 62,246,134, 10,190, 79, 16,110,189,252,197,248, 63, 39,188, 81, 62,169,204, 42, 62,154,195,204,
- 62, 51,225,146, 62, 66,254,125, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 81, 26,123, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,191,252,179, 34,191,184,102, 86, 64, 51,174,169,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 69,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,144, 50,232,191, 50, 31,207,191, 40,203,179,
-189, 45, 99,214,190, 34,153,109,191, 10, 94,239,190,212,186,115,190, 19,234, 42,191, 97, 26, 72, 61, 99,105,122, 62, 21,210, 46,
- 62,186, 32,250, 62,178,126,195, 62, 16,238, 85, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 60,124,240,131, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,192, 77,244, 1,190,163, 52, 51, 64, 62,234, 30,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98,
- 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 70,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,112, 41,126, 61,164,166, 56,
- 61,240, 4, 91, 62,161,172, 15,190,191,126,106, 63, 64, 33,117, 62,184,227,130,190,244, 20, 92,189,180,168,210,191, 43, 25, 60,
- 61,198,246, 89, 63, 46,130, 30, 62, 54,241,223, 61, 46, 41,221, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,107,196,190, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,122, 27,255,191,133,229,179, 64,149, 39, 66,191, 55, 81,190,191, 71,243,107,
- 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 71,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 24, 46,192,
-191, 43, 20, 41, 62,183,184,186, 62,136,173, 42, 63, 50, 75, 75, 62,126, 83, 40, 63, 8,195,188, 62,238,211,234, 61,152, 36, 69,
- 62,145,106,235, 62,239, 4,216, 61, 21,100,235, 61, 20, 73,174, 62,235,197, 83, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 57,122, 93, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,151, 66, 20,192, 62,139,208, 64, 5,118, 98,191, 55, 81,190,
+192, 27, 96,184,191,179, 23,251, 64, 38, 77,193,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 32,231,177, 62,239, 89,150,190,188,156,128,191, 0, 45,225, 62,210,133,247, 63, 40,169, 51,
+ 63, 26,184,146,190,223, 39,209,191, 15,238,182,190,146, 63, 75, 61,213,161,166, 62,218,242,217, 62,191, 18, 39, 61,194, 74, 89,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,129,236, 81, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 21, 0,185,
+192, 14,241,137, 64, 61, 27,206,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 41, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,190,213, 79,214, 63, 10, 19, 95,191, 56, 25, 60, 62, 10,193,193,190, 10,232,127,190, 93,126,162, 63, 7,169, 25,
+190,221,209, 38, 62,186,214, 52,191, 41, 63, 21, 62, 27, 36, 58, 62, 28,151,245, 62,179, 23, 82, 62,177, 10,148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 41,241, 98, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,189, 57, 80, 64,191,166, 80,193,
+ 64,123,172,242,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 42, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,232,174,160, 61,164, 99, 64, 63, 12,108, 41,191, 50,126,106, 62,124,117, 66, 63, 82, 54,134, 62,191, 55, 38,190,197,232,121,
+189, 70,203,188,191, 51, 88, 26, 62,170,225,199, 62, 23, 67,114, 62, 33, 56,202, 62,184,224, 26, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,138,213,216, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,219,106,202, 63,127,216, 17, 64,173,251,140,
+191, 55, 81,190,191, 71,243,110, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 43, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,213, 79,214,
+ 63, 10, 19, 95,191, 56, 25, 60, 62, 10,193,193,190, 10,232,127,190, 93,126,162, 63, 7,169, 25,190,221,209, 38, 62,186,214, 52,
+191, 41, 63, 21, 63, 79,203, 10, 62, 32, 14,104, 60, 44,238,252, 60,175,180, 55, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 41,241, 98, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 91, 39,111,191,150, 81, 64, 64, 15, 68, 89,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 72,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-190, 32,160,159,191, 52, 39,190,191, 9,138,142, 62,224, 13,138, 62,242,218,166, 63, 26, 71, 93, 62, 52, 22, 36, 62,124, 52,231,
-190,192, 91,165,191, 86,111,148, 61,120,101,212, 61,221, 26, 72, 63, 22, 82,158, 62,122, 14,241, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 22, 96,195, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190, 46, 63,224,191,107,105,222, 64,132,191,198,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 73,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 55,202, 47,190, 89,235,249,190, 92, 18,127,191, 32,129,146,190, 8,212, 7,190,171, 50,167, 62,123,120, 97,
-189,249,152,232, 62,149, 18,140, 61, 13,111, 37, 62,204,238, 89, 62, 39, 90, 10, 62, 6,156,123, 62,156, 22, 98, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 18, 61,115, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,234,148,250,192, 97,179, 11,
- 64, 3,215, 16,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 74,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,190,248,227,177,190,192,134,160, 62,184,159,155, 63, 51,157,105, 63, 54, 56, 2, 62,182,126, 88,
-187, 4,207,108, 62,198,216, 38,191, 73, 66,140, 61,248,126,139, 60,119, 26,251, 60,150,207, 34, 63, 20,176,170, 62,197,120,225,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,216,234,208, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,135,177,202,
-192, 86,220,150, 63,239, 9,144,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 75,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 18,122,201,190,163, 68,155,191, 39, 36,236,190,194,182,221,190, 98, 47,217,
-190,230, 46, 97, 62,134,236,197, 60,187, 40,216,189,179, 92,111, 63, 54, 17, 71, 61, 5,169, 87, 61, 92,116,120, 63, 38,253,179,
- 62,133,192,225, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,154, 58,100,
- 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-192,108,105,213, 62,223,145,125, 64, 82,182,192,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,
-190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 76,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 32,244,195,190,218,189,174, 62, 55, 11,163,191, 95, 75,157,
-190,243,155, 33,191, 90, 86,180, 62, 86,237, 57,190,126,198,226, 61,101, 34, 30,190,180,239, 93, 61,204, 82,206, 63, 89,113, 44,
- 61, 23, 63, 63, 60,100, 33,220, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63, 50, 63, 6, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,243, 23, 76,191,166,133, 46, 64,134,153, 78,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98, 62,214,163,234,
-190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 77,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 49,218,173,191, 23,109,113, 62, 55, 16, 32,
-190,188,117, 54, 62,208, 20, 25,191, 46,245,118,186,236,158, 72,191, 97, 10, 55, 62,183,128,140,190,146,230,177, 62,190, 2,159,
- 61,193,141, 29, 61,214, 93,214, 62,220, 2,164, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 48, 85, 96, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,190,214,192,130,192, 73, 57,182, 64, 23, 83,175,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 44, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0,212,130,191, 38,161, 15,
+190,123,203,131,191, 3, 48,207, 63, 64, 6,112,190, 34, 53,137,191, 6,202,175, 62, 19,241, 66,190, 85,105,119, 61,146,246,149,
+ 60, 25, 88, 25, 63, 25, 74, 85, 62,196,185,199, 59,249,179,210, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 90,223,198, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 40, 17,231,190,153, 44,141, 64,161,123, 68,191, 55, 81,190,191, 71,243,107,
+ 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 45, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 68,219, 69, 62, 74, 75,190, 62,229,129,250,
+190,210, 78,198,188, 59, 63, 65, 62,214,173,173, 62, 85,159, 18,189,185,160, 25,191, 46,193,169,190, 77, 21,177, 63, 32,133,202,
+ 61, 36,163, 25, 60,225,136, 45, 62,156, 71,133, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 61,141,208, 22, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 95, 50,191,249,101, 34, 64,132, 96,176,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 78,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 34,172,206, 62,187, 79, 64,
- 62, 11,197,140, 63, 42,135,199, 61,148, 91,100, 60, 25, 75,123,189,232,126, 54,189,220,190,210, 62,186,158, 9,190,225, 62,182,
- 61, 84,103,211, 61,115,194, 92, 62,253,216,148, 62,201, 34, 41, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,162,103, 38, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192,133, 4,122, 62,128,136,109, 64, 58, 58,136,191, 55, 81,190,191, 71,243,107,
- 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 79,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,137,206,147,
- 63, 11,207,234, 62,225,144,195, 63, 40,225,162,190,148, 69, 24, 61,190,238, 50,191, 86, 31, 13, 63, 71,106,217, 62, 1, 60,247,
- 62,136,250,162, 58,156, 80, 70, 63,108,100,142, 61,153, 72, 15, 58, 17, 35,116, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60, 41,199,174, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 12, 40,132,192, 1, 32,102, 64, 95,178,222,191, 55, 81,190,
-191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 80,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 95, 57,157, 62,214,148,238, 62,109,249, 87,189,204,220,227,189,221,118,238,191, 19,162,121,191, 48, 50,203,190, 80,232, 58,
-191, 8,100,141, 63, 19,142,229, 62, 88,196,223, 61,237, 94,134, 62, 97, 5,141, 62,231,195, 43, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 15, 11, 75, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 80,109,211,192, 20,210, 96, 64,103,253,246,
-191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 81,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,133, 32, 88,190,189,201, 13, 63, 66, 43, 55, 62,239,254, 76, 62,179,163,254,188,171,181, 15, 60,196, 8,130,
-191, 14, 27,214,190,128, 32, 86,190,208, 27,190, 62, 53,196, 69, 61,135,184,136, 62, 35,250,240, 63, 24,153, 34, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,234, 93,224, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,147,142,240,190,166, 7, 43,
- 64,130, 69, 61,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 82,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,249,246, 44, 62,140,102,200, 63, 10,199,154, 63, 32,102, 40,191, 19, 10, 78,190,250,238,224,
-190,111, 13, 0, 61,187,232,243, 62, 99, 10,106, 62,221, 96,163, 62,206,243, 56, 62,159,170,109, 62, 2,145,224, 62, 32, 50,211,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 25,143, 35, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 89,254, 2,
-192, 85,197,195, 63,254,197,176,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 83,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,204,125,122, 63, 46, 10, 37,190, 26, 71, 69, 63, 24,168,130,190, 36,105,117,
- 63, 32,220,144, 62,231,167, 11, 62,179,145,151,190, 36, 72, 33,191, 50, 67, 42, 61, 11, 3,111, 61, 76, 2,241, 63, 28,181,231,
- 62,155,179,103, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,188,186,244,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 46, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,236, 25,179, 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,
+190,103,198,244, 62,187,192,251,190,101, 39,179, 62,138,210,110,191, 54,168,145,190, 63, 20,208, 62,138, 45, 62, 61, 30,142, 35,
+ 61,128, 78,173, 63, 32,246,170, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,109,210, 2, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 6,133,111,191,225,152,167, 64, 32, 16, 84,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 47, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,241, 57,184, 62,173,244,209, 61,188,195,202, 63, 79, 10,229,191, 34,223, 15,
+190, 40, 65,171, 61, 38,228,158, 63, 12,225,187,189, 13,196,198,191, 14,253,185, 61,217,107,245, 62,174,147,253, 62,218,232,227,
+ 62, 0, 80, 70, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,183,168, 8,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-191,253, 46, 24, 61,214,126,200, 64,125, 1,248,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,
-190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 84,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,181,218,171, 63, 80,100,162,190,175, 18, 86,190,157, 51,142,
-191, 4, 35, 18, 62,210,113,207, 63, 11,170, 0,190,165,126,134, 62, 59, 47,141,191, 62,163,104, 62,181,251, 18, 62,242,163,225,
- 61,191, 98, 90, 61,158, 33,220, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,104, 76, 83, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,192, 94, 18,115, 61, 49, 61,112, 64, 71,153, 90,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,
-190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 85,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,112, 41,126, 61,164,166, 56, 61,240, 4, 91,
- 62,161,172, 15,190,191,126,106, 63, 64, 33,117, 62,184,227,130,190,244, 20, 92,189,180,168,210,191, 43, 25, 60, 61,190,188,141,
- 63, 68,157,118, 61,224,119,105, 60,239,129,112, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 62,107,196,190, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,191,141, 34, 38,192, 39,140,222, 64, 25, 55,182,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+190,228, 99, 80,191, 51, 59, 44, 64,133, 75,221,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98, 62,214,163,234,190,183,206,197,
+190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 48, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 23,191, 52, 62, 82,209,247, 62,204, 21, 34, 63, 43, 58, 21, 61,139, 3, 1, 61,135,159, 52,
+189, 36,117, 30, 62,244,123,230, 62,185,104, 79, 63, 33, 73, 17, 62,213,208,117, 62, 76,118,118, 62, 5,254, 32, 62,128,245, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 4,246,179, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 74,101, 85,
+191,105,185,166, 64, 36,141, 18,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 49, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 3,157,221, 62,215, 81, 67, 63, 5, 46,135,191, 9,108,121,190, 16, 83, 37,190,130,244, 37, 62,216, 18,191,
+ 63, 53, 44,221,189,162,136,153,190,252,138, 80, 61,102,214,221, 63, 25, 22, 50, 62,157, 42,139, 61, 30,113,164, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 26,208,145, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,218,234,122,191,232,177, 50,
+ 64, 42,174,108,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 50, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 59, 41, 98, 61,252, 70,236,191, 25, 96, 77,190,154,195, 33,190,242,119, 31,190,204, 79,125,190, 18, 53, 23,190,214, 31,102,
+190,199,174,165,188,169,105, 48, 62, 8, 50,229, 62,148,251,227, 62,206, 65,133, 62, 49, 82, 75, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 5,230, 44, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,206,106,254, 62,150, 36,205, 64,137, 42, 96,
+191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 51, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 23,191, 52,
+ 62, 82,209,247, 62,204, 21, 34, 63, 43, 58, 21, 61,139, 3, 1, 61,135,159, 52,189, 36,117, 30, 62,244,123,230, 62,185,104, 79,
+ 63, 33, 73, 17, 62,231, 15, 87, 62,207,237, 49, 61,141, 43,254, 61,150,225,226, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 4,246,179, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,167, 61,200,191,171, 5,119, 64,147,214, 86,191, 55, 81,190,
+191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 52, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 70, 39,111,188,218,103, 91,
+ 63, 30, 24, 44, 62, 12, 81, 28, 63, 16,129, 26, 61,162,153,215,191, 31,203, 11, 63, 2,132,222,190,154, 4, 26, 62,100,112,202,
+ 62,214, 36,216, 60,122, 85,172, 60,142,247, 44, 63, 12,140,132, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,115, 61, 48, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,251, 14,194,190,105,213, 44, 64,109,188,165,191, 55, 81,190,191, 71,243,107,
+ 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 53, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 3, 49,173, 63, 9,133,178, 63, 16, 18,104,
+ 62,186, 16,159, 62,245,147,183, 62,111, 88,220, 63, 2, 25,220,191, 77, 44, 80, 62,152,136, 76, 61,176,242,126, 62,155, 13,239,
+ 62,234, 17, 40, 62, 13,128, 92, 61,208,130,226, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 62,208,147, 65, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,192, 46, 47,102, 63, 45,212, 64, 64,127, 35, 61,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 86,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 85, 40,193,190,146, 79,120,
-190,203,249, 68, 62,131,217,207, 63, 22, 65,229, 63, 63,104,120,189,124,135,173,190,190,179,131, 62,171, 81,208, 63, 69,132,211,
- 61,189, 6,122, 62, 23,195, 58, 62,254,114, 6, 62,134,106,189, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63, 20,102,179, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 63, 14,149,191,165,204, 64, 64, 24, 96, 12,191, 55, 81,190,191, 71,243,109,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 54, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 48,164, 8,191, 38,100, 32,190,157,157,163, 61,167, 78, 10,
+ 59, 54, 8, 4,190,147,155,139, 63, 50, 41, 11, 62,140,101, 27, 63,110,237,241, 59,179,188, 18, 62,165, 31, 74, 63, 37,208,207,
+ 60,141,227, 74, 60, 76, 28, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62, 80, 24,129, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,191, 83,203, 10,192, 29, 15,133, 64, 42, 82,237,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 55, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,232,194, 41, 63, 35,110,156,190, 75,200,233,191, 22,158,170,189,193,122, 83,
+189,149, 58,217,191, 18, 15, 80,189,145, 37, 66,189,219,184, 98,191, 86,185, 70, 61,239,150, 21, 62, 24,193,130, 62,217, 71, 46,
+ 62,158,114,141, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 75,231,122,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,102, 71, 47,191, 44, 13, 16, 64,156,187, 24,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,
+190, 61,137,201,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 56, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,190, 61, 40,120,191, 15,196,150,191, 54,219,159, 62,191,195,234,190,122, 96,104,191, 74, 71,193,
+190, 56,230, 15, 61,203,156, 61, 61,177, 39,227,190,193,222, 25, 63, 13,206,178, 60,237,101,144, 60,198,227, 16, 62,201, 30, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,189,137, 74, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62,252,210,140,
+191, 44, 58,216, 64,149,217, 98,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98, 62,214,163,234,190,183,206,197,190, 61,137,202,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 57, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 38,152, 86,191, 17,225,169,189,140,217, 57,190,254,124, 67, 62, 17, 65, 13, 63, 15,204,229, 62,241,148,180,
+191, 73,210,175, 63, 21,161,182,188,169,222,186, 63, 4,174,235, 61,156,216,125, 61,115,228,114, 62,176,239,124, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 61,165,104, 86, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 46,210,181,191,135, 4, 59,
+ 64, 44, 99,164,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,191, 80, 38,157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 58, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 45, 97,119,190,205, 47,119, 63, 19,117, 35, 62, 98,125,166, 62, 73,195,242, 62,243,228,124, 63, 11, 86,119, 62, 89,156, 70,
+ 63, 88,232,230,190,204, 53,130, 61,201, 69,154, 63, 3,143, 74, 62,162, 10,155, 61,146, 21,186, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,253,129, 53, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 60, 64,235, 64, 63,147,210,203, 64,185, 32,205,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 59, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,136,137,130,
+191,106, 7,101,190,155,249,249, 60,155,218,146,188,184,212,179,189,201,215, 68,191, 61,244, 40, 61, 70,234,114,191, 1,226,154,
+ 63, 91,139,119, 63,109,168,135, 61,112, 44, 87, 59,115, 72,106, 60, 24, 90,214, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 87, 40, 6, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0,185,160,192, 38,235,197, 63,245,221,182,191, 55, 81,190,
+191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 60, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,241, 54,241,190, 60, 75, 25,
+190,166, 31,137, 63, 76,162, 26, 62,180, 23,214,191, 22, 28,134, 62,184,125,189, 63, 49,143,170, 62,208,100, 42, 63, 12,182,201,
+ 61,103,123, 85, 62, 90, 65,230, 63, 29,215, 33, 61,233, 5,124, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 78, 6,233, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,247,118,132,192, 8, 66, 87, 64, 20, 88, 93,191, 55, 81,190,191, 71,243,109,
63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 87,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 30, 81, 54,
- 62,223, 39,157, 63, 11, 30,214, 62,186, 51, 76, 62, 83,228,206, 61, 0,146,209, 63,121,106, 22,187, 6,124, 44,187, 71,233,128,
- 62,173,190,218, 61, 83, 67, 14, 63, 4,186,192, 62,197,206, 39, 61, 50,159,178, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60, 52, 19,208, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 22,180,183,192, 4,173,126, 64, 8,189,240,191, 55, 81,190,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 61, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,157,149,183, 62,150,241,169, 63, 5, 72,210,
+191, 61, 98,196,191,103, 43, 94, 62, 13,249,141,190, 28, 40,108,189, 89,143,180, 62,180,169,159, 63,102,210, 50, 61,186,245, 15,
+ 62,140,211,252, 62,252,184,237, 62, 15,107,164, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,126, 53,234, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,190, 2,252, 96,192, 63, 32,189, 64, 40,176,249,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98,
+ 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 62, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,185,185,227,190,133, 55, 69, 62,246,101, 76,191, 65, 32,146,
+190, 47,142, 11,191, 16,240,207, 60,250, 47,178, 62,135, 12,147,190,192,130,250, 63, 63,224,182, 61,141,251,109, 61,135, 15,209,
+ 62,212,122,152, 62,230, 66,150, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,201, 22,194, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192, 60, 37,186,192, 19, 36,209, 63,212,102,200,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 63, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,253,116,133, 63, 23,178,160,191, 32, 78,114, 61,221, 97, 57,189,236,244,191,
+ 62,214, 56,206,191, 40,142, 77, 61,161, 48, 31, 63, 7, 95, 82,190, 62, 70,244, 59,141,146,144, 62,182,189, 24, 63, 34, 24, 12,
+ 59,183, 33,242, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 90, 4, 51,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,155,165, 62,191,200,188, 35, 64,140,201,156,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62,205,198, 68, 63, 99, 21, 50,190, 86,246, 18,189,178, 24,237, 62, 74,177,229,190,174, 94,233,
+189, 17,113, 14, 62,211,148,144,190, 80,182,157,191, 66,214, 18, 62,182,112, 54, 61, 2,202,156, 61, 40,146, 65, 63, 18, 18, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,124, 84,229, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 1, 48,150,
+ 62,211, 14,133, 64,175,209,120,191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 60,181, 0, 30, 63, 39, 21,183,191, 42, 28,174, 62,185,254,206, 61,180,101, 60, 62,162,164,224,191, 78, 22,169,
+190,146,164, 15, 62,188, 47, 66,191, 63,255,233, 63, 76, 61, 26, 60,171,234,214, 60, 47,187,230, 62, 46,146,126, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 41,195,113, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 98,144,196,191,112,190, 62,
+ 64,138,224,153,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 66, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+190,148, 80,255, 63, 5,138, 17, 62, 38, 16,171,191, 73, 50,107, 63, 32,126,214, 62,148, 14,143,191, 4, 31,183, 62,145,152, 70,
+189, 89, 32, 21, 62,100,239, 63, 62,220,212, 51, 61,238, 96, 49, 61,205,246, 1, 62,180, 22, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76, 33,247, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 2,243, 80,191, 91, 84, 18, 64, 77, 0,110,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 67, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 69,146, 49,
+190, 69,123,236,191, 26,188,179,189, 47,182,207,191,105, 14, 96,190, 31,120, 55, 62, 18, 41,138,189,183, 73,210,189, 57, 99,105,
+190,137,155, 32, 62, 79,143,112, 62,220, 36, 13, 62,119,171,207, 62, 0,124,168, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,199,151,184, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 34, 81,228,192, 39, 55,178, 64, 68, 36, 87,191, 55, 81,190,
191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 88,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-191, 20, 59,104, 63, 17, 36, 30,190,252, 57,112, 62,162,101, 32, 62,160, 6,139, 61, 80,160, 57, 61,245,243,109,190,224, 18, 41,
-188,227,154,182,190,139,196,238, 61,131, 49,133, 62,167, 33,130, 63, 5,225,160, 61,177, 59,124, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 56,166, 20, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 97,160, 35,191,163,220,129, 64,141,248,194,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 68, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 3,148,230, 62,239, 68,224,
+ 62,241, 64, 72,191, 11, 35, 71,191, 31,202,248, 62,182, 98, 68,191, 48,127, 18,189, 26,108,158,190,173, 93,145,191, 16,155,161,
+ 61,244, 72,144, 61,173, 98,152, 62,154,243, 16, 62,252,162, 38, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 62,245,111, 69, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,132,206,226,191,254,157,153, 64, 57, 78, 61,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 69, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,217, 64, 45,190,213, 24,151, 61,187,174, 94,
+ 63, 76,136,102, 63, 32, 1, 27,189,162, 95,236,191, 29, 18,124,190,155, 78, 75,191, 43,134,124,190,184,202,174, 62, 35,138, 49,
+ 62, 85,209,237, 62,186, 75,126, 62,137, 6,113, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 61, 76,100,111, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 62,237,163,228,192, 58, 20, 55, 64, 64,122, 9,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 70, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189, 55, 95, 82,190,181, 21, 43,191,101, 3,230, 62,137,248, 87,
+ 62, 75,208, 4, 59,115,115, 0,190, 95,196,100, 62, 83, 15,191,191, 81,222, 84, 62,169, 58, 36, 61,163,215,187, 61, 92,207, 90,
+ 62,152,248,188, 63, 17, 59,182, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,112,119,230, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,148, 59,202,191, 56,242,188, 64,113,111,189,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 71, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,192, 21,202, 63, 8, 22,216, 63, 66, 84,188, 62,186, 70,158, 62, 98,211,240,
+ 62,155, 7,124, 62,246,134, 10,190, 79, 16,110,189,252,197,248, 63, 39,188, 81, 62,169,204, 42, 62,154,195,204, 62, 51,225,146,
+ 62, 66,254,125, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 81, 26,123,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+191,252,179, 34,191,184,102, 86, 64, 51,174,169,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 72, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,190,144, 50,232,191, 50, 31,207,191, 40,203,179,189, 45, 99,214,190, 34,153,109,191, 10, 94,239,
+190,212,186,115,190, 19,234, 42,191, 97, 26, 72, 61, 99,105,122, 62, 21,210, 46, 62,186, 32,250, 62,178,126,195, 62, 16,238, 85,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60,124,240,131, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 77,244, 1,
+190,163, 52, 51, 64, 62,234, 30,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,190, 61,137,202,
+191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 73, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,112, 41,126, 61,164,166, 56, 61,240, 4, 91, 62,161,172, 15,190,191,126,106, 63, 64, 33,117, 62,184,227,130,
+190,244, 20, 92,189,180,168,210,191, 43, 25, 60, 61,198,246, 89, 63, 46,130, 30, 62, 54,241,223, 61, 46, 41,221, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,107,196,190, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,122, 27,255,191,133,229,179,
+ 64,149, 39, 66,191, 55, 81,190,191, 71,243,107, 63, 42,237,102, 62,214,163,235,190,183,206,200,190, 61,137,205,191, 80, 38,157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 74, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 24, 46,192,191, 43, 20, 41, 62,183,184,186, 62,136,173, 42, 63, 50, 75, 75, 62,126, 83, 40, 63, 8,195,188, 62,238,211,234,
+ 61,152, 36, 69, 62,145,106,235, 62,239, 4,216, 61, 21,100,235, 61, 20, 73,174, 62,235,197, 83, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 57,122, 93, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,151, 66, 20,192, 62,139,208, 64, 5,118, 98,
191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 89,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62,157,149,183, 62,150,241,169, 63, 5, 72,210,191, 61, 98,196,191,103, 43, 94, 62, 13,249,141,190, 28, 40,108,
-189, 89,143,180, 62,180,169,159, 63,102,210, 50, 62,206,174, 78, 61, 93,159, 68, 61,118, 84,160, 62,246,211, 54, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,126, 53,234, 0, 0, 0, 0,255,255,255,255,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 18,223, 4,191,140,169,155,
- 64, 57, 18,151,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 90,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 44, 63,186, 62,136,104,134, 63, 32,117, 44,190,147,227,178, 63, 90, 77,254,190,175,117, 0,
- 62,167, 69,119, 61,138, 73,238, 62,189,211, 58,191, 37, 28,210, 62, 21, 96,245, 62,227,104, 35, 62,154, 62, 83, 61,222,164, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,151, 27,130, 0, 0, 0, 0,
-255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,179,193,100,
-192, 78,111,251, 63,228, 64,166,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
-191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 91,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 4,101,129, 63, 0, 90,237,190,239,125,104, 63, 3, 31,131,190,212,160,200,
- 63, 27,217,115,190, 6,189, 55,190, 22,223,131,190,223,241, 4,190, 0, 70, 4, 61, 35,242, 37, 61,171,214,204, 63, 46, 25,175,
- 62, 72,177, 82, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,202,249,184,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 75, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 32,160,159,
+191, 52, 39,190,191, 9,138,142, 62,224, 13,138, 62,242,218,166, 63, 26, 71, 93, 62, 52, 22, 36, 62,124, 52,231,190,192, 91,165,
+191, 86,111,148, 61,120,101,212, 61,221, 26, 72, 63, 22, 82,158, 62,122, 14,241, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 22, 96,195, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190, 46, 63,224,191,107,105,222, 64,132,191,198,191, 55, 81,190,
+191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,201,190, 61,137,200,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 76, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 55,202, 47,190, 89,235,249,
+190, 92, 18,127,191, 32,129,146,190, 8,212, 7,190,171, 50,167, 62,123,120, 97,189,249,152,232, 62,149, 18,140, 61, 13,111, 37,
+ 62,204,238, 89, 62, 39, 90, 10, 62, 6,156,123, 62,156, 22, 98, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 18, 61,115, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,234,148,250,192, 97,179, 11, 64, 3,215, 16,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 77, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,248,227,177,190,192,134,160, 62,184,159,155,
+ 63, 51,157,105, 63, 54, 56, 2, 62,182,126, 88,187, 4,207,108, 62,198,216, 38,191, 73, 66,140, 61,248,126,139, 60,119, 26,251,
+ 60,150,207, 34, 63, 20,176,170, 62,197,120,225, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 62,216,234,208, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,135,177,202,192, 86,220,150, 63,239, 9,144,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 78, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 18,122,201,190,163, 68,155,191, 39, 36,236,190,194,182,221,
+190, 98, 47,217,190,230, 46, 97, 62,134,236,197, 60,187, 40,216,189,179, 92,111, 63, 54, 17, 71, 61, 5,169, 87, 61, 92,116,120,
+ 63, 38,253,179, 62,133,192,225, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 60,154, 58,100, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,192,108,105,213, 62,223,145,125, 64, 82,182,192,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,
+190,183,206,198,190, 61,137,206,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 79, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 32,244,195,190,218,189,174, 62, 55, 11,163,191, 95, 75,157,190,243,155, 33,
+191, 90, 86,180, 62, 86,237, 57,190,126,198,226, 61,101, 34, 30,190,180,239, 93, 61,204, 82,206, 63, 89,113, 44, 61, 23, 63, 63,
+ 60,100, 33,220, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 50, 63, 6,
0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-191,124, 90, 93,191,212, 48,113, 64, 74,208, 56,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
-190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 92,144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,236, 25,179, 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,
-190,103,198,244, 62,187,192,251,190,101, 39,179, 62,138,210,110,191, 54,168,145,190, 63, 20,208, 62, 81,178,187, 62,108, 57,176,
- 62,153,177, 93, 62,135, 88,108, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,109,210, 2, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0,192, 33,231,251,191, 59, 2,132, 64, 66,162, 78,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
-190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 93,144,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 24, 46,192,191, 43, 20, 41, 62,183,184,186,
- 62,136,173, 42, 63, 50, 75, 75, 62,126, 83, 40, 63, 8,195,188, 62,238,211,234, 61,152, 36, 69, 62,145,106,235, 62, 30, 15,217,
- 63, 4,209,227, 62,117,148,178, 61,178, 39,218, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63, 57,122, 93, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,138,185, 2,192, 41,128,191, 64, 97,193,139,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,243, 23, 76,191,166,133, 46, 64,134,153, 78,191, 55, 81,192,191, 71,243,109, 63, 42,237, 98, 62,214,163,234,190,183,206,197,
+190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 80, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 49,218,173,191, 23,109,113, 62, 55, 16, 32,190,188,117, 54, 62,208, 20, 25,191, 46,245,118,
+186,236,158, 72,191, 97, 10, 55, 62,183,128,140,190,146,230,177, 62,190, 2,159, 61,193,141, 29, 61,214, 93,214, 62,220, 2,164,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 48, 85, 96, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,214,192,130,
+192, 73, 57,182, 64, 23, 83,175,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 81, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,191, 34,172,206, 62,187, 79, 64, 62, 11,197,140, 63, 42,135,199, 61,148, 91,100, 60, 25, 75,123,189,232,126, 54,
+189,220,190,210, 62,186,158, 9,190,225, 62,182, 61, 84,103,211, 61,115,194, 92, 62,253,216,148, 62,201, 34, 41, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,162,103, 38, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192,133, 4,122, 62,128,136,109,
+ 64, 58, 58,136,191, 55, 81,190,191, 71,243,107, 63, 42,237, 98, 62,214,163,235,190,183,206,198,190, 61,137,206,191, 80, 38,157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 82, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62,137,206,147, 63, 11,207,234, 62,225,144,195, 63, 40,225,162,190,148, 69, 24, 61,190,238, 50,191, 86, 31, 13, 63, 71,106,217,
+ 62, 1, 60,247, 62,136,250,162, 58,156, 80, 70, 63,108,100,142, 61,153, 72, 15, 58, 17, 35,116, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60, 41,199,174, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 62, 12, 40,132,192, 1, 32,102, 64, 95,178,222,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 83, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 95, 57,157,
+ 62,214,148,238, 62,109,249, 87,189,204,220,227,189,221,118,238,191, 19,162,121,191, 48, 50,203,190, 80,232, 58,191, 8,100,141,
+ 63, 19,142,229, 62, 88,196,223, 61,237, 94,134, 62, 97, 5,141, 62,231,195, 43, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 15, 11, 75, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 80,109,211,192, 20,210, 96, 64,103,253,246,191, 55, 81,190,
+191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 84, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,133, 32, 88,190,189,201, 13,
+ 63, 66, 43, 55, 62,239,254, 76, 62,179,163,254,188,171,181, 15, 60,196, 8,130,191, 14, 27,214,190,128, 32, 86,190,208, 27,190,
+ 62, 53,196, 69, 61,135,184,136, 62, 35,250,240, 63, 24,153, 34, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 62,234, 93,224, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,147,142,240,190,166, 7, 43, 64,130, 69, 61,191, 55, 81,190,191, 71,243,109,
+ 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 85, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,249,246, 44, 62,140,102,200, 63, 10,199,154,
+ 63, 32,102, 40,191, 19, 10, 78,190,250,238,224,190,111, 13, 0, 61,187,232,243, 62, 99, 10,106, 62,221, 96,163, 62,206,243, 56,
+ 62,159,170,109, 62, 2,145,224, 62, 32, 50,211, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 25,143, 35, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 89,254, 2,192, 85,197,195, 63,254,197,176,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 13, 65, 94,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,168,120,231,191, 7,154,179,
- 63, 48,180, 41,190,187,232,239,191,104, 35, 9, 62,114, 8,222,190,177,143, 76,191, 28, 29,107, 62,234,112,210,190, 92,249, 9,
- 61,250,196, 0, 61, 62,120, 79, 62, 31, 12,195, 63, 44,252,202, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 62,184, 4, 74, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,243, 63,242,191,159,176, 86, 64,111,150,245,191, 55, 81,190,191, 71,243,109,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 86, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,204,125,122, 63, 46, 10, 37,190, 26, 71, 69, 63, 24,168,130,
+190, 36,105,117, 63, 32,220,144, 62,231,167, 11, 62,179,145,151,190, 36, 72, 33,191, 50, 67, 42, 61, 11, 3,111, 61, 76, 2,241,
+ 63, 28,181,231, 62,155,179,103, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,188,186,244, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,253, 46, 24, 61,214,126,200, 64,125, 1,248,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,
+190,183,206,197,190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 87, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,181,218,171, 63, 80,100,162,190,175, 18, 86,190,157, 51,142,191, 4, 35, 18,
+ 62,210,113,207, 63, 11,170, 0,190,165,126,134, 62, 59, 47,141,191, 62,163,104, 62,181,251, 18, 62,242,163,225, 61,191, 98, 90,
+ 61,158, 33,220, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,104, 76, 83,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+192, 94, 18,115, 61, 49, 61,112, 64, 71,153, 90,191, 55, 81,190,191, 71,243,109, 63, 42,237, 98, 62,214,163,236,190,183,206,197,
+190, 61,137,202,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 88, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,112, 41,126, 61,164,166, 56, 61,240, 4, 91, 62,161,172, 15,190,191,126,106, 63, 64, 33,117,
+ 62,184,227,130,190,244, 20, 92,189,180,168,210,191, 43, 25, 60, 61,190,188,141, 63, 68,157,118, 61,224,119,105, 60,239,129,112,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,107,196,190, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191,141, 34, 38,
+192, 39,140,222, 64, 25, 55,182,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 89, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 85, 40,193,190,146, 79,120,190,203,249, 68, 62,131,217,207, 63, 22, 65,229, 63, 63,104,120,189,124,135,173,
+190,190,179,131, 62,171, 81,208, 63, 69,132,211, 61,189, 6,122, 62, 23,195, 58, 62,254,114, 6, 62,134,106,189, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 20,102,179, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 63, 14,149,191,165,204, 64,
+ 64, 24, 96, 12,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 90, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 30, 81, 54, 62,223, 39,157, 63, 11, 30,214, 62,186, 51, 76, 62, 83,228,206, 61, 0,146,209, 63,121,106, 22,187, 6,124, 44,
+187, 71,233,128, 62,173,190,218, 61, 83, 67, 14, 63, 4,186,192, 62,197,206, 39, 61, 50,159,178, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 60, 52, 19,208, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 22,180,183,192, 4,173,126, 64, 8,189,240,
+191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 91, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 20, 59,104,
+ 63, 17, 36, 30,190,252, 57,112, 62,162,101, 32, 62,160, 6,139, 61, 80,160, 57, 61,245,243,109,190,224, 18, 41,188,227,154,182,
+190,139,196,238, 61,131, 49,133, 62,167, 33,130, 63, 5,225,160, 61,177, 59,124, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 56,166, 20, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 97,160, 35,191,163,220,129, 64,141,248,194,191, 55, 81,190,
+191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 92, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,157,149,183, 62,150,241,169,
+ 63, 5, 72,210,191, 61, 98,196,191,103, 43, 94, 62, 13,249,141,190, 28, 40,108,189, 89,143,180, 62,180,169,159, 63,102,210, 50,
+ 62,206,174, 78, 61, 93,159, 68, 61,118, 84,160, 62,246,211, 54, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,126, 53,234, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 18,223, 4,191,140,169,155, 64, 57, 18,151,191, 55, 81,190,191, 71,243,109,
63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 13, 65, 95,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 58, 26,166,
- 62,159, 70, 1, 63, 2,111,113,190,173,187,235, 62,237, 51,116, 62,247, 53,130,190, 26,199,243,189,172, 88,235, 62,244,115,118,
-191, 5,147, 34, 62,158, 77,217, 62, 72,131, 43, 62, 68,208,119, 62,155, 8, 86, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
- 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,110,152,253, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 48,178,198, 62, 52, 39,138, 64,149,252, 39,191, 55, 81,190,
-191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66,200, 0, 0, 13, 65, 96,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-190,210,167, 41, 62,139,172,194, 63, 35,220,250,191, 22,182, 30, 61,136, 3,122,190,176,164,109,190,147,153, 30,188, 10,248,255,
-190,160, 90,234,190,205,241, 89, 63, 19, 71, 62, 62,107,215,111, 61,138, 71, 63, 62, 1,231,243, 0, 0, 0, 0, 0, 0, 0, 0,
- 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 77,227, 37, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,203,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
- 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,255, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 84,231, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
- 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 31, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,204,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255,
- 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,152, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,205,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223, 63, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23,
- 61,124,223,251, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,142, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23,
- 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,206,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 82, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,255,
- 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,255, 63, 65,123,218, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,224, 15, 63,127,101,123, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,171, 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 15,
- 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,151, 63,216,177,182, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 31, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,207,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168,
- 61, 14, 61,243, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15, 61,124,223,251, 63,127,101,125,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 93, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 44, 63,186, 62,136,104,134, 63, 32,117, 44,
+190,147,227,178, 63, 90, 77,254,190,175,117, 0, 62,167, 69,119, 61,138, 73,238, 62,189,211, 58,191, 37, 28,210, 62, 21, 96,245,
+ 62,227,104, 35, 62,154, 62, 83, 61,222,164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 62,151, 27,130, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,191,179,193,100,192, 78,111,251, 63,228, 64,166,191, 55, 81,190,191, 71,243,109, 63, 42,237,100,
+ 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 94, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 4,101,129, 63, 0, 90,237,190,239,125,104, 63, 3, 31,131,
+190,212,160,200, 63, 27,217,115,190, 6,189, 55,190, 22,223,131,190,223,241, 4,190, 0, 70, 4, 61, 35,242, 37, 61,171,214,204,
+ 63, 46, 25,175, 62, 72,177, 82, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 62,202,249,184, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0,191,124, 90, 93,191,212, 48,113, 64, 74,208, 56,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,
+190,183,206,200,190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 95, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,236, 25,179, 63, 27,158,127, 62,239,235,123, 63, 33,108, 59,190,103,198,244,
+ 62,187,192,251,190,101, 39,179, 62,138,210,110,191, 54,168,145,190, 63, 20,208, 62, 81,178,187, 62,108, 57,176, 62,153,177, 93,
+ 62,135, 88,108, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,109,210, 2,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+192, 33,231,251,191, 59, 2,132, 64, 66,162, 78,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,
+190, 61,137,199,191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 96, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,191, 24, 46,192,191, 43, 20, 41, 62,183,184,186, 62,136,173, 42, 63, 50, 75, 75, 62,126, 83, 40,
+ 63, 8,195,188, 62,238,211,234, 61,152, 36, 69, 62,145,106,235, 62, 30, 15,217, 63, 4,209,227, 62,117,148,178, 61,178, 39,218,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 57,122, 93, 0, 0, 0, 0,
+255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,138,185, 2,
+192, 41,128,191, 64, 97,193,139,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,
+191, 80, 38,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 97, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 62,168,120,231,191, 7,154,179, 63, 48,180, 41,190,187,232,239,191,104, 35, 9, 62,114, 8,222,190,177,143, 76,
+191, 28, 29,107, 62,234,112,210,190, 92,249, 9, 61,250,196, 0, 61, 62,120, 79, 62, 31, 12,195, 63, 44,252,202, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62,184, 4, 74, 0, 0, 0, 0,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,190,243, 63,242,191,159,176, 86,
+ 64,111,150,245,191, 55, 81,190,191, 71,243,109, 63, 42,237,100, 62,214,163,234,190,183,206,200,190, 61,137,199,191, 80, 38,158,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194, 98, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+191, 58, 26,166, 62,159, 70, 1, 63, 2,111,113,190,173,187,235, 62,237, 51,116, 62,247, 53,130,190, 26,199,243,189,172, 88,235,
+ 62,244,115,118,191, 5,147, 34, 62,158, 77,217, 62, 72,131, 43, 62, 68,208,119, 62,155, 8, 86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66,200, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,110,152,253, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,191, 48,178,198, 62, 52, 39,138, 64,149,252, 39,
+191, 55, 81,190,191, 71,243,107, 63, 42,237,100, 62,214,163,235,190,183,206,198,190, 61,137,203,191, 80, 38,157, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194, 99, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,210,167, 41,
+ 62,139,172,194, 63, 35,220,250,191, 22,182, 30, 61,136, 3,122,190,176,164,109,190,147,153, 30,188, 10,248,255,190,160, 90,234,
+190,205,241, 89, 63, 19, 71, 62, 62,107,215,111, 61,138, 71, 63, 62, 1,231,243, 0, 0, 0, 0, 0, 0, 0, 0, 66,200, 0, 0,
+ 66,200, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 62, 77,227, 37, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,206, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255,
+ 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 84,231, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 15, 62,124,224, 31, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,207, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,219,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152,
+ 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,208, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223, 63, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,168, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,251,
+ 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 59, 62, 65,155,142, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23,
+ 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,209, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7,
+ 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,255, 63, 2, 71,186,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,255, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,199, 61,124,224, 15, 63,127,101,123, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171,
+ 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 15, 63,187,172,163,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,151, 63,216,177,182, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 84,255, 62,124,224, 31, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,193,210, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,243,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15, 61,124,223,251, 63,127,101,125, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 5, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,180, 62, 14, 62, 8, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,142,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,211, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,126,200, 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,135,
+ 61,124,224, 7, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,107, 61,197,143, 11, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,104, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,137,251, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,231,
+ 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,212, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255,
+ 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,235, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11,
+ 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,193,213, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136,
+ 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,251, 63,127,101,125,
66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 5, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,180, 62, 14, 62, 8, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59,
- 62, 65,155,142, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 23, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,208,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,126,200, 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,135, 61,124,224, 7, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,107, 61,197,143, 11,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,104, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,251, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 84,231, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 64,209,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
- 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,220,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
- 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,147, 63,216,177,185,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,210,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 8, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
+ 62, 65,155,142, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,214, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
+ 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 15, 63, 2, 71,188, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 18,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,152, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 31, 62,124,224, 34, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,215, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,223,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,132, 61, 14, 62, 3, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,252, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,207, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,169,
+ 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 50, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,216, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,143, 62,131,146, 56, 65, 72, 0, 0,
63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,136, 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,251,
- 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 5, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 8, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 75, 62, 65,155,142, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,211,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 15, 63, 2, 71,188,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43,
- 61,197,143, 18, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,152, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 34, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,212,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,223, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,132, 61, 14, 62, 3,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,252, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,207, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,169, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 50, 62, 65,155,147,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,213,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,143, 62,131,146, 56,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,250, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
- 61,124,224, 4, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 11, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,146, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255,
- 62,124,224, 26, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,214,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 87, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,199, 60,124,223,255,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 21, 11, 61,197,143, 11, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,192, 62, 14, 62, 11,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,215,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
- 61, 14, 61,239, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,239, 63,127,101,127,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
- 62, 65,155,135, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 17, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,216,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 71, 59,124,223,239,
- 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,120, 61, 14, 62, 2, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,247, 61,124,224, 17, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,165, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 48, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 7, 62,124,224, 28, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 64,217,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135,
- 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,221,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200,
- 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,143, 63,216,177,186,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,218,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,136, 61, 14, 62, 3, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 17,
- 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 53, 62, 65,155,148, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 10, 62,124,224, 29,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,219,144, 0, 0, 1, 37,
+188, 35,127,200, 61, 14, 61,250, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 4,
+ 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 11, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 43, 62, 65,155,146, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 26,
+ 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,217, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 87, 7,
+ 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,199, 60,124,223,255, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 71, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
+ 61,197,143, 11, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,192, 62, 14, 62, 11, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,193,218, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85, 7, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239,
+ 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,239, 63,127,101,127, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,184, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,135,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 17, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,219, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 71, 59,124,223,239, 62,131,146, 58,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,120, 61, 14, 62, 2, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247,
+ 61,124,224, 17, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,165, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 48, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7,
+ 62,124,224, 28, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,220, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255,
+ 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,221, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 21, 43, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7,
+ 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,143, 63,216,177,186, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,193,221, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136,
+ 61, 14, 62, 3, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 17, 63,127,101,125,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 53,
+ 62, 65,155,148, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 10, 62,124,224, 29, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,222, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 71, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 15,
+ 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 83, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 27, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,223, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,219, 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168,
+ 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 27, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,224, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,200, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,247,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 59, 62, 65,155,138, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 19,
+ 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,225, 32, 0, 0, 1, 44,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187,
+ 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,188,
65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 71, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43,
- 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7, 63,187,172,164,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 83, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,220,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
+ 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 11, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 83, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,193,226, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,168, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,147,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 27, 63,245, 17,143, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,221,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,127, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
- 61,124,223,247, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,138, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15,
- 62,124,224, 19, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,222,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255,
- 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 21, 11, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 11,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 83, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,223,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 71, 60,124,223,223, 63, 2, 71,189, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
- 61, 14, 61,247, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 7, 63,127,101,127,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 11, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59,
- 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,224,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,247, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 7, 61,124,224, 7, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 11,
- 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,165, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 11, 62,124,224, 25, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 64,225,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 84,135, 59,124,224, 63, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231,
- 60,124,224, 55, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 17, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 30, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,203, 61,197,143, 24, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,164,
- 62, 14, 62, 18, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 55, 62, 65,155,155, 63,216,177,183,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 36, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,226,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,168, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 67, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 19,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,227,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,186,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,255, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 15, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
- 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,163,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,151, 63,216,177,182, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 31, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,228,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 71, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 7,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 23, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,176, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147,
+187,145, 85, 71, 60,124,223,223, 63, 2, 71,189, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,247,
+ 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 7, 63,127,101,127, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 11, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,176, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,145,
63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,229,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,191, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,247, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 0, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231,
- 61,124,224, 14, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171, 61,197,143, 13, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,251,
- 62,124,224, 27, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,230,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 85, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,223,223,
- 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,184, 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 31, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,243, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,188, 62, 14, 62, 7,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 17, 62,124,224, 22, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,231,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168,
- 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67,
- 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 27, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,232,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 71, 59,124,223,255,
- 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,255, 61,124,224, 23, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 19,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,170, 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 56, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 13, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 64,233,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7,
- 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 15, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,171, 61,197,143, 7, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152,
- 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,147, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 19, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,234,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,128, 8, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85,103, 61,124,223,255,
- 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 75, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 91, 62, 65,155,143, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23,
- 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,235,144, 0, 0, 1, 37,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,227, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,247, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
+ 61,124,224, 7, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 11, 63,158, 2, 82,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11,
+ 62,124,224, 25, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,228, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 84,135, 59,124,224, 63, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,224, 55,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 17, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 30, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,203, 61,197,143, 24, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,164, 62, 14, 62, 18,
+ 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 55, 62, 65,155,155, 63,216,177,183, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 36, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,193,229, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168,
+ 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255, 63,127,101,126,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67,
+ 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 19, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,230, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,255, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 39, 61,124,224, 15, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 15,
+ 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,163, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,151, 63,216,177,182, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 31, 62,124,224, 31, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,231, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71,
+ 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 7, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 23, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176,
+ 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,232, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,191, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,247, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127, 72, 61, 14, 62, 0, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 14,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 27, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,251, 62,124,224, 27,
+ 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,233, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7,
+ 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,223,223, 63, 2, 71,186,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,184, 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 31, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,243,
+ 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,188, 62, 14, 62, 7, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 17, 62,124,224, 22, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,193,234, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,255,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,176, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,147,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,235, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 71, 59,124,223,255, 62,131,146, 58,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255,
+ 61,124,224, 23, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 19, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,170, 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 56, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 13,
+ 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,236, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,224, 63,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,171, 61,197,143, 7, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 11,
+ 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 19, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,193,237, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8,
+ 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85,103, 61,124,223,255, 63,127,101,127,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 75, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91,
+ 62, 65,155,143, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,143,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,238, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
+ 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 27,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 19, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,155, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 31, 62,124,224, 35, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,239, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135,
+ 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104, 61, 14, 61,255, 63, 65,123,219,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,187, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152,
+ 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35, 62, 65,155,143, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,240, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,200, 61, 14, 61,255, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15,
+ 63,127,101,128, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 13, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 75, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 29,
+ 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,241, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
+ 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,231, 61,124,224, 23, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
+ 61,197,143, 19, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,149, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 33, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,193,242, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,215, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,144, 61, 14, 62, 7,
+ 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,251, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,207, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,166, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 45, 62, 65,155,147,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 8, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,243, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39,
+ 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,142,255, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,139, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31,
+ 62,124,224, 15, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,244, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255,
+ 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 13,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,193,245, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
+ 61, 14, 61,255, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 15, 63,127,101,127,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
+ 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,246, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,255,
+ 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 83,135, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,126,200, 61, 14, 61,239, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 84,135, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20, 75, 61,197,142,255,
+ 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127, 88, 62, 14, 61,255, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,219, 62, 65,155,135, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 84,223, 62,124,224, 15, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,247, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
+ 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
+ 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,137, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 15, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,248, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,127, 62,131,146, 56, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,200, 61, 14, 61,251, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 3,
+ 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 8, 63,158, 2, 80, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 10, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 27, 62, 65,155,143, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 24,
+ 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,249, 32, 0, 0, 1, 44,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 31, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43,
- 61,197,143, 27, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 19, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,155, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 35, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,236,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,135, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104, 61, 14, 61,255,
- 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,187, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,152, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35, 62, 65,155,143,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,237,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 59,
+ 59,124,224,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 63, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 15, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 31, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
+ 61,197,143, 27, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 23, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,157, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 37, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,193,250, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 87, 7, 59,124,224, 15, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85,135, 60,124,224, 19, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,232, 61, 14, 62, 12,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 28, 63,127,101,125, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 25, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,200, 62, 14, 62, 19, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,155,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 35, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,251, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,224, 63, 62,131,146, 58,
65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,255, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71,
- 61,124,224, 15, 63,127,101,128, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 15, 63,158, 2, 82,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 13, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23,
- 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,238,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 23, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,203, 61,197,143, 19, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,149, 63,216,177,185, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 33, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,239,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,215, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,144,
- 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,251, 61,124,224, 15, 63,127,101,127,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,207, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,166, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 45,
- 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 8, 62,124,224, 27, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,240,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 39, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,142,255,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,139, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 31, 62,124,224, 15, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 64,241,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
- 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 7, 63, 65,123,220,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176,
- 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,145, 63,216,177,185,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,242,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,200, 61, 14, 61,255, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 15,
- 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 75, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,243,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7,
- 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 83,135, 60,124,223,191, 63, 2, 71,188,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,126,200, 61, 14, 61,239, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 84,135, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20, 75,
- 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127, 88, 62, 14, 61,255, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,219, 62, 65,155,135, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 84,223, 62,124,224, 15, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,244,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,184, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,137,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 15, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,245,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,127, 62,131,146, 56,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,251, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
- 61,124,224, 3, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 8, 63,158, 2, 80,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 10, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,143, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247,
- 62,124,224, 24, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,246,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 86, 7, 59,124,224,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 63,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 15, 63, 65,123,221, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 31, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 21, 11, 61,197,143, 27, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 23,
+ 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 3, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
+ 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,148, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11,
+ 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,252, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 86, 7, 59,124,224, 33, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 29,
+ 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 11, 63, 65,123,221, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 24, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 21, 43, 61,197,143, 24, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 18,
63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,157, 63,216,177,184, 66,175, 0, 0,
62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 37, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,247,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 87, 7, 59,124,224, 15, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85,135, 60,124,224, 19, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,232,
- 61, 14, 62, 12, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 28, 63,127,101,125,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 25, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 19, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91,
- 62, 65,155,155, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 35, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,248,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,224, 63,
- 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 3, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 7, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,148, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 11, 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 64,249,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 86, 7, 59,124,224, 33, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135,
- 60,124,224, 29, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 11, 63, 65,123,221,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 24, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 24, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200,
- 62, 14, 62, 18, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,157, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 37, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,250,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,200, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 75, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,251,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,255, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 62, 7, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 84,167, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139,
- 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 11, 63,187,172,163,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,143, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 84,247, 62,124,224, 23, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 64,252,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,215, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,255,
- 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,223, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,174, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 57, 62, 65,155,147,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 12, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,253,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
- 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,147, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23,
- 62,124,224, 31, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 64,254,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 86, 7, 59,124,223,191, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 15,
- 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 21, 11, 61,197,143, 17, 63,158, 2, 83, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 14,
- 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,146, 63,216,177,186, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 26, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 64,255,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
- 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,255, 63,127,101,125,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
- 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 19, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 0,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 23, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,251, 61,197,143, 3,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,192, 62, 14, 62, 6, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,140, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 19, 62,124,224, 21, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 1,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 84, 7, 59,124,223,127, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
- 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,247, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
- 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,141, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 2,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,193,253, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 71, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
+ 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15, 63,127,101,126,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
+ 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,193,254, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,255,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 62, 7, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 84,167, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139, 61,197,143, 15,
+ 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,143, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 84,247, 62,124,224, 23, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,193,255, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,215,
+ 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,255, 63, 65,123,219,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,223, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,174,
+ 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 57, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 12, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 0, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 15,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 75, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 3,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
- 59,124,224,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,224, 63, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 47, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 84,231, 61,124,224, 63, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
- 61,197,143, 47, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 27, 63,187,172,163,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,167, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 84,255, 62,124,224, 51, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 4,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,224, 31, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,199, 60,124,224, 31, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 16,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,215, 61,197,143, 22, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,172, 62, 14, 62, 17, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 53, 62, 65,155,151,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 32, 63,245, 17,141, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 5,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247,
- 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15,
- 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 6,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,191,
- 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,247, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,171, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 7,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35, 62, 65,155,145, 63,216,177,183, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 26, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 7,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+188, 35,127,200, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15,
+ 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 75, 62, 65,155,147, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 31,
+ 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 1, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
+ 59,124,223,191, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 15, 63, 2, 71,188,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
+ 61,197,143, 17, 63,158, 2, 83, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 14, 63,187,172,165,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,146, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 26, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 2, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,139,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 19, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 3, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23,
+ 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,251, 61,197,143, 3, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,192, 62, 14, 62, 6, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,140, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19,
+ 62,124,224, 21, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 4, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 84, 7, 59,124,223,127, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,247, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,235, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 5, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
- 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
- 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 8,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,191, 59,124,222,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,229, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,154, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 7, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,232, 61,197,143, 7,
- 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,182, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 65, 62, 65,155,139, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 16, 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 9,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199,
- 60,124,224, 31, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 7, 63, 65,123,220,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168,
- 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,147, 63,216,177,185,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 10,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,224,255, 62,131,146, 58, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127, 72, 61, 14, 62, 47, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 47,
- 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171, 61,197,143, 47, 63,158, 2, 80, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 27, 62, 65,155,167, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 49,
- 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 11,144, 0, 0, 1, 37,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
+ 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 15, 63,127,101,126,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
+ 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 6, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,224,255,
+ 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 47, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 84,231, 61,124,224, 63, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 47,
+ 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,167, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 84,255, 62,124,224, 51, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 7, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84,135, 59,124,224, 31, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199,
+ 60,124,224, 31, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 16, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,215, 61,197,143, 22, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,172,
+ 62, 14, 62, 17, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 53, 62, 65,155,151, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 32, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 8, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,136, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247, 61,124,223,255,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 59, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 23,
+ 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 9, 32, 0, 0, 1, 44,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
- 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,191, 63, 2, 71,186,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 84,167, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,107,
- 61,197,143, 11, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,104, 62, 14, 62, 9, 63,187,172,163,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,251, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 84,239, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 12,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 15,
+ 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,191, 63, 2, 71,186,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,231, 61,124,223,247, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171,
+ 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 7, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35, 62, 65,155,145, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 84,255, 62,124,224, 26, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 10, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,255,
+ 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,143,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 11, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,191, 59,124,222,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,229, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,154, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
+ 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,232, 61,197,143, 7, 63,158, 2, 82,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,182, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 65, 62, 65,155,139, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 16,
+ 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 12, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,224, 31,
+ 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 13, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,224,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 84,135, 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72,
+ 61, 14, 62, 47, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 47, 63,127,101,125,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171, 61,197,143, 47, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 27,
+ 62, 65,155,167, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 49, 63,245, 17,139,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 14, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255,
+ 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 84,167, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,107, 61,197,143, 11,
+ 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,104, 62, 14, 62, 9, 63,187,172,163, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,251, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 84,239, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 15, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 62, 15, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,171, 61,197,143, 31, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152,
+ 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,159, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 39, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 16, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,200, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,255,
+ 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,192, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 67, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 19,
+ 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 17, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
+ 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 7, 61,124,223,247, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
+ 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 5, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,138, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 18, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255,
63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171, 61,197,143, 31, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,152, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,159,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 39, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 13,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39,
- 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,192, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19,
- 62,124,224, 19, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 14,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,247, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 5,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,138, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 15,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136,
- 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59,
- 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 27, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 16,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,224, 15, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,247, 61,124,224, 19, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 17,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,164, 62, 14, 62, 14, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,148, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 7, 62,124,224, 30, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 17,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 83, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 71,
- 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 40, 61, 14, 61,223, 63, 65,123,218,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,223,239, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,155, 61,197,142,255, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,128,
- 62, 14, 61,255, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,131, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,243, 62,124,224, 15, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 18,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127, 72, 61, 14, 61,239, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,223,255,
- 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139, 61,197,142,247, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,120, 62, 14, 61,255, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,137,251, 62, 65,155,131, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,239, 62,124,224, 11,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 19,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
- 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 39, 62,124,224, 27, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 20,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85,135, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,239,
- 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85,103, 61,124,223,255, 63,127,101,127, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,142,255, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,200, 62, 14, 62, 3, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,135,
- 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 19, 63,245, 17,143, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 21,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39,
- 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 15, 63,158, 2, 82,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,151, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31,
- 62,124,224, 27, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 22,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 85, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,191,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,231, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,215, 61,124,223,231, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,171, 61,197,142,247, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 1,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,135, 63,216,177,185, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,251, 62,124,224, 15, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 23,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 83, 7, 59,124,223,191, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,135, 60,124,223,239, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104,
- 61, 14, 62, 3, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,125,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,187, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35,
- 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 25, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 24,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,224, 63,
- 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 47, 63, 2, 71,186, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 15, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 7, 61,124,224, 29, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 24,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 17, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,155, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 7, 62,124,224, 35, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 25,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135,
- 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216,
- 62, 14, 62, 15, 63,187,172,166, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,150, 63,216,177,186,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 30, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 26,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 15, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,200, 61, 14, 62, 11, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 23,
- 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 17, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 33,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 27,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,191, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 15, 63, 2, 71,188,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
- 61,197,143, 17, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 14, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 34, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 28,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,103, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,191, 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,144, 61, 14, 62, 15,
- 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 3, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,223, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,174, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,147,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 29,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,191, 62,131,146, 59,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 3, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 4, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71,
- 61,124,224, 18, 63,127,101,128, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 15, 63,158, 2, 82,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 14, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,149, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23,
- 62,124,224, 26, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 30,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,191,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247, 61,124,223,247, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,203, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,160, 62, 14, 62, 7,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 31,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 87, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 40,
- 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 31, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 27, 61,197,143, 31, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,208, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91,
- 62, 65,155,163, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 43, 63,245, 17,140,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 32,144, 0, 0, 1, 37, 0, 0, 0, 9,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,168, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 19, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,224, 15, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,247,
+ 61,124,224, 19, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 17, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,164, 62, 14, 62, 14, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,148, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7,
+ 62,124,224, 30, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 20, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 83, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 71, 60,124,223,191,
+ 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 40, 61, 14, 61,223, 63, 65,123,218, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,223,239, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,155, 61,197,142,255, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,128, 62, 14, 61,255,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,131, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,243, 62,124,224, 15, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 21, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 84,135, 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72,
+ 61, 14, 61,239, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,223,255, 63,127,101,124,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139, 61,197,142,247, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,120, 62, 14, 61,255, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,251,
+ 62, 65,155,131, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,239, 62,124,224, 11, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 22, 32, 0, 0, 1, 44, 0, 0, 0, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
- 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 39, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 23,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 39, 62,124,224, 27, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 23, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135,
+ 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,239, 63, 65,123,221,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85,103, 61,124,223,255, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 21, 43, 61,197,142,255, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200,
+ 62, 14, 62, 3, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,135, 63,216,177,186,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 19, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 24, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 15,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 91, 62, 65,155,151, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 27,
+ 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 25, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7,
+ 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,191, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,231, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,215, 61,124,223,231, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,171,
+ 61,197,142,247, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 1, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,135, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 84,251, 62,124,224, 15, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 26, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 83, 7, 59,124,223,191, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,135, 60,124,223,239, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104, 61, 14, 62, 3,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,187, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,152, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35, 62, 65,155,145,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 27, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,224, 63, 62,131,146, 56,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 47, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 15, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7,
+ 61,124,224, 29, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 24, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 17, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,155, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7,
+ 62,124,224, 35, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 28, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255,
+ 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 21, 43, 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 15,
+ 63,187,172,166, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,150, 63,216,177,186, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 30, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 29, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 15, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
+ 61, 14, 62, 11, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 23, 63,127,101,127,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 17, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
+ 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 33, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 30, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,191,
+ 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 15, 63, 2, 71,188, 65,200, 0, 0,
63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 39, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 23, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 33,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 86, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135,
- 60,124,223,207, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,244, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,254, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 5, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
- 62, 14, 62, 9, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,143, 63,216,177,185,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 25, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 34,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,241, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,168, 61, 14, 61,253, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 11,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 12, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 59, 62, 65,155,146, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 27,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 35,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,199,
- 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,247, 60,124,223,255, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,160, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 11, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,231,
- 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,178, 62, 14, 62, 7, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 61, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 14, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 36,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 7, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,239, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,184, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,137,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 17, 63,245, 17,141, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 37,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,215, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,140, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,251,
- 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 82,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,178, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 61, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15,
- 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 38,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 85, 7, 59,124,224, 13, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31,
- 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 9, 63, 65,123,220, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 22, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,235, 61,197,143, 16, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 14,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,148, 63,216,177,185, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 30, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 39,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,199, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,231, 60,124,223,159, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,144,
- 61, 14, 61,231, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,239, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,217, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,175, 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 56,
- 62, 65,155,140, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 21, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 40,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,224,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 63, 63, 2, 71,188, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 72, 61, 14, 62, 31, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85,103, 61,124,224, 47, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 75, 61,197,143, 39,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,248, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138,139, 62, 65,155,163, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 55, 62,124,224, 43, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 41,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199,
- 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,239, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,219, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176,
- 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,139, 63,216,177,185,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 42,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 71, 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127, 72, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,255,
- 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,187, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 35, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 19,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 43,144, 0, 0, 1, 37,
+188,145, 85, 39, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 17,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 14, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 23, 62,124,224, 34, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 31, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84,103, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,191,
+ 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,144, 61, 14, 62, 15, 63, 65,123,219,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 3, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,223, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,174,
+ 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 32, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,191, 62,131,146, 59, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 3, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,128, 8, 61, 14, 62, 4, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 18,
+ 63,127,101,128, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 14, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 91, 62, 65,155,149, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 26,
+ 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 33, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
+ 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,191, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,247, 61,124,223,247, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
+ 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,160, 62, 14, 62, 7, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 34, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 87, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 40, 61, 14, 62, 15,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 27, 61,197,143, 31, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,208, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,163,
+ 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 43, 63,245, 17,140, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 35, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39,
+ 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23,
+ 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 36, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 86, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,207,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,244, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,254, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 21, 11, 61,197,143, 5, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 9,
+ 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 25, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 37, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,223,241, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168,
+ 61, 14, 61,253, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 11, 63,127,101,126,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 12, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59,
+ 62, 65,155,146, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 27, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 38, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,199, 59,124,222,255,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,247, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,160, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 11, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,231, 61,197,143, 15,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,178, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 61, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 14, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 39, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
+ 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,239, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,203, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
+ 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,137, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 17, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 40, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,215, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,140, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,251, 61,124,224, 15,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,178, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 61, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27,
+ 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 41, 32, 0, 0, 1, 44,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71, 60,124,223,255, 63, 2, 71,186,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,251,
- 61,197,143, 7, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 19, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 44,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,199, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,231, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 15,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 3, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,180, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,147,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,141, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 45,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255,
- 61,124,224, 39, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,227, 61,197,143, 33, 63,158, 2, 82,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 24, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,162, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 17,
- 62,124,224, 45, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 46,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 59,124,224, 13, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31, 63, 2, 71,188,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 9, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 22, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
+ 61,197,143, 16, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 14, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,148, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 30, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 42, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,199, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,231, 60,124,223,159, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,144, 61, 14, 61,231,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,239, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,217, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,175, 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 56, 62, 65,155,140,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 21, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 43, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,224,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 63, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,128, 72, 61, 14, 62, 31, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85,103,
+ 61,124,224, 47, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 75, 61,197,143, 39, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,248, 62, 14, 62, 27, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138,139, 62, 65,155,163, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 55,
+ 62,124,224, 43, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 44, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
188,227, 20,219, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 11,
- 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0,
+ 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,139, 63,216,177,185, 66,175, 0, 0,
62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 47,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152,
- 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51,
- 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 27, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 48,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,223,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,235, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,126,200, 61, 14, 61,251, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,167, 61,124,224, 9, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,107, 61,197,143, 11,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,120, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,137,251, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 84,239, 62,124,224, 28, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 49,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39,
- 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 21, 3, 61,197,143, 7, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,196,
- 62, 14, 62, 7, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 87, 62, 65,155,143, 63,216,177,183,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 29, 62,124,224, 23, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 50,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,191, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127, 72, 61, 14, 61,251, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,224, 11,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,155, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 12, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 19, 62, 65,155,144, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 24,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 51,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 31, 63, 2, 71,188,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
- 61,197,143, 11, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 11, 63,187,172,164,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 52,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 7, 60,124,223,239, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 3,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,149,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 53,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86,135, 59,124,223,255, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,103, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,248, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 55,
- 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 35, 61,197,143, 15, 63,158, 2, 80,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,220, 62, 14, 62, 15, 63,187,172,162, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138,107, 62, 65,155,151, 63,216,177,182, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 37,
- 62,124,224, 31, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 54,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 86,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,103, 60,124,223,255,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,184, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 45, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 84, 71, 60,124,223,191, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72,
+ 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,255, 63,127,101,125,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,187, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 35,
+ 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 19, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 46, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 23, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,251, 61,197,143, 7,
+ 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 19, 62,124,224, 19, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 47, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84,199, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 15, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 3, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,180,
+ 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,147, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 27, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 48, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 39,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,227, 61,197,143, 33, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 24, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 67, 62, 65,155,162, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 17, 62,124,224, 45,
+ 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 49, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7,
+ 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219,
+ 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 11, 63,187,172,165,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 19, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 50, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,231, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 7,
+ 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,147,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 51, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,223, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84, 7, 60,124,223,235, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,126,200, 61, 14, 61,251, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,167,
+ 61,124,224, 9, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,107, 61,197,143, 11, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,120, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,137,251, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,239,
+ 62,124,224, 28, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 52, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 85, 7, 59,124,222,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,223,191,
+ 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 21, 3, 61,197,143, 7, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,196, 62, 14, 62, 7,
+ 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 87, 62, 65,155,143, 63,216,177,183, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 29, 62,124,224, 23, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 53, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,191, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 84, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72,
+ 61, 14, 61,251, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,224, 11, 63,127,101,126,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,155, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 12, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 19,
+ 62, 65,155,144, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247, 62,124,224, 24, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 54, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
+ 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,224, 31, 63, 2, 71,188, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 7, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 71, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 11,
+ 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 31, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 55, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
+ 60,124,223,239, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 3, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,219, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168,
+ 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,149, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 29, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 56, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,103, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,248, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 55, 61,124,224, 15,
+ 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 35, 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,220, 62, 14, 62, 15, 63,187,172,162, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138,107, 62, 65,155,151, 63,216,177,182, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 37, 62,124,224, 31,
+ 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 57, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86,135,
+ 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,103, 60,124,223,255, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,184, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
+ 61,197,143, 31, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,180, 62, 14, 62, 23, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 71, 62, 65,155,159, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 18, 62,124,224, 43, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 58, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85, 39, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,243, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,184, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 83, 62, 65,155,151,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 25, 62,124,224, 27, 63,245, 17,140, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 59, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255, 62,131,146, 58,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,239, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71,
+ 61,124,223,255, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 75, 61,197,143, 7, 63,158, 2, 82,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138,107, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31,
+ 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 60, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 63,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0,
63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,235, 61,197,143, 31, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,180, 62, 14, 62, 23,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 71, 62, 65,155,159, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 18, 62,124,224, 43, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 55,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 39, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168,
- 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15, 61,124,224, 15, 63,127,101,125,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,243, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 83,
- 62, 65,155,151, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 25, 62,124,224, 27, 63,245, 17,140,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 56,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,222,255,
- 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,239, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 71, 61,124,223,255, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 75, 61,197,143, 7,
- 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 7, 63,187,172,165, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138,107, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 31, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 57,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
- 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,219, 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176,
- 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,151, 63,216,177,185,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 58,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,200, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15,
- 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 59, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 31,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 59,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,143, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,251, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 2, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
- 61,197,143, 11, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,163,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,145, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 27, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 60,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15,
- 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,176, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,147,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 61,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15,
- 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19,
- 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 62,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,191,
- 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,239, 63, 65,123,218, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199, 61,124,223,239, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,139, 61,197,142,247, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,120, 62, 14, 61,251,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,131, 63,216,177,185, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,239, 62,124,224, 11, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 63,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,219, 61,197,143, 23, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 15,
+ 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 61, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 85, 39, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,176,
- 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 19, 61,124,223,239, 63,127,101,125,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,231, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,179, 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 65,
- 62, 65,155,139, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 16, 62,124,224, 21, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 64,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,104, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,239, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 11,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,164, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 11, 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 65,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 86, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
- 60,124,223,207, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,243, 63, 65,123,220,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,251, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
- 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,141, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 66,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,168, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15,
- 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 51, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 27,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 67,144, 0, 0, 1, 37,
+ 0, 0, 0, 0,187,145, 85, 71, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
+ 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15, 63,127,101,127,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59,
+ 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 31, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 62, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,143,
+ 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,251, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 39, 61,124,224, 2, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 11,
+ 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,145, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 7, 62,124,224, 27, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 63, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,219,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,235, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176,
+ 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,147, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 64, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,152, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15, 61,124,223,255,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 75, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 23,
+ 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 65, 32, 0, 0, 1, 44,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
- 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,247, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 7, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
- 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 6, 63,187,172,164,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 22, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 68,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85, 71, 60,124,224, 13, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 5,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 19, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,227, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,176, 62, 14, 62, 14, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,149,
- 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 13, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 69,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,151, 59,124,223,255, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,219, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,140, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,249,
- 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,205, 61,197,143, 15, 63,158, 2, 82,
+ 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,191, 63, 2, 71,186,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,239, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,199, 61,124,223,239, 63,127,101,124, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139,
+ 61,197,142,247, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,120, 62, 14, 61,251, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 11, 62, 65,155,131, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 84,239, 62,124,224, 11, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 66, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 85, 39, 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,176, 61, 14, 61,239,
+ 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 19, 61,124,223,239, 63,127,101,125, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,231, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,179, 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 65, 62, 65,155,139,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 16, 62,124,224, 21, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 67, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,104, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,239,
+ 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 11, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,164, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,145, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11,
+ 62,124,224, 25, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 68, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 86, 7, 59,124,223,127, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,207,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,243, 63, 65,123,220, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,251, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,235, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 7,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 69, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168,
+ 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51,
+ 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11, 62,124,224, 27, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 70, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,127,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,247, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 7, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3,
+ 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 6, 63,187,172,164, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 23, 62,124,224, 22, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 71, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 71,
+ 60,124,224, 13, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 5, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 19, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,227, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176,
+ 62, 14, 62, 14, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,149, 63,216,177,185,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 13, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 72, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,151, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,219, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,140, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,249, 61,124,224, 15,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,205, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 51, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 10, 62,124,224, 27,
+ 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 73, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
+ 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11,
+ 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 74, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,175, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,224, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,142, 61, 14, 61,239,
+ 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 1, 61,124,223,239, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,207, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,164, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 42, 62, 65,155,135,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 4, 62,124,224, 15, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 75, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39,
+ 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 82,
66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 10,
- 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 70,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 21, 11, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200, 62, 14, 62, 7,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,143, 63,216,177,185, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 27, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 71,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,175, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,224, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,142,
- 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 1, 61,124,223,239, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,207, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,164, 62, 14, 62, 3, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 42,
- 62, 65,155,135, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 4, 62,124,224, 15, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 72,144, 0, 0, 1, 37, 0, 0, 0, 9,
+ 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23,
+ 62,124,224, 31, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 76, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 85, 7, 59,124,223,127, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,223,223,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,176, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 19, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,231, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,178, 62, 14, 62, 9,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 24, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 77, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136,
+ 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75,
+ 62, 65,155,151, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 31, 63,245, 17,143,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 78, 32, 0, 0, 1, 44, 0, 0, 0, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 39, 61,124,224, 23, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19,
- 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
189,145, 85, 23, 62,124,224, 31, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 73,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39,
- 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,176, 61, 14, 61,239, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 19, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,231, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,178,
- 62, 14, 62, 9, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,143, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 24, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 74,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 31, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 19, 63,158, 2, 82, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 75, 62, 65,155,151, 63,216,177,186, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 31,
- 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 75,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
- 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 31, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 76,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194, 79, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135,
+ 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 61,255, 63, 65,123,217,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,123, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168,
+ 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147, 63,216,177,182,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 27, 63,245, 17,139, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 80, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 71, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,144, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 31,
+ 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,223, 61,197,143, 31, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 23, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 63, 62, 65,155,161, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 14, 62,124,224, 43,
+ 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 81, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
+ 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,224, 15, 63, 2, 71,188,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
+ 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,150, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 30, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 82, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,135, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 61,255,
- 63, 65,123,217, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,123, 66, 72, 0, 0,
+187,145, 84,135, 60,124,223,255, 63, 2, 71,185, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72, 61, 14, 61,255,
+ 63, 65,123,217, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,255, 63,127,101,123, 66, 72, 0, 0,
63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,168, 62, 14, 62, 11, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,147,
- 63,216,177,182, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 7, 62,124,224, 27, 63,245, 17,139, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 77,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 71, 59,124,223,255, 62,131,146, 56,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 39, 60,124,223,255, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,144, 61, 14, 62, 15, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255,
- 61,124,224, 31, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,223, 61,197,143, 31, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 23, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 63, 62, 65,155,161, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 14,
- 62,124,224, 43, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 78,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,224, 15,
- 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,203, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,150, 63,216,177,185, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 30, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 79,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7, 59,124,223,255, 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,135, 60,124,223,255, 63, 2, 71,185, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 72,
- 61, 14, 61,255, 63, 65,123,217, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,231, 61,124,223,255, 63,127,101,123,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 15, 63,158, 2, 80, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,152, 62, 14, 62, 7, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43,
- 62, 65,155,143, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 23, 63,245, 17,141,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 80,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127,
- 62,131,146, 56, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,247, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 23, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 15, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 81,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7,
- 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,220,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184,
- 62, 14, 62, 5, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,139, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 21, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 82,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,189, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,200, 61, 14, 62, 1, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 16,
- 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 13, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 67, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 30,
- 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 83,144, 0, 0, 1, 37,
+189, 35,127,152, 62, 14, 62, 7, 63,187,172,163, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,143,
+ 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,255, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 83, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,127, 62,131,146, 56,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,247, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23,
+ 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 3, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,141, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15,
+ 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 84, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 61,239, 63, 65,123,220, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,223,255, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,235, 61,197,143, 3, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 5,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,139, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 21, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 85, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 59, 65, 72, 0, 0, 63, 96, 0, 0,
+ 0, 0, 0, 0,187,145, 85,135, 60,124,223,255, 63, 2, 71,189, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200,
+ 61, 14, 62, 1, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 16, 63,127,101,127,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 15, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 13, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 67,
+ 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 30, 63,245, 17,142,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 86, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
+ 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 7, 61,124,224, 7, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203, 61,197,143, 11,
+ 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 23, 62,124,224, 29, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 87, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 86, 7, 59,124,223,191, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85,135,
+ 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 11, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 21, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,200,
+ 62, 14, 62, 17, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,153, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 33, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 88, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 86, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,128, 8, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71, 61,124,224, 15,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138,107, 62, 65,155,147, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 39, 62,124,224, 27,
+ 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 89, 32, 0, 0, 1, 44,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,223, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 7, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
- 61,197,143, 11, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 11, 63,187,172,165,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,145, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 29, 63,245, 17,143, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 84,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,191, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 85,135, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,128, 8, 61, 14, 62, 11,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 39, 61,124,224, 19, 63,127,101,127, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 11, 61,197,143, 21, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,200, 62, 14, 62, 17, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 91, 62, 65,155,153,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 31, 62,124,224, 33, 63,245, 17,141, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 85,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255, 62,131,146, 57,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 86, 7, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,128, 8, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 71,
- 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 21, 43, 61,197,143, 15, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,216, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138,107, 62, 65,155,147, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 39,
- 62,124,224, 27, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 86,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 86, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255,
- 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,203, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 87,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,255, 63, 2, 71,188,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 7, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
+ 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 13, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 43, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 15, 62,124,224, 31, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 90, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,255,
+ 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,215, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,174, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 57, 62, 65,155,143,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 13, 62,124,224, 23, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 91, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 15,
+ 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 23, 63,158, 2, 82,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 11,
+ 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 92, 32,
+ 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,247, 60,124,223,191,
+ 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
+ 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 11, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+188,227, 20,227, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,180, 62, 14, 62, 7,
+ 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 73, 62, 65,155,143, 63,216,177,184, 66,175, 0, 0,
+ 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 20, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,216, 8,194, 93, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,199, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136,
+ 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136,
61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15, 63,127,101,126,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,215, 61,197,143, 7, 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,174, 62, 14, 62, 11, 63,187,172,165, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 57,
- 62, 65,155,143, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 13, 62,124,224, 23, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 88,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,187, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,168, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 85, 15, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 23,
- 63,158, 2, 82, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,165, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 85, 11, 62,124,224, 27, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
- 13, 65, 89,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,247,
- 60,124,223,191, 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 61,239, 63, 65,123,219,
- 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 11, 61,124,223,255, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0,188,227, 20,227, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,180,
- 62, 14, 62, 7, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 73, 62, 65,155,143, 63,216,177,184,
- 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 20, 62,124,224, 23, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 90,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0,
- 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,231, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
-188, 35,127,136, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,255, 61,124,224, 15,
- 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
- 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
-189, 94,138, 55, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 12, 62,124,224, 27,
- 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 91,144, 0, 0, 1, 37,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7,
- 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 63, 63, 2, 71,187,
- 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0,
- 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235,
- 61,197,143, 23, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,164,
- 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 35, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,216, 13, 65, 92,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,135, 59,124,224, 15, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
-187,145, 84,199, 60,124,223,251, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 8,
- 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 22, 63,127,101,126, 66, 72, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
-189, 35,127,172, 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,148,
- 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 30, 63,245, 17,141, 66,200, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 93,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58,
- 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0,
- 0, 0, 0, 0,188, 35,127,168, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23,
- 61,124,224, 15, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81,
- 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
- 0, 0, 0, 0,189, 94,138, 67, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19,
- 62,124,224, 27, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 94,144,
- 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
-186,145, 84, 7, 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191,
- 63, 2, 71,187, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0,
- 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,223,239, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
-188,227, 20,203, 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 3,
- 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,137, 63,216,177,184, 66,175, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 17, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 95,144, 0, 0, 1, 37, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,111, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0,
- 0, 0, 0, 0,187,145, 84,173, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,116,
- 61, 14, 61,255, 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,245, 61,124,224, 15, 63,127,101,127,
- 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,199, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
- 0, 0, 0, 0,189, 35,127,163, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 47,
- 62, 65,155,147, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 6, 62,124,224, 28, 63,245, 17,142,
- 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 13, 65, 96,144, 0, 0, 1, 37, 0, 0, 0, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,127,
- 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0,
- 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,247, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
-188,145, 84,199, 61,124,224, 7, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139, 61,197,143, 7,
- 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0,
- 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,147, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
-189,145, 84,247, 62,124,224, 28, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20,
- 13, 65, 97,144, 0, 0, 0,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 76, 13, 65, 97,208, 0, 0, 0,102, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
- 0, 0, 0, 23, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,202, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 0, 2, 0, 0,
- 0, 0, 79, 66, 0, 0, 3, 68, 7,159,248, 32, 0, 0, 0,109, 0, 0, 0, 1, 7,159,252, 32, 7,159,244, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 66,112,114,101,118,105,101,119,108, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 97,109,112, 0, 1, 4, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,211, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0,
+ 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 55,
+ 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 12, 62,124,224, 27, 63,245, 17,141,
+ 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 94, 32, 0, 0, 1, 44, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 86, 7, 59,124,223,255,
+ 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,224, 63, 63, 2, 71,187, 65,200, 0, 0,
+ 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,200, 61, 14, 62, 15, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,
+188,145, 85, 7, 61,124,224, 31, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,235, 61,197,143, 23,
+ 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,184, 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0,
+ 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 75, 62, 65,155,151, 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
+189,145, 85, 23, 62,124,224, 35, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216,
+ 8,194, 95, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0,186,145, 84,135, 59,124,224, 15, 62,131,146, 58, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,199,
+ 60,124,223,251, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,152, 61, 14, 62, 8, 63, 65,123,220,
+ 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 7, 61,124,224, 22, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0,188,227, 20,219, 61,197,143, 17, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,172,
+ 62, 14, 62, 15, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 51, 62, 65,155,148, 63,216,177,184,
+ 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 9, 62,124,224, 30, 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 96, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 85, 7, 59,124,223,255, 62,131,146, 58, 65, 72, 0, 0,
+ 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,
+188, 35,127,168, 61, 14, 61,255, 63, 65,123,220, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 85, 23, 61,124,224, 15,
+ 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,219, 61,197,143, 15, 63,158, 2, 81, 66,122, 0, 0,
+ 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,176, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,
+189, 94,138, 67, 62, 65,155,147, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 19, 62,124,224, 27,
+ 63,245, 17,141, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 97, 32, 0, 0, 1, 44,
+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 84, 7,
+ 59,124,222,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 85, 7, 60,124,223,191, 63, 2, 71,187,
+ 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,136, 61, 14, 61,239, 63, 65,123,219, 66, 22, 0, 0, 63, 32, 0, 0,
+ 0, 0, 0, 0,188,145, 85, 7, 61,124,223,239, 63,127,101,126, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,203,
+ 61,197,142,255, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,168, 62, 14, 62, 3, 63,187,172,164,
+ 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 59, 62, 65,155,137, 63,216,177,184, 66,175, 0, 0, 62, 0, 0, 0,
+ 0, 0, 0, 0,189,145, 85, 23, 62,124,224, 17, 63,245, 17,142, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,216, 8,194, 98, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0,186,145, 84,111, 59,124,223,255, 62,131,146, 57, 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,
+187,145, 84,173, 60,124,223,255, 63, 2, 71,188, 65,200, 0, 0, 63, 64, 0, 0, 0, 0, 0, 0,188, 35,127,116, 61, 14, 61,255,
+ 63, 65,123,221, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,245, 61,124,224, 15, 63,127,101,127, 66, 72, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,199, 61,197,143, 13, 63,158, 2, 81, 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,
+189, 35,127,163, 62, 14, 62, 13, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0, 0, 0, 0, 0,189, 94,138, 47, 62, 65,155,147,
+ 63,216,177,185, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 85, 6, 62,124,224, 28, 63,245, 17,142, 66,200, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,216, 8,194, 99, 32, 0, 0, 1, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,186,145, 82, 7, 59,124,223,127, 62,131,146, 57,
+ 65, 72, 0, 0, 63, 96, 0, 0, 0, 0, 0, 0,187,145, 84,135, 60,124,223,223, 63, 2, 71,186, 65,200, 0, 0, 63, 64, 0, 0,
+ 0, 0, 0, 0,188, 35,127, 8, 61, 14, 61,247, 63, 65,123,218, 66, 22, 0, 0, 63, 32, 0, 0, 0, 0, 0, 0,188,145, 84,199,
+ 61,124,224, 7, 63,127,101,125, 66, 72, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,188,227, 20,139, 61,197,143, 7, 63,158, 2, 81,
+ 66,122, 0, 0, 62,192, 0, 0, 0, 0, 0, 0,189, 35,127,136, 62, 14, 62, 11, 63,187,172,164, 66,150, 0, 0, 62,128, 0, 0,
+ 0, 0, 0, 0,189, 94,138, 27, 62, 65,155,147, 63,216,177,183, 66,175, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,189,145, 84,247,
+ 62,124,224, 28, 63,245, 17,140, 66,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,194,100, 32,
+ 0, 0, 0,116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 76, 8,194,100, 96, 0, 0, 0,104, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 23,
+ 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 32, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,193,204,176, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66,
+ 0, 0, 3, 80, 3,161, 78, 32, 0, 0, 0,113, 0, 0, 0, 1, 3,161, 82, 32, 3,161, 74, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 66,112,114,101,118,105,101,119,108, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 97,109,112, 0, 1, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 64,161,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,211,197,192, 65, 59,229, 76, 64,184,106,208,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 98,215,247, 63, 72, 11, 71, 63, 6,248,230, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 29, 14,212, 62,182,225,149,191, 52, 76, 84, 0, 0, 0, 0,191, 74, 40, 22, 62,139, 74,201,
-191, 12,198,228, 0, 0, 0, 0,187,157,213, 84, 63,100,190,151, 62,229,223,145, 0, 0, 0, 0,188,211,197,192, 65, 59,229, 76,
- 64,184,106,208, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 8,193,161,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,211,197,192, 65, 59,229, 76, 64,184,106,208, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 98,215,247, 63, 72, 11, 71, 63, 6,248,230, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63, 29, 14,212, 62,182,225,149,191, 52, 76, 84, 0, 0, 0, 0,191, 74, 40, 22, 62,139, 74,201,191, 12,198,228,
+ 0, 0, 0, 0,187,157,213, 84, 63,100,190,151, 62,229,223,145, 0, 0, 0, 0,188,211,197,192, 65, 59,229, 76, 64,184,106,208,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 51, 25, 39,147,179, 63, 47, 43, 0, 0, 0, 0, 50,247,108, 9, 63,128, 0, 0,178,142, 92, 26,
+ 0, 0, 0, 0,179,114, 4, 43,178,141, 59, 32, 63,128, 0, 1, 0, 0, 0, 0,177,127,255,135, 40, 10,214,130,181, 0, 0, 1,
+ 63,128, 0, 0, 63, 29, 14,213,191, 74, 40, 23,187,157,211,254,128, 0, 0, 0,191, 52, 76, 83,191, 12,198,227, 62,229,223,148,
+128, 0, 0, 0,190,182,225,149,190,139, 74,202,191,100,190,152,128, 0, 0, 0,192,158, 36,208,192,110,186,100,193,169, 43, 99,
+ 63,128, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 60,208, 19,169,
+ 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 4, 0, 0, 0, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 79, 66, 0, 0, 3, 80, 3,161, 82, 32, 0, 0, 0,113, 0, 0, 0, 1, 0, 0, 0, 0, 3,161, 78, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 66,116,101,120,116,117,114,101, 0,114,101,118,105,101,119, 46, 48, 48, 53, 0, 0, 0, 0, 0, 1, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 76, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,100,224,188,183, 16, 61,191,103,204, 21, 63,228,234, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,155, 39,153, 64,155, 39,153,
+ 64,155, 39,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,201, 15,218, 37,192, 0, 0, 36,255,255,255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64,155, 39,153, 38, 27, 39,152,166,232,187,102, 0, 0, 0, 0, 38,232,187,102, 52,196,134,157,
+ 64,155, 39,153, 0, 0, 0, 0, 38, 27, 39,154,192,155, 39,153, 52,196,134,157, 0, 0, 0, 0,188,183, 16, 61,191,103,204, 21,
+ 63,228,234, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 51, 46, 0, 0,179, 63, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 63,128, 0, 0,
-179, 0, 0, 0, 0, 0, 0, 0,179, 85, 0, 0,179, 0, 0, 1, 63,128, 0, 0, 0, 0, 0, 0,177,255,255,203, 40,122,144, 2,
-181, 0, 0, 0, 63,128, 0, 0, 63, 29, 14,213,191, 74, 40, 23,187,157,211,254, 0, 0, 0, 0,191, 52, 76, 83,191, 12,198,227,
- 62,229,223,148, 0, 0, 0, 0,190,182,225,149,190,139, 74,202,191,100,190,152, 0, 0, 0, 0,192,158, 36,208,192,110,186,100,
-193,169, 43, 99, 63,128, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 5, 0, 1, 0, 0, 0, 0, 79, 66, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,152,206, 48,236, 24, 41, 66, 9, 0, 0, 0, 0,152, 60, 55,216, 63,128, 0, 0,
+166,105,133, 88, 0, 0, 0, 0,151, 91,159,226, 38, 93,218, 64, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 62, 83, 50, 25, 36,158,101,147, 35,211, 50, 27,128, 0, 0, 0,164,158,101,147, 62, 83, 50, 25,
+ 38,189,119, 59,128, 0, 0, 0,173, 44, 24, 0,175, 94,165,224, 62, 83, 50, 25,128, 0, 0, 0, 59, 33,251,236, 59, 40, 37,135,
+ 63,238, 71,118, 63,128, 0, 0, 0, 0, 0, 32, 0, 1, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0,
- 61, 35,215, 10, 63,128, 0, 0, 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60,208, 19,169, 63,128, 0, 0, 62,204,204,205, 62, 56, 81,236, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 4, 4, 1, 1, 1, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 64, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, 3, 68,
- 7,159,252, 32, 0, 0, 0,109, 0, 0, 0, 1, 0, 0, 0, 0, 7,159,248, 32, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66,116,101,
-120,116,117,114,101, 0,114,101,118,105,101,119, 46, 48, 48, 53, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,161,176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,100,224, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 77, 65,
+ 0, 0, 2,108, 3,161, 86, 32, 0, 0, 0, 42, 0, 0, 0, 1, 3,161, 90, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 65, 99,104,101, 99,107,101,114,100, 97,114,107, 0, 0, 0, 97,116,101,114,105, 97, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 61,221, 1,116, 61,220,251,200, 61,220,251,200, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 89,153,154,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 2, 0, 2, 0, 1, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 3, 1, 64, 0, 3, 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0, 61,204,204,205, 61,204,204,205, 63,128, 0, 0,
+ 8, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 8,194,101, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,101,192, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205, 63, 76,204,205,
+ 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65, 98, 80,188,183, 16, 61,191,103,204, 21, 63,228,234, 48, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,155, 39,153, 64,155, 39,153, 64,155, 39,153, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,201, 15,218, 37,192, 0, 0, 36,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64,155, 39,153, 38, 27, 39,152,166,232,187,102, 0, 0, 0, 0, 38,232,187,102, 52,196,134,157, 64,155, 39,153, 0, 0, 0, 0,
- 38, 27, 39,154,192,155, 39,153, 52,196,134,157, 0, 0, 0, 0,188,183, 16, 61,191,103,204, 21, 63,228,234, 48, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0,153, 34, 33,106, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-153, 34, 33,106, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,179,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 62, 83, 50, 25, 36,158,101,147, 35,211, 50, 27, 0, 0, 0, 0,164,158,101,147, 62, 83, 50, 25, 38,174, 59,158, 0, 0, 0, 0,
-173, 44, 24, 0,175, 94,165,224, 62, 83, 50, 25, 0, 0, 0, 0, 59, 33,251,236, 59, 40, 37,135, 63,238, 71,118, 63,128, 0, 0,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 68, 0, 1, 0, 2, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0,201,150,180, 56, 63,128, 0, 0, 61, 35,215, 10, 63,128, 0, 0,
- 62,204,204,205, 61,204,204,205, 0, 0, 0, 0, 61,117,194,143, 0, 0, 0, 0, 4, 0, 1, 1, 1, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0,136, 8,194,101, 16, 0, 0, 0, 33, 0, 0, 0, 1, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,106,160,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,192, 0, 1, 63,192, 0, 1, 63,192, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,209,183, 23, 56,209,177,184, 56,209,177,184, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 62, 76,204,205, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32,
+ 8,194,101,192, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 3,161, 90, 32, 0, 0, 0, 42, 0, 0, 0, 1,
+ 3,161, 94, 32, 3,161, 86, 32, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 99,104,101, 99,107,101,114,108,105,103,104,116, 0, 0,
+ 0, 97,116,101,114,105, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 62,157, 65,188, 62,157, 61,178,
+ 62,157, 61,178, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 89,153,154, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0,
+ 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 2, 0, 2, 0, 1, 0, 6, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 3, 1, 64, 0, 3,
+ 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205,
+ 63, 0, 0, 0, 61,204,204,205, 61,204,204,205, 63,128, 0, 0, 8, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 8,194,102, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65, 98, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 7,160, 0, 32, 0, 0, 0, 42, 0, 0, 0, 1, 7,160, 4, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 99,104,101, 99,107,101,114,100, 97,114,107, 0, 0, 0, 97,116,101,114,
-105, 97, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 61,221, 1,116, 61,220,251,200, 61,220,251,200,
+ 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 8,194,102, 16, 0, 0, 0, 33, 0, 0, 0, 1,
+ 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,106,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,209,183, 23,
+ 56,209,177,184, 56,209,177,184, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 62, 76,204,205, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 3,161, 94, 32, 0, 0, 0, 42, 0, 0, 0, 1, 3,161,102, 32,
+ 3,161, 90, 32, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65,112,114,101,118,105,101,119, 0, 0, 97,116,101,114,105, 97,108, 0, 0,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 54,232, 61, 63, 23,161,184,
63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 0, 0, 0, 63, 89,153,154, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76,204,205,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 2, 0, 1, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18,
- 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 3, 1, 64, 0, 3, 0, 1, 0, 4,
+ 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 62, 68,248,188, 63,128, 0, 0, 63, 76,204,205,
+ 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,130,121,198, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 2, 0, 2, 0, 50, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18,
+ 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 17, 0, 3, 3, 17, 0, 3, 0, 1, 0, 4,
0, 12, 0, 4, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0,
- 61,204,204,205, 61,204,204,205, 63,128, 0, 0, 8, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 13, 65, 98,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0,
+ 61,204,204,205, 61,204,204,205, 63,128, 0, 0, 8, 16, 0, 1, 3,161, 98, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 8,194,102,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,103,112,
63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
63,128, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102, 63,128, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 13, 65, 98,128, 0, 0, 0, 33, 0, 0, 0, 1, 0, 16, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,103, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,192, 0, 1,
- 63,192, 0, 1, 63,192, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,209,183, 23, 56,209,177,184,
- 56,209,177,184, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 62, 76,204,205,
- 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 7,160, 4, 32, 0, 0, 0, 42, 0, 0, 0, 1, 7,160, 8, 32, 7,160, 0, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 99,104,101, 99,107,101,114,108,105,103,104,116, 0, 0, 0, 97,116,101,114,105, 0, 0,
- 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 62,157, 65,188, 62,157, 61,178, 62,157, 61,178, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 63, 89,153,154, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76,204,205, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 61,204,204,205, 0, 2, 0, 2, 0, 1, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10,
- 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 3, 1, 64, 0, 3, 0, 1, 0, 4, 0, 12, 0, 4,
- 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0, 61,204,204,205,
- 61,204,204,205, 63,128, 0, 0, 8, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 13, 65, 99, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 13, 65, 99, 48, 0, 0, 0, 33, 0, 0, 0, 1, 0, 16, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,103, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,209,183, 23, 56,209,177,184, 56,209,177,184,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 62, 76,204,205, 0, 0, 0, 0,
- 0, 0, 77, 65, 0, 0, 2,108, 7,160, 8, 32, 0, 0, 0, 42, 0, 0, 0, 1, 7,160, 16, 32, 7,160, 4, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 65,112,114,101,118,105,101,119, 0, 0, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63,128, 0, 0, 63, 54,232, 61, 63, 23,161,184, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 62, 68,248,188, 63,128, 0, 0, 63, 76,204,205, 63, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,130,121,198, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 61,204,204,205, 0, 2, 0, 2, 0, 50, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 17, 0, 3, 3, 17, 0, 3, 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2,
- 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0, 61,204,204,205, 61,204,204,205,
- 63,128, 0, 0, 8, 16, 0, 1, 7,160, 12, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 13, 65, 99,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,100,144, 63, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205,
- 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,136, 13, 65, 99,224, 0, 0, 0, 33, 0, 0, 0, 1, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,101,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 62, 76,204,205, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 3, 8, 7,160, 12, 32, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,220, 40,245, 0, 0, 0, 0, 63,125,112,164, 63,128, 0, 0, 63, 24,214,106, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 1, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 8,194,102,192, 0, 0, 0, 33, 0, 0, 0, 1, 0, 16, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,105, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 62, 76,204,205,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 8, 3,161, 98, 32, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,220, 40,245, 0, 0, 0, 0, 63,125,112,164, 63,128, 0, 0,
+ 63, 24,214,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 1, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
@@ -4556,7 +5369,6 @@ char datatoc_preview_blend[]= {
63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4568,36 +5380,37 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32,
- 13, 65,100,144, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 7,160, 16, 32, 0, 0, 0, 42, 0, 0, 0, 1,
- 7,160, 24, 32, 7,160, 8, 32, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65,116,101,120,116,117,114,101, 0,114,101,118,105,101,119,
- 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0,
- 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 2, 0, 2, 0, 50, 0, 6, 63,128, 0, 0, 63,128, 0, 0,
- 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 71, 3, 1, 0, 67,
- 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205,
- 63, 0, 0, 0, 61,204,204,205, 61,204,204,205, 63,128, 0, 0, 8, 1, 0,129, 7,160, 20, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 13, 65,100,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 13, 65,100,224, 0, 0, 0, 33, 0, 0, 0, 1,
- 0, 1, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,101,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 62, 76,204,205, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 8, 7,160, 20, 32, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 2,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,220, 40,245, 0, 0, 0, 0, 63,125,112,164,
- 63,128, 0, 0, 63, 24,214,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 1, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 32, 8,194,103,112, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 3,161,102, 32,
+ 0, 0, 0, 42, 0, 0, 0, 1, 3,161,110, 32, 3,161, 94, 32, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65,116,101,120,116,117,114,
+101, 0,114,101,118,105,101,119, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,204,204,205, 0, 2, 0, 2, 0, 50, 0, 6,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 1, 0, 71, 3, 1, 0, 67, 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0,
+ 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0, 61,204,204,205, 61,204,204,205, 63,128, 0, 0, 8, 1, 0,129, 3,161,106, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 8,194,103,192, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,104,112, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205,
+ 61,204,204,205, 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,136, 8,194,103,192,
+ 0, 0, 0, 33, 0, 0, 0, 1, 0, 1, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,105, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 62, 76,204,205, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 8, 3,161,106, 32, 0, 0, 0, 36,
+ 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,220, 40,245,
+ 0, 0, 0, 0, 63,125,112,164, 63,128, 0, 0, 63, 24,214,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 1, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
@@ -4607,9 +5420,7 @@ char datatoc_preview_blend[]= {
63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
- 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4620,43 +5431,42 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 2,108, 7,160, 24, 32, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 7,160, 16, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 65,116,101,120,116,117,114,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76,204,205, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 2, 0, 2, 0, 50, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10,
- 59,163,215, 10, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 3, 3, 1, 0, 3, 0, 1, 0, 4, 0, 12, 0, 4,
- 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 3,
- 0, 0, 0, 2, 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0, 61,204,204,205,
- 61,204,204,205, 63,128, 0, 0, 0, 0, 0, 0, 7,160, 28, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63, 76,204,205, 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 8, 7,160, 28, 32, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,220, 40,245, 0, 0, 0, 0, 63,125,112,164, 63,128, 0, 0,
- 63, 24,214,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 1, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
- 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
- 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
- 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 8,194,104,112, 0, 0, 0, 19, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 77, 65, 0, 0, 2,108, 3,161,110, 32, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 3,161,102, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77, 65,116,101,120,116,117,114,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 63,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 2, 0, 2, 0, 50, 0, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 18, 0, 18, 59,163,215, 10, 59,163,215, 10,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 3, 3, 1, 0, 3, 0, 1, 0, 4, 0, 12, 0, 4, 63, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 2,
+ 0, 0, 0, 0, 63, 0, 0, 0, 64,128, 0, 0, 63, 0, 0, 0, 61,204,204,205, 63, 0, 0, 0, 61,204,204,205, 61,204,204,205,
+ 63,128, 0, 0, 0, 0, 0, 0, 3,161,114, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,104,192, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63, 76,204,205,
+ 63, 76,204,205, 63, 76,204,205, 61, 76,204,205, 61,204,204,205, 63,166,102,102, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 3, 8, 3,161,114, 32, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,220, 40,245, 0, 0, 0, 0, 63,125,112,164, 63,128, 0, 0, 63, 24,214,106,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 1, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
+ 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4665,823 +5475,833 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 84, 69, 0, 0, 1, 4, 13, 65,101,144, 0, 0, 0, 38, 0, 0, 0, 1, 13, 65,103, 16, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 84, 69,112,114,101,118,105,101,119, 0,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 64,160, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 5, 0, 8, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1,
- 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 60,204,204,205, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,102,192, 68, 65, 84, 65, 0, 0, 0, 32,
- 13, 65,102,192, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 1, 4, 13, 65,103, 16, 0, 0, 0, 38, 0, 0, 0, 1,
- 0, 0, 0, 0, 13, 65,101,144, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69,102, 97,107,101,115,104, 97,100,111,119, 0, 0, 76,101,
-110,100, 0,101,120, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 64,160, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 32, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 40, 0, 5, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 60,204,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,104, 64, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,109,208, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,105,128, 7,160,128, 32, 12,117,208, 32, 0, 0, 0, 0, 7,160, 32, 32, 7,160, 80, 32, 0, 0, 0, 0, 7,160,168, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,105,176, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,107, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,108,112,
- 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,249, 0, 0, 3,237, 0, 0, 1,244,
- 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 61, 88,133,192,189, 85, 45,184,190, 24,181,196, 63, 35, 71,185, 62,235, 31,153,
- 62,203,102,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,105,128, 0, 0, 0, 0,
- 0, 0, 0, 1, 7,160, 8, 32, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,105,176, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,160, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 47, 88, 7,160, 32, 32, 0, 0, 0, 58, 0, 0, 1,249, 62,131,144,140,
- 60,200,163,119, 62, 85, 9,156, 92,125,170, 70, 21,228, 0,255, 0, 0, 0, 0,190, 26,222, 50, 60,200,163,119, 62, 85, 9,156,
-163,131,170, 70, 21,228, 0,255, 0, 0, 0, 0, 62,146,126, 61,188, 8, 37,223, 62, 47,183, 99, 76,247,194,191, 81,228, 2,255,
- 0, 0, 0, 0,190, 56,185,147,188, 8, 37,223, 62, 47,183, 99,179, 9,194,191, 81,228, 2,255, 0, 0, 0, 0, 62,157,176,129,
-188,217, 91,211, 61,246,238,244, 84, 31,181,226, 61,191, 2,255, 0, 0, 0, 0,190, 79, 30, 28,188,217, 91,211, 61,246,238,244,
-171,225,181,226, 61,191, 2,255, 0, 0, 0, 0, 62, 94, 19,115,189,128,251,103, 62, 14, 32,150, 9,241,144,155, 62, 64, 2,255,
- 0, 0, 0, 0,189,227,161, 26,189,128,251,103, 62, 14, 32,150,246, 15,144,155, 62, 64, 2,255, 0, 0, 0, 0, 62, 94, 19,115,
-189, 25,118,251, 62, 62,165, 20, 14,184,163,144, 87, 76, 2,255, 0, 0, 0, 0,189,227,161, 26,189, 25,118,251, 62, 62,165, 20,
-241, 72,163,144, 87, 76, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 60, 34,107,232, 62, 92,128,116, 3, 3,131,121, 29,110, 0,255,
- 0, 0, 0, 0,189,227,161, 26, 60, 34,107,232, 62, 92,128,116,252,253,131,121, 29,110, 0,255, 0, 0, 0, 0, 62, 56,193, 58,
- 60,200,163,119, 62, 99,247, 77,171, 56,167,117, 36,206, 0,255, 0, 0, 0, 0,189,152,252,168, 60,200,163,119, 62, 99,247, 77,
- 84,200,167,117, 36,206, 0,255, 0, 0, 0, 0, 62, 23, 42,109,188, 8, 37,223, 62, 73,215, 88,217,152,203,122,110, 56, 0,255,
- 0, 0, 0, 0, 62, 0,197,229,188,217, 91,211, 62, 29, 14, 71,184,179,175, 93, 69, 66, 2,255, 0, 0, 0, 0,188,164, 23,249,
-188,217, 91,211, 62, 29, 14, 71, 71, 77,175, 93, 69, 66, 2,255, 0, 0, 0, 0, 61,182,231, 88, 61,121,154,159, 62, 32,201,179,
-151,181,255,104, 74, 51, 2,255, 0, 0, 0, 0, 60,134,121,207, 61,121,154,159, 62, 32,201,179,104, 75,255,104, 74, 51, 2,255,
- 0, 0, 0, 0, 61,242,158, 25, 61,121,154,159, 62, 73,215, 88,171, 78,255,150, 95,246, 2,255, 0, 0, 0, 0,188, 80,194,110,
- 61,121,154,159, 62, 73,215, 88, 84,178,255,150, 95,246, 2,255, 0, 0, 0, 0, 62, 41,211,138, 61,121,154,159, 62, 99,247, 77,
-133,152,254,153, 37, 98, 0,255, 0, 0, 0, 0,189,118, 66,143, 61,121,154,159, 62, 99,247, 77,122,104,254,153, 37, 98, 0,255,
- 0, 0, 0, 0, 62, 56,193, 58, 61,206,232,154, 62, 99,247, 77,170, 24, 88, 13, 35, 89, 0,255, 0, 0, 0, 0,189,152,252,168,
- 61,206,232,154, 62, 99,247, 77, 85,232, 88, 13, 35, 89, 0,255, 0, 0, 0, 0, 62, 23, 42,109, 62, 5, 79,173, 62, 73,215, 88,
-200,249, 65,221, 94,244, 2,255, 0, 0, 0, 0,189, 43,158, 31, 62, 5, 79,173, 62, 73,215, 88, 55, 7, 65,221, 94,244, 2,255,
- 0, 0, 0, 0, 62, 0,197,229, 62, 27,180, 54, 62, 29, 14, 71,186, 51, 78, 86, 73, 78, 2,255, 0, 0, 0, 0,188,164, 23,249,
- 62, 27,180, 54, 62, 29, 14, 71, 69,205, 78, 86, 73, 78, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 62, 65, 6,111, 62, 14, 32,150,
- 11, 2,107,152, 68,114, 2,255, 0, 0, 0, 0,189,227,161, 26, 62, 65, 6,111, 62, 14, 32,150,244,254,107,152, 68,114, 2,255,
- 0, 0, 0, 0, 62, 94, 19,115, 62, 35, 43, 14, 62, 62,165, 20, 14,201, 91,180, 88, 14, 2,255, 0, 0, 0, 0,189,227,161, 26,
- 62, 35, 43, 14, 62, 62,165, 20,241, 55, 91,180, 88, 14, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 61,236,195,250, 62, 92,128,116,
- 2,134,125, 29, 26,228, 0,255, 0, 0, 0, 0,189,227,161, 26, 61,236,195,250, 62, 92,128,116,253,122,125, 29, 26,228, 0,255,
- 0, 0, 0, 0, 62,131,144,140, 61,206,232,154, 62, 85, 9,156, 93, 54, 85, 67, 20,154, 0,255, 0, 0, 0, 0,190, 26,222, 50,
- 61,206,232,154, 62, 85, 9,156,162,202, 85, 67, 20,154, 0,255, 0, 0, 0, 0, 62,146,126, 61, 62, 5, 79,173, 62, 47,183, 99,
- 76,241, 60,161, 82, 97, 2,255, 0, 0, 0, 0,190, 56,185,147, 62, 5, 79,173, 62, 47,183, 99,179, 15, 60,161, 82, 97, 2,255,
- 0, 0, 0, 0, 62,157,176,129, 62, 27,180, 54, 61,246,238,244, 83,179, 71,157, 65, 45, 2,255, 0, 0, 0, 0,190, 79, 30, 28,
- 62, 27,180, 54, 61,246,238,244,172, 77, 71,157, 65, 45, 2,255, 0, 0, 0, 0, 62,176, 89,157, 61,121,154,159, 61,232, 1, 67,
-111, 40,255,113, 63,117, 2,255, 0, 0, 0, 0,190,116,112, 84, 61,121,154,159, 61,232, 1, 67,144,216,255,113, 63,117, 2,255,
- 0, 0, 0, 0, 62,161,107,237, 61,121,154,159, 62, 40, 64,139,100, 48,255,154, 79,167, 2,255, 0, 0, 0, 0,190, 86,148,244,
- 61,121,154,159, 62, 40, 64,139,155,208,255,154, 79,167, 2,255, 0, 0, 0, 0, 62,139, 7,100, 61,121,154,159, 62, 81, 78, 48,
-126,117,254,181, 19,185, 0,255, 0, 0, 0, 0,190, 41,203,227, 61,121,154,159, 62, 81, 78, 48,129,139,254,181, 19,185, 0,255,
- 0, 0, 0, 0, 62,140,229, 26, 61,121,154,159, 62, 88,197, 8,120,160,254,106, 42,198, 2,255, 0, 0, 0, 0,190, 45,135, 79,
- 61,121,154,159, 62, 88,197, 8,135, 96,254,106, 42,198, 2,255, 0, 0, 0, 0, 62,133,110, 66, 61,214, 95,114, 62, 92,128,116,
- 93,173, 74,126, 45, 93, 2,255, 0, 0, 0, 0,190, 30,153,158, 61,214, 95,114, 62, 92,128,116,162, 83, 74,126, 45, 93, 2,255,
- 0, 0, 0, 0, 62, 94, 19,115, 61,251,177,170, 62,103,178,185, 11, 9,115, 31, 54,216, 2,255, 0, 0, 0, 0,189,227,161, 26,
- 61,251,177,170, 62,103,178,185,244,247,115, 31, 54,216, 2,255, 0, 0, 0, 0, 62, 53, 5,206, 61,214, 95,114, 62,111, 41,145,
-181, 9, 80,184, 65, 43, 2,255, 0, 0, 0, 0,189,145,133,208, 61,214, 95,114, 62,111, 41,145, 74,247, 80,184, 65, 43, 2,255,
- 0, 0, 0, 0, 62, 34, 92,178, 61,121,154,159, 62,111, 41,145,146,116,254, 57, 66, 43, 2,255, 0, 0, 0, 0,189, 88,103, 48,
- 61,121,154,159, 62,111, 41,145,109,140,254, 57, 66, 43, 2,255, 0, 0, 0, 0, 62, 53, 5,206, 60,170,200, 22, 62,111, 41,145,
-182, 34,173,181, 64,115, 2,255, 0, 0, 0, 0,189,145,133,208, 60,170,200, 22, 62,111, 41,145, 73,222,173,181, 64,115, 2,255,
- 0, 0, 0, 0, 62, 94, 19,115, 61,121,154,159, 62,114,228,253, 24, 74,255,139,125,171, 2,255, 0, 0, 0, 0,189,227,161, 26,
- 61,121,154,159, 62,114,228,253,231,182,255,139,125,171, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 59, 43,249,149, 62,103,178,185,
- 10,218,140,140, 54, 45, 2,255, 0, 0, 0, 0,189,227,161, 26, 59, 43,249,149, 62,103,178,185,245, 38,140,140, 54, 45, 2,255,
- 0, 0, 0, 0, 62,133,110, 66, 60,170,200, 22, 62, 92,128,116, 92,141,179,203, 44,210, 2,255, 0, 0, 0, 0,190, 30,153,158,
- 60,170,200, 22, 62, 92,128,116,163,115,179,203, 44,210, 2,255, 0, 0, 0, 0, 61, 88,133,203, 62, 23,248,202, 62, 73,215, 88,
- 0, 0,124, 43, 31, 17, 0,255, 0, 0, 0, 0, 61, 88,133,203, 61,229, 77, 34, 62,111, 41,145, 0, 0,249, 63,127,209, 0,255,
- 0, 0, 0, 0, 61, 88,133,203,190,188,254,150, 62, 70, 27,236, 0, 0,251,204,127,237, 0,255, 0, 0, 0, 0, 61, 88,133,203,
-190, 78, 79,191, 62, 92,128,116, 0, 0,150, 33, 71,238, 2,255, 0, 0, 0, 0, 61, 88,133,203,190, 14,221,146, 62, 99,247, 77,
- 0, 0,100, 28, 79,192, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,211, 99, 30, 62, 62,165, 20, 0, 0,142,184, 59,147, 2,255,
- 0, 0, 0, 0, 61, 88,133,203, 62, 12,198,133, 62, 6,169,190, 0, 0,103,143, 75, 57, 0,255, 0, 0, 0, 0, 61, 88,133,203,
- 62, 91, 38, 99, 61,239,120, 28, 0, 0, 78,115,101, 34, 0,255, 0, 0, 0, 0, 61, 88,133,203, 62,187,243, 16,190,206,250,170,
- 0, 0,110,190,191,212, 2,255, 0, 0, 0, 0, 61, 88,133,203, 62, 87,106,247,191, 11,224,178, 0, 0, 35,144,133, 12, 3,255,
- 0, 0, 0, 0, 61, 88,133,203,188,157,165, 18,191, 9, 20, 33, 0, 0,214,194,134,213, 2,255, 0, 0, 0, 0, 61, 88,133,203,
-190,108, 43, 32,190,160, 83,227, 0, 0,134,154,215,113, 2,255, 0, 0, 0, 0, 62, 23, 42,109,190, 14,221,146, 61,232, 1, 67,
-113,144,198,122, 13, 79, 0,255, 0, 0, 0, 0,189, 43,158, 31,190, 14,221,146, 61,232, 1, 67,142,112,198,122, 13, 79, 0,255,
- 0, 0, 0, 0, 62, 75,106, 87,190,131, 37,138, 61,239,120, 28,122,196, 31, 19, 18,152, 2,255, 0, 0, 0, 0,189,190, 78,225,
-190,131, 37,138, 61,239,120, 28,133, 60, 31, 19, 18,152, 2,255, 0, 0, 0, 0, 62, 94, 19,115,190,192,186, 2, 61,239,120, 28,
-125,167, 12,146, 20,226, 0,255, 0, 0, 0, 0,189,227,161, 26,190,192,186, 2, 61,239,120, 28,130, 89, 12,146, 20,226, 0,255,
- 0, 0, 0, 0, 62,101,138, 75,190,239, 96,200, 61,202, 37,227,124,113,242,142, 26,196, 2,255, 0, 0, 0, 0,189,242,142,203,
-190,239, 96,200, 61,202, 37,227,131,143,242,142, 26,196, 2,255, 0, 0, 0, 0, 62, 82,225, 47,190,252,112,195, 61,194,175, 10,
- 79,159,159, 44, 25,210, 2,255, 0, 0, 0, 0,189,205, 60,146,190,252,112,195, 61,194,175, 10,176, 97,159, 44, 25,210, 2,255,
- 0, 0, 0, 0, 62, 11,248, 41,191, 1, 4,242, 61,224,138,107, 19,143,131, 13, 19,178, 2,255, 0, 0, 0, 0,188,253,170, 27,
-191, 1, 4,242, 61,224,138,107,236,113,131, 13, 19,178, 2,255, 0, 0, 0, 0, 61, 88,133,203,191, 2,226,168, 61,246,238,244,
- 0, 0,130, 75, 24, 21, 2,255, 0, 0, 0, 0, 62,131,144,140,189,240,242, 18, 61,202, 37,227, 47,114,137,117, 8,232, 2,255,
- 0, 0, 0, 0,190, 26,222, 50,189,240,242, 18, 61,202, 37,227,208,142,137,117, 8,232, 2,255, 0, 0, 0, 0, 62,178, 55, 83,
-189,143,233, 23, 61,209,156,187, 77, 25,154,198, 13,214, 2,255, 0, 0, 0, 0,190,120, 43,193,189,143,233, 23, 61,209,156,187,
-178,231,154,198, 13,214, 2,255, 0, 0, 0, 0, 62,224,222, 26, 60,140,236,182, 61,112, 21, 49,113,216,198,247, 12,255, 2,255,
- 0, 0, 0, 0,190,170,188,167, 60,140,236,182, 61,112, 21, 49,142, 40,198,247, 12,255, 2,255, 0, 0, 0, 0, 62,232, 84,243,
- 62, 23,248,202, 62, 2,238, 82,113,104, 51, 31, 30, 32, 2,255, 0, 0, 0, 0,190,178, 51,128, 62, 23,248,202, 62, 2,238, 82,
-142,152, 51, 31, 30, 32, 2,255, 0, 0, 0, 0, 62,196,224,112, 62, 50, 24,190, 62, 17,220, 2, 64,216,106,225, 27,121, 0,255,
- 0, 0, 0, 0,190,142,190,253, 62, 50, 24,190, 62, 17,220, 2,191, 40,106,225, 27,121, 0,255, 0, 0, 0, 0, 62,144,160,134,
- 62,106, 20, 20, 62, 47,183, 99, 75,137,101, 82, 20, 70, 0,255, 0, 0, 0, 0,190, 52,254, 39, 62,106, 20, 20, 62, 47,183, 99,
-180,119,101, 82, 20, 70, 0,255, 0, 0, 0, 0, 62, 79, 37,195, 62,154, 92, 67, 62, 70, 27,236, 38,241,119, 19, 26, 54, 2,255,
- 0, 0, 0, 0,189,197,197,186, 62,154, 92, 67, 62, 70, 27,236,217, 15,119, 19, 26, 54, 2,255, 0, 0, 0, 0, 62, 0,197,229,
- 62,145, 7,181, 62, 81, 78, 48,175, 21, 96, 54, 24, 12, 2,255, 0, 0, 0, 0,188,164, 23,249, 62,145, 7,181, 62, 81, 78, 48,
- 80,235, 96, 54, 24, 12, 2,255, 0, 0, 0, 0, 61,167,249,168, 62, 53,212, 42, 62, 77,146,196,155,174, 76,128, 21,151, 0,255,
- 0, 0, 0, 0, 60,194, 48,144, 62, 53,212, 42, 62, 77,146,196,100, 82, 76,128, 21,151, 0,255, 0, 0, 0, 0, 62, 4,129, 81,
- 62, 16,129,241, 62, 88,197, 8, 25, 0,237, 4,124, 22, 0,255, 0, 0, 0, 0,188,193,243, 89, 62, 16,129,241, 62, 88,197, 8,
-231, 0,237, 4,124, 22, 0,255, 0, 0, 0, 0, 61,227,176,105, 61,184,132, 17, 62, 85, 9,156,255,160,232,126,125,209, 0,255,
- 0, 0, 0, 0,187,178,169,214, 61,184,132, 17, 62, 85, 9,156, 0, 96,232,126,125,209, 0,255, 0, 0, 0, 0,189, 43,158, 31,
-188, 8, 37,223, 62, 73,215, 88, 38,104,203,122,110, 56, 0,255, 0, 0, 0, 0, 62,105, 69,184,189, 55, 82, 92, 62, 55, 46, 59,
- 34,106,200,119,110, 16, 0,255, 0, 0, 0, 0,189,250, 5,163,189, 55, 82, 92, 62, 55, 46, 59,221,150,200,119,110, 16, 0,255,
- 0, 0, 0, 0, 62,144,160,134,188,187,128,115, 62, 40, 64,139, 55,161,207, 60,104,115, 0,255, 0, 0, 0, 0,190, 52,254, 39,
-188,187,128,115, 62, 40, 64,139,200, 95,207, 60,104,115, 0,255, 0, 0, 0, 0, 62,176, 89,157, 61, 17, 26,205, 62, 29, 14, 71,
- 58,181,226,123,109,214, 0,255, 0, 0, 0, 0,190,116,112, 84, 61, 17, 26,205, 62, 29, 14, 71,197, 75,226,123,109,214, 0,255,
- 0, 0, 0, 0, 62,180, 21, 9, 61,177, 13, 57, 62, 29, 14, 71, 49,157,230, 61,115, 36, 0,255, 0, 0, 0, 0,190,123,231, 45,
- 61,177, 13, 57, 62, 29, 14, 71,206, 99,230, 61,115, 36, 0,255, 0, 0, 0, 0, 62,170,192,123, 61,251,177,170, 62, 36,133, 31,
- 39,206,234,175,119,196, 0,255, 0, 0, 0, 0,190,105, 62, 16, 61,251,177,170, 62, 36,133, 31,216, 50,234,175,119,196, 0,255,
- 0, 0, 0, 0, 62,129,178,214, 62, 27,180, 54, 62, 62,165, 20, 24, 62,255, 85,125,173, 0,255, 0, 0, 0, 0,190, 23, 34,198,
- 62, 27,180, 54, 62, 62,165, 20,231,194,255, 85,125,173, 0,255, 0, 0, 0, 0, 62, 45,142,246, 62, 42,161,230, 62, 81, 78, 48,
- 31,251,247, 40,123,158, 0,255, 0, 0, 0, 0,189,130,152, 32, 62, 42,161,230, 62, 81, 78, 48,224, 5,247, 40,123,158, 0,255,
- 0, 0, 0, 0, 61, 88,133,203,190,209,133,104, 62, 70, 27,236, 0, 0,210,148,119,170, 0,255, 0, 0, 0, 0, 61,212,194,185,
-190,198, 83, 36, 62, 70, 27,236, 19, 39,222, 65,121,248, 0,255, 0, 0, 0, 0, 58,240,196,191,190,198, 83, 36, 62, 70, 27,236,
-236,217,222, 65,121,248, 0,255, 0, 0, 0, 0, 61,220, 57,145,190,226, 80,207, 62, 58,233,167, 2,134,217,132,122, 12, 0,255,
- 0, 0, 0, 0,186,236,241, 77,190,226, 80,207, 62, 58,233,167,253,122,217,132,122, 12, 0,255, 0, 0, 0, 0, 61,167,249,168,
-190,237,131, 19, 62, 51,114,207,252, 13,214,169,121, 18, 0,255, 0, 0, 0, 0, 60,194, 48,144,190,237,131, 19, 62, 51,114,207,
- 3,243,214,169,121, 18, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,239, 96,200, 62, 47,183, 99, 0, 0,219,150,122,180, 0,255,
- 0, 0, 0, 0, 61, 88,133,203,190, 18,152,254, 62, 77,146,196, 0, 0, 97, 46, 83, 76, 0,255, 0, 0, 0, 0, 61, 88,133,203,
-189,240,242, 18, 62, 73,215, 88, 0, 0,104,197, 73,134, 0,255, 0, 0, 0, 0, 61,205, 75,225,189,248,104,235, 62, 73,215, 88,
- 36, 52, 53, 2,110,187, 0,255, 0, 0, 0, 0, 59,179,158,179,189,248,104,235, 62, 73,215, 88,219,204, 53, 2,110,187, 0,255,
- 0, 0, 0, 0, 61,227,176,105,190, 33,134,174, 62, 77,146,196, 95,187,212, 14, 72,182, 0,255, 0, 0, 0, 0,187,178,169,214,
-190, 33,134,174, 62, 77,146,196,160, 69,212, 14, 72,182, 0,255, 0, 0, 0, 0, 61,190, 94, 48,190, 63, 98, 15, 62, 73,215, 88,
- 64,117,207,117, 99, 90, 0,255, 0, 0, 0, 0, 60, 81, 60,220,190, 63, 98, 15, 62, 73,215, 88,191,139,207,117, 99, 90, 0,255,
- 0, 0, 0, 0, 62,116,119,252,189,151, 95,239, 62, 40, 64,139, 49,103,196,157,102, 13, 0,255, 0, 0, 0, 0,190, 8, 53, 22,
-189,151, 95,239, 62, 40, 64,139,206,153,196,157,102, 13, 0,255, 0, 0, 0, 0, 62,174,123,231,188,217, 91,211, 62, 17,220, 2,
- 59,142,204,107,100,223, 2,255, 0, 0, 0, 0,190,112,180,232,188,217, 91,211, 62, 17,220, 2,196,114,204,107,100,223, 2,255,
- 0, 0, 0, 0, 62,200,155,220, 61, 46,246, 45, 62, 6,169,190, 66,102,217, 11,102, 65, 0,255, 0, 0, 0, 0,190,146,122,105,
- 61, 46,246, 45, 62, 6,169,190,189,154,217, 11,102, 65, 0,255, 0, 0, 0, 0, 62,204, 87, 72, 61,251,177,170, 62, 32,201,179,
- 54, 87,228,142,112,151, 0,255, 0, 0, 0, 0,190,150, 53,213, 61,251,177,170, 62, 32,201,179,201,169,228,142,112,151, 0,255,
- 0, 0, 0, 0, 62,191, 71, 78, 62, 16,129,241, 62, 66, 96,128, 42, 82,247, 97,120,125, 2,255, 0, 0, 0, 0,190,137, 37,219,
- 62, 16,129,241, 62, 66, 96,128,213,174,247, 97,120,125, 2,255, 0, 0, 0, 0, 62,131,144,140, 62, 79,244, 31, 62, 99,247, 77,
- 41,192,254,216,120,253, 0,255, 0, 0, 0, 0,190, 26,222, 50, 62, 79,244, 31, 62, 99,247, 77,214, 64,254,216,120,253, 0,255,
- 0, 0, 0, 0, 62, 75,106, 87, 62,124,189, 48, 62,118,160,105, 28,217, 7, 53,124,126, 0,255, 0, 0, 0, 0,189,190, 78,225,
- 62,124,189, 48, 62,118,160,105,227, 39, 7, 53,124,126, 0,255, 0, 0, 0, 0, 62, 23, 42,109, 62,113,138,236, 62,126, 23, 65,
-255,125, 5, 44,127,227, 0,255, 0, 0, 0, 0,189, 43,158, 31, 62,113,138,236, 62,126, 23, 65, 0,131, 5, 44,127,227, 0,255,
- 0, 0, 0, 0, 61,205, 75,225, 62, 23,248,202, 62,122, 91,213,238,130, 2, 89,126,197, 0,255, 0, 0, 0, 0, 59,179,158,179,
- 62, 23,248,202, 62,122, 91,213, 17,126, 2, 89,126,197, 0,255, 0, 0, 0, 0, 61,227,176,105,189,203,159,217, 62,107,110, 37,
- 23,115,230, 27,123, 34, 0,255, 0, 0, 0, 0,187,178,169,214,189,203,159,217, 62,107,110, 37,232,141,230, 27,123, 34, 0,255,
- 0, 0, 0, 0, 62, 26,229,218,190,133, 3, 64, 62, 58,233,167, 74,212, 14, 28,102,225, 2,255, 0, 0, 0, 0,189, 58,139,207,
-190,133, 3, 64, 62, 58,233,167,181, 44, 14, 28,102,225, 2,255, 0, 0, 0, 0, 62, 45,142,246,190,194,151,184, 62, 47,183, 99,
- 72,235,252, 17,105, 31, 2,255, 0, 0, 0, 0,189,130,152, 32,190,194,151,184, 62, 47,183, 99,183, 21,252, 17,105, 31, 2,255,
- 0, 0, 0, 0, 62, 53, 5,206,190,222,149, 99, 62, 36,133, 31, 66,179,225,197,104,249, 2,255, 0, 0, 0, 0,189,145,133,208,
-190,222,149, 99, 62, 36,133, 31,189, 77,225,197,104,249, 2,255, 0, 0, 0, 0, 62, 38, 24, 30,190,244,249,234, 62, 21,151,111,
- 44, 62,183, 4, 95, 98, 2,255, 0, 0, 0, 0,189,103, 84,224,190,244,249,234, 62, 21,151,111,211,194,183, 4, 95, 98, 2,255,
- 0, 0, 0, 0, 62, 4,129, 81,190,248,181, 86, 62, 21,151,111, 19,155,158, 52, 80, 54, 2,255, 0, 0, 0, 0,188,193,243, 89,
-190,248,181, 86, 62, 21,151,111,236,101,158, 52, 80, 54, 2,255, 0, 0, 0, 0, 61, 88,133,203,190,252,112,195, 62, 25, 82,219,
- 0, 0,154,201, 78, 88, 2,255, 0, 0, 0, 0, 61, 88,133,203,188,247, 55, 52, 62, 66, 96,128, 0, 0,252, 2,127,239, 0,255,
- 0, 0, 0, 0, 61, 88,133,203, 61, 61,227,222, 62, 85, 9,156, 0, 0,227,112,124,196, 0,255, 0, 0, 0, 0, 62, 82,225, 47,
- 62, 46, 93, 82, 62, 73,215, 88, 21, 58,254,234,126, 56, 0,255, 0, 0, 0, 0,189,205, 60,146, 62, 46, 93, 82, 62, 73,215, 88,
-234,198,254,234,126, 56, 0,255, 0, 0, 0, 0, 62, 4,129, 81, 60, 94, 34,170, 62, 77,146,196,214, 37,232,110,118,163, 0,255,
- 0, 0, 0, 0,188,193,243, 89, 60, 94, 34,170, 62, 77,146,196, 41,219,232,110,118,163, 0,255, 0, 0, 0, 0, 61,235, 39, 65,
- 61, 61,227,222, 62, 81, 78, 48,232,150,230,127,123, 57, 0,255, 0, 0, 0, 0,188, 21, 11,173, 61, 61,227,222, 62, 81, 78, 48,
- 23,106,230,127,123, 57, 0,255, 0, 0, 0, 0, 61,220, 57,145,190,190,220, 76, 62, 70, 27,236, 20,117,248,197,126, 36, 0,255,
- 0, 0, 0, 0,186,236,241, 77,190,190,220, 76, 62, 70, 27,236,235,139,248,197,126, 36, 0,255, 0, 0, 0, 0, 61,182,231, 88,
-190,133, 3, 64, 62, 77,146,196, 19, 43, 0,128,126,141, 2,255, 0, 0, 0, 0, 60,134,121,207,190,133, 3, 64, 62, 77,146,196,
-236,213, 0,128,126,141, 2,255, 0, 0, 0, 0, 61, 88,133,203,190,133, 3, 64, 62, 77,146,196, 0, 0,255,122,127,254, 0,255,
- 0, 0, 0, 0, 61, 88,133,203,190, 82, 11, 43, 62, 73,215, 88, 0, 0,184,121,106, 36, 0,255, 0, 0, 0, 0, 61,197,213, 8,
-190, 55,235, 55, 62, 92,128,116, 66,167,160,139, 53, 45, 2,255, 0, 0, 0, 0, 60, 21,134, 27,190, 55,235, 55, 62, 92,128,116,
-189, 89,160,139, 53, 45, 2,255, 0, 0, 0, 0, 61,235, 39, 65,190, 33,134,174, 62, 99,247, 77,118,133,224,215, 36,239, 2,255,
- 0, 0, 0, 0,188, 21, 11,173,190, 33,134,174, 62, 99,247, 77,137,123,224,215, 36,239, 2,255, 0, 0, 0, 0, 61,212,194,185,
-189,233,123, 57, 62, 92,128,116, 81,167, 95,141, 24, 49, 2,255, 0, 0, 0, 0, 58,240,196,191,189,233,123, 57, 62, 92,128,116,
-174, 89, 95,141, 24, 49, 2,255, 0, 0, 0, 0, 61,145,149, 31,189,226, 4, 97, 62, 92,128,116,200,189,108,160, 39, 26, 2,255,
- 0, 0, 0, 0, 61, 13,225, 89,189,226, 4, 97, 62, 92,128,116, 55, 67,108,160, 39, 26, 2,255, 0, 0, 0, 0, 61, 88,133,203,
-190, 22, 84,106, 62,114,228,253, 0, 0, 23, 42,125,225, 0,255, 0, 0, 0, 0, 61,153, 11,247,189,248,104,235, 62,107,110, 37,
-231,186, 78, 89, 98, 66, 2,255, 0, 0, 0, 0, 60,253,231, 82,189,248,104,235, 62,107,110, 37, 24, 70, 78, 89, 98, 66, 2,255,
- 0, 0, 0, 0, 61,197,213, 8,189,255,223,195, 62,107,110, 37, 43, 88, 62,134,102,237, 2,255, 0, 0, 0, 0, 60, 21,134, 27,
-189,255,223,195, 62,107,110, 37,212,168, 62,134,102,237, 2,255, 0, 0, 0, 0, 61,212,194,185,190, 33,134,174, 62,114,228,253,
- 46,247,233, 89,116,228, 2,255, 0, 0, 0, 0, 58,240,196,191,190, 33,134,174, 62,114,228,253,209, 9,233, 89,116,228, 2,255,
- 0, 0, 0, 0, 61,182,231, 88,190, 44,184,243, 62,103,178,185, 31, 46,181,198, 99,128, 2,255, 0, 0, 0, 0, 60,134,121,207,
-190, 44,184,243, 62,103,178,185,224,210,181,198, 99,128, 2,255, 0, 0, 0, 0, 61, 88,133,203,190, 63, 98, 15, 62,103,178,185,
- 0, 0,191,185,110,175, 2,255, 0, 0, 0, 0, 62, 49, 74, 98,190, 74,148, 83, 61,224,138,107,120, 23, 41, 34, 16, 99, 0,255,
- 0, 0, 0, 0,189,138, 14,248,190, 74,148, 83, 61,224,138,107,135,233, 41, 34, 16, 99, 0,255, 0, 0, 0, 0, 62, 4,129, 81,
-190, 40,253,134, 62, 58,233,167, 80,251,250, 26, 98,241, 0,255, 0, 0, 0, 0,188,193,243, 89,190, 40,253,134, 62, 58,233,167,
-175, 5,250, 26, 98,241, 0,255, 0, 0, 0, 0, 62, 11,248, 41,190, 74,148, 83, 62, 58,233,167, 83,215, 16,153, 95, 71, 0,255,
- 0, 0, 0, 0,188,253,170, 27,190, 74,148, 83, 62, 58,233,167,172, 41, 16,153, 95, 71, 0,255, 0, 0, 0, 0, 62, 38, 24, 30,
-190, 44,184,243, 61,224,138,107,122, 24, 35, 67, 15, 64, 0,255, 0, 0, 0, 0,189,103, 84,224,190, 44,184,243, 61,224,138,107,
-133,232, 35, 67, 15, 64, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,235,165, 93, 62, 47,183, 99, 0, 0, 86,139, 94, 77, 0,255,
- 0, 0, 0, 0, 61,153, 11,247,190,233,199,167, 62, 47,183, 99,206,144, 70,200, 94,125, 0,255, 0, 0, 0, 0, 60,253,231, 82,
-190,233,199,167, 62, 47,183, 99, 49,112, 70,200, 94,125, 0,255, 0, 0, 0, 0, 61,197,213, 8,190,222,149, 99, 62, 58,233,167,
-164,253, 17,109, 88, 75, 0,255, 0, 0, 0, 0, 60, 21,134, 27,190,222,149, 99, 62, 58,233,167, 91, 3, 17,109, 88, 75, 0,255,
- 0, 0, 0, 0, 61,197,213, 8,190,203,236, 70, 62, 66, 96,128,225,141,168, 87, 88, 39, 0,255, 0, 0, 0, 0, 60, 21,134, 27,
-190,203,236, 70, 62, 66, 96,128, 30,115,168, 87, 88, 39, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,213, 64,212, 62, 32,201,179,
- 0, 0,159, 20, 83,153, 0,255, 0, 0, 0, 0, 61,197,213, 8,190,205,201,252, 62, 36,133, 31,230, 5,177,250, 98, 20, 0,255,
- 0, 0, 0, 0, 60, 21,134, 27,190,205,201,252, 62, 36,133, 31, 25,251,177,250, 98, 20, 0,255, 0, 0, 0, 0, 61,197,213, 8,
-190,220,183,173, 62, 25, 82,219,152, 18, 24, 8, 70,188, 0,255, 0, 0, 0, 0, 60, 21,134, 27,190,220,183,173, 62, 25, 82,219,
-103,238, 24, 8, 70,188, 0,255, 0, 0, 0, 0, 61,153, 11,247,190,230, 12, 59, 62, 21,151,111,222, 26, 49,242,112,221, 0,255,
- 0, 0, 0, 0, 60,253,231, 82,190,230, 12, 59, 62, 21,151,111, 33,230, 49,242,112,221, 0,255, 0, 0, 0, 0, 61, 88,133,203,
-190,231,233,241, 62, 21,151,111, 0, 0, 60, 18,113, 5, 0,255, 0, 0, 0, 0, 62, 8, 60,189, 61, 76,209,142, 62, 92,128,116,
- 30, 4,244, 93,123,225, 0,255, 0, 0, 0, 0,188,223,206,186, 61, 76,209,142, 62, 92,128,116,225,252,244, 93,123,225, 0,255,
- 0, 0, 0, 0, 62, 15,179,149, 60,170,200, 22, 62, 88,197, 8, 9, 71,251, 34,127,144, 0,255, 0, 0, 0, 0,189, 13,194,190,
- 60,170,200, 22, 62, 88,197, 8,246,185,251, 34,127,144, 0,255, 0, 0, 0, 0, 62, 86,156,155, 62, 23,248,202, 62, 81, 78, 48,
- 17, 81, 2, 74,126,204, 0,255, 0, 0, 0, 0,189,212,179,106, 62, 23,248,202, 62, 81, 78, 48,238,175, 2, 74,126,204, 0,255,
- 0, 0, 0, 0, 62, 56,193, 58, 62, 20, 61, 94, 62, 88,197, 8, 25,218,253,177,125, 86, 2,255, 0, 0, 0, 0,189,152,252,168,
- 62, 20, 61, 94, 62, 88,197, 8,230, 38,253,177,125, 86, 2,255, 0, 0, 0, 0, 62,127,170, 64, 62, 9, 11, 25, 62, 88,197, 8,
- 21,182,240,210,125, 57, 2,255, 0, 0, 0, 0,190, 19,103, 90, 62, 9, 11, 25, 62, 88,197, 8,234, 74,240,210,125, 57, 2,255,
- 0, 0, 0, 0, 62,161,107,237, 61,229, 77, 34, 62, 51,114,207, 28,143,237,249,123,117, 0,255, 0, 0, 0, 0,190, 86,148,244,
- 61,229, 77, 34, 62, 51,114,207,227,113,237,249,123,117, 0,255, 0, 0, 0, 0, 62,167, 5, 15, 61,169,150, 97, 62, 47,183, 99,
- 15,209,246,217,126,175, 0,255, 0, 0, 0, 0,190, 97,199, 56, 61,169,150, 97, 62, 47,183, 99,240, 47,246,217,126,175, 0,255,
- 0, 0, 0, 0, 62,165, 39, 89, 61, 32, 8,125, 62, 43,251,247, 24,177,253,190,125,146, 0,255, 0, 0, 0, 0,190, 94, 11,204,
- 61, 32, 8,125, 62, 43,251,247,231, 79,253,190,125,146, 0,255, 0, 0, 0, 0, 62,140,229, 26,187,152,222, 60, 62, 62,165, 20,
- 33, 20, 2, 75,123,160, 0,255, 0, 0, 0, 0,190, 45,135, 79,187,152,222, 60, 62, 62,165, 20,222,236, 2, 75,123,160, 0,255,
- 0, 0, 0, 0, 62,105, 69,184,188,187,128,115, 62, 73,215, 88, 26, 85,248,238,125, 14, 0,255, 0, 0, 0, 0,189,250, 5,163,
-188,187,128,115, 62, 73,215, 88,229,171,248,238,125, 14, 0,255, 0, 0, 0, 0, 62, 34, 92,178,186,133,194,226, 62, 92,128,116,
- 7, 8,250,142,127,175, 0,255, 0, 0, 0, 0,189, 88,103, 48,186,133,194,226, 62, 92,128,116,248,248,250,142,127,175, 0,255,
- 0, 0, 0, 0, 62, 11,248, 41, 61,177, 13, 57, 62, 92,128,116, 34,169,240, 2,122, 43, 0,255, 0, 0, 0, 0,188,253,170, 27,
- 61,177, 13, 57, 62, 92,128,116,221, 87,240, 2,122, 43, 0,255, 0, 0, 0, 0, 62, 26,229,218, 61,251,177,170, 62, 92,128,116,
- 27,126,239,108,123,231, 0,255, 0, 0, 0, 0,189, 58,139,207, 61,251,177,170, 62, 92,128,116,228,130,239,108,123,231, 0,255,
- 0, 0, 0, 0, 62, 38, 24, 30, 61,236,195,250, 62, 81, 78, 48, 64,226,207, 13, 98,224, 0,255, 0, 0, 0, 0,189,103, 84,224,
- 61,236,195,250, 62, 81, 78, 48,191, 30,207, 13, 98,224, 0,255, 0, 0, 0, 0, 62, 19,111, 1, 61,177, 13, 57, 62, 81, 78, 48,
- 96, 29,229,169, 80, 81, 0,255, 0, 0, 0, 0,189, 28,176,110, 61,177, 13, 57, 62, 81, 78, 48,159,227,229,169, 80, 81, 0,255,
- 0, 0, 0, 0, 62, 41,211,138, 59,205,106, 77, 62, 81, 78, 48, 55, 36, 71,122, 90,188, 0,255, 0, 0, 0, 0,189,118, 66,143,
- 59,205,106, 77, 62, 81, 78, 48,200,220, 71,122, 90,188, 0,255, 0, 0, 0, 0, 62,105, 69,184,188, 67,220,161, 62, 66, 96,128,
- 21, 76, 78, 90, 98,241, 0,255, 0, 0, 0, 0,189,250, 5,163,188, 67,220,161, 62, 66, 96,128,234,180, 78, 90, 98,241, 0,255,
- 0, 0, 0, 0, 62,137, 41,174, 59, 43,249,149, 62, 55, 46, 59,245, 85, 69, 69,107, 25, 0,255, 0, 0, 0, 0,190, 38, 16,118,
- 59, 43,249,149, 62, 55, 46, 59, 10,171, 69, 69,107, 25, 0,255, 0, 0, 0, 0, 62,157,176,129, 61, 61,227,222, 62, 40, 64,139,
-223,232, 29,211,120, 67, 0,255, 0, 0, 0, 0,190, 79, 30, 28, 61, 61,227,222, 62, 40, 64,139, 32, 24, 29,211,120, 67, 0,255,
- 0, 0, 0, 0, 62,159,142, 55, 61,162, 31,137, 62, 40, 64,139,210,148,238,123,118, 95, 0,255, 0, 0, 0, 0,190, 82,217,136,
- 61,162, 31,137, 62, 40, 64,139, 45,108,238,123,118, 95, 0,255, 0, 0, 0, 0, 62,153,245, 21, 61,214, 95,114, 62, 43,251,247,
-229,216,179,108, 99, 43, 0,255, 0, 0, 0, 0,190, 71,167, 67, 61,214, 95,114, 62, 43,251,247, 26, 40,179,108, 99, 43, 0,255,
- 0, 0, 0, 0, 62,123,238,212, 62, 5, 79,173, 62, 77,146,196,237,202,158,179, 81, 35, 2,255, 0, 0, 0, 0,190, 15,171,238,
- 62, 5, 79,173, 62, 77,146,196, 18, 54,158,179, 81, 35, 2,255, 0, 0, 0, 0, 62, 60,124,166, 62, 9, 11, 25, 62, 85, 9,156,
- 39, 24,212,118,113,214, 2,255, 0, 0, 0, 0,189,160,115,129, 62, 9, 11, 25, 62, 85, 9,156,216,232,212,118,113,214, 2,255,
- 0, 0, 0, 0, 62, 86,156,155, 62, 12,198,133, 62, 77,146,196, 1,213,193,189,111,208, 0,255, 0, 0, 0, 0,189,212,179,106,
- 62, 12,198,133, 62, 77,146,196,254, 43,193,189,111,208, 0,255, 0, 0, 0, 0, 62, 23, 42,109, 60,230,126,216, 62, 77,146,196,
- 84,226, 42,192, 85,187, 0,255, 0, 0, 0, 0,189, 43,158, 31, 60,230,126,216, 62, 77,146,196,171, 30, 42,192, 85,187, 0,255,
- 0, 0, 0, 0, 62, 19,111, 1, 61, 91,191, 63, 62, 77,146,196,102,235, 2,196, 76, 11, 0,255, 0, 0, 0, 0,189, 28,176,110,
- 61, 91,191, 63, 62, 77,146,196,153, 21, 2,196, 76, 11, 0,255, 0, 0, 0, 0, 61,212,194,185, 62, 38,230,122, 62, 10,101, 42,
-182,183,104,118,246, 5, 0,255, 0, 0, 0, 0, 58,240,196,191, 62, 38,230,122, 62, 10,101, 42, 73, 73,104,118,246, 5, 0,255,
- 0, 0, 0, 0, 62, 19,111, 1, 62,131,247,186, 62, 14, 32,150,192,208, 66,221,167, 3, 2,255, 0, 0, 0, 0,189, 28,176,110,
- 62,131,247,186, 62, 14, 32,150, 63, 48, 66,221,167, 3, 2,255, 0, 0, 0, 0, 62, 86,156,155, 62,137,144,220, 62, 2,238, 82,
- 9, 59, 90, 89,165,208, 2,255, 0, 0, 0, 0,189,212,179,106, 62,137,144,220, 62, 2,238, 82,246,197, 90, 89,165,208, 2,255,
- 0, 0, 0, 0, 62,142,194,208, 62, 83,175,139, 61,224,138,107, 37,165,114,104,212,176, 0,255, 0, 0, 0, 0,190, 49, 66,187,
- 62, 83,175,139, 61,224,138,107,218, 91,114,104,212,176, 0,255, 0, 0, 0, 0, 62,189,105,152, 62, 35, 43, 14, 61,164,211,170,
- 45, 67,116, 40,227, 1, 0,255, 0, 0, 0, 0,190,135, 72, 37, 62, 35, 43, 14, 61,164,211,170,210,189,116, 40,227, 1, 0,255,
- 0, 0, 0, 0, 62,217,103, 66, 62, 12,198,133, 61,134,248, 73, 94,100, 79,237,223, 18, 0,255, 0, 0, 0, 0,190,163, 69,207,
- 62, 12,198,133, 61,134,248, 73,161,156, 79,237,223, 18, 0,255, 0, 0, 0, 0, 62,211,206, 32, 60,200,163,119, 60,211,115,252,
-120,247,221,255,231,165, 0,255, 0, 0, 0, 0,190,157,172,173, 60,200,163,119, 60,211,115,252,135, 9,221,255,231,165, 0,255,
- 0, 0, 0, 0, 62,170,192,123,189, 85, 45,188, 61, 52, 94,112, 76,155,154,106,242, 19, 0,255, 0, 0, 0, 0,190,105, 62, 16,
-189, 85, 45,188, 61, 52, 94,112,179,101,154,106,242, 19, 0,255, 0, 0, 0, 0, 62,131,144,140,189,196, 41, 0, 61,142,111, 33,
- 56,204,142, 26, 13,138, 0,255, 0, 0, 0, 0,190, 26,222, 50,189,196, 41, 0, 61,142,111, 33,199, 52,142, 26, 13,138, 0,255,
- 0, 0, 0, 0, 61, 88,133,203, 62,187,243, 16,188,105,242, 89, 0, 0,106,155, 70,214, 2,255, 0, 0, 0, 0, 61, 88,133,203,
- 62,208,121,226,190, 62, 7,254, 0, 0,127,243, 3, 82, 2,255, 0, 0, 0, 0, 61, 88,133,203,190, 18,152,254,190,236,214, 11,
- 0, 0,164, 54,166,204, 3,255, 0, 0, 0, 0, 61, 88,133,203,190,136,190,173,189,124,142,139, 0, 0,129,179,235, 65, 0,255,
- 0, 0, 0, 0, 61, 88,133,203,191, 1,243,205, 61,134,248, 73, 0, 0,151,182,181,204, 2,255, 0, 0, 0, 0, 61, 88,133,203,
-190,218,217,247, 60, 56, 12,241, 0, 0,221,231,132,162, 2,255, 0, 0, 0, 0, 61, 88,133,203,190,162,222,161, 57,157, 21,147,
- 0, 0,212, 16,135,201, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,142, 87,207,188,146,212,141, 0, 0,147,245,187, 97, 0,255,
- 0, 0, 0, 0, 62,230,119, 61, 61,106,172,239,189,253, 43,161,125,164,235,181, 13,156, 0,255, 0, 0, 0, 0,190,176, 85,202,
- 61,106,172,239,189,253, 43,161,130, 92,235,181, 13,156, 0,255, 0, 0, 0, 0, 62,232, 84,243, 61,199,113,194,190, 47, 26, 78,
-126,174,238, 23,252, 66, 0,255, 0, 0, 0, 0,190,178, 51,128, 61,199,113,194,190, 47, 26, 78,129, 82,238, 23,252, 66, 0,255,
- 0, 0, 0, 0, 62,211,206, 32, 61,147, 49,216,190,180,218,181, 81, 70, 13,148,158, 15, 1,255, 0, 0, 0, 0,190,157,172,173,
- 61,147, 49,216,190,180,218,181,174,186, 13,148,158, 15, 1,255, 0, 0, 0, 0, 62,137, 41,174, 62, 27,180, 54,190,244, 76,226,
- 58,123, 21,228,144, 70, 3,255, 0, 0, 0, 0,190, 38, 16,118, 62, 27,180, 54,190,244, 76,226,197,133, 21,228,144, 70, 3,255,
- 0, 0, 0, 0, 62,202,121,146,189,151, 95,239,189,238, 61,240, 89, 76,164,139, 6,161, 2,255, 0, 0, 0, 0,190,148, 88, 31,
-189,151, 95,239,189,238, 61,240,166,180,164,139, 6,161, 2,255, 0, 0, 0, 0, 62,168,226,197,189,226, 4, 97,190,103, 21,163,
- 38, 93,134, 34, 7,182, 0,255, 0, 0, 0, 0,190,101,130,164,189,226, 4, 97,190,103, 21,163,217,163,134, 34, 7,182, 0,255,
- 0, 0, 0, 0, 62,180, 21, 9,189,100, 27,109,190,178,252,255, 43,106,170,219,170,222, 1,255, 0, 0, 0, 0,190,123,231, 45,
-189,100, 27,109,190,178,252,255,212,150,170,219,170,222, 1,255, 0, 0, 0, 0, 62, 86,156,155,188,217, 91,211,190,234,248, 85,
- 55,168,213,109,148,229, 2,255, 0, 0, 0, 0,189,212,179,106,188,217, 91,211,190,234,248, 85,200, 88,213,109,148,229, 2,255,
- 0, 0, 0, 0, 62, 38, 24, 30,190, 93, 61,112, 61, 37,112,191,120,197,255, 36,213,158, 0,255, 0, 0, 0, 0,189,103, 84,224,
-190, 93, 61,112, 61, 37,112,191,135, 59,255, 36,213,158, 0,255, 0, 0, 0, 0, 62, 11,248, 41,190,123, 24,209,188,236,102,176,
- 84,188,181, 20,196, 24, 0,255, 0, 0, 0, 0,188,253,170, 27,190,123, 24,209,188,236,102,176,171, 68,181, 20,196, 24, 0,255,
- 0, 0, 0, 0, 62, 64, 56, 19,190,196,117,110, 60,241, 79, 92, 79,131,254, 86,155,183, 2,255, 0, 0, 0, 0,189,167,234, 89,
-190,196,117,110, 60,241, 79, 92,176,125,254, 86,155,183, 2,255, 0, 0, 0, 0, 62, 45,142,246,190,146, 19, 59, 61, 7,149, 95,
- 99, 5, 1, 8,174,231, 0,255, 0, 0, 0, 0,189,130,152, 32,190,146, 19, 59, 61, 7,149, 95,156,251, 1, 8,174,231, 0,255,
- 0, 0, 0, 0, 62, 82,225, 47,190,244,249,234, 61, 22,131, 15, 62, 65,185,227,168,224, 2,255, 0, 0, 0, 0,189,205, 60,146,
-190,244,249,234, 61, 22,131, 15,193,191,185,227,168,224, 2,255, 0, 0, 0, 0, 61,242,158, 25,190,207,167,178, 60,181,152,155,
- 16,133,232,208,131, 55, 0,255, 0, 0, 0, 0,188, 80,194,110,190,207,167,178, 60,181,152,155,239,123,232,208,131, 55, 0,255,
- 0, 0, 0, 0, 61,227,176,105,190,155,103,201, 60,151,189, 58, 48, 7,224,163,141,149, 0,255, 0, 0, 0, 0,187,178,169,214,
-190,155,103,201, 60,151,189, 58,207,249,224,163,141,149, 0,255, 0, 0, 0, 0, 62, 4,129, 81,190,252,112,195, 61, 97, 39,129,
- 12, 68,158,218,173,147, 0,255, 0, 0, 0, 0,188,193,243, 89,190,252,112,195, 61, 97, 39,129,243,188,158,218,173,147, 0,255,
- 0, 0, 0, 0, 62, 30,161, 70,190, 59,166,163, 61, 82, 57,208,124,195,227,106,255,203, 0,255, 0, 0, 0, 0,189, 73,121,127,
-190, 59,166,163, 61, 82, 57,208,131, 61,227,106,255,203, 0,255, 0, 0, 0, 0, 62, 26,229,218,190, 33,134,174, 61,142,111, 33,
-120, 29,231,105, 36,193, 0,255, 0, 0, 0, 0,189, 58,139,207,190, 33,134,174, 61,142,111, 33,135,227,231,105, 36,193, 0,255,
- 0, 0, 0, 0, 62, 23, 42,109,190, 7,102,186, 61,172, 74,130,101,160,182,164, 25,240, 0,255, 0, 0, 0, 0,189, 43,158, 31,
-190, 7,102,186, 61,172, 74,130,154, 96,182,164, 25,240, 0,255, 0, 0, 0, 0, 62, 26,229,218,190,111,230,140,189,148,171,206,
- 84,120,159,221,253,198, 0,255, 0, 0, 0, 0,189, 58,139,207,190,111,230,140,189,148,171,206,171,136,159,221,253,198, 0,255,
- 0, 0, 0, 0, 62, 67,243,127,190, 74,148, 83,190,139,205, 16, 67,255,151, 42,228, 73, 2,255, 0, 0, 0, 0,189,175, 97, 49,
-190, 74,148, 83,190,139,205, 16,188, 1,151, 42,228, 73, 2,255, 0, 0, 0, 0, 62, 90, 88, 7,189,248,104,235,190,205, 28,244,
- 63,201,176, 25,179, 0, 3,255, 0, 0, 0, 0,189,220, 42, 66,189,248,104,235,190,205, 28,244,192, 55,176, 25,179, 0, 3,255,
- 0, 0, 0, 0, 62,135, 75,248, 62,180,124, 55,190,167,202,187, 56, 34, 95,160,192, 17, 2,255, 0, 0, 0, 0,190, 34, 85, 10,
- 62,180,124, 55,190,167,202,187,199,222, 95,160,192, 17, 2,255, 0, 0, 0, 0, 62,135, 75,248, 62,195,105,232,190, 58, 76,146,
- 55, 54,115,120, 0,239, 2,255, 0, 0, 0, 0,190, 34, 85, 10, 62,195,105,232,190, 58, 76,146,200,202,115,120, 0,239, 2,255,
- 0, 0, 0, 0, 62,135, 75,248, 62,176,192,203,189, 34,252,105, 63,239, 92,164, 60,238, 2,255, 0, 0, 0, 0,190, 34, 85, 10,
- 62,176,192,203,189, 34,252,105,192, 17, 92,164, 60,238, 2,255, 0, 0, 0, 0, 62,137, 41,174, 62, 68,193,219, 61, 82, 57,208,
- 49,123,102,255, 57,170, 0,255, 0, 0, 0, 0,190, 38, 16,118, 62, 68,193,219, 61, 82, 57,208,206,133,102,255, 57,170, 0,255,
- 0, 0, 0, 0, 62,200,155,220, 62, 12,198,133, 59,248,172, 95, 98,142, 73,198, 35, 6, 0,255, 0, 0, 0, 0,190,146,122,105,
- 62, 12,198,133, 59,248,172, 95,157,114, 73,198, 35, 6, 0,255, 0, 0, 0, 0, 62,178, 55, 83, 62, 35, 43, 14,188,146,212,141,
- 61,129,106,254, 33,241, 0,255, 0, 0, 0, 0,190,120, 43,193, 62, 35, 43, 14,188,146,212,141,194,127,106,254, 33,241, 0,255,
- 0, 0, 0, 0, 62,180, 21, 9, 62,141, 76, 72,189,253, 43,161, 76,234, 87,151, 52,221, 0,255, 0, 0, 0, 0,190,123,231, 45,
- 62,141, 76, 72,189,253, 43,161,179, 22, 87,151, 52,221, 0,255, 0, 0, 0, 0, 62,217,103, 66, 62, 87,106,247,189,185,254, 7,
-101,187, 66, 28, 40,199, 2,255, 0, 0, 0, 0,190,163, 69,207, 62, 87,106,247,189,185,254, 7,154, 69, 66, 28, 40,199, 2,255,
- 0, 0, 0, 0, 62,217,103, 66, 62,113,138,236,190, 80,177, 26,113,183, 58, 68,248,119, 2,255, 0, 0, 0, 0,190,163, 69,207,
- 62,113,138,236,190, 80,177, 26,142, 73, 58, 68,248,119, 2,255, 0, 0, 0, 0, 62,180, 21, 9, 62,152,126,141,190,118, 3, 83,
- 86,235, 93,238,253,205, 0,255, 0, 0, 0, 0,190,123,231, 45, 62,152,126,141,190,118, 3, 83,169, 21, 93,238,253,205, 0,255,
- 0, 0, 0, 0, 62,180, 21, 9, 62,135,179, 38,190,182,184,107, 85,232, 70,154,192,157, 2,255, 0, 0, 0, 0,190,123,231, 45,
- 62,135,179, 38,190,182,184,107,170, 24, 70,154,192,157, 2,255, 0, 0, 0, 0, 62,217,103, 66, 62, 76, 56,179,190,162, 49,153,
-110,166, 42,177,207,222, 2,255, 0, 0, 0, 0,190,163, 69,207, 62, 76, 56,179,190,162, 49,153,145, 90, 42,177,207,222, 2,255,
- 0, 0, 0, 0, 62,174,123,231, 61,206,232,154,190,216, 79, 56, 75, 58, 1, 57,152,116, 3,255, 0, 0, 0, 0,190,112,180,232,
- 61,206,232,154,190,216, 79, 56,180,198, 1, 57,152,116, 3,255, 0, 0, 0, 0, 62,142,194,208,189, 40,100,171,190,206,250,170,
- 70, 73,187,147,173,200, 1,255, 0, 0, 0, 0,190, 49, 66,187,189, 40,100,171,190,206,250,170,185,183,187,147,173,200, 0,255,
- 0, 0, 0, 0, 62,223, 0,100, 61,206,232,154,190,121,190,191,114,194, 41, 80, 38,207, 0,255, 0, 0, 0, 0,190,168,222,241,
- 61,206,232,154,190,121,190,191,141, 62, 41, 80, 38,207, 0,255, 0, 0, 0, 0, 62,120, 51,104,190, 7,102,186,189,163,153,127,
- 74,232,154,153, 22, 28, 0,255, 0, 0, 0, 0,190, 11,240,130,190, 7,102,186,189,163,153,127,181, 24,154,153, 22, 28, 0,255,
- 0, 0, 0, 0, 62,129,178,214,190, 18,152,254,190,125,122, 44, 71, 89,151,115,237, 1, 0,255, 0, 0, 0, 0,190, 23, 34,198,
-190, 18,152,254,190,125,122, 44,184,167,151,115,237, 1, 0,255, 0, 0, 0, 0, 62,239,203,202, 62, 12,198,133,190,132, 86, 56,
-220, 72, 93,207, 79,106, 2,255, 0, 0, 0, 0,190,185,170, 88, 62, 12,198,133,190,132, 86, 56, 35,184, 93,207, 79,106, 2,255,
- 0, 0, 0, 0, 62,211,206, 32,189,240,242, 18,190, 84,108,135, 15, 30,150, 34, 70, 84, 2,255, 0, 0, 0, 0,190,157,172,173,
-189,240,242, 18,190, 84,108,135,240,226,150, 34, 70, 84, 2,255, 0, 0, 0, 0, 63, 9,160, 38,189,203,159,217,190,154,186,192,
- 67,164,166,138, 61,172, 0,255, 0, 0, 0, 0,190,221, 30,219,189,203,159,217,190,154,186,192,188, 92,166,138, 61,172, 0,255,
- 0, 0, 0, 0, 63, 38,140,172,188,217, 91,211,190,178,252,255, 83,179,206,223, 83,114, 0,255, 0, 0, 0, 0,191, 11,123,244,
-188,217, 91,211,190,178,252,255,172, 77,206,223, 83,114, 0,255, 0, 0, 0, 0, 63, 46,242, 95, 61,199,113,194,190,177, 31, 73,
- 92, 54, 12,232, 87,210, 2,255, 0, 0, 0, 0,191, 19,225,167, 61,199,113,194,190,177, 31, 73,163,202, 12,232, 87,210, 2,255,
- 0, 0, 0, 0, 63, 32,243,138, 62, 61, 75, 3,190,177, 31, 73, 62,247, 83,221, 73, 97, 0,255, 0, 0, 0, 0,191, 5,226,209,
- 62, 61, 75, 3,190,177, 31, 73,193, 9, 83,221, 73, 97, 0,255, 0, 0, 0, 0, 63, 7,194,112, 62, 46, 93, 82,190,150,255, 84,
- 5,181,111, 80, 62,236, 0,255, 0, 0, 0, 0,190,217, 99,111, 62, 46, 93, 82,190,150,255, 84,250, 75,111, 80, 62,236, 0,255,
- 0, 0, 0, 0, 63, 6,211,149, 62, 16,129,241,190,145,102, 50, 69,236,239,117,105,236, 0,255, 0, 0, 0, 0,190,215,133,185,
- 62, 16,129,241,190,145,102, 50,186, 20,239,117,105,236, 0,255, 0, 0, 0, 0, 63, 27, 90,104, 62, 27,180, 54,190,169,168,113,
- 24, 34,231,205,123, 89, 0,255, 0, 0, 0, 0,191, 0, 73,175, 62, 27,180, 54,190,169,168,113,231,222,231,205,123, 89, 0,255,
- 0, 0, 0, 0, 63, 36,174,246, 61,169,150, 97,190,173, 99,221,223, 69,252, 16,123,173, 0,255, 0, 0, 0, 0,191, 9,158, 62,
- 61,169,150, 97,190,173, 99,221, 32,187,252, 16,123,173, 0,255, 0, 0, 0, 0, 63, 30, 38,249,188,127,147, 98,190,173, 99,221,
-239,171, 39, 0,120,207, 0,255, 0, 0, 0, 0,191, 3, 22, 64,188,127,147, 98,190,173, 99,221, 16, 85, 39, 0,120,207, 0,255,
- 0, 0, 0, 0, 63, 8,177, 75,189,143,233, 23,190,149, 33,158, 51, 9, 45, 56,108, 82, 0,255, 0, 0, 0, 0,190,219, 65, 37,
-189,143,233, 23,190,149, 33,158,204,247, 45, 56,108, 82, 0,255, 0, 0, 0, 0, 62,224,222, 26,189,173,196,120,190, 88, 39,243,
- 38,147, 62,224,104,153, 2,255, 0, 0, 0, 0,190,170,188,167,189,173,196,120,190, 88, 39,243,217,109, 62,224,104,153, 2,255,
- 0, 0, 0, 0, 62,247, 66,162, 61,236,195,250,190,128,154,204, 62,218,243,152,110,206, 2,255, 0, 0, 0, 0,190,193, 33, 48,
- 61,236,195,250,190,128,154,204,193, 38,243,152,110,206, 2,255, 0, 0, 0, 0, 62,252,219,196, 61,184,132, 17,190,145,102, 50,
- 87, 10,182, 73, 58, 19, 0,255, 0, 0, 0, 0,190,198,186, 82, 61,184,132, 17,190,145,102, 50,168,246,182, 73, 58, 19, 0,255,
- 0, 0, 0, 0, 62,237,238, 21,189,128,251,103,190,125,122, 44, 15,232,121,106, 37, 64, 0,255, 0, 0, 0, 0,190,183,204,162,
-189,128,251,103,190,125,122, 44,240, 24,121,106, 37, 64, 0,255, 0, 0, 0, 0, 63, 9,160, 38,189, 85, 45,188,190,164, 15, 79,
-239,157,122, 89, 33,212, 0,255, 0, 0, 0, 0,190,221, 30,219,189, 85, 45,188,190,164, 15, 79, 16, 99,122, 89, 33,212, 0,255,
- 0, 0, 0, 0, 63, 27, 90,104,188, 8, 37,223,190,182,184,107,158, 8, 81,202, 9,185, 0,255, 0, 0, 0, 0,191, 0, 73,175,
-188, 8, 37,223,190,182,184,107, 97,248, 81,202, 9,185, 0,255, 0, 0, 0, 0, 63, 32,243,138, 61,132, 68, 40,190,182,184,107,
-131, 60,239,145, 23, 95, 0,255, 0, 0, 0, 0,191, 5,226,209, 61,132, 68, 40,190,182,184,107,124,196,239,145, 23, 95, 0,255,
- 0, 0, 0, 0, 63, 25,124,178, 61,236,195,250,190,180,218,181,228, 27,153, 22, 70,206, 0,255, 0, 0, 0, 0,190,252,215,242,
- 61,236,195,250,190,180,218,181, 27,229,153, 22, 70,206, 0,255, 0, 0, 0, 0, 63, 7,194,112, 61,221,214, 74,190,162, 49,153,
- 68, 65,168,253, 64,113, 0,255, 0, 0, 0, 0,190,217, 99,111, 61,221,214, 74,190,162, 49,153,187,191,168,253, 64,113, 0,255,
- 0, 0, 0, 0, 62,228,153,135, 61,169,150, 97,190,125,122, 44, 86,113,222,190, 88, 87, 0,255, 0, 0, 0, 0,190,174,120, 20,
- 61,169,150, 97,190,125,122, 44,169,143,222,190, 88, 87, 0,255, 0, 0, 0, 0, 62,226,187,209, 60,230,126,216,190,141,170,198,
- 95,196,182,107, 42,100, 0,255, 0, 0, 0, 0,190,172,154, 93, 60,230,126,216,190,141,170,198,160, 60,182,107, 42,100, 0,255,
- 0, 0, 0, 0, 62,208, 18,180,188, 8, 37,223,190,141,170,198,111, 42, 14, 21, 61,220, 0,255, 0, 0, 0, 0,190,153,241, 65,
-188, 8, 37,223,190,141,170,198,144,214, 14, 21, 61,220, 0,255, 0, 0, 0, 0, 62,223, 0,100,188, 67,220,161,190,141,170,198,
- 79, 3, 91, 4, 43, 19, 2,255, 0, 0, 0, 0,190,168,222,241,188, 67,220,161,190,141,170,198,176,253, 91, 4, 43, 19, 2,255,
- 0, 0, 0, 0, 62,228,153,135,189, 55, 82, 92,190,141,170,198,107,207,254,198, 68,250, 2,255, 0, 0, 0, 0,190,174,120, 20,
-189, 55, 82, 92,190,141,170,198,148, 49,254,198, 68,250, 2,255, 0, 0, 0, 0, 62,221, 34,174,189,115, 9, 29,190,141,170,198,
- 82, 7, 64,225, 73,200, 0,255, 0, 0, 0, 0,190,167, 1, 59,189,115, 9, 29,190,141,170,198,173,249, 64,225, 73,200, 0,255,
- 0, 0, 0, 0, 62,200,155,220,189, 85, 45,188,190, 58, 76,146,117, 38,207, 66,239, 47, 0,255, 0, 0, 0, 0,190,146,122,105,
-189, 85, 45,188,190, 58, 76,146,138,218,207, 66,239, 47, 0,255, 0, 0, 0, 0, 62,198,190, 38,189,128,251,103,190,106,209, 15,
- 97,150, 18,139, 80,184, 0,255, 0, 0, 0, 0,190,144,156,179,189,128,251,103,190,106,209, 15,158,106, 18,139, 80,184, 0,255,
- 0, 0, 0, 0, 62,198,190, 38,189, 10,137, 74,190,114, 71,231,116, 17,240, 66, 51,154, 0,255, 0, 0, 0, 0,190,144,156,179,
-189, 10,137, 74,190,114, 71,231,139,239,240, 66, 51,154, 0,255, 0, 0, 0, 0, 62,217,103, 66, 61, 46,246, 45,190,125,122, 44,
-113,112,204,245, 30, 39, 0,255, 0, 0, 0, 0,190,163, 69,207, 61, 46,246, 45,190,125,122, 44,142,144,204,245, 30, 39, 0,255,
- 0, 0, 0, 0, 62,239,203,202, 61,121,154,159,190,139,205, 16, 90,105,185, 61, 56,146, 0,255, 0, 0, 0, 0,190,185,170, 88,
- 61,121,154,159,190,139,205, 16,165,151,185, 61, 56,146, 0,255, 0, 0, 0, 0, 62,239,203,202, 61,106,172,239,190,152,221, 10,
- 82,191,204,102, 82,230, 0,255, 0, 0, 0, 0,190,185,170, 88, 61,106,172,239,190,152,221, 10,173, 65,204,102, 82,230, 0,255,
- 0, 0, 0, 0, 62,221, 34,174,189,115, 9, 29,190,152,221, 10, 29,246, 98, 64, 76, 94, 0,255, 0, 0, 0, 0,190,167, 1, 59,
-189,115, 9, 29,190,152,221, 10,226, 10, 98, 64, 76, 94, 0,255, 0, 0, 0, 0, 62,230,119, 61,189, 55, 82, 92,190,152,221, 10,
- 77,150, 17,111,100, 75, 0,255, 0, 0, 0, 0,190,176, 85,202,189, 55, 82, 92,190,152,221, 10,178,106, 17,111,100, 75, 0,255,
- 0, 0, 0, 0, 62,224,222, 26,188,127,147, 98,190,152,221, 10, 60,239, 60,190, 94,195, 0,255, 0, 0, 0, 0,190,170,188,167,
-188,127,147, 98,190,152,221, 10,195, 17, 60,190, 94,195, 0,255, 0, 0, 0, 0, 62,209,240,106,188, 8, 37,223,190,152,221, 10,
- 83,199, 23,178, 93,209, 0,255, 0, 0, 0, 0,190,155,206,247,188, 8, 37,223,190,152,221, 10,172, 57, 23,178, 93,209, 0,255,
- 0, 0, 0, 0, 62,228,153,135, 60,230,126,216,190,152,221, 10, 73, 98,200, 1, 88,170, 0,255, 0, 0, 0, 0,190,174,120, 20,
- 60,230,126,216,190,152,221, 10,182,158,200, 1, 88,170, 0,255, 0, 0, 0, 0, 63, 9,160, 38, 61,206,232,154,190,175, 65,147,
- 68, 23,223,166,103,112, 0,255, 0, 0, 0, 0,190,221, 30,219, 61,206,232,154,190,175, 65,147,187,233,223,166,103,112, 0,255,
- 0, 0, 0, 0, 63, 27, 90,104, 61,221,214, 74,190,192, 12,249, 18,165,216,156,120, 89, 0,255, 0, 0, 0, 0,191, 0, 73,175,
- 61,221,214, 74,190,192, 12,249,237, 91,216,156,120, 89, 0,255, 0, 0, 0, 0, 63, 35,192, 27, 61,121,154,159,190,193,234,175,
-185, 25,231, 29,103,157, 0,255, 0, 0, 0, 0,191, 8,175, 98, 61,121,154,159,190,193,234,175, 70,231,231, 29,103,157, 0,255,
- 0, 0, 0, 0, 63, 30, 38,249,188, 67,220,161,190,192, 12,249,209, 43, 64, 0,100,119, 0,255, 0, 0, 0, 0,191, 3, 22, 64,
-188, 67,220,161,190,192, 12,249, 46,213, 64, 0,100,119, 0,255, 0, 0, 0, 0, 63, 10,143, 1,189, 85, 45,188,190,177, 31, 73,
- 26, 52, 92,240, 84, 3, 0,255, 0, 0, 0, 0,190,222,252,145,189, 85, 45,188,190,177, 31, 73,229,204, 92,240, 84, 3, 0,255,
- 0, 0, 0, 0, 62,237,238, 21,189,115, 9, 29,190,139,205, 16, 8, 58,111,116, 62,101, 0,255, 0, 0, 0, 0,190,183,204,162,
-189,115, 9, 29,190,139,205, 16,247,198,111,116, 62,101, 0,255, 0, 0, 0, 0, 62,254,185,122, 61,169,150, 97,190,158,118, 45,
- 80,198,213,102, 89,175, 0,255, 0, 0, 0, 0,190,200,152, 8, 61,169,150, 97,190,158,118, 45,175, 58,213,102, 89,175, 0,255,
- 0, 0, 0, 0, 62,239,203,202,186,133,194,226,190,154,186,192, 25,136, 0,130,125,108, 0,255, 0, 0, 0, 0,190,185,170, 88,
-186,133,194,226,190,154,186,192,230,120, 0,130,125,108, 0,255, 0, 0, 0, 0, 62,250,254, 14,188,187,128,115,190,156,152,119,
- 27, 2, 30, 58,121,104, 0,255, 0, 0, 0, 0,190,196,220,156,188,187,128,115,190,156,152,119,228,254, 30, 58,121,104, 0,255,
- 0, 0, 0, 0, 63, 4,245,223, 59,205,106, 77,190,164, 15, 79, 55,218,253,126,115, 35, 0,255, 0, 0, 0, 0,190,211,202, 76,
- 59,205,106, 77,190,164, 15, 79,200, 38,253,126,115, 35, 0,255, 0, 0, 0, 0, 63, 0, 75,152, 60,230,126,216,190,160, 83,227,
- 41,164,255,199,121, 8, 0,255, 0, 0, 0, 0,190,202,117,190, 60,230,126,216,190,160, 83,227,214, 92,255,199,121, 8, 0,255,
- 0, 0, 0, 0, 63, 6,211,149, 61,106,172,239,190,165,237, 5, 39,237, 9,191,121, 55, 0,255, 0, 0, 0, 0,190,215,133,185,
- 61,106,172,239,190,165,237, 5,216, 19, 9,191,121, 55, 0,255, 0, 0, 0, 0, 63, 11,125,220, 61, 17, 26,205,190,167,202,187,
- 46,208,244, 41,118,137, 0,255, 0, 0, 0, 0,190,224,218, 71, 61, 17, 26,205,190,167,202,187,209, 48,244, 41,118,137, 0,255,
- 0, 0, 0, 0, 63, 18, 5,218, 61, 61,227,222,190,169,168,113, 53, 70, 3, 84,116, 85, 2,255, 0, 0, 0, 0,190,237,234, 65,
- 61, 61,227,222,190,169,168,113,202,186, 3, 84,116, 85, 2,255, 0, 0, 0, 0, 63, 15, 57, 73, 61,154,168,176,190,169,168,113,
- 44, 99, 38, 36,113,212, 2,255, 0, 0, 0, 0,190,232, 81, 31, 61,154,168,176,190,169,168,113,211,157, 38, 36,113,212, 2,255,
- 0, 0, 0, 0, 63, 7,194,112, 62, 27,180, 54,190,192, 12,249,198,249, 72, 3,166,222, 3,255, 0, 0, 0, 0,190,217, 99,111,
- 62, 27,180, 54,190,192, 12,249, 57, 7, 72, 3,166,222, 3,255, 0, 0, 0, 0, 63, 34,209, 64, 62, 42,161,230,190,206,250,170,
- 37,198, 68,123,154,174, 3,255, 0, 0, 0, 0,191, 7,192,135, 62, 42,161,230,190,206,250,170,218, 58, 68,123,154,174, 3,255,
- 0, 0, 0, 0, 63, 48,208, 21, 61,177, 13, 57,190,195,200,102,121, 3, 17,201,218, 73, 3,255, 0, 0, 0, 0,191, 21,191, 93,
- 61,177, 13, 57,190,195,200,102,134,253, 17,201,218, 73, 3,255, 0, 0, 0, 0, 63, 42, 72, 24,188,217, 91,211,190,203, 63, 62,
- 82, 59,200, 75,175, 70, 3,255, 0, 0, 0, 0,191, 15, 55, 96,188,217, 91,211,190,203, 63, 62,173,197,200, 75,175, 70, 3,255,
- 0, 0, 0, 0, 63, 9,160, 38,189,188,178, 40,190,193,234,175,249,134,165,184,165,129, 3,255, 0, 0, 0, 0,190,221, 30,219,
-189,188,178, 40,190,193,234,175, 6,122,165,184,165,129, 3,255, 0, 0, 0, 0, 62,215,137,140,189,226, 4, 97,190,154,186,192,
-249,126,163,122,167,205, 1,255, 0, 0, 0, 0,190,161,104, 25,189,226, 4, 97,190,154,186,192, 6,130,163,122,167,205, 1,255,
- 0, 0, 0, 0, 62,232, 84,243, 62, 1,148, 65,190,167,202,187,193, 93, 65,224,165,229, 1,255, 0, 0, 0, 0,190,178, 51,128,
- 62, 1,148, 65,190,167,202,187, 62,163, 65,224,165,229, 1,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,107, 16,
- 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7,160, 80, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 47, 28, 7,160, 80, 32,
- 0, 0, 0, 55, 0, 0, 3,237, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34,
- 0, 0, 0, 2, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 3,
- 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 3,
- 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 41, 0, 0, 0, 34,
- 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 44,
- 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 42, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 6,
- 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 34,
- 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 10,
- 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 1,
- 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 34,
- 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15,
- 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 14,
- 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 34,
- 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 21,
- 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 13,
- 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 34,
- 0, 0, 0, 19, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 24,
- 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 17,
- 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 28, 0, 0, 0, 34,
- 0, 0, 0, 25, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 29,
- 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 28,
- 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 33, 0, 0, 0, 34,
- 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 35,
- 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 36,
- 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 38, 0, 0, 0, 34,
- 0, 0, 0, 37, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 40,
- 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 37, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 39,
- 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 42, 0, 0, 0, 34,
- 0, 0, 0, 35, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 49,
- 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 45, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 36,
- 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 50, 0, 0, 0, 34,
- 0, 0, 0, 33, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 52,
- 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 51,
- 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 34,
- 0, 0, 0, 21, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 56,
- 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 55,
- 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0, 0, 34,
- 0, 0, 0, 10, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 62,
- 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 61,
- 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 64, 0, 0, 0, 34,
- 0, 0, 0, 47, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 63,
- 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 48,
- 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 34,
- 0, 0, 0, 57, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59,
- 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54,
- 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 60, 0, 0, 0, 34,
- 0, 0, 0, 49, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,171,
- 0, 0, 0, 34, 0, 0, 0,171, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0, 87,
- 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0,172, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0,172, 0, 0, 0, 34,
- 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0,169, 0, 0, 0, 34, 0, 0, 0,169, 0, 0, 0,171,
- 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 34, 0, 0, 0, 86,
- 0, 0, 0,170, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,167, 0, 0, 0, 34,
- 0, 0, 0,167, 0, 0, 0,169, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0,168, 0, 0, 0,170,
- 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,168, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 81,
- 0, 0, 0,165, 0, 0, 0, 34, 0, 0, 0,165, 0, 0, 0,167, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 83, 0, 0, 0, 34,
- 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0,166, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 84,
- 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,163, 0, 0, 0, 34, 0, 0, 0,163, 0, 0, 0,165, 0, 0, 0, 34, 0, 0, 0, 79,
- 0, 0, 0, 81, 0, 0, 0, 34, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,164, 0, 0, 0, 34,
- 0, 0, 0, 80, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,143,
- 0, 0, 0, 34, 0, 0, 0,143, 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0, 91,
- 0, 0, 0,144, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,162, 0, 0, 0, 34,
- 0, 0, 0,144, 0, 0, 0,162, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0,145,
- 0, 0, 0, 34, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0,146, 0, 0, 0, 34, 0, 0, 0, 91,
- 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0,144, 0, 0, 0,146, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 34,
- 0, 0, 0, 94, 0, 0, 0,147, 0, 0, 0, 34, 0, 0, 0,145, 0, 0, 0,147, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0,148,
- 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0, 34, 0, 0, 0, 94,
- 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0,149, 0, 0, 0, 34, 0, 0, 0,147, 0, 0, 0,149, 0, 0, 0, 34,
- 0, 0, 0, 97, 0, 0, 0,150, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0,148, 0, 0, 0,150,
- 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,151, 0, 0, 0, 34, 0, 0, 0,149,
- 0, 0, 0,151, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,152, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 34,
- 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,153,
- 0, 0, 0, 34, 0, 0, 0,151, 0, 0, 0,153, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,154, 0, 0, 0, 34, 0, 0, 0, 99,
- 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,152, 0, 0, 0,154, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,102, 0, 0, 0, 34,
- 0, 0, 0,102, 0, 0, 0,155, 0, 0, 0, 34, 0, 0, 0,153, 0, 0, 0,155, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,156,
- 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,154, 0, 0, 0,156, 0, 0, 0, 34, 0, 0, 0,102,
- 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,157, 0, 0, 0, 34, 0, 0, 0,155, 0, 0, 0,157, 0, 0, 0, 34,
- 0, 0, 0,105, 0, 0, 0,158, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,156, 0, 0, 0,158,
- 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,159, 0, 0, 0, 34, 0, 0, 0,157,
- 0, 0, 0,159, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,160, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,107, 0, 0, 0, 34,
- 0, 0, 0,158, 0, 0, 0,160, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66,
- 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,159, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 66,
- 0, 0, 0,160, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,125, 0, 0, 0, 34, 0, 0, 0,125, 0, 0, 0,157, 0, 0, 0, 34,
- 0, 0, 0,108, 0, 0, 0,159, 0, 0, 0, 34, 0, 0, 0,126, 0, 0, 0,158, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,126,
- 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,160, 0, 0, 0, 34, 0, 0, 0,125, 0, 0, 0,176, 0, 0, 0, 34, 0, 0, 0,155,
- 0, 0, 0,176, 0, 0, 0, 34, 0, 0, 0,156, 0, 0, 0,177, 0, 0, 0, 34, 0, 0, 0,126, 0, 0, 0,177, 0, 0, 0, 34,
- 0, 0, 0,123, 0, 0, 0,153, 0, 0, 0, 34, 0, 0, 0,123, 0, 0, 0,176, 0, 0, 0, 34, 0, 0, 0,124, 0, 0, 0,154,
- 0, 0, 0, 34, 0, 0, 0,124, 0, 0, 0,177, 0, 0, 0, 34, 0, 0, 0,121, 0, 0, 0,151, 0, 0, 0, 34, 0, 0, 0,121,
- 0, 0, 0,123, 0, 0, 0, 34, 0, 0, 0,122, 0, 0, 0,152, 0, 0, 0, 34, 0, 0, 0,122, 0, 0, 0,124, 0, 0, 0, 34,
- 0, 0, 0,119, 0, 0, 0,149, 0, 0, 0, 34, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 34, 0, 0, 0,120, 0, 0, 0,150,
- 0, 0, 0, 34, 0, 0, 0,120, 0, 0, 0,122, 0, 0, 0, 34, 0, 0, 0,117, 0, 0, 0,147, 0, 0, 0, 34, 0, 0, 0,117,
- 0, 0, 0,119, 0, 0, 0, 34, 0, 0, 0,118, 0, 0, 0,148, 0, 0, 0, 34, 0, 0, 0,118, 0, 0, 0,120, 0, 0, 0, 34,
- 0, 0, 0,115, 0, 0, 0,145, 0, 0, 0, 34, 0, 0, 0,115, 0, 0, 0,117, 0, 0, 0, 34, 0, 0, 0,116, 0, 0, 0,146,
- 0, 0, 0, 34, 0, 0, 0,116, 0, 0, 0,118, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,143, 0, 0, 0, 34, 0, 0, 0,113,
- 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0,114, 0, 0, 0,144, 0, 0, 0, 34, 0, 0, 0,114, 0, 0, 0,116, 0, 0, 0, 34,
- 0, 0, 0,112, 0, 0, 0,162, 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0,174, 0, 0, 0,178,
- 0, 0, 0, 34, 0, 0, 0,161, 0, 0, 0,174, 0, 0, 0, 34, 0, 0, 0,174, 0, 0, 0,179, 0, 0, 0, 34, 0, 0, 0,112,
- 0, 0, 0,179, 0, 0, 0, 34, 0, 0, 0,162, 0, 0, 0,174, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,110, 0, 0, 0, 34,
- 0, 0, 0,108, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,111,
- 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,175, 0, 0, 0, 34, 0, 0, 0,175, 0, 0, 0,180, 0, 0, 0, 34, 0, 0, 0,110,
- 0, 0, 0,180, 0, 0, 0, 34, 0, 0, 0,111, 0, 0, 0,181, 0, 0, 0, 34, 0, 0, 0,175, 0, 0, 0,181, 0, 0, 0, 34,
- 0, 0, 0,178, 0, 0, 0,180, 0, 0, 0, 34, 0, 0, 0,174, 0, 0, 0,175, 0, 0, 0, 32, 0, 0, 0,179, 0, 0, 0,181,
- 0, 0, 0, 34, 0, 0, 0,132, 0, 0, 0,134, 0, 0, 0, 34, 0, 0, 0,134, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0,132,
- 0, 0, 0,171, 0, 0, 0, 34, 0, 0, 0,133, 0, 0, 0,134, 0, 0, 0, 34, 0, 0, 0,133, 0, 0, 0,172, 0, 0, 0, 34,
- 0, 0, 0,130, 0, 0, 0,132, 0, 0, 0, 34, 0, 0, 0,130, 0, 0, 0,169, 0, 0, 0, 34, 0, 0, 0,131, 0, 0, 0,133,
- 0, 0, 0, 34, 0, 0, 0,131, 0, 0, 0,170, 0, 0, 0, 34, 0, 0, 0,128, 0, 0, 0,130, 0, 0, 0, 34, 0, 0, 0,128,
- 0, 0, 0,167, 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,131, 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,168, 0, 0, 0, 34,
- 0, 0, 0,163, 0, 0, 0,184, 0, 0, 0, 34, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0, 34, 0, 0, 0,165, 0, 0, 0,182,
- 0, 0, 0, 34, 0, 0, 0,183, 0, 0, 0,185, 0, 0, 0, 34, 0, 0, 0,164, 0, 0, 0,185, 0, 0, 0, 34, 0, 0, 0,166,
- 0, 0, 0,183, 0, 0, 0, 34, 0, 0, 0,128, 0, 0, 0,182, 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,183, 0, 0, 0, 34,
- 0, 0, 0,141, 0, 0, 0,187, 0, 0, 0, 34, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0, 32, 0, 0, 0,184, 0, 0, 0,186,
- 0, 0, 0, 34, 0, 0, 0,141, 0, 0, 0,184, 0, 0, 0, 34, 0, 0, 0,142, 0, 0, 0,187, 0, 0, 0, 34, 0, 0, 0,142,
- 0, 0, 0,185, 0, 0, 0, 34, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,186, 0, 0, 0, 32,
- 0, 0, 0, 67, 0, 0, 0,182, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,183, 0, 0, 0, 34, 0, 0, 0,127, 0, 0, 0,128,
- 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,127, 0, 0, 0, 32, 0, 0, 0,127, 0, 0, 0,129, 0, 0, 0, 34, 0, 0, 0,139,
- 0, 0, 0,190, 0, 0, 0, 34, 0, 0, 0,188, 0, 0, 0,190, 0, 0, 0, 34, 0, 0, 0,141, 0, 0, 0,188, 0, 0, 0, 34,
- 0, 0, 0,139, 0, 0, 0,141, 0, 0, 0, 34, 0, 0, 0,189, 0, 0, 0,191, 0, 0, 0, 34, 0, 0, 0,140, 0, 0, 0,191,
- 0, 0, 0, 34, 0, 0, 0,140, 0, 0, 0,142, 0, 0, 0, 34, 0, 0, 0,142, 0, 0, 0,189, 0, 0, 0, 34, 0, 0, 0,137,
- 0, 0, 0,192, 0, 0, 0, 34, 0, 0, 0,190, 0, 0, 0,192, 0, 0, 0, 34, 0, 0, 0,137, 0, 0, 0,139, 0, 0, 0, 34,
- 0, 0, 0,191, 0, 0, 0,193, 0, 0, 0, 34, 0, 0, 0,138, 0, 0, 0,193, 0, 0, 0, 34, 0, 0, 0,138, 0, 0, 0,140,
- 0, 0, 0, 34, 0, 0, 0,136, 0, 0, 0,194, 0, 0, 0, 34, 0, 0, 0,192, 0, 0, 0,194, 0, 0, 0, 34, 0, 0, 0,136,
- 0, 0, 0,137, 0, 0, 0, 34, 0, 0, 0,193, 0, 0, 0,195, 0, 0, 0, 34, 0, 0, 0,136, 0, 0, 0,195, 0, 0, 0, 34,
- 0, 0, 0,136, 0, 0, 0,138, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,135, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,194,
- 0, 0, 0, 34, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,195, 0, 0, 0, 34, 0, 0, 0, 68,
- 0, 0, 0,188, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0,187, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0,189, 0, 0, 0, 34,
- 0, 0, 0,188, 0, 0, 0,203, 0, 0, 0, 34, 0, 0, 0,203, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0,205,
- 0, 0, 0, 34, 0, 0, 0,189, 0, 0, 0,204, 0, 0, 0, 34, 0, 0, 0,204, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0, 69,
- 0, 0, 0,196, 0, 0, 0, 34, 0, 0, 0,196, 0, 0, 0,197, 0, 0, 0, 34, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0, 34,
- 0, 0, 0,196, 0, 0, 0,198, 0, 0, 0, 34, 0, 0, 0,195, 0, 0, 0,198, 0, 0, 0, 34, 0, 0, 0,197, 0, 0, 0,199,
- 0, 0, 0, 34, 0, 0, 0,192, 0, 0, 0,199, 0, 0, 0, 34, 0, 0, 0,198, 0, 0, 0,200, 0, 0, 0, 34, 0, 0, 0,193,
- 0, 0, 0,200, 0, 0, 0, 34, 0, 0, 0,199, 0, 0, 0,201, 0, 0, 0, 34, 0, 0, 0,190, 0, 0, 0,201, 0, 0, 0, 34,
- 0, 0, 0,200, 0, 0, 0,202, 0, 0, 0, 34, 0, 0, 0,191, 0, 0, 0,202, 0, 0, 0, 34, 0, 0, 0,201, 0, 0, 0,203,
- 0, 0, 0, 34, 0, 0, 0,202, 0, 0, 0,204, 0, 0, 0, 34, 0, 0, 0,196, 0, 0, 0,201, 0, 0, 0, 34, 0, 0, 0,196,
- 0, 0, 0,202, 0, 0, 0, 34, 0, 0, 0,196, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0,137, 0, 0, 0,161, 0, 0, 0, 34,
- 0, 0, 0,136, 0, 0, 0,174, 0, 0, 0, 34, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0, 34, 0, 0, 0,139, 0, 0, 0,208,
- 0, 0, 0, 34, 0, 0, 0,161, 0, 0, 0,208, 0, 0, 0, 34, 0, 0, 0,140, 0, 0, 0,209, 0, 0, 0, 34, 0, 0, 0,162,
- 0, 0, 0,209, 0, 0, 0, 34, 0, 0, 0,141, 0, 0, 0,210, 0, 0, 0, 34, 0, 0, 0,208, 0, 0, 0,210, 0, 0, 0, 34,
- 0, 0, 0,142, 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0,209, 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0,163, 0, 0, 0,210,
- 0, 0, 0, 34, 0, 0, 0,164, 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,206, 0, 0, 0, 34, 0, 0, 0,206,
- 0, 0, 0,210, 0, 0, 0, 34, 0, 0, 0,207, 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,207, 0, 0, 0, 34,
- 0, 0, 0,206, 0, 0, 0,212, 0, 0, 0, 34, 0, 0, 0,208, 0, 0, 0,212, 0, 0, 0, 34, 0, 0, 0,209, 0, 0, 0,213,
- 0, 0, 0, 34, 0, 0, 0,207, 0, 0, 0,213, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0,212, 0, 0, 0, 34, 0, 0, 0, 78,
- 0, 0, 0,213, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,127, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,219, 0, 0, 0, 34,
- 0, 0, 0,128, 0, 0, 0,219, 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,220, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,220,
- 0, 0, 0, 34, 0, 0, 0,217, 0, 0, 0,219, 0, 0, 0, 34, 0, 0, 0,130, 0, 0, 0,217, 0, 0, 0, 34, 0, 0, 0,131,
- 0, 0, 0,218, 0, 0, 0, 34, 0, 0, 0,218, 0, 0, 0,220, 0, 0, 0, 34, 0, 0, 0,215, 0, 0, 0,217, 0, 0, 0, 34,
- 0, 0, 0,132, 0, 0, 0,215, 0, 0, 0, 34, 0, 0, 0,133, 0, 0, 0,216, 0, 0, 0, 34, 0, 0, 0,216, 0, 0, 0,218,
- 0, 0, 0, 34, 0, 0, 0,214, 0, 0, 0,215, 0, 0, 0, 34, 0, 0, 0,134, 0, 0, 0,214, 0, 0, 0, 34, 0, 0, 0,214,
- 0, 0, 0,216, 0, 0, 0, 34, 0, 0, 0,215, 0, 0, 0,226, 0, 0, 0, 34, 0, 0, 0,226, 0, 0, 0,228, 0, 0, 0, 34,
- 0, 0, 0,214, 0, 0, 0,228, 0, 0, 0, 34, 0, 0, 0,216, 0, 0, 0,227, 0, 0, 0, 34, 0, 0, 0,227, 0, 0, 0,228,
- 0, 0, 0, 34, 0, 0, 0,217, 0, 0, 0,224, 0, 0, 0, 34, 0, 0, 0,224, 0, 0, 0,226, 0, 0, 0, 34, 0, 0, 0,218,
- 0, 0, 0,225, 0, 0, 0, 34, 0, 0, 0,225, 0, 0, 0,227, 0, 0, 0, 34, 0, 0, 0,219, 0, 0, 0,222, 0, 0, 0, 34,
- 0, 0, 0,222, 0, 0, 0,224, 0, 0, 0, 34, 0, 0, 0,220, 0, 0, 0,223, 0, 0, 0, 34, 0, 0, 0,223, 0, 0, 0,225,
- 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,221, 0, 0, 0, 34, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0, 34, 0, 0, 0,221,
- 0, 0, 0,223, 0, 0, 0, 34, 0, 0, 0,221, 0, 0, 0,228, 0, 0, 0, 34, 0, 0, 0,222, 0, 0, 0,226, 0, 0, 0, 34,
- 0, 0, 0,223, 0, 0, 0,227, 0, 0, 0, 34, 0, 0, 0,178, 0, 0, 0,231, 0, 0, 0, 34, 0, 0, 0,229, 0, 0, 0,231,
- 0, 0, 0, 34, 0, 0, 0,180, 0, 0, 0,229, 0, 0, 0, 34, 0, 0, 0,179, 0, 0, 0,232, 0, 0, 0, 34, 0, 0, 0,181,
- 0, 0, 0,230, 0, 0, 0, 34, 0, 0, 0,230, 0, 0, 0,232, 0, 0, 0, 34, 0, 0, 0,229, 0, 0, 0,251, 0, 0, 0, 34,
- 0, 0, 0,110, 0, 0, 0,251, 0, 0, 0, 34, 0, 0, 0,111, 0, 0, 0,252, 0, 0, 0, 34, 0, 0, 0,230, 0, 0, 0,252,
- 0, 0, 0, 34, 0, 0, 0,251, 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 0,109,
- 0, 0, 0,254, 0, 0, 0, 34, 0, 0, 0,252, 0, 0, 0,254, 0, 0, 0, 34, 0, 0, 0,231, 0, 0, 0,249, 0, 0, 0, 34,
- 0, 0, 0,112, 0, 0, 0,250, 0, 0, 0, 34, 0, 0, 0,232, 0, 0, 0,250, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,247,
- 0, 0, 0, 34, 0, 0, 0,247, 0, 0, 0,249, 0, 0, 0, 34, 0, 0, 0,114, 0, 0, 0,248, 0, 0, 0, 34, 0, 0, 0,248,
- 0, 0, 0,250, 0, 0, 0, 34, 0, 0, 0,115, 0, 0, 0,245, 0, 0, 0, 34, 0, 0, 0,245, 0, 0, 0,247, 0, 0, 0, 34,
- 0, 0, 0,116, 0, 0, 0,246, 0, 0, 0, 34, 0, 0, 0,246, 0, 0, 0,248, 0, 0, 0, 34, 0, 0, 0,117, 0, 0, 0,243,
- 0, 0, 0, 34, 0, 0, 0,243, 0, 0, 0,245, 0, 0, 0, 34, 0, 0, 0,118, 0, 0, 0,244, 0, 0, 0, 34, 0, 0, 0,244,
- 0, 0, 0,246, 0, 0, 0, 34, 0, 0, 0,119, 0, 0, 0,241, 0, 0, 0, 34, 0, 0, 0,241, 0, 0, 0,243, 0, 0, 0, 34,
- 0, 0, 0,120, 0, 0, 0,242, 0, 0, 0, 34, 0, 0, 0,242, 0, 0, 0,244, 0, 0, 0, 34, 0, 0, 0,121, 0, 0, 0,239,
- 0, 0, 0, 34, 0, 0, 0,239, 0, 0, 0,241, 0, 0, 0, 34, 0, 0, 0,122, 0, 0, 0,240, 0, 0, 0, 34, 0, 0, 0,240,
- 0, 0, 0,242, 0, 0, 0, 34, 0, 0, 0,123, 0, 0, 0,237, 0, 0, 0, 34, 0, 0, 0,237, 0, 0, 0,239, 0, 0, 0, 34,
- 0, 0, 0,124, 0, 0, 0,238, 0, 0, 0, 34, 0, 0, 0,238, 0, 0, 0,240, 0, 0, 0, 34, 0, 0, 0,176, 0, 0, 0,233,
- 0, 0, 0, 34, 0, 0, 0,233, 0, 0, 0,237, 0, 0, 0, 34, 0, 0, 0,177, 0, 0, 0,234, 0, 0, 0, 34, 0, 0, 0,234,
- 0, 0, 0,238, 0, 0, 0, 34, 0, 0, 0,125, 0, 0, 0,235, 0, 0, 0, 34, 0, 0, 0,233, 0, 0, 0,235, 0, 0, 0, 34,
- 0, 0, 0,126, 0, 0, 0,236, 0, 0, 0, 34, 0, 0, 0,234, 0, 0, 0,236, 0, 0, 0, 34, 0, 0, 0,235, 0, 0, 0,253,
- 0, 0, 0, 34, 0, 0, 0,236, 0, 0, 0,254, 0, 0, 0, 34, 0, 0, 0,253, 0, 0, 0,255, 0, 0, 0, 34, 0, 0, 0,255,
- 0, 0, 1, 17, 0, 0, 0, 34, 0, 0, 0,235, 0, 0, 1, 17, 0, 0, 0, 34, 0, 0, 0,254, 0, 0, 1, 0, 0, 0, 0, 34,
- 0, 0, 0,236, 0, 0, 1, 18, 0, 0, 0, 34, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0, 0, 34, 0, 0, 1, 17, 0, 0, 1, 19,
- 0, 0, 0, 34, 0, 0, 0,233, 0, 0, 1, 19, 0, 0, 0, 34, 0, 0, 0,234, 0, 0, 1, 20, 0, 0, 0, 34, 0, 0, 1, 18,
- 0, 0, 1, 20, 0, 0, 0, 34, 0, 0, 1, 15, 0, 0, 1, 19, 0, 0, 0, 34, 0, 0, 0,237, 0, 0, 1, 15, 0, 0, 0, 34,
- 0, 0, 0,238, 0, 0, 1, 16, 0, 0, 0, 34, 0, 0, 1, 16, 0, 0, 1, 20, 0, 0, 0, 34, 0, 0, 1, 13, 0, 0, 1, 15,
- 0, 0, 0, 34, 0, 0, 0,239, 0, 0, 1, 13, 0, 0, 0, 34, 0, 0, 0,240, 0, 0, 1, 14, 0, 0, 0, 34, 0, 0, 1, 14,
- 0, 0, 1, 16, 0, 0, 0, 34, 0, 0, 1, 11, 0, 0, 1, 13, 0, 0, 0, 34, 0, 0, 0,241, 0, 0, 1, 11, 0, 0, 0, 34,
- 0, 0, 0,242, 0, 0, 1, 12, 0, 0, 0, 34, 0, 0, 1, 12, 0, 0, 1, 14, 0, 0, 0, 34, 0, 0, 1, 9, 0, 0, 1, 11,
- 0, 0, 0, 34, 0, 0, 0,243, 0, 0, 1, 9, 0, 0, 0, 34, 0, 0, 0,244, 0, 0, 1, 10, 0, 0, 0, 34, 0, 0, 1, 10,
- 0, 0, 1, 12, 0, 0, 0, 34, 0, 0, 1, 7, 0, 0, 1, 9, 0, 0, 0, 34, 0, 0, 0,245, 0, 0, 1, 7, 0, 0, 0, 34,
- 0, 0, 0,246, 0, 0, 1, 8, 0, 0, 0, 34, 0, 0, 1, 8, 0, 0, 1, 10, 0, 0, 0, 34, 0, 0, 1, 5, 0, 0, 1, 7,
- 0, 0, 0, 34, 0, 0, 0,247, 0, 0, 1, 5, 0, 0, 0, 34, 0, 0, 0,248, 0, 0, 1, 6, 0, 0, 0, 34, 0, 0, 1, 6,
- 0, 0, 1, 8, 0, 0, 0, 34, 0, 0, 1, 3, 0, 0, 1, 5, 0, 0, 0, 34, 0, 0, 0,249, 0, 0, 1, 3, 0, 0, 0, 34,
- 0, 0, 0,250, 0, 0, 1, 4, 0, 0, 0, 34, 0, 0, 1, 4, 0, 0, 1, 6, 0, 0, 0, 34, 0, 0, 1, 3, 0, 0, 1, 21,
- 0, 0, 0, 34, 0, 0, 0,231, 0, 0, 1, 21, 0, 0, 0, 34, 0, 0, 0,232, 0, 0, 1, 22, 0, 0, 0, 34, 0, 0, 1, 4,
- 0, 0, 1, 22, 0, 0, 0, 34, 0, 0, 0,251, 0, 0, 1, 1, 0, 0, 0, 34, 0, 0, 0,255, 0, 0, 1, 1, 0, 0, 0, 34,
- 0, 0, 0,252, 0, 0, 1, 2, 0, 0, 0, 34, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0, 0, 34, 0, 0, 0,229, 0, 0, 1, 23,
- 0, 0, 0, 34, 0, 0, 1, 1, 0, 0, 1, 23, 0, 0, 0, 34, 0, 0, 0,230, 0, 0, 1, 24, 0, 0, 0, 34, 0, 0, 1, 2,
- 0, 0, 1, 24, 0, 0, 0, 34, 0, 0, 1, 21, 0, 0, 1, 23, 0, 0, 0, 34, 0, 0, 1, 22, 0, 0, 1, 24, 0, 0, 0, 34,
- 0, 0, 0,106, 0, 0, 1, 25, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 1, 25, 0, 0, 0, 38, 0, 0, 0, 65, 0, 0, 0, 71,
- 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 1, 26, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 1, 26, 0, 0, 0, 38, 0, 0, 0,104,
- 0, 0, 1, 27, 0, 0, 0, 34, 0, 0, 1, 25, 0, 0, 1, 27, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 1, 28, 0, 0, 0, 34,
- 0, 0, 1, 26, 0, 0, 1, 28, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 1, 29, 0, 0, 0, 34, 0, 0, 1, 27, 0, 0, 1, 29,
- 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 1, 30, 0, 0, 0, 34, 0, 0, 1, 28, 0, 0, 1, 30, 0, 0, 0, 34, 0, 0, 0,100,
- 0, 0, 1, 31, 0, 0, 0, 34, 0, 0, 1, 29, 0, 0, 1, 31, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 1, 32, 0, 0, 0, 34,
- 0, 0, 1, 30, 0, 0, 1, 32, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 1, 33, 0, 0, 0, 34, 0, 0, 1, 31, 0, 0, 1, 33,
- 0, 0, 0, 38, 0, 0, 0, 99, 0, 0, 1, 34, 0, 0, 0, 34, 0, 0, 1, 32, 0, 0, 1, 34, 0, 0, 0, 38, 0, 0, 0, 96,
- 0, 0, 1, 35, 0, 0, 0, 34, 0, 0, 1, 33, 0, 0, 1, 35, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 1, 36, 0, 0, 0, 34,
- 0, 0, 1, 34, 0, 0, 1, 36, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 1, 37, 0, 0, 0, 34, 0, 0, 1, 35, 0, 0, 1, 37,
- 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 1, 38, 0, 0, 0, 34, 0, 0, 1, 36, 0, 0, 1, 38, 0, 0, 0, 34, 0, 0, 0, 92,
- 0, 0, 1, 39, 0, 0, 0, 34, 0, 0, 1, 37, 0, 0, 1, 39, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 1, 40, 0, 0, 0, 34,
- 0, 0, 1, 38, 0, 0, 1, 40, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 1, 41, 0, 0, 0, 34, 0, 0, 1, 39, 0, 0, 1, 41,
- 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 1, 42, 0, 0, 0, 34, 0, 0, 1, 40, 0, 0, 1, 42, 0, 0, 0, 34, 0, 0, 1, 49,
- 0, 0, 1, 50, 0, 0, 0, 38, 0, 0, 1, 50, 0, 0, 1, 69, 0, 0, 0, 34, 0, 0, 1, 69, 0, 0, 1, 79, 0, 0, 0, 34,
- 0, 0, 1, 49, 0, 0, 1, 79, 0, 0, 0, 34, 0, 0, 1, 50, 0, 0, 1, 70, 0, 0, 0, 34, 0, 0, 1, 49, 0, 0, 1, 80,
- 0, 0, 0, 34, 0, 0, 1, 70, 0, 0, 1, 80, 0, 0, 0, 34, 0, 0, 1, 48, 0, 0, 1, 49, 0, 0, 0, 38, 0, 0, 1, 77,
- 0, 0, 1, 79, 0, 0, 0, 34, 0, 0, 1, 48, 0, 0, 1, 77, 0, 0, 0, 34, 0, 0, 1, 48, 0, 0, 1, 78, 0, 0, 0, 34,
- 0, 0, 1, 78, 0, 0, 1, 80, 0, 0, 0, 34, 0, 0, 1, 47, 0, 0, 1, 48, 0, 0, 0, 38, 0, 0, 1, 77, 0, 0, 1, 81,
- 0, 0, 0, 34, 0, 0, 1, 47, 0, 0, 1, 81, 0, 0, 0, 34, 0, 0, 1, 47, 0, 0, 1, 82, 0, 0, 0, 34, 0, 0, 1, 78,
- 0, 0, 1, 82, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 1, 47, 0, 0, 0, 38, 0, 0, 0, 87, 0, 0, 1, 81, 0, 0, 0, 34,
- 0, 0, 0, 88, 0, 0, 1, 82, 0, 0, 0, 34, 0, 0, 1, 75, 0, 0, 1, 81, 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 1, 75,
- 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 1, 76, 0, 0, 0, 34, 0, 0, 1, 76, 0, 0, 1, 82, 0, 0, 0, 34, 0, 0, 1, 71,
- 0, 0, 1, 75, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 1, 71, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 1, 72, 0, 0, 0, 34,
- 0, 0, 1, 72, 0, 0, 1, 76, 0, 0, 0, 34, 0, 0, 1, 71, 0, 0, 1, 73, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 1, 73,
- 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 1, 74, 0, 0, 0, 34, 0, 0, 1, 72, 0, 0, 1, 74, 0, 0, 0, 34, 0, 0, 1, 71,
- 0, 0, 1, 77, 0, 0, 0, 34, 0, 0, 1, 73, 0, 0, 1, 79, 0, 0, 0, 34, 0, 0, 1, 72, 0, 0, 1, 78, 0, 0, 0, 34,
- 0, 0, 1, 74, 0, 0, 1, 80, 0, 0, 0, 34, 0, 0, 1, 67, 0, 0, 1, 73, 0, 0, 0, 34, 0, 0, 1, 67, 0, 0, 1, 69,
- 0, 0, 0, 34, 0, 0, 1, 68, 0, 0, 1, 74, 0, 0, 0, 34, 0, 0, 1, 68, 0, 0, 1, 70, 0, 0, 0, 34, 0, 0, 0, 79,
- 0, 0, 1, 67, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 1, 68, 0, 0, 0, 34, 0, 0, 0,206, 0, 0, 1, 83, 0, 0, 0, 34,
- 0, 0, 1, 83, 0, 0, 1, 85, 0, 0, 0, 34, 0, 0, 0,212, 0, 0, 1, 85, 0, 0, 0, 34, 0, 0, 1, 84, 0, 0, 1, 86,
- 0, 0, 0, 34, 0, 0, 0,207, 0, 0, 1, 84, 0, 0, 0, 34, 0, 0, 0,213, 0, 0, 1, 86, 0, 0, 0, 34, 0, 0, 1, 67,
- 0, 0, 1, 83, 0, 0, 0, 34, 0, 0, 1, 68, 0, 0, 1, 84, 0, 0, 0, 34, 0, 0, 1, 85, 0, 0, 1, 87, 0, 0, 0, 34,
- 0, 0, 0, 77, 0, 0, 1, 87, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 1, 88, 0, 0, 0, 34, 0, 0, 1, 86, 0, 0, 1, 88,
- 0, 0, 0, 34, 0, 0, 1, 41, 0, 0, 1, 87, 0, 0, 0, 34, 0, 0, 1, 42, 0, 0, 1, 88, 0, 0, 0, 34, 0, 0, 0, 75,
- 0, 0, 1, 65, 0, 0, 0, 34, 0, 0, 1, 65, 0, 0, 1, 93, 0, 0, 0, 34, 0, 0, 1, 45, 0, 0, 1, 93, 0, 0, 0, 39,
- 0, 0, 0, 75, 0, 0, 1, 45, 0, 0, 0, 38, 0, 0, 1, 66, 0, 0, 1, 94, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 1, 66,
- 0, 0, 0, 34, 0, 0, 1, 45, 0, 0, 1, 94, 0, 0, 0, 39, 0, 0, 1, 91, 0, 0, 1, 93, 0, 0, 0, 34, 0, 0, 0, 76,
- 0, 0, 1, 91, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 1, 45, 0, 0, 0, 38, 0, 0, 1, 92, 0, 0, 1, 94, 0, 0, 0, 34,
- 0, 0, 0, 76, 0, 0, 1, 92, 0, 0, 0, 34, 0, 0, 1, 89, 0, 0, 1, 91, 0, 0, 0, 34, 0, 0, 1, 46, 0, 0, 1, 89,
- 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 1, 46, 0, 0, 0, 38, 0, 0, 1, 90, 0, 0, 1, 92, 0, 0, 0, 34, 0, 0, 1, 46,
- 0, 0, 1, 90, 0, 0, 0, 34, 0, 0, 1, 69, 0, 0, 1, 89, 0, 0, 0, 34, 0, 0, 1, 46, 0, 0, 1, 50, 0, 0, 0, 38,
- 0, 0, 1, 70, 0, 0, 1, 90, 0, 0, 0, 34, 0, 0, 1, 83, 0, 0, 1, 89, 0, 0, 0, 34, 0, 0, 1, 84, 0, 0, 1, 90,
- 0, 0, 0, 34, 0, 0, 1, 39, 0, 0, 1, 59, 0, 0, 0, 34, 0, 0, 1, 51, 0, 0, 1, 59, 0, 0, 0, 34, 0, 0, 1, 37,
- 0, 0, 1, 51, 0, 0, 0, 34, 0, 0, 1, 40, 0, 0, 1, 60, 0, 0, 0, 34, 0, 0, 1, 38, 0, 0, 1, 52, 0, 0, 0, 34,
- 0, 0, 1, 52, 0, 0, 1, 60, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 1, 57, 0, 0, 0, 39, 0, 0, 1, 57, 0, 0, 1, 65,
- 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 38, 0, 0, 1, 58, 0, 0, 1, 66, 0, 0, 0, 34, 0, 0, 0, 74,
- 0, 0, 1, 58, 0, 0, 0, 39, 0, 0, 1, 43, 0, 0, 1, 99, 0, 0, 0, 34, 0, 0, 1, 97, 0, 0, 1, 99, 0, 0, 0, 34,
- 0, 0, 1, 44, 0, 0, 1, 97, 0, 0, 0, 34, 0, 0, 1, 43, 0, 0, 1, 44, 0, 0, 0, 38, 0, 0, 1, 98, 0, 0, 1,100,
- 0, 0, 0, 34, 0, 0, 1, 43, 0, 0, 1,100, 0, 0, 0, 34, 0, 0, 1, 44, 0, 0, 1, 98, 0, 0, 0, 34, 0, 0, 1, 95,
- 0, 0, 1, 97, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 1, 95, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 1, 44, 0, 0, 0, 38,
- 0, 0, 1, 96, 0, 0, 1, 98, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 1, 96, 0, 0, 0, 34, 0, 0, 1, 57, 0, 0, 1, 95,
- 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 38, 0, 0, 1, 58, 0, 0, 1, 96, 0, 0, 0, 34, 0, 0, 1, 35,
- 0, 0, 1,103, 0, 0, 0, 34, 0, 0, 1,103, 0, 0, 1,105, 0, 0, 0, 34, 0, 0, 1, 33, 0, 0, 1,105, 0, 0, 0, 34,
- 0, 0, 1, 36, 0, 0, 1,104, 0, 0, 0, 34, 0, 0, 1, 34, 0, 0, 1,106, 0, 0, 0, 34, 0, 0, 1,104, 0, 0, 1,106,
- 0, 0, 0, 34, 0, 0, 1,103, 0, 0, 1,109, 0, 0, 0, 34, 0, 0, 1,107, 0, 0, 1,109, 0, 0, 0, 34, 0, 0, 1,105,
- 0, 0, 1,107, 0, 0, 0, 34, 0, 0, 1,104, 0, 0, 1,110, 0, 0, 0, 34, 0, 0, 1,106, 0, 0, 1,108, 0, 0, 0, 34,
- 0, 0, 1,108, 0, 0, 1,110, 0, 0, 0, 34, 0, 0, 1,109, 0, 0, 1,111, 0, 0, 0, 34, 0, 0, 1,111, 0, 0, 1,113,
- 0, 0, 0, 34, 0, 0, 1,107, 0, 0, 1,113, 0, 0, 0, 34, 0, 0, 1,110, 0, 0, 1,112, 0, 0, 0, 34, 0, 0, 1,108,
- 0, 0, 1,114, 0, 0, 0, 34, 0, 0, 1,112, 0, 0, 1,114, 0, 0, 0, 34, 0, 0, 1,111, 0, 0, 1,117, 0, 0, 0, 34,
- 0, 0, 1,115, 0, 0, 1,117, 0, 0, 0, 34, 0, 0, 1,113, 0, 0, 1,115, 0, 0, 0, 34, 0, 0, 1,112, 0, 0, 1,118,
- 0, 0, 0, 34, 0, 0, 1,114, 0, 0, 1,116, 0, 0, 0, 34, 0, 0, 1,116, 0, 0, 1,118, 0, 0, 0, 34, 0, 0, 1, 55,
- 0, 0, 1,119, 0, 0, 0, 39, 0, 0, 1,115, 0, 0, 1,119, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1,117, 0, 0, 0, 34,
- 0, 0, 1,116, 0, 0, 1,120, 0, 0, 0, 34, 0, 0, 1, 56, 0, 0, 1,120, 0, 0, 0, 39, 0, 0, 1, 56, 0, 0, 1,118,
- 0, 0, 0, 34, 0, 0, 1, 95, 0, 0, 1,115, 0, 0, 0, 34, 0, 0, 1, 57, 0, 0, 1,119, 0, 0, 0, 39, 0, 0, 1, 96,
- 0, 0, 1,116, 0, 0, 0, 34, 0, 0, 1, 58, 0, 0, 1,120, 0, 0, 0, 39, 0, 0, 1, 97, 0, 0, 1,113, 0, 0, 0, 34,
- 0, 0, 1, 98, 0, 0, 1,114, 0, 0, 0, 34, 0, 0, 1, 99, 0, 0, 1,107, 0, 0, 0, 34, 0, 0, 1,100, 0, 0, 1,108,
- 0, 0, 0, 34, 0, 0, 1, 99, 0, 0, 1,101, 0, 0, 0, 34, 0, 0, 1,101, 0, 0, 1,105, 0, 0, 0, 34, 0, 0, 1,102,
- 0, 0, 1,106, 0, 0, 0, 34, 0, 0, 1,100, 0, 0, 1,102, 0, 0, 0, 34, 0, 0, 1, 31, 0, 0, 1,101, 0, 0, 0, 34,
- 0, 0, 1, 32, 0, 0, 1,102, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 1,101, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 1, 43,
- 0, 0, 0, 38, 0, 0, 0, 72, 0, 0, 1,102, 0, 0, 0, 34, 0, 0, 1, 25, 0, 0, 1, 31, 0, 0, 0, 38, 0, 0, 1, 26,
- 0, 0, 1, 32, 0, 0, 0, 38, 0, 0, 0, 72, 0, 0, 1, 25, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 1, 26, 0, 0, 0, 34,
- 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 38, 0, 0, 1, 51, 0, 0, 1,103, 0, 0, 0, 34, 0, 0, 1, 52, 0, 0, 1,104,
- 0, 0, 0, 34, 0, 0, 1, 51, 0, 0, 1, 53, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,109, 0, 0, 0, 34, 0, 0, 1, 54,
- 0, 0, 1,110, 0, 0, 0, 34, 0, 0, 1, 52, 0, 0, 1, 54, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,123, 0, 0, 0, 34,
- 0, 0, 1,111, 0, 0, 1,123, 0, 0, 0, 34, 0, 0, 1,112, 0, 0, 1,124, 0, 0, 0, 34, 0, 0, 1, 54, 0, 0, 1,124,
- 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1,123, 0, 0, 0, 34, 0, 0, 1, 56, 0, 0, 1,124, 0, 0, 0, 34, 0, 0, 1, 91,
- 0, 0, 1,127, 0, 0, 0, 34, 0, 0, 1,125, 0, 0, 1,127, 0, 0, 0, 34, 0, 0, 1, 89, 0, 0, 1,125, 0, 0, 0, 34,
- 0, 0, 1, 92, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 1, 90, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1,126, 0, 0, 1,128,
- 0, 0, 0, 34, 0, 0, 1, 59, 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 61, 0, 0, 1,127, 0, 0, 0, 34, 0, 0, 1, 59,
- 0, 0, 1, 61, 0, 0, 0, 34, 0, 0, 1, 60, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1, 60, 0, 0, 1, 62, 0, 0, 0, 34,
- 0, 0, 1, 62, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 1, 41, 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 42, 0, 0, 1,126,
- 0, 0, 0, 34, 0, 0, 1, 41, 0, 0, 1, 85, 0, 0, 0, 34, 0, 0, 1, 83, 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 42,
- 0, 0, 1, 86, 0, 0, 0, 34, 0, 0, 1, 84, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1, 63, 0, 0, 0, 34,
- 0, 0, 1, 63, 0, 0, 1,121, 0, 0, 0, 39, 0, 0, 1,119, 0, 0, 1,121, 0, 0, 0, 34, 0, 0, 1, 64, 0, 0, 1,122,
- 0, 0, 0, 39, 0, 0, 1, 56, 0, 0, 1, 64, 0, 0, 0, 34, 0, 0, 1,120, 0, 0, 1,122, 0, 0, 0, 34, 0, 0, 1, 65,
- 0, 0, 1,121, 0, 0, 0, 34, 0, 0, 1, 66, 0, 0, 1,122, 0, 0, 0, 34, 0, 0, 1,121, 0, 0, 1,127, 0, 0, 0, 34,
- 0, 0, 1, 61, 0, 0, 1, 63, 0, 0, 0, 34, 0, 0, 1,122, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 1, 62, 0, 0, 1, 64,
- 0, 0, 0, 34, 0, 0, 1, 93, 0, 0, 1,121, 0, 0, 0, 39, 0, 0, 1, 94, 0, 0, 1,122, 0, 0, 0, 39, 0, 0, 1,129,
- 0, 0, 1,141, 0, 0, 0, 34, 0, 0, 1,129, 0, 0, 1,155, 0, 0, 0, 34, 0, 0, 1,143, 0, 0, 1,155, 0, 0, 0, 34,
- 0, 0, 1,141, 0, 0, 1,143, 0, 0, 0, 34, 0, 0, 1,130, 0, 0, 1,156, 0, 0, 0, 34, 0, 0, 1,130, 0, 0, 1,142,
- 0, 0, 0, 34, 0, 0, 1,142, 0, 0, 1,144, 0, 0, 0, 34, 0, 0, 1,144, 0, 0, 1,156, 0, 0, 0, 34, 0, 0, 1,143,
- 0, 0, 1,145, 0, 0, 0, 34, 0, 0, 1,139, 0, 0, 1,145, 0, 0, 0, 34, 0, 0, 1,139, 0, 0, 1,141, 0, 0, 0, 34,
- 0, 0, 1,144, 0, 0, 1,146, 0, 0, 0, 34, 0, 0, 1,140, 0, 0, 1,142, 0, 0, 0, 34, 0, 0, 1,140, 0, 0, 1,146,
- 0, 0, 0, 34, 0, 0, 1,145, 0, 0, 1,147, 0, 0, 0, 34, 0, 0, 1,137, 0, 0, 1,147, 0, 0, 0, 34, 0, 0, 1,137,
- 0, 0, 1,139, 0, 0, 0, 34, 0, 0, 1,146, 0, 0, 1,148, 0, 0, 0, 34, 0, 0, 1,138, 0, 0, 1,140, 0, 0, 0, 34,
- 0, 0, 1,138, 0, 0, 1,148, 0, 0, 0, 34, 0, 0, 1,147, 0, 0, 1,149, 0, 0, 0, 34, 0, 0, 1,135, 0, 0, 1,149,
- 0, 0, 0, 34, 0, 0, 1,135, 0, 0, 1,137, 0, 0, 0, 34, 0, 0, 1,148, 0, 0, 1,150, 0, 0, 0, 34, 0, 0, 1,136,
- 0, 0, 1,138, 0, 0, 0, 34, 0, 0, 1,136, 0, 0, 1,150, 0, 0, 0, 34, 0, 0, 1,149, 0, 0, 1,151, 0, 0, 0, 34,
- 0, 0, 1,133, 0, 0, 1,151, 0, 0, 0, 34, 0, 0, 1,133, 0, 0, 1,135, 0, 0, 0, 34, 0, 0, 1,150, 0, 0, 1,152,
- 0, 0, 0, 34, 0, 0, 1,134, 0, 0, 1,136, 0, 0, 0, 34, 0, 0, 1,134, 0, 0, 1,152, 0, 0, 0, 34, 0, 0, 1,151,
- 0, 0, 1,153, 0, 0, 0, 34, 0, 0, 1,131, 0, 0, 1,153, 0, 0, 0, 34, 0, 0, 1,131, 0, 0, 1,133, 0, 0, 0, 34,
- 0, 0, 1,152, 0, 0, 1,154, 0, 0, 0, 34, 0, 0, 1,132, 0, 0, 1,134, 0, 0, 0, 34, 0, 0, 1,132, 0, 0, 1,154,
- 0, 0, 0, 34, 0, 0, 1,151, 0, 0, 1,161, 0, 0, 0, 34, 0, 0, 1,159, 0, 0, 1,161, 0, 0, 0, 34, 0, 0, 1,153,
- 0, 0, 1,159, 0, 0, 0, 34, 0, 0, 1,160, 0, 0, 1,162, 0, 0, 0, 34, 0, 0, 1,152, 0, 0, 1,162, 0, 0, 0, 34,
- 0, 0, 1,154, 0, 0, 1,160, 0, 0, 0, 34, 0, 0, 1,149, 0, 0, 1,163, 0, 0, 0, 34, 0, 0, 1,161, 0, 0, 1,163,
- 0, 0, 0, 34, 0, 0, 1,162, 0, 0, 1,164, 0, 0, 0, 34, 0, 0, 1,150, 0, 0, 1,164, 0, 0, 0, 34, 0, 0, 1,147,
- 0, 0, 1,165, 0, 0, 0, 34, 0, 0, 1,163, 0, 0, 1,165, 0, 0, 0, 34, 0, 0, 1,164, 0, 0, 1,166, 0, 0, 0, 34,
- 0, 0, 1,148, 0, 0, 1,166, 0, 0, 0, 34, 0, 0, 1,145, 0, 0, 1,167, 0, 0, 0, 34, 0, 0, 1,165, 0, 0, 1,167,
- 0, 0, 0, 34, 0, 0, 1,166, 0, 0, 1,168, 0, 0, 0, 34, 0, 0, 1,146, 0, 0, 1,168, 0, 0, 0, 34, 0, 0, 1,143,
- 0, 0, 1,169, 0, 0, 0, 34, 0, 0, 1,167, 0, 0, 1,169, 0, 0, 0, 34, 0, 0, 1,168, 0, 0, 1,170, 0, 0, 0, 34,
- 0, 0, 1,144, 0, 0, 1,170, 0, 0, 0, 34, 0, 0, 1,155, 0, 0, 1,157, 0, 0, 0, 34, 0, 0, 1,157, 0, 0, 1,169,
- 0, 0, 0, 34, 0, 0, 1,156, 0, 0, 1,158, 0, 0, 0, 34, 0, 0, 1,158, 0, 0, 1,170, 0, 0, 0, 34, 0, 0, 1, 61,
- 0, 0, 1,185, 0, 0, 0, 34, 0, 0, 1,183, 0, 0, 1,185, 0, 0, 0, 34, 0, 0, 1, 59, 0, 0, 1,183, 0, 0, 0, 34,
- 0, 0, 1, 62, 0, 0, 1,186, 0, 0, 0, 34, 0, 0, 1, 60, 0, 0, 1,184, 0, 0, 0, 34, 0, 0, 1,184, 0, 0, 1,186,
- 0, 0, 0, 34, 0, 0, 1, 61, 0, 0, 1,131, 0, 0, 0, 34, 0, 0, 1,153, 0, 0, 1,185, 0, 0, 0, 34, 0, 0, 1, 62,
- 0, 0, 1,132, 0, 0, 0, 34, 0, 0, 1,154, 0, 0, 1,186, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,183, 0, 0, 0, 34,
- 0, 0, 1, 54, 0, 0, 1,184, 0, 0, 0, 34, 0, 0, 1,123, 0, 0, 1,171, 0, 0, 0, 34, 0, 0, 1,155, 0, 0, 1,171,
- 0, 0, 0, 34, 0, 0, 1,123, 0, 0, 1,129, 0, 0, 0, 34, 0, 0, 1,156, 0, 0, 1,172, 0, 0, 0, 34, 0, 0, 1,124,
- 0, 0, 1,172, 0, 0, 0, 34, 0, 0, 1,124, 0, 0, 1,130, 0, 0, 0, 34, 0, 0, 1,159, 0, 0, 1,181, 0, 0, 0, 34,
- 0, 0, 1,181, 0, 0, 1,185, 0, 0, 0, 34, 0, 0, 1,160, 0, 0, 1,182, 0, 0, 0, 34, 0, 0, 1,182, 0, 0, 1,186,
- 0, 0, 0, 34, 0, 0, 1,179, 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,185, 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,179,
- 0, 0, 1,181, 0, 0, 0, 34, 0, 0, 1,186, 0, 0, 1,188, 0, 0, 0, 34, 0, 0, 1,180, 0, 0, 1,188, 0, 0, 0, 34,
- 0, 0, 1,180, 0, 0, 1,182, 0, 0, 0, 34, 0, 0, 1,175, 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,177, 0, 0, 1,179,
- 0, 0, 0, 34, 0, 0, 1,175, 0, 0, 1,177, 0, 0, 0, 34, 0, 0, 1,176, 0, 0, 1,188, 0, 0, 0, 34, 0, 0, 1,176,
- 0, 0, 1,178, 0, 0, 0, 34, 0, 0, 1,178, 0, 0, 1,180, 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,189, 0, 0, 0, 34,
- 0, 0, 1,187, 0, 0, 1,189, 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,175, 0, 0, 0, 34, 0, 0, 1,188, 0, 0, 1,190,
- 0, 0, 0, 34, 0, 0, 1,174, 0, 0, 1,190, 0, 0, 0, 34, 0, 0, 1,174, 0, 0, 1,176, 0, 0, 0, 34, 0, 0, 1,171,
- 0, 0, 1,189, 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,191, 0, 0, 0, 34, 0, 0, 1,171, 0, 0, 1,191, 0, 0, 0, 32,
- 0, 0, 1,172, 0, 0, 1,190, 0, 0, 0, 34, 0, 0, 1,172, 0, 0, 1,192, 0, 0, 0, 32, 0, 0, 1,174, 0, 0, 1,192,
- 0, 0, 0, 34, 0, 0, 1,157, 0, 0, 1,191, 0, 0, 0, 34, 0, 0, 1,158, 0, 0, 1,192, 0, 0, 0, 34, 0, 0, 1, 53,
- 0, 0, 1,189, 0, 0, 0, 34, 0, 0, 1, 54, 0, 0, 1,190, 0, 0, 0, 34, 0, 0, 1,183, 0, 0, 1,187, 0, 0, 0, 34,
- 0, 0, 1,184, 0, 0, 1,188, 0, 0, 0, 34, 0, 0, 1,191, 0, 0, 1,193, 0, 0, 0, 34, 0, 0, 1,193, 0, 0, 1,217,
- 0, 0, 0, 34, 0, 0, 1,157, 0, 0, 1,217, 0, 0, 0, 34, 0, 0, 1,192, 0, 0, 1,194, 0, 0, 0, 34, 0, 0, 1,158,
- 0, 0, 1,218, 0, 0, 0, 34, 0, 0, 1,194, 0, 0, 1,218, 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,203, 0, 0, 0, 34,
- 0, 0, 1,193, 0, 0, 1,203, 0, 0, 0, 34, 0, 0, 1,174, 0, 0, 1,204, 0, 0, 0, 34, 0, 0, 1,194, 0, 0, 1,204,
- 0, 0, 0, 34, 0, 0, 1,175, 0, 0, 1,201, 0, 0, 0, 34, 0, 0, 1,201, 0, 0, 1,203, 0, 0, 0, 34, 0, 0, 1,176,
- 0, 0, 1,202, 0, 0, 0, 34, 0, 0, 1,202, 0, 0, 1,204, 0, 0, 0, 34, 0, 0, 1,177, 0, 0, 1,199, 0, 0, 0, 34,
- 0, 0, 1,199, 0, 0, 1,201, 0, 0, 0, 34, 0, 0, 1,178, 0, 0, 1,200, 0, 0, 0, 34, 0, 0, 1,200, 0, 0, 1,202,
- 0, 0, 0, 34, 0, 0, 1,179, 0, 0, 1,197, 0, 0, 0, 34, 0, 0, 1,197, 0, 0, 1,199, 0, 0, 0, 34, 0, 0, 1,180,
- 0, 0, 1,198, 0, 0, 0, 34, 0, 0, 1,198, 0, 0, 1,200, 0, 0, 0, 34, 0, 0, 1,181, 0, 0, 1,195, 0, 0, 0, 34,
- 0, 0, 1,195, 0, 0, 1,197, 0, 0, 0, 34, 0, 0, 1,182, 0, 0, 1,196, 0, 0, 0, 34, 0, 0, 1,196, 0, 0, 1,198,
- 0, 0, 0, 34, 0, 0, 1,159, 0, 0, 1,215, 0, 0, 0, 34, 0, 0, 1,195, 0, 0, 1,215, 0, 0, 0, 34, 0, 0, 1,160,
- 0, 0, 1,216, 0, 0, 0, 34, 0, 0, 1,196, 0, 0, 1,216, 0, 0, 0, 34, 0, 0, 1,205, 0, 0, 1,217, 0, 0, 0, 34,
- 0, 0, 1,169, 0, 0, 1,205, 0, 0, 0, 34, 0, 0, 1,170, 0, 0, 1,206, 0, 0, 0, 34, 0, 0, 1,206, 0, 0, 1,218,
- 0, 0, 0, 34, 0, 0, 1,205, 0, 0, 1,207, 0, 0, 0, 34, 0, 0, 1,167, 0, 0, 1,207, 0, 0, 0, 34, 0, 0, 1,168,
- 0, 0, 1,208, 0, 0, 0, 34, 0, 0, 1,206, 0, 0, 1,208, 0, 0, 0, 34, 0, 0, 1,207, 0, 0, 1,209, 0, 0, 0, 34,
- 0, 0, 1,165, 0, 0, 1,209, 0, 0, 0, 34, 0, 0, 1,166, 0, 0, 1,210, 0, 0, 0, 34, 0, 0, 1,208, 0, 0, 1,210,
- 0, 0, 0, 34, 0, 0, 1,209, 0, 0, 1,211, 0, 0, 0, 34, 0, 0, 1,163, 0, 0, 1,211, 0, 0, 0, 34, 0, 0, 1,164,
- 0, 0, 1,212, 0, 0, 0, 34, 0, 0, 1,210, 0, 0, 1,212, 0, 0, 0, 34, 0, 0, 1,211, 0, 0, 1,213, 0, 0, 0, 34,
- 0, 0, 1,161, 0, 0, 1,213, 0, 0, 0, 34, 0, 0, 1,162, 0, 0, 1,214, 0, 0, 0, 34, 0, 0, 1,212, 0, 0, 1,214,
- 0, 0, 0, 34, 0, 0, 1,213, 0, 0, 1,215, 0, 0, 0, 34, 0, 0, 1,214, 0, 0, 1,216, 0, 0, 0, 34, 0, 0, 1,197,
- 0, 0, 1,221, 0, 0, 0, 34, 0, 0, 1,219, 0, 0, 1,221, 0, 0, 0, 34, 0, 0, 1,199, 0, 0, 1,219, 0, 0, 0, 34,
- 0, 0, 1,198, 0, 0, 1,222, 0, 0, 0, 34, 0, 0, 1,200, 0, 0, 1,220, 0, 0, 0, 34, 0, 0, 1,220, 0, 0, 1,222,
- 0, 0, 0, 34, 0, 0, 1,221, 0, 0, 1,223, 0, 0, 0, 34, 0, 0, 1,223, 0, 0, 1,225, 0, 0, 0, 32, 0, 0, 1,219,
- 0, 0, 1,225, 0, 0, 0, 34, 0, 0, 1,222, 0, 0, 1,224, 0, 0, 0, 34, 0, 0, 1,220, 0, 0, 1,226, 0, 0, 0, 34,
- 0, 0, 1,224, 0, 0, 1,226, 0, 0, 0, 32, 0, 0, 1,223, 0, 0, 1,229, 0, 0, 0, 34, 0, 0, 1,227, 0, 0, 1,229,
- 0, 0, 0, 34, 0, 0, 1,225, 0, 0, 1,227, 0, 0, 0, 34, 0, 0, 1,224, 0, 0, 1,230, 0, 0, 0, 34, 0, 0, 1,226,
- 0, 0, 1,228, 0, 0, 0, 34, 0, 0, 1,228, 0, 0, 1,230, 0, 0, 0, 34, 0, 0, 1,229, 0, 0, 1,231, 0, 0, 0, 34,
- 0, 0, 1,231, 0, 0, 1,233, 0, 0, 0, 34, 0, 0, 1,227, 0, 0, 1,233, 0, 0, 0, 34, 0, 0, 1,230, 0, 0, 1,232,
- 0, 0, 0, 34, 0, 0, 1,228, 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,232, 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,217,
- 0, 0, 1,227, 0, 0, 0, 34, 0, 0, 1,205, 0, 0, 1,233, 0, 0, 0, 34, 0, 0, 1,218, 0, 0, 1,228, 0, 0, 0, 34,
- 0, 0, 1,206, 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,193, 0, 0, 1,225, 0, 0, 0, 34, 0, 0, 1,194, 0, 0, 1,226,
- 0, 0, 0, 34, 0, 0, 1,203, 0, 0, 1,219, 0, 0, 0, 34, 0, 0, 1,204, 0, 0, 1,220, 0, 0, 0, 34, 0, 0, 1,215,
- 0, 0, 1,221, 0, 0, 0, 34, 0, 0, 1,216, 0, 0, 1,222, 0, 0, 0, 34, 0, 0, 1,213, 0, 0, 1,223, 0, 0, 0, 34,
- 0, 0, 1,214, 0, 0, 1,224, 0, 0, 0, 34, 0, 0, 1,211, 0, 0, 1,229, 0, 0, 0, 34, 0, 0, 1,212, 0, 0, 1,230,
- 0, 0, 0, 34, 0, 0, 1,209, 0, 0, 1,231, 0, 0, 0, 34, 0, 0, 1,210, 0, 0, 1,232, 0, 0, 0, 34, 0, 0, 1,207,
- 0, 0, 1,233, 0, 0, 0, 34, 0, 0, 1,208, 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,131, 0, 0, 1,245, 0, 0, 0, 34,
- 0, 0, 1,243, 0, 0, 1,245, 0, 0, 0, 39, 0, 0, 1,133, 0, 0, 1,243, 0, 0, 0, 34, 0, 0, 1,132, 0, 0, 1,246,
- 0, 0, 0, 34, 0, 0, 1,134, 0, 0, 1,244, 0, 0, 0, 34, 0, 0, 1,244, 0, 0, 1,246, 0, 0, 0, 39, 0, 0, 1,241,
- 0, 0, 1,243, 0, 0, 0, 39, 0, 0, 1,135, 0, 0, 1,241, 0, 0, 0, 34, 0, 0, 1,136, 0, 0, 1,242, 0, 0, 0, 34,
- 0, 0, 1,242, 0, 0, 1,244, 0, 0, 0, 39, 0, 0, 1,239, 0, 0, 1,241, 0, 0, 0, 39, 0, 0, 1,137, 0, 0, 1,239,
- 0, 0, 0, 34, 0, 0, 1,138, 0, 0, 1,240, 0, 0, 0, 34, 0, 0, 1,240, 0, 0, 1,242, 0, 0, 0, 39, 0, 0, 1,237,
- 0, 0, 1,239, 0, 0, 0, 39, 0, 0, 1,139, 0, 0, 1,237, 0, 0, 0, 34, 0, 0, 1,140, 0, 0, 1,238, 0, 0, 0, 34,
- 0, 0, 1,238, 0, 0, 1,240, 0, 0, 0, 39, 0, 0, 1,235, 0, 0, 1,237, 0, 0, 0, 39, 0, 0, 1,141, 0, 0, 1,235,
- 0, 0, 0, 34, 0, 0, 1,142, 0, 0, 1,236, 0, 0, 0, 34, 0, 0, 1,236, 0, 0, 1,238, 0, 0, 0, 39, 0, 0, 1,235,
- 0, 0, 1,247, 0, 0, 0, 39, 0, 0, 1,129, 0, 0, 1,247, 0, 0, 0, 34, 0, 0, 1,130, 0, 0, 1,248, 0, 0, 0, 34,
- 0, 0, 1,236, 0, 0, 1,248, 0, 0, 0, 39, 0, 0, 1,235, 0, 0, 1,243, 0, 0, 0, 34, 0, 0, 1,245, 0, 0, 1,247,
- 0, 0, 0, 34, 0, 0, 1,236, 0, 0, 1,244, 0, 0, 0, 34, 0, 0, 1,246, 0, 0, 1,248, 0, 0, 0, 34, 0, 0, 1,237,
- 0, 0, 1,241, 0, 0, 0, 34, 0, 0, 1,238, 0, 0, 1,242, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1,247, 0, 0, 0, 39,
- 0, 0, 1, 56, 0, 0, 1,248, 0, 0, 0, 39, 0, 0, 1, 63, 0, 0, 1,245, 0, 0, 0, 39, 0, 0, 1, 64, 0, 0, 1,246,
- 0, 0, 0, 39, 0, 0, 0, 14, 0, 0, 0,249, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0,178, 0, 0, 0, 34, 0, 0, 0, 14,
- 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0,112, 0, 0, 0, 34,
- 0, 0, 0, 16, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0,112,
- 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,108,112, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,160,128, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,117,208, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7,160,168, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 39, 16, 7,160,128, 32, 0, 0, 0, 54, 0, 0, 1,244, 0, 0, 0, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 32, 8,194,104,192, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 1, 16, 8,194,105, 16, 0, 0, 0, 38,
+ 0, 0, 0, 1, 8,194,106,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69,112,114,101,118,105,101,119, 0,101,120,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 64,160, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0,
+ 64, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 60,204,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,106, 80, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 32, 8,194,106, 80,
+ 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 1, 16, 8,194,106,160, 0, 0, 0, 38, 0, 0, 0, 1, 0, 0, 0, 0,
+ 8,194,105, 16, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69,102, 97,107,101,115,104, 97,100,111,119, 0, 0, 76,101,110,100, 0,101,
+120, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,128, 0, 0, 64,160, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 40, 0, 5, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 60,204,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,107,224, 0, 0, 0, 52, 0, 0, 0, 1,
+ 8,194,113,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,109, 32, 3,161,214, 32, 7,247,144, 32, 0, 0, 0, 0, 3,161,118, 32, 3,161,166, 32,
+ 0, 0, 0, 0, 3,161,254, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,109, 80, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,110,208, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,112, 80, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,249,
+ 0, 0, 3,237, 0, 0, 1,244, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 61, 88,133,192,189, 85, 45,184,190, 24,181,196,
+ 63, 35, 71,185, 62,235, 31,153, 62,203,102,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,194,109, 32, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 94, 32, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,109, 80, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,161,118, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 47, 88,
+ 3,161,118, 32, 0, 0, 0, 58, 0, 0, 1,249, 62,131,144,140, 60,200,163,119, 62, 85, 9,156, 92,125,170, 70, 21,228, 0,255,
+ 0, 0, 0, 0,190, 26,222, 50, 60,200,163,119, 62, 85, 9,156,163,131,170, 70, 21,228, 0,255, 0, 0, 0, 0, 62,146,126, 61,
+188, 8, 37,223, 62, 47,183, 99, 76,247,194,191, 81,228, 2,255, 0, 0, 0, 0,190, 56,185,147,188, 8, 37,223, 62, 47,183, 99,
+179, 9,194,191, 81,228, 2,255, 0, 0, 0, 0, 62,157,176,129,188,217, 91,211, 61,246,238,244, 84, 31,181,226, 61,191, 2,255,
+ 0, 0, 0, 0,190, 79, 30, 28,188,217, 91,211, 61,246,238,244,171,225,181,226, 61,191, 2,255, 0, 0, 0, 0, 62, 94, 19,115,
+189,128,251,103, 62, 14, 32,150, 9,241,144,155, 62, 64, 2,255, 0, 0, 0, 0,189,227,161, 26,189,128,251,103, 62, 14, 32,150,
+246, 15,144,155, 62, 64, 2,255, 0, 0, 0, 0, 62, 94, 19,115,189, 25,118,251, 62, 62,165, 20, 14,184,163,144, 87, 76, 2,255,
+ 0, 0, 0, 0,189,227,161, 26,189, 25,118,251, 62, 62,165, 20,241, 72,163,144, 87, 76, 2,255, 0, 0, 0, 0, 62, 94, 19,115,
+ 60, 34,107,232, 62, 92,128,116, 3, 3,131,121, 29,110, 0,255, 0, 0, 0, 0,189,227,161, 26, 60, 34,107,232, 62, 92,128,116,
+252,253,131,121, 29,110, 0,255, 0, 0, 0, 0, 62, 56,193, 58, 60,200,163,119, 62, 99,247, 77,171, 56,167,117, 36,206, 0,255,
+ 0, 0, 0, 0,189,152,252,168, 60,200,163,119, 62, 99,247, 77, 84,200,167,117, 36,206, 0,255, 0, 0, 0, 0, 62, 23, 42,109,
+188, 8, 37,223, 62, 73,215, 88,217,152,203,122,110, 56, 0,255, 0, 0, 0, 0, 62, 0,197,229,188,217, 91,211, 62, 29, 14, 71,
+184,179,175, 93, 69, 66, 2,255, 0, 0, 0, 0,188,164, 23,249,188,217, 91,211, 62, 29, 14, 71, 71, 77,175, 93, 69, 66, 2,255,
+ 0, 0, 0, 0, 61,182,231, 88, 61,121,154,159, 62, 32,201,179,151,181,255,104, 74, 51, 2,255, 0, 0, 0, 0, 60,134,121,207,
+ 61,121,154,159, 62, 32,201,179,104, 75,255,104, 74, 51, 2,255, 0, 0, 0, 0, 61,242,158, 25, 61,121,154,159, 62, 73,215, 88,
+171, 78,255,150, 95,246, 2,255, 0, 0, 0, 0,188, 80,194,110, 61,121,154,159, 62, 73,215, 88, 84,178,255,150, 95,246, 2,255,
+ 0, 0, 0, 0, 62, 41,211,138, 61,121,154,159, 62, 99,247, 77,133,152,254,153, 37, 98, 0,255, 0, 0, 0, 0,189,118, 66,143,
+ 61,121,154,159, 62, 99,247, 77,122,104,254,153, 37, 98, 0,255, 0, 0, 0, 0, 62, 56,193, 58, 61,206,232,154, 62, 99,247, 77,
+170, 24, 88, 13, 35, 89, 0,255, 0, 0, 0, 0,189,152,252,168, 61,206,232,154, 62, 99,247, 77, 85,232, 88, 13, 35, 89, 0,255,
+ 0, 0, 0, 0, 62, 23, 42,109, 62, 5, 79,173, 62, 73,215, 88,200,249, 65,221, 94,244, 2,255, 0, 0, 0, 0,189, 43,158, 31,
+ 62, 5, 79,173, 62, 73,215, 88, 55, 7, 65,221, 94,244, 2,255, 0, 0, 0, 0, 62, 0,197,229, 62, 27,180, 54, 62, 29, 14, 71,
+186, 51, 78, 86, 73, 78, 2,255, 0, 0, 0, 0,188,164, 23,249, 62, 27,180, 54, 62, 29, 14, 71, 69,205, 78, 86, 73, 78, 2,255,
+ 0, 0, 0, 0, 62, 94, 19,115, 62, 65, 6,111, 62, 14, 32,150, 11, 2,107,152, 68,114, 2,255, 0, 0, 0, 0,189,227,161, 26,
+ 62, 65, 6,111, 62, 14, 32,150,244,254,107,152, 68,114, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 62, 35, 43, 14, 62, 62,165, 20,
+ 14,201, 91,180, 88, 14, 2,255, 0, 0, 0, 0,189,227,161, 26, 62, 35, 43, 14, 62, 62,165, 20,241, 55, 91,180, 88, 14, 2,255,
+ 0, 0, 0, 0, 62, 94, 19,115, 61,236,195,250, 62, 92,128,116, 2,134,125, 29, 26,228, 0,255, 0, 0, 0, 0,189,227,161, 26,
+ 61,236,195,250, 62, 92,128,116,253,122,125, 29, 26,228, 0,255, 0, 0, 0, 0, 62,131,144,140, 61,206,232,154, 62, 85, 9,156,
+ 93, 54, 85, 67, 20,154, 0,255, 0, 0, 0, 0,190, 26,222, 50, 61,206,232,154, 62, 85, 9,156,162,202, 85, 67, 20,154, 0,255,
+ 0, 0, 0, 0, 62,146,126, 61, 62, 5, 79,173, 62, 47,183, 99, 76,241, 60,161, 82, 97, 2,255, 0, 0, 0, 0,190, 56,185,147,
+ 62, 5, 79,173, 62, 47,183, 99,179, 15, 60,161, 82, 97, 2,255, 0, 0, 0, 0, 62,157,176,129, 62, 27,180, 54, 61,246,238,244,
+ 83,179, 71,157, 65, 45, 2,255, 0, 0, 0, 0,190, 79, 30, 28, 62, 27,180, 54, 61,246,238,244,172, 77, 71,157, 65, 45, 2,255,
+ 0, 0, 0, 0, 62,176, 89,157, 61,121,154,159, 61,232, 1, 67,111, 40,255,113, 63,117, 2,255, 0, 0, 0, 0,190,116,112, 84,
+ 61,121,154,159, 61,232, 1, 67,144,216,255,113, 63,117, 2,255, 0, 0, 0, 0, 62,161,107,237, 61,121,154,159, 62, 40, 64,139,
+100, 48,255,154, 79,167, 2,255, 0, 0, 0, 0,190, 86,148,244, 61,121,154,159, 62, 40, 64,139,155,208,255,154, 79,167, 2,255,
+ 0, 0, 0, 0, 62,139, 7,100, 61,121,154,159, 62, 81, 78, 48,126,117,254,181, 19,185, 0,255, 0, 0, 0, 0,190, 41,203,227,
+ 61,121,154,159, 62, 81, 78, 48,129,139,254,181, 19,185, 0,255, 0, 0, 0, 0, 62,140,229, 26, 61,121,154,159, 62, 88,197, 8,
+120,160,254,106, 42,198, 2,255, 0, 0, 0, 0,190, 45,135, 79, 61,121,154,159, 62, 88,197, 8,135, 96,254,106, 42,198, 2,255,
+ 0, 0, 0, 0, 62,133,110, 66, 61,214, 95,114, 62, 92,128,116, 93,173, 74,126, 45, 93, 2,255, 0, 0, 0, 0,190, 30,153,158,
+ 61,214, 95,114, 62, 92,128,116,162, 83, 74,126, 45, 93, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 61,251,177,170, 62,103,178,185,
+ 11, 9,115, 31, 54,216, 2,255, 0, 0, 0, 0,189,227,161, 26, 61,251,177,170, 62,103,178,185,244,247,115, 31, 54,216, 2,255,
+ 0, 0, 0, 0, 62, 53, 5,206, 61,214, 95,114, 62,111, 41,145,181, 9, 80,184, 65, 43, 2,255, 0, 0, 0, 0,189,145,133,208,
+ 61,214, 95,114, 62,111, 41,145, 74,247, 80,184, 65, 43, 2,255, 0, 0, 0, 0, 62, 34, 92,178, 61,121,154,159, 62,111, 41,145,
+146,116,254, 57, 66, 43, 2,255, 0, 0, 0, 0,189, 88,103, 48, 61,121,154,159, 62,111, 41,145,109,140,254, 57, 66, 43, 2,255,
+ 0, 0, 0, 0, 62, 53, 5,206, 60,170,200, 22, 62,111, 41,145,182, 34,173,181, 64,115, 2,255, 0, 0, 0, 0,189,145,133,208,
+ 60,170,200, 22, 62,111, 41,145, 73,222,173,181, 64,115, 2,255, 0, 0, 0, 0, 62, 94, 19,115, 61,121,154,159, 62,114,228,253,
+ 24, 74,255,139,125,171, 2,255, 0, 0, 0, 0,189,227,161, 26, 61,121,154,159, 62,114,228,253,231,182,255,139,125,171, 2,255,
+ 0, 0, 0, 0, 62, 94, 19,115, 59, 43,249,149, 62,103,178,185, 10,218,140,140, 54, 45, 2,255, 0, 0, 0, 0,189,227,161, 26,
+ 59, 43,249,149, 62,103,178,185,245, 38,140,140, 54, 45, 2,255, 0, 0, 0, 0, 62,133,110, 66, 60,170,200, 22, 62, 92,128,116,
+ 92,141,179,203, 44,210, 2,255, 0, 0, 0, 0,190, 30,153,158, 60,170,200, 22, 62, 92,128,116,163,115,179,203, 44,210, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203, 62, 23,248,202, 62, 73,215, 88, 0, 0,124, 43, 31, 17, 0,255, 0, 0, 0, 0, 61, 88,133,203,
+ 61,229, 77, 34, 62,111, 41,145, 0, 0,249, 63,127,209, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,188,254,150, 62, 70, 27,236,
+ 0, 0,251,204,127,237, 0,255, 0, 0, 0, 0, 61, 88,133,203,190, 78, 79,191, 62, 92,128,116, 0, 0,150, 33, 71,238, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203,190, 14,221,146, 62, 99,247, 77, 0, 0,100, 28, 79,192, 0,255, 0, 0, 0, 0, 61, 88,133,203,
+190,211, 99, 30, 62, 62,165, 20, 0, 0,142,184, 59,147, 2,255, 0, 0, 0, 0, 61, 88,133,203, 62, 12,198,133, 62, 6,169,190,
+ 0, 0,103,143, 75, 57, 0,255, 0, 0, 0, 0, 61, 88,133,203, 62, 91, 38, 99, 61,239,120, 28, 0, 0, 78,115,101, 34, 0,255,
+ 0, 0, 0, 0, 61, 88,133,203, 62,187,243, 16,190,206,250,170, 0, 0,110,190,191,212, 2,255, 0, 0, 0, 0, 61, 88,133,203,
+ 62, 87,106,247,191, 11,224,178, 0, 0, 35,144,133, 12, 3,255, 0, 0, 0, 0, 61, 88,133,203,188,157,165, 18,191, 9, 20, 33,
+ 0, 0,214,194,134,213, 2,255, 0, 0, 0, 0, 61, 88,133,203,190,108, 43, 32,190,160, 83,227, 0, 0,134,154,215,113, 2,255,
+ 0, 0, 0, 0, 62, 23, 42,109,190, 14,221,146, 61,232, 1, 67,113,144,198,122, 13, 79, 0,255, 0, 0, 0, 0,189, 43,158, 31,
+190, 14,221,146, 61,232, 1, 67,142,112,198,122, 13, 79, 0,255, 0, 0, 0, 0, 62, 75,106, 87,190,131, 37,138, 61,239,120, 28,
+122,196, 31, 19, 18,152, 2,255, 0, 0, 0, 0,189,190, 78,225,190,131, 37,138, 61,239,120, 28,133, 60, 31, 19, 18,152, 2,255,
+ 0, 0, 0, 0, 62, 94, 19,115,190,192,186, 2, 61,239,120, 28,125,167, 12,146, 20,226, 0,255, 0, 0, 0, 0,189,227,161, 26,
+190,192,186, 2, 61,239,120, 28,130, 89, 12,146, 20,226, 0,255, 0, 0, 0, 0, 62,101,138, 75,190,239, 96,200, 61,202, 37,227,
+124,113,242,142, 26,196, 2,255, 0, 0, 0, 0,189,242,142,203,190,239, 96,200, 61,202, 37,227,131,143,242,142, 26,196, 2,255,
+ 0, 0, 0, 0, 62, 82,225, 47,190,252,112,195, 61,194,175, 10, 79,159,159, 44, 25,210, 2,255, 0, 0, 0, 0,189,205, 60,146,
+190,252,112,195, 61,194,175, 10,176, 97,159, 44, 25,210, 2,255, 0, 0, 0, 0, 62, 11,248, 41,191, 1, 4,242, 61,224,138,107,
+ 19,143,131, 13, 19,178, 2,255, 0, 0, 0, 0,188,253,170, 27,191, 1, 4,242, 61,224,138,107,236,113,131, 13, 19,178, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203,191, 2,226,168, 61,246,238,244, 0, 0,130, 75, 24, 21, 2,255, 0, 0, 0, 0, 62,131,144,140,
+189,240,242, 18, 61,202, 37,227, 47,114,137,117, 8,232, 2,255, 0, 0, 0, 0,190, 26,222, 50,189,240,242, 18, 61,202, 37,227,
+208,142,137,117, 8,232, 2,255, 0, 0, 0, 0, 62,178, 55, 83,189,143,233, 23, 61,209,156,187, 77, 25,154,198, 13,214, 2,255,
+ 0, 0, 0, 0,190,120, 43,193,189,143,233, 23, 61,209,156,187,178,231,154,198, 13,214, 2,255, 0, 0, 0, 0, 62,224,222, 26,
+ 60,140,236,182, 61,112, 21, 49,113,216,198,247, 12,255, 2,255, 0, 0, 0, 0,190,170,188,167, 60,140,236,182, 61,112, 21, 49,
+142, 40,198,247, 12,255, 2,255, 0, 0, 0, 0, 62,232, 84,243, 62, 23,248,202, 62, 2,238, 82,113,104, 51, 31, 30, 32, 2,255,
+ 0, 0, 0, 0,190,178, 51,128, 62, 23,248,202, 62, 2,238, 82,142,152, 51, 31, 30, 32, 2,255, 0, 0, 0, 0, 62,196,224,112,
+ 62, 50, 24,190, 62, 17,220, 2, 64,216,106,225, 27,121, 0,255, 0, 0, 0, 0,190,142,190,253, 62, 50, 24,190, 62, 17,220, 2,
+191, 40,106,225, 27,121, 0,255, 0, 0, 0, 0, 62,144,160,134, 62,106, 20, 20, 62, 47,183, 99, 75,137,101, 82, 20, 70, 0,255,
+ 0, 0, 0, 0,190, 52,254, 39, 62,106, 20, 20, 62, 47,183, 99,180,119,101, 82, 20, 70, 0,255, 0, 0, 0, 0, 62, 79, 37,195,
+ 62,154, 92, 67, 62, 70, 27,236, 38,241,119, 19, 26, 54, 2,255, 0, 0, 0, 0,189,197,197,186, 62,154, 92, 67, 62, 70, 27,236,
+217, 15,119, 19, 26, 54, 2,255, 0, 0, 0, 0, 62, 0,197,229, 62,145, 7,181, 62, 81, 78, 48,175, 21, 96, 54, 24, 12, 2,255,
+ 0, 0, 0, 0,188,164, 23,249, 62,145, 7,181, 62, 81, 78, 48, 80,235, 96, 54, 24, 12, 2,255, 0, 0, 0, 0, 61,167,249,168,
+ 62, 53,212, 42, 62, 77,146,196,155,174, 76,128, 21,151, 0,255, 0, 0, 0, 0, 60,194, 48,144, 62, 53,212, 42, 62, 77,146,196,
+100, 82, 76,128, 21,151, 0,255, 0, 0, 0, 0, 62, 4,129, 81, 62, 16,129,241, 62, 88,197, 8, 25, 0,237, 4,124, 22, 0,255,
+ 0, 0, 0, 0,188,193,243, 89, 62, 16,129,241, 62, 88,197, 8,231, 0,237, 4,124, 22, 0,255, 0, 0, 0, 0, 61,227,176,105,
+ 61,184,132, 17, 62, 85, 9,156,255,160,232,126,125,209, 0,255, 0, 0, 0, 0,187,178,169,214, 61,184,132, 17, 62, 85, 9,156,
+ 0, 96,232,126,125,209, 0,255, 0, 0, 0, 0,189, 43,158, 31,188, 8, 37,223, 62, 73,215, 88, 38,104,203,122,110, 56, 0,255,
+ 0, 0, 0, 0, 62,105, 69,184,189, 55, 82, 92, 62, 55, 46, 59, 34,106,200,119,110, 16, 0,255, 0, 0, 0, 0,189,250, 5,163,
+189, 55, 82, 92, 62, 55, 46, 59,221,150,200,119,110, 16, 0,255, 0, 0, 0, 0, 62,144,160,134,188,187,128,115, 62, 40, 64,139,
+ 55,161,207, 60,104,115, 0,255, 0, 0, 0, 0,190, 52,254, 39,188,187,128,115, 62, 40, 64,139,200, 95,207, 60,104,115, 0,255,
+ 0, 0, 0, 0, 62,176, 89,157, 61, 17, 26,205, 62, 29, 14, 71, 58,181,226,123,109,214, 0,255, 0, 0, 0, 0,190,116,112, 84,
+ 61, 17, 26,205, 62, 29, 14, 71,197, 75,226,123,109,214, 0,255, 0, 0, 0, 0, 62,180, 21, 9, 61,177, 13, 57, 62, 29, 14, 71,
+ 49,157,230, 61,115, 36, 0,255, 0, 0, 0, 0,190,123,231, 45, 61,177, 13, 57, 62, 29, 14, 71,206, 99,230, 61,115, 36, 0,255,
+ 0, 0, 0, 0, 62,170,192,123, 61,251,177,170, 62, 36,133, 31, 39,206,234,175,119,196, 0,255, 0, 0, 0, 0,190,105, 62, 16,
+ 61,251,177,170, 62, 36,133, 31,216, 50,234,175,119,196, 0,255, 0, 0, 0, 0, 62,129,178,214, 62, 27,180, 54, 62, 62,165, 20,
+ 24, 62,255, 85,125,173, 0,255, 0, 0, 0, 0,190, 23, 34,198, 62, 27,180, 54, 62, 62,165, 20,231,194,255, 85,125,173, 0,255,
+ 0, 0, 0, 0, 62, 45,142,246, 62, 42,161,230, 62, 81, 78, 48, 31,251,247, 40,123,158, 0,255, 0, 0, 0, 0,189,130,152, 32,
+ 62, 42,161,230, 62, 81, 78, 48,224, 5,247, 40,123,158, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,209,133,104, 62, 70, 27,236,
+ 0, 0,210,148,119,170, 0,255, 0, 0, 0, 0, 61,212,194,185,190,198, 83, 36, 62, 70, 27,236, 19, 39,222, 65,121,248, 0,255,
+ 0, 0, 0, 0, 58,240,196,191,190,198, 83, 36, 62, 70, 27,236,236,217,222, 65,121,248, 0,255, 0, 0, 0, 0, 61,220, 57,145,
+190,226, 80,207, 62, 58,233,167, 2,134,217,132,122, 12, 0,255, 0, 0, 0, 0,186,236,241, 77,190,226, 80,207, 62, 58,233,167,
+253,122,217,132,122, 12, 0,255, 0, 0, 0, 0, 61,167,249,168,190,237,131, 19, 62, 51,114,207,252, 13,214,169,121, 18, 0,255,
+ 0, 0, 0, 0, 60,194, 48,144,190,237,131, 19, 62, 51,114,207, 3,243,214,169,121, 18, 0,255, 0, 0, 0, 0, 61, 88,133,203,
+190,239, 96,200, 62, 47,183, 99, 0, 0,219,150,122,180, 0,255, 0, 0, 0, 0, 61, 88,133,203,190, 18,152,254, 62, 77,146,196,
+ 0, 0, 97, 46, 83, 76, 0,255, 0, 0, 0, 0, 61, 88,133,203,189,240,242, 18, 62, 73,215, 88, 0, 0,104,197, 73,134, 0,255,
+ 0, 0, 0, 0, 61,205, 75,225,189,248,104,235, 62, 73,215, 88, 36, 52, 53, 2,110,187, 0,255, 0, 0, 0, 0, 59,179,158,179,
+189,248,104,235, 62, 73,215, 88,219,204, 53, 2,110,187, 0,255, 0, 0, 0, 0, 61,227,176,105,190, 33,134,174, 62, 77,146,196,
+ 95,187,212, 14, 72,182, 0,255, 0, 0, 0, 0,187,178,169,214,190, 33,134,174, 62, 77,146,196,160, 69,212, 14, 72,182, 0,255,
+ 0, 0, 0, 0, 61,190, 94, 48,190, 63, 98, 15, 62, 73,215, 88, 64,117,207,117, 99, 90, 0,255, 0, 0, 0, 0, 60, 81, 60,220,
+190, 63, 98, 15, 62, 73,215, 88,191,139,207,117, 99, 90, 0,255, 0, 0, 0, 0, 62,116,119,252,189,151, 95,239, 62, 40, 64,139,
+ 49,103,196,157,102, 13, 0,255, 0, 0, 0, 0,190, 8, 53, 22,189,151, 95,239, 62, 40, 64,139,206,153,196,157,102, 13, 0,255,
+ 0, 0, 0, 0, 62,174,123,231,188,217, 91,211, 62, 17,220, 2, 59,142,204,107,100,223, 2,255, 0, 0, 0, 0,190,112,180,232,
+188,217, 91,211, 62, 17,220, 2,196,114,204,107,100,223, 2,255, 0, 0, 0, 0, 62,200,155,220, 61, 46,246, 45, 62, 6,169,190,
+ 66,102,217, 11,102, 65, 0,255, 0, 0, 0, 0,190,146,122,105, 61, 46,246, 45, 62, 6,169,190,189,154,217, 11,102, 65, 0,255,
+ 0, 0, 0, 0, 62,204, 87, 72, 61,251,177,170, 62, 32,201,179, 54, 87,228,142,112,151, 0,255, 0, 0, 0, 0,190,150, 53,213,
+ 61,251,177,170, 62, 32,201,179,201,169,228,142,112,151, 0,255, 0, 0, 0, 0, 62,191, 71, 78, 62, 16,129,241, 62, 66, 96,128,
+ 42, 82,247, 97,120,125, 2,255, 0, 0, 0, 0,190,137, 37,219, 62, 16,129,241, 62, 66, 96,128,213,174,247, 97,120,125, 2,255,
+ 0, 0, 0, 0, 62,131,144,140, 62, 79,244, 31, 62, 99,247, 77, 41,192,254,216,120,253, 0,255, 0, 0, 0, 0,190, 26,222, 50,
+ 62, 79,244, 31, 62, 99,247, 77,214, 64,254,216,120,253, 0,255, 0, 0, 0, 0, 62, 75,106, 87, 62,124,189, 48, 62,118,160,105,
+ 28,217, 7, 53,124,126, 0,255, 0, 0, 0, 0,189,190, 78,225, 62,124,189, 48, 62,118,160,105,227, 39, 7, 53,124,126, 0,255,
+ 0, 0, 0, 0, 62, 23, 42,109, 62,113,138,236, 62,126, 23, 65,255,125, 5, 44,127,227, 0,255, 0, 0, 0, 0,189, 43,158, 31,
+ 62,113,138,236, 62,126, 23, 65, 0,131, 5, 44,127,227, 0,255, 0, 0, 0, 0, 61,205, 75,225, 62, 23,248,202, 62,122, 91,213,
+238,130, 2, 89,126,197, 0,255, 0, 0, 0, 0, 59,179,158,179, 62, 23,248,202, 62,122, 91,213, 17,126, 2, 89,126,197, 0,255,
+ 0, 0, 0, 0, 61,227,176,105,189,203,159,217, 62,107,110, 37, 23,115,230, 27,123, 34, 0,255, 0, 0, 0, 0,187,178,169,214,
+189,203,159,217, 62,107,110, 37,232,141,230, 27,123, 34, 0,255, 0, 0, 0, 0, 62, 26,229,218,190,133, 3, 64, 62, 58,233,167,
+ 74,212, 14, 28,102,225, 2,255, 0, 0, 0, 0,189, 58,139,207,190,133, 3, 64, 62, 58,233,167,181, 44, 14, 28,102,225, 2,255,
+ 0, 0, 0, 0, 62, 45,142,246,190,194,151,184, 62, 47,183, 99, 72,235,252, 17,105, 31, 2,255, 0, 0, 0, 0,189,130,152, 32,
+190,194,151,184, 62, 47,183, 99,183, 21,252, 17,105, 31, 2,255, 0, 0, 0, 0, 62, 53, 5,206,190,222,149, 99, 62, 36,133, 31,
+ 66,179,225,197,104,249, 2,255, 0, 0, 0, 0,189,145,133,208,190,222,149, 99, 62, 36,133, 31,189, 77,225,197,104,249, 2,255,
+ 0, 0, 0, 0, 62, 38, 24, 30,190,244,249,234, 62, 21,151,111, 44, 62,183, 4, 95, 98, 2,255, 0, 0, 0, 0,189,103, 84,224,
+190,244,249,234, 62, 21,151,111,211,194,183, 4, 95, 98, 2,255, 0, 0, 0, 0, 62, 4,129, 81,190,248,181, 86, 62, 21,151,111,
+ 19,155,158, 52, 80, 54, 2,255, 0, 0, 0, 0,188,193,243, 89,190,248,181, 86, 62, 21,151,111,236,101,158, 52, 80, 54, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203,190,252,112,195, 62, 25, 82,219, 0, 0,154,201, 78, 88, 2,255, 0, 0, 0, 0, 61, 88,133,203,
+188,247, 55, 52, 62, 66, 96,128, 0, 0,252, 2,127,239, 0,255, 0, 0, 0, 0, 61, 88,133,203, 61, 61,227,222, 62, 85, 9,156,
+ 0, 0,227,112,124,196, 0,255, 0, 0, 0, 0, 62, 82,225, 47, 62, 46, 93, 82, 62, 73,215, 88, 21, 58,254,234,126, 56, 0,255,
+ 0, 0, 0, 0,189,205, 60,146, 62, 46, 93, 82, 62, 73,215, 88,234,198,254,234,126, 56, 0,255, 0, 0, 0, 0, 62, 4,129, 81,
+ 60, 94, 34,170, 62, 77,146,196,214, 37,232,110,118,163, 0,255, 0, 0, 0, 0,188,193,243, 89, 60, 94, 34,170, 62, 77,146,196,
+ 41,219,232,110,118,163, 0,255, 0, 0, 0, 0, 61,235, 39, 65, 61, 61,227,222, 62, 81, 78, 48,232,150,230,127,123, 57, 0,255,
+ 0, 0, 0, 0,188, 21, 11,173, 61, 61,227,222, 62, 81, 78, 48, 23,106,230,127,123, 57, 0,255, 0, 0, 0, 0, 61,220, 57,145,
+190,190,220, 76, 62, 70, 27,236, 20,117,248,197,126, 36, 0,255, 0, 0, 0, 0,186,236,241, 77,190,190,220, 76, 62, 70, 27,236,
+235,139,248,197,126, 36, 0,255, 0, 0, 0, 0, 61,182,231, 88,190,133, 3, 64, 62, 77,146,196, 19, 43, 0,128,126,141, 2,255,
+ 0, 0, 0, 0, 60,134,121,207,190,133, 3, 64, 62, 77,146,196,236,213, 0,128,126,141, 2,255, 0, 0, 0, 0, 61, 88,133,203,
+190,133, 3, 64, 62, 77,146,196, 0, 0,255,122,127,254, 0,255, 0, 0, 0, 0, 61, 88,133,203,190, 82, 11, 43, 62, 73,215, 88,
+ 0, 0,184,121,106, 36, 0,255, 0, 0, 0, 0, 61,197,213, 8,190, 55,235, 55, 62, 92,128,116, 66,167,160,139, 53, 45, 2,255,
+ 0, 0, 0, 0, 60, 21,134, 27,190, 55,235, 55, 62, 92,128,116,189, 89,160,139, 53, 45, 2,255, 0, 0, 0, 0, 61,235, 39, 65,
+190, 33,134,174, 62, 99,247, 77,118,133,224,215, 36,239, 2,255, 0, 0, 0, 0,188, 21, 11,173,190, 33,134,174, 62, 99,247, 77,
+137,123,224,215, 36,239, 2,255, 0, 0, 0, 0, 61,212,194,185,189,233,123, 57, 62, 92,128,116, 81,167, 95,141, 24, 49, 2,255,
+ 0, 0, 0, 0, 58,240,196,191,189,233,123, 57, 62, 92,128,116,174, 89, 95,141, 24, 49, 2,255, 0, 0, 0, 0, 61,145,149, 31,
+189,226, 4, 97, 62, 92,128,116,200,189,108,160, 39, 26, 2,255, 0, 0, 0, 0, 61, 13,225, 89,189,226, 4, 97, 62, 92,128,116,
+ 55, 67,108,160, 39, 26, 2,255, 0, 0, 0, 0, 61, 88,133,203,190, 22, 84,106, 62,114,228,253, 0, 0, 23, 42,125,225, 0,255,
+ 0, 0, 0, 0, 61,153, 11,247,189,248,104,235, 62,107,110, 37,231,186, 78, 89, 98, 66, 2,255, 0, 0, 0, 0, 60,253,231, 82,
+189,248,104,235, 62,107,110, 37, 24, 70, 78, 89, 98, 66, 2,255, 0, 0, 0, 0, 61,197,213, 8,189,255,223,195, 62,107,110, 37,
+ 43, 88, 62,134,102,237, 2,255, 0, 0, 0, 0, 60, 21,134, 27,189,255,223,195, 62,107,110, 37,212,168, 62,134,102,237, 2,255,
+ 0, 0, 0, 0, 61,212,194,185,190, 33,134,174, 62,114,228,253, 46,247,233, 89,116,228, 2,255, 0, 0, 0, 0, 58,240,196,191,
+190, 33,134,174, 62,114,228,253,209, 9,233, 89,116,228, 2,255, 0, 0, 0, 0, 61,182,231, 88,190, 44,184,243, 62,103,178,185,
+ 31, 46,181,198, 99,128, 2,255, 0, 0, 0, 0, 60,134,121,207,190, 44,184,243, 62,103,178,185,224,210,181,198, 99,128, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203,190, 63, 98, 15, 62,103,178,185, 0, 0,191,185,110,175, 2,255, 0, 0, 0, 0, 62, 49, 74, 98,
+190, 74,148, 83, 61,224,138,107,120, 23, 41, 34, 16, 99, 0,255, 0, 0, 0, 0,189,138, 14,248,190, 74,148, 83, 61,224,138,107,
+135,233, 41, 34, 16, 99, 0,255, 0, 0, 0, 0, 62, 4,129, 81,190, 40,253,134, 62, 58,233,167, 80,251,250, 26, 98,241, 0,255,
+ 0, 0, 0, 0,188,193,243, 89,190, 40,253,134, 62, 58,233,167,175, 5,250, 26, 98,241, 0,255, 0, 0, 0, 0, 62, 11,248, 41,
+190, 74,148, 83, 62, 58,233,167, 83,215, 16,153, 95, 71, 0,255, 0, 0, 0, 0,188,253,170, 27,190, 74,148, 83, 62, 58,233,167,
+172, 41, 16,153, 95, 71, 0,255, 0, 0, 0, 0, 62, 38, 24, 30,190, 44,184,243, 61,224,138,107,122, 24, 35, 67, 15, 64, 0,255,
+ 0, 0, 0, 0,189,103, 84,224,190, 44,184,243, 61,224,138,107,133,232, 35, 67, 15, 64, 0,255, 0, 0, 0, 0, 61, 88,133,203,
+190,235,165, 93, 62, 47,183, 99, 0, 0, 86,139, 94, 77, 0,255, 0, 0, 0, 0, 61,153, 11,247,190,233,199,167, 62, 47,183, 99,
+206,144, 70,200, 94,125, 0,255, 0, 0, 0, 0, 60,253,231, 82,190,233,199,167, 62, 47,183, 99, 49,112, 70,200, 94,125, 0,255,
+ 0, 0, 0, 0, 61,197,213, 8,190,222,149, 99, 62, 58,233,167,164,253, 17,109, 88, 75, 0,255, 0, 0, 0, 0, 60, 21,134, 27,
+190,222,149, 99, 62, 58,233,167, 91, 3, 17,109, 88, 75, 0,255, 0, 0, 0, 0, 61,197,213, 8,190,203,236, 70, 62, 66, 96,128,
+225,141,168, 87, 88, 39, 0,255, 0, 0, 0, 0, 60, 21,134, 27,190,203,236, 70, 62, 66, 96,128, 30,115,168, 87, 88, 39, 0,255,
+ 0, 0, 0, 0, 61, 88,133,203,190,213, 64,212, 62, 32,201,179, 0, 0,159, 20, 83,153, 0,255, 0, 0, 0, 0, 61,197,213, 8,
+190,205,201,252, 62, 36,133, 31,230, 5,177,250, 98, 20, 0,255, 0, 0, 0, 0, 60, 21,134, 27,190,205,201,252, 62, 36,133, 31,
+ 25,251,177,250, 98, 20, 0,255, 0, 0, 0, 0, 61,197,213, 8,190,220,183,173, 62, 25, 82,219,152, 18, 24, 8, 70,188, 0,255,
+ 0, 0, 0, 0, 60, 21,134, 27,190,220,183,173, 62, 25, 82,219,103,238, 24, 8, 70,188, 0,255, 0, 0, 0, 0, 61,153, 11,247,
+190,230, 12, 59, 62, 21,151,111,222, 26, 49,242,112,221, 0,255, 0, 0, 0, 0, 60,253,231, 82,190,230, 12, 59, 62, 21,151,111,
+ 33,230, 49,242,112,221, 0,255, 0, 0, 0, 0, 61, 88,133,203,190,231,233,241, 62, 21,151,111, 0, 0, 60, 18,113, 5, 0,255,
+ 0, 0, 0, 0, 62, 8, 60,189, 61, 76,209,142, 62, 92,128,116, 30, 4,244, 93,123,225, 0,255, 0, 0, 0, 0,188,223,206,186,
+ 61, 76,209,142, 62, 92,128,116,225,252,244, 93,123,225, 0,255, 0, 0, 0, 0, 62, 15,179,149, 60,170,200, 22, 62, 88,197, 8,
+ 9, 71,251, 34,127,144, 0,255, 0, 0, 0, 0,189, 13,194,190, 60,170,200, 22, 62, 88,197, 8,246,185,251, 34,127,144, 0,255,
+ 0, 0, 0, 0, 62, 86,156,155, 62, 23,248,202, 62, 81, 78, 48, 17, 81, 2, 74,126,204, 0,255, 0, 0, 0, 0,189,212,179,106,
+ 62, 23,248,202, 62, 81, 78, 48,238,175, 2, 74,126,204, 0,255, 0, 0, 0, 0, 62, 56,193, 58, 62, 20, 61, 94, 62, 88,197, 8,
+ 25,218,253,177,125, 86, 2,255, 0, 0, 0, 0,189,152,252,168, 62, 20, 61, 94, 62, 88,197, 8,230, 38,253,177,125, 86, 2,255,
+ 0, 0, 0, 0, 62,127,170, 64, 62, 9, 11, 25, 62, 88,197, 8, 21,182,240,210,125, 57, 2,255, 0, 0, 0, 0,190, 19,103, 90,
+ 62, 9, 11, 25, 62, 88,197, 8,234, 74,240,210,125, 57, 2,255, 0, 0, 0, 0, 62,161,107,237, 61,229, 77, 34, 62, 51,114,207,
+ 28,143,237,249,123,117, 0,255, 0, 0, 0, 0,190, 86,148,244, 61,229, 77, 34, 62, 51,114,207,227,113,237,249,123,117, 0,255,
+ 0, 0, 0, 0, 62,167, 5, 15, 61,169,150, 97, 62, 47,183, 99, 15,209,246,217,126,175, 0,255, 0, 0, 0, 0,190, 97,199, 56,
+ 61,169,150, 97, 62, 47,183, 99,240, 47,246,217,126,175, 0,255, 0, 0, 0, 0, 62,165, 39, 89, 61, 32, 8,125, 62, 43,251,247,
+ 24,177,253,190,125,146, 0,255, 0, 0, 0, 0,190, 94, 11,204, 61, 32, 8,125, 62, 43,251,247,231, 79,253,190,125,146, 0,255,
+ 0, 0, 0, 0, 62,140,229, 26,187,152,222, 60, 62, 62,165, 20, 33, 20, 2, 75,123,160, 0,255, 0, 0, 0, 0,190, 45,135, 79,
+187,152,222, 60, 62, 62,165, 20,222,236, 2, 75,123,160, 0,255, 0, 0, 0, 0, 62,105, 69,184,188,187,128,115, 62, 73,215, 88,
+ 26, 85,248,238,125, 14, 0,255, 0, 0, 0, 0,189,250, 5,163,188,187,128,115, 62, 73,215, 88,229,171,248,238,125, 14, 0,255,
+ 0, 0, 0, 0, 62, 34, 92,178,186,133,194,226, 62, 92,128,116, 7, 8,250,142,127,175, 0,255, 0, 0, 0, 0,189, 88,103, 48,
+186,133,194,226, 62, 92,128,116,248,248,250,142,127,175, 0,255, 0, 0, 0, 0, 62, 11,248, 41, 61,177, 13, 57, 62, 92,128,116,
+ 34,169,240, 2,122, 43, 0,255, 0, 0, 0, 0,188,253,170, 27, 61,177, 13, 57, 62, 92,128,116,221, 87,240, 2,122, 43, 0,255,
+ 0, 0, 0, 0, 62, 26,229,218, 61,251,177,170, 62, 92,128,116, 27,126,239,108,123,231, 0,255, 0, 0, 0, 0,189, 58,139,207,
+ 61,251,177,170, 62, 92,128,116,228,130,239,108,123,231, 0,255, 0, 0, 0, 0, 62, 38, 24, 30, 61,236,195,250, 62, 81, 78, 48,
+ 64,226,207, 13, 98,224, 0,255, 0, 0, 0, 0,189,103, 84,224, 61,236,195,250, 62, 81, 78, 48,191, 30,207, 13, 98,224, 0,255,
+ 0, 0, 0, 0, 62, 19,111, 1, 61,177, 13, 57, 62, 81, 78, 48, 96, 29,229,169, 80, 81, 0,255, 0, 0, 0, 0,189, 28,176,110,
+ 61,177, 13, 57, 62, 81, 78, 48,159,227,229,169, 80, 81, 0,255, 0, 0, 0, 0, 62, 41,211,138, 59,205,106, 77, 62, 81, 78, 48,
+ 55, 36, 71,122, 90,188, 0,255, 0, 0, 0, 0,189,118, 66,143, 59,205,106, 77, 62, 81, 78, 48,200,220, 71,122, 90,188, 0,255,
+ 0, 0, 0, 0, 62,105, 69,184,188, 67,220,161, 62, 66, 96,128, 21, 76, 78, 90, 98,241, 0,255, 0, 0, 0, 0,189,250, 5,163,
+188, 67,220,161, 62, 66, 96,128,234,180, 78, 90, 98,241, 0,255, 0, 0, 0, 0, 62,137, 41,174, 59, 43,249,149, 62, 55, 46, 59,
+245, 85, 69, 69,107, 25, 0,255, 0, 0, 0, 0,190, 38, 16,118, 59, 43,249,149, 62, 55, 46, 59, 10,171, 69, 69,107, 25, 0,255,
+ 0, 0, 0, 0, 62,157,176,129, 61, 61,227,222, 62, 40, 64,139,223,232, 29,211,120, 67, 0,255, 0, 0, 0, 0,190, 79, 30, 28,
+ 61, 61,227,222, 62, 40, 64,139, 32, 24, 29,211,120, 67, 0,255, 0, 0, 0, 0, 62,159,142, 55, 61,162, 31,137, 62, 40, 64,139,
+210,148,238,123,118, 95, 0,255, 0, 0, 0, 0,190, 82,217,136, 61,162, 31,137, 62, 40, 64,139, 45,108,238,123,118, 95, 0,255,
+ 0, 0, 0, 0, 62,153,245, 21, 61,214, 95,114, 62, 43,251,247,229,216,179,108, 99, 43, 0,255, 0, 0, 0, 0,190, 71,167, 67,
+ 61,214, 95,114, 62, 43,251,247, 26, 40,179,108, 99, 43, 0,255, 0, 0, 0, 0, 62,123,238,212, 62, 5, 79,173, 62, 77,146,196,
+237,202,158,179, 81, 35, 2,255, 0, 0, 0, 0,190, 15,171,238, 62, 5, 79,173, 62, 77,146,196, 18, 54,158,179, 81, 35, 2,255,
+ 0, 0, 0, 0, 62, 60,124,166, 62, 9, 11, 25, 62, 85, 9,156, 39, 24,212,118,113,214, 2,255, 0, 0, 0, 0,189,160,115,129,
+ 62, 9, 11, 25, 62, 85, 9,156,216,232,212,118,113,214, 2,255, 0, 0, 0, 0, 62, 86,156,155, 62, 12,198,133, 62, 77,146,196,
+ 1,213,193,189,111,208, 0,255, 0, 0, 0, 0,189,212,179,106, 62, 12,198,133, 62, 77,146,196,254, 43,193,189,111,208, 0,255,
+ 0, 0, 0, 0, 62, 23, 42,109, 60,230,126,216, 62, 77,146,196, 84,226, 42,192, 85,187, 0,255, 0, 0, 0, 0,189, 43,158, 31,
+ 60,230,126,216, 62, 77,146,196,171, 30, 42,192, 85,187, 0,255, 0, 0, 0, 0, 62, 19,111, 1, 61, 91,191, 63, 62, 77,146,196,
+102,235, 2,196, 76, 11, 0,255, 0, 0, 0, 0,189, 28,176,110, 61, 91,191, 63, 62, 77,146,196,153, 21, 2,196, 76, 11, 0,255,
+ 0, 0, 0, 0, 61,212,194,185, 62, 38,230,122, 62, 10,101, 42,182,183,104,118,246, 5, 0,255, 0, 0, 0, 0, 58,240,196,191,
+ 62, 38,230,122, 62, 10,101, 42, 73, 73,104,118,246, 5, 0,255, 0, 0, 0, 0, 62, 19,111, 1, 62,131,247,186, 62, 14, 32,150,
+192,208, 66,221,167, 3, 2,255, 0, 0, 0, 0,189, 28,176,110, 62,131,247,186, 62, 14, 32,150, 63, 48, 66,221,167, 3, 2,255,
+ 0, 0, 0, 0, 62, 86,156,155, 62,137,144,220, 62, 2,238, 82, 9, 59, 90, 89,165,208, 2,255, 0, 0, 0, 0,189,212,179,106,
+ 62,137,144,220, 62, 2,238, 82,246,197, 90, 89,165,208, 2,255, 0, 0, 0, 0, 62,142,194,208, 62, 83,175,139, 61,224,138,107,
+ 37,165,114,104,212,176, 0,255, 0, 0, 0, 0,190, 49, 66,187, 62, 83,175,139, 61,224,138,107,218, 91,114,104,212,176, 0,255,
+ 0, 0, 0, 0, 62,189,105,152, 62, 35, 43, 14, 61,164,211,170, 45, 67,116, 40,227, 1, 0,255, 0, 0, 0, 0,190,135, 72, 37,
+ 62, 35, 43, 14, 61,164,211,170,210,189,116, 40,227, 1, 0,255, 0, 0, 0, 0, 62,217,103, 66, 62, 12,198,133, 61,134,248, 73,
+ 94,100, 79,237,223, 18, 0,255, 0, 0, 0, 0,190,163, 69,207, 62, 12,198,133, 61,134,248, 73,161,156, 79,237,223, 18, 0,255,
+ 0, 0, 0, 0, 62,211,206, 32, 60,200,163,119, 60,211,115,252,120,247,221,255,231,165, 0,255, 0, 0, 0, 0,190,157,172,173,
+ 60,200,163,119, 60,211,115,252,135, 9,221,255,231,165, 0,255, 0, 0, 0, 0, 62,170,192,123,189, 85, 45,188, 61, 52, 94,112,
+ 76,155,154,106,242, 19, 0,255, 0, 0, 0, 0,190,105, 62, 16,189, 85, 45,188, 61, 52, 94,112,179,101,154,106,242, 19, 0,255,
+ 0, 0, 0, 0, 62,131,144,140,189,196, 41, 0, 61,142,111, 33, 56,204,142, 26, 13,138, 0,255, 0, 0, 0, 0,190, 26,222, 50,
+189,196, 41, 0, 61,142,111, 33,199, 52,142, 26, 13,138, 0,255, 0, 0, 0, 0, 61, 88,133,203, 62,187,243, 16,188,105,242, 89,
+ 0, 0,106,155, 70,214, 2,255, 0, 0, 0, 0, 61, 88,133,203, 62,208,121,226,190, 62, 7,254, 0, 0,127,243, 3, 82, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203,190, 18,152,254,190,236,214, 11, 0, 0,164, 54,166,204, 3,255, 0, 0, 0, 0, 61, 88,133,203,
+190,136,190,173,189,124,142,139, 0, 0,129,179,235, 65, 0,255, 0, 0, 0, 0, 61, 88,133,203,191, 1,243,205, 61,134,248, 73,
+ 0, 0,151,182,181,204, 2,255, 0, 0, 0, 0, 61, 88,133,203,190,218,217,247, 60, 56, 12,241, 0, 0,221,231,132,162, 2,255,
+ 0, 0, 0, 0, 61, 88,133,203,190,162,222,161, 57,157, 21,147, 0, 0,212, 16,135,201, 0,255, 0, 0, 0, 0, 61, 88,133,203,
+190,142, 87,207,188,146,212,141, 0, 0,147,245,187, 97, 0,255, 0, 0, 0, 0, 62,230,119, 61, 61,106,172,239,189,253, 43,161,
+125,164,235,181, 13,156, 0,255, 0, 0, 0, 0,190,176, 85,202, 61,106,172,239,189,253, 43,161,130, 92,235,181, 13,156, 0,255,
+ 0, 0, 0, 0, 62,232, 84,243, 61,199,113,194,190, 47, 26, 78,126,174,238, 23,252, 66, 0,255, 0, 0, 0, 0,190,178, 51,128,
+ 61,199,113,194,190, 47, 26, 78,129, 82,238, 23,252, 66, 0,255, 0, 0, 0, 0, 62,211,206, 32, 61,147, 49,216,190,180,218,181,
+ 81, 70, 13,148,158, 15, 1,255, 0, 0, 0, 0,190,157,172,173, 61,147, 49,216,190,180,218,181,174,186, 13,148,158, 15, 1,255,
+ 0, 0, 0, 0, 62,137, 41,174, 62, 27,180, 54,190,244, 76,226, 58,123, 21,228,144, 70, 3,255, 0, 0, 0, 0,190, 38, 16,118,
+ 62, 27,180, 54,190,244, 76,226,197,133, 21,228,144, 70, 3,255, 0, 0, 0, 0, 62,202,121,146,189,151, 95,239,189,238, 61,240,
+ 89, 76,164,139, 6,161, 2,255, 0, 0, 0, 0,190,148, 88, 31,189,151, 95,239,189,238, 61,240,166,180,164,139, 6,161, 2,255,
+ 0, 0, 0, 0, 62,168,226,197,189,226, 4, 97,190,103, 21,163, 38, 93,134, 34, 7,182, 0,255, 0, 0, 0, 0,190,101,130,164,
+189,226, 4, 97,190,103, 21,163,217,163,134, 34, 7,182, 0,255, 0, 0, 0, 0, 62,180, 21, 9,189,100, 27,109,190,178,252,255,
+ 43,106,170,219,170,222, 1,255, 0, 0, 0, 0,190,123,231, 45,189,100, 27,109,190,178,252,255,212,150,170,219,170,222, 1,255,
+ 0, 0, 0, 0, 62, 86,156,155,188,217, 91,211,190,234,248, 85, 55,168,213,109,148,229, 2,255, 0, 0, 0, 0,189,212,179,106,
+188,217, 91,211,190,234,248, 85,200, 88,213,109,148,229, 2,255, 0, 0, 0, 0, 62, 38, 24, 30,190, 93, 61,112, 61, 37,112,191,
+120,197,255, 36,213,158, 0,255, 0, 0, 0, 0,189,103, 84,224,190, 93, 61,112, 61, 37,112,191,135, 59,255, 36,213,158, 0,255,
+ 0, 0, 0, 0, 62, 11,248, 41,190,123, 24,209,188,236,102,176, 84,188,181, 20,196, 24, 0,255, 0, 0, 0, 0,188,253,170, 27,
+190,123, 24,209,188,236,102,176,171, 68,181, 20,196, 24, 0,255, 0, 0, 0, 0, 62, 64, 56, 19,190,196,117,110, 60,241, 79, 92,
+ 79,131,254, 86,155,183, 2,255, 0, 0, 0, 0,189,167,234, 89,190,196,117,110, 60,241, 79, 92,176,125,254, 86,155,183, 2,255,
+ 0, 0, 0, 0, 62, 45,142,246,190,146, 19, 59, 61, 7,149, 95, 99, 5, 1, 8,174,231, 0,255, 0, 0, 0, 0,189,130,152, 32,
+190,146, 19, 59, 61, 7,149, 95,156,251, 1, 8,174,231, 0,255, 0, 0, 0, 0, 62, 82,225, 47,190,244,249,234, 61, 22,131, 15,
+ 62, 65,185,227,168,224, 2,255, 0, 0, 0, 0,189,205, 60,146,190,244,249,234, 61, 22,131, 15,193,191,185,227,168,224, 2,255,
+ 0, 0, 0, 0, 61,242,158, 25,190,207,167,178, 60,181,152,155, 16,133,232,208,131, 55, 0,255, 0, 0, 0, 0,188, 80,194,110,
+190,207,167,178, 60,181,152,155,239,123,232,208,131, 55, 0,255, 0, 0, 0, 0, 61,227,176,105,190,155,103,201, 60,151,189, 58,
+ 48, 7,224,163,141,149, 0,255, 0, 0, 0, 0,187,178,169,214,190,155,103,201, 60,151,189, 58,207,249,224,163,141,149, 0,255,
+ 0, 0, 0, 0, 62, 4,129, 81,190,252,112,195, 61, 97, 39,129, 12, 68,158,218,173,147, 0,255, 0, 0, 0, 0,188,193,243, 89,
+190,252,112,195, 61, 97, 39,129,243,188,158,218,173,147, 0,255, 0, 0, 0, 0, 62, 30,161, 70,190, 59,166,163, 61, 82, 57,208,
+124,195,227,106,255,203, 0,255, 0, 0, 0, 0,189, 73,121,127,190, 59,166,163, 61, 82, 57,208,131, 61,227,106,255,203, 0,255,
+ 0, 0, 0, 0, 62, 26,229,218,190, 33,134,174, 61,142,111, 33,120, 29,231,105, 36,193, 0,255, 0, 0, 0, 0,189, 58,139,207,
+190, 33,134,174, 61,142,111, 33,135,227,231,105, 36,193, 0,255, 0, 0, 0, 0, 62, 23, 42,109,190, 7,102,186, 61,172, 74,130,
+101,160,182,164, 25,240, 0,255, 0, 0, 0, 0,189, 43,158, 31,190, 7,102,186, 61,172, 74,130,154, 96,182,164, 25,240, 0,255,
+ 0, 0, 0, 0, 62, 26,229,218,190,111,230,140,189,148,171,206, 84,120,159,221,253,198, 0,255, 0, 0, 0, 0,189, 58,139,207,
+190,111,230,140,189,148,171,206,171,136,159,221,253,198, 0,255, 0, 0, 0, 0, 62, 67,243,127,190, 74,148, 83,190,139,205, 16,
+ 67,255,151, 42,228, 73, 2,255, 0, 0, 0, 0,189,175, 97, 49,190, 74,148, 83,190,139,205, 16,188, 1,151, 42,228, 73, 2,255,
+ 0, 0, 0, 0, 62, 90, 88, 7,189,248,104,235,190,205, 28,244, 63,201,176, 25,179, 0, 3,255, 0, 0, 0, 0,189,220, 42, 66,
+189,248,104,235,190,205, 28,244,192, 55,176, 25,179, 0, 3,255, 0, 0, 0, 0, 62,135, 75,248, 62,180,124, 55,190,167,202,187,
+ 56, 34, 95,160,192, 17, 2,255, 0, 0, 0, 0,190, 34, 85, 10, 62,180,124, 55,190,167,202,187,199,222, 95,160,192, 17, 2,255,
+ 0, 0, 0, 0, 62,135, 75,248, 62,195,105,232,190, 58, 76,146, 55, 54,115,120, 0,239, 2,255, 0, 0, 0, 0,190, 34, 85, 10,
+ 62,195,105,232,190, 58, 76,146,200,202,115,120, 0,239, 2,255, 0, 0, 0, 0, 62,135, 75,248, 62,176,192,203,189, 34,252,105,
+ 63,239, 92,164, 60,238, 2,255, 0, 0, 0, 0,190, 34, 85, 10, 62,176,192,203,189, 34,252,105,192, 17, 92,164, 60,238, 2,255,
+ 0, 0, 0, 0, 62,137, 41,174, 62, 68,193,219, 61, 82, 57,208, 49,123,102,255, 57,170, 0,255, 0, 0, 0, 0,190, 38, 16,118,
+ 62, 68,193,219, 61, 82, 57,208,206,133,102,255, 57,170, 0,255, 0, 0, 0, 0, 62,200,155,220, 62, 12,198,133, 59,248,172, 95,
+ 98,142, 73,198, 35, 6, 0,255, 0, 0, 0, 0,190,146,122,105, 62, 12,198,133, 59,248,172, 95,157,114, 73,198, 35, 6, 0,255,
+ 0, 0, 0, 0, 62,178, 55, 83, 62, 35, 43, 14,188,146,212,141, 61,129,106,254, 33,241, 0,255, 0, 0, 0, 0,190,120, 43,193,
+ 62, 35, 43, 14,188,146,212,141,194,127,106,254, 33,241, 0,255, 0, 0, 0, 0, 62,180, 21, 9, 62,141, 76, 72,189,253, 43,161,
+ 76,234, 87,151, 52,221, 0,255, 0, 0, 0, 0,190,123,231, 45, 62,141, 76, 72,189,253, 43,161,179, 22, 87,151, 52,221, 0,255,
+ 0, 0, 0, 0, 62,217,103, 66, 62, 87,106,247,189,185,254, 7,101,187, 66, 28, 40,199, 2,255, 0, 0, 0, 0,190,163, 69,207,
+ 62, 87,106,247,189,185,254, 7,154, 69, 66, 28, 40,199, 2,255, 0, 0, 0, 0, 62,217,103, 66, 62,113,138,236,190, 80,177, 26,
+113,183, 58, 68,248,119, 2,255, 0, 0, 0, 0,190,163, 69,207, 62,113,138,236,190, 80,177, 26,142, 73, 58, 68,248,119, 2,255,
+ 0, 0, 0, 0, 62,180, 21, 9, 62,152,126,141,190,118, 3, 83, 86,235, 93,238,253,205, 0,255, 0, 0, 0, 0,190,123,231, 45,
+ 62,152,126,141,190,118, 3, 83,169, 21, 93,238,253,205, 0,255, 0, 0, 0, 0, 62,180, 21, 9, 62,135,179, 38,190,182,184,107,
+ 85,232, 70,154,192,157, 2,255, 0, 0, 0, 0,190,123,231, 45, 62,135,179, 38,190,182,184,107,170, 24, 70,154,192,157, 2,255,
+ 0, 0, 0, 0, 62,217,103, 66, 62, 76, 56,179,190,162, 49,153,110,166, 42,177,207,222, 2,255, 0, 0, 0, 0,190,163, 69,207,
+ 62, 76, 56,179,190,162, 49,153,145, 90, 42,177,207,222, 2,255, 0, 0, 0, 0, 62,174,123,231, 61,206,232,154,190,216, 79, 56,
+ 75, 58, 1, 57,152,116, 3,255, 0, 0, 0, 0,190,112,180,232, 61,206,232,154,190,216, 79, 56,180,198, 1, 57,152,116, 3,255,
+ 0, 0, 0, 0, 62,142,194,208,189, 40,100,171,190,206,250,170, 70, 73,187,147,173,200, 1,255, 0, 0, 0, 0,190, 49, 66,187,
+189, 40,100,171,190,206,250,170,185,183,187,147,173,200, 0,255, 0, 0, 0, 0, 62,223, 0,100, 61,206,232,154,190,121,190,191,
+114,194, 41, 80, 38,207, 0,255, 0, 0, 0, 0,190,168,222,241, 61,206,232,154,190,121,190,191,141, 62, 41, 80, 38,207, 0,255,
+ 0, 0, 0, 0, 62,120, 51,104,190, 7,102,186,189,163,153,127, 74,232,154,153, 22, 28, 0,255, 0, 0, 0, 0,190, 11,240,130,
+190, 7,102,186,189,163,153,127,181, 24,154,153, 22, 28, 0,255, 0, 0, 0, 0, 62,129,178,214,190, 18,152,254,190,125,122, 44,
+ 71, 89,151,115,237, 1, 0,255, 0, 0, 0, 0,190, 23, 34,198,190, 18,152,254,190,125,122, 44,184,167,151,115,237, 1, 0,255,
+ 0, 0, 0, 0, 62,239,203,202, 62, 12,198,133,190,132, 86, 56,220, 72, 93,207, 79,106, 2,255, 0, 0, 0, 0,190,185,170, 88,
+ 62, 12,198,133,190,132, 86, 56, 35,184, 93,207, 79,106, 2,255, 0, 0, 0, 0, 62,211,206, 32,189,240,242, 18,190, 84,108,135,
+ 15, 30,150, 34, 70, 84, 2,255, 0, 0, 0, 0,190,157,172,173,189,240,242, 18,190, 84,108,135,240,226,150, 34, 70, 84, 2,255,
+ 0, 0, 0, 0, 63, 9,160, 38,189,203,159,217,190,154,186,192, 67,164,166,138, 61,172, 0,255, 0, 0, 0, 0,190,221, 30,219,
+189,203,159,217,190,154,186,192,188, 92,166,138, 61,172, 0,255, 0, 0, 0, 0, 63, 38,140,172,188,217, 91,211,190,178,252,255,
+ 83,179,206,223, 83,114, 0,255, 0, 0, 0, 0,191, 11,123,244,188,217, 91,211,190,178,252,255,172, 77,206,223, 83,114, 0,255,
+ 0, 0, 0, 0, 63, 46,242, 95, 61,199,113,194,190,177, 31, 73, 92, 54, 12,232, 87,210, 2,255, 0, 0, 0, 0,191, 19,225,167,
+ 61,199,113,194,190,177, 31, 73,163,202, 12,232, 87,210, 2,255, 0, 0, 0, 0, 63, 32,243,138, 62, 61, 75, 3,190,177, 31, 73,
+ 62,247, 83,221, 73, 97, 0,255, 0, 0, 0, 0,191, 5,226,209, 62, 61, 75, 3,190,177, 31, 73,193, 9, 83,221, 73, 97, 0,255,
+ 0, 0, 0, 0, 63, 7,194,112, 62, 46, 93, 82,190,150,255, 84, 5,181,111, 80, 62,236, 0,255, 0, 0, 0, 0,190,217, 99,111,
+ 62, 46, 93, 82,190,150,255, 84,250, 75,111, 80, 62,236, 0,255, 0, 0, 0, 0, 63, 6,211,149, 62, 16,129,241,190,145,102, 50,
+ 69,236,239,117,105,236, 0,255, 0, 0, 0, 0,190,215,133,185, 62, 16,129,241,190,145,102, 50,186, 20,239,117,105,236, 0,255,
+ 0, 0, 0, 0, 63, 27, 90,104, 62, 27,180, 54,190,169,168,113, 24, 34,231,205,123, 89, 0,255, 0, 0, 0, 0,191, 0, 73,175,
+ 62, 27,180, 54,190,169,168,113,231,222,231,205,123, 89, 0,255, 0, 0, 0, 0, 63, 36,174,246, 61,169,150, 97,190,173, 99,221,
+223, 69,252, 16,123,173, 0,255, 0, 0, 0, 0,191, 9,158, 62, 61,169,150, 97,190,173, 99,221, 32,187,252, 16,123,173, 0,255,
+ 0, 0, 0, 0, 63, 30, 38,249,188,127,147, 98,190,173, 99,221,239,171, 39, 0,120,207, 0,255, 0, 0, 0, 0,191, 3, 22, 64,
+188,127,147, 98,190,173, 99,221, 16, 85, 39, 0,120,207, 0,255, 0, 0, 0, 0, 63, 8,177, 75,189,143,233, 23,190,149, 33,158,
+ 51, 9, 45, 56,108, 82, 0,255, 0, 0, 0, 0,190,219, 65, 37,189,143,233, 23,190,149, 33,158,204,247, 45, 56,108, 82, 0,255,
+ 0, 0, 0, 0, 62,224,222, 26,189,173,196,120,190, 88, 39,243, 38,147, 62,224,104,153, 2,255, 0, 0, 0, 0,190,170,188,167,
+189,173,196,120,190, 88, 39,243,217,109, 62,224,104,153, 2,255, 0, 0, 0, 0, 62,247, 66,162, 61,236,195,250,190,128,154,204,
+ 62,218,243,152,110,206, 2,255, 0, 0, 0, 0,190,193, 33, 48, 61,236,195,250,190,128,154,204,193, 38,243,152,110,206, 2,255,
+ 0, 0, 0, 0, 62,252,219,196, 61,184,132, 17,190,145,102, 50, 87, 10,182, 73, 58, 19, 0,255, 0, 0, 0, 0,190,198,186, 82,
+ 61,184,132, 17,190,145,102, 50,168,246,182, 73, 58, 19, 0,255, 0, 0, 0, 0, 62,237,238, 21,189,128,251,103,190,125,122, 44,
+ 15,232,121,106, 37, 64, 0,255, 0, 0, 0, 0,190,183,204,162,189,128,251,103,190,125,122, 44,240, 24,121,106, 37, 64, 0,255,
+ 0, 0, 0, 0, 63, 9,160, 38,189, 85, 45,188,190,164, 15, 79,239,157,122, 89, 33,212, 0,255, 0, 0, 0, 0,190,221, 30,219,
+189, 85, 45,188,190,164, 15, 79, 16, 99,122, 89, 33,212, 0,255, 0, 0, 0, 0, 63, 27, 90,104,188, 8, 37,223,190,182,184,107,
+158, 8, 81,202, 9,185, 0,255, 0, 0, 0, 0,191, 0, 73,175,188, 8, 37,223,190,182,184,107, 97,248, 81,202, 9,185, 0,255,
+ 0, 0, 0, 0, 63, 32,243,138, 61,132, 68, 40,190,182,184,107,131, 60,239,145, 23, 95, 0,255, 0, 0, 0, 0,191, 5,226,209,
+ 61,132, 68, 40,190,182,184,107,124,196,239,145, 23, 95, 0,255, 0, 0, 0, 0, 63, 25,124,178, 61,236,195,250,190,180,218,181,
+228, 27,153, 22, 70,206, 0,255, 0, 0, 0, 0,190,252,215,242, 61,236,195,250,190,180,218,181, 27,229,153, 22, 70,206, 0,255,
+ 0, 0, 0, 0, 63, 7,194,112, 61,221,214, 74,190,162, 49,153, 68, 65,168,253, 64,113, 0,255, 0, 0, 0, 0,190,217, 99,111,
+ 61,221,214, 74,190,162, 49,153,187,191,168,253, 64,113, 0,255, 0, 0, 0, 0, 62,228,153,135, 61,169,150, 97,190,125,122, 44,
+ 86,113,222,190, 88, 87, 0,255, 0, 0, 0, 0,190,174,120, 20, 61,169,150, 97,190,125,122, 44,169,143,222,190, 88, 87, 0,255,
+ 0, 0, 0, 0, 62,226,187,209, 60,230,126,216,190,141,170,198, 95,196,182,107, 42,100, 0,255, 0, 0, 0, 0,190,172,154, 93,
+ 60,230,126,216,190,141,170,198,160, 60,182,107, 42,100, 0,255, 0, 0, 0, 0, 62,208, 18,180,188, 8, 37,223,190,141,170,198,
+111, 42, 14, 21, 61,220, 0,255, 0, 0, 0, 0,190,153,241, 65,188, 8, 37,223,190,141,170,198,144,214, 14, 21, 61,220, 0,255,
+ 0, 0, 0, 0, 62,223, 0,100,188, 67,220,161,190,141,170,198, 79, 3, 91, 4, 43, 19, 2,255, 0, 0, 0, 0,190,168,222,241,
+188, 67,220,161,190,141,170,198,176,253, 91, 4, 43, 19, 2,255, 0, 0, 0, 0, 62,228,153,135,189, 55, 82, 92,190,141,170,198,
+107,207,254,198, 68,250, 2,255, 0, 0, 0, 0,190,174,120, 20,189, 55, 82, 92,190,141,170,198,148, 49,254,198, 68,250, 2,255,
+ 0, 0, 0, 0, 62,221, 34,174,189,115, 9, 29,190,141,170,198, 82, 7, 64,225, 73,200, 0,255, 0, 0, 0, 0,190,167, 1, 59,
+189,115, 9, 29,190,141,170,198,173,249, 64,225, 73,200, 0,255, 0, 0, 0, 0, 62,200,155,220,189, 85, 45,188,190, 58, 76,146,
+117, 38,207, 66,239, 47, 0,255, 0, 0, 0, 0,190,146,122,105,189, 85, 45,188,190, 58, 76,146,138,218,207, 66,239, 47, 0,255,
+ 0, 0, 0, 0, 62,198,190, 38,189,128,251,103,190,106,209, 15, 97,150, 18,139, 80,184, 0,255, 0, 0, 0, 0,190,144,156,179,
+189,128,251,103,190,106,209, 15,158,106, 18,139, 80,184, 0,255, 0, 0, 0, 0, 62,198,190, 38,189, 10,137, 74,190,114, 71,231,
+116, 17,240, 66, 51,154, 0,255, 0, 0, 0, 0,190,144,156,179,189, 10,137, 74,190,114, 71,231,139,239,240, 66, 51,154, 0,255,
+ 0, 0, 0, 0, 62,217,103, 66, 61, 46,246, 45,190,125,122, 44,113,112,204,245, 30, 39, 0,255, 0, 0, 0, 0,190,163, 69,207,
+ 61, 46,246, 45,190,125,122, 44,142,144,204,245, 30, 39, 0,255, 0, 0, 0, 0, 62,239,203,202, 61,121,154,159,190,139,205, 16,
+ 90,105,185, 61, 56,146, 0,255, 0, 0, 0, 0,190,185,170, 88, 61,121,154,159,190,139,205, 16,165,151,185, 61, 56,146, 0,255,
+ 0, 0, 0, 0, 62,239,203,202, 61,106,172,239,190,152,221, 10, 82,191,204,102, 82,230, 0,255, 0, 0, 0, 0,190,185,170, 88,
+ 61,106,172,239,190,152,221, 10,173, 65,204,102, 82,230, 0,255, 0, 0, 0, 0, 62,221, 34,174,189,115, 9, 29,190,152,221, 10,
+ 29,246, 98, 64, 76, 94, 0,255, 0, 0, 0, 0,190,167, 1, 59,189,115, 9, 29,190,152,221, 10,226, 10, 98, 64, 76, 94, 0,255,
+ 0, 0, 0, 0, 62,230,119, 61,189, 55, 82, 92,190,152,221, 10, 77,150, 17,111,100, 75, 0,255, 0, 0, 0, 0,190,176, 85,202,
+189, 55, 82, 92,190,152,221, 10,178,106, 17,111,100, 75, 0,255, 0, 0, 0, 0, 62,224,222, 26,188,127,147, 98,190,152,221, 10,
+ 60,239, 60,190, 94,195, 0,255, 0, 0, 0, 0,190,170,188,167,188,127,147, 98,190,152,221, 10,195, 17, 60,190, 94,195, 0,255,
+ 0, 0, 0, 0, 62,209,240,106,188, 8, 37,223,190,152,221, 10, 83,199, 23,178, 93,209, 0,255, 0, 0, 0, 0,190,155,206,247,
+188, 8, 37,223,190,152,221, 10,172, 57, 23,178, 93,209, 0,255, 0, 0, 0, 0, 62,228,153,135, 60,230,126,216,190,152,221, 10,
+ 73, 98,200, 1, 88,170, 0,255, 0, 0, 0, 0,190,174,120, 20, 60,230,126,216,190,152,221, 10,182,158,200, 1, 88,170, 0,255,
+ 0, 0, 0, 0, 63, 9,160, 38, 61,206,232,154,190,175, 65,147, 68, 23,223,166,103,112, 0,255, 0, 0, 0, 0,190,221, 30,219,
+ 61,206,232,154,190,175, 65,147,187,233,223,166,103,112, 0,255, 0, 0, 0, 0, 63, 27, 90,104, 61,221,214, 74,190,192, 12,249,
+ 18,165,216,156,120, 89, 0,255, 0, 0, 0, 0,191, 0, 73,175, 61,221,214, 74,190,192, 12,249,237, 91,216,156,120, 89, 0,255,
+ 0, 0, 0, 0, 63, 35,192, 27, 61,121,154,159,190,193,234,175,185, 25,231, 29,103,157, 0,255, 0, 0, 0, 0,191, 8,175, 98,
+ 61,121,154,159,190,193,234,175, 70,231,231, 29,103,157, 0,255, 0, 0, 0, 0, 63, 30, 38,249,188, 67,220,161,190,192, 12,249,
+209, 43, 64, 0,100,119, 0,255, 0, 0, 0, 0,191, 3, 22, 64,188, 67,220,161,190,192, 12,249, 46,213, 64, 0,100,119, 0,255,
+ 0, 0, 0, 0, 63, 10,143, 1,189, 85, 45,188,190,177, 31, 73, 26, 52, 92,240, 84, 3, 0,255, 0, 0, 0, 0,190,222,252,145,
+189, 85, 45,188,190,177, 31, 73,229,204, 92,240, 84, 3, 0,255, 0, 0, 0, 0, 62,237,238, 21,189,115, 9, 29,190,139,205, 16,
+ 8, 58,111,116, 62,101, 0,255, 0, 0, 0, 0,190,183,204,162,189,115, 9, 29,190,139,205, 16,247,198,111,116, 62,101, 0,255,
+ 0, 0, 0, 0, 62,254,185,122, 61,169,150, 97,190,158,118, 45, 80,198,213,102, 89,175, 0,255, 0, 0, 0, 0,190,200,152, 8,
+ 61,169,150, 97,190,158,118, 45,175, 58,213,102, 89,175, 0,255, 0, 0, 0, 0, 62,239,203,202,186,133,194,226,190,154,186,192,
+ 25,136, 0,130,125,108, 0,255, 0, 0, 0, 0,190,185,170, 88,186,133,194,226,190,154,186,192,230,120, 0,130,125,108, 0,255,
+ 0, 0, 0, 0, 62,250,254, 14,188,187,128,115,190,156,152,119, 27, 2, 30, 58,121,104, 0,255, 0, 0, 0, 0,190,196,220,156,
+188,187,128,115,190,156,152,119,228,254, 30, 58,121,104, 0,255, 0, 0, 0, 0, 63, 4,245,223, 59,205,106, 77,190,164, 15, 79,
+ 55,218,253,126,115, 35, 0,255, 0, 0, 0, 0,190,211,202, 76, 59,205,106, 77,190,164, 15, 79,200, 38,253,126,115, 35, 0,255,
+ 0, 0, 0, 0, 63, 0, 75,152, 60,230,126,216,190,160, 83,227, 41,164,255,199,121, 8, 0,255, 0, 0, 0, 0,190,202,117,190,
+ 60,230,126,216,190,160, 83,227,214, 92,255,199,121, 8, 0,255, 0, 0, 0, 0, 63, 6,211,149, 61,106,172,239,190,165,237, 5,
+ 39,237, 9,191,121, 55, 0,255, 0, 0, 0, 0,190,215,133,185, 61,106,172,239,190,165,237, 5,216, 19, 9,191,121, 55, 0,255,
+ 0, 0, 0, 0, 63, 11,125,220, 61, 17, 26,205,190,167,202,187, 46,208,244, 41,118,137, 0,255, 0, 0, 0, 0,190,224,218, 71,
+ 61, 17, 26,205,190,167,202,187,209, 48,244, 41,118,137, 0,255, 0, 0, 0, 0, 63, 18, 5,218, 61, 61,227,222,190,169,168,113,
+ 53, 70, 3, 84,116, 85, 2,255, 0, 0, 0, 0,190,237,234, 65, 61, 61,227,222,190,169,168,113,202,186, 3, 84,116, 85, 2,255,
+ 0, 0, 0, 0, 63, 15, 57, 73, 61,154,168,176,190,169,168,113, 44, 99, 38, 36,113,212, 2,255, 0, 0, 0, 0,190,232, 81, 31,
+ 61,154,168,176,190,169,168,113,211,157, 38, 36,113,212, 2,255, 0, 0, 0, 0, 63, 7,194,112, 62, 27,180, 54,190,192, 12,249,
+198,249, 72, 3,166,222, 3,255, 0, 0, 0, 0,190,217, 99,111, 62, 27,180, 54,190,192, 12,249, 57, 7, 72, 3,166,222, 3,255,
+ 0, 0, 0, 0, 63, 34,209, 64, 62, 42,161,230,190,206,250,170, 37,198, 68,123,154,174, 3,255, 0, 0, 0, 0,191, 7,192,135,
+ 62, 42,161,230,190,206,250,170,218, 58, 68,123,154,174, 3,255, 0, 0, 0, 0, 63, 48,208, 21, 61,177, 13, 57,190,195,200,102,
+121, 3, 17,201,218, 73, 3,255, 0, 0, 0, 0,191, 21,191, 93, 61,177, 13, 57,190,195,200,102,134,253, 17,201,218, 73, 3,255,
+ 0, 0, 0, 0, 63, 42, 72, 24,188,217, 91,211,190,203, 63, 62, 82, 59,200, 75,175, 70, 3,255, 0, 0, 0, 0,191, 15, 55, 96,
+188,217, 91,211,190,203, 63, 62,173,197,200, 75,175, 70, 3,255, 0, 0, 0, 0, 63, 9,160, 38,189,188,178, 40,190,193,234,175,
+249,134,165,184,165,129, 3,255, 0, 0, 0, 0,190,221, 30,219,189,188,178, 40,190,193,234,175, 6,122,165,184,165,129, 3,255,
+ 0, 0, 0, 0, 62,215,137,140,189,226, 4, 97,190,154,186,192,249,126,163,122,167,205, 1,255, 0, 0, 0, 0,190,161,104, 25,
+189,226, 4, 97,190,154,186,192, 6,130,163,122,167,205, 1,255, 0, 0, 0, 0, 62,232, 84,243, 62, 1,148, 65,190,167,202,187,
+193, 93, 65,224,165,229, 1,255, 0, 0, 0, 0,190,178, 51,128, 62, 1,148, 65,190,167,202,187, 62,163, 65,224,165,229, 1,255,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,110,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,161,166, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 47, 28, 3,161,166, 32, 0, 0, 0, 55, 0, 0, 3,237,
+ 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 43,
+ 0, 0, 0, 34, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 41, 0, 0, 0, 43,
+ 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 42, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 9,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 8,
+ 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 34,
+ 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 14,
+ 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 6,
+ 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 34,
+ 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 20,
+ 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 19,
+ 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 22, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 25,
+ 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 20,
+ 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 27, 0, 0, 0, 34,
+ 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 31,
+ 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 30,
+ 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 30, 0, 0, 0, 34,
+ 0, 0, 0, 23, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 35,
+ 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 38, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 37, 0, 0, 0, 39,
+ 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 30,
+ 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 37, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 39, 0, 0, 0, 41, 0, 0, 0, 34,
+ 0, 0, 0, 38, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 42, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 45,
+ 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 47,
+ 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 45, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 50, 0, 0, 0, 34,
+ 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 51,
+ 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 50,
+ 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 53, 0, 0, 0, 34,
+ 0, 0, 0, 24, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 55,
+ 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 54,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 57, 0, 0, 0, 34,
+ 0, 0, 0, 13, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 61,
+ 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 58,
+ 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 63, 0, 0, 0, 34,
+ 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 63,
+ 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 47,
+ 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 60, 0, 0, 0, 34,
+ 0, 0, 0, 59, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 59,
+ 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 56,
+ 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 60, 0, 0, 0, 34,
+ 0, 0, 0, 51, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 59,
+ 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,171, 0, 0, 0, 34, 0, 0, 0,171,
+ 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 34,
+ 0, 0, 0,172, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0,172, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89,
+ 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0,169, 0, 0, 0, 34, 0, 0, 0,169, 0, 0, 0,171, 0, 0, 0, 34, 0, 0, 0, 85,
+ 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0,170, 0, 0, 0, 34,
+ 0, 0, 0, 86, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,167, 0, 0, 0, 34, 0, 0, 0,167, 0, 0, 0,169,
+ 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 34, 0, 0, 0, 84,
+ 0, 0, 0,168, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0,165, 0, 0, 0, 34,
+ 0, 0, 0,165, 0, 0, 0,167, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0,166, 0, 0, 0,168,
+ 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0,166, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 79,
+ 0, 0, 0,163, 0, 0, 0, 34, 0, 0, 0,163, 0, 0, 0,165, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 81, 0, 0, 0, 34,
+ 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,164, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 82,
+ 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,143, 0, 0, 0, 34, 0, 0, 0,143,
+ 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0,144, 0, 0, 0, 34,
+ 0, 0, 0, 78, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,162, 0, 0, 0, 34, 0, 0, 0,144, 0, 0, 0,162,
+ 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0,145, 0, 0, 0, 34, 0, 0, 0,143,
+ 0, 0, 0,145, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0,146, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 34,
+ 0, 0, 0,144, 0, 0, 0,146, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0,147,
+ 0, 0, 0, 34, 0, 0, 0,145, 0, 0, 0,147, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0,148, 0, 0, 0, 34, 0, 0, 0, 93,
+ 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 96, 0, 0, 0, 34,
+ 0, 0, 0, 96, 0, 0, 0,149, 0, 0, 0, 34, 0, 0, 0,147, 0, 0, 0,149, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0,150,
+ 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0,148, 0, 0, 0,150, 0, 0, 0, 34, 0, 0, 0, 96,
+ 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,151, 0, 0, 0, 34, 0, 0, 0,149, 0, 0, 0,151, 0, 0, 0, 34,
+ 0, 0, 0, 99, 0, 0, 0,152, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0,150, 0, 0, 0,152,
+ 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,153, 0, 0, 0, 34, 0, 0, 0,151,
+ 0, 0, 0,153, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,154, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,101, 0, 0, 0, 34,
+ 0, 0, 0,152, 0, 0, 0,154, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,155,
+ 0, 0, 0, 34, 0, 0, 0,153, 0, 0, 0,155, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,156, 0, 0, 0, 34, 0, 0, 0,101,
+ 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,154, 0, 0, 0,156, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 34,
+ 0, 0, 0,104, 0, 0, 0,157, 0, 0, 0, 34, 0, 0, 0,155, 0, 0, 0,157, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,158,
+ 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,156, 0, 0, 0,158, 0, 0, 0, 34, 0, 0, 0,104,
+ 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,159, 0, 0, 0, 34, 0, 0, 0,157, 0, 0, 0,159, 0, 0, 0, 34,
+ 0, 0, 0,107, 0, 0, 0,160, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,158, 0, 0, 0,160,
+ 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 66,
+ 0, 0, 0,159, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,160, 0, 0, 0, 34,
+ 0, 0, 0,108, 0, 0, 0,125, 0, 0, 0, 34, 0, 0, 0,125, 0, 0, 0,157, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,159,
+ 0, 0, 0, 34, 0, 0, 0,126, 0, 0, 0,158, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,126, 0, 0, 0, 34, 0, 0, 0,109,
+ 0, 0, 0,160, 0, 0, 0, 34, 0, 0, 0,125, 0, 0, 0,176, 0, 0, 0, 34, 0, 0, 0,155, 0, 0, 0,176, 0, 0, 0, 34,
+ 0, 0, 0,156, 0, 0, 0,177, 0, 0, 0, 34, 0, 0, 0,126, 0, 0, 0,177, 0, 0, 0, 34, 0, 0, 0,123, 0, 0, 0,153,
+ 0, 0, 0, 34, 0, 0, 0,123, 0, 0, 0,176, 0, 0, 0, 34, 0, 0, 0,124, 0, 0, 0,154, 0, 0, 0, 34, 0, 0, 0,124,
+ 0, 0, 0,177, 0, 0, 0, 34, 0, 0, 0,121, 0, 0, 0,151, 0, 0, 0, 34, 0, 0, 0,121, 0, 0, 0,123, 0, 0, 0, 34,
+ 0, 0, 0,122, 0, 0, 0,152, 0, 0, 0, 34, 0, 0, 0,122, 0, 0, 0,124, 0, 0, 0, 34, 0, 0, 0,119, 0, 0, 0,149,
+ 0, 0, 0, 34, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 34, 0, 0, 0,120, 0, 0, 0,150, 0, 0, 0, 34, 0, 0, 0,120,
+ 0, 0, 0,122, 0, 0, 0, 34, 0, 0, 0,117, 0, 0, 0,147, 0, 0, 0, 34, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0, 34,
+ 0, 0, 0,118, 0, 0, 0,148, 0, 0, 0, 34, 0, 0, 0,118, 0, 0, 0,120, 0, 0, 0, 34, 0, 0, 0,115, 0, 0, 0,145,
+ 0, 0, 0, 34, 0, 0, 0,115, 0, 0, 0,117, 0, 0, 0, 34, 0, 0, 0,116, 0, 0, 0,146, 0, 0, 0, 34, 0, 0, 0,116,
+ 0, 0, 0,118, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,143, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 34,
+ 0, 0, 0,114, 0, 0, 0,144, 0, 0, 0, 34, 0, 0, 0,114, 0, 0, 0,116, 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,162,
+ 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0,174, 0, 0, 0,178, 0, 0, 0, 34, 0, 0, 0,161,
+ 0, 0, 0,174, 0, 0, 0, 34, 0, 0, 0,174, 0, 0, 0,179, 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,179, 0, 0, 0, 34,
+ 0, 0, 0,162, 0, 0, 0,174, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,110,
+ 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 66,
+ 0, 0, 0,175, 0, 0, 0, 34, 0, 0, 0,175, 0, 0, 0,180, 0, 0, 0, 34, 0, 0, 0,110, 0, 0, 0,180, 0, 0, 0, 34,
+ 0, 0, 0,111, 0, 0, 0,181, 0, 0, 0, 34, 0, 0, 0,175, 0, 0, 0,181, 0, 0, 0, 34, 0, 0, 0,178, 0, 0, 0,180,
+ 0, 0, 0, 34, 0, 0, 0,174, 0, 0, 0,175, 0, 0, 0, 32, 0, 0, 0,179, 0, 0, 0,181, 0, 0, 0, 34, 0, 0, 0,132,
+ 0, 0, 0,134, 0, 0, 0, 34, 0, 0, 0,134, 0, 0, 0,173, 0, 0, 0, 34, 0, 0, 0,132, 0, 0, 0,171, 0, 0, 0, 34,
+ 0, 0, 0,133, 0, 0, 0,134, 0, 0, 0, 34, 0, 0, 0,133, 0, 0, 0,172, 0, 0, 0, 34, 0, 0, 0,130, 0, 0, 0,132,
+ 0, 0, 0, 34, 0, 0, 0,130, 0, 0, 0,169, 0, 0, 0, 34, 0, 0, 0,131, 0, 0, 0,133, 0, 0, 0, 34, 0, 0, 0,131,
+ 0, 0, 0,170, 0, 0, 0, 34, 0, 0, 0,128, 0, 0, 0,130, 0, 0, 0, 34, 0, 0, 0,128, 0, 0, 0,167, 0, 0, 0, 34,
+ 0, 0, 0,129, 0, 0, 0,131, 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,168, 0, 0, 0, 34, 0, 0, 0,163, 0, 0, 0,184,
+ 0, 0, 0, 34, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0, 34, 0, 0, 0,165, 0, 0, 0,182, 0, 0, 0, 34, 0, 0, 0,183,
+ 0, 0, 0,185, 0, 0, 0, 34, 0, 0, 0,164, 0, 0, 0,185, 0, 0, 0, 34, 0, 0, 0,166, 0, 0, 0,183, 0, 0, 0, 34,
+ 0, 0, 0,128, 0, 0, 0,182, 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,183, 0, 0, 0, 34, 0, 0, 0,141, 0, 0, 0,187,
+ 0, 0, 0, 34, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0, 32, 0, 0, 0,184, 0, 0, 0,186, 0, 0, 0, 34, 0, 0, 0,141,
+ 0, 0, 0,184, 0, 0, 0, 34, 0, 0, 0,142, 0, 0, 0,187, 0, 0, 0, 34, 0, 0, 0,142, 0, 0, 0,185, 0, 0, 0, 34,
+ 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,186, 0, 0, 0, 32, 0, 0, 0, 67, 0, 0, 0,182,
+ 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,183, 0, 0, 0, 34, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0, 34, 0, 0, 0, 67,
+ 0, 0, 0,127, 0, 0, 0, 32, 0, 0, 0,127, 0, 0, 0,129, 0, 0, 0, 34, 0, 0, 0,139, 0, 0, 0,190, 0, 0, 0, 34,
+ 0, 0, 0,188, 0, 0, 0,190, 0, 0, 0, 34, 0, 0, 0,141, 0, 0, 0,188, 0, 0, 0, 34, 0, 0, 0,139, 0, 0, 0,141,
+ 0, 0, 0, 34, 0, 0, 0,189, 0, 0, 0,191, 0, 0, 0, 34, 0, 0, 0,140, 0, 0, 0,191, 0, 0, 0, 34, 0, 0, 0,140,
+ 0, 0, 0,142, 0, 0, 0, 34, 0, 0, 0,142, 0, 0, 0,189, 0, 0, 0, 34, 0, 0, 0,137, 0, 0, 0,192, 0, 0, 0, 34,
+ 0, 0, 0,190, 0, 0, 0,192, 0, 0, 0, 34, 0, 0, 0,137, 0, 0, 0,139, 0, 0, 0, 34, 0, 0, 0,191, 0, 0, 0,193,
+ 0, 0, 0, 34, 0, 0, 0,138, 0, 0, 0,193, 0, 0, 0, 34, 0, 0, 0,138, 0, 0, 0,140, 0, 0, 0, 34, 0, 0, 0,136,
+ 0, 0, 0,194, 0, 0, 0, 34, 0, 0, 0,192, 0, 0, 0,194, 0, 0, 0, 34, 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0, 34,
+ 0, 0, 0,193, 0, 0, 0,195, 0, 0, 0, 34, 0, 0, 0,136, 0, 0, 0,195, 0, 0, 0, 34, 0, 0, 0,136, 0, 0, 0,138,
+ 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,135, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,194, 0, 0, 0, 34, 0, 0, 0,135,
+ 0, 0, 0,136, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,195, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0,188, 0, 0, 0, 34,
+ 0, 0, 0, 68, 0, 0, 0,187, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0,189, 0, 0, 0, 34, 0, 0, 0,188, 0, 0, 0,203,
+ 0, 0, 0, 34, 0, 0, 0,203, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0,189,
+ 0, 0, 0,204, 0, 0, 0, 34, 0, 0, 0,204, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,196, 0, 0, 0, 34,
+ 0, 0, 0,196, 0, 0, 0,197, 0, 0, 0, 34, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0, 34, 0, 0, 0,196, 0, 0, 0,198,
+ 0, 0, 0, 34, 0, 0, 0,195, 0, 0, 0,198, 0, 0, 0, 34, 0, 0, 0,197, 0, 0, 0,199, 0, 0, 0, 34, 0, 0, 0,192,
+ 0, 0, 0,199, 0, 0, 0, 34, 0, 0, 0,198, 0, 0, 0,200, 0, 0, 0, 34, 0, 0, 0,193, 0, 0, 0,200, 0, 0, 0, 34,
+ 0, 0, 0,199, 0, 0, 0,201, 0, 0, 0, 34, 0, 0, 0,190, 0, 0, 0,201, 0, 0, 0, 34, 0, 0, 0,200, 0, 0, 0,202,
+ 0, 0, 0, 34, 0, 0, 0,191, 0, 0, 0,202, 0, 0, 0, 34, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0, 34, 0, 0, 0,202,
+ 0, 0, 0,204, 0, 0, 0, 34, 0, 0, 0,196, 0, 0, 0,201, 0, 0, 0, 34, 0, 0, 0,196, 0, 0, 0,202, 0, 0, 0, 34,
+ 0, 0, 0,196, 0, 0, 0,205, 0, 0, 0, 34, 0, 0, 0,137, 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0,136, 0, 0, 0,174,
+ 0, 0, 0, 34, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0, 34, 0, 0, 0,139, 0, 0, 0,208, 0, 0, 0, 34, 0, 0, 0,161,
+ 0, 0, 0,208, 0, 0, 0, 34, 0, 0, 0,140, 0, 0, 0,209, 0, 0, 0, 34, 0, 0, 0,162, 0, 0, 0,209, 0, 0, 0, 34,
+ 0, 0, 0,141, 0, 0, 0,210, 0, 0, 0, 34, 0, 0, 0,208, 0, 0, 0,210, 0, 0, 0, 34, 0, 0, 0,142, 0, 0, 0,211,
+ 0, 0, 0, 34, 0, 0, 0,209, 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0,163, 0, 0, 0,210, 0, 0, 0, 34, 0, 0, 0,164,
+ 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,206, 0, 0, 0, 34, 0, 0, 0,206, 0, 0, 0,210, 0, 0, 0, 34,
+ 0, 0, 0,207, 0, 0, 0,211, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,207, 0, 0, 0, 34, 0, 0, 0,206, 0, 0, 0,212,
+ 0, 0, 0, 34, 0, 0, 0,208, 0, 0, 0,212, 0, 0, 0, 34, 0, 0, 0,209, 0, 0, 0,213, 0, 0, 0, 34, 0, 0, 0,207,
+ 0, 0, 0,213, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0,212, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,213, 0, 0, 0, 34,
+ 0, 0, 0, 70, 0, 0, 0,127, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,219, 0, 0, 0, 34, 0, 0, 0,128, 0, 0, 0,219,
+ 0, 0, 0, 34, 0, 0, 0,129, 0, 0, 0,220, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,220, 0, 0, 0, 34, 0, 0, 0,217,
+ 0, 0, 0,219, 0, 0, 0, 34, 0, 0, 0,130, 0, 0, 0,217, 0, 0, 0, 34, 0, 0, 0,131, 0, 0, 0,218, 0, 0, 0, 34,
+ 0, 0, 0,218, 0, 0, 0,220, 0, 0, 0, 34, 0, 0, 0,215, 0, 0, 0,217, 0, 0, 0, 34, 0, 0, 0,132, 0, 0, 0,215,
+ 0, 0, 0, 34, 0, 0, 0,133, 0, 0, 0,216, 0, 0, 0, 34, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0, 34, 0, 0, 0,214,
+ 0, 0, 0,215, 0, 0, 0, 34, 0, 0, 0,134, 0, 0, 0,214, 0, 0, 0, 34, 0, 0, 0,214, 0, 0, 0,216, 0, 0, 0, 34,
+ 0, 0, 0,215, 0, 0, 0,226, 0, 0, 0, 34, 0, 0, 0,226, 0, 0, 0,228, 0, 0, 0, 34, 0, 0, 0,214, 0, 0, 0,228,
+ 0, 0, 0, 34, 0, 0, 0,216, 0, 0, 0,227, 0, 0, 0, 34, 0, 0, 0,227, 0, 0, 0,228, 0, 0, 0, 34, 0, 0, 0,217,
+ 0, 0, 0,224, 0, 0, 0, 34, 0, 0, 0,224, 0, 0, 0,226, 0, 0, 0, 34, 0, 0, 0,218, 0, 0, 0,225, 0, 0, 0, 34,
+ 0, 0, 0,225, 0, 0, 0,227, 0, 0, 0, 34, 0, 0, 0,219, 0, 0, 0,222, 0, 0, 0, 34, 0, 0, 0,222, 0, 0, 0,224,
+ 0, 0, 0, 34, 0, 0, 0,220, 0, 0, 0,223, 0, 0, 0, 34, 0, 0, 0,223, 0, 0, 0,225, 0, 0, 0, 34, 0, 0, 0, 70,
+ 0, 0, 0,221, 0, 0, 0, 34, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0, 34, 0, 0, 0,221, 0, 0, 0,223, 0, 0, 0, 34,
+ 0, 0, 0,221, 0, 0, 0,228, 0, 0, 0, 34, 0, 0, 0,222, 0, 0, 0,226, 0, 0, 0, 34, 0, 0, 0,223, 0, 0, 0,227,
+ 0, 0, 0, 34, 0, 0, 0,178, 0, 0, 0,231, 0, 0, 0, 34, 0, 0, 0,229, 0, 0, 0,231, 0, 0, 0, 34, 0, 0, 0,180,
+ 0, 0, 0,229, 0, 0, 0, 34, 0, 0, 0,179, 0, 0, 0,232, 0, 0, 0, 34, 0, 0, 0,181, 0, 0, 0,230, 0, 0, 0, 34,
+ 0, 0, 0,230, 0, 0, 0,232, 0, 0, 0, 34, 0, 0, 0,229, 0, 0, 0,251, 0, 0, 0, 34, 0, 0, 0,110, 0, 0, 0,251,
+ 0, 0, 0, 34, 0, 0, 0,111, 0, 0, 0,252, 0, 0, 0, 34, 0, 0, 0,230, 0, 0, 0,252, 0, 0, 0, 34, 0, 0, 0,251,
+ 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,254, 0, 0, 0, 34,
+ 0, 0, 0,252, 0, 0, 0,254, 0, 0, 0, 34, 0, 0, 0,231, 0, 0, 0,249, 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,250,
+ 0, 0, 0, 34, 0, 0, 0,232, 0, 0, 0,250, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,247, 0, 0, 0, 34, 0, 0, 0,247,
+ 0, 0, 0,249, 0, 0, 0, 34, 0, 0, 0,114, 0, 0, 0,248, 0, 0, 0, 34, 0, 0, 0,248, 0, 0, 0,250, 0, 0, 0, 34,
+ 0, 0, 0,115, 0, 0, 0,245, 0, 0, 0, 34, 0, 0, 0,245, 0, 0, 0,247, 0, 0, 0, 34, 0, 0, 0,116, 0, 0, 0,246,
+ 0, 0, 0, 34, 0, 0, 0,246, 0, 0, 0,248, 0, 0, 0, 34, 0, 0, 0,117, 0, 0, 0,243, 0, 0, 0, 34, 0, 0, 0,243,
+ 0, 0, 0,245, 0, 0, 0, 34, 0, 0, 0,118, 0, 0, 0,244, 0, 0, 0, 34, 0, 0, 0,244, 0, 0, 0,246, 0, 0, 0, 34,
+ 0, 0, 0,119, 0, 0, 0,241, 0, 0, 0, 34, 0, 0, 0,241, 0, 0, 0,243, 0, 0, 0, 34, 0, 0, 0,120, 0, 0, 0,242,
+ 0, 0, 0, 34, 0, 0, 0,242, 0, 0, 0,244, 0, 0, 0, 34, 0, 0, 0,121, 0, 0, 0,239, 0, 0, 0, 34, 0, 0, 0,239,
+ 0, 0, 0,241, 0, 0, 0, 34, 0, 0, 0,122, 0, 0, 0,240, 0, 0, 0, 34, 0, 0, 0,240, 0, 0, 0,242, 0, 0, 0, 34,
+ 0, 0, 0,123, 0, 0, 0,237, 0, 0, 0, 34, 0, 0, 0,237, 0, 0, 0,239, 0, 0, 0, 34, 0, 0, 0,124, 0, 0, 0,238,
+ 0, 0, 0, 34, 0, 0, 0,238, 0, 0, 0,240, 0, 0, 0, 34, 0, 0, 0,176, 0, 0, 0,233, 0, 0, 0, 34, 0, 0, 0,233,
+ 0, 0, 0,237, 0, 0, 0, 34, 0, 0, 0,177, 0, 0, 0,234, 0, 0, 0, 34, 0, 0, 0,234, 0, 0, 0,238, 0, 0, 0, 34,
+ 0, 0, 0,125, 0, 0, 0,235, 0, 0, 0, 34, 0, 0, 0,233, 0, 0, 0,235, 0, 0, 0, 34, 0, 0, 0,126, 0, 0, 0,236,
+ 0, 0, 0, 34, 0, 0, 0,234, 0, 0, 0,236, 0, 0, 0, 34, 0, 0, 0,235, 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 0,236,
+ 0, 0, 0,254, 0, 0, 0, 34, 0, 0, 0,253, 0, 0, 0,255, 0, 0, 0, 34, 0, 0, 0,255, 0, 0, 1, 17, 0, 0, 0, 34,
+ 0, 0, 0,235, 0, 0, 1, 17, 0, 0, 0, 34, 0, 0, 0,254, 0, 0, 1, 0, 0, 0, 0, 34, 0, 0, 0,236, 0, 0, 1, 18,
+ 0, 0, 0, 34, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0, 0, 34, 0, 0, 1, 17, 0, 0, 1, 19, 0, 0, 0, 34, 0, 0, 0,233,
+ 0, 0, 1, 19, 0, 0, 0, 34, 0, 0, 0,234, 0, 0, 1, 20, 0, 0, 0, 34, 0, 0, 1, 18, 0, 0, 1, 20, 0, 0, 0, 34,
+ 0, 0, 1, 15, 0, 0, 1, 19, 0, 0, 0, 34, 0, 0, 0,237, 0, 0, 1, 15, 0, 0, 0, 34, 0, 0, 0,238, 0, 0, 1, 16,
+ 0, 0, 0, 34, 0, 0, 1, 16, 0, 0, 1, 20, 0, 0, 0, 34, 0, 0, 1, 13, 0, 0, 1, 15, 0, 0, 0, 34, 0, 0, 0,239,
+ 0, 0, 1, 13, 0, 0, 0, 34, 0, 0, 0,240, 0, 0, 1, 14, 0, 0, 0, 34, 0, 0, 1, 14, 0, 0, 1, 16, 0, 0, 0, 34,
+ 0, 0, 1, 11, 0, 0, 1, 13, 0, 0, 0, 34, 0, 0, 0,241, 0, 0, 1, 11, 0, 0, 0, 34, 0, 0, 0,242, 0, 0, 1, 12,
+ 0, 0, 0, 34, 0, 0, 1, 12, 0, 0, 1, 14, 0, 0, 0, 34, 0, 0, 1, 9, 0, 0, 1, 11, 0, 0, 0, 34, 0, 0, 0,243,
+ 0, 0, 1, 9, 0, 0, 0, 34, 0, 0, 0,244, 0, 0, 1, 10, 0, 0, 0, 34, 0, 0, 1, 10, 0, 0, 1, 12, 0, 0, 0, 34,
+ 0, 0, 1, 7, 0, 0, 1, 9, 0, 0, 0, 34, 0, 0, 0,245, 0, 0, 1, 7, 0, 0, 0, 34, 0, 0, 0,246, 0, 0, 1, 8,
+ 0, 0, 0, 34, 0, 0, 1, 8, 0, 0, 1, 10, 0, 0, 0, 34, 0, 0, 1, 5, 0, 0, 1, 7, 0, 0, 0, 34, 0, 0, 0,247,
+ 0, 0, 1, 5, 0, 0, 0, 34, 0, 0, 0,248, 0, 0, 1, 6, 0, 0, 0, 34, 0, 0, 1, 6, 0, 0, 1, 8, 0, 0, 0, 34,
+ 0, 0, 1, 3, 0, 0, 1, 5, 0, 0, 0, 34, 0, 0, 0,249, 0, 0, 1, 3, 0, 0, 0, 34, 0, 0, 0,250, 0, 0, 1, 4,
+ 0, 0, 0, 34, 0, 0, 1, 4, 0, 0, 1, 6, 0, 0, 0, 34, 0, 0, 1, 3, 0, 0, 1, 21, 0, 0, 0, 34, 0, 0, 0,231,
+ 0, 0, 1, 21, 0, 0, 0, 34, 0, 0, 0,232, 0, 0, 1, 22, 0, 0, 0, 34, 0, 0, 1, 4, 0, 0, 1, 22, 0, 0, 0, 34,
+ 0, 0, 0,251, 0, 0, 1, 1, 0, 0, 0, 34, 0, 0, 0,255, 0, 0, 1, 1, 0, 0, 0, 34, 0, 0, 0,252, 0, 0, 1, 2,
+ 0, 0, 0, 34, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0, 0, 34, 0, 0, 0,229, 0, 0, 1, 23, 0, 0, 0, 34, 0, 0, 1, 1,
+ 0, 0, 1, 23, 0, 0, 0, 34, 0, 0, 0,230, 0, 0, 1, 24, 0, 0, 0, 34, 0, 0, 1, 2, 0, 0, 1, 24, 0, 0, 0, 34,
+ 0, 0, 1, 21, 0, 0, 1, 23, 0, 0, 0, 34, 0, 0, 1, 22, 0, 0, 1, 24, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 1, 25,
+ 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 1, 25, 0, 0, 0, 38, 0, 0, 0, 65, 0, 0, 0, 71, 0, 0, 0, 34, 0, 0, 0,107,
+ 0, 0, 1, 26, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 1, 26, 0, 0, 0, 38, 0, 0, 0,104, 0, 0, 1, 27, 0, 0, 0, 34,
+ 0, 0, 1, 25, 0, 0, 1, 27, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 1, 28, 0, 0, 0, 34, 0, 0, 1, 26, 0, 0, 1, 28,
+ 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 1, 29, 0, 0, 0, 34, 0, 0, 1, 27, 0, 0, 1, 29, 0, 0, 0, 34, 0, 0, 0,103,
+ 0, 0, 1, 30, 0, 0, 0, 34, 0, 0, 1, 28, 0, 0, 1, 30, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 1, 31, 0, 0, 0, 34,
+ 0, 0, 1, 29, 0, 0, 1, 31, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 1, 32, 0, 0, 0, 34, 0, 0, 1, 30, 0, 0, 1, 32,
+ 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 1, 33, 0, 0, 0, 34, 0, 0, 1, 31, 0, 0, 1, 33, 0, 0, 0, 38, 0, 0, 0, 99,
+ 0, 0, 1, 34, 0, 0, 0, 34, 0, 0, 1, 32, 0, 0, 1, 34, 0, 0, 0, 38, 0, 0, 0, 96, 0, 0, 1, 35, 0, 0, 0, 34,
+ 0, 0, 1, 33, 0, 0, 1, 35, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 1, 36, 0, 0, 0, 34, 0, 0, 1, 34, 0, 0, 1, 36,
+ 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 1, 37, 0, 0, 0, 34, 0, 0, 1, 35, 0, 0, 1, 37, 0, 0, 0, 34, 0, 0, 0, 95,
+ 0, 0, 1, 38, 0, 0, 0, 34, 0, 0, 1, 36, 0, 0, 1, 38, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 1, 39, 0, 0, 0, 34,
+ 0, 0, 1, 37, 0, 0, 1, 39, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 1, 40, 0, 0, 0, 34, 0, 0, 1, 38, 0, 0, 1, 40,
+ 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 1, 41, 0, 0, 0, 34, 0, 0, 1, 39, 0, 0, 1, 41, 0, 0, 0, 34, 0, 0, 0, 91,
+ 0, 0, 1, 42, 0, 0, 0, 34, 0, 0, 1, 40, 0, 0, 1, 42, 0, 0, 0, 34, 0, 0, 1, 49, 0, 0, 1, 50, 0, 0, 0, 38,
+ 0, 0, 1, 50, 0, 0, 1, 69, 0, 0, 0, 34, 0, 0, 1, 69, 0, 0, 1, 79, 0, 0, 0, 34, 0, 0, 1, 49, 0, 0, 1, 79,
+ 0, 0, 0, 34, 0, 0, 1, 50, 0, 0, 1, 70, 0, 0, 0, 34, 0, 0, 1, 49, 0, 0, 1, 80, 0, 0, 0, 34, 0, 0, 1, 70,
+ 0, 0, 1, 80, 0, 0, 0, 34, 0, 0, 1, 48, 0, 0, 1, 49, 0, 0, 0, 38, 0, 0, 1, 77, 0, 0, 1, 79, 0, 0, 0, 34,
+ 0, 0, 1, 48, 0, 0, 1, 77, 0, 0, 0, 34, 0, 0, 1, 48, 0, 0, 1, 78, 0, 0, 0, 34, 0, 0, 1, 78, 0, 0, 1, 80,
+ 0, 0, 0, 34, 0, 0, 1, 47, 0, 0, 1, 48, 0, 0, 0, 38, 0, 0, 1, 77, 0, 0, 1, 81, 0, 0, 0, 34, 0, 0, 1, 47,
+ 0, 0, 1, 81, 0, 0, 0, 34, 0, 0, 1, 47, 0, 0, 1, 82, 0, 0, 0, 34, 0, 0, 1, 78, 0, 0, 1, 82, 0, 0, 0, 34,
+ 0, 0, 0, 89, 0, 0, 1, 47, 0, 0, 0, 38, 0, 0, 0, 87, 0, 0, 1, 81, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 1, 82,
+ 0, 0, 0, 34, 0, 0, 1, 75, 0, 0, 1, 81, 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 1, 75, 0, 0, 0, 34, 0, 0, 0, 86,
+ 0, 0, 1, 76, 0, 0, 0, 34, 0, 0, 1, 76, 0, 0, 1, 82, 0, 0, 0, 34, 0, 0, 1, 71, 0, 0, 1, 75, 0, 0, 0, 34,
+ 0, 0, 0, 83, 0, 0, 1, 71, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 1, 72, 0, 0, 0, 34, 0, 0, 1, 72, 0, 0, 1, 76,
+ 0, 0, 0, 34, 0, 0, 1, 71, 0, 0, 1, 73, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 1, 73, 0, 0, 0, 34, 0, 0, 0, 82,
+ 0, 0, 1, 74, 0, 0, 0, 34, 0, 0, 1, 72, 0, 0, 1, 74, 0, 0, 0, 34, 0, 0, 1, 71, 0, 0, 1, 77, 0, 0, 0, 34,
+ 0, 0, 1, 73, 0, 0, 1, 79, 0, 0, 0, 34, 0, 0, 1, 72, 0, 0, 1, 78, 0, 0, 0, 34, 0, 0, 1, 74, 0, 0, 1, 80,
+ 0, 0, 0, 34, 0, 0, 1, 67, 0, 0, 1, 73, 0, 0, 0, 34, 0, 0, 1, 67, 0, 0, 1, 69, 0, 0, 0, 34, 0, 0, 1, 68,
+ 0, 0, 1, 74, 0, 0, 0, 34, 0, 0, 1, 68, 0, 0, 1, 70, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 1, 67, 0, 0, 0, 34,
+ 0, 0, 0, 80, 0, 0, 1, 68, 0, 0, 0, 34, 0, 0, 0,206, 0, 0, 1, 83, 0, 0, 0, 34, 0, 0, 1, 83, 0, 0, 1, 85,
+ 0, 0, 0, 34, 0, 0, 0,212, 0, 0, 1, 85, 0, 0, 0, 34, 0, 0, 1, 84, 0, 0, 1, 86, 0, 0, 0, 34, 0, 0, 0,207,
+ 0, 0, 1, 84, 0, 0, 0, 34, 0, 0, 0,213, 0, 0, 1, 86, 0, 0, 0, 34, 0, 0, 1, 67, 0, 0, 1, 83, 0, 0, 0, 34,
+ 0, 0, 1, 68, 0, 0, 1, 84, 0, 0, 0, 34, 0, 0, 1, 85, 0, 0, 1, 87, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 1, 87,
+ 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 1, 88, 0, 0, 0, 34, 0, 0, 1, 86, 0, 0, 1, 88, 0, 0, 0, 34, 0, 0, 1, 41,
+ 0, 0, 1, 87, 0, 0, 0, 34, 0, 0, 1, 42, 0, 0, 1, 88, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 1, 65, 0, 0, 0, 34,
+ 0, 0, 1, 65, 0, 0, 1, 93, 0, 0, 0, 34, 0, 0, 1, 45, 0, 0, 1, 93, 0, 0, 0, 39, 0, 0, 0, 75, 0, 0, 1, 45,
+ 0, 0, 0, 38, 0, 0, 1, 66, 0, 0, 1, 94, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 1, 66, 0, 0, 0, 34, 0, 0, 1, 45,
+ 0, 0, 1, 94, 0, 0, 0, 39, 0, 0, 1, 91, 0, 0, 1, 93, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 1, 91, 0, 0, 0, 34,
+ 0, 0, 0, 76, 0, 0, 1, 45, 0, 0, 0, 38, 0, 0, 1, 92, 0, 0, 1, 94, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 1, 92,
+ 0, 0, 0, 34, 0, 0, 1, 89, 0, 0, 1, 91, 0, 0, 0, 34, 0, 0, 1, 46, 0, 0, 1, 89, 0, 0, 0, 34, 0, 0, 0, 76,
+ 0, 0, 1, 46, 0, 0, 0, 38, 0, 0, 1, 90, 0, 0, 1, 92, 0, 0, 0, 34, 0, 0, 1, 46, 0, 0, 1, 90, 0, 0, 0, 34,
+ 0, 0, 1, 69, 0, 0, 1, 89, 0, 0, 0, 34, 0, 0, 1, 46, 0, 0, 1, 50, 0, 0, 0, 38, 0, 0, 1, 70, 0, 0, 1, 90,
+ 0, 0, 0, 34, 0, 0, 1, 83, 0, 0, 1, 89, 0, 0, 0, 34, 0, 0, 1, 84, 0, 0, 1, 90, 0, 0, 0, 34, 0, 0, 1, 39,
+ 0, 0, 1, 59, 0, 0, 0, 34, 0, 0, 1, 51, 0, 0, 1, 59, 0, 0, 0, 34, 0, 0, 1, 37, 0, 0, 1, 51, 0, 0, 0, 34,
+ 0, 0, 1, 40, 0, 0, 1, 60, 0, 0, 0, 34, 0, 0, 1, 38, 0, 0, 1, 52, 0, 0, 0, 34, 0, 0, 1, 52, 0, 0, 1, 60,
+ 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 1, 57, 0, 0, 0, 39, 0, 0, 1, 57, 0, 0, 1, 65, 0, 0, 0, 34, 0, 0, 0, 74,
+ 0, 0, 0, 75, 0, 0, 0, 38, 0, 0, 1, 58, 0, 0, 1, 66, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 1, 58, 0, 0, 0, 39,
+ 0, 0, 1, 43, 0, 0, 1, 99, 0, 0, 0, 34, 0, 0, 1, 97, 0, 0, 1, 99, 0, 0, 0, 34, 0, 0, 1, 44, 0, 0, 1, 97,
+ 0, 0, 0, 34, 0, 0, 1, 43, 0, 0, 1, 44, 0, 0, 0, 38, 0, 0, 1, 98, 0, 0, 1,100, 0, 0, 0, 34, 0, 0, 1, 43,
+ 0, 0, 1,100, 0, 0, 0, 34, 0, 0, 1, 44, 0, 0, 1, 98, 0, 0, 0, 34, 0, 0, 1, 95, 0, 0, 1, 97, 0, 0, 0, 34,
+ 0, 0, 0, 73, 0, 0, 1, 95, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 1, 44, 0, 0, 0, 38, 0, 0, 1, 96, 0, 0, 1, 98,
+ 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 1, 96, 0, 0, 0, 34, 0, 0, 1, 57, 0, 0, 1, 95, 0, 0, 0, 34, 0, 0, 0, 73,
+ 0, 0, 0, 74, 0, 0, 0, 38, 0, 0, 1, 58, 0, 0, 1, 96, 0, 0, 0, 34, 0, 0, 1, 35, 0, 0, 1,103, 0, 0, 0, 34,
+ 0, 0, 1,103, 0, 0, 1,105, 0, 0, 0, 34, 0, 0, 1, 33, 0, 0, 1,105, 0, 0, 0, 34, 0, 0, 1, 36, 0, 0, 1,104,
+ 0, 0, 0, 34, 0, 0, 1, 34, 0, 0, 1,106, 0, 0, 0, 34, 0, 0, 1,104, 0, 0, 1,106, 0, 0, 0, 34, 0, 0, 1,103,
+ 0, 0, 1,109, 0, 0, 0, 34, 0, 0, 1,107, 0, 0, 1,109, 0, 0, 0, 34, 0, 0, 1,105, 0, 0, 1,107, 0, 0, 0, 34,
+ 0, 0, 1,104, 0, 0, 1,110, 0, 0, 0, 34, 0, 0, 1,106, 0, 0, 1,108, 0, 0, 0, 34, 0, 0, 1,108, 0, 0, 1,110,
+ 0, 0, 0, 34, 0, 0, 1,109, 0, 0, 1,111, 0, 0, 0, 34, 0, 0, 1,111, 0, 0, 1,113, 0, 0, 0, 34, 0, 0, 1,107,
+ 0, 0, 1,113, 0, 0, 0, 34, 0, 0, 1,110, 0, 0, 1,112, 0, 0, 0, 34, 0, 0, 1,108, 0, 0, 1,114, 0, 0, 0, 34,
+ 0, 0, 1,112, 0, 0, 1,114, 0, 0, 0, 34, 0, 0, 1,111, 0, 0, 1,117, 0, 0, 0, 34, 0, 0, 1,115, 0, 0, 1,117,
+ 0, 0, 0, 34, 0, 0, 1,113, 0, 0, 1,115, 0, 0, 0, 34, 0, 0, 1,112, 0, 0, 1,118, 0, 0, 0, 34, 0, 0, 1,114,
+ 0, 0, 1,116, 0, 0, 0, 34, 0, 0, 1,116, 0, 0, 1,118, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1,119, 0, 0, 0, 39,
+ 0, 0, 1,115, 0, 0, 1,119, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1,117, 0, 0, 0, 34, 0, 0, 1,116, 0, 0, 1,120,
+ 0, 0, 0, 34, 0, 0, 1, 56, 0, 0, 1,120, 0, 0, 0, 39, 0, 0, 1, 56, 0, 0, 1,118, 0, 0, 0, 34, 0, 0, 1, 95,
+ 0, 0, 1,115, 0, 0, 0, 34, 0, 0, 1, 57, 0, 0, 1,119, 0, 0, 0, 39, 0, 0, 1, 96, 0, 0, 1,116, 0, 0, 0, 34,
+ 0, 0, 1, 58, 0, 0, 1,120, 0, 0, 0, 39, 0, 0, 1, 97, 0, 0, 1,113, 0, 0, 0, 34, 0, 0, 1, 98, 0, 0, 1,114,
+ 0, 0, 0, 34, 0, 0, 1, 99, 0, 0, 1,107, 0, 0, 0, 34, 0, 0, 1,100, 0, 0, 1,108, 0, 0, 0, 34, 0, 0, 1, 99,
+ 0, 0, 1,101, 0, 0, 0, 34, 0, 0, 1,101, 0, 0, 1,105, 0, 0, 0, 34, 0, 0, 1,102, 0, 0, 1,106, 0, 0, 0, 34,
+ 0, 0, 1,100, 0, 0, 1,102, 0, 0, 0, 34, 0, 0, 1, 31, 0, 0, 1,101, 0, 0, 0, 34, 0, 0, 1, 32, 0, 0, 1,102,
+ 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 1,101, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 1, 43, 0, 0, 0, 38, 0, 0, 0, 72,
+ 0, 0, 1,102, 0, 0, 0, 34, 0, 0, 1, 25, 0, 0, 1, 31, 0, 0, 0, 38, 0, 0, 1, 26, 0, 0, 1, 32, 0, 0, 0, 38,
+ 0, 0, 0, 72, 0, 0, 1, 25, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 1, 26, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 72,
+ 0, 0, 0, 38, 0, 0, 1, 51, 0, 0, 1,103, 0, 0, 0, 34, 0, 0, 1, 52, 0, 0, 1,104, 0, 0, 0, 34, 0, 0, 1, 51,
+ 0, 0, 1, 53, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,109, 0, 0, 0, 34, 0, 0, 1, 54, 0, 0, 1,110, 0, 0, 0, 34,
+ 0, 0, 1, 52, 0, 0, 1, 54, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,123, 0, 0, 0, 34, 0, 0, 1,111, 0, 0, 1,123,
+ 0, 0, 0, 34, 0, 0, 1,112, 0, 0, 1,124, 0, 0, 0, 34, 0, 0, 1, 54, 0, 0, 1,124, 0, 0, 0, 34, 0, 0, 1, 55,
+ 0, 0, 1,123, 0, 0, 0, 34, 0, 0, 1, 56, 0, 0, 1,124, 0, 0, 0, 34, 0, 0, 1, 91, 0, 0, 1,127, 0, 0, 0, 34,
+ 0, 0, 1,125, 0, 0, 1,127, 0, 0, 0, 34, 0, 0, 1, 89, 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 92, 0, 0, 1,128,
+ 0, 0, 0, 34, 0, 0, 1, 90, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1,126, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 1, 59,
+ 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 61, 0, 0, 1,127, 0, 0, 0, 34, 0, 0, 1, 59, 0, 0, 1, 61, 0, 0, 0, 34,
+ 0, 0, 1, 60, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1, 60, 0, 0, 1, 62, 0, 0, 0, 34, 0, 0, 1, 62, 0, 0, 1,128,
+ 0, 0, 0, 34, 0, 0, 1, 41, 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 42, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1, 41,
+ 0, 0, 1, 85, 0, 0, 0, 34, 0, 0, 1, 83, 0, 0, 1,125, 0, 0, 0, 34, 0, 0, 1, 42, 0, 0, 1, 86, 0, 0, 0, 34,
+ 0, 0, 1, 84, 0, 0, 1,126, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1, 63, 0, 0, 0, 34, 0, 0, 1, 63, 0, 0, 1,121,
+ 0, 0, 0, 39, 0, 0, 1,119, 0, 0, 1,121, 0, 0, 0, 34, 0, 0, 1, 64, 0, 0, 1,122, 0, 0, 0, 39, 0, 0, 1, 56,
+ 0, 0, 1, 64, 0, 0, 0, 34, 0, 0, 1,120, 0, 0, 1,122, 0, 0, 0, 34, 0, 0, 1, 65, 0, 0, 1,121, 0, 0, 0, 34,
+ 0, 0, 1, 66, 0, 0, 1,122, 0, 0, 0, 34, 0, 0, 1,121, 0, 0, 1,127, 0, 0, 0, 34, 0, 0, 1, 61, 0, 0, 1, 63,
+ 0, 0, 0, 34, 0, 0, 1,122, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 1, 62, 0, 0, 1, 64, 0, 0, 0, 34, 0, 0, 1, 93,
+ 0, 0, 1,121, 0, 0, 0, 39, 0, 0, 1, 94, 0, 0, 1,122, 0, 0, 0, 39, 0, 0, 1,129, 0, 0, 1,141, 0, 0, 0, 34,
+ 0, 0, 1,129, 0, 0, 1,155, 0, 0, 0, 34, 0, 0, 1,143, 0, 0, 1,155, 0, 0, 0, 34, 0, 0, 1,141, 0, 0, 1,143,
+ 0, 0, 0, 34, 0, 0, 1,130, 0, 0, 1,156, 0, 0, 0, 34, 0, 0, 1,130, 0, 0, 1,142, 0, 0, 0, 34, 0, 0, 1,142,
+ 0, 0, 1,144, 0, 0, 0, 34, 0, 0, 1,144, 0, 0, 1,156, 0, 0, 0, 34, 0, 0, 1,143, 0, 0, 1,145, 0, 0, 0, 34,
+ 0, 0, 1,139, 0, 0, 1,145, 0, 0, 0, 34, 0, 0, 1,139, 0, 0, 1,141, 0, 0, 0, 34, 0, 0, 1,144, 0, 0, 1,146,
+ 0, 0, 0, 34, 0, 0, 1,140, 0, 0, 1,142, 0, 0, 0, 34, 0, 0, 1,140, 0, 0, 1,146, 0, 0, 0, 34, 0, 0, 1,145,
+ 0, 0, 1,147, 0, 0, 0, 34, 0, 0, 1,137, 0, 0, 1,147, 0, 0, 0, 34, 0, 0, 1,137, 0, 0, 1,139, 0, 0, 0, 34,
+ 0, 0, 1,146, 0, 0, 1,148, 0, 0, 0, 34, 0, 0, 1,138, 0, 0, 1,140, 0, 0, 0, 34, 0, 0, 1,138, 0, 0, 1,148,
+ 0, 0, 0, 34, 0, 0, 1,147, 0, 0, 1,149, 0, 0, 0, 34, 0, 0, 1,135, 0, 0, 1,149, 0, 0, 0, 34, 0, 0, 1,135,
+ 0, 0, 1,137, 0, 0, 0, 34, 0, 0, 1,148, 0, 0, 1,150, 0, 0, 0, 34, 0, 0, 1,136, 0, 0, 1,138, 0, 0, 0, 34,
+ 0, 0, 1,136, 0, 0, 1,150, 0, 0, 0, 34, 0, 0, 1,149, 0, 0, 1,151, 0, 0, 0, 34, 0, 0, 1,133, 0, 0, 1,151,
+ 0, 0, 0, 34, 0, 0, 1,133, 0, 0, 1,135, 0, 0, 0, 34, 0, 0, 1,150, 0, 0, 1,152, 0, 0, 0, 34, 0, 0, 1,134,
+ 0, 0, 1,136, 0, 0, 0, 34, 0, 0, 1,134, 0, 0, 1,152, 0, 0, 0, 34, 0, 0, 1,151, 0, 0, 1,153, 0, 0, 0, 34,
+ 0, 0, 1,131, 0, 0, 1,153, 0, 0, 0, 34, 0, 0, 1,131, 0, 0, 1,133, 0, 0, 0, 34, 0, 0, 1,152, 0, 0, 1,154,
+ 0, 0, 0, 34, 0, 0, 1,132, 0, 0, 1,134, 0, 0, 0, 34, 0, 0, 1,132, 0, 0, 1,154, 0, 0, 0, 34, 0, 0, 1,151,
+ 0, 0, 1,161, 0, 0, 0, 34, 0, 0, 1,159, 0, 0, 1,161, 0, 0, 0, 34, 0, 0, 1,153, 0, 0, 1,159, 0, 0, 0, 34,
+ 0, 0, 1,160, 0, 0, 1,162, 0, 0, 0, 34, 0, 0, 1,152, 0, 0, 1,162, 0, 0, 0, 34, 0, 0, 1,154, 0, 0, 1,160,
+ 0, 0, 0, 34, 0, 0, 1,149, 0, 0, 1,163, 0, 0, 0, 34, 0, 0, 1,161, 0, 0, 1,163, 0, 0, 0, 34, 0, 0, 1,162,
+ 0, 0, 1,164, 0, 0, 0, 34, 0, 0, 1,150, 0, 0, 1,164, 0, 0, 0, 34, 0, 0, 1,147, 0, 0, 1,165, 0, 0, 0, 34,
+ 0, 0, 1,163, 0, 0, 1,165, 0, 0, 0, 34, 0, 0, 1,164, 0, 0, 1,166, 0, 0, 0, 34, 0, 0, 1,148, 0, 0, 1,166,
+ 0, 0, 0, 34, 0, 0, 1,145, 0, 0, 1,167, 0, 0, 0, 34, 0, 0, 1,165, 0, 0, 1,167, 0, 0, 0, 34, 0, 0, 1,166,
+ 0, 0, 1,168, 0, 0, 0, 34, 0, 0, 1,146, 0, 0, 1,168, 0, 0, 0, 34, 0, 0, 1,143, 0, 0, 1,169, 0, 0, 0, 34,
+ 0, 0, 1,167, 0, 0, 1,169, 0, 0, 0, 34, 0, 0, 1,168, 0, 0, 1,170, 0, 0, 0, 34, 0, 0, 1,144, 0, 0, 1,170,
+ 0, 0, 0, 34, 0, 0, 1,155, 0, 0, 1,157, 0, 0, 0, 34, 0, 0, 1,157, 0, 0, 1,169, 0, 0, 0, 34, 0, 0, 1,156,
+ 0, 0, 1,158, 0, 0, 0, 34, 0, 0, 1,158, 0, 0, 1,170, 0, 0, 0, 34, 0, 0, 1, 61, 0, 0, 1,185, 0, 0, 0, 34,
+ 0, 0, 1,183, 0, 0, 1,185, 0, 0, 0, 34, 0, 0, 1, 59, 0, 0, 1,183, 0, 0, 0, 34, 0, 0, 1, 62, 0, 0, 1,186,
+ 0, 0, 0, 34, 0, 0, 1, 60, 0, 0, 1,184, 0, 0, 0, 34, 0, 0, 1,184, 0, 0, 1,186, 0, 0, 0, 34, 0, 0, 1, 61,
+ 0, 0, 1,131, 0, 0, 0, 34, 0, 0, 1,153, 0, 0, 1,185, 0, 0, 0, 34, 0, 0, 1, 62, 0, 0, 1,132, 0, 0, 0, 34,
+ 0, 0, 1,154, 0, 0, 1,186, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,183, 0, 0, 0, 34, 0, 0, 1, 54, 0, 0, 1,184,
+ 0, 0, 0, 34, 0, 0, 1,123, 0, 0, 1,171, 0, 0, 0, 34, 0, 0, 1,155, 0, 0, 1,171, 0, 0, 0, 34, 0, 0, 1,123,
+ 0, 0, 1,129, 0, 0, 0, 34, 0, 0, 1,156, 0, 0, 1,172, 0, 0, 0, 34, 0, 0, 1,124, 0, 0, 1,172, 0, 0, 0, 34,
+ 0, 0, 1,124, 0, 0, 1,130, 0, 0, 0, 34, 0, 0, 1,159, 0, 0, 1,181, 0, 0, 0, 34, 0, 0, 1,181, 0, 0, 1,185,
+ 0, 0, 0, 34, 0, 0, 1,160, 0, 0, 1,182, 0, 0, 0, 34, 0, 0, 1,182, 0, 0, 1,186, 0, 0, 0, 34, 0, 0, 1,179,
+ 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,185, 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,179, 0, 0, 1,181, 0, 0, 0, 34,
+ 0, 0, 1,186, 0, 0, 1,188, 0, 0, 0, 34, 0, 0, 1,180, 0, 0, 1,188, 0, 0, 0, 34, 0, 0, 1,180, 0, 0, 1,182,
+ 0, 0, 0, 34, 0, 0, 1,175, 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,177, 0, 0, 1,179, 0, 0, 0, 34, 0, 0, 1,175,
+ 0, 0, 1,177, 0, 0, 0, 34, 0, 0, 1,176, 0, 0, 1,188, 0, 0, 0, 34, 0, 0, 1,176, 0, 0, 1,178, 0, 0, 0, 34,
+ 0, 0, 1,178, 0, 0, 1,180, 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,189, 0, 0, 0, 34, 0, 0, 1,187, 0, 0, 1,189,
+ 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,175, 0, 0, 0, 34, 0, 0, 1,188, 0, 0, 1,190, 0, 0, 0, 34, 0, 0, 1,174,
+ 0, 0, 1,190, 0, 0, 0, 34, 0, 0, 1,174, 0, 0, 1,176, 0, 0, 0, 34, 0, 0, 1,171, 0, 0, 1,189, 0, 0, 0, 34,
+ 0, 0, 1,173, 0, 0, 1,191, 0, 0, 0, 34, 0, 0, 1,171, 0, 0, 1,191, 0, 0, 0, 32, 0, 0, 1,172, 0, 0, 1,190,
+ 0, 0, 0, 34, 0, 0, 1,172, 0, 0, 1,192, 0, 0, 0, 32, 0, 0, 1,174, 0, 0, 1,192, 0, 0, 0, 34, 0, 0, 1,157,
+ 0, 0, 1,191, 0, 0, 0, 34, 0, 0, 1,158, 0, 0, 1,192, 0, 0, 0, 34, 0, 0, 1, 53, 0, 0, 1,189, 0, 0, 0, 34,
+ 0, 0, 1, 54, 0, 0, 1,190, 0, 0, 0, 34, 0, 0, 1,183, 0, 0, 1,187, 0, 0, 0, 34, 0, 0, 1,184, 0, 0, 1,188,
+ 0, 0, 0, 34, 0, 0, 1,191, 0, 0, 1,193, 0, 0, 0, 34, 0, 0, 1,193, 0, 0, 1,217, 0, 0, 0, 34, 0, 0, 1,157,
+ 0, 0, 1,217, 0, 0, 0, 34, 0, 0, 1,192, 0, 0, 1,194, 0, 0, 0, 34, 0, 0, 1,158, 0, 0, 1,218, 0, 0, 0, 34,
+ 0, 0, 1,194, 0, 0, 1,218, 0, 0, 0, 34, 0, 0, 1,173, 0, 0, 1,203, 0, 0, 0, 34, 0, 0, 1,193, 0, 0, 1,203,
+ 0, 0, 0, 34, 0, 0, 1,174, 0, 0, 1,204, 0, 0, 0, 34, 0, 0, 1,194, 0, 0, 1,204, 0, 0, 0, 34, 0, 0, 1,175,
+ 0, 0, 1,201, 0, 0, 0, 34, 0, 0, 1,201, 0, 0, 1,203, 0, 0, 0, 34, 0, 0, 1,176, 0, 0, 1,202, 0, 0, 0, 34,
+ 0, 0, 1,202, 0, 0, 1,204, 0, 0, 0, 34, 0, 0, 1,177, 0, 0, 1,199, 0, 0, 0, 34, 0, 0, 1,199, 0, 0, 1,201,
+ 0, 0, 0, 34, 0, 0, 1,178, 0, 0, 1,200, 0, 0, 0, 34, 0, 0, 1,200, 0, 0, 1,202, 0, 0, 0, 34, 0, 0, 1,179,
+ 0, 0, 1,197, 0, 0, 0, 34, 0, 0, 1,197, 0, 0, 1,199, 0, 0, 0, 34, 0, 0, 1,180, 0, 0, 1,198, 0, 0, 0, 34,
+ 0, 0, 1,198, 0, 0, 1,200, 0, 0, 0, 34, 0, 0, 1,181, 0, 0, 1,195, 0, 0, 0, 34, 0, 0, 1,195, 0, 0, 1,197,
+ 0, 0, 0, 34, 0, 0, 1,182, 0, 0, 1,196, 0, 0, 0, 34, 0, 0, 1,196, 0, 0, 1,198, 0, 0, 0, 34, 0, 0, 1,159,
+ 0, 0, 1,215, 0, 0, 0, 34, 0, 0, 1,195, 0, 0, 1,215, 0, 0, 0, 34, 0, 0, 1,160, 0, 0, 1,216, 0, 0, 0, 34,
+ 0, 0, 1,196, 0, 0, 1,216, 0, 0, 0, 34, 0, 0, 1,205, 0, 0, 1,217, 0, 0, 0, 34, 0, 0, 1,169, 0, 0, 1,205,
+ 0, 0, 0, 34, 0, 0, 1,170, 0, 0, 1,206, 0, 0, 0, 34, 0, 0, 1,206, 0, 0, 1,218, 0, 0, 0, 34, 0, 0, 1,205,
+ 0, 0, 1,207, 0, 0, 0, 34, 0, 0, 1,167, 0, 0, 1,207, 0, 0, 0, 34, 0, 0, 1,168, 0, 0, 1,208, 0, 0, 0, 34,
+ 0, 0, 1,206, 0, 0, 1,208, 0, 0, 0, 34, 0, 0, 1,207, 0, 0, 1,209, 0, 0, 0, 34, 0, 0, 1,165, 0, 0, 1,209,
+ 0, 0, 0, 34, 0, 0, 1,166, 0, 0, 1,210, 0, 0, 0, 34, 0, 0, 1,208, 0, 0, 1,210, 0, 0, 0, 34, 0, 0, 1,209,
+ 0, 0, 1,211, 0, 0, 0, 34, 0, 0, 1,163, 0, 0, 1,211, 0, 0, 0, 34, 0, 0, 1,164, 0, 0, 1,212, 0, 0, 0, 34,
+ 0, 0, 1,210, 0, 0, 1,212, 0, 0, 0, 34, 0, 0, 1,211, 0, 0, 1,213, 0, 0, 0, 34, 0, 0, 1,161, 0, 0, 1,213,
+ 0, 0, 0, 34, 0, 0, 1,162, 0, 0, 1,214, 0, 0, 0, 34, 0, 0, 1,212, 0, 0, 1,214, 0, 0, 0, 34, 0, 0, 1,213,
+ 0, 0, 1,215, 0, 0, 0, 34, 0, 0, 1,214, 0, 0, 1,216, 0, 0, 0, 34, 0, 0, 1,197, 0, 0, 1,221, 0, 0, 0, 34,
+ 0, 0, 1,219, 0, 0, 1,221, 0, 0, 0, 34, 0, 0, 1,199, 0, 0, 1,219, 0, 0, 0, 34, 0, 0, 1,198, 0, 0, 1,222,
+ 0, 0, 0, 34, 0, 0, 1,200, 0, 0, 1,220, 0, 0, 0, 34, 0, 0, 1,220, 0, 0, 1,222, 0, 0, 0, 34, 0, 0, 1,221,
+ 0, 0, 1,223, 0, 0, 0, 34, 0, 0, 1,223, 0, 0, 1,225, 0, 0, 0, 32, 0, 0, 1,219, 0, 0, 1,225, 0, 0, 0, 34,
+ 0, 0, 1,222, 0, 0, 1,224, 0, 0, 0, 34, 0, 0, 1,220, 0, 0, 1,226, 0, 0, 0, 34, 0, 0, 1,224, 0, 0, 1,226,
+ 0, 0, 0, 32, 0, 0, 1,223, 0, 0, 1,229, 0, 0, 0, 34, 0, 0, 1,227, 0, 0, 1,229, 0, 0, 0, 34, 0, 0, 1,225,
+ 0, 0, 1,227, 0, 0, 0, 34, 0, 0, 1,224, 0, 0, 1,230, 0, 0, 0, 34, 0, 0, 1,226, 0, 0, 1,228, 0, 0, 0, 34,
+ 0, 0, 1,228, 0, 0, 1,230, 0, 0, 0, 34, 0, 0, 1,229, 0, 0, 1,231, 0, 0, 0, 34, 0, 0, 1,231, 0, 0, 1,233,
+ 0, 0, 0, 34, 0, 0, 1,227, 0, 0, 1,233, 0, 0, 0, 34, 0, 0, 1,230, 0, 0, 1,232, 0, 0, 0, 34, 0, 0, 1,228,
+ 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,232, 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,217, 0, 0, 1,227, 0, 0, 0, 34,
+ 0, 0, 1,205, 0, 0, 1,233, 0, 0, 0, 34, 0, 0, 1,218, 0, 0, 1,228, 0, 0, 0, 34, 0, 0, 1,206, 0, 0, 1,234,
+ 0, 0, 0, 34, 0, 0, 1,193, 0, 0, 1,225, 0, 0, 0, 34, 0, 0, 1,194, 0, 0, 1,226, 0, 0, 0, 34, 0, 0, 1,203,
+ 0, 0, 1,219, 0, 0, 0, 34, 0, 0, 1,204, 0, 0, 1,220, 0, 0, 0, 34, 0, 0, 1,215, 0, 0, 1,221, 0, 0, 0, 34,
+ 0, 0, 1,216, 0, 0, 1,222, 0, 0, 0, 34, 0, 0, 1,213, 0, 0, 1,223, 0, 0, 0, 34, 0, 0, 1,214, 0, 0, 1,224,
+ 0, 0, 0, 34, 0, 0, 1,211, 0, 0, 1,229, 0, 0, 0, 34, 0, 0, 1,212, 0, 0, 1,230, 0, 0, 0, 34, 0, 0, 1,209,
+ 0, 0, 1,231, 0, 0, 0, 34, 0, 0, 1,210, 0, 0, 1,232, 0, 0, 0, 34, 0, 0, 1,207, 0, 0, 1,233, 0, 0, 0, 34,
+ 0, 0, 1,208, 0, 0, 1,234, 0, 0, 0, 34, 0, 0, 1,131, 0, 0, 1,245, 0, 0, 0, 34, 0, 0, 1,243, 0, 0, 1,245,
+ 0, 0, 0, 39, 0, 0, 1,133, 0, 0, 1,243, 0, 0, 0, 34, 0, 0, 1,132, 0, 0, 1,246, 0, 0, 0, 34, 0, 0, 1,134,
+ 0, 0, 1,244, 0, 0, 0, 34, 0, 0, 1,244, 0, 0, 1,246, 0, 0, 0, 39, 0, 0, 1,241, 0, 0, 1,243, 0, 0, 0, 39,
+ 0, 0, 1,135, 0, 0, 1,241, 0, 0, 0, 34, 0, 0, 1,136, 0, 0, 1,242, 0, 0, 0, 34, 0, 0, 1,242, 0, 0, 1,244,
+ 0, 0, 0, 39, 0, 0, 1,239, 0, 0, 1,241, 0, 0, 0, 39, 0, 0, 1,137, 0, 0, 1,239, 0, 0, 0, 34, 0, 0, 1,138,
+ 0, 0, 1,240, 0, 0, 0, 34, 0, 0, 1,240, 0, 0, 1,242, 0, 0, 0, 39, 0, 0, 1,237, 0, 0, 1,239, 0, 0, 0, 39,
+ 0, 0, 1,139, 0, 0, 1,237, 0, 0, 0, 34, 0, 0, 1,140, 0, 0, 1,238, 0, 0, 0, 34, 0, 0, 1,238, 0, 0, 1,240,
+ 0, 0, 0, 39, 0, 0, 1,235, 0, 0, 1,237, 0, 0, 0, 39, 0, 0, 1,141, 0, 0, 1,235, 0, 0, 0, 34, 0, 0, 1,142,
+ 0, 0, 1,236, 0, 0, 0, 34, 0, 0, 1,236, 0, 0, 1,238, 0, 0, 0, 39, 0, 0, 1,235, 0, 0, 1,247, 0, 0, 0, 39,
+ 0, 0, 1,129, 0, 0, 1,247, 0, 0, 0, 34, 0, 0, 1,130, 0, 0, 1,248, 0, 0, 0, 34, 0, 0, 1,236, 0, 0, 1,248,
+ 0, 0, 0, 39, 0, 0, 1,235, 0, 0, 1,243, 0, 0, 0, 34, 0, 0, 1,245, 0, 0, 1,247, 0, 0, 0, 34, 0, 0, 1,236,
+ 0, 0, 1,244, 0, 0, 0, 34, 0, 0, 1,246, 0, 0, 1,248, 0, 0, 0, 34, 0, 0, 1,237, 0, 0, 1,241, 0, 0, 0, 34,
+ 0, 0, 1,238, 0, 0, 1,242, 0, 0, 0, 34, 0, 0, 1, 55, 0, 0, 1,247, 0, 0, 0, 39, 0, 0, 1, 56, 0, 0, 1,248,
+ 0, 0, 0, 39, 0, 0, 1, 63, 0, 0, 1,245, 0, 0, 0, 39, 0, 0, 1, 64, 0, 0, 1,246, 0, 0, 0, 39, 0, 0, 0, 14,
+ 0, 0, 0,249, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0,178, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0,113, 0, 0, 0, 34,
+ 0, 0, 0, 14, 0, 0, 0,161, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0,112,
+ 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0,112, 0, 0, 0, 34, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,112, 80, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,161,214, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,247,144, 32, 0, 0, 0, 6, 0, 0, 0, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,161,254, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 39, 16, 3,161,214, 32, 0, 0, 0, 54, 0, 0, 1,244, 0, 0, 0, 45, 0, 0, 0, 0,
0, 0, 0, 2, 0, 0, 0, 43, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 46, 0, 0, 0, 44, 0, 0, 0, 1,
0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 44,
0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 7,
@@ -5794,695 +6614,695 @@ char datatoc_preview_blend[]= {
0, 0, 0, 1, 0, 0, 1,130, 0, 0, 1,124, 0, 0, 1, 56, 0, 0, 1,248, 0, 0, 0, 1, 0, 0, 1, 55, 0, 0, 1,247,
0, 0, 1,245, 0, 0, 1, 63, 0, 0, 0, 1, 0, 0, 1,246, 0, 0, 1,248, 0, 0, 1, 56, 0, 0, 1, 64, 0, 0, 0, 1,
0, 0, 1, 61, 0, 0, 1, 63, 0, 0, 1,245, 0, 0, 1,131, 0, 0, 0, 1, 0, 0, 1,246, 0, 0, 1, 64, 0, 0, 1, 62,
- 0, 0, 1,132, 0, 0, 0, 1, 68, 65, 84, 65, 0, 0, 85,240, 12,117,208, 32, 0, 0, 0, 65, 0, 0, 1,244, 63, 28,112, 3,
- 62,236,178,185, 63, 27,124,224, 62,232, 65,235, 63, 30, 63,144, 62,226,195,233, 63, 32,152,118, 62,236,167, 37, 13, 64,158,176,
+ 0, 0, 1,132, 0, 0, 0, 1, 68, 65, 84, 65, 0, 0, 85,240, 7,247,144, 32, 0, 0, 0, 65, 0, 0, 1,244, 63, 28,112, 3,
+ 62,236,178,185, 63, 27,124,224, 62,232, 65,235, 63, 30, 63,144, 62,226,195,233, 63, 32,152,118, 62,236,167, 37, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62,209,232, 2, 62,226, 21,222, 62,215,109,102, 62,231,147,222, 62,213,135, 28, 62,236, 4,172,
- 62,205, 54, 56, 62,235,249, 22, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 32,152,118, 62,236,167, 37, 63, 30, 63,144,
- 62,226,195,233, 63, 33,235,108, 62,220,235,197, 63, 37,151,209, 62,236,161, 89, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,205, 54, 56, 62,235,249, 22, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 32,152,118, 62,236,167, 37, 63, 30, 63,144,
+ 62,226,195,233, 63, 33,235,108, 62,220,235,197, 63, 37,151,209, 62,236,161, 89, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,202,144, 76, 62,220, 61,186, 62,209,232, 2, 62,226, 21,222, 62,205, 54, 56, 62,235,249, 22, 62,195, 55,128, 62,235,243, 70,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 30, 63,144, 62,226,195,233, 63, 25, 55, 20, 62,223, 35, 1, 63, 25,178,200,
- 62,214,233, 77, 63, 33,235,108, 62,220,235,197, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,219, 1,146, 62,214, 59, 66,
- 62,219,248,248, 62,222,116,246, 62,209,232, 2, 62,226, 21,222, 62,202,144, 76, 62,220, 61,186, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 30, 63,144, 62,226,195,233, 63, 25, 55, 20, 62,223, 35, 1, 63, 25,178,200,
+ 62,214,233, 77, 63, 33,235,108, 62,220,235,197, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,219, 1,146, 62,214, 59, 66,
+ 62,219,248,248, 62,222,116,246, 62,209,232, 2, 62,226, 21,222, 62,202,144, 76, 62,220, 61,186, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,240, 63, 27,124,224, 62,232, 65,235, 63, 24,252, 87, 62,230,111, 93, 63, 25, 55, 20, 62,223, 35, 1, 63, 30, 63,144,
- 62,226,195,233, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,219,248,248, 62,222,116,246, 62,220,110,118, 62,229,193, 78,
- 62,215,109,102, 62,231,147,222, 62,209,232, 2, 62,226, 21,222, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 24,252, 87,
- 62,230,111, 93, 63, 22,195, 22, 62,232, 90,195, 63, 20, 91,191, 62,227, 18,193, 63, 25, 55, 20, 62,223, 35, 1, 13, 64,158,176,
+ 62,226,195,233, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,219,248,248, 62,222,116,246, 62,220,110,118, 62,229,193, 78,
+ 62,215,109,102, 62,231,147,222, 62,209,232, 2, 62,226, 21,222, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 24,252, 87,
+ 62,230,111, 93, 63, 22,195, 22, 62,232, 90,195, 63, 20, 91,191, 62,227, 18,193, 63, 25, 55, 20, 62,223, 35, 1, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62,229,175,162, 62,226,100,178, 62,224,224,248, 62,231,172,182, 62,220,110,118, 62,229,193, 78,
- 62,219,248,248, 62,222,116,246, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 55, 20, 62,223, 35, 1, 63, 20, 91,191,
- 62,227, 18,193, 63, 17,165,187, 62,221, 6,225, 63, 25,178,200, 62,214,233, 77, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,219,248,248, 62,222,116,246, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 55, 20, 62,223, 35, 1, 63, 20, 91,191,
+ 62,227, 18,193, 63, 17,165,187, 62,221, 6,225, 63, 25,178,200, 62,214,233, 77, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,235, 27,170, 62,220, 88,214, 62,229,175,162, 62,226,100,178, 62,219,248,248, 62,222,116,246, 62,219, 1,146, 62,214, 59, 66,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 20, 91,191, 62,227, 18,193, 63, 18, 18,164, 62,236,201,173, 63, 13,231,157,
- 62,236,161, 89, 63, 17,165,187, 62,221, 6,225, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,242,151,232, 62,235,243, 70,
- 62,234, 65,216, 62,236, 27,158, 62,229,175,162, 62,226,100,178, 62,235, 27,170, 62,220, 88,214, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 20, 91,191, 62,227, 18,193, 63, 18, 18,164, 62,236,201,173, 63, 13,231,157,
+ 62,236,161, 89, 63, 17,165,187, 62,221, 6,225, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,242,151,232, 62,235,243, 70,
+ 62,234, 65,216, 62,236, 27,158, 62,229,175,162, 62,226,100,178, 62,235, 27,170, 62,220, 88,214, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,240, 63, 22,195, 22, 62,232, 90,195, 63, 21,202, 11, 62,236,189, 1, 63, 18, 18,164, 62,236,201,173, 63, 20, 91,191,
- 62,227, 18,193, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,234, 65,216, 62,236, 27,158, 62,226,211, 12, 62,236, 14,246,
- 62,224,224,248, 62,231,172,182, 62,229,175,162, 62,226,100,178, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 21,202, 11,
- 62,236,189, 1, 63, 22,202,215, 62,241,124,237, 63, 20,105,125, 62,246, 71, 1, 63, 18, 18,164, 62,236,201,173, 13, 64,158,176,
+ 62,227, 18,193, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,234, 65,216, 62,236, 27,158, 62,226,211, 12, 62,236, 14,246,
+ 62,224,224,248, 62,231,172,182, 62,229,175,162, 62,226,100,178, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 21,202, 11,
+ 62,236,189, 1, 63, 22,202,215, 62,241,124,237, 63, 20,105,125, 62,246, 71, 1, 63, 18, 18,164, 62,236,201,173, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62,229,148, 42, 62,245,152,246, 62,224,209,112, 62,240,206,226, 62,226,211, 12, 62,236, 14,246,
- 62,234, 65,216, 62,236, 27,158, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 18, 18,164, 62,236,201,173, 63, 20,105,125,
- 62,246, 71, 1, 63, 17,173, 44, 62,252,149,231, 63, 13,231,157, 62,236,161, 89, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,234, 65,216, 62,236, 27,158, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 18, 18,164, 62,236,201,173, 63, 20,105,125,
+ 62,246, 71, 1, 63, 17,173, 44, 62,252,149,231, 63, 13,231,157, 62,236,161, 89, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,235, 12,206, 62,251,231,218, 62,229,148, 42, 62,245,152,246, 62,234, 65,216, 62,236, 27,158, 62,242,151,232, 62,235,243, 70,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 20,105,125, 62,246, 71, 1, 63, 25, 59, 37, 62,250, 73, 49, 63, 25,178,108,
- 63, 1,108,218, 63, 17,173, 44, 62,252,149,231, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,219, 2, 76, 63, 1, 21,213,
- 62,219,240,216, 62,249,155, 38, 62,229,148, 42, 62,245,152,246, 62,235, 12,206, 62,251,231,218, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 20,105,125, 62,246, 71, 1, 63, 25, 59, 37, 62,250, 73, 49, 63, 25,178,108,
+ 63, 1,108,218, 63, 17,173, 44, 62,252,149,231, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,219, 2, 76, 63, 1, 21,213,
+ 62,219,240,216, 62,249,155, 38, 62,229,148, 42, 62,245,152,246, 62,235, 12,206, 62,251,231,218, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,240, 63, 22,202,215, 62,241,124,237, 63, 25, 1,195, 62,243,102,169, 63, 25, 59, 37, 62,250, 73, 49, 63, 20,105,125,
- 62,246, 71, 1, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,219,240,216, 62,249,155, 38, 62,220, 99,156, 62,242,184,154,
- 62,224,209,112, 62,240,206,226, 62,229,148, 42, 62,245,152,246, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 1,195,
- 62,243,102,169, 63, 27,125,176, 62,241,145,149, 63, 30, 74,167, 62,246,153, 3, 63, 25, 59, 37, 62,250, 73, 49, 13, 64,158,176,
+ 62,246, 71, 1, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,219,240,216, 62,249,155, 38, 62,220, 99,156, 62,242,184,154,
+ 62,224,209,112, 62,240,206,226, 62,229,148, 42, 62,245,152,246, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 1,195,
+ 62,243,102,169, 63, 27,125,176, 62,241,145,149, 63, 30, 74,167, 62,246,153, 3, 63, 25, 59, 37, 62,250, 73, 49, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62,209,209,212, 62,245,234,246, 62,215,107,192, 62,240,227,138, 62,220, 99,156, 62,242,184,154,
- 62,219,240,216, 62,249,155, 38, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 59, 37, 62,250, 73, 49, 63, 30, 74,167,
- 62,246,153, 3, 63, 33,230,204, 62,252,232,107, 63, 25,178,108, 63, 1,108,218, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,219,240,216, 62,249,155, 38, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 59, 37, 62,250, 73, 49, 63, 30, 74,167,
+ 62,246,153, 3, 63, 33,230,204, 62,252,232,107, 63, 25,178,108, 63, 1,108,218, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,202,153,132, 62,252, 58, 94, 62,209,209,212, 62,245,234,246, 62,219,240,216, 62,249,155, 38, 62,219, 2, 76, 63, 1, 21,213,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 30, 74,167, 62,246,153, 3, 63, 32,152,118, 62,236,167, 37, 63, 37,151,209,
- 62,236,161, 89, 63, 33,230,204, 62,252,232,107, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,195, 55,128, 62,235,243, 70,
- 62,205, 54, 56, 62,235,249, 22, 62,209,209,212, 62,245,234,246, 62,202,153,132, 62,252, 58, 94, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 30, 74,167, 62,246,153, 3, 63, 32,152,118, 62,236,167, 37, 63, 37,151,209,
+ 62,236,161, 89, 63, 33,230,204, 62,252,232,107, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,195, 55,128, 62,235,243, 70,
+ 62,205, 54, 56, 62,235,249, 22, 62,209,209,212, 62,245,234,246, 62,202,153,132, 62,252, 58, 94, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,240, 63, 27,125,176, 62,241,145,149, 63, 28,112, 3, 62,236,178,185, 63, 32,152,118, 62,236,167, 37, 63, 30, 74,167,
- 62,246,153, 3, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,205, 54, 56, 62,235,249, 22, 62,213,135, 28, 62,236, 4,172,
- 62,215,107,192, 62,240,227,138, 62,209,209,212, 62,245,234,246, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 28,112, 3,
- 62,236,178,185, 63, 27,125,176, 62,241,145,149, 63, 27, 39, 42, 62,241, 1, 57, 63, 27,249,140, 62,236,186,115, 13, 64,158,176,
+ 62,246,153, 3, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,205, 54, 56, 62,235,249, 22, 62,213,135, 28, 62,236, 4,172,
+ 62,215,107,192, 62,240,227,138, 62,209,209,212, 62,245,234,246, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 28,112, 3,
+ 62,236,178,185, 63, 27,125,176, 62,241,145,149, 63, 27, 39, 42, 62,241, 1, 57, 63, 27,249,140, 62,236,186,115, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62,216, 24,206, 62,240, 83, 46, 62,215,107,192, 62,240,227,138, 62,213,135, 28, 62,236, 4,172,
- 62,214,116, 8, 62,236, 12,102, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 27,125,176, 62,241,145,149, 63, 25, 1,195,
- 62,243,102,169, 63, 24,248, 6, 62,242, 91,185, 63, 27, 39, 42, 62,241, 1, 57, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,214,116, 8, 62,236, 12,102, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 27,125,176, 62,241,145,149, 63, 25, 1,195,
+ 62,243,102,169, 63, 24,248, 6, 62,242, 91,185, 63, 27, 39, 42, 62,241, 1, 57, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,220,119, 22, 62,241,173,174, 62,220, 99,156, 62,242,184,154, 62,215,107,192, 62,240,227,138, 62,216, 24,206, 62,240, 83, 46,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 1,195, 62,243,102,169, 63, 22,202,215, 62,241,124,237, 63, 23, 38,157,
- 62,240,173,225, 63, 24,248, 6, 62,242, 91,185, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,224, 25,234, 62,239,255,214,
- 62,224,209,112, 62,240,206,226, 62,220, 99,156, 62,242,184,154, 62,220,119, 22, 62,241,173,174, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 25, 1,195, 62,243,102,169, 63, 22,202,215, 62,241,124,237, 63, 23, 38,157,
+ 62,240,173,225, 63, 24,248, 6, 62,242, 91,185, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,224, 25,234, 62,239,255,214,
+ 62,224,209,112, 62,240,206,226, 62,220, 99,156, 62,242,184,154, 62,220,119, 22, 62,241,173,174, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,240, 63, 22,202,215, 62,241,124,237, 63, 21,202, 11, 62,236,189, 1, 63, 22, 89, 13, 62,236,196,247, 63, 23, 38,157,
- 62,240,173,225, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,225,181, 8, 62,236, 22,234, 62,226,211, 12, 62,236, 14,246,
- 62,224,209,112, 62,240,206,226, 62,224, 25,234, 62,239,255,214, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 21,202, 11,
- 62,236,189, 1, 63, 22,195, 22, 62,232, 90,195, 63, 23, 33, 88, 62,233, 47, 69, 63, 22, 89, 13, 62,236,196,247, 13, 64,158,176,
+ 62,240,173,225, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,225,181, 8, 62,236, 22,234, 62,226,211, 12, 62,236, 14,246,
+ 62,224,209,112, 62,240,206,226, 62,224, 25,234, 62,239,255,214, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 21,202, 11,
+ 62,236,189, 1, 63, 22,195, 22, 62,232, 90,195, 63, 23, 33, 88, 62,233, 47, 69, 63, 22, 89, 13, 62,236,196,247, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62,224, 36,112, 62,232,129, 58, 62,224,224,248, 62,231,172,182, 62,226,211, 12, 62,236, 14,246,
- 62,225,181, 8, 62,236, 22,234, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 22,195, 22, 62,232, 90,195, 63, 24,252, 87,
- 62,230,111, 93, 63, 24,243,100, 62,231,123, 5, 63, 23, 33, 88, 62,233, 47, 69, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,225,181, 8, 62,236, 22,234, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 22,195, 22, 62,232, 90,195, 63, 24,252, 87,
+ 62,230,111, 93, 63, 24,243,100, 62,231,123, 5, 63, 23, 33, 88, 62,233, 47, 69, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,220,128, 90, 62,230,204,248, 62,220,110,118, 62,229,193, 78, 62,224,224,248, 62,231,172,182, 62,224, 36,112, 62,232,129, 58,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 24,252, 87, 62,230,111, 93, 63, 27,124,224, 62,232, 65,235, 63, 27, 37,169,
- 62,232,211, 35, 63, 24,243,100, 62,231,123, 5, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,216, 27,206, 62,232, 37, 22,
- 62,215,109,102, 62,231,147,222, 62,220,110,118, 62,229,193, 78, 62,220,128, 90, 62,230,204,248, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 24,252, 87, 62,230,111, 93, 63, 27,124,224, 62,232, 65,235, 63, 27, 37,169,
+ 62,232,211, 35, 63, 24,243,100, 62,231,123, 5, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,216, 27,206, 62,232, 37, 22,
+ 62,215,109,102, 62,231,147,222, 62,220,110,118, 62,229,193, 78, 62,220,128, 90, 62,230,204,248, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,240, 63, 27,124,224, 62,232, 65,235, 63, 28,112, 3, 62,236,178,185, 63, 27,249,140, 62,236,186,115, 63, 27, 37,169,
- 62,232,211, 35, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,214,116, 8, 62,236, 12,102, 62,213,135, 28, 62,236, 4,172,
- 62,215,109,102, 62,231,147,222, 62,216, 27,206, 62,232, 37, 22, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,240, 63, 24,242,138,
- 62,236,194, 21, 63, 27, 37,169, 62,232,211, 35, 63, 27,249,140, 62,236,186,115, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176,
+ 62,232,211, 35, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,214,116, 8, 62,236, 12,102, 62,213,135, 28, 62,236, 4,172,
+ 62,215,109,102, 62,231,147,222, 62,216, 27,206, 62,232, 37, 22, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,240, 63, 24,242,138,
+ 62,236,194, 21, 63, 27, 37,169, 62,232,211, 35, 63, 27,249,140, 62,236,186,115, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,112, 62,214,116, 8, 62,236, 12,102, 62,216, 27,206, 62,232, 37, 22, 62,220,130, 16, 62,236, 20, 6,
- 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,243,100, 62,231,123, 5, 63, 27, 37,169,
- 62,232,211, 35, 63, 24,242,138, 62,236,194, 21, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112,
+ 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,243,100, 62,231,123, 5, 63, 27, 37,169,
+ 62,232,211, 35, 63, 24,242,138, 62,236,194, 21, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112,
62,220,130, 16, 62,236, 20, 6, 62,216, 27,206, 62,232, 37, 22, 62,220,128, 90, 62,230,204,248, 63,128, 0, 0, 63,128, 0, 0,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 23, 33, 88, 62,233, 47, 69, 63, 24,243,100,
- 62,231,123, 5, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112, 62,220,128, 90, 62,230,204,248,
- 62,224, 36,112, 62,232,129, 58, 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 23, 33, 88, 62,233, 47, 69, 63, 24,243,100,
+ 62,231,123, 5, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112, 62,220,128, 90, 62,230,204,248,
+ 62,224, 36,112, 62,232,129, 58, 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 22, 89, 13, 62,236,196,247, 63, 23, 33, 88, 62,233, 47, 69, 63,128, 0, 0,
- 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112, 62,224, 36,112, 62,232,129, 58, 62,225,181, 8, 62,236, 22,234,
- 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138,
- 62,236,194, 21, 63, 23, 38,157, 62,240,173,225, 63, 22, 89, 13, 62,236,196,247, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176,
+ 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112, 62,224, 36,112, 62,232,129, 58, 62,225,181, 8, 62,236, 22,234,
+ 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138,
+ 62,236,194, 21, 63, 23, 38,157, 62,240,173,225, 63, 22, 89, 13, 62,236,196,247, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,112, 62,225,181, 8, 62,236, 22,234, 62,224, 25,234, 62,239,255,214, 62,220,130, 16, 62,236, 20, 6,
- 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 24,248, 6,
- 62,242, 91,185, 63, 23, 38,157, 62,240,173,225, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112,
+ 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 24,248, 6,
+ 62,242, 91,185, 63, 23, 38,157, 62,240,173,225, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112,
62,224, 25,234, 62,239,255,214, 62,220,119, 22, 62,241,173,174, 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0,
- 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 27, 39, 42, 62,241, 1, 57, 63, 24,248, 6,
- 62,242, 91,185, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112, 62,220,119, 22, 62,241,173,174,
- 62,216, 24,206, 62,240, 83, 46, 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 61, 0, 0, 5,
+ 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 27, 39, 42, 62,241, 1, 57, 63, 24,248, 6,
+ 62,242, 91,185, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112, 62,220,119, 22, 62,241,173,174,
+ 62,216, 24,206, 62,240, 83, 46, 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 61, 0, 0, 5,
0, 0, 0,112, 63, 24,242,138, 62,236,194, 21, 63, 27,249,140, 62,236,186,115, 63, 27, 39, 42, 62,241, 1, 57, 63,128, 0, 0,
- 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112, 62,216, 24,206, 62,240, 83, 46, 62,214,116, 8, 62,236, 12,102,
- 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 61, 0, 0, 5, 0, 0, 0,112, 63, 16,254,174,
- 62, 34, 45, 94, 63, 13,190, 79, 62, 46,193,160, 63, 3,199,220, 62, 24,219, 89, 63, 3,199,219, 61,229, 28, 18, 13, 64,158,176,
+ 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112, 62,216, 24,206, 62,240, 83, 46, 62,214,116, 8, 62,236, 12,102,
+ 62,220,130, 16, 62,236, 20, 6, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 61, 0, 0, 5, 0, 0, 0,112, 63, 16,254,174,
+ 62, 34, 45, 94, 63, 13,190, 79, 62, 46,193,160, 63, 3,199,220, 62, 24,219, 89, 63, 3,199,219, 61,229, 28, 18, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 16, 63, 3,199,220, 62, 24,219, 89, 62,243,150, 14, 62, 47, 79,204, 62,236,248,140, 62, 34,202,182,
- 63, 3,199,219, 61,229, 28, 18, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 21,152,184, 62, 53, 47,182, 63, 16,104,250,
- 62, 55,113, 16, 63, 13,190, 79, 62, 46,193,160, 63, 16,254,174, 62, 34, 45, 94, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128,
+ 63, 3,199,219, 61,229, 28, 18, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 21,152,184, 62, 53, 47,182, 63, 16,104,250,
+ 62, 55,113, 16, 63, 13,190, 79, 62, 46,193,160, 63, 16,254,174, 62, 34, 45, 94, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128,
62,243,150, 14, 62, 47, 79,204, 62,238, 68,200, 62, 56, 62, 76, 62,227,207,183, 62, 54, 75,250, 62,236,248,140, 62, 34,202,182,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 63, 22, 57,137, 62, 61, 93, 81, 63, 16,186,206, 62, 72,129, 85, 63, 16,104,250,
- 62, 55,113, 16, 63, 21,152,184, 62, 53, 47,182, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,238, 68,200, 62, 56, 62, 76,
- 62,237,187,192, 62, 73,118,194, 62,226,152,122, 62, 62,166,190, 62,227,207,183, 62, 54, 75,250, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 63, 22, 57,137, 62, 61, 93, 81, 63, 16,186,206, 62, 72,129, 85, 63, 16,104,250,
+ 62, 55,113, 16, 63, 21,152,184, 62, 53, 47,182, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,238, 68,200, 62, 56, 62, 76,
+ 62,237,187,192, 62, 73,118,194, 62,226,152,122, 62, 62,166,190, 62,227,207,183, 62, 54, 75,250, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 22,249,250, 62, 88,251,160, 63, 16, 32,222, 62, 93,106, 34, 63, 16,186,206, 62, 72,129, 85, 63, 22, 57,137,
- 62, 61, 93, 81, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,237,187,192, 62, 73,118,194, 62,239, 19, 21, 62, 94,110,121,
- 62,225, 83, 90, 62, 90,153, 21, 62,226,152,122, 62, 62,166,190, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20,
- 62,132, 56, 17, 63, 15,243,206, 62,136,207,182, 63, 16, 32,222, 62, 93,106, 34, 63, 22,249,250, 62, 88,251,160, 13, 64,158,176,
+ 62, 61, 93, 81, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,237,187,192, 62, 73,118,194, 62,239, 19, 21, 62, 94,110,121,
+ 62,225, 83, 90, 62, 90,153, 21, 62,226,152,122, 62, 62,166,190, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20,
+ 62,132, 56, 17, 63, 15,243,206, 62,136,207,182, 63, 16, 32,222, 62, 93,106, 34, 63, 22,249,250, 62, 88,251,160, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,239, 19, 21, 62, 94,110,121, 62,239,193, 92, 62,137, 61,113, 62,221, 42, 54, 62,133, 25,209,
- 62,225, 83, 90, 62, 90,153, 21, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 37, 94, 91,
- 62,187,120,107, 63, 30, 21, 66, 62,200,139,178, 63, 12,237,158, 62,187,241, 38, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,225, 83, 90, 62, 90,153, 21, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 37, 94, 91,
+ 62,187,120,107, 63, 30, 21, 66, 62,200,139,178, 63, 12,237,158, 62,187,241, 38, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,211,125,139, 62,200,171,170, 62,197, 28,156, 62,187,130,166, 62,216, 21,115, 62,166,177, 14, 62,245,175, 15, 62,188, 14,188,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 37, 94, 91, 62,187,120,107, 63, 43, 57, 87, 62,206, 58,222, 63, 39,163, 24,
- 62,216, 95,174, 63, 30, 21, 66, 62,200,139,178, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,191,194, 98, 62,216, 94, 42,
- 62,184,207,130, 62,206, 27, 42, 62,197, 28,156, 62,187,130,166, 62,211,125,139, 62,200,171,170, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 37, 94, 91, 62,187,120,107, 63, 43, 57, 87, 62,206, 58,222, 63, 39,163, 24,
+ 62,216, 95,174, 63, 30, 21, 66, 62,200,139,178, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,191,194, 98, 62,216, 94, 42,
+ 62,184,207,130, 62,206, 27, 42, 62,197, 28,156, 62,187,130,166, 62,211,125,139, 62,200,171,170, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 43, 57, 87, 62,206, 58,222, 63, 50,229, 38, 62,226, 32,169, 63, 43, 79,177, 62,231,194,202, 63, 39,163, 24,
- 62,216, 95,174, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,183,201, 60, 62,231,218, 82, 62,168, 39,196, 62,226, 11,206,
- 62,184,207,130, 62,206, 27, 42, 62,191,194, 98, 62,216, 94, 42, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 50,229, 38,
- 62,226, 32,169, 63, 48,134, 62, 62,249,107, 37, 63, 43,190,154, 62,249, 0,192, 63, 43, 79,177, 62,231,194,202, 13, 64,158,176,
+ 62,216, 95,174, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,183,201, 60, 62,231,218, 82, 62,168, 39,196, 62,226, 11,206,
+ 62,184,207,130, 62,206, 27, 42, 62,191,194, 98, 62,216, 94, 42, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 50,229, 38,
+ 62,226, 32,169, 63, 48,134, 62, 62,249,107, 37, 63, 43,190,154, 62,249, 0,192, 63, 43, 79,177, 62,231,194,202, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,182,190,138, 62,249, 49, 35, 62,172,229,172, 62,249,127,116, 62,168, 39,196, 62,226, 11,206,
- 62,183,201, 60, 62,231,218, 82, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 48,134, 62, 62,249,107, 37, 63, 46, 88,238,
- 63, 2,223,146, 63, 40,207,123, 62,254,175,218, 63, 43,190,154, 62,249, 0,192, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,183,201, 60, 62,231,218, 82, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 48,134, 62, 62,249,107, 37, 63, 46, 88,238,
+ 63, 2,223,146, 63, 40,207,123, 62,254,175,218, 63, 43,190,154, 62,249, 0,192, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,188,184, 2, 62,255, 0,140, 62,177, 87,173, 63, 3, 9,102, 62,172,229,172, 62,249,127,116, 62,182,190,138, 62,249, 49, 35,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 46, 88,238, 63, 2,223,146, 63, 34,158,220, 63, 10, 23,175, 63, 30, 77,126,
- 63, 5, 88,156, 63, 40,207,123, 62,254,175,218, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,210, 65, 89, 63, 5,158, 56,
- 62,201,109,124, 63, 10,121, 72, 62,177, 87,173, 63, 3, 9,102, 62,188,184, 2, 62,255, 0,140, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 46, 88,238, 63, 2,223,146, 63, 34,158,220, 63, 10, 23,175, 63, 30, 77,126,
+ 63, 5, 88,156, 63, 40,207,123, 62,254,175,218, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,210, 65, 89, 63, 5,158, 56,
+ 62,201,109,124, 63, 10,121, 72, 62,177, 87,173, 63, 3, 9,102, 62,188,184, 2, 62,255, 0,140, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 34,158,220, 63, 10, 23,175, 63, 26,105, 28, 63, 11,194,242, 63, 25,120,244, 63, 7,242, 78, 63, 30, 77,126,
- 63, 5, 88,156, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,220, 39, 0, 63, 8, 58,252, 62,218, 73,220, 63, 12, 31,169,
- 62,201,109,124, 63, 10,121, 72, 62,210, 65, 89, 63, 5,158, 56, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 26,105, 28,
- 63, 11,194,242, 63, 22,244,173, 63, 11,215,236, 63, 22, 47,202, 63, 8, 60,156, 63, 25,120,244, 63, 7,242, 78, 13, 64,158,176,
+ 63, 5, 88,156, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,220, 39, 0, 63, 8, 58,252, 62,218, 73,220, 63, 12, 31,169,
+ 62,201,109,124, 63, 10,121, 72, 62,210, 65, 89, 63, 5,158, 56, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 26,105, 28,
+ 63, 11,194,242, 63, 22,244,173, 63, 11,215,236, 63, 22, 47,202, 63, 8, 60,156, 63, 25,120,244, 63, 7,242, 78, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,226,221, 11, 63, 8,125, 90, 62,225, 89,220, 63, 12, 42, 77, 62,218, 73,220, 63, 12, 31,169,
- 62,220, 39, 0, 63, 8, 58,252, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,244,173, 63, 11,215,236, 63, 11,169, 67,
- 63, 11,197, 18, 63, 12,252,106, 63, 3,173,180, 63, 22, 47,202, 63, 8, 60,156, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,220, 39, 0, 63, 8, 58,252, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,244,173, 63, 11,215,236, 63, 11,169, 67,
+ 63, 11,197, 18, 63, 12,252,106, 63, 3,173,180, 63, 22, 47,202, 63, 8, 60,156, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,245,114, 35, 63, 3,196,233, 62,248, 72, 55, 63, 11,232, 91, 62,225, 89,220, 63, 12, 42, 77, 62,226,221, 11, 63, 8,125, 90,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 11,169, 67, 63, 11,197, 18, 63, 3,232,148, 63, 11, 17,164, 63, 3,220,162,
- 63, 0, 88, 45, 63, 12,252,106, 63, 3,173,180, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,220,162, 63, 0, 88, 45,
- 63, 3,232,148, 63, 11, 17,164, 62,248, 72, 55, 63, 11,232, 91, 62,245,114, 35, 63, 3,196,233, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 11,169, 67, 63, 11,197, 18, 63, 3,232,148, 63, 11, 17,164, 63, 3,220,162,
+ 63, 0, 88, 45, 63, 12,252,106, 63, 3,173,180, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,220,162, 63, 0, 88, 45,
+ 63, 3,232,148, 63, 11, 17,164, 62,248, 72, 55, 63, 11,232, 91, 62,245,114, 35, 63, 3,196,233, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 17, 59,103, 62,255,195,120, 63, 22, 81,240, 63, 1, 70,114, 63, 22, 47,202, 63, 8, 60,156, 63, 12,252,106,
- 63, 3,173,180, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,226,221, 11, 63, 8,125, 90, 62,226,128,106, 63, 1,111,198,
- 62,236,213,209, 62,255,250, 4, 62,245,114, 35, 63, 3,196,233, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22, 81,240,
- 63, 1, 70,114, 63, 25,182,151, 63, 1, 9,130, 63, 25,120,244, 63, 7,242, 78, 63, 22, 47,202, 63, 8, 60,156, 13, 64,158,176,
+ 63, 3,173,180, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,226,221, 11, 63, 8,125, 90, 62,226,128,106, 63, 1,111,198,
+ 62,236,213,209, 62,255,250, 4, 62,245,114, 35, 63, 3,196,233, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22, 81,240,
+ 63, 1, 70,114, 63, 25,182,151, 63, 1, 9,130, 63, 25,120,244, 63, 7,242, 78, 63, 22, 47,202, 63, 8, 60,156, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,220, 39, 0, 63, 8, 58,252, 62,219,150,213, 63, 1, 55, 50, 62,226,128,106, 63, 1,111,198,
- 62,226,221, 11, 63, 8,125, 90, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 30, 49, 96, 62,254,229,121, 63, 30, 77,126,
- 63, 5, 88,156, 63, 25,120,244, 63, 7,242, 78, 63, 25,182,151, 63, 1, 9,130, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,226,221, 11, 63, 8,125, 90, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 30, 49, 96, 62,254,229,121, 63, 30, 77,126,
+ 63, 5, 88,156, 63, 25,120,244, 63, 7,242, 78, 63, 25,182,151, 63, 1, 9,130, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,220, 39, 0, 63, 8, 58,252, 62,210, 65, 89, 63, 5,158, 56, 62,210,116,176, 62,255, 62,227, 62,219,150,213, 63, 1, 55, 50,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 37,113, 25, 62,247,157, 35, 63, 40,207,123, 62,254,175,218, 63, 30, 77,126,
- 63, 5, 88,156, 63, 30, 49, 96, 62,254,229,121, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,210, 65, 89, 63, 5,158, 56,
- 62,188,184, 2, 62,255, 0,140, 62,195,165,189, 62,247,232,139, 62,210,116,176, 62,255, 62,227, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 37,113, 25, 62,247,157, 35, 63, 40,207,123, 62,254,175,218, 63, 30, 77,126,
+ 63, 5, 88,156, 63, 30, 49, 96, 62,254,229,121, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,210, 65, 89, 63, 5,158, 56,
+ 62,188,184, 2, 62,255, 0,140, 62,195,165,189, 62,247,232,139, 62,210,116,176, 62,255, 62,227, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 39, 62, 92, 62,240, 75,121, 63, 43,190,154, 62,249, 0,192, 63, 40,207,123, 62,254,175,218, 63, 37,113, 25,
- 62,247,157, 35, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,188,184, 2, 62,255, 0,140, 62,182,190,138, 62,249, 49, 35,
- 62,192, 10,222, 62,240,128,163, 62,195,165,189, 62,247,232,139, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 38,149,140,
- 62,229, 95, 38, 63, 43, 79,177, 62,231,194,202, 63, 43,190,154, 62,249, 0,192, 63, 39, 62, 92, 62,240, 75,121, 13, 64,158,176,
+ 62,247,157, 35, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,188,184, 2, 62,255, 0,140, 62,182,190,138, 62,249, 49, 35,
+ 62,192, 10,222, 62,240,128,163, 62,195,165,189, 62,247,232,139, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 38,149,140,
+ 62,229, 95, 38, 63, 43, 79,177, 62,231,194,202, 63, 43,190,154, 62,249, 0,192, 63, 39, 62, 92, 62,240, 75,121, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,182,190,138, 62,249, 49, 35, 62,183,201, 60, 62,231,218, 82, 62,193,140,168, 62,229,129, 94,
- 62,192, 10,222, 62,240,128,163, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 33,120, 14, 62,214,238,166, 63, 39,163, 24,
- 62,216, 95,174, 63, 43, 79,177, 62,231,194,202, 63, 38,149,140, 62,229, 95, 38, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,192, 10,222, 62,240,128,163, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 33,120, 14, 62,214,238,166, 63, 39,163, 24,
+ 62,216, 95,174, 63, 43, 79,177, 62,231,194,202, 63, 38,149,140, 62,229, 95, 38, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,183,201, 60, 62,231,218, 82, 62,191,194, 98, 62,216, 94, 42, 62,204, 75,168, 62,215, 7, 62, 62,193,140,168, 62,229,129, 94,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,178,165, 62,208, 17,128, 63, 30, 21, 66, 62,200,139,178, 63, 39,163, 24,
- 62,216, 95,174, 63, 33,120, 14, 62,214,238,166, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,191,194, 98, 62,216, 94, 42,
- 62,211,125,139, 62,200,171,170, 62,216, 24, 6, 62,208, 57,128, 62,204, 75,168, 62,215, 7, 62, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,178,165, 62,208, 17,128, 63, 30, 21, 66, 62,200,139,178, 63, 39,163, 24,
+ 62,216, 95,174, 63, 33,120, 14, 62,214,238,166, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,191,194, 98, 62,216, 94, 42,
+ 62,211,125,139, 62,200,171,170, 62,216, 24, 6, 62,208, 57,128, 62,204, 75,168, 62,215, 7, 62, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 17, 97, 15, 62,214, 34,220, 63, 12,237,158, 62,187,241, 38, 63, 30, 21, 66, 62,200,139,178, 63, 27,178,165,
- 62,208, 17,128, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,211,125,139, 62,200,171,170, 62,245,175, 15, 62,188, 14,188,
- 62,236,200,217, 62,214, 49,134, 62,216, 24, 6, 62,208, 57,128, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 17, 97, 15,
- 62,214, 34,220, 63, 14,244,149, 62,221, 42, 4, 63, 3,230,147, 62,208, 47, 78, 63, 12,237,158, 62,187,241, 38, 13, 64,158,176,
+ 62,208, 17,128, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,211,125,139, 62,200,171,170, 62,245,175, 15, 62,188, 14,188,
+ 62,236,200,217, 62,214, 49,134, 62,216, 24, 6, 62,208, 57,128, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 17, 97, 15,
+ 62,214, 34,220, 63, 14,244,149, 62,221, 42, 4, 63, 3,230,147, 62,208, 47, 78, 63, 12,237,158, 62,187,241, 38, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 63, 3,230,147, 62,208, 47, 78, 62,241,144,141, 62,221, 52,244, 62,236,200,217, 62,214, 49,134,
- 62,245,175, 15, 62,188, 14,188, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 17, 59,103, 62,255,195,120, 63, 12,252,106,
- 63, 3,173,180, 63, 3,220,162, 63, 0, 88, 45, 63, 13, 25, 71, 62,243,163,116, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,245,175, 15, 62,188, 14,188, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 17, 59,103, 62,255,195,120, 63, 12,252,106,
+ 63, 3,173,180, 63, 3,220,162, 63, 0, 88, 45, 63, 13, 25, 71, 62,243,163,116, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
63, 3,220,162, 63, 0, 88, 45, 62,245,114, 35, 63, 3,196,233, 62,236,213,209, 62,255,250, 4, 62,245, 45, 0, 62,243,185,206,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13, 25, 71, 62,243,163,116, 63, 3,220,162, 63, 0, 88, 45, 63, 3,220,215,
- 62,231,189,148, 63, 13, 2, 64, 62,230,215, 52, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,220,215, 62,231,189,148,
- 63, 3,220,162, 63, 0, 88, 45, 62,245, 45, 0, 62,243,185,206, 62,245,100,219, 62,230,230,184, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13, 25, 71, 62,243,163,116, 63, 3,220,162, 63, 0, 88, 45, 63, 3,220,215,
+ 62,231,189,148, 63, 13, 2, 64, 62,230,215, 52, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,220,215, 62,231,189,148,
+ 63, 3,220,162, 63, 0, 88, 45, 62,245, 45, 0, 62,243,185,206, 62,245,100,219, 62,230,230,184, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,230,147, 62,208, 47, 78, 63, 14,244,149, 62,221, 42, 4, 63, 13, 2, 64, 62,230,215, 52, 63, 3,220,215,
- 62,231,189,148, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,245,100,219, 62,230,230,184, 62,241,144,141, 62,221, 52,244,
- 63, 3,230,147, 62,208, 47, 78, 63, 3,220,215, 62,231,189,148, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 7, 61,250,
- 62, 54, 31,148, 63, 3,202,193, 62, 49,174,214, 63, 3,199,220, 62, 24,219, 89, 63, 13,190, 79, 62, 46,193,160, 13, 64,158,176,
+ 62,231,189,148, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,245,100,219, 62,230,230,184, 62,241,144,141, 62,221, 52,244,
+ 63, 3,230,147, 62,208, 47, 78, 63, 3,220,215, 62,231,189,148, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 7, 61,250,
+ 62, 54, 31,148, 63, 3,202,193, 62, 49,174,214, 63, 3,199,220, 62, 24,219, 89, 63, 13,190, 79, 62, 46,193,160, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 63, 3,199,220, 62, 24,219, 89, 63, 3,202,193, 62, 49,174,214, 63, 0, 87,175, 62, 54, 90,251,
- 62,243,150, 14, 62, 47, 79,204, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,214, 68, 62, 66,237,246, 63, 7, 61,250,
- 62, 54, 31,148, 63, 13,190, 79, 62, 46,193,160, 63, 16,104,250, 62, 55,113, 16, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,243,150, 14, 62, 47, 79,204, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,214, 68, 62, 66,237,246, 63, 7, 61,250,
+ 62, 54, 31,148, 63, 13,190, 79, 62, 46,193,160, 63, 16,104,250, 62, 55,113, 16, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,243,150, 14, 62, 47, 79,204, 63, 0, 87,175, 62, 54, 90,251, 62,251,137,104, 62, 67, 92,179, 62,238, 68,200, 62, 56, 62, 76,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,221,237, 62, 91, 90,218, 63, 9,214, 68, 62, 66,237,246, 63, 16,104,250,
- 62, 55,113, 16, 63, 16,186,206, 62, 72,129, 85, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,238, 68,200, 62, 56, 62, 76,
- 62,251,137,104, 62, 67, 92,179, 62,253,153, 39, 62, 91,195, 27, 62,237,187,192, 62, 73,118,194, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,221,237, 62, 91, 90,218, 63, 9,214, 68, 62, 66,237,246, 63, 16,104,250,
+ 62, 55,113, 16, 63, 16,186,206, 62, 72,129, 85, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,238, 68,200, 62, 56, 62, 76,
+ 62,251,137,104, 62, 67, 92,179, 62,253,153, 39, 62, 91,195, 27, 62,237,187,192, 62, 73,118,194, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 15,243,206, 62,136,207,182, 63, 8, 32, 77, 62,139, 39, 10, 63, 9,117, 22, 62, 97,203,146, 63, 16, 32,222,
- 62, 93,106, 34, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,252,110,192, 62, 98, 68, 79, 62,255, 89,219, 62,139, 79,116,
- 62,239,193, 92, 62,137, 61,113, 62,239, 19, 21, 62, 94,110,121, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,221,237,
- 62, 91, 90,218, 63, 16,186,206, 62, 72,129, 85, 63, 16, 32,222, 62, 93,106, 34, 63, 9,117, 22, 62, 97,203,146, 13, 64,158,176,
+ 62, 93,106, 34, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,252,110,192, 62, 98, 68, 79, 62,255, 89,219, 62,139, 79,116,
+ 62,239,193, 92, 62,137, 61,113, 62,239, 19, 21, 62, 94,110,121, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,221,237,
+ 62, 91, 90,218, 63, 16,186,206, 62, 72,129, 85, 63, 16, 32,222, 62, 93,106, 34, 63, 9,117, 22, 62, 97,203,146, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,239, 19, 21, 62, 94,110,121, 62,237,187,192, 62, 73,118,194, 62,253,153, 39, 62, 91,195, 27,
- 62,252,110,192, 62, 98, 68, 79, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,125,119, 62,158,112, 7, 63, 3,233, 70,
- 62,154, 27, 88, 63, 3,229,235, 62,139,108, 97, 63, 8, 32, 77, 62,139, 39, 10, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,252,110,192, 62, 98, 68, 79, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,125,119, 62,158,112, 7, 63, 3,233, 70,
+ 62,154, 27, 88, 63, 3,229,235, 62,139,108, 97, 63, 8, 32, 77, 62,139, 39, 10, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
63, 3,229,235, 62,139,108, 97, 63, 3,233, 70, 62,154, 27, 88, 62,252,179,165, 62,158,140,163, 62,255, 89,219, 62,139, 79,116,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,117, 22, 62, 97,203,146, 63, 8, 32, 77, 62,139, 39, 10, 63, 3,229,235,
- 62,139,108, 97, 63, 3,215,246, 62,101, 56,143, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,229,235, 62,139,108, 97,
- 62,255, 89,219, 62,139, 79,116, 62,252,110,192, 62, 98, 68, 79, 63, 3,215,246, 62,101, 56,143, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,117, 22, 62, 97,203,146, 63, 8, 32, 77, 62,139, 39, 10, 63, 3,229,235,
+ 62,139,108, 97, 63, 3,215,246, 62,101, 56,143, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,229,235, 62,139,108, 97,
+ 62,255, 89,219, 62,139, 79,116, 62,252,110,192, 62, 98, 68, 79, 63, 3,215,246, 62,101, 56,143, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,210,147, 62, 86, 95,221, 63, 8,221,237, 62, 91, 90,218, 63, 9,117, 22, 62, 97,203,146, 63, 3,215,246,
- 62,101, 56,143, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,252,110,192, 62, 98, 68, 79, 62,253,153, 39, 62, 91,195, 27,
- 63, 3,210,147, 62, 86, 95,221, 63, 3,215,246, 62,101, 56,143, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 12, 54, 5,
- 62,167,183,188, 63, 9, 61,250, 62,168,214,252, 63, 8,143,152, 62,163,107, 45, 63, 9,125,119, 62,158,112, 7, 13, 64,158,176,
+ 62,101, 56,143, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,252,110,192, 62, 98, 68, 79, 62,253,153, 39, 62, 91,195, 27,
+ 63, 3,210,147, 62, 86, 95,221, 63, 3,215,246, 62,101, 56,143, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 12, 54, 5,
+ 62,167,183,188, 63, 9, 61,250, 62,168,214,252, 63, 8,143,152, 62,163,107, 45, 63, 9,125,119, 62,158,112, 7, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,254,136,100, 62,163,123, 38, 62,253, 39,110, 62,168,224,103, 62,247, 68, 98, 62,167,206,146,
- 62,252,179,165, 62,158,140,163, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 10,196,135, 62,178,208, 52, 63, 8,233, 25,
- 62,175,110,116, 63, 9, 61,250, 62,168,214,252, 63, 12, 54, 5, 62,167,183,188, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,252,179,165, 62,158,140,163, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 10,196,135, 62,178,208, 52, 63, 8,233, 25,
+ 62,175,110,116, 63, 9, 61,250, 62,168,214,252, 63, 12, 54, 5, 62,167,183,188, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,253, 39,110, 62,168,224,103, 62,253,195,102, 62,175,102,184, 62,250, 14, 98, 62,178,202,149, 62,247, 68, 98, 62,167,206,146,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 4, 17, 69, 62,182,176,105, 63, 6,138, 69, 62,177,180, 80, 63, 8,233, 25,
- 62,175,110,116, 63, 10,196,135, 62,178,208, 52, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,253,195,102, 62,175,102,184,
- 63, 1, 49, 14, 62,177,150, 62, 63, 4, 17, 69, 62,182,176,105, 62,250, 14, 98, 62,178,202,149, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 4, 17, 69, 62,182,176,105, 63, 6,138, 69, 62,177,180, 80, 63, 8,233, 25,
+ 62,175,110,116, 63, 10,196,135, 62,178,208, 52, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,253,195,102, 62,175,102,184,
+ 63, 1, 49, 14, 62,177,150, 62, 63, 4, 17, 69, 62,182,176,105, 62,250, 14, 98, 62,178,202,149, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,124,209, 62,177, 0, 70, 63, 3,232, 11, 62,174, 4,140, 63, 6,138, 69, 62,177,180, 80, 63, 4, 17, 69,
- 62,182,176,105, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 49, 14, 62,177,150, 62, 63, 3,232, 11, 62,174, 4,140,
- 63, 3,124,209, 62,177, 0, 70, 63, 4, 17, 69, 62,182,176,105, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,233, 70,
- 62,154, 27, 88, 63, 9,125,119, 62,158,112, 7, 63, 8,143,152, 62,163,107, 45, 63, 3,232,212, 62,158,152, 58, 13, 64,158,176,
+ 62,182,176,105, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 49, 14, 62,177,150, 62, 63, 3,232, 11, 62,174, 4,140,
+ 63, 3,124,209, 62,177, 0, 70, 63, 4, 17, 69, 62,182,176,105, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,233, 70,
+ 62,154, 27, 88, 63, 9,125,119, 62,158,112, 7, 63, 8,143,152, 62,163,107, 45, 63, 3,232,212, 62,158,152, 58, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,254,136,100, 62,163,123, 38, 62,252,179,165, 62,158,140,163, 63, 3,233, 70, 62,154, 27, 88,
- 63, 3,232,212, 62,158,152, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,232,212, 62,158,152, 58, 63, 8,143,152,
- 62,163,107, 45, 63, 7, 91,121, 62,166, 51,134, 63, 3,231,205, 62,162,149, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 63, 3,232,212, 62,158,152, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,232,212, 62,158,152, 58, 63, 8,143,152,
+ 62,163,107, 45, 63, 7, 91,121, 62,166, 51,134, 63, 3,231,205, 62,162,149, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
63, 0,116, 44, 62,166, 56,255, 62,254,136,100, 62,163,123, 38, 63, 3,232,212, 62,158,152, 58, 63, 3,231,205, 62,162,149, 58,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,232, 11, 62,174, 4,140, 63, 3,233,214, 62,170,154,198, 63, 6,110,233,
- 62,174,152, 94, 63, 6,138, 69, 62,177,180, 80, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 82,228, 62,174,140, 95,
- 63, 3,233,214, 62,170,154,198, 63, 3,232, 11, 62,174, 4,140, 63, 1, 49, 14, 62,177,150, 62, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,232, 11, 62,174, 4,140, 63, 3,233,214, 62,170,154,198, 63, 6,110,233,
+ 62,174,152, 94, 63, 6,138, 69, 62,177,180, 80, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 82,228, 62,174,140, 95,
+ 63, 3,233,214, 62,170,154,198, 63, 3,232, 11, 62,174, 4,140, 63, 1, 49, 14, 62,177,150, 62, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 6,138, 69, 62,177,180, 80, 63, 6,110,233, 62,174,152, 94, 63, 7,236, 59, 62,173,123, 19, 63, 8,233, 25,
- 62,175,110,116, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,255,185,217, 62,173,116, 92, 63, 1, 82,228, 62,174,140, 95,
- 63, 1, 49, 14, 62,177,150, 62, 62,253,195,102, 62,175,102,184, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,233, 25,
- 62,175,110,116, 63, 7,236, 59, 62,173,123, 19, 63, 7,249, 85, 62,169, 52, 92, 63, 9, 61,250, 62,168,214,252, 13, 64,158,176,
+ 62,175,110,116, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,255,185,217, 62,173,116, 92, 63, 1, 82,228, 62,174,140, 95,
+ 63, 1, 49, 14, 62,177,150, 62, 62,253,195,102, 62,175,102,184, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,233, 25,
+ 62,175,110,116, 63, 7,236, 59, 62,173,123, 19, 63, 7,249, 85, 62,169, 52, 92, 63, 9, 61,250, 62,168,214,252, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,255,169,160, 62,169, 57, 6, 62,255,185,217, 62,173,116, 92, 62,253,195,102, 62,175,102,184,
- 62,253, 39,110, 62,168,224,103, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9, 61,250, 62,168,214,252, 63, 7,249, 85,
- 62,169, 52, 92, 63, 7, 91,121, 62,166, 51,134, 63, 8,143,152, 62,163,107, 45, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,253, 39,110, 62,168,224,103, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9, 61,250, 62,168,214,252, 63, 7,249, 85,
+ 62,169, 52, 92, 63, 7, 91,121, 62,166, 51,134, 63, 8,143,152, 62,163,107, 45, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
63, 0,116, 44, 62,166, 56,255, 62,255,169,160, 62,169, 57, 6, 62,253, 39,110, 62,168,224,103, 62,254,136,100, 62,163,123, 38,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,233,214, 62,170,154,198, 63, 7,249, 85, 62,169, 52, 92, 63, 7,236, 59,
- 62,173,123, 19, 63, 6,110,233, 62,174,152, 94, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,255,185,217, 62,173,116, 92,
- 62,255,169,160, 62,169, 57, 6, 63, 3,233,214, 62,170,154,198, 63, 1, 82,228, 62,174,140, 95, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,233,214, 62,170,154,198, 63, 7,249, 85, 62,169, 52, 92, 63, 7,236, 59,
+ 62,173,123, 19, 63, 6,110,233, 62,174,152, 94, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,255,185,217, 62,173,116, 92,
+ 62,255,169,160, 62,169, 57, 6, 63, 3,233,214, 62,170,154,198, 63, 1, 82,228, 62,174,140, 95, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,233,214, 62,170,154,198, 63, 3,231,205, 62,162,149, 58, 63, 7, 91,121, 62,166, 51,134, 63, 7,249, 85,
- 62,169, 52, 92, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 0,116, 44, 62,166, 56,255, 63, 3,231,205, 62,162,149, 58,
- 63, 3,233,214, 62,170,154,198, 62,255,169,160, 62,169, 57, 6, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 4, 17, 69,
- 62,182,176,105, 63, 10,196,135, 62,178,208, 52, 63, 12,237,158, 62,187,241, 38, 63, 3,230,147, 62,208, 47, 78, 13, 64,158,176,
+ 62,169, 52, 92, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 0,116, 44, 62,166, 56,255, 63, 3,231,205, 62,162,149, 58,
+ 63, 3,233,214, 62,170,154,198, 62,255,169,160, 62,169, 57, 6, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 4, 17, 69,
+ 62,182,176,105, 63, 10,196,135, 62,178,208, 52, 63, 12,237,158, 62,187,241, 38, 63, 3,230,147, 62,208, 47, 78, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,245,175, 15, 62,188, 14,188, 62,250, 14, 98, 62,178,202,149, 63, 4, 17, 69, 62,182,176,105,
- 63, 3,230,147, 62,208, 47, 78, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 10,196,135, 62,178,208, 52, 63, 12, 54, 5,
- 62,167,183,188, 63, 16, 0,112, 62,164,246,254, 63, 12,237,158, 62,187,241, 38, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 63, 3,230,147, 62,208, 47, 78, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 10,196,135, 62,178,208, 52, 63, 12, 54, 5,
+ 62,167,183,188, 63, 16, 0,112, 62,164,246,254, 63, 12,237,158, 62,187,241, 38, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,239,187,207, 62,165, 42, 19, 62,247, 68, 98, 62,167,206,146, 62,250, 14, 98, 62,178,202,149, 62,245,175, 15, 62,188, 14,188,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 12, 54, 5, 62,167,183,188, 63, 9,125,119, 62,158,112, 7, 63, 15,250, 44,
- 62,154, 0,109, 63, 16, 0,112, 62,164,246,254, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,205, 56, 62,154, 71, 8,
- 62,252,179,165, 62,158,140,163, 62,247, 68, 98, 62,167,206,146, 62,239,187,207, 62,165, 42, 19, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 12, 54, 5, 62,167,183,188, 63, 9,125,119, 62,158,112, 7, 63, 15,250, 44,
+ 62,154, 0,109, 63, 16, 0,112, 62,164,246,254, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,205, 56, 62,154, 71, 8,
+ 62,252,179,165, 62,158,140,163, 62,247, 68, 98, 62,167,206,146, 62,239,187,207, 62,165, 42, 19, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 9,125,119, 62,158,112, 7, 63, 8, 32, 77, 62,139, 39, 10, 63, 15,243,206, 62,136,207,182, 63, 15,250, 44,
- 62,154, 0,109, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,193, 92, 62,137, 61,113, 62,255, 89,219, 62,139, 79,116,
- 62,252,179,165, 62,158,140,163, 62,239,205, 56, 62,154, 71, 8, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20,
- 62,132, 56, 17, 63, 27, 46,208, 62,148, 35,149, 63, 15,250, 44, 62,154, 0,109, 63, 15,243,206, 62,136,207,182, 13, 64,158,176,
+ 62,154, 0,109, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,193, 92, 62,137, 61,113, 62,255, 89,219, 62,139, 79,116,
+ 62,252,179,165, 62,158,140,163, 62,239,205, 56, 62,154, 71, 8, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20,
+ 62,132, 56, 17, 63, 27, 46,208, 62,148, 35,149, 63, 15,250, 44, 62,154, 0,109, 63, 15,243,206, 62,136,207,182, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,239,205, 56, 62,154, 71, 8, 62,217,166,238, 62,148,221,229, 62,221, 42, 54, 62,133, 25,209,
- 62,239,193, 92, 62,137, 61,113, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27, 46,208, 62,148, 35,149, 63, 27,177, 36,
- 62,156,151,158, 63, 16, 0,112, 62,164,246,254, 63, 15,250, 44, 62,154, 0,109, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,239,193, 92, 62,137, 61,113, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27, 46,208, 62,148, 35,149, 63, 27,177, 36,
+ 62,156,151,158, 63, 16, 0,112, 62,164,246,254, 63, 15,250, 44, 62,154, 0,109, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,239,187,207, 62,165, 42, 19, 62,216,160, 0, 62,157, 44,127, 62,217,166,238, 62,148,221,229, 62,239,205, 56, 62,154, 71, 8,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 12,237,158, 62,187,241, 38, 63, 16, 0,112,
- 62,164,246,254, 63, 27,177, 36, 62,156,151,158, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,187,207, 62,165, 42, 19,
- 62,245,175, 15, 62,188, 14,188, 62,216, 21,115, 62,166,177, 14, 62,216,160, 0, 62,157, 44,127, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 12,237,158, 62,187,241, 38, 63, 16, 0,112,
+ 62,164,246,254, 63, 27,177, 36, 62,156,151,158, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,187,207, 62,165, 42, 19,
+ 62,245,175, 15, 62,188, 14,188, 62,216, 21,115, 62,166,177, 14, 62,216,160, 0, 62,157, 44,127, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 8,221,237, 62, 91, 90,218, 63, 3,210,147, 62, 86, 95,221, 63, 3,211,129, 62, 83,168,248, 63, 8, 33,170,
- 62, 86,149,254, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,211,129, 62, 83,168,248, 63, 3,210,147, 62, 86, 95,221,
- 62,253,153, 39, 62, 91,195, 27, 62,255, 14, 8, 62, 86,232, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,214, 68,
- 62, 66,237,246, 63, 8,221,237, 62, 91, 90,218, 63, 8, 33,170, 62, 86,149,254, 63, 8,180, 20, 62, 69, 29, 94, 13, 64,158,176,
+ 62, 86,149,254, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,211,129, 62, 83,168,248, 63, 3,210,147, 62, 86, 95,221,
+ 62,253,153, 39, 62, 91,195, 27, 62,255, 14, 8, 62, 86,232, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 9,214, 68,
+ 62, 66,237,246, 63, 8,221,237, 62, 91, 90,218, 63, 8, 33,170, 62, 86,149,254, 63, 8,180, 20, 62, 69, 29, 94, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,255, 14, 8, 62, 86,232, 58, 62,253,153, 39, 62, 91,195, 27, 62,251,137,104, 62, 67, 92,179,
- 62,253,210, 19, 62, 69,114, 55, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 7, 61,250, 62, 54, 31,148, 63, 9,214, 68,
- 62, 66,237,246, 63, 8,180, 20, 62, 69, 29, 94, 63, 6, 82,168, 62, 57, 43, 80, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,253,210, 19, 62, 69,114, 55, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 7, 61,250, 62, 54, 31,148, 63, 9,214, 68,
+ 62, 66,237,246, 63, 8,180, 20, 62, 69, 29, 94, 63, 6, 82,168, 62, 57, 43, 80, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,253,210, 19, 62, 69,114, 55, 62,251,137,104, 62, 67, 92,179, 63, 0, 87,175, 62, 54, 90,251, 63, 1, 68, 48, 62, 57, 84,166,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,202,193, 62, 49,174,214, 63, 7, 61,250, 62, 54, 31,148, 63, 6, 82,168,
- 62, 57, 43, 80, 63, 3,202,205, 62, 54, 22, 8, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 68, 48, 62, 57, 84,166,
- 63, 0, 87,175, 62, 54, 90,251, 63, 3,202,193, 62, 49,174,214, 63, 3,202,205, 62, 54, 22, 8, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,202,193, 62, 49,174,214, 63, 7, 61,250, 62, 54, 31,148, 63, 6, 82,168,
+ 62, 57, 43, 80, 63, 3,202,205, 62, 54, 22, 8, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 68, 48, 62, 57, 84,166,
+ 63, 0, 87,175, 62, 54, 90,251, 63, 3,202,193, 62, 49,174,214, 63, 3,202,205, 62, 54, 22, 8, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,202,205, 62, 54, 22, 8, 63, 6, 82,168, 62, 57, 43, 80, 63, 5, 24,246, 62, 66,150, 26, 63, 3,205,213,
- 62, 64,232,220, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 2,131, 29, 62, 66,172, 22, 63, 1, 68, 48, 62, 57, 84,166,
- 63, 3,202,205, 62, 54, 22, 8, 63, 3,205,213, 62, 64,232,220, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 6, 82,168,
- 62, 57, 43, 80, 63, 8,180, 20, 62, 69, 29, 94, 63, 6, 83, 39, 62, 70,114,191, 63, 5, 24,246, 62, 66,150, 26, 13, 64,158,176,
+ 62, 64,232,220, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 2,131, 29, 62, 66,172, 22, 63, 1, 68, 48, 62, 57, 84,166,
+ 63, 3,202,205, 62, 54, 22, 8, 63, 3,205,213, 62, 64,232,220, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 6, 82,168,
+ 62, 57, 43, 80, 63, 8,180, 20, 62, 69, 29, 94, 63, 6, 83, 39, 62, 70,114,191, 63, 5, 24,246, 62, 66,150, 26, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 75,185, 62, 70,160,222, 62,253,210, 19, 62, 69,114, 55, 63, 1, 68, 48, 62, 57, 84,166,
- 63, 2,131, 29, 62, 66,172, 22, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,180, 20, 62, 69, 29, 94, 63, 8, 33,170,
- 62, 86,149,254, 63, 6,111, 4, 62, 76,172, 40, 63, 6, 83, 39, 62, 70,114,191, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 63, 2,131, 29, 62, 66,172, 22, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8,180, 20, 62, 69, 29, 94, 63, 8, 33,170,
+ 62, 86,149,254, 63, 6,111, 4, 62, 76,172, 40, 63, 6, 83, 39, 62, 70,114,191, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
63, 1, 51,157, 62, 76,218,158, 62,255, 14, 8, 62, 86,232, 58, 62,253,210, 19, 62, 69,114, 55, 63, 1, 75,185, 62, 70,160,222,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8, 33,170, 62, 86,149,254, 63, 3,211,129, 62, 83,168,248, 63, 3,208,234,
- 62, 75, 43,146, 63, 6,111, 4, 62, 76,172, 40, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,208,234, 62, 75, 43,146,
- 63, 3,211,129, 62, 83,168,248, 62,255, 14, 8, 62, 86,232, 58, 63, 1, 51,157, 62, 76,218,158, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 8, 33,170, 62, 86,149,254, 63, 3,211,129, 62, 83,168,248, 63, 3,208,234,
+ 62, 75, 43,146, 63, 6,111, 4, 62, 76,172, 40, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 3,208,234, 62, 75, 43,146,
+ 63, 3,211,129, 62, 83,168,248, 62,255, 14, 8, 62, 86,232, 58, 63, 1, 51,157, 62, 76,218,158, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,208,234, 62, 75, 43,146, 63, 3,205,213, 62, 64,232,220, 63, 5, 24,246, 62, 66,150, 26, 63, 6,111, 4,
- 62, 76,172, 40, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 2,131, 29, 62, 66,172, 22, 63, 3,205,213, 62, 64,232,220,
- 63, 3,208,234, 62, 75, 43,146, 63, 1, 51,157, 62, 76,218,158, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 6,111, 4,
- 62, 76,172, 40, 63, 5, 24,246, 62, 66,150, 26, 63, 6, 83, 39, 62, 70,114,191, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176,
+ 62, 76,172, 40, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 2,131, 29, 62, 66,172, 22, 63, 3,205,213, 62, 64,232,220,
+ 63, 3,208,234, 62, 75, 43,146, 63, 1, 51,157, 62, 76,218,158, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 6,111, 4,
+ 62, 76,172, 40, 63, 5, 24,246, 62, 66,150, 26, 63, 6, 83, 39, 62, 70,114,191, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 63, 1, 75,185, 62, 70,160,222, 63, 2,131, 29, 62, 66,172, 22, 63, 1, 51,157, 62, 76,218,158,
- 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13, 2, 64, 62,230,215, 52, 63, 14,244,149,
- 62,221, 42, 4, 63, 16,216, 4, 62,224, 24,160, 63, 15,200,120, 62,231,255, 84, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13, 2, 64, 62,230,215, 52, 63, 14,244,149,
+ 62,221, 42, 4, 63, 16,216, 4, 62,224, 24,160, 63, 15,200,120, 62,231,255, 84, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,237,193,119, 62,224, 38,190, 62,241,144,141, 62,221, 52,244, 62,245,100,219, 62,230,230,184, 62,239,211, 21, 62,232, 18,185,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13, 25, 71, 62,243,163,116, 63, 13, 2, 64, 62,230,215, 52, 63, 15,200,120,
- 62,231,255, 84, 63, 16,171,184, 62,241,133, 40, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,211, 21, 62,232, 18,185,
- 62,245,100,219, 62,230,230,184, 62,245, 45, 0, 62,243,185,206, 62,237,252,218, 62,241,160, 62, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13, 25, 71, 62,243,163,116, 63, 13, 2, 64, 62,230,215, 52, 63, 15,200,120,
+ 62,231,255, 84, 63, 16,171,184, 62,241,133, 40, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,239,211, 21, 62,232, 18,185,
+ 62,245,100,219, 62,230,230,184, 62,245, 45, 0, 62,243,185,206, 62,237,252,218, 62,241,160, 62, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 17, 59,103, 62,255,195,120, 63, 13, 25, 71, 62,243,163,116, 63, 16,171,184, 62,241,133, 40, 63, 19, 44, 55,
- 62,250, 21, 86, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,237,252,218, 62,241,160, 62, 62,245, 45, 0, 62,243,185,206,
- 62,236,213,209, 62,255,250, 4, 62,232,228,153, 62,250, 67,154, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 14,244,149,
- 62,221, 42, 4, 63, 17, 97, 15, 62,214, 34,220, 63, 19, 53,217, 62,218,211, 16, 63, 16,216, 4, 62,224, 24,160, 13, 64,158,176,
+ 62,250, 21, 86, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,237,252,218, 62,241,160, 62, 62,245, 45, 0, 62,243,185,206,
+ 62,236,213,209, 62,255,250, 4, 62,232,228,153, 62,250, 67,154, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 14,244,149,
+ 62,221, 42, 4, 63, 17, 97, 15, 62,214, 34,220, 63, 19, 53,217, 62,218,211, 16, 63, 16,216, 4, 62,224, 24,160, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,233, 14, 8, 62,218,226, 66, 62,236,200,217, 62,214, 49,134, 62,241,144,141, 62,221, 52,244,
- 62,237,193,119, 62,224, 38,190, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 17, 97, 15, 62,214, 34,220, 63, 27,178,165,
- 62,208, 17,128, 63, 26,198,205, 62,214,184,124, 63, 19, 53,217, 62,218,211, 16, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,237,193,119, 62,224, 38,190, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 17, 97, 15, 62,214, 34,220, 63, 27,178,165,
+ 62,208, 17,128, 63, 26,198,205, 62,214,184,124, 63, 19, 53,217, 62,218,211, 16, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,217,214,216, 62,214,224,218, 62,216, 24, 6, 62,208, 57,128, 62,236,200,217, 62,214, 49,134, 62,233, 14, 8, 62,218,226, 66,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,178,165, 62,208, 17,128, 63, 33,120, 14, 62,214,238,166, 63, 31,136,156,
- 62,219,138,194, 63, 26,198,205, 62,214,184,124, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,208, 30,254, 62,219,177,204,
- 62,204, 75,168, 62,215, 7, 62, 62,216, 24, 6, 62,208, 57,128, 62,217,214,216, 62,214,224,218, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,178,165, 62,208, 17,128, 63, 33,120, 14, 62,214,238,166, 63, 31,136,156,
+ 62,219,138,194, 63, 26,198,205, 62,214,184,124, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,208, 30,254, 62,219,177,204,
+ 62,204, 75,168, 62,215, 7, 62, 62,216, 24, 6, 62,208, 57,128, 62,217,214,216, 62,214,224,218, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 33,120, 14, 62,214,238,166, 63, 38,149,140, 62,229, 95, 38, 63, 36, 9, 79, 62,229,224, 94, 63, 31,136,156,
- 62,219,138,194, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,198,192,148, 62,230, 11,182, 62,193,140,168, 62,229,129, 94,
- 62,204, 75,168, 62,215, 7, 62, 62,208, 30,254, 62,219,177,204, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 38,149,140,
- 62,229, 95, 38, 63, 39, 62, 92, 62,240, 75,121, 63, 36, 49, 14, 62,239, 88,253, 63, 36, 9, 79, 62,229,224, 94, 13, 64,158,176,
+ 62,219,138,194, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,198,192,148, 62,230, 11,182, 62,193,140,168, 62,229,129, 94,
+ 62,204, 75,168, 62,215, 7, 62, 62,208, 30,254, 62,219,177,204, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 38,149,140,
+ 62,229, 95, 38, 63, 39, 62, 92, 62,240, 75,121, 63, 36, 49, 14, 62,239, 88,253, 63, 36, 9, 79, 62,229,224, 94, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,198, 71, 97, 62,239,149,192, 62,192, 10,222, 62,240,128,163, 62,193,140,168, 62,229,129, 94,
- 62,198,192,148, 62,230, 11,182, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 39, 62, 92, 62,240, 75,121, 63, 37,113, 25,
- 62,247,157, 35, 63, 35, 33,243, 62,245,143, 80, 63, 36, 49, 14, 62,239, 88,253, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,198,192,148, 62,230, 11,182, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 39, 62, 92, 62,240, 75,121, 63, 37,113, 25,
+ 62,247,157, 35, 63, 35, 33,243, 62,245,143, 80, 63, 36, 49, 14, 62,239, 88,253, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,200, 99, 87, 62,245,217,172, 62,195,165,189, 62,247,232,139, 62,192, 10,222, 62,240,128,163, 62,198, 71, 97, 62,239,149,192,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 37,113, 25, 62,247,157, 35, 63, 30, 49, 96, 62,254,229,121, 63, 29, 49,223,
- 62,250,140,199, 63, 35, 33,243, 62,245,143, 80, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,212,124,147, 62,250,215,146,
- 62,210,116,176, 62,255, 62,227, 62,195,165,189, 62,247,232,139, 62,200, 99, 87, 62,245,217,172, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 37,113, 25, 62,247,157, 35, 63, 30, 49, 96, 62,254,229,121, 63, 29, 49,223,
+ 62,250,140,199, 63, 35, 33,243, 62,245,143, 80, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,212,124,147, 62,250,215,146,
+ 62,210,116,176, 62,255, 62,227, 62,195,165,189, 62,247,232,139, 62,200, 99, 87, 62,245,217,172, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 30, 49, 96, 62,254,229,121, 63, 25,182,151, 63, 1, 9,130, 63, 25,181, 50, 62,253,111,118, 63, 29, 49,223,
- 62,250,140,199, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,219,151, 52, 62,253,186, 68, 62,219,150,213, 63, 1, 55, 50,
- 62,210,116,176, 62,255, 62,227, 62,212,124,147, 62,250,215,146, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25,182,151,
- 63, 1, 9,130, 63, 22, 81,240, 63, 1, 70,114, 63, 22,188,241, 62,253,149, 28, 63, 25,181, 50, 62,253,111,118, 13, 64,158,176,
+ 62,250,140,199, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,219,151, 52, 62,253,186, 68, 62,219,150,213, 63, 1, 55, 50,
+ 62,210,116,176, 62,255, 62,227, 62,212,124,147, 62,250,215,146, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25,182,151,
+ 63, 1, 9,130, 63, 22, 81,240, 63, 1, 70,114, 63, 22,188,241, 62,253,149, 28, 63, 25,181, 50, 62,253,111,118, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,225,163,212, 62,253,215, 91, 62,226,128,106, 63, 1,111,198, 62,219,150,213, 63, 1, 55, 50,
- 62,219,151, 52, 62,253,186, 68, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22, 81,240, 63, 1, 70,114, 63, 17, 59,103,
- 62,255,195,120, 63, 19, 44, 55, 62,250, 21, 86, 63, 22,188,241, 62,253,149, 28, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,219,151, 52, 62,253,186, 68, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22, 81,240, 63, 1, 70,114, 63, 17, 59,103,
+ 62,255,195,120, 63, 19, 44, 55, 62,250, 21, 86, 63, 22,188,241, 62,253,149, 28, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,232,228,153, 62,250, 67,154, 62,236,213,209, 62,255,250, 4, 62,226,128,106, 63, 1,111,198, 62,225,163,212, 62,253,215, 91,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,188,241, 62,253,149, 28, 63, 19, 44, 55, 62,250, 21, 86, 63, 20,165, 9,
- 62,247, 99,248, 63, 23, 0, 20, 62,251, 57, 6, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,229,232,232, 62,247,142, 74,
- 62,232,228,153, 62,250, 67,154, 62,225,163,212, 62,253,215, 91, 62,225, 26,145, 62,251,116,114, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,188,241, 62,253,149, 28, 63, 19, 44, 55, 62,250, 21, 86, 63, 20,165, 9,
+ 62,247, 99,248, 63, 23, 0, 20, 62,251, 57, 6, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,229,232,232, 62,247,142, 74,
+ 62,232,228,153, 62,250, 67,154, 62,225,163,212, 62,253,215, 91, 62,225, 26,145, 62,251,116,114, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 25,181, 50, 62,253,111,118, 63, 22,188,241, 62,253,149, 28, 63, 23, 0, 20, 62,251, 57, 6, 63, 25,144,130,
- 62,251, 7,128, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,225, 26,145, 62,251,116,114, 62,225,163,212, 62,253,215, 91,
- 62,219,151, 52, 62,253,186, 68, 62,219,225,177, 62,251, 75, 67, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 29, 49,223,
- 62,250,140,199, 63, 25,181, 50, 62,253,111,118, 63, 25,144,130, 62,251, 7,128, 63, 28,195, 80, 62,248,166, 55, 13, 64,158,176,
+ 62,251, 7,128, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,225, 26,145, 62,251,116,114, 62,225,163,212, 62,253,215, 91,
+ 62,219,151, 52, 62,253,186, 68, 62,219,225,177, 62,251, 75, 67, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 29, 49,223,
+ 62,250,140,199, 63, 25,181, 50, 62,253,111,118, 63, 25,144,130, 62,251, 7,128, 63, 28,195, 80, 62,248,166, 55, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,219,225,177, 62,251, 75, 67, 62,219,151, 52, 62,253,186, 68, 62,212,124,147, 62,250,215,146,
- 62,213, 95,233, 62,248,237, 20, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 35, 33,243, 62,245,143, 80, 63, 29, 49,223,
- 62,250,140,199, 63, 28,195, 80, 62,248,166, 55, 63, 33,164, 22, 62,243, 75,102, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,213, 95,233, 62,248,237, 20, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 35, 33,243, 62,245,143, 80, 63, 29, 49,223,
+ 62,250,140,199, 63, 28,195, 80, 62,248,166, 55, 63, 33,164, 22, 62,243, 75,102, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,213, 95,233, 62,248,237, 20, 62,212,124,147, 62,250,215,146, 62,200, 99, 87, 62,245,217,172, 62,203,114, 65, 62,243,143,159,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 36, 49, 14, 62,239, 88,253, 63, 35, 33,243, 62,245,143, 80, 63, 33,164, 22,
- 62,243, 75,102, 63, 34,160, 30, 62,238, 47,169, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,203,114, 65, 62,243,143,159,
- 62,200, 99, 87, 62,245,217,172, 62,198, 71, 97, 62,239,149,192, 62,201,128,188, 62,238,110,126, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 36, 49, 14, 62,239, 88,253, 63, 35, 33,243, 62,245,143, 80, 63, 33,164, 22,
+ 62,243, 75,102, 63, 34,160, 30, 62,238, 47,169, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,203,114, 65, 62,243,143,159,
+ 62,200, 99, 87, 62,245,217,172, 62,198, 71, 97, 62,239,149,192, 62,201,128,188, 62,238,110,126, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 36, 9, 79, 62,229,224, 94, 63, 36, 49, 14, 62,239, 88,253, 63, 34,160, 30, 62,238, 47,169, 63, 34,144,131,
- 62,231, 87,253, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,201,128,188, 62,238,110,126, 62,198, 71, 97, 62,239,149,192,
- 62,198,192,148, 62,230, 11,182, 62,201,190,141, 62,231,140,124, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 31,136,156,
- 62,219,138,194, 63, 36, 9, 79, 62,229,224, 94, 63, 34,144,131, 62,231, 87,253, 63, 30,208, 21, 62,221,182,174, 13, 64,158,176,
+ 62,231, 87,253, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,201,128,188, 62,238,110,126, 62,198, 71, 97, 62,239,149,192,
+ 62,198,192,148, 62,230, 11,182, 62,201,190,141, 62,231,140,124, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 31,136,156,
+ 62,219,138,194, 63, 36, 9, 79, 62,229,224, 94, 63, 34,144,131, 62,231, 87,253, 63, 30,208, 21, 62,221,182,174, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,201,190,141, 62,231,140,124, 62,198,192,148, 62,230, 11,182, 62,208, 30,254, 62,219,177,204,
- 62,209,133,168, 62,221,221, 51, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 26,198,205, 62,214,184,124, 63, 31,136,156,
- 62,219,138,194, 63, 30,208, 21, 62,221,182,174, 63, 26,218,128, 62,217,206, 68, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,209,133,168, 62,221,221, 51, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 26,198,205, 62,214,184,124, 63, 31,136,156,
+ 62,219,138,194, 63, 30,208, 21, 62,221,182,174, 63, 26,218,128, 62,217,206, 68, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,209,133,168, 62,221,221, 51, 62,208, 30,254, 62,219,177,204, 62,217,214,216, 62,214,224,218, 62,217,157, 11, 62,217,243, 64,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 19, 53,217, 62,218,211, 16, 63, 26,198,205, 62,214,184,124, 63, 26,218,128,
- 62,217,206, 68, 63, 20, 53,103, 62,221, 84,236, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,217,157, 11, 62,217,243, 64,
- 62,217,214,216, 62,214,224,218, 62,233, 14, 8, 62,218,226, 66, 62,231, 5, 68, 62,221,101,234, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 19, 53,217, 62,218,211, 16, 63, 26,198,205, 62,214,184,124, 63, 26,218,128,
+ 62,217,206, 68, 63, 20, 53,103, 62,221, 84,236, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,217,157, 11, 62,217,243, 64,
+ 62,217,214,216, 62,214,224,218, 62,233, 14, 8, 62,218,226, 66, 62,231, 5, 68, 62,221,101,234, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 16,216, 4, 62,224, 24,160, 63, 19, 53,217, 62,218,211, 16, 63, 20, 53,103, 62,221, 84,236, 63, 18, 87, 81,
- 62,226,175, 33, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,231, 5, 68, 62,221,101,234, 62,233, 14, 8, 62,218,226, 66,
- 62,237,193,119, 62,224, 38,190, 62,234,187,180, 62,226,190,249, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 19, 44, 55,
- 62,250, 21, 86, 63, 16,171,184, 62,241,133, 40, 63, 18, 68, 98, 62,240,197,150, 63, 20,165, 9, 62,247, 99,248, 13, 64,158,176,
+ 62,226,175, 33, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,231, 5, 68, 62,221,101,234, 62,233, 14, 8, 62,218,226, 66,
+ 62,237,193,119, 62,224, 38,190, 62,234,187,180, 62,226,190,249, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 19, 44, 55,
+ 62,250, 21, 86, 63, 16,171,184, 62,241,133, 40, 63, 18, 68, 98, 62,240,197,150, 63, 20,165, 9, 62,247, 99,248, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,234,197, 35, 62,240,226,215, 62,237,252,218, 62,241,160, 62, 62,232,228,153, 62,250, 67,154,
- 62,229,232,232, 62,247,142, 74, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 16,171,184, 62,241,133, 40, 63, 15,200,120,
- 62,231,255, 84, 63, 18, 4,161, 62,232,184,138, 63, 18, 68, 98, 62,240,197,150, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,229,232,232, 62,247,142, 74, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 16,171,184, 62,241,133, 40, 63, 15,200,120,
+ 62,231,255, 84, 63, 18, 4,161, 62,232,184,138, 63, 18, 68, 98, 62,240,197,150, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,235, 85,154, 62,232,206, 92, 62,239,211, 21, 62,232, 18,185, 62,237,252,218, 62,241,160, 62, 62,234,197, 35, 62,240,226,215,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 15,200,120, 62,231,255, 84, 63, 16,216, 4, 62,224, 24,160, 63, 18, 87, 81,
- 62,226,175, 33, 63, 18, 4,161, 62,232,184,138, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,234,187,180, 62,226,190,249,
- 62,237,193,119, 62,224, 38,190, 62,239,211, 21, 62,232, 18,185, 62,235, 85,154, 62,232,206, 92, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 15,200,120, 62,231,255, 84, 63, 16,216, 4, 62,224, 24,160, 63, 18, 87, 81,
+ 62,226,175, 33, 63, 18, 4,161, 62,232,184,138, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,234,187,180, 62,226,190,249,
+ 62,237,193,119, 62,224, 38,190, 62,239,211, 21, 62,232, 18,185, 62,235, 85,154, 62,232,206, 92, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 3,232,148, 63, 11, 17,164, 63, 11,169, 67, 63, 11,197, 18, 63, 13,120,216, 63, 23, 81,160, 63, 4, 15,147,
- 63, 23,248,227, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,245, 27, 64, 63, 23,166,100, 62,248, 72, 55, 63, 11,232, 91,
- 63, 3,232,148, 63, 11, 17,164, 63, 4, 15,147, 63, 23,248,227, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 11,169, 67,
- 63, 11,197, 18, 63, 22,244,173, 63, 11,215,236, 63, 23,233, 94, 63, 16, 60,186, 63, 13,120,216, 63, 23, 81,160, 13, 64,158,176,
+ 63, 23,248,227, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,245, 27, 64, 63, 23,166,100, 62,248, 72, 55, 63, 11,232, 91,
+ 63, 3,232,148, 63, 11, 17,164, 63, 4, 15,147, 63, 23,248,227, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 11,169, 67,
+ 63, 11,197, 18, 63, 22,244,173, 63, 11,215,236, 63, 23,233, 94, 63, 16, 60,186, 63, 13,120,216, 63, 23, 81,160, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,223,130,109, 63, 16,165,118, 62,225, 89,220, 63, 12, 42, 77, 62,248, 72, 55, 63, 11,232, 91,
- 62,245, 27, 64, 63, 23,166,100, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,244,173, 63, 11,215,236, 63, 26,105, 28,
- 63, 11,194,242, 63, 28, 56,220, 63, 14,250, 66, 63, 23,233, 94, 63, 16, 60,186, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,245, 27, 64, 63, 23,166,100, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,244,173, 63, 11,215,236, 63, 26,105, 28,
+ 63, 11,194,242, 63, 28, 56,220, 63, 14,250, 66, 63, 23,233, 94, 63, 16, 60,186, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,214,161,157, 63, 15,110,219, 62,218, 73,220, 63, 12, 31,169, 62,225, 89,220, 63, 12, 42, 77, 62,223,130,109, 63, 16,165,118,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 26,105, 28, 63, 11,194,242, 63, 34,158,220, 63, 10, 23,175, 63, 39, 44,109,
- 63, 19,221,107, 63, 28, 56,220, 63, 14,250, 66, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,192, 26,156, 63, 20,139, 31,
- 62,201,109,124, 63, 10,121, 72, 62,218, 73,220, 63, 12, 31,169, 62,214,161,157, 63, 15,110,219, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 26,105, 28, 63, 11,194,242, 63, 34,158,220, 63, 10, 23,175, 63, 39, 44,109,
+ 63, 19,221,107, 63, 28, 56,220, 63, 14,250, 66, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,192, 26,156, 63, 20,139, 31,
+ 62,201,109,124, 63, 10,121, 72, 62,218, 73,220, 63, 12, 31,169, 62,214,161,157, 63, 15,110,219, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 34,158,220, 63, 10, 23,175, 63, 46, 88,238, 63, 2,223,146, 63, 56, 80,242, 63, 6,244, 44, 63, 39, 44,109,
- 63, 19,221,107, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 62,156,208, 61, 63, 7, 16,204, 62,177, 87,173, 63, 3, 9,102,
- 62,201,109,124, 63, 10,121, 72, 62,192, 26,156, 63, 20,139, 31, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 63, 46, 88,238,
- 63, 2,223,146, 63, 48,134, 62, 62,249,107, 37, 63, 54,173,195, 62,252,106,239, 63, 56, 80,242, 63, 6,244, 44, 13, 64,158,176,
+ 63, 19,221,107, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 62,156,208, 61, 63, 7, 16,204, 62,177, 87,173, 63, 3, 9,102,
+ 62,201,109,124, 63, 10,121, 72, 62,192, 26,156, 63, 20,139, 31, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 63, 46, 88,238,
+ 63, 2,223,146, 63, 48,134, 62, 62,249,107, 37, 63, 54,173,195, 62,252,106,239, 63, 56, 80,242, 63, 6,244, 44, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,128, 62,160, 36,202, 62,252, 51, 94, 62,172,229,172, 62,249,127,116, 62,177, 87,173, 63, 3, 9,102,
- 62,156,208, 61, 63, 7, 16,204, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 63, 48,134, 62, 62,249,107, 37, 63, 50,229, 38,
- 62,226, 32,169, 63, 53, 88,154, 62,221,146,240, 63, 54,173,195, 62,252,106,239, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64,
+ 62,156,208, 61, 63, 7, 16,204, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 63, 48,134, 62, 62,249,107, 37, 63, 50,229, 38,
+ 62,226, 32,169, 63, 53, 88,154, 62,221,146,240, 63, 54,173,195, 62,252,106,239, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64,
62,162,172,128, 62,221,169, 17, 62,168, 39,196, 62,226, 11,206, 62,172,229,172, 62,249,127,116, 62,160, 36,202, 62,252, 51, 94,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 63, 50,229, 38, 62,226, 32,169, 63, 43, 57, 87, 62,206, 58,222, 63, 49,117,240,
- 62,198,138,164, 63, 53, 88,154, 62,221,146,240, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 62,172,137,147, 62,198, 19,148,
- 62,184,207,130, 62,206, 27, 42, 62,168, 39,196, 62,226, 11,206, 62,162,172,128, 62,221,169, 17, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 63, 50,229, 38, 62,226, 32,169, 63, 43, 57, 87, 62,206, 58,222, 63, 49,117,240,
+ 62,198,138,164, 63, 53, 88,154, 62,221,146,240, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 62,172,137,147, 62,198, 19,148,
+ 62,184,207,130, 62,206, 27, 42, 62,168, 39,196, 62,226, 11,206, 62,162,172,128, 62,221,169, 17, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0,128, 63, 43, 57, 87, 62,206, 58,222, 63, 37, 94, 91, 62,187,120,107, 63, 41,160,156, 62,182,175, 56, 63, 49,117,240,
- 62,198,138,164, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,188,212,202, 62,182,163,245, 62,197, 28,156, 62,187,130,166,
- 62,184,207,130, 62,206, 27, 42, 62,172,137,147, 62,198, 19,148, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 48,252,165,
- 62, 85, 33,133, 63, 48, 54,112, 62, 96, 19, 20, 63, 46, 36,172, 62,129, 7,208, 63, 42, 17,240, 62, 97, 84,129, 13, 64,158,176,
+ 62,198,138,164, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,188,212,202, 62,182,163,245, 62,197, 28,156, 62,187,130,166,
+ 62,184,207,130, 62,206, 27, 42, 62,172,137,147, 62,198, 19,148, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 48,252,165,
+ 62, 85, 33,133, 63, 48, 54,112, 62, 96, 19, 20, 63, 46, 36,172, 62,129, 7,208, 63, 42, 17,240, 62, 97, 84,129, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,181, 71, 76, 62,131,200,204, 62,175,121,117, 62,106,185,183, 62,172, 24,217, 62, 92,237, 21,
- 62,187, 81,138, 62,103, 40, 59, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 48, 89,204, 62, 4,194,134, 63, 48,252,165,
- 62, 85, 33,133, 63, 42, 17,240, 62, 97, 84,129, 63, 37,125,160, 62, 46,211, 50, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16,
+ 62,187, 81,138, 62,103, 40, 59, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 48, 89,204, 62, 4,194,134, 63, 48,252,165,
+ 62, 85, 33,133, 63, 42, 17,240, 62, 97, 84,129, 63, 37,125,160, 62, 46,211, 50, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16,
62,187, 81,138, 62,103, 40, 59, 62,172, 24,217, 62, 92,237, 21, 62,172,197, 94, 62, 4,200,109, 62,195,121, 25, 62, 48,253, 46,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 20, 44, 11, 61,163, 26, 20, 63, 48, 89,204, 62, 4,194,134, 63, 37,125,160,
- 62, 46,211, 50, 63, 24, 92, 40, 62, 21,184,214, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 32, 62,195,121, 25, 62, 48,253, 46,
- 62,172,197, 94, 62, 4,200,109, 62,230,122,140, 61,161,248,202, 62,222, 13,216, 62, 22,116,222, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 20, 44, 11, 61,163, 26, 20, 63, 48, 89,204, 62, 4,194,134, 63, 37,125,160,
+ 62, 46,211, 50, 63, 24, 92, 40, 62, 21,184,214, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 32, 62,195,121, 25, 62, 48,253, 46,
+ 62,172,197, 94, 62, 4,200,109, 62,230,122,140, 61,161,248,202, 62,222, 13,216, 62, 22,116,222, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 32, 63, 16,254,174, 62, 34, 45, 94, 63, 3,199,219, 61,229, 28, 18, 63, 20, 44, 11, 61,163, 26, 20, 63, 24, 92, 40,
- 62, 21,184,214, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 62,230,122,140, 61,161,248,202, 63, 3,199,219, 61,229, 28, 18,
- 62,236,248,140, 62, 34,202,182, 62,222, 13,216, 62, 22,116,222, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 21,152,184,
- 62, 53, 47,182, 63, 16,254,174, 62, 34, 45, 94, 63, 24, 92, 40, 62, 21,184,214, 63, 25, 52,209, 62, 51,140, 76, 13, 64,158,176,
+ 62, 21,184,214, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 62,230,122,140, 61,161,248,202, 63, 3,199,219, 61,229, 28, 18,
+ 62,236,248,140, 62, 34,202,182, 62,222, 13,216, 62, 22,116,222, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 21,152,184,
+ 62, 53, 47,182, 63, 16,254,174, 62, 34, 45, 94, 63, 24, 92, 40, 62, 21,184,214, 63, 25, 52,209, 62, 51,140, 76, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 32, 62,222, 13,216, 62, 22,116,222, 62,236,248,140, 62, 34,202,182, 62,227,207,183, 62, 54, 75,250,
- 62,220,137,229, 62, 52,228,185, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 32, 63, 22, 57,137, 62, 61, 93, 81, 63, 21,152,184,
- 62, 53, 47,182, 63, 25, 52,209, 62, 51,140, 76, 63, 30,166,193, 62, 73,168,114, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,220,137,229, 62, 52,228,185, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 32, 63, 22, 57,137, 62, 61, 93, 81, 63, 21,152,184,
+ 62, 53, 47,182, 63, 25, 52,209, 62, 51,140, 76, 63, 30,166,193, 62, 73,168,114, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,220,137,229, 62, 52,228,185, 62,227,207,183, 62, 54, 75,250, 62,226,152,122, 62, 62,166,190, 62,209,198, 54, 62, 75,240, 18,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,249,250, 62, 88,251,160, 63, 22, 57,137, 62, 61, 93, 81, 63, 30,166,193,
- 62, 73,168,114, 63, 36, 0, 75, 62,116, 47,229, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,209,198, 54, 62, 75,240, 18,
- 62,226,152,122, 62, 62,166,190, 62,225, 83, 90, 62, 90,153, 21, 62,199,231,211, 62,119,237,216, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 22,249,250, 62, 88,251,160, 63, 22, 57,137, 62, 61, 93, 81, 63, 30,166,193,
+ 62, 73,168,114, 63, 36, 0, 75, 62,116, 47,229, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,209,198, 54, 62, 75,240, 18,
+ 62,226,152,122, 62, 62,166,190, 62,225, 83, 90, 62, 90,153, 21, 62,199,231,211, 62,119,237,216, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 30,166,193, 62, 73,168,114, 63, 37,125,160, 62, 46,211, 50, 63, 42, 17,240, 62, 97, 84,129, 63, 36, 0, 75,
- 62,116, 47,229, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,187, 81,138, 62,103, 40, 59, 62,195,121, 25, 62, 48,253, 46,
- 62,209,198, 54, 62, 75,240, 18, 62,199,231,211, 62,119,237,216, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 30,166,193,
- 62, 73,168,114, 63, 25, 52,209, 62, 51,140, 76, 63, 24, 92, 40, 62, 21,184,214, 63, 37,125,160, 62, 46,211, 50, 13, 64,158,176,
+ 62,116, 47,229, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,187, 81,138, 62,103, 40, 59, 62,195,121, 25, 62, 48,253, 46,
+ 62,209,198, 54, 62, 75,240, 18, 62,199,231,211, 62,119,237,216, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 30,166,193,
+ 62, 73,168,114, 63, 25, 52,209, 62, 51,140, 76, 63, 24, 92, 40, 62, 21,184,214, 63, 37,125,160, 62, 46,211, 50, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,222, 13,216, 62, 22,116,222, 62,220,137,229, 62, 52,228,185, 62,209,198, 54, 62, 75,240, 18,
- 62,195,121, 25, 62, 48,253, 46, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 36,163, 37, 62,140,168,191, 63, 36, 0, 75,
- 62,116, 47,229, 63, 42, 17,240, 62, 97, 84,129, 63, 46, 36,172, 62,129, 7,208, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,195,121, 25, 62, 48,253, 46, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 36,163, 37, 62,140,168,191, 63, 36, 0, 75,
+ 62,116, 47,229, 63, 42, 17,240, 62, 97, 84,129, 63, 46, 36,172, 62,129, 7,208, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,187, 81,138, 62,103, 40, 59, 62,199,231,211, 62,119,237,216, 62,199, 64, 6, 62,142, 6,105, 62,181, 71, 76, 62,131,200,204,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20, 62,132, 56, 17, 63, 22,249,250, 62, 88,251,160, 63, 36, 0, 75,
- 62,116, 47,229, 63, 36,163, 37, 62,140,168,191, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,199,231,211, 62,119,237,216,
- 62,225, 83, 90, 62, 90,153, 21, 62,221, 42, 54, 62,133, 25,209, 62,199, 64, 6, 62,142, 6,105, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20, 62,132, 56, 17, 63, 22,249,250, 62, 88,251,160, 63, 36, 0, 75,
+ 62,116, 47,229, 63, 36,163, 37, 62,140,168,191, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,199,231,211, 62,119,237,216,
+ 62,225, 83, 90, 62, 90,153, 21, 62,221, 42, 54, 62,133, 25,209, 62,199, 64, 6, 62,142, 6,105, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 27, 46,208, 62,148, 35,149, 63, 36, 60, 91, 62,150,222,221, 63, 33,170,222, 62,158,126, 74, 63, 27,177, 36,
- 62,156,151,158, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,204,234, 72, 62,159, 63, 56, 62,199,245,150, 62,152, 15, 85,
- 62,217,166,238, 62,148,221,229, 62,216,160, 0, 62,157, 44,127, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20,
- 62,132, 56, 17, 63, 36,163, 37, 62,140,168,191, 63, 36, 60, 91, 62,150,222,221, 63, 27, 46,208, 62,148, 35,149, 13, 64,158,176,
+ 62,156,151,158, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,204,234, 72, 62,159, 63, 56, 62,199,245,150, 62,152, 15, 85,
+ 62,217,166,238, 62,148,221,229, 62,216,160, 0, 62,157, 44,127, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 25, 81, 20,
+ 62,132, 56, 17, 63, 36,163, 37, 62,140,168,191, 63, 36, 60, 91, 62,150,222,221, 63, 27, 46,208, 62,148, 35,149, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,199,245,150, 62,152, 15, 85, 62,199, 64, 6, 62,142, 6,105, 62,221, 42, 54, 62,133, 25,209,
- 62,217,166,238, 62,148,221,229, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 27,177, 36,
- 62,156,151,158, 63, 33,170,222, 62,158,126, 74, 63, 31,212,102, 62,164,192,144, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,217,166,238, 62,148,221,229, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 27,177, 36,
+ 62,156,151,158, 63, 33,170,222, 62,158,126, 74, 63, 31,212,102, 62,164,192,144, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,204,234, 72, 62,159, 63, 56, 62,216,160, 0, 62,157, 44,127, 62,216, 21,115, 62,166,177, 14, 62,208,119, 17, 62,165, 65,201,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 31,212,102, 62,164,192,144, 63, 41,160,156,
- 62,182,175, 56, 63, 37, 94, 91, 62,187,120,107, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,188,212,202, 62,182,163,245,
- 62,208,119, 17, 62,165, 65,201, 62,216, 21,115, 62,166,177, 14, 62,197, 28,156, 62,187,130,166, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 27,239,111, 62,166, 77,159, 63, 31,212,102, 62,164,192,144, 63, 41,160,156,
+ 62,182,175, 56, 63, 37, 94, 91, 62,187,120,107, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,188,212,202, 62,182,163,245,
+ 62,208,119, 17, 62,165, 65,201, 62,216, 21,115, 62,166,177, 14, 62,197, 28,156, 62,187,130,166, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 62,194,119,104, 63, 82,189,164, 62,212, 73, 23, 63, 90,239,152, 62,205,192,100, 63, 97,238, 46, 62,185, 56, 38,
- 63, 91,154, 72, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,141, 94,228, 63,100,234, 86, 62,150, 66, 84, 63, 94,154,114,
- 62,173, 86,230, 63, 98, 66, 79, 62,162,143, 20, 63,106,173, 44, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 63, 87,122, 72,
- 62, 62, 8,216, 63, 84,106,202, 62,113,185,137, 63, 72, 77,226, 62,121, 21,204, 63, 71,225,158, 62, 68, 34,113, 13, 64,158,176,
+ 63, 91,154, 72, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,141, 94,228, 63,100,234, 86, 62,150, 66, 84, 63, 94,154,114,
+ 62,173, 86,230, 63, 98, 66, 79, 62,162,143, 20, 63,106,173, 44, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 63, 87,122, 72,
+ 62, 62, 8,216, 63, 84,106,202, 62,113,185,137, 63, 72, 77,226, 62,121, 21,204, 63, 71,225,158, 62, 68, 34,113, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 16, 62,137, 32,132, 62,121, 65,181, 62,107,179,168, 62,103,127,139, 62,114,147,210, 62, 61,116,212,
- 62,142,125,248, 62, 80, 4, 30, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 71,225,158, 62, 68, 34,113, 63, 72, 77,226,
- 62,121, 21,204, 63, 51, 7, 8, 62,130,186, 5, 63, 49,166, 3, 62, 96, 57,232, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,142,125,248, 62, 80, 4, 30, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 71,225,158, 62, 68, 34,113, 63, 72, 77,226,
+ 62,121, 21,204, 63, 51, 7, 8, 62,130,186, 5, 63, 49,166, 3, 62, 96, 57,232, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,172,197, 18, 62,133,112, 41, 62,137, 32,132, 62,121, 65,181, 62,142,125,248, 62, 80, 4, 30, 62,174,228,121, 62,109, 79, 52,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 49,166, 3, 62, 96, 57,232, 63, 51, 7, 8, 62,130,186, 5, 63, 46, 36,172,
- 62,129, 7,208, 63, 48, 54,112, 62, 96, 19, 20, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,181, 71, 76, 62,131,200,204,
- 62,172,197, 18, 62,133,112, 41, 62,174,228,121, 62,109, 79, 52, 62,175,121,117, 62,106,185,183, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 49,166, 3, 62, 96, 57,232, 63, 51, 7, 8, 62,130,186, 5, 63, 46, 36,172,
+ 62,129, 7,208, 63, 48, 54,112, 62, 96, 19, 20, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,181, 71, 76, 62,131,200,204,
+ 62,172,197, 18, 62,133,112, 41, 62,174,228,121, 62,109, 79, 52, 62,175,121,117, 62,106,185,183, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 36,163, 37, 62,140,168,191, 63, 46, 36,172, 62,129, 7,208, 63, 51, 7, 8, 62,130,186, 5, 63, 36, 60, 91,
- 62,150,222,221, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,172,197, 18, 62,133,112, 41, 62,181, 71, 76, 62,131,200,204,
- 62,199, 64, 6, 62,142, 6,105, 62,199,245,150, 62,152, 15, 85, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 53, 88,154,
- 62,221,146,240, 63, 49,117,240, 62,198,138,164, 63, 69, 19,224, 62,190, 68, 24, 63, 74, 64, 53, 62,224, 31,171, 13, 64,158,176,
+ 62,150,222,221, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,172,197, 18, 62,133,112, 41, 62,181, 71, 76, 62,131,200,204,
+ 62,199, 64, 6, 62,142, 6,105, 62,199,245,150, 62,152, 15, 85, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 53, 88,154,
+ 62,221,146,240, 63, 49,117,240, 62,198,138,164, 63, 69, 19,224, 62,190, 68, 24, 63, 74, 64, 53, 62,224, 31,171, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 16, 62,134, 78,250, 62,186,213,148, 62,172,137,147, 62,198, 19,148, 62,162,172,128, 62,221,169, 17,
- 62,114,112,184, 62,220,169,248, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 62,214, 74, 54, 63, 70, 55, 20, 62,233,130, 48,
- 63, 83, 69,188, 62,212, 73, 23, 63, 90,239,152, 62,194,119,104, 63, 82,189,164, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,114,112,184, 62,220,169,248, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 62,214, 74, 54, 63, 70, 55, 20, 62,233,130, 48,
+ 63, 83, 69,188, 62,212, 73, 23, 63, 90,239,152, 62,194,119,104, 63, 82,189,164, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,150, 66, 84, 63, 94,154,114, 62,153, 1, 66, 63, 81,149,245, 62,185, 56, 38, 63, 83,110,102, 62,173, 86,230, 63, 98, 66, 79,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 63, 66,242,106, 63, 25, 94,202, 63, 70,100,190, 63, 15,234,222, 63, 77,189, 90,
- 63, 17, 88,233, 63, 74,206, 8, 63, 27,118, 88, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 96, 32, 22, 63, 16, 60, 66,
- 62,125, 87, 86, 63, 15, 5,174, 62,132,187, 78, 63, 24, 44,180, 62,108, 79, 26, 63, 26, 1,124, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 63, 66,242,106, 63, 25, 94,202, 63, 70,100,190, 63, 15,234,222, 63, 77,189, 90,
+ 63, 17, 88,233, 63, 74,206, 8, 63, 27,118, 88, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 96, 32, 22, 63, 16, 60, 66,
+ 62,125, 87, 86, 63, 15, 5,174, 62,132,187, 78, 63, 24, 44,180, 62,108, 79, 26, 63, 26, 1,124, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 74,206, 8, 63, 27,118, 88, 63, 77,189, 90, 63, 17, 88,233, 63, 85,139, 72, 63, 19, 51,103, 63, 85,119,220,
- 63, 31, 71, 77, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 64,199, 64, 63, 18, 40, 26, 62, 96, 32, 22, 63, 16, 60, 66,
- 62,108, 79, 26, 63, 26, 1,124, 62, 67,191, 44, 63, 30, 89, 90, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 85,119,220,
- 63, 31, 71, 77, 63, 85,139, 72, 63, 19, 51,103, 63,100,213,228, 63, 20,156, 72, 63, 96, 82, 18, 63, 34,133,128, 13, 64,158,176,
+ 63, 31, 71, 77, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 64,199, 64, 63, 18, 40, 26, 62, 96, 32, 22, 63, 16, 60, 66,
+ 62,108, 79, 26, 63, 26, 1,124, 62, 67,191, 44, 63, 30, 89, 90, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 85,119,220,
+ 63, 31, 71, 77, 63, 85,139, 72, 63, 19, 51,103, 63,100,213,228, 63, 20,156, 72, 63, 96, 82, 18, 63, 34,133,128, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,128, 62, 1, 50,226, 63, 20, 68,184, 62, 64,199, 64, 63, 18, 40, 26, 62, 67,191, 44, 63, 30, 89, 90,
- 62, 24,204,194, 63, 34,186, 32, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 63, 56, 80,242, 63, 6,244, 44, 63, 54,173,195,
- 62,252,106,239, 63, 60,205,115, 62,253,150,213, 63, 64, 14,166, 63, 4, 80, 81, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16,
+ 62, 24,204,194, 63, 34,186, 32, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 63, 56, 80,242, 63, 6,244, 44, 63, 54,173,195,
+ 62,252,106,239, 63, 60,205,115, 62,253,150,213, 63, 64, 14,166, 63, 4, 80, 81, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16,
62,147, 85,190, 62,252,176, 91, 62,160, 36,202, 62,252, 51, 94, 62,156,208, 61, 63, 7, 16,204, 62,140,121,160, 63, 3,197, 74,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 64, 14,166, 63, 4, 80, 81, 63, 60,205,115, 62,253,150,213, 63, 73,103, 68,
- 63, 0,248,233, 63, 75, 12,248, 63, 8,206, 64, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,115, 59,144, 62,255,143,102,
- 62,147, 85,190, 62,252,176, 91, 62,140,121,160, 63, 3,197, 74, 62,107,135, 78, 63, 7,182, 88, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 64, 14,166, 63, 4, 80, 81, 63, 60,205,115, 62,253,150,213, 63, 73,103, 68,
+ 63, 0,248,233, 63, 75, 12,248, 63, 8,206, 64, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,115, 59,144, 62,255,143,102,
+ 62,147, 85,190, 62,252,176, 91, 62,140,121,160, 63, 3,197, 74, 62,107,135, 78, 63, 7,182, 88, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 75, 12,248, 63, 8,206, 64, 63, 73,103, 68, 63, 0,248,233, 63, 82,151,239, 63, 3,223, 86, 63, 82,227,181,
- 63, 11,102,189, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 77, 17, 82, 63, 2, 98,162, 62,115, 59,144, 62,255,143,102,
- 62,107,135, 78, 63, 7,182, 88, 62, 75, 98,202, 63, 10, 43,108, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 82,227,181,
- 63, 11,102,189, 63, 82,151,239, 63, 3,223, 86, 63, 91,224, 92, 63, 5,144,239, 63, 90,148,161, 63, 13, 95,146, 13, 64,158,176,
+ 63, 11,102,189, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 77, 17, 82, 63, 2, 98,162, 62,115, 59,144, 62,255,143,102,
+ 62,107,135, 78, 63, 7,182, 88, 62, 75, 98,202, 63, 10, 43,108, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 82,227,181,
+ 63, 11,102,189, 63, 82,151,239, 63, 3,223, 86, 63, 91,224, 92, 63, 5,144,239, 63, 90,148,161, 63, 13, 95,146, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 38, 40,178, 63, 3,230, 14, 62, 77, 17, 82, 63, 2, 98,162, 62, 75, 98,202, 63, 10, 43,108,
- 62, 43,162, 10, 63, 12, 50, 8, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,103, 89,120, 63, 2, 76,105, 63,103,179,170,
- 63, 12,105,142, 63, 90,148,161, 63, 13, 95,146, 63, 91,224, 92, 63, 5,144,239, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 43,162, 10, 63, 12, 50, 8, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,103, 89,120, 63, 2, 76,105, 63,103,179,170,
+ 63, 12,105,142, 63, 90,148,161, 63, 13, 95,146, 63, 91,224, 92, 63, 5,144,239, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 43,162, 10, 63, 12, 50, 8, 61,231, 41,168, 63, 11, 83,158, 61,234,128,116, 63, 0, 39,200, 62, 38, 40,178, 63, 3,230, 14,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,100,213,228, 63, 20,156, 72, 63, 85,139, 72, 63, 19, 51,103, 63, 90,148,161,
- 63, 13, 95,146, 63,103,179,170, 63, 12,105,142, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 43,162, 10, 63, 12, 50, 8,
- 62, 64,199, 64, 63, 18, 40, 26, 62, 1, 50,226, 63, 20, 68,184, 61,231, 41,168, 63, 11, 83,158, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,100,213,228, 63, 20,156, 72, 63, 85,139, 72, 63, 19, 51,103, 63, 90,148,161,
+ 63, 13, 95,146, 63,103,179,170, 63, 12,105,142, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 43,162, 10, 63, 12, 50, 8,
+ 62, 64,199, 64, 63, 18, 40, 26, 62, 1, 50,226, 63, 20, 68,184, 61,231, 41,168, 63, 11, 83,158, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 85,139, 72, 63, 19, 51,103, 63, 77,189, 90, 63, 17, 88,233, 63, 82,227,181, 63, 11,102,189, 63, 90,148,161,
- 63, 13, 95,146, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 75, 98,202, 63, 10, 43,108, 62, 96, 32, 22, 63, 16, 60, 66,
- 62, 64,199, 64, 63, 18, 40, 26, 62, 43,162, 10, 63, 12, 50, 8, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 77,189, 90,
- 63, 17, 88,233, 63, 70,100,190, 63, 15,234,222, 63, 75, 12,248, 63, 8,206, 64, 63, 82,227,181, 63, 11,102,189, 13, 64,158,176,
+ 63, 13, 95,146, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 75, 98,202, 63, 10, 43,108, 62, 96, 32, 22, 63, 16, 60, 66,
+ 62, 64,199, 64, 63, 18, 40, 26, 62, 43,162, 10, 63, 12, 50, 8, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 77,189, 90,
+ 63, 17, 88,233, 63, 70,100,190, 63, 15,234,222, 63, 75, 12,248, 63, 8,206, 64, 63, 82,227,181, 63, 11,102,189, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,107,135, 78, 63, 7,182, 88, 62,125, 87, 86, 63, 15, 5,174, 62, 96, 32, 22, 63, 16, 60, 66,
- 62, 75, 98,202, 63, 10, 43,108, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 70,100,190, 63, 15,234,222, 63, 60,235, 82,
- 63, 12, 12, 27, 63, 64, 14,166, 63, 4, 80, 81, 63, 75, 12,248, 63, 8,206, 64, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 75, 98,202, 63, 10, 43,108, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 70,100,190, 63, 15,234,222, 63, 60,235, 82,
+ 63, 12, 12, 27, 63, 64, 14,166, 63, 4, 80, 81, 63, 75, 12,248, 63, 8,206, 64, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,140,121,160, 63, 3,197, 74, 62,145,230, 78, 63, 11,225,148, 62,125, 87, 86, 63, 15, 5,174, 62,107,135, 78, 63, 7,182, 88,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 57,118, 31, 63, 12, 79,230, 63, 56, 80,242, 63, 6,244, 44, 63, 64, 14,166,
- 63, 4, 80, 81, 63, 60,235, 82, 63, 12, 12, 27, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 32, 62,140,121,160, 63, 3,197, 74,
- 62,156,208, 61, 63, 7, 16,204, 62,152,199, 0, 63, 12,133, 13, 62,145,230, 78, 63, 11,225,148, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 57,118, 31, 63, 12, 79,230, 63, 56, 80,242, 63, 6,244, 44, 63, 64, 14,166,
+ 63, 4, 80, 81, 63, 60,235, 82, 63, 12, 12, 27, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 32, 62,140,121,160, 63, 3,197, 74,
+ 62,156,208, 61, 63, 7, 16,204, 62,152,199, 0, 63, 12,133, 13, 62,145,230, 78, 63, 11,225,148, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 32, 63, 57,240,195, 63, 23,138, 10, 63, 60,235, 82, 63, 12, 12, 27, 63, 70,100,190, 63, 15,234,222, 63, 66,242,106,
- 63, 25, 94,202, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,125, 87, 86, 63, 15, 5,174, 62,145,230, 78, 63, 11,225,148,
- 62,150, 7,247, 63, 23, 12, 96, 62,132,187, 78, 63, 24, 44,180, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13,120,216,
- 63, 23, 81,160, 63, 23,233, 94, 63, 16, 60,186, 63, 28, 56,220, 63, 14,250, 66, 63, 39, 44,109, 63, 19,221,107, 13, 64,158,176,
+ 63, 25, 94,202, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,125, 87, 86, 63, 15, 5,174, 62,145,230, 78, 63, 11,225,148,
+ 62,150, 7,247, 63, 23, 12, 96, 62,132,187, 78, 63, 24, 44,180, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 13,120,216,
+ 63, 23, 81,160, 63, 23,233, 94, 63, 16, 60,186, 63, 28, 56,220, 63, 14,250, 66, 63, 39, 44,109, 63, 19,221,107, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,214,161,157, 63, 15,110,219, 62,223,130,109, 63, 16,165,118, 62,245, 27, 64, 63, 23,166,100,
- 62,192, 26,156, 63, 20,139, 31, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 56, 29,176, 63, 20,206, 88, 63, 57,118, 31,
- 63, 12, 79,230, 63, 60,235, 82, 63, 12, 12, 27, 63, 57,240,195, 63, 23,138, 10, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,192, 26,156, 63, 20,139, 31, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 56, 29,176, 63, 20,206, 88, 63, 57,118, 31,
+ 63, 12, 79,230, 63, 60,235, 82, 63, 12, 12, 27, 63, 57,240,195, 63, 23,138, 10, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,145,230, 78, 63, 11,225,148, 62,152,199, 0, 63, 12,133, 13, 62,153,211,239, 63, 20,159,220, 62,150, 7,247, 63, 23, 12, 96,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 54,148, 48, 63, 22,206,220, 63, 56, 29,176, 63, 20,206, 88, 63, 57,240,195,
- 63, 23,138, 10, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,150, 7,247, 63, 23, 12, 96,
- 62,153,211,239, 63, 20,159,220, 62,156,106,108, 63, 22,154,146, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 54,148, 48, 63, 22,206,220, 63, 56, 29,176, 63, 20,206, 88, 63, 57,240,195,
+ 63, 23,138, 10, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,150, 7,247, 63, 23, 12, 96,
+ 62,153,211,239, 63, 20,159,220, 62,156,106,108, 63, 22,154,146, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 54,173,195, 62,252,106,239, 63, 53, 88,154, 62,221,146,240, 63, 74, 64, 53, 62,224, 31,171, 63, 60,205,115,
- 62,253,150,213, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 32, 62,114,112,184, 62,220,169,248, 62,162,172,128, 62,221,169, 17,
- 62,160, 36,202, 62,252, 51, 94, 62,147, 85,190, 62,252,176, 91, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 32, 63, 74, 64, 53,
- 62,224, 31,171, 63, 81,106,217, 62,232,214, 14, 63, 73,103, 68, 63, 0,248,233, 63, 60,205,115, 62,253,150,213, 13, 64,158,176,
+ 62,253,150,213, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 32, 62,114,112,184, 62,220,169,248, 62,162,172,128, 62,221,169, 17,
+ 62,160, 36,202, 62,252, 51, 94, 62,147, 85,190, 62,252,176, 91, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 32, 63, 74, 64, 53,
+ 62,224, 31,171, 63, 81,106,217, 62,232,214, 14, 63, 73,103, 68, 63, 0,248,233, 63, 60,205,115, 62,253,150,213, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,115, 59,144, 62,255,143,102, 62, 84, 93, 88, 62,228,105, 50, 62,114,112,184, 62,220,169,248,
- 62,147, 85,190, 62,252,176, 91, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 81,106,217, 62,232,214, 14, 63, 93,154,106,
- 62,233, 26,226, 63, 82,151,239, 63, 3,223, 86, 63, 73,103, 68, 63, 0,248,233, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,147, 85,190, 62,252,176, 91, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 81,106,217, 62,232,214, 14, 63, 93,154,106,
+ 62,233, 26,226, 63, 82,151,239, 63, 3,223, 86, 63, 73,103, 68, 63, 0,248,233, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 77, 17, 82, 63, 2, 98,162, 62, 33, 1,128, 62,226,210, 70, 62, 84, 93, 88, 62,228,105, 50, 62,115, 59,144, 62,255,143,102,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,103, 89,120, 63, 2, 76,105, 63, 91,224, 92, 63, 5,144,239, 63, 82,151,239,
- 63, 3,223, 86, 63, 93,154,106, 62,233, 26,226, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 77, 17, 82, 63, 2, 98,162,
- 62, 38, 40,178, 63, 3,230, 14, 61,234,128,116, 63, 0, 39,200, 62, 33, 1,128, 62,226,210, 70, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,103, 89,120, 63, 2, 76,105, 63, 91,224, 92, 63, 5,144,239, 63, 82,151,239,
+ 63, 3,223, 86, 63, 93,154,106, 62,233, 26,226, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 77, 17, 82, 63, 2, 98,162,
+ 62, 38, 40,178, 63, 3,230, 14, 61,234,128,116, 63, 0, 39,200, 62, 33, 1,128, 62,226,210, 70, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 51, 7, 8, 62,130,186, 5, 63, 72, 77,226, 62,121, 21,204, 63, 73,254,154, 62,140, 82,178, 63, 56,188, 90,
- 62,159,207,103, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,130,249,249, 62,137,175,246, 62,137, 32,132, 62,121, 65,181,
- 62,172,197, 18, 62,133,112, 41, 62,161, 5,192, 62,159, 40,228, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 69, 19,224,
- 62,190, 68, 24, 63, 56,188, 90, 62,159,207,103, 63, 73,254,154, 62,140, 82,178, 63, 77,217,216, 62,157,228, 7, 13, 64,158,176,
+ 62,159,207,103, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,130,249,249, 62,137,175,246, 62,137, 32,132, 62,121, 65,181,
+ 62,172,197, 18, 62,133,112, 41, 62,161, 5,192, 62,159, 40,228, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 69, 19,224,
+ 62,190, 68, 24, 63, 56,188, 90, 62,159,207,103, 63, 73,254,154, 62,140, 82,178, 63, 77,217,216, 62,157,228, 7, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,128, 62,130,249,249, 62,137,175,246, 62,161, 5,192, 62,159, 40,228, 62,134, 78,250, 62,186,213,148,
- 62,111,118,154, 62,152,108,120, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 63, 49,117,240, 62,198,138,164, 63, 41,160,156,
- 62,182,175, 56, 63, 56,188, 90, 62,159,207,103, 63, 69, 19,224, 62,190, 68, 24, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62,111,118,154, 62,152,108,120, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 63, 49,117,240, 62,198,138,164, 63, 41,160,156,
+ 62,182,175, 56, 63, 56,188, 90, 62,159,207,103, 63, 69, 19,224, 62,190, 68, 24, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62,161, 5,192, 62,159, 40,228, 62,188,212,202, 62,182,163,245, 62,172,137,147, 62,198, 19,148, 62,134, 78,250, 62,186,213,148,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 41,160,156, 62,182,175, 56, 63, 33,170,222, 62,158,126, 74, 63, 36, 60, 91,
- 62,150,222,221, 63, 56,188, 90, 62,159,207,103, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,199,245,150, 62,152, 15, 85,
- 62,204,234, 72, 62,159, 63, 56, 62,188,212,202, 62,182,163,245, 62,161, 5,192, 62,159, 40,228, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 41,160,156, 62,182,175, 56, 63, 33,170,222, 62,158,126, 74, 63, 36, 60, 91,
+ 62,150,222,221, 63, 56,188, 90, 62,159,207,103, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,199,245,150, 62,152, 15, 85,
+ 62,204,234, 72, 62,159, 63, 56, 62,188,212,202, 62,182,163,245, 62,161, 5,192, 62,159, 40,228, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 36, 60, 91, 62,150,222,221, 63, 51, 7, 8, 62,130,186, 5, 63, 56,188, 90, 62,159,207,103, 63,128, 0, 0,
- 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,161, 5,192, 62,159, 40,228, 62,172,197, 18, 62,133,112, 41,
- 62,199,245,150, 62,152, 15, 85, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 41,160,156,
- 62,182,175, 56, 63, 31,212,102, 62,164,192,144, 63, 33,170,222, 62,158,126, 74, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176,
+ 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,161, 5,192, 62,159, 40,228, 62,172,197, 18, 62,133,112, 41,
+ 62,199,245,150, 62,152, 15, 85, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 41,160,156,
+ 62,182,175, 56, 63, 31,212,102, 62,164,192,144, 63, 33,170,222, 62,158,126, 74, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,204,234, 72, 62,159, 63, 56, 62,208,119, 17, 62,165, 65,201, 62,188,212,202, 62,182,163,245,
- 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,245, 44,226, 63, 96,140,129, 62,227,135, 42,
- 63,101, 2, 58, 62,219,168,136, 63, 95,236, 30, 62,238, 30,135, 63, 90, 41,200, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,245, 44,226, 63, 96,140,129, 62,227,135, 42,
+ 63,101, 2, 58, 62,219,168,136, 63, 95,236, 30, 62,238, 30,135, 63, 90, 41,200, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62,137,240,216, 63, 93,226, 90, 62,122,103,110, 63, 92,255,236, 62,120, 84, 74, 63, 83, 32,104, 62,138,193, 32, 63, 83, 3, 16,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,233,130, 48, 63, 83, 69,188, 62,238, 30,135, 63, 90, 41,200, 62,219,168,136,
- 63, 95,236, 30, 62,212, 73, 23, 63, 90,239,152, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 62,137,240,216, 63, 93,226, 90,
- 62,138,193, 32, 63, 83, 3, 16, 62,153, 1, 66, 63, 81,149,245, 62,150, 66, 84, 63, 94,154,114, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,233,130, 48, 63, 83, 69,188, 62,238, 30,135, 63, 90, 41,200, 62,219,168,136,
+ 63, 95,236, 30, 62,212, 73, 23, 63, 90,239,152, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 62,137,240,216, 63, 93,226, 90,
+ 62,138,193, 32, 63, 83, 3, 16, 62,153, 1, 66, 63, 81,149,245, 62,150, 66, 84, 63, 94,154,114, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0,240, 63, 77,217,216, 62,157,228, 7, 63, 73,254,154, 62,140, 82,178, 63, 90, 61, 33, 62,124,207,195, 63, 90,225,160,
- 62,137,121,110, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 62, 81,207, 98, 62,110, 1,109, 62,130,249,249, 62,137,175,246,
- 62,111,118,154, 62,152,108,120, 62, 74,125,166, 62,130, 30,252, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 72, 77,226,
- 62,121, 21,204, 63, 84,106,202, 62,113,185,137, 63, 90, 61, 33, 62,124,207,195, 63, 73,254,154, 62,140, 82,178, 13, 64,158,176,
+ 62,137,121,110, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 62, 81,207, 98, 62,110, 1,109, 62,130,249,249, 62,137,175,246,
+ 62,111,118,154, 62,152,108,120, 62, 74,125,166, 62,130, 30,252, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 72, 77,226,
+ 62,121, 21,204, 63, 84,106,202, 62,113,185,137, 63, 90, 61, 33, 62,124,207,195, 63, 73,254,154, 62,140, 82,178, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 81,207, 98, 62,110, 1,109, 62,107,179,168, 62,103,127,139, 62,137, 32,132, 62,121, 65,181,
- 62,130,249,249, 62,137,175,246, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,212, 73, 23, 63, 90,239,152, 62,219,168,136,
- 63, 95,236, 30, 62,205,192,100, 63, 97,238, 46, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112,
+ 62,130,249,249, 62,137,175,246, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,212, 73, 23, 63, 90,239,152, 62,219,168,136,
+ 63, 95,236, 30, 62,205,192,100, 63, 97,238, 46, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112,
62,141, 94,228, 63,100,234, 86, 62,137,240,216, 63, 93,226, 90, 62,150, 66, 84, 63, 94,154,114, 63,128, 0, 0, 63,128, 0, 0,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112, 63,109,178, 31, 62,228, 68,224, 63,102,178, 46, 62,232,184,100, 63,101,251,100,
- 62,227,198,238, 63,107,173, 94, 62,225,130,168, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,249,209, 68, 62,219,134, 70,
- 61,242,216,120, 62,225, 40,124, 61,177, 27, 28, 62,219,240, 42, 61,196,131, 76, 62,216, 97,196, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112, 63,109,178, 31, 62,228, 68,224, 63,102,178, 46, 62,232,184,100, 63,101,251,100,
+ 62,227,198,238, 63,107,173, 94, 62,225,130,168, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,249,209, 68, 62,219,134, 70,
+ 61,242,216,120, 62,225, 40,124, 61,177, 27, 28, 62,219,240, 42, 61,196,131, 76, 62,216, 97,196, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,109,178, 31, 62,228, 68,224, 63,107,173, 94, 62,225,130,168, 63,114,102,144, 62,220, 23,198, 63,116, 76, 41,
- 62,222,153,139, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,120,163, 56, 62,208,252, 58, 61,196,131, 76, 62,216, 97,196,
- 61,177, 27, 28, 62,219,240, 42, 61, 73,183,128, 62,213,108, 84, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,116, 76, 41,
- 62,222,153,139, 63,114,102,144, 62,220, 23,198, 63,117, 87, 84, 62,211,255,221, 63,119,115,183, 62,215, 49,140, 13, 64,158,176,
+ 62,222,153,139, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,120,163, 56, 62,208,252, 58, 61,196,131, 76, 62,216, 97,196,
+ 61,177, 27, 28, 62,219,240, 42, 61, 73,183,128, 62,213,108, 84, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,116, 76, 41,
+ 62,222,153,139, 63,114,102,144, 62,220, 23,198, 63,117, 87, 84, 62,211,255,221, 63,119,115,183, 62,215, 49,140, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 61, 55, 29,144, 62,194,183,207, 61,120,163, 56, 62,208,252, 58, 61, 73,183,128, 62,213,108, 84,
- 60,231,111,224, 62,198,142,100, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,119,115,183, 62,215, 49,140, 63,117, 87, 84,
- 62,211,255,221, 63,118, 20,150, 62,196,110, 60, 63,122, 12, 49, 62,197, 8,246, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 60,231,111,224, 62,198,142,100, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,119,115,183, 62,215, 49,140, 63,117, 87, 84,
+ 62,211,255,221, 63,118, 20,150, 62,196,110, 60, 63,122, 12, 49, 62,197, 8,246, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,103,197, 96, 62,170,206, 15, 61, 55, 29,144, 62,194,183,207, 60,231,111,224, 62,198,142,100, 61, 16, 54,240, 62,167, 4,120,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,122, 12, 49, 62,197, 8,246, 63,118, 20,150, 62,196,110, 60, 63,108,155, 17,
- 62,178,201,130, 63,110,190, 84, 62,172, 77,223, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,246,252,148, 62,160,116,164,
- 61,103,197, 96, 62,170,206, 15, 61, 16, 54,240, 62,167, 4,120, 61,246, 66, 8, 62,152,161, 28, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,122, 12, 49, 62,197, 8,246, 63,118, 20,150, 62,196,110, 60, 63,108,155, 17,
+ 62,178,201,130, 63,110,190, 84, 62,172, 77,223, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,246,252,148, 62,160,116,164,
+ 61,103,197, 96, 62,170,206, 15, 61, 16, 54,240, 62,167, 4,120, 61,246, 66, 8, 62,152,161, 28, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,110,190, 84, 62,172, 77,223, 63,108,155, 17, 62,178,201,130, 63, 92,180, 21, 62,173, 95,202, 63, 90, 5,151,
- 62,167, 61,138, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 54,216,144, 62,163, 76, 35, 61,246,252,148, 62,160,116,164,
- 61,246, 66, 8, 62,152,161, 28, 62, 66,251,194, 62,158,102,163, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,108,155, 17,
- 62,178,201,130, 63,109,132,198, 62,186,157,182, 63, 97, 32, 68, 62,178, 12,192, 63, 92,180, 21, 62,173, 95,202, 13, 64,158,176,
+ 62,167, 61,138, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 54,216,144, 62,163, 76, 35, 61,246,252,148, 62,160,116,164,
+ 61,246, 66, 8, 62,152,161, 28, 62, 66,251,194, 62,158,102,163, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,108,155, 17,
+ 62,178,201,130, 63,109,132,198, 62,186,157,182, 63, 97, 32, 68, 62,178, 12,192, 63, 92,180, 21, 62,173, 95,202, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 36,185, 48, 62,166, 7, 16, 61,221, 91, 40, 62,167,194, 4, 61,246,252,148, 62,160,116,164,
- 62, 54,216,144, 62,163, 76, 35, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,118, 20,150, 62,196,110, 60, 63,115,225, 84,
- 62,198, 85,208, 63,109,132,198, 62,186,157,182, 63,108,155, 17, 62,178,201,130, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 54,216,144, 62,163, 76, 35, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,118, 20,150, 62,196,110, 60, 63,115,225, 84,
+ 62,198, 85,208, 63,109,132,198, 62,186,157,182, 63,108,155, 17, 62,178,201,130, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,221, 91, 40, 62,167,194, 4, 61,134,221,244, 62,175,164,121, 61,103,197, 96, 62,170,206, 15, 61,246,252,148, 62,160,116,164,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,117, 87, 84, 62,211,255,221, 63,116, 48,222, 62,209, 8,169, 63,115,225, 84,
- 62,198, 85,208, 63,118, 20,150, 62,196,110, 60, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,134,221,244, 62,175,164,121,
- 61, 93,108,160, 62,190,207, 17, 61, 55, 29,144, 62,194,183,207, 61,103,197, 96, 62,170,206, 15, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,117, 87, 84, 62,211,255,221, 63,116, 48,222, 62,209, 8,169, 63,115,225, 84,
+ 62,198, 85,208, 63,118, 20,150, 62,196,110, 60, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,134,221,244, 62,175,164,121,
+ 61, 93,108,160, 62,190,207, 17, 61, 55, 29,144, 62,194,183,207, 61,103,197, 96, 62,170,206, 15, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,114,102,144, 62,220, 23,198, 63,113,151,174, 62,214,229, 26, 63,116, 48,222, 62,209, 8,169, 63,117, 87, 84,
- 62,211,255,221, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61, 93,108,160, 62,190,207, 17, 61,135,155, 12, 62,201, 39,166,
- 61,120,163, 56, 62,208,252, 58, 61, 55, 29,144, 62,194,183,207, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,107,173, 94,
- 62,225,130,168, 63,107,239,228, 62,218, 59, 62, 63,113,151,174, 62,214,229, 26, 63,114,102,144, 62,220, 23,198, 13, 64,158,176,
+ 62,211,255,221, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61, 93,108,160, 62,190,207, 17, 61,135,155, 12, 62,201, 39,166,
+ 61,120,163, 56, 62,208,252, 58, 61, 55, 29,144, 62,194,183,207, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,107,173, 94,
+ 62,225,130,168, 63,107,239,228, 62,218, 59, 62, 63,113,151,174, 62,214,229, 26, 63,114,102,144, 62,220, 23,198, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 61,135,155, 12, 62,201, 39,166, 61,195, 47,128, 62,207, 11, 6, 61,196,131, 76, 62,216, 97,196,
- 61,120,163, 56, 62,208,252, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,107,173, 94, 62,225,130,168, 63,101,251,100,
- 62,227,198,238, 63,102,205, 71, 62,219, 94,132, 63,107,239,228, 62,218, 59, 62, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 61,120,163, 56, 62,208,252, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,107,173, 94, 62,225,130,168, 63,101,251,100,
+ 62,227,198,238, 63,102,205, 71, 62,219, 94,132, 63,107,239,228, 62,218, 59, 62, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,244,157,192, 62,209,137,157, 61,249,209, 68, 62,219,134, 70, 61,196,131, 76, 62,216, 97,196, 61,195, 47,128, 62,207, 11, 6,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 69, 19,224, 62,190, 68, 24, 63, 77,217,216, 62,157,228, 7, 63, 85, 35,236,
- 62,181,201,164, 63, 78, 92, 56, 62,188,114,177, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 32, 62, 80, 91,122, 62,174, 18, 72,
- 62,111,118,154, 62,152,108,120, 62,134, 78,250, 62,186,213,148, 62,104,163,162, 62,182,180,150, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 69, 19,224, 62,190, 68, 24, 63, 77,217,216, 62,157,228, 7, 63, 85, 35,236,
+ 62,181,201,164, 63, 78, 92, 56, 62,188,114,177, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 32, 62, 80, 91,122, 62,174, 18, 72,
+ 62,111,118,154, 62,152,108,120, 62,134, 78,250, 62,186,213,148, 62,104,163,162, 62,182,180,150, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 32, 63, 77,217,216, 62,157,228, 7, 63, 90, 5,151, 62,167, 61,138, 63, 92,180, 21, 62,173, 95,202, 63, 85, 35,236,
- 62,181,201,164, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 62, 54,216,144, 62,163, 76, 35, 62, 66,251,194, 62,158,102,163,
- 62,111,118,154, 62,152,108,120, 62, 80, 91,122, 62,174, 18, 72, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 63, 74, 64, 53,
- 62,224, 31,171, 63, 69, 19,224, 62,190, 68, 24, 63, 78, 92, 56, 62,188,114,177, 63, 81,106,217, 62,232,214, 14, 13, 64,158,176,
+ 62,181,201,164, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 62, 54,216,144, 62,163, 76, 35, 62, 66,251,194, 62,158,102,163,
+ 62,111,118,154, 62,152,108,120, 62, 80, 91,122, 62,174, 18, 72, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 63, 74, 64, 53,
+ 62,224, 31,171, 63, 69, 19,224, 62,190, 68, 24, 63, 78, 92, 56, 62,188,114,177, 63, 81,106,217, 62,232,214, 14, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62,104,163,162, 62,182,180,150, 62,134, 78,250, 62,186,213,148, 62,114,112,184, 62,220,169,248,
- 62, 84, 93, 88, 62,228,105, 50, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 93,154,106, 62,233, 26,226, 63, 94,229,196,
- 62,224,195,128, 63,101,251,100, 62,227,198,238, 63,102,178, 46, 62,232,184,100, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 84, 93, 88, 62,228,105, 50, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 93,154,106, 62,233, 26,226, 63, 94,229,196,
+ 62,224,195,128, 63,101,251,100, 62,227,198,238, 63,102,178, 46, 62,232,184,100, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,249,209, 68, 62,219,134, 70, 62, 28,187,108, 62,217, 86, 48, 62, 33, 1,128, 62,226,210, 70, 61,242,216,120, 62,225, 40,124,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 92,180, 21, 62,173, 95,202, 63, 97, 32, 68, 62,178, 12,192, 63, 94,215, 9,
- 62,186, 54, 4, 63, 85, 35,236, 62,181,201,164, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 41,122, 60, 62,175, 58, 16,
- 62, 36,185, 48, 62,166, 7, 16, 62, 54,216,144, 62,163, 76, 35, 62, 80, 91,122, 62,174, 18, 72, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 92,180, 21, 62,173, 95,202, 63, 97, 32, 68, 62,178, 12,192, 63, 94,215, 9,
+ 62,186, 54, 4, 63, 85, 35,236, 62,181,201,164, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 41,122, 60, 62,175, 58, 16,
+ 62, 36,185, 48, 62,166, 7, 16, 62, 54,216,144, 62,163, 76, 35, 62, 80, 91,122, 62,174, 18, 72, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 95, 78,230, 62,189,233, 4, 63, 86,188, 32, 62,190, 62, 44, 63, 85, 35,236, 62,181,201,164, 63, 94,215, 9,
- 62,186, 54, 4, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 80, 91,122, 62,174, 18, 72, 62, 71,118, 78, 62,182, 49, 27,
- 62, 37,225, 52, 62,179, 12, 40, 62, 41,122, 60, 62,175, 58, 16, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 92,166, 70,
- 62,197,166, 0, 63, 86,188, 32, 62,190, 62, 44, 63, 95, 78,230, 62,189,233, 4, 63, 95, 13,226, 62,194,152, 37, 13, 64,158,176,
+ 62,186, 54, 4, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 80, 91,122, 62,174, 18, 72, 62, 71,118, 78, 62,182, 49, 27,
+ 62, 37,225, 52, 62,179, 12, 40, 62, 41,122, 60, 62,175, 58, 16, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 92,166, 70,
+ 62,197,166, 0, 63, 86,188, 32, 62,190, 62, 44, 63, 95, 78,230, 62,189,233, 4, 63, 95, 13,226, 62,194,152, 37, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 37,225, 52, 62,179, 12, 40, 62, 71,118, 78, 62,182, 49, 27, 62, 45,143,142, 62,188, 37,237,
- 62, 36,230,106, 62,184, 27,222, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 95, 90,248, 62,207,122,100, 63, 90,249,108,
- 62,212,199, 58, 63, 86,188, 32, 62,190, 62, 44, 63, 92,166, 70, 62,197,166, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 36,230,106, 62,184, 27,222, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 95, 90,248, 62,207,122,100, 63, 90,249,108,
+ 62,212,199, 58, 63, 86,188, 32, 62,190, 62, 44, 63, 92,166, 70, 62,197,166, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 71,118, 78, 62,182, 49, 27, 62, 48, 56,110, 62,205, 43,230, 62, 30,250,174, 62,198, 12, 26, 62, 45,143,142, 62,188, 37,237,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 94,229,196, 62,224,195,128, 63, 90,249,108, 62,212,199, 58, 63, 95, 90,248,
- 62,207,122,100, 63, 98,104, 92, 62,215,136,197, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 30,250,174, 62,198, 12, 26,
- 62, 48, 56,110, 62,205, 43,230, 62, 28,187,108, 62,217, 86, 48, 62, 15, 59,212, 62,206, 50,224, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 94,229,196, 62,224,195,128, 63, 90,249,108, 62,212,199, 58, 63, 95, 90,248,
+ 62,207,122,100, 63, 98,104, 92, 62,215,136,197, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 30,250,174, 62,198, 12, 26,
+ 62, 48, 56,110, 62,205, 43,230, 62, 28,187,108, 62,217, 86, 48, 62, 15, 59,212, 62,206, 50,224, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,101,251,100, 62,227,198,238, 63, 94,229,196, 62,224,195,128, 63, 98,104, 92, 62,215,136,197, 63,102,205, 71,
- 62,219, 94,132, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 15, 59,212, 62,206, 50,224, 62, 28,187,108, 62,217, 86, 48,
- 61,249,209, 68, 62,219,134, 70, 61,244,157,192, 62,209,137,157, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 81,106,217,
- 62,232,214, 14, 63, 90,249,108, 62,212,199, 58, 63, 94,229,196, 62,224,195,128, 63, 93,154,106, 62,233, 26,226, 13, 64,158,176,
+ 62,219, 94,132, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 15, 59,212, 62,206, 50,224, 62, 28,187,108, 62,217, 86, 48,
+ 61,249,209, 68, 62,219,134, 70, 61,244,157,192, 62,209,137,157, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 81,106,217,
+ 62,232,214, 14, 63, 90,249,108, 62,212,199, 58, 63, 94,229,196, 62,224,195,128, 63, 93,154,106, 62,233, 26,226, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 28,187,108, 62,217, 86, 48, 62, 48, 56,110, 62,205, 43,230, 62, 84, 93, 88, 62,228,105, 50,
- 62, 33, 1,128, 62,226,210, 70, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 81,106,217, 62,232,214, 14, 63, 78, 92, 56,
- 62,188,114,177, 63, 86,188, 32, 62,190, 62, 44, 63, 90,249,108, 62,212,199, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 33, 1,128, 62,226,210, 70, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 81,106,217, 62,232,214, 14, 63, 78, 92, 56,
+ 62,188,114,177, 63, 86,188, 32, 62,190, 62, 44, 63, 90,249,108, 62,212,199, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 71,118, 78, 62,182, 49, 27, 62,104,163,162, 62,182,180,150, 62, 84, 93, 88, 62,228,105, 50, 62, 48, 56,110, 62,205, 43,230,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 78, 92, 56, 62,188,114,177, 63, 85, 35,236, 62,181,201,164, 63, 86,188, 32,
- 62,190, 62, 44, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 71,118, 78, 62,182, 49, 27,
- 62, 80, 91,122, 62,174, 18, 72, 62,104,163,162, 62,182,180,150, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 78, 92, 56, 62,188,114,177, 63, 85, 35,236, 62,181,201,164, 63, 86,188, 32,
+ 62,190, 62, 44, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 71,118, 78, 62,182, 49, 27,
+ 62, 80, 91,122, 62,174, 18, 72, 62,104,163,162, 62,182,180,150, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,102,205, 71, 62,219, 94,132, 63, 98,104, 92, 62,215,136,197, 63,100,109,182, 62,210,255,149, 63,104, 86, 54,
- 62,214,241,209, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 7,107,160, 62,200,103, 34, 62, 15, 59,212, 62,206, 50,224,
- 61,244,157,192, 62,209,137,157, 61,232, 2, 8, 62,203,214, 20, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 98,104, 92,
- 62,215,136,197, 63, 95, 90,248, 62,207,122,100, 63, 97,206,112, 62,204,202, 10, 63,100,109,182, 62,210,255,149, 13, 64,158,176,
+ 62,214,241,209, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 7,107,160, 62,200,103, 34, 62, 15, 59,212, 62,206, 50,224,
+ 61,244,157,192, 62,209,137,157, 61,232, 2, 8, 62,203,214, 20, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 98,104, 92,
+ 62,215,136,197, 63, 95, 90,248, 62,207,122,100, 63, 97,206,112, 62,204,202, 10, 63,100,109,182, 62,210,255,149, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 21, 68, 64, 62,194, 55,107, 62, 30,250,174, 62,198, 12, 26, 62, 15, 59,212, 62,206, 50,224,
- 62, 7,107,160, 62,200,103, 34, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 95, 90,248, 62,207,122,100, 63, 92,166, 70,
- 62,197,166, 0, 63, 94,241, 82, 62,198,103, 40, 63, 97,206,112, 62,204,202, 10, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 7,107,160, 62,200,103, 34, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 95, 90,248, 62,207,122,100, 63, 92,166, 70,
+ 62,197,166, 0, 63, 94,241, 82, 62,198,103, 40, 63, 97,206,112, 62,204,202, 10, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 35,225, 20, 62,188, 50, 39, 62, 45,143,142, 62,188, 37,237, 62, 30,250,174, 62,198, 12, 26, 62, 21, 68, 64, 62,194, 55,107,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 92,166, 70, 62,197,166, 0, 63, 95, 13,226, 62,194,152, 37, 63, 97, 1,118,
- 62,195,226, 47, 63, 94,241, 82, 62,198,103, 40, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 28, 43, 12, 62,184,177,186,
- 62, 36,230,106, 62,184, 27,222, 62, 45,143,142, 62,188, 37,237, 62, 35,225, 20, 62,188, 50, 39, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 92,166, 70, 62,197,166, 0, 63, 95, 13,226, 62,194,152, 37, 63, 97, 1,118,
+ 62,195,226, 47, 63, 94,241, 82, 62,198,103, 40, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 28, 43, 12, 62,184,177,186,
+ 62, 36,230,106, 62,184, 27,222, 62, 45,143,142, 62,188, 37,237, 62, 35,225, 20, 62,188, 50, 39, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 95, 13,226, 62,194,152, 37, 63, 95, 78,230, 62,189,233, 4, 63, 97,113, 51, 62,189,151, 92, 63, 97, 1,118,
- 62,195,226, 47, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 29, 67,104, 62,177,199, 58, 62, 37,225, 52, 62,179, 12, 40,
- 62, 36,230,106, 62,184, 27,222, 62, 28, 43, 12, 62,184,177,186, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 95, 78,230,
- 62,189,233, 4, 63, 94,215, 9, 62,186, 54, 4, 63, 96, 69, 96, 62,187,133,152, 63, 97,113, 51, 62,189,151, 92, 13, 64,158,176,
+ 62,195,226, 47, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 29, 67,104, 62,177,199, 58, 62, 37,225, 52, 62,179, 12, 40,
+ 62, 36,230,106, 62,184, 27,222, 62, 28, 43, 12, 62,184,177,186, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 95, 78,230,
+ 62,189,233, 4, 63, 94,215, 9, 62,186, 54, 4, 63, 96, 69, 96, 62,187,133,152, 63, 97,113, 51, 62,189,151, 92, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 35, 14,140, 62,176, 19, 33, 62, 41,122, 60, 62,175, 58, 16, 62, 37,225, 52, 62,179, 12, 40,
- 62, 29, 67,104, 62,177,199, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 94,215, 9, 62,186, 54, 4, 63, 97, 32, 68,
- 62,178, 12,192, 63, 98, 91,112, 62,182,128,149, 63, 96, 69, 96, 62,187,133,152, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 29, 67,104, 62,177,199, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 94,215, 9, 62,186, 54, 4, 63, 97, 32, 68,
+ 62,178, 12,192, 63, 98, 91,112, 62,182,128,149, 63, 96, 69, 96, 62,187,133,152, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 29,107,228, 62,169,230, 95, 62, 36,185, 48, 62,166, 7, 16, 62, 41,122, 60, 62,175, 58, 16, 62, 35, 14,140, 62,176, 19, 33,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,107,239,228, 62,218, 59, 62, 63,102,205, 71, 62,219, 94,132, 63,104, 86, 54,
- 62,214,241,209, 63,109, 27, 34, 62,214,254,155, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,232, 2, 8, 62,203,214, 20,
- 61,244,157,192, 62,209,137,157, 61,195, 47,128, 62,207, 11, 6, 61,184,174, 36, 62,202,130,216, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,107,239,228, 62,218, 59, 62, 63,102,205, 71, 62,219, 94,132, 63,104, 86, 54,
+ 62,214,241,209, 63,109, 27, 34, 62,214,254,155, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,232, 2, 8, 62,203,214, 20,
+ 61,244,157,192, 62,209,137,157, 61,195, 47,128, 62,207, 11, 6, 61,184,174, 36, 62,202,130,216, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,113,151,174, 62,214,229, 26, 63,107,239,228, 62,218, 59, 62, 63,109, 27, 34, 62,214,254,155, 63,113,134, 69,
- 62,212, 82,156, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,184,174, 36, 62,202,130,216, 61,195, 47,128, 62,207, 11, 6,
- 61,135,155, 12, 62,201, 39,166, 61,138,114, 60, 62,197, 61, 28, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,116, 48,222,
- 62,209, 8,169, 63,113,151,174, 62,214,229, 26, 63,113,134, 69, 62,212, 82,156, 63,114,143, 42, 62,207,168, 24, 13, 64,158,176,
+ 62,212, 82,156, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,184,174, 36, 62,202,130,216, 61,195, 47,128, 62,207, 11, 6,
+ 61,135,155, 12, 62,201, 39,166, 61,138,114, 60, 62,197, 61, 28, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,116, 48,222,
+ 62,209, 8,169, 63,113,151,174, 62,214,229, 26, 63,113,134, 69, 62,212, 82,156, 63,114,143, 42, 62,207,168, 24, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 61,138,114, 60, 62,197, 61, 28, 61,135,155, 12, 62,201, 39,166, 61, 93,108,160, 62,190,207, 17,
- 61,132, 85,184, 62,189,211, 22, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,115,225, 84, 62,198, 85,208, 63,116, 48,222,
- 62,209, 8,169, 63,114,143, 42, 62,207,168, 24, 63,114,125,203, 62,200,114, 96, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 61,132, 85,184, 62,189,211, 22, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,115,225, 84, 62,198, 85,208, 63,116, 48,222,
+ 62,209, 8,169, 63,114,143, 42, 62,207,168, 24, 63,114,125,203, 62,200,114, 96, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,132, 85,184, 62,189,211, 22, 61, 93,108,160, 62,190,207, 17, 61,134,221,244, 62,175,164,121, 61,145,152, 16, 62,179,214, 84,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,109,132,198, 62,186,157,182, 63,115,225, 84, 62,198, 85,208, 63,114,125,203,
- 62,200,114, 96, 63,109,192,177, 62,190,240,152, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,145,152, 16, 62,179,214, 84,
- 61,134,221,244, 62,175,164,121, 61,221, 91, 40, 62,167,194, 4, 61,208,226, 64, 62,172, 58,232, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,109,132,198, 62,186,157,182, 63,115,225, 84, 62,198, 85,208, 63,114,125,203,
+ 62,200,114, 96, 63,109,192,177, 62,190,240,152, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,145,152, 16, 62,179,214, 84,
+ 61,134,221,244, 62,175,164,121, 61,221, 91, 40, 62,167,194, 4, 61,208,226, 64, 62,172, 58,232, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 97, 32, 68, 62,178, 12,192, 63,109,132,198, 62,186,157,182, 63,109,192,177, 62,190,240,152, 63, 98, 91,112,
- 62,182,128,149, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,208,226, 64, 62,172, 58,232, 61,221, 91, 40, 62,167,194, 4,
- 62, 36,185, 48, 62,166, 7, 16, 62, 29,107,228, 62,169,230, 95, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 97, 1,118,
- 62,195,226, 47, 63, 97,113, 51, 62,189,151, 92, 63,102,139,215, 62,193,109, 15, 63,100, 47, 54, 62,198,115,186, 13, 64,158,176,
+ 62,182,128,149, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,208,226, 64, 62,172, 58,232, 61,221, 91, 40, 62,167,194, 4,
+ 62, 36,185, 48, 62,166, 7, 16, 62, 29,107,228, 62,169,230, 95, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 97, 1,118,
+ 62,195,226, 47, 63, 97,113, 51, 62,189,151, 92, 63,102,139,215, 62,193,109, 15, 63,100, 47, 54, 62,198,115,186, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 5,169, 92, 62,179,115,168, 62, 29, 67,104, 62,177,199, 58, 62, 28, 43, 12, 62,184,177,186,
- 62, 13, 97, 50, 62,186, 42, 50, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,100, 47, 54, 62,198,115,186, 63,102,139,215,
- 62,193,109, 15, 63,105,241,174, 62,200, 8,204, 63,103,233, 71, 62,204, 42,178, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 13, 97, 50, 62,186, 42, 50, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,100, 47, 54, 62,198,115,186, 63,102,139,215,
+ 62,193,109, 15, 63,105,241,174, 62,200, 8,204, 63,103,233, 71, 62,204, 42,178, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,229,171,228, 62,185, 42, 41, 62, 5,169, 92, 62,179,115,168, 62, 13, 97, 50, 62,186, 42, 50, 61,243,248, 92, 62,191, 22, 96,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,103,233, 71, 62,204, 42,178, 63,105,241,174, 62,200, 8,204, 63,108, 37, 51,
- 62,205, 3,249, 63,106,212, 56, 62,208,238, 96, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,202, 99,120, 62,190, 49,192,
- 61,229,171,228, 62,185, 42, 41, 61,243,248, 92, 62,191, 22, 96, 61,211,209,160, 62,195,159,108, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,103,233, 71, 62,204, 42,178, 63,105,241,174, 62,200, 8,204, 63,108, 37, 51,
+ 62,205, 3,249, 63,106,212, 56, 62,208,238, 96, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,202, 99,120, 62,190, 49,192,
+ 61,229,171,228, 62,185, 42, 41, 61,243,248, 92, 62,191, 22, 96, 61,211,209,160, 62,195,159,108, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,106,212, 56, 62,208,238, 96, 63,108, 37, 51, 62,205, 3,249, 63,110, 73, 56, 62,206,119,186, 63,109,191, 46,
- 62,210, 64, 92, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,179,234,244, 62,190,219,240, 61,202, 99,120, 62,190, 49,192,
- 61,211,209,160, 62,195,159,108, 61,181,129,196, 62,196, 14,204, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,109, 27, 34,
- 62,214,254,155, 63,104, 86, 54, 62,214,241,209, 63,106,212, 56, 62,208,238, 96, 63,109,191, 46, 62,210, 64, 92, 13, 64,158,176,
+ 62,210, 64, 92, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,179,234,244, 62,190,219,240, 61,202, 99,120, 62,190, 49,192,
+ 61,211,209,160, 62,195,159,108, 61,181,129,196, 62,196, 14,204, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,109, 27, 34,
+ 62,214,254,155, 63,104, 86, 54, 62,214,241,209, 63,106,212, 56, 62,208,238, 96, 63,109,191, 46, 62,210, 64, 92, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 61,211,209,160, 62,195,159,108, 61,232, 2, 8, 62,203,214, 20, 61,184,174, 36, 62,202,130,216,
- 61,181,129,196, 62,196, 14,204, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,100,109,182, 62,210,255,149, 63,103,233, 71,
- 62,204, 42,178, 63,106,212, 56, 62,208,238, 96, 63,104, 86, 54, 62,214,241,209, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 61,181,129,196, 62,196, 14,204, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,100,109,182, 62,210,255,149, 63,103,233, 71,
+ 62,204, 42,178, 63,106,212, 56, 62,208,238, 96, 63,104, 86, 54, 62,214,241,209, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,211,209,160, 62,195,159,108, 61,243,248, 92, 62,191, 22, 96, 62, 7,107,160, 62,200,103, 34, 61,232, 2, 8, 62,203,214, 20,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,100,109,182, 62,210,255,149, 63, 97,206,112, 62,204,202, 10, 63,100, 47, 54,
- 62,198,115,186, 63,103,233, 71, 62,204, 42,178, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 13, 97, 50, 62,186, 42, 50,
- 62, 21, 68, 64, 62,194, 55,107, 62, 7,107,160, 62,200,103, 34, 61,243,248, 92, 62,191, 22, 96, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,100,109,182, 62,210,255,149, 63, 97,206,112, 62,204,202, 10, 63,100, 47, 54,
+ 62,198,115,186, 63,103,233, 71, 62,204, 42,178, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 13, 97, 50, 62,186, 42, 50,
+ 62, 21, 68, 64, 62,194, 55,107, 62, 7,107,160, 62,200,103, 34, 61,243,248, 92, 62,191, 22, 96, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63, 97, 1,118, 62,195,226, 47, 63,100, 47, 54, 62,198,115,186, 63, 97,206,112, 62,204,202, 10, 63, 94,241, 82,
- 62,198,103, 40, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62, 21, 68, 64, 62,194, 55,107, 62, 13, 97, 50, 62,186, 42, 50,
- 62, 28, 43, 12, 62,184,177,186, 62, 35,225, 20, 62,188, 50, 39, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63, 96, 69, 96,
- 62,187,133,152, 63, 98, 91,112, 62,182,128,149, 63,102,139,215, 62,193,109, 15, 63, 97,113, 51, 62,189,151, 92, 13, 64,158,176,
+ 62,198,103, 40, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62, 21, 68, 64, 62,194, 55,107, 62, 13, 97, 50, 62,186, 42, 50,
+ 62, 28, 43, 12, 62,184,177,186, 62, 35,225, 20, 62,188, 50, 39, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63, 96, 69, 96,
+ 62,187,133,152, 63, 98, 91,112, 62,182,128,149, 63,102,139,215, 62,193,109, 15, 63, 97,113, 51, 62,189,151, 92, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 62, 5,169, 92, 62,179,115,168, 62, 29,107,228, 62,169,230, 95, 62, 35, 14,140, 62,176, 19, 33,
- 62, 29, 67,104, 62,177,199, 58, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,109,192,177, 62,190,240,152, 63,105,241,174,
- 62,200, 8,204, 63,102,139,215, 62,193,109, 15, 63, 98, 91,112, 62,182,128,149, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 62, 29, 67,104, 62,177,199, 58, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,109,192,177, 62,190,240,152, 63,105,241,174,
+ 62,200, 8,204, 63,102,139,215, 62,193,109, 15, 63, 98, 91,112, 62,182,128,149, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
62, 5,169, 92, 62,179,115,168, 61,229,171,228, 62,185, 42, 41, 61,208,226, 64, 62,172, 58,232, 62, 29,107,228, 62,169,230, 95,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,114,125,203, 62,200,114, 96, 63,108, 37, 51, 62,205, 3,249, 63,105,241,174,
- 62,200, 8,204, 63,109,192,177, 62,190,240,152, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,229,171,228, 62,185, 42, 41,
- 61,202, 99,120, 62,190, 49,192, 61,145,152, 16, 62,179,214, 84, 61,208,226, 64, 62,172, 58,232, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,114,125,203, 62,200,114, 96, 63,108, 37, 51, 62,205, 3,249, 63,105,241,174,
+ 62,200, 8,204, 63,109,192,177, 62,190,240,152, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,229,171,228, 62,185, 42, 41,
+ 61,202, 99,120, 62,190, 49,192, 61,145,152, 16, 62,179,214, 84, 61,208,226, 64, 62,172, 58,232, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,114,143, 42, 62,207,168, 24, 63,110, 73, 56, 62,206,119,186, 63,108, 37, 51, 62,205, 3,249, 63,114,125,203,
- 62,200,114, 96, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,202, 99,120, 62,190, 49,192, 61,179,234,244, 62,190,219,240,
- 61,132, 85,184, 62,189,211, 22, 61,145,152, 16, 62,179,214, 84, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,113,134, 69,
- 62,212, 82,156, 63,109,191, 46, 62,210, 64, 92, 63,110, 73, 56, 62,206,119,186, 63,114,143, 42, 62,207,168, 24, 13, 64,158,176,
+ 62,200,114, 96, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,202, 99,120, 62,190, 49,192, 61,179,234,244, 62,190,219,240,
+ 61,132, 85,184, 62,189,211, 22, 61,145,152, 16, 62,179,214, 84, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,113,134, 69,
+ 62,212, 82,156, 63,109,191, 46, 62,210, 64, 92, 63,110, 73, 56, 62,206,119,186, 63,114,143, 42, 62,207,168, 24, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 61,179,234,244, 62,190,219,240, 61,181,129,196, 62,196, 14,204, 61,138,114, 60, 62,197, 61, 28,
- 61,132, 85,184, 62,189,211, 22, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,109, 27, 34, 62,214,254,155, 63,109,191, 46,
- 62,210, 64, 92, 63,113,134, 69, 62,212, 82,156, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 61,132, 85,184, 62,189,211, 22, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,109, 27, 34, 62,214,254,155, 63,109,191, 46,
+ 62,210, 64, 92, 63,113,134, 69, 62,212, 82,156, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
61,138,114, 60, 62,197, 61, 28, 61,181,129,196, 62,196, 14,204, 61,184,174, 36, 62,202,130,216, 63,128, 0, 0, 63,128, 0, 0,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,110,190, 84, 62,172, 77,223, 63, 90, 5,151, 62,167, 61,138, 63, 96, 25, 22,
- 62,149,248,246, 63,122,176,162, 62,161,215,145, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 62, 54,234, 64, 62,140,219,146,
- 62, 66,251,194, 62,158,102,163, 61,246, 66, 8, 62,152,161, 28, 61,189,241,172, 62,132,107, 13, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,110,190, 84, 62,172, 77,223, 63, 90, 5,151, 62,167, 61,138, 63, 96, 25, 22,
+ 62,149,248,246, 63,122,176,162, 62,161,215,145, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 62, 54,234, 64, 62,140,219,146,
+ 62, 66,251,194, 62,158,102,163, 61,246, 66, 8, 62,152,161, 28, 61,189,241,172, 62,132,107, 13, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0, 0, 63,122, 12, 49, 62,197, 8,246, 63,110,190, 84, 62,172, 77,223, 63,122,176,162, 62,161,215,145, 63,126,255,188,
- 62,198,248,115, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 61,189,241,172, 62,132,107, 13, 61,246, 66, 8, 62,152,161, 28,
- 61, 16, 54,240, 62,167, 4,120, 58,163, 8, 0, 62,162, 69, 39, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 63,119,115,183,
- 62,215, 49,140, 63,122, 12, 49, 62,197, 8,246, 63,126,255,188, 62,198,248,115, 63,122, 6, 47, 62,216,157,248, 13, 64,158,176,
+ 62,198,248,115, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 61,189,241,172, 62,132,107, 13, 61,246, 66, 8, 62,152,161, 28,
+ 61, 16, 54,240, 62,167, 4,120, 58,163, 8, 0, 62,162, 69, 39, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 63,119,115,183,
+ 62,215, 49,140, 63,122, 12, 49, 62,197, 8,246, 63,126,255,188, 62,198,248,115, 63,122, 6, 47, 62,216,157,248, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0, 0, 58,163, 8, 0, 62,162, 69, 39, 61, 16, 54,240, 62,167, 4,120, 60,231,111,224, 62,198,142,100,
- 60, 14,248,224, 62,198,141, 70, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 63,116, 76, 41, 62,222,153,139, 63,119,115,183,
- 62,215, 49,140, 63,122, 6, 47, 62,216,157,248, 63,119, 98,134, 62,225, 37,204, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0,
+ 60, 14,248,224, 62,198,141, 70, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 63,116, 76, 41, 62,222,153,139, 63,119,115,183,
+ 62,215, 49,140, 63,122, 6, 47, 62,216,157,248, 63,119, 98,134, 62,225, 37,204, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0,
60, 14,248,224, 62,198,141, 70, 60,231,111,224, 62,198,142,100, 61, 73,183,128, 62,213,108, 84, 60,229,210, 80, 62,218,239, 32,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 63,109,178, 31, 62,228, 68,224, 63,116, 76, 41, 62,222,153,139, 63,119, 98,134,
- 62,225, 37,204, 63,115,185, 46, 62,234,157, 90, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,128, 60,229,210, 80, 62,218,239, 32,
- 61, 73,183,128, 62,213,108, 84, 61,177, 27, 28, 62,219,240, 42, 61,122,103, 56, 62,230, 10, 30, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 63,109,178, 31, 62,228, 68,224, 63,116, 76, 41, 62,222,153,139, 63,119, 98,134,
+ 62,225, 37,204, 63,115,185, 46, 62,234,157, 90, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,128, 60,229,210, 80, 62,218,239, 32,
+ 61, 73,183,128, 62,213,108, 84, 61,177, 27, 28, 62,219,240, 42, 61,122,103, 56, 62,230, 10, 30, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0,128, 63,102,178, 46, 62,232,184,100, 63,109,178, 31, 62,228, 68,224, 63,115,185, 46, 62,234,157, 90, 63,106,134,244,
- 62,246, 64,234, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 61,122,103, 56, 62,230, 10, 30, 61,177, 27, 28, 62,219,240, 42,
- 61,242,216,120, 62,225, 40,124, 61,209,222,212, 62,240,123,238, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16, 63, 5,188,235,
- 63, 98, 74,252, 62,248,111,200, 63,112,105,197, 62,231, 49, 0, 63,107,190,118, 62,255, 57,150, 63, 96, 14, 53, 13, 64,158,176,
+ 62,246, 64,234, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 61,122,103, 56, 62,230, 10, 30, 61,177, 27, 28, 62,219,240, 42,
+ 61,242,216,120, 62,225, 40,124, 61,209,222,212, 62,240,123,238, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16, 63, 5,188,235,
+ 63, 98, 74,252, 62,248,111,200, 63,112,105,197, 62,231, 49, 0, 63,107,190,118, 62,255, 57,150, 63, 96, 14, 53, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62, 95, 99, 80, 63, 94,194,149, 62, 62, 8, 58, 63, 89,154, 10, 62, 92, 24, 40, 63, 74, 82, 14,
- 62,112, 11,112, 63, 78,133,157, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 63, 5,188,235, 63, 98, 74,252, 63, 12,139,136,
- 63,101,233,138, 63, 6, 45,116, 63,113,245,112, 62,248,111,200, 63,112,105,197, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240,
+ 62,112, 11,112, 63, 78,133,157, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 63, 5,188,235, 63, 98, 74,252, 63, 12,139,136,
+ 63,101,233,138, 63, 6, 45,116, 63,113,245,112, 62,248,111,200, 63,112,105,197, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240,
62, 36,219, 68, 63, 81,186,249, 62, 65,254, 28, 63, 70, 55, 20, 62, 92, 24, 40, 63, 74, 82, 14, 62, 62, 8, 58, 63, 89,154, 10,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 63, 12,139,136, 63,101,233,138, 63, 12,130, 5, 63,108,216,149, 63, 6, 45,116,
- 63,113,245,112, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,112, 62, 36,219, 68, 63, 81,186,249,
- 62, 42, 1, 76, 63, 73,178, 39, 62, 65,254, 28, 63, 70, 55, 20, 63,128, 0, 0, 63,128, 0, 0, 13, 64,158,176, 1, 0, 0, 5,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 63, 12,139,136, 63,101,233,138, 63, 12,130, 5, 63,108,216,149, 63, 6, 45,116,
+ 63,113,245,112, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,112, 62, 36,219, 68, 63, 81,186,249,
+ 62, 42, 1, 76, 63, 73,178, 39, 62, 65,254, 28, 63, 70, 55, 20, 63,128, 0, 0, 63,128, 0, 0, 8,193,158,224, 1, 0, 0, 5,
0, 0, 0,112, 63,103, 89,120, 63, 2, 76,105, 63, 93,154,106, 62,233, 26,226, 63,102,178, 46, 62,232,184,100, 63,106,134,244,
- 62,246, 64,234, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 61,242,216,120, 62,225, 40,124, 62, 33, 1,128, 62,226,210, 70,
- 61,234,128,116, 63, 0, 39,200, 61,209,222,212, 62,240,123,238, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 0, 62,245, 44,226,
- 63, 96,140,129, 62,255, 57,150, 63, 96, 14, 53, 62,231, 49, 0, 63,107,190,118, 62,227,135, 42, 63,101, 2, 58, 13, 64,158,176,
+ 62,246, 64,234, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 61,242,216,120, 62,225, 40,124, 62, 33, 1,128, 62,226,210, 70,
+ 61,234,128,116, 63, 0, 39,200, 61,209,222,212, 62,240,123,238, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 0, 62,245, 44,226,
+ 63, 96,140,129, 62,255, 57,150, 63, 96, 14, 53, 62,231, 49, 0, 63,107,190,118, 62,227,135, 42, 63,101, 2, 58, 8,193,158,224,
1, 0, 0, 5, 0, 0, 0,240, 62, 95, 99, 80, 63, 94,194,149, 62,112, 11,112, 63, 78,133,157, 62,120, 84, 74, 63, 83, 32,104,
- 62,122,103,110, 63, 92,255,236, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0,240, 63, 77,217,216, 62,157,228, 7, 63, 90,225,160,
- 62,137,121,110, 63, 96, 25, 22, 62,149,248,246, 63, 90, 5,151, 62,167, 61,138, 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 16,
+ 62,122,103,110, 63, 92,255,236, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0,240, 63, 77,217,216, 62,157,228, 7, 63, 90,225,160,
+ 62,137,121,110, 63, 96, 25, 22, 62,149,248,246, 63, 90, 5,151, 62,167, 61,138, 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 16,
62, 54,234, 64, 62,140,219,146, 62, 74,125,166, 62,130, 30,252, 62,111,118,154, 62,152,108,120, 62, 66,251,194, 62,158,102,163,
- 13, 64,158,176, 1, 0, 0, 5, 0, 0, 0, 64, 68, 65, 84, 65, 0, 0, 31, 64, 7,160,168, 32, 0, 0, 0, 59, 0, 0, 7,208,
+ 8,193,158,224, 1, 0, 0, 5, 0, 0, 0, 64, 68, 65, 84, 65, 0, 0, 31, 64, 3,161,254, 32, 0, 0, 0, 59, 0, 0, 7,208,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
@@ -6733,183 +7553,462 @@ char datatoc_preview_blend[]= {
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,109,208, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,115, 96, 13, 65,104, 64, 0, 0, 0, 0,
+ 0, 0, 77, 69, 0, 0, 1, 24, 8,194,113,208, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,119,192, 8,194,107,224, 0, 0, 0, 0,
0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,111, 16,
- 7,160,234, 32, 7,160,242, 32, 0, 0, 0, 0, 7,160,200, 32, 7,160,218, 32, 0, 0, 0, 0, 7,161, 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,111, 64, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,112,160, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,114, 0, 0, 0, 0, 3,
- 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188, 0, 0, 1, 53, 0, 0, 0, 76, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,115, 16,
+ 3,162, 52, 32, 3,162, 58, 32, 0, 0, 0, 0, 3,162, 30, 32, 3,162, 42, 32, 0, 0, 0, 0, 3,162, 68, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,115, 64, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,116,192, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,118, 64, 0, 0, 0, 3,
+ 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0,198, 0, 0, 0, 51, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140, 63,127,255,214,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,111, 16, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,111, 64, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,160,200, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 17,160, 7,160,200, 32, 0, 0, 0, 58, 0, 0, 0,188, 63,230,102,133, 63,179, 51,208,
- 63,127,255,146,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,133, 63, 25,154,206, 63,127,255,146,165,127, 0, 0,
- 90,129, 2,255, 0, 0, 0, 0, 63,179, 51, 81, 63,179, 51,210, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63,128, 0, 28, 63,179, 51,212, 63,127,255,152, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,207, 63,179, 51,214,
- 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,152, 63,179, 51,216, 63,127,255,156, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,128, 0,158, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63,128, 0, 27, 63,128, 0,160, 63,127,255,150, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,204, 63,128, 0,162,
- 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,128, 0,163, 63,127,255,156, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63, 25,154,209, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63,128, 0, 27, 63, 25,154,213, 63,127,255,150, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,204, 63, 25,154,217,
- 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63, 25,154,221, 63,127,255,156, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 62, 76,209,160, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63,128, 0, 27, 62, 76,209,176, 63,127,255,150, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,204, 62, 76,209,188,
- 63,127,255,152, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 62, 76,209,204, 63,127,255,154, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8, 63,127,255,148, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0,
- 63, 25,153,204, 63,230,103, 10, 63,127,255,146, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63,128, 0, 27, 63,230,103, 10,
- 63,127,255,142, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12, 63,127,255,140, 0, 0,165,127,
- 90,129, 0,255, 0, 0, 0, 0,190, 76,205,152, 63,230,103, 12, 63,127,255,140, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0,
-190, 76,205,152, 62, 76,209,160, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152, 63, 25,154,209,
- 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152, 63,128, 0,158, 63,127,255,148, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0,190, 76,205,144, 63,179, 51,210, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63,230,102,131, 63,230,103, 7, 63,127,255,148, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63,230,102,131, 63,128, 0,160,
- 63,127,255,142,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28, 63,127,255,148,165,127, 0, 0,
- 90,129, 2,255, 0, 0, 0, 0,190, 76,205,146,190, 76,208, 72, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 62, 76,205,150,190, 76,208, 24, 63,127,255,156, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,207,190, 76,208, 40,
- 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 28,190, 76,208, 56, 63,127,255,152, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 81,190, 76,208, 72, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63,230,102,133,190, 76,208, 88, 63,127,255,146, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,230,102,133,190, 76,208, 88,
-191,128, 0, 4, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 81,190, 76,208, 72,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 28,190, 76,208, 56,191,128, 0, 1, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63, 25,153,207,190, 76,208, 40,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,150,190, 76,208, 24,
-191,127,255,254, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,146,190, 76,208, 72,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28,191, 25,153,155,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,
- 63,230,102,131,190, 76,201,136,191, 25,153,159,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28,
-190, 76,204,193,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,190, 76,201,136,190, 76,204,209,128, 1, 0, 0,
- 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28, 62, 76,204,219,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,
- 63,230,102,131,190, 76,201,136, 62, 76,204,203,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28,
- 63, 25,153,159,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,190, 76,201,136, 63, 25,153,155,128, 1, 0, 0,
- 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28,191,128, 0, 3,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0,
- 63,230,102,131, 63,128, 0,160,191,128, 0, 6,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,
-191,128, 0, 3, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207, 63, 25,153,151,128, 1, 0, 0,
- 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,128, 0,156, 63, 25,153,151,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,
- 63,230,102,131, 63,179, 51,212, 63, 25,153,155,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,
- 63, 25,153,159,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207, 62, 76,204,171,128, 1, 0, 0,
- 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,128, 0,160, 62, 76,204,187,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,
- 63,230,102,131, 63,179, 51,212, 62, 76,204,203,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,
- 62, 76,204,219,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207,190, 76,204,241,128, 1, 0, 0,
- 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,128, 0,160,190, 76,204,225,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,
- 63,230,102,131, 63,179, 51,212,190, 76,204,209,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,
-190, 76,204,193,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207,191, 25,153,167,128, 1, 0, 0,
- 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,128, 0,160,191, 25,153,163,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,
- 63,230,102,131, 63,179, 51,212,191, 25,153,159,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,
-191, 25,153,155,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,144, 63,179, 51,210,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0,190, 76,205,152, 63,128, 0,158,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
-190, 76,205,152, 63, 25,154,209,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152, 62, 76,209,160,
-191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152, 63,230,103, 12,191, 25,153,168, 0, 0,128, 1,
- 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,152, 63,230,103, 12,190, 76,204,244, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,
-190, 76,205,152, 63,230,103, 12, 62, 76,204,168, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,144, 63,230,103, 12,
- 63, 25,153,150, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,152, 63,230,103, 12,191,128, 0, 7, 0, 0,165,127,
- 90,129, 0,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12,191,128, 0, 7, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0,
- 63,128, 0, 27, 63,230,103, 10,191,128, 0, 6, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,
-191,128, 0, 4, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8,191,128, 0, 3, 0, 0,165,127,
- 90,129, 0,255, 0, 0, 0, 0, 63,179, 51, 81, 63,230,103, 12, 63, 25,153,150, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,
- 63,128, 0, 28, 63,230,103, 10, 63, 25,153,150, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63, 25,153,207, 63,230,103, 10,
- 63, 25,153,154, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,152, 63,230,103, 8, 63, 25,153,158, 0, 0,128, 1,
- 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12, 62, 76,204,168, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,
- 63,128, 0, 27, 63,230,103, 10, 62, 76,204,184, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,
- 62, 76,204,200, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8, 62, 76,204,216, 0, 0,128, 1,
- 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12,190, 76,204,244, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,
- 63,128, 0, 27, 63,230,103, 10,190, 76,204,228, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,
-190, 76,204,212, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8,190, 76,204,196, 0, 0,128, 1,
- 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12,191, 25,153,168, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,
- 63,128, 0, 27, 63,230,103, 10,191, 25,153,164, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,
-191, 25,153,160, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8,191, 25,153,156, 0, 0,128, 1,
- 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 62, 76,209,204,191,127,255,255, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63, 25,153,204, 62, 76,209,188,191,128, 0, 1, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 27, 62, 76,209,176,
-191,128, 0, 2, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 62, 76,209,160,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63, 25,154,221,191,127,255,254, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63, 25,153,204, 63, 25,154,217,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 27, 63, 25,154,213,
-191,128, 0, 2, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63, 25,154,209,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,128, 0,163,191,127,255,254, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63, 25,153,204, 63,128, 0,162,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 27, 63,128, 0,160,
-191,128, 0, 2, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,128, 0,158,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 62, 76,205,152, 63,179, 51,216,191,127,255,254, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
- 63, 25,153,207, 63,179, 51,214,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 28, 63,179, 51,212,
-191,128, 0, 1, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 81, 63,179, 51,210,191,128, 0, 3, 0, 0, 0, 0,
-127,255, 2,255, 0, 0, 0, 0, 63,230,102,133, 63, 25,154,206,191,128, 0, 4,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0,
- 63,230,102,133, 63,179, 51,208,191,128, 0, 4,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0,190, 76,205,128, 62, 76,201,116,
-191,128, 0, 5,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,190, 76,205,136, 63,127,255, 48,191,128, 0, 5,127,255, 0, 0,
- 0, 0, 16,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,191, 25,153,156,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,
-190, 76,205,112, 62, 76,201, 84,191, 25,153,160,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,120, 63, 25,152,190,
-191, 25,153,164,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 46,191, 25,153,168,127,255, 0, 0,
- 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,190, 76,204,195,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,
-190, 76,205,112, 62, 76,201, 84,190, 76,204,211,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,120, 63, 25,152,190,
-190, 76,204,227,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 46,190, 76,204,243,127,255, 0, 0,
- 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64, 62, 76,204,221,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,
-190, 76,205,112, 62, 76,201, 84, 62, 76,204,205,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,120, 63, 25,152,190,
- 62, 76,204,189,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 46, 62, 76,204,173,127,255, 0, 0,
- 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64, 63, 25,153,160,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,
-190, 76,205,112, 62, 76,201, 84, 63, 25,153,156,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,120, 63, 25,152,198,
- 63, 25,153,152,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 46, 63, 25,153,152,127,255, 0, 0,
- 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,191,128, 0, 4,231, 94,231, 94,132,215, 16,255, 0, 0, 0, 0,
-190, 76,205,120, 63, 25,152,190,191,128, 0, 7,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,190, 76,205, 96, 63,179, 50,251,
-191,128, 0, 4,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,190, 76,205,128, 63,230,102, 48, 63, 25,153,156,127,255, 0, 0,
- 0, 0, 18,255, 0, 0, 0, 0,190, 76,205, 96, 63,179, 50,251, 63, 25,153,160,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,
-190, 76,205,128, 63,230,102, 48, 62, 76,204,205,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205, 96, 63,179, 50,251,
- 62, 76,204,221,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,128, 63,230,102, 48,190, 76,204,211,127,255, 0, 0,
- 0, 0, 18,255, 0, 0, 0, 0,190, 76,205, 96, 63,179, 50,251,190, 76,204,195,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,
-190, 76,205,128, 63,230,102, 48,191, 25,153,160,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205, 96, 63,179, 50,251,
-191, 25,153,156,127,255, 0, 0, 0, 0, 18,255, 0, 0, 0, 0,190, 76,205,144, 63,230,103, 10,191,128, 0, 5,243,161,111, 93,
-194, 34, 16,255, 0, 0, 0, 0,190, 76,205,144, 63,230,103, 10, 63,127,255,148,243,161,111, 93, 61,222, 16,255, 0, 0, 0, 0,
-190, 76,205, 96, 63,179, 50,251, 63,127,255,150,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,190, 76,205,120, 63, 25,152,190,
- 63,127,255,144,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64, 63,127,255,150,231, 94,231, 94,
-123, 41, 16,255, 0, 0, 0, 0,190, 76,205,136, 63,127,255, 48, 63,127,255,148,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0,
-190, 76,205,128, 62, 76,201,116, 63,127,255,148,127,255, 0, 0, 0, 0, 16,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,
-191, 25,153,157, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,190, 76,208, 80,191, 25,153,161, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80,191, 25,153,165, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 62, 76,204, 44,190, 76,208,104,191, 25,153,169, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,
-190, 76,204,198, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,190, 76,208, 80,190, 76,204,214, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80,190, 76,204,230, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 62, 76,204, 44,190, 76,208,104,190, 76,204,246, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,
- 62, 76,204,218, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,190, 76,208, 80, 62, 76,204,202, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80, 62, 76,204,186, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 62, 76,204, 44,190, 76,208,104, 62, 76,204,170, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 34,190, 76,208, 56,
- 63, 25,153,159, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,220,190, 76,208, 80, 63, 25,153,155, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,114,190, 76,208, 80, 63, 25,153,151, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 62, 76,204, 36,190, 76,208,104, 63, 25,153,151, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,
-191,128, 0, 4, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,190, 76,208, 80,191,128, 0, 5, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80,191,128, 0, 7, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 62, 76,204, 44,190, 76,208,104,191,128, 0, 8, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,230,102,136,190, 76,208, 88,
-191,128, 0, 8, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,230,102,135,190, 76,208, 88, 63, 25,153,151, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63,230,102,136,190, 76,208, 88, 62, 76,204,170, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 63,230,102,136,190, 76,208, 88,190, 76,204,246, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,230,102,136,190, 76,208, 88,
-191, 25,153,169, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,191, 25,153,156, 0, 0,127,255,
- 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,190, 76,204,195, 0, 0,127,255, 0, 0, 1,255, 0, 0, 0, 0,
-190, 76,205,112,190, 76,208, 64, 62, 76,204,221, 0, 0,127,255, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,
- 63, 25,153,160, 0, 0,127,255, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,191,128, 0, 4, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64, 63,127,255,150, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 63,230,102,136,190, 76,208, 88, 63,127,255,142, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 62, 76,204, 44,190, 76,208,104,
- 63,127,255,142, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80, 63,127,255,144, 0, 0,127,255,
- 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,190, 76,208, 80, 63,127,255,148, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,
- 63,179, 51, 36,190, 76,208, 56, 63,127,255,150, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44,
- 13, 65,112,160, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 7,160,218, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 14,124,
- 7,160,218, 32, 0, 0, 0, 55, 0, 0, 1, 53, 0, 0, 0, 21, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 83,
- 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 22,
- 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 54, 0, 0, 0, 34,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 48,
- 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,115, 16, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,115, 64, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 30, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,224, 3,162, 30, 32, 0, 0, 0, 58, 0, 0, 0,116,
+ 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,
+ 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,
+ 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,184,138,163,172, 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+191,215, 33, 37, 64,215, 31,175, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,
+ 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+184,140,212,127, 64,161, 87,242, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,
+ 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,
+ 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244, 63,255,192, 1,
+ 90,129, 0,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,
+192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,
+ 64,190, 35,238, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 64,190, 35,238, 63,255,192, 1,
+ 90,129, 0,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+192, 87, 32,102, 63,215, 33, 14, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,
+ 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,
+ 64, 87, 29,217, 65, 60, 59,112, 64,190, 35,239,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,
+ 64,190, 35,244,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,
+ 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146, 64,190, 35,242, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 65, 6,115,159, 64,215, 30,146,192,190, 36, 74, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,100, 43,135,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+ 64,215, 30,150, 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,
+191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 63,152, 29, 14,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+ 64,215, 30,150, 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,
+ 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,190, 36, 72,192, 1,192, 1,
+ 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,
+184,136, 91,213, 65,114, 3, 43,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,
+ 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225, 65, 60, 59,110, 64,100, 43,129,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+184,136, 91,213, 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,
+ 63,152, 28,234,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 63,152, 28,246,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+184,136, 91,213, 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,
+191,152, 29, 30,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,191,152, 29, 18,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+184,136, 91,213, 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,
+192,100, 43,153,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,100, 43,147,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+184,136, 91,213, 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,192,190, 36, 72, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+191,215, 33,222, 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,
+192,100, 43,154, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,191,152, 29, 32, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+193, 6,115,182, 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,
+192,190, 36, 78, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78, 63,255,192, 1,
+ 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147,192,190, 36, 74, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,
+192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5, 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,191, 65, 33, 87,148, 64,100, 43,133, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121, 65, 6,115,181,
+ 64,100, 43,139, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,
+ 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147,191,152, 29, 9, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,
+191,152, 28,253, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147,192,100, 43,142, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,
+192,100, 43,136, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,184,140,212,127, 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 63,215, 28,201, 64,215, 31,172,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+184,138,163,172, 65, 6,115,181,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,192, 1,192, 1,
+ 90,129, 2,255, 0, 0, 0, 0, 63,215, 28,223, 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,116,192, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 42, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 72, 3,162, 42, 32, 0, 0, 0, 55, 0, 0, 0,198, 0, 0, 0, 21,
+ 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 34,
+ 0, 0, 0, 18, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 53,
+ 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 27,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4,
+ 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 13,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 11,
+ 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34,
+ 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17,
+ 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34,
+ 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34,
+ 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 24,
+ 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 34,
+ 0, 0, 0, 1, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 29,
+ 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 35, 0, 0, 0, 34,
+ 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 33,
+ 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 40,
+ 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 39, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0,100, 0, 0, 0, 34,
+ 0, 0, 0, 37, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 41, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 50,
+ 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 40,
+ 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 34,
+ 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 86,
+ 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 50,
+ 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,115, 0, 0, 0, 34,
+ 0, 0, 0, 52, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,114,
+ 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 42,
+ 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 34,
+ 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47,
+ 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 55,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 34,
+ 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59,
+ 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 57,
+ 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 34,
+ 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 63,
+ 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 57,
+ 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34,
+ 0, 0, 0, 63, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 66,
+ 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 52,
+ 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 53, 0, 0, 0, 34,
+ 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 65,
+ 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 71,
+ 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 97, 0, 0, 0, 34,
+ 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 0, 85,
+ 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 34, 0, 0, 0, 73,
+ 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 77, 0, 0, 0, 34,
+ 0, 0, 0, 81, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,112,
+ 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84,
+ 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 34,
+ 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 88,
+ 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 86,
+ 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 93, 0, 0, 0, 34,
+ 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 92,
+ 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 86,
+ 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34,
+ 0, 0, 0, 92, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 95,
+ 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81,
+ 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 95, 0, 0, 0, 34,
+ 0, 0, 0, 78, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101,
+ 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99,
+ 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34,
+ 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105,
+ 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103,
+ 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34,
+ 0, 0, 0,109, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,112,
+ 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,106,
+ 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 34,
+ 0, 0, 0,112, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,110, 0, 0, 0,111,
+ 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,118, 64, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 52, 32, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,
+120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 58, 32,
+ 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,162, 68, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3,252, 3,162, 52, 32, 0, 0, 0, 54, 0, 0, 0, 51,
+ 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 4,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8,
+ 0, 0, 0, 12, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 15,
+ 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 29, 0, 0, 0, 14,
+ 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 44,
+ 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 44, 0, 0, 0, 0,
+ 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 53,
+ 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55,
+ 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 57,
+ 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64,
+ 0, 0, 0, 68, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0,
+ 0, 0, 0,115, 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 76,
+ 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 27,
+ 0, 0, 0, 21, 0, 0, 0, 82, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 88,
+ 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 75,
+ 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 91, 0, 0, 0, 0,
+ 0, 0, 0, 60, 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 97,
+ 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 97,
+ 0, 0, 0, 73, 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 80, 0, 0, 0, 79,
+ 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36,
+ 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 39, 0, 0, 0, 38, 0, 0, 0, 0,
+ 0, 0, 0, 98, 0, 0, 0, 72, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100,
+ 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 51,
+ 0, 0, 0,109, 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104,
+ 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0,112,
+ 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,110, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0,
+ 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0,111,
+ 0, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 77, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 8,196, 3,162, 58, 32, 0, 0, 0, 65, 0, 0, 0, 51, 63, 27,168,250, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96,
+ 62,203,162, 84, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21,
+ 59, 93,211, 96, 63, 81,128,146, 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96,
+ 63,158,151,225, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,149, 59, 93,211, 96, 63, 27,168,251,
+ 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,158,151,227, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,246, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 62,203,162, 85,
+ 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 24, 59, 93,211, 96,
+ 63, 81,128,142, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63,185,131,174, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,185,131,176,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96,
+ 63, 27,168,247, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226,
+ 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96,
+ 63, 27,168,248, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63, 81,128,144,
+ 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,158,151,226, 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44,
+ 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210,
+ 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99,
+ 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76,
+ 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99,
+ 63, 41, 47, 72, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111,
+ 63, 76,225,174, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188,
+ 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52,
+ 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111,
+ 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44,
+ 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111, 63, 76,225,172, 63,117, 84,102,
+ 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96,
+ 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 56, 63, 3, 28,220,189,188,105, 96, 63, 41, 47,120, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,200, 63, 79, 65,244, 61,104, 84,200, 63, 79, 65,242,
+ 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,160,188,171, 62,181, 84,122,
+ 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 61,104, 84,200, 63, 79, 65,242,189,188,105, 96, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26,
+ 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,
+190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26,
+ 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113,
+ 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160,
+ 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102,
+ 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64,
+ 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 63, 0,188,188,
+ 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131,180, 62,186, 19,116,
+ 63,159,140,244, 63, 3, 28, 50, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 76,225,174, 62,186, 21, 0, 63, 38,207, 51, 62, 91,224, 24, 63, 76,226,112, 61,135, 38, 64, 63,114,244,240,
+ 62, 91,221, 4, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185, 61,135, 44, 96, 62,181, 84, 61,189,169,104,176,
+ 63, 0,189, 93,190,109, 1, 80, 63, 38,207,248,189,169,109,144, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174,
+ 63, 41, 47,116, 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174, 62,186, 21, 0, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185, 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185, 61,135, 44, 96,
+ 63, 38,207, 51, 62, 91,224, 24, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52,
+ 63, 79, 65,236, 63, 76,225,174, 63, 41, 47,116, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 0,188,188, 63, 41, 47,120, 62,181, 84,122, 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 52, 63, 3, 28,248,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 14, 62,186, 21, 0, 61,104, 82,144, 62, 91,223,128, 62, 82, 94,138,
+ 61,135, 43, 48, 62,181, 84,122, 62, 91,224, 32, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102,
+ 62,181, 84,127, 63, 79, 65,242, 63, 0,188,188, 63, 41, 47,120, 63, 38,207, 52, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62, 82, 95, 26, 63, 41, 47,120, 61,104, 84,160, 63, 3, 29, 0, 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122,
+ 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 63, 38,207, 56, 63,141,179,111,
+ 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26,
+ 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63, 41, 47,120, 62,181, 84,127, 63, 79, 65,242, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,189,188,106,128, 62,186, 20,176,
+ 61,104, 84,160, 63, 3, 29, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 48, 3,162, 68, 32,
+ 0, 0, 0, 59, 0, 0, 0,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24,
+ 8,194,119,192, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,125,176, 8,194,113,208, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108,
+ 97,110,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,121, 0, 3,162, 94, 32, 3,162, 98, 32,
+ 0, 0, 0, 0, 3,162, 72, 32, 3,162, 84, 32, 0, 0, 0, 0, 3,162,108, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,121, 48, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,122,176, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,124, 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0,192, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140, 63,127,255,214, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,121, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,121, 48, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 72, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,176, 3,162, 72, 32, 0, 0, 0, 58, 0, 0, 0,114, 63,215, 28,223, 65, 87, 31, 77,
+192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,192, 1,192, 1,
+ 90,129, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182,
+192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+184,138,163,172, 65, 6,115,181,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175,
+192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 63,215, 28,201, 64,215, 31,172,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127, 64,161, 87,242,
+192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107,
+192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,100, 43,136, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147,192,100, 43,142, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,
+192,100, 43,148, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,191,152, 28,253, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147,191,152, 29, 9, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,
+191,152, 29, 20, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,
+ 63,152, 28,244, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121, 65, 6,115,181, 64,100, 43,139, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+192,161, 87,191, 65, 33, 87,148, 64,100, 43,133, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5, 65, 60, 59,114,
+ 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,
+192,161, 87,192, 65, 33, 87,147,192,190, 36, 74, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,
+192,190, 36, 77, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78, 63,255,192, 1,
+ 90,129, 0,255, 0, 0, 0, 0,193, 6,115,182, 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+193, 6,115,183, 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,
+191,152, 29, 32, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,100, 43,154, 90,129,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,192,190, 36, 72, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,
+ 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,
+192,100, 43,147,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,192,100, 43,153,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,
+ 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,
+191,152, 29, 18,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,191,152, 29, 30,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,
+ 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,
+ 63,152, 28,246,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 63,152, 28,234,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,
+ 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225, 65, 60, 59,110,
+ 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 64,100, 43,129,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,190, 36, 72,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+ 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,
+192,190, 36, 72,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 64,100, 43,135,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+ 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,
+ 63,152, 29, 14,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,191,152, 29, 6,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+ 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,
+192,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217,
+192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146,192,190, 36, 74,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146, 64,190, 35,242,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,
+ 64,215, 31,127, 64,161, 86,217, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,
+ 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 64,215, 30,150, 65, 6,115,151, 64,190, 35,244,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,
+ 64,190, 35,239,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244,165,127,165,127,
+ 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+192,161, 87,240, 64, 87, 32, 2, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,
+ 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 64,190, 35,238, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,
+192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,
+ 64,190, 35,242, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244, 63,255,192, 1,
+ 90,129, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+ 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240,
+ 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+184,140,212,127, 64,161, 87,242, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172,
+ 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+191,215, 33, 37, 64,215, 31,175, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172, 65, 6,115,181,
+ 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,
+192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147,
+ 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244, 0, 0, 0, 0,
+127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,
+ 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 60,152, 10,191,215, 33, 16,
+ 64,190, 35,245, 0, 0,221, 42,123, 41, 2,255, 0, 0, 0, 0, 56, 60,152, 10,191,215, 33, 16,192,190, 36, 74, 0, 0,221, 42,
+132,215, 2,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,122,176, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 84, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 0, 3,162, 84, 32, 0, 0, 0, 55,
+ 0, 0, 0,192, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2,
0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 34,
0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8,
0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 2,
@@ -6918,259 +8017,129 @@ char datatoc_preview_blend[]= {
0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 1,
0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 34,
0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 15,
- 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 19,
- 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 34,
- 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26,
- 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 17,
- 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 34,
- 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 28,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 21,
- 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 28, 0, 0, 0, 34,
- 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33,
- 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 14,
- 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 34,
- 0, 0, 0, 17, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 39, 0, 0, 0, 99,
- 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 37, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 41,
- 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34,
- 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,109,
- 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 64,
- 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 82, 0, 0, 0, 34,
- 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,114,
- 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51,
- 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 50, 0, 0, 0, 34,
- 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 44,
- 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 47,
- 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 34,
- 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55,
- 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 59,
- 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34,
- 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57,
- 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 59,
- 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 62, 0, 0, 0, 34,
- 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 68,
- 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 63, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 66,
- 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34,
- 0, 0, 0, 61, 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 66,
- 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 44,
- 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 34,
- 0, 0, 0, 70, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 0, 98,
- 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 75,
- 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 34,
- 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 75,
- 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 80,
- 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,113, 0, 0, 0, 34,
- 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 84,
- 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 88,
- 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 34,
- 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 86,
- 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 88,
- 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 91, 0, 0, 0, 34,
- 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0, 97,
- 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95,
- 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34,
- 0, 0, 0, 90, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96,
- 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0,101,
- 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34,
- 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99,
- 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0,105,
- 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34,
- 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103,
- 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,108,
- 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34,
- 0, 0, 0,107, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,110,
- 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,111,
- 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,121, 0, 0, 0,144, 0, 0, 0, 50,
- 0, 0, 0,125, 0, 0, 0,142, 0, 0, 0, 50, 0, 0, 0,129, 0, 0, 0,140, 0, 0, 0, 50, 0, 0, 0,133, 0, 0, 0,138,
- 0, 0, 0, 50, 0, 0, 0,120, 0, 0, 0,135, 0, 0, 0, 50, 0, 0, 0,118, 0, 0, 0,134, 0, 0, 0,178, 0, 0, 0,121,
- 0, 0, 0,125, 0, 0, 0, 50, 0, 0, 0,120, 0, 0, 0,121, 0, 0, 0, 50, 0, 0, 0,120, 0, 0, 0,124, 0, 0, 0, 50,
- 0, 0, 0,120, 0, 0, 0,119, 0, 0, 0, 50, 0, 0, 0,119, 0, 0, 0,123, 0, 0, 0, 50, 0, 0, 0,118, 0, 0, 0,119,
- 0, 0, 0, 50, 0, 0, 0,118, 0, 0, 0,122, 0, 0, 0, 50, 0, 0, 0,125, 0, 0, 0,129, 0, 0, 0, 50, 0, 0, 0,124,
- 0, 0, 0,125, 0, 0, 0, 50, 0, 0, 0,124, 0, 0, 0,128, 0, 0, 0, 50, 0, 0, 0,123, 0, 0, 0,124, 0, 0, 0, 50,
- 0, 0, 0,123, 0, 0, 0,127, 0, 0, 0, 50, 0, 0, 0,122, 0, 0, 0,123, 0, 0, 0, 50, 0, 0, 0,122, 0, 0, 0,126,
- 0, 0, 0,178, 0, 0, 0,129, 0, 0, 0,133, 0, 0, 0, 50, 0, 0, 0,128, 0, 0, 0,129, 0, 0, 0, 50, 0, 0, 0,128,
- 0, 0, 0,132, 0, 0, 0, 50, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0, 50, 0, 0, 0,127, 0, 0, 0,131, 0, 0, 0, 50,
- 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0, 50, 0, 0, 0,126, 0, 0, 0,130, 0, 0, 0, 50, 0, 0, 0,132, 0, 0, 0,133,
- 0, 0, 0, 50, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0, 50, 0, 0, 0,130, 0, 0, 0,131, 0, 0, 0, 50, 0, 0, 0,137,
- 0, 0, 0,138, 0, 0, 0, 50, 0, 0, 0,138, 0, 0, 0,140, 0, 0, 0, 50, 0, 0, 0,139, 0, 0, 0,140, 0, 0, 0, 50,
- 0, 0, 0,137, 0, 0, 0,139, 0, 0, 0, 50, 0, 0, 0,140, 0, 0, 0,142, 0, 0, 0, 50, 0, 0, 0,141, 0, 0, 0,142,
- 0, 0, 0, 50, 0, 0, 0,142, 0, 0, 0,144, 0, 0, 0, 50, 0, 0, 0,143, 0, 0, 0,144, 0, 0, 0, 50, 0, 0, 0,141,
- 0, 0, 0,143, 0, 0, 0, 50, 0, 0, 0,136, 0, 0, 0,144, 0, 0, 0, 50, 0, 0, 0,117, 0, 0, 0,135, 0, 0, 0,178,
- 0, 0, 0,116, 0, 0, 0,135, 0, 0, 0, 50, 0, 0, 0,116, 0, 0, 0,134, 0, 0, 0,178, 0, 0, 0,119, 0, 0, 0,116,
- 0, 0, 0, 50, 0, 0, 0,117, 0, 0, 0,121, 0, 0, 0, 50, 0, 0, 0,117, 0, 0, 0,136, 0, 0, 0, 50, 0, 0, 0,136,
- 0, 0, 0,145, 0, 0, 0,178, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,178, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0, 50,
- 0, 0, 0,149, 0, 0, 0,151, 0, 0, 0,178, 0, 0, 0,148, 0, 0, 0,151, 0, 0, 0, 50, 0, 0, 0,148, 0, 0, 0,150,
- 0, 0, 0,178, 0, 0, 0,138, 0, 0, 0,147, 0, 0, 0, 50, 0, 0, 0,130, 0, 0, 0,149, 0, 0, 0,178, 0, 0, 0,131,
- 0, 0, 0,151, 0, 0, 0, 50, 0, 0, 0,132, 0, 0, 0,148, 0, 0, 0, 50, 0, 0, 0,133, 0, 0, 0,150, 0, 0, 0, 50,
- 0, 0, 0,155, 0, 0, 0,171, 0, 0, 0, 35, 0, 0, 0,154, 0, 0, 0,170, 0, 0, 0, 35, 0, 0, 0,153, 0, 0, 0,169,
- 0, 0, 0, 35, 0, 0, 0,152, 0, 0, 0,168, 0, 0, 0, 35, 0, 0, 0,155, 0, 0, 0,159, 0, 0, 0, 35, 0, 0, 0,154,
- 0, 0, 0,155, 0, 0, 0, 35, 0, 0, 0,154, 0, 0, 0,158, 0, 0, 0, 35, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0, 35,
- 0, 0, 0,153, 0, 0, 0,157, 0, 0, 0, 35, 0, 0, 0,152, 0, 0, 0,153, 0, 0, 0, 35, 0, 0, 0,152, 0, 0, 0,156,
- 0, 0, 0, 35, 0, 0, 0,159, 0, 0, 0,163, 0, 0, 0, 35, 0, 0, 0,158, 0, 0, 0,159, 0, 0, 0, 35, 0, 0, 0,158,
- 0, 0, 0,162, 0, 0, 0, 35, 0, 0, 0,157, 0, 0, 0,158, 0, 0, 0, 35, 0, 0, 0,157, 0, 0, 0,161, 0, 0, 0, 35,
- 0, 0, 0,156, 0, 0, 0,157, 0, 0, 0, 35, 0, 0, 0,156, 0, 0, 0,160, 0, 0, 0, 35, 0, 0, 0,163, 0, 0, 0,167,
- 0, 0, 0, 35, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0, 35, 0, 0, 0,162, 0, 0, 0,166, 0, 0, 0, 35, 0, 0, 0,161,
- 0, 0, 0,162, 0, 0, 0, 35, 0, 0, 0,161, 0, 0, 0,165, 0, 0, 0, 35, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0, 35,
- 0, 0, 0,160, 0, 0, 0,164, 0, 0, 0, 35, 0, 0, 0,166, 0, 0, 0,167, 0, 0, 0, 35, 0, 0, 0,165, 0, 0, 0,166,
- 0, 0, 0, 35, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0, 35, 0, 0, 0,169, 0, 0, 0,170, 0, 0, 0, 35, 0, 0, 0,174,
- 0, 0, 0,175, 0, 0, 0, 35, 0, 0, 0,172, 0, 0, 0,176, 0, 0, 0, 35, 0, 0, 0,168, 0, 0, 0,172, 0, 0, 0, 35,
- 0, 0, 0,164, 0, 0, 0,173, 0, 0, 0, 35, 0, 0, 0,160, 0, 0, 0,174, 0, 0, 0, 35, 0, 0, 0,156, 0, 0, 0,175,
- 0, 0, 0, 35, 0, 0, 0,152, 0, 0, 0,176, 0, 0, 0, 35, 0, 0, 0,177, 0, 0, 0,181, 0, 0, 0, 35, 0, 0, 0,177,
- 0, 0, 0,178, 0, 0, 0,163, 0, 0, 0,178, 0, 0, 0,179, 0, 0, 0, 35, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,163,
- 0, 0, 0,171, 0, 0, 0,181, 0, 0, 0, 35, 0, 0, 0,167, 0, 0, 0,180, 0, 0, 0, 35, 0, 0, 0,163, 0, 0, 0,179,
- 0, 0, 0, 35, 0, 0, 0,159, 0, 0, 0,178, 0, 0, 0, 35, 0, 0, 0,155, 0, 0, 0,177, 0, 0, 0, 35, 0, 0, 0,182,
- 0, 0, 0,184, 0, 0, 0, 35, 0, 0, 0,183, 0, 0, 0,187, 0, 0, 0, 35, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0, 35,
- 0, 0, 0,180, 0, 0, 0,182, 0, 0, 0, 35, 0, 0, 0,173, 0, 0, 0,183, 0, 0, 0, 35, 0, 0, 0,164, 0, 0, 0,187,
- 0, 0, 0, 35, 0, 0, 0,165, 0, 0, 0,186, 0, 0, 0, 35, 0, 0, 0,166, 0, 0, 0,185, 0, 0, 0, 35, 0, 0, 0,167,
- 0, 0, 0,184, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,114, 0, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,160,234, 32, 0, 0, 0, 5, 0, 0, 0, 20,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,160,242, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 5,240, 7,160,234, 32, 0, 0, 0, 54, 0, 0, 0, 76, 0, 0, 0, 18,
- 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,
- 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 12,
- 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12,
- 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 14,
- 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 16,
- 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 29, 0, 0, 0, 14, 0, 0, 0, 0,
- 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 42,
- 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 49,
- 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 53, 0, 0, 0, 48,
- 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56,
- 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 57, 0, 0, 0, 0,
- 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 68,
- 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0,115,
- 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 85,
- 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21,
- 0, 0, 0, 82, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 88, 0, 0, 0, 0,
- 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 75, 0, 0, 0, 74,
- 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 60,
- 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 97, 0, 0, 0, 96,
- 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 73,
- 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 0,
- 0, 0, 0, 78, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 50,
- 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 39, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 98,
- 0, 0, 0, 72, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101,
- 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,109,
- 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0,
- 0, 0, 0,106, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0,112, 0, 0, 0,108,
- 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,110, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0,113,
- 0, 0, 0,115, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0,112,
- 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 77, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0,135,
- 0, 0, 0,120, 0, 0, 0,119, 0, 0, 0, 16, 0, 0, 0,125, 0, 0, 0,124, 0, 0, 0,120, 0, 0, 0,121, 0, 0, 0, 16,
- 0, 0, 0,123, 0, 0, 0,122, 0, 0, 0,118, 0, 0, 0,119, 0, 0, 0, 16, 0, 0, 0,128, 0, 0, 0,127, 0, 0, 0,123,
- 0, 0, 0,124, 0, 0, 0, 16, 0, 0, 0,133, 0, 0, 0,132, 0, 0, 0,128, 0, 0, 0,129, 0, 0, 0, 16, 0, 0, 0,131,
- 0, 0, 0,130, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0, 16, 0, 0, 0,148, 0, 0, 0,151, 0, 0, 0,131, 0, 0, 0,132,
- 0, 0, 0, 16, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,133, 0, 0, 0,138, 0, 0, 0, 16, 0, 0, 0,137, 0, 0, 0,138,
- 0, 0, 0,140, 0, 0, 0,139, 0, 0, 0, 16, 0, 0, 0,140, 0, 0, 0,129, 0, 0, 0,125, 0, 0, 0,142, 0, 0, 0, 16,
- 0, 0, 0,141, 0, 0, 0,142, 0, 0, 0,144, 0, 0, 0,143, 0, 0, 0, 16, 0, 0, 0,144, 0, 0, 0,121, 0, 0, 0,117,
- 0, 0, 0,136, 0, 0, 0, 16, 0, 0, 0,171, 0, 0, 0,181, 0, 0, 0,177, 0, 0, 0,155, 0, 0, 0, 2, 0, 0, 0,154,
- 0, 0, 0,153, 0, 0, 0,169, 0, 0, 0,170, 0, 0, 0, 2, 0, 0, 0,152, 0, 0, 0,176, 0, 0, 0,172, 0, 0, 0,168,
- 0, 0, 0, 2, 0, 0, 0,159, 0, 0, 0,158, 0, 0, 0,154, 0, 0, 0,155, 0, 0, 0, 2, 0, 0, 0,157, 0, 0, 0,156,
- 0, 0, 0,152, 0, 0, 0,153, 0, 0, 0, 2, 0, 0, 0,179, 0, 0, 0,163, 0, 0, 0,159, 0, 0, 0,178, 0, 0, 0, 2,
- 0, 0, 0,162, 0, 0, 0,161, 0, 0, 0,157, 0, 0, 0,158, 0, 0, 0, 2, 0, 0, 0,160, 0, 0, 0,174, 0, 0, 0,175,
- 0, 0, 0,156, 0, 0, 0, 2, 0, 0, 0,167, 0, 0, 0,166, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0, 2, 0, 0, 0,165,
- 0, 0, 0,164, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0, 2, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,167, 0, 0, 0,180,
- 0, 0, 0, 2, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0, 2, 0, 0, 0,187, 0, 0, 0,183,
- 0, 0, 0,173, 0, 0, 0,164, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 13, 16, 7,160,242, 32, 0, 0, 0, 65, 0, 0, 0, 76,
- 63, 27,168,250, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96,
- 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21, 59, 93,211, 96, 63, 81,128,146, 59, 93,211, 96, 63, 81,128,149,
- 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96,
- 63,185,131,174, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,225, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
- 0, 0, 0, 0, 63, 81,128,149, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 63, 81,128,142,
- 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96,
- 63,131,172, 24, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,246,
- 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0,
- 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 24, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96,
- 63,131,172, 21, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,174, 59, 93,211, 96, 63,158,151,226,
- 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
- 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96,
- 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22,
- 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96,
- 62,203,162, 85, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 63, 27,168,248, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
- 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 22,
- 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96,
- 63,185,131,174, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99,
- 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76,
- 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44,
- 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 72, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44,
- 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102,
- 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,174, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52,
- 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102,
- 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172,
- 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173,
- 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172,
- 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,207, 56, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 56,
- 63, 3, 28,220,189,188,105, 96, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102,
- 61,104, 84,200, 63, 79, 65,244, 61,104, 84,200, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63, 0,188,190, 63,160,188,171, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188,
- 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,200, 63, 79, 65,242,189,188,105, 96, 63, 41, 47,120,
-189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122,
- 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,
-189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160,
- 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128,
- 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
- 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128,
- 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242,
- 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122,
- 63,141,179,113, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131,180, 62,186, 19,116, 63,159,140,244, 63, 3, 28, 50, 63,140,131, 99, 63, 41, 47, 76,
- 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 62,186, 21, 0, 63, 38,207, 51,
- 62, 91,224, 24, 63, 76,226,112, 61,135, 38, 64, 63,114,244,240, 62, 91,221, 4, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63, 0,188,185, 61,135, 44, 96, 62,181, 84, 61,189,169,104,176, 63, 0,189, 93,190,109, 1, 80, 63, 38,207,248,189,169,109,144,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63, 41, 47,116, 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174,
- 62,186, 21, 0, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185, 62,186, 21, 0,
- 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185, 61,135, 44, 96, 63, 38,207, 51, 62, 91,224, 24, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63, 79, 65,236, 63, 76,225,174, 63, 41, 47,116, 63,114,244, 44,
- 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63, 41, 47,120, 62,181, 84,122, 63, 3, 28,248,
- 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 52, 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 14,
- 62,186, 21, 0, 61,104, 82,144, 62, 91,223,128, 62, 82, 94,138, 61,135, 43, 48, 62,181, 84,122, 62, 91,224, 32, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242, 63, 0,188,188, 63, 41, 47,120,
- 63, 38,207, 52, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63, 41, 47,120, 61,104, 84,160,
- 63, 3, 29, 0, 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122, 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63, 0,188,190, 63,117, 84,102, 63, 38,207, 56, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26,
- 63, 41, 47,120, 62,181, 84,127, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,
-190,118,127, 64, 63, 3, 28,216,189,188,106,128, 62,186, 20,176, 61,104, 84,160, 63, 3, 29, 0, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52,
- 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102,
- 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52,
- 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111,
- 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174,
- 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52,
- 63,141,179,111, 63, 76,225,174, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 72,
- 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161,
- 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236,
- 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161,
- 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236,
- 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 63, 0,188,188,
- 63,160,188,173, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64,
- 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
+ 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 21,
+ 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 35, 0, 0, 0, 34,
+ 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 19,
+ 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34,
+ 0, 0, 0, 25, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 28,
+ 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 22,
+ 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 33, 0, 0, 0, 34,
+ 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 28,
+ 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 26,
+ 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 34,
+ 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37,
+ 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 4,
+ 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34,
+ 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45,
+ 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 22,
+ 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 42, 0, 0, 0, 34,
+ 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 45,
+ 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 57,
+ 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 34,
+ 0, 0, 0, 46, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49,
+ 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 47,
+ 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 34,
+ 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 56,
+ 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 50,
+ 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34,
+ 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 56,
+ 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 54,
+ 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34,
+ 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 68,
+ 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 69,
+ 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 69, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 34,
+ 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 63,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 34,
+ 0, 0, 0, 33, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 50,
+ 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 6,
+ 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 34,
+ 0, 0, 0, 71, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 76,
+ 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 17,
+ 0, 0, 0, 73, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 95, 0, 0, 0, 34,
+ 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 83,
+ 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84,
+ 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,110, 0, 0, 0, 34,
+ 0, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,110,
+ 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 88,
+ 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 34,
+ 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0,107,
+ 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 90,
+ 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0,101, 0, 0, 0, 34,
+ 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 96,
+ 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 94,
+ 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34,
+ 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100,
+ 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98,
+ 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, 34,
+ 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,107,
+ 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,109,
+ 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34,
+ 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 83,
+ 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 60,
+ 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 93, 0, 0, 0, 34,
+ 0, 0, 0, 31, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 90,
+ 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,124, 48, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 94, 32, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,
+120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162, 98, 32,
+ 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,162,108, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3,212, 3,162, 94, 32, 0, 0, 0, 54, 0, 0, 0, 49,
+ 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 3,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 63,
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 17, 0, 0, 0, 0,
+ 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 14,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+ 0, 0, 0, 76, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 37,
+ 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 25,
+ 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 28, 0, 0, 0, 24,
+ 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 26, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 58,
+ 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 27, 0, 0, 0, 28,
+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91,
+ 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 47,
+ 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 51, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 57,
+ 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 50, 0, 0, 0, 51,
+ 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 84,
+ 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 0,
+ 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 61, 0, 0, 0, 57,
+ 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
+ 0, 0, 0, 53, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 64, 0, 0, 0, 77,
+ 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 94,
+ 0, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0,101, 0, 0, 0, 97, 0, 0, 0, 83, 0, 0, 0, 0,
+ 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 88, 0, 0, 0, 89,
+ 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,103,
+ 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,109, 0, 0, 0,105, 0, 0, 0, 84,
+ 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 86,
+ 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 0,
+ 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 8,108, 3,162, 98, 32,
+ 0, 0, 0, 65, 0, 0, 0, 49, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 3, 29, 0,
+ 62, 82, 95, 26, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26,
+ 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242, 63, 0,188,190, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 61,104, 84,160, 63, 3, 29, 0,189,188,106,128, 62,186, 20,176, 61,104, 82,144, 62, 91,223,128, 62, 82, 95, 14, 62,186, 21, 0,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,127, 63, 79, 65,242, 62, 82, 95, 26, 63, 41, 47,120, 62,181, 84,122,
+ 63, 3, 28,248, 63, 0,188,188, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111,
+ 63, 0,188,190, 63,117, 84,102, 63, 38,207, 52, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62,181, 84,122, 63, 3, 28,248, 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185,
+ 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63, 79, 65,236, 63, 0,188,188, 63, 41, 47,120,
+ 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174, 63, 41, 47,116, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122,
+ 62, 91,224, 32, 62, 82, 94,138, 61,135, 43, 48, 62,181, 84, 61,189,169,104,176, 63, 0,188,185, 61,135, 44, 96, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 51, 62, 91,224, 24,
+ 63, 76,225,174, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174,
+ 63, 41, 47,116, 63,114,244, 42, 63, 3, 28,244, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,207, 51, 62, 91,224, 24, 63, 0,188,185, 61,135, 44, 96, 63, 38,207,248,189,169,109,144, 63, 76,226,112, 61,135, 38, 64,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244,240, 62, 91,221, 4, 63,140,131,180, 62,186, 19,116, 63,114,244, 42,
+ 63, 3, 28,244, 63, 76,225,174, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1,
0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160,
63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113,
@@ -7179,13 +8148,50 @@ char datatoc_preview_blend[]= {
60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,
189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26,
63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 61,104, 84,200, 63, 79, 65,242,189,188,105, 96, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,160,188,171, 62,181, 84,122, 63,141,179,113, 62,181, 84,122,
+ 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122,
63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102,
- 61,104, 84,200, 63, 79, 65,244, 61,104, 84,200, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 56, 63, 3, 28,220,189,188,105, 96,
- 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 4,192, 7,161, 0, 32, 0, 0, 0, 59,
- 0, 0, 1, 48,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 61,104, 84,200, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 64, 63, 3, 28,216,189,188,105,128,
+ 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102,
+ 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,200,
+ 63, 79, 65,244,189,188,105, 96, 63, 41, 47,120,189,188,105, 96, 63, 41, 47,120, 61,104, 84,200, 63, 79, 65,242, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102,
+ 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 63, 38,207, 56,
+ 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172,
+ 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111,
+ 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172,
+ 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102,
+ 63, 76,225,174, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52,
+ 63,141,179,111, 63, 0,188,190, 63,160,188,171, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,162, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 72, 63,140,131, 99, 63, 41, 47, 76,
+ 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44,
+ 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44,
+ 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210,
+ 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,244, 63, 3, 28, 50, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 63,131,172, 22,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96,
+ 63, 27,168,248, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,176,
+ 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96,
+ 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96, 62,203,162, 85,
+ 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,158,151,226, 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,142, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 63, 27,168,247,
+ 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,174, 59, 93,211, 96,
+ 63,158,151,227, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 63,131,172, 24,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,251, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96,
+ 62,203,162, 86, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,225,
+ 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,158,151,227, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,146, 59, 93,211, 96, 63, 27,168,250, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96,
+ 63, 81,128,149, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 16, 3,162,108, 32,
+ 0, 0, 0, 59, 0, 0, 0,196,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
@@ -7209,13 +8215,563 @@ char datatoc_preview_blend[]= {
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24,
+ 8,194,125,176, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,136, 96, 8,194,119,192, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108,
+ 97,110,101, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,126,240, 8,194,133, 80, 8,194,134, 32,
+ 0, 0, 0, 0, 3,162,112, 32, 8,194,130, 32, 0, 0, 0, 0, 8,194,135,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,127, 32, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,128,160, 0, 0, 0, 1,
+ 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,131,208, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 4, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,126,240, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,127, 32, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,112, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,162,112, 32, 0, 0, 0, 58, 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,
+190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1,
+ 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
+191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,
+179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1,
+ 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
+190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,
+ 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1,
+ 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
+191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,
+191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1,
+ 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
+ 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0,
+ 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1,
+ 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
+ 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,
+ 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1,
+ 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,128,160, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,130, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,194,130, 32, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2,
+ 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35,
+ 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12,
+ 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2,
+ 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35,
+ 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7,
+ 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8,
+ 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35,
+ 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12,
+ 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 35, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17,
+ 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22,
+ 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,131,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,133, 80, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,134, 32, 0, 0, 0, 6, 0, 0, 0, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,135,176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,194,133, 80, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2,
+ 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18,
+ 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20,
+ 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96,
+ 8,194,134, 32, 0, 0, 0, 65, 0, 0, 0, 8, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144,
+ 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162,
+ 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,229, 0, 63,125,226,162, 62,137,192, 18, 63,125,226,162,
+ 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154,
+ 63,125,226,162, 63, 17, 5, 34, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152,
+ 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,194,135,176, 0, 0, 0, 59, 0, 0, 0, 32,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 0, 0, 77, 69, 0, 0, 1, 24, 8,194,136, 96, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,147, 16, 8,194,125,176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,137,160,
+ 8,194,144, 0, 8,194,144,208, 0, 0, 0, 0, 3,162,116, 32, 8,194,140,208, 0, 0, 0, 0, 8,194,146, 96, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,137,208, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,139, 80, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,142,128, 0, 0, 0, 3,
+ 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,137,160, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,137,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,116, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,162,116, 32, 0, 0, 0, 58, 0, 0, 0, 23,
+ 62,204,205, 47,180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,
+190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1,
+ 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
+ 62,204,205, 47,180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,
+ 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1,
+ 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
+ 63, 76,205, 0, 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,
+191, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1,
+ 0, 0, 2, 0, 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
+190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,
+ 63, 76,204,210, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1,
+ 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
+191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,
+180,144, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1,
+ 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
+182, 70, 0, 0, 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,
+190,204,204,216, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1,
+ 0, 0, 2, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,139, 80, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,140,208,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,194,140,208, 0, 0, 0, 55,
+ 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9,
+ 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34,
+ 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15,
+ 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34,
+ 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10,
+ 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,142,128, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,144, 0, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,
+120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,144,208,
+ 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,146, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,194,144, 0, 0, 0, 0, 54, 0, 0, 0, 8,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15,
+ 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19,
+ 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 96, 8,194,144,208, 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30,
+ 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162,
+ 62,213,229, 0, 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,137,192, 18, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12,
+ 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,194,146, 96,
+ 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,147, 16, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,154,144,
+ 8,194,136, 96, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,148, 80, 8,194,153,240, 8,194,154, 48, 0, 0, 0, 0, 8,194,150, 0, 8,194,152, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,148,128, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,150,144, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,152,112, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,179,128, 0, 0, 52, 64, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 2, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,148, 80,
+ 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 94, 32, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,148,128, 0, 0, 1, 42, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 96, 8,194,150, 0,
+ 0, 0, 0, 58, 0, 0, 0, 4, 63,128, 0, 0, 63,127,255,255, 0, 0, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,
+ 63,128, 0, 0,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,191,128, 0, 1,191,127,255,253,
+ 0, 0, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,191,127,255,250, 63,128, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+127,255, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,150,144, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,152, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 48, 8,194,152, 16, 0, 0, 0, 55,
+ 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,152,112,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,153,240, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,154, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 20, 8,194,153,240, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1,
+ 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 0, 44, 8,194,154, 48, 0, 0, 0, 65, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,154,144, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,160,128, 8,194,147, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,155,208, 3,162,142, 32, 3,162,148, 32, 0, 0, 0, 0, 3,162,120, 32, 3,162,132, 32, 0, 0, 0, 0, 3,162,158, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,156, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,157,128, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,159, 0,
+ 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0,198, 0, 0, 0, 51,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140,
+ 63,127,255,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,155,208, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,156, 0, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,120, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,224, 3,162,120, 32, 0, 0, 0, 58,
+ 0, 0, 0,116, 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175,
+ 65, 33, 87,144, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194,
+ 64,215, 31,179, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172, 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13,
+ 64,161, 87,244, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,140,212,127, 64,161, 87,242, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44,
+ 64, 87, 32,113, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222,
+ 63,215, 33,239, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36,
+ 65, 87, 31, 81, 64,190, 35,238, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 64,190, 35,238,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240,
+ 64, 87, 32, 2, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 64,190, 35,239,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151, 64,190, 35,244,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193,
+ 64, 87, 30, 62, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146, 64,190, 35,242, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146,192,190, 36, 74, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127,
+ 64,161, 86,217,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 56, 53,234, 98,
+191,215, 33, 38,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,100, 43,135,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43,
+ 64,215, 31,117,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 63,152, 29, 14,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43,
+ 64,215, 31,117, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,190, 36, 72,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0, 64,161, 86,177,
+ 65, 33, 87,146, 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225, 65, 60, 59,110, 64,100, 43,129,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177,
+ 65, 33, 87,146, 63,152, 28,234,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 63,152, 28,246,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177,
+ 65, 33, 87,146,191,152, 29, 30,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,191,152, 29, 18,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177,
+ 65, 33, 87,146,192,100, 43,153,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,100, 43,147,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170,
+ 64,161, 87,190,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33,222, 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,193, 6,115,183,
+ 64,215, 31,127,192,100, 43,154, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,191,152, 29, 32,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,193, 6,115,182, 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183,
+ 64,215, 31,127,192,190, 36, 78, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,190, 36, 74, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5, 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,191, 65, 33, 87,148, 64,100, 43,133, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121,
+ 65, 6,115,181, 64,100, 43,139, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180, 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,191,152, 29, 9, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180,191,152, 28,253, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,100, 43,142, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180,192,100, 43,136, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173,
+ 64,215, 31,170,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127, 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226,
+ 65, 6,115,179,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,138,163,172, 65, 6,115,181,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208,
+ 65, 33, 87,146,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243,
+ 65, 60, 59,112,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 63,215, 28,223, 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,157,128, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,132, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 72, 3,162,132, 32, 0, 0, 0, 55, 0, 0, 0,198,
+ 0, 0, 0, 21, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 84,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 34,
+ 0, 0, 0, 27, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7,
+ 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9,
+ 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34,
+ 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13,
+ 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34,
+ 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 2,
+ 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 34,
+ 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 13,
+ 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 34,
+ 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 27,
+ 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 14,
+ 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 35,
+ 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 15,
+ 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 31, 0, 0, 0, 34,
+ 0, 0, 0, 40, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 39, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0,100,
+ 0, 0, 0, 34, 0, 0, 0, 37, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 41, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 36,
+ 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34,
+ 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,101,
+ 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 60,
+ 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 34,
+ 0, 0, 0, 50, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,115,
+ 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51,
+ 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34,
+ 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45,
+ 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 46,
+ 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34,
+ 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 54,
+ 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55,
+ 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34,
+ 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64,
+ 0, 0, 0, 34, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 62,
+ 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 34,
+ 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68,
+ 0, 0, 0, 34, 0, 0, 0, 63, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 62,
+ 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 65, 0, 0, 0, 34,
+ 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 53,
+ 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 42,
+ 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,106, 0, 0, 0, 34,
+ 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 97,
+ 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 76,
+ 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 34,
+ 0, 0, 0, 73, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 77,
+ 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 79,
+ 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34,
+ 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 83,
+ 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 84,
+ 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 34,
+ 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 93,
+ 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 91,
+ 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34,
+ 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97,
+ 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 91,
+ 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 94, 0, 0, 0, 34,
+ 0, 0, 0, 81, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 95,
+ 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100,
+ 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34,
+ 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102,
+ 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104,
+ 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34,
+ 0, 0, 0,103, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106,
+ 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,108,
+ 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,111, 0, 0, 0, 34,
+ 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,115,
+ 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,110,
+ 0, 0, 0,111, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,159, 0, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,142, 32,
+ 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,162,148, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,162,158, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3,252, 3,162,142, 32, 0, 0, 0, 54,
+ 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19,
+ 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 7,
+ 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 15, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 29,
+ 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 45,
+ 0, 0, 0, 44, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 44,
+ 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1,
+ 0, 0, 0, 53, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0,
+ 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 58,
+ 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 65,
+ 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 22,
+ 0, 0, 0, 76, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 83, 0, 0, 0, 0,
+ 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 82, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 89,
+ 0, 0, 0, 75, 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 91,
+ 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93,
+ 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 0,
+ 0, 0, 0, 97, 0, 0, 0, 73, 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 80,
+ 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 37,
+ 0, 0, 0, 36, 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 39, 0, 0, 0, 38,
+ 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 72, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104,
+ 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0,
+ 0, 0, 0, 51, 0, 0, 0,109, 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103,
+ 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0,113,
+ 0, 0, 0,112, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,110, 0, 0, 0,106, 0, 0, 0,107,
+ 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 80,
+ 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 77, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 8,196, 3,162,148, 32, 0, 0, 0, 65, 0, 0, 0, 51, 63, 27,168,250, 59, 93,211, 96, 62,203,162, 84,
+ 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,131,172, 21, 59, 93,211, 96, 63, 81,128,146, 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,185,131,174,
+ 59, 93,211, 96, 63,158,151,225, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,149, 59, 93,211, 96,
+ 63, 27,168,251, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 63,158,151,226,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,246, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96,
+ 62,203,162, 85, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 24,
+ 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,174, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96,
+ 63,185,131,176, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247,
+ 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,158,151,226, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 62,203,162, 86,
+ 59, 93,211, 96, 63, 27,168,248, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96,
+ 63, 81,128,144, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,224,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236,
+ 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161,
+ 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236,
+ 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99,
+ 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,140,131, 99, 63, 41, 47, 72, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52,
+ 63,141,179,111, 63, 76,225,174, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111,
+ 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44,
+ 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111,
+ 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52,
+ 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102,
+ 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111, 63, 76,225,172,
+ 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 56, 63, 3, 28,220,189,188,105, 96, 63, 41, 47,120,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,200, 63, 79, 65,244, 61,104, 84,200,
+ 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,160,188,171,
+ 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 61,104, 84,200, 63, 79, 65,242,189,188,105, 96, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160,
+ 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102,
+ 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128,
+ 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242,
+ 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122,
+ 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26,
+ 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,
+190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26,
+ 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173,
+ 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131,180,
+ 62,186, 19,116, 63,159,140,244, 63, 3, 28, 50, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 62,186, 21, 0, 63, 38,207, 51, 62, 91,224, 24, 63, 76,226,112, 61,135, 38, 64,
+ 63,114,244,240, 62, 91,221, 4, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185, 61,135, 44, 96, 62,181, 84, 61,
+189,169,104,176, 63, 0,189, 93,190,109, 1, 80, 63, 38,207,248,189,169,109,144, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 76,225,174, 63, 41, 47,116, 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174, 62,186, 21, 0, 63,114,244, 42, 63, 3, 28,244,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185, 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185,
+ 61,135, 44, 96, 63, 38,207, 51, 62, 91,224, 24, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102,
+ 63, 38,207, 52, 63, 79, 65,236, 63, 76,225,174, 63, 41, 47,116, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 0,188,188, 63, 41, 47,120, 62,181, 84,122, 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 52,
+ 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 14, 62,186, 21, 0, 61,104, 82,144, 62, 91,223,128,
+ 62, 82, 94,138, 61,135, 43, 48, 62,181, 84,122, 62, 91,224, 32, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190,
+ 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242, 63, 0,188,188, 63, 41, 47,120, 63, 38,207, 52, 63, 79, 65,236, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63, 41, 47,120, 61,104, 84,160, 63, 3, 29, 0, 62, 82, 95, 14, 62,186, 21, 0,
+ 62,181, 84,122, 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 63, 38,207, 56,
+ 63,141,179,111, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63, 41, 47,120, 62,181, 84,127, 63, 79, 65,242,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,189,188,106,128,
+ 62,186, 20,176, 61,104, 84,160, 63, 3, 29, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 48,
+ 3,162,158, 32, 0, 0, 0, 59, 0, 0, 0,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
@@ -7223,345 +8779,586 @@ char datatoc_preview_blend[]= {
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,115, 96, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,120,240, 13, 65,109,208,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,116,160, 7,161, 40, 32, 7,161, 46, 32, 0, 0, 0, 0, 7,161, 6, 32, 7,161, 24, 32, 0, 0, 0, 0, 7,161, 60, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,116,208, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,118, 48, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,119,144,
- 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,182, 0, 0, 1, 45, 0, 0, 0, 74,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140,
- 63,127,255,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,116,160, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,116,208, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 17, 16, 7,161, 6, 32, 0, 0, 0, 58, 0, 0, 0,182, 63,230,102,133,
- 63,179, 51,208,191,128, 0, 4,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,133, 63, 25,154,206,191,128, 0, 4,
-165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,179, 51, 81, 63,179, 51,210,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,128, 0, 28, 63,179, 51,212,191,128, 0, 1, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,207,
- 63,179, 51,214,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,152, 63,179, 51,216,191,127,255,254,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,128, 0,158,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,128, 0, 27, 63,128, 0,160,191,128, 0, 2, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,204,
- 63,128, 0,162,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,128, 0,163,191,127,255,254,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63, 25,154,209,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,128, 0, 27, 63, 25,154,213,191,128, 0, 2, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,204,
- 63, 25,154,217,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63, 25,154,221,191,127,255,254,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 62, 76,209,160,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,128, 0, 27, 62, 76,209,176,191,128, 0, 2, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,204,
- 62, 76,209,188,191,128, 0, 1, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 62, 76,209,204,191,127,255,255,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8,191, 25,153,156, 0, 0,128, 1, 0, 0, 2,255,
- 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,191, 25,153,160, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,128, 0, 27,
- 63,230,103, 10,191, 25,153,164, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12,191, 25,153,168,
- 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8,190, 76,204,196, 0, 0,128, 1, 0, 0, 2,255,
- 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,190, 76,204,212, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,128, 0, 27,
- 63,230,103, 10,190, 76,204,228, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12,190, 76,204,244,
- 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8, 62, 76,204,216, 0, 0,128, 1, 0, 0, 2,255,
- 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10, 62, 76,204,200, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,128, 0, 27,
- 63,230,103, 10, 62, 76,204,184, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12, 62, 76,204,168,
- 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,152, 63,230,103, 8, 63, 25,153,158, 0, 0,128, 1, 0, 0, 2,255,
- 0, 0, 0, 0, 63, 25,153,207, 63,230,103, 10, 63, 25,153,154, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,128, 0, 28,
- 63,230,103, 10, 63, 25,153,150, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 63,179, 51, 81, 63,230,103, 12, 63, 25,153,150,
- 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8,191,128, 0, 3, 0, 0,165,127, 90,129, 0,255,
- 0, 0, 0, 0, 63, 25,153,204, 63,230,103, 10,191,128, 0, 4, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63,128, 0, 27,
- 63,230,103, 10,191,128, 0, 6, 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12,191,128, 0, 7,
- 0, 0,165,127, 90,129, 0,255, 0, 0, 0, 0,190, 76,205,144, 63,230,103, 12, 63, 25,153,150, 0, 0,128, 1, 0, 0, 2,255,
- 0, 0, 0, 0,190, 76,205,152, 63,230,103, 12, 62, 76,204,168, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,152,
- 63,230,103, 12,190, 76,204,244, 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,152, 63,230,103, 12,191, 25,153,168,
- 0, 0,128, 1, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,152, 62, 76,209,160,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0,190, 76,205,152, 63, 25,154,209,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152,
- 63,128, 0,158,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,144, 63,179, 51,210,191,128, 0, 3,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,191, 25,153,155,165,127,165,127, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131, 63,179, 51,212,191, 25,153,159,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,
- 63,128, 0,160,191, 25,153,163,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207,191, 25,153,167,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,190, 76,204,193,165,127,165,127, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131, 63,179, 51,212,190, 76,204,209,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,
- 63,128, 0,160,190, 76,204,225,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207,190, 76,204,241,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7, 62, 76,204,219,165,127,165,127, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131, 63,179, 51,212, 62, 76,204,203,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,
- 63,128, 0,160, 62, 76,204,187,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207, 62, 76,204,171,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7, 63, 25,153,159,165,127,165,127, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131, 63,179, 51,212, 63, 25,153,155,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,
- 63,128, 0,156, 63, 25,153,151,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,135, 63, 25,154,207, 63, 25,153,151,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7,191,128, 0, 3,128, 1, 0, 0, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131, 63,128, 0,160,191,128, 0, 6,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,127,
- 62, 76,208, 28,191,128, 0, 3,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,131,190, 76,201,136, 63, 25,153,155,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28, 63, 25,153,159,128, 1, 0, 0, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131,190, 76,201,136, 62, 76,204,203,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127,
- 62, 76,208, 28, 62, 76,204,219,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,131,190, 76,201,136,190, 76,204,209,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28,190, 76,204,193,128, 1, 0, 0, 0, 0, 2,255,
- 0, 0, 0, 0, 63,230,102,131,190, 76,201,136,191, 25,153,159,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,127,
- 62, 76,208, 28,191, 25,153,155,128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 62, 76,205,150,190, 76,208, 24,191,127,255,254,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,207,190, 76,208, 40,191,128, 0, 0, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,128, 0, 28,190, 76,208, 56,191,128, 0, 1, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 81,
-190, 76,208, 72,191,128, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,230,102,133,190, 76,208, 88,191,128, 0, 4,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0, 63,230,102,133,190, 76,208, 88, 63,127,255,146,128, 1, 0, 0, 0, 0, 2,255,
- 0, 0, 0, 0, 63,179, 51, 81,190, 76,208, 72, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 28,
-190, 76,208, 56, 63,127,255,152, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63, 25,153,207,190, 76,208, 40, 63,127,255,154,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,150,190, 76,208, 24, 63,127,255,156, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,230,102,127, 62, 76,208, 28, 63,127,255,148,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,131,
- 63,128, 0,160, 63,127,255,142,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0, 63,230,102,131, 63,230,103, 7, 63,127,255,148,
-128, 1, 0, 0, 0, 0, 2,255, 0, 0, 0, 0,190, 76,205,144, 63,179, 51,210, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0,190, 76,205,152, 63,128, 0,158, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152,
- 63, 25,154,209, 63,127,255,148, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,190, 76,205,152, 62, 76,209,160, 63,127,255,148,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,230,103, 12, 63,127,255,140, 0, 0,165,127, 90,129, 2,255,
- 0, 0, 0, 0, 63,128, 0, 27, 63,230,103, 10, 63,127,255,142, 0, 0,165,127, 90,129, 2,255, 0, 0, 0, 0, 63, 25,153,204,
- 63,230,103, 10, 63,127,255,146, 0, 0,165,127, 90,129, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,230,103, 8, 63,127,255,148,
- 0, 0,165,127, 90,129, 2,255, 0, 0, 0, 0, 62, 76,205,140, 62, 76,209,204, 63,127,255,154, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63, 25,153,204, 62, 76,209,188, 63,127,255,152, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 27,
- 62, 76,209,176, 63,127,255,150, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 62, 76,209,160, 63,127,255,148,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63, 25,154,221, 63,127,255,156, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63, 25,153,204, 63, 25,154,217, 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 27,
- 63, 25,154,213, 63,127,255,150, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63, 25,154,209, 63,127,255,148,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,140, 63,128, 0,163, 63,127,255,156, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63, 25,153,204, 63,128, 0,162, 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 27,
- 63,128, 0,160, 63,127,255,150, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 80, 63,128, 0,158, 63,127,255,148,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 62, 76,205,152, 63,179, 51,216, 63,127,255,156, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63, 25,153,207, 63,179, 51,214, 63,127,255,154, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 28,
- 63,179, 51,212, 63,127,255,152, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,179, 51, 81, 63,179, 51,210, 63,127,255,148,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,230,102,133, 63, 25,154,206, 63,127,255,146,165,127, 0, 0, 90,129, 2,255,
- 0, 0, 0, 0, 63,230,102,133, 63,179, 51,208, 63,127,255,146,165,127, 0, 0, 90,129, 2,255, 0, 0, 0, 0,190, 76,205,144,
- 62, 76,201,140, 63,127,255,148,127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,136, 63,127,255, 52, 63,127,255,148,
-127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,128,190, 76,208, 48, 63,127,255,150,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205,120, 63, 25,152,194, 63,127,255,144,127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205, 80,
- 63,179, 50,254, 63,127,255,150,127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,128, 63,230,103, 12, 63,127,255,148,
-127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128, 63,230,103, 12,191,128, 0, 5,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205, 80, 63,179, 50,254,191, 25,153,156,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112,
- 63,230,102, 50,191, 25,153,160,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205, 80, 63,179, 50,254,190, 76,204,195,
-127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112, 63,230,102, 50,190, 76,204,211,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205, 80, 63,179, 50,254, 62, 76,204,221,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112,
- 63,230,102, 50, 62, 76,204,205,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205, 80, 63,179, 50,254, 63, 25,153,160,
-127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112, 63,230,102, 50, 63, 25,153,156,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205, 80, 63,179, 50,254,191,128, 0, 4,127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,120,
- 63, 25,152,194,191,128, 0, 7,127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,128,190, 76,208, 48,191,128, 0, 4,
-127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 52, 63, 25,153,152,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205,120, 63, 25,152,202, 63, 25,153,152,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,
- 62, 76,201,108, 63, 25,153,156,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,190, 76,208, 48, 63, 25,153,160,
-127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 52, 62, 76,204,173,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205,120, 63, 25,152,194, 62, 76,204,189,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,
- 62, 76,201,108, 62, 76,204,205,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,190, 76,208, 48, 62, 76,204,221,
-127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 52,190, 76,204,243,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205,120, 63, 25,152,194,190, 76,204,227,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,
- 62, 76,201,108,190, 76,204,211,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,190, 76,208, 48,190, 76,204,195,
-127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,152, 63,127,255, 52,191, 25,153,168,127,255, 0, 0, 0, 0, 3,255,
- 0, 0, 0, 0,190, 76,205,120, 63, 25,152,194,191, 25,153,164,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,
- 62, 76,201,108,191, 25,153,160,127,255, 0, 0, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,128,190, 76,208, 48,191, 25,153,156,
-127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,136, 63,127,255, 52,191,128, 0, 5,127,255, 0, 0, 0, 0, 1,255,
- 0, 0, 0, 0,190, 76,205,144, 62, 76,201,140,191,128, 0, 5,127,255, 0, 0, 0, 0, 1,255, 0, 0, 0, 0, 63,179, 51, 36,
-190, 76,208, 56, 63,127,255,150, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,190, 76,208, 80, 63,127,255,148,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80, 63,127,255,144, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 62, 76,204, 44,190, 76,208,104, 63,127,255,142, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0,190, 76,205,112,
-190, 76,208, 64, 63,127,255,150,231, 94,231, 94,123, 41, 1,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,191,128, 0, 4,
-231, 94,231, 94,132,215, 1,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64, 63, 25,153,160, 0, 0,127,255, 0, 0, 1,255,
- 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64, 62, 76,204,221, 0, 0,127,255, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,112,
-190, 76,208, 64,190, 76,204,195, 0, 0,127,255, 0, 0, 1,255, 0, 0, 0, 0,190, 76,205,112,190, 76,208, 64,191, 25,153,156,
- 0, 0,127,255, 0, 0, 1,255, 0, 0, 0, 0, 63,230,102,136,190, 76,208, 88,191, 25,153,169, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 63,230,102,136,190, 76,208, 88,190, 76,204,246, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,230,102,136,
-190, 76,208, 88, 62, 76,204,170, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,230,102,135,190, 76,208, 88, 63, 25,153,151,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 62, 76,204, 44,190, 76,208,104,191,128, 0, 8, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80,191,128, 0, 7, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,
-190, 76,208, 80,191,128, 0, 5, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,191,128, 0, 4,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 62, 76,204, 36,190, 76,208,104, 63, 25,153,151, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 63, 25,153,114,190, 76,208, 80, 63, 25,153,151, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,220,
-190, 76,208, 80, 63, 25,153,155, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 34,190, 76,208, 56, 63, 25,153,159,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 62, 76,204, 44,190, 76,208,104, 62, 76,204,170, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80, 62, 76,204,186, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,
-190, 76,208, 80, 62, 76,204,202, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56, 62, 76,204,218,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 62, 76,204, 44,190, 76,208,104,190, 76,204,246, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80,190, 76,204,230, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,
-190, 76,208, 80,190, 76,204,214, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,190, 76,204,198,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 62, 76,204, 44,190, 76,208,104,191, 25,153,169, 0, 0,127,255, 0, 0, 3,255,
- 0, 0, 0, 0, 63, 25,153,116,190, 76,208, 80,191, 25,153,165, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,127,255,222,
-190, 76,208, 80,191, 25,153,161, 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 63,179, 51, 36,190, 76,208, 56,191, 25,153,157,
- 0, 0,127,255, 0, 0, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,118, 48, 0, 0, 1, 35, 0, 0, 0, 5,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,194,160,128, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,166,112, 8,194,154,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 80,108, 97,110,101, 46, 48, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,161,192, 3,162,184, 32,
+ 3,162,188, 32, 0, 0, 0, 0, 3,162,162, 32, 3,162,174, 32, 0, 0, 0, 0, 3,162,198, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,161,240, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,163,112,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,164,240, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0,192, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140, 63,127,255,214, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,161,192, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,161,240, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,162, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,176, 3,162,162, 32, 0, 0, 0, 58, 0, 0, 0,114, 63,215, 28,223,
+ 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6,
+ 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,138,163,172, 65, 6,115,181,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37,
+ 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127,
+ 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191,
+ 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,100, 43,136, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,100, 43,142, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,191,152, 28,253, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,191,152, 29, 9, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121, 65, 6,115,181, 64,100, 43,139, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,191, 65, 33, 87,148, 64,100, 43,133, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5,
+ 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,190, 36, 74, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,193, 6,115,182, 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183,
+ 64,215, 31,127,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,100, 43,154,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240,
+ 64, 87, 32, 2,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112,192,100, 43,147,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,192,100, 43,153,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112,191,152, 29, 18,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,191,152, 29, 30,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112, 63,152, 28,246,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 63,152, 28,234,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225,
+ 65, 60, 59,110, 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 64,100, 43,129,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,190, 36, 72,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151,192,190, 36, 72,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 64,100, 43,135,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151, 63,152, 29, 14,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,191,152, 29, 6,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151,192,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127,
+ 64,161, 86,217,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146,192,190, 36, 74,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146, 64,190, 35,242,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193,
+ 64, 87, 30, 62, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,190, 35,244,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112, 64,190, 35,239,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102,
+ 63,215, 33, 14, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 64,190, 35,238, 63,255,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244,
+ 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220,
+ 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,140,212,127, 64,161, 87,242, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201,
+ 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172,
+ 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18,
+ 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 60,152, 10,
+191,215, 33, 16, 64,190, 35,245, 0, 0,221, 42,123, 41, 2,255, 0, 0, 0, 0, 56, 60,152, 10,191,215, 33, 16,192,190, 36, 74,
+ 0, 0,221, 42,132,215, 2,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,163,112, 0, 0, 1, 42, 0, 0, 0, 5,
0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 24, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 14, 28, 7,161, 24, 32, 0, 0, 0, 55, 0, 0, 1, 45,
- 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 8,
- 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34,
- 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6,
- 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 8,
- 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 34,
- 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 10,
- 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 12,
- 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 34,
- 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 37,
- 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 18,
- 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 34,
- 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 23,
- 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 25,
- 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 34,
- 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 23,
- 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 28,
- 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 34,
- 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 30,
- 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 30,
- 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34,
- 0, 0, 0, 2, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 35,
- 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 40,
- 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 34,
- 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 40,
- 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 42, 0, 0, 0, 34, 0, 0, 0, 13,
- 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 45, 0, 0, 0, 34,
- 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 68,
- 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 46,
- 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34,
- 0, 0, 0, 48, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 51,
- 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 53,
- 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 34,
- 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 51,
- 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 56,
- 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 34,
- 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 58,
- 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 58,
- 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0, 34,
- 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 70,
- 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 69, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 71,
- 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 63, 0, 0, 0, 34,
- 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 47,
- 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 33,
- 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 50, 0, 0, 0, 34,
- 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 63,
- 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 71,
- 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 76, 0, 0, 0, 34,
- 0, 0, 0, 15, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 73,
- 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 80,
- 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 34,
- 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,105,
- 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 85,
- 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,110, 0, 0, 0, 34,
- 0, 0, 0, 86, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 98,
- 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 88,
- 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0,107, 0, 0, 0, 34,
- 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 91,
- 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 96,
- 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 34,
- 0, 0, 0, 95, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 98,
- 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100,
- 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34,
- 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102,
- 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,104,
- 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,107, 0, 0, 0, 34,
- 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,111,
- 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,106,
- 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 83, 0, 0, 0, 34,
- 0, 0, 0, 58, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 84,
- 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 31,
- 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 90, 0, 0, 0, 34,
- 0, 0, 0,113, 0, 0, 0,130, 0, 0, 0, 35, 0, 0, 0,115, 0, 0, 0,131, 0, 0, 0, 35, 0, 0, 0,112, 0, 0, 0,132,
- 0, 0, 0, 35, 0, 0, 0,114, 0, 0, 0,133, 0, 0, 0, 35, 0, 0, 0,116, 0, 0, 0,125, 0, 0, 0, 35, 0, 0, 0,117,
- 0, 0, 0,126, 0, 0, 0, 35, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 35, 0, 0, 0,112, 0, 0, 0,115, 0, 0, 0,163,
- 0, 0, 0,112, 0, 0, 0,114, 0, 0, 0, 35, 0, 0, 0,113, 0, 0, 0,116, 0, 0, 0,163, 0, 0, 0,116, 0, 0, 0,117,
- 0, 0, 0, 35, 0, 0, 0,118, 0, 0, 0,127, 0, 0, 0, 35, 0, 0, 0,118, 0, 0, 0,120, 0, 0, 0, 35, 0, 0, 0,127,
- 0, 0, 0,146, 0, 0, 0,163, 0, 0, 0,142, 0, 0, 0,146, 0, 0, 0, 35, 0, 0, 0,144, 0, 0, 0,147, 0, 0, 0, 35,
- 0, 0, 0,129, 0, 0, 0,147, 0, 0, 0, 35, 0, 0, 0,128, 0, 0, 0,147, 0, 0, 0,163, 0, 0, 0,128, 0, 0, 0,146,
- 0, 0, 0, 35, 0, 0, 0,119, 0, 0, 0,127, 0, 0, 0, 35, 0, 0, 0,119, 0, 0, 0,120, 0, 0, 0, 35, 0, 0, 0,119,
- 0, 0, 0,121, 0, 0, 0, 35, 0, 0, 0,122, 0, 0, 0,124, 0, 0, 0, 35, 0, 0, 0,121, 0, 0, 0,122, 0, 0, 0, 35,
- 0, 0, 0,121, 0, 0, 0,123, 0, 0, 0, 35, 0, 0, 0,123, 0, 0, 0,124, 0, 0, 0, 35, 0, 0, 0,123, 0, 0, 0,125,
- 0, 0, 0, 35, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0, 35, 0, 0, 0,132, 0, 0, 0,133, 0, 0, 0, 35, 0, 0, 0,131,
- 0, 0, 0,132, 0, 0, 0, 35, 0, 0, 0,130, 0, 0, 0,131, 0, 0, 0, 35, 0, 0, 0,133, 0, 0, 0,137, 0, 0, 0,163,
- 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0, 35, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 35, 0, 0, 0,135, 0, 0, 0,136,
- 0, 0, 0, 35, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0, 35, 0, 0, 0,134, 0, 0, 0,135, 0, 0, 0, 35, 0, 0, 0,130,
- 0, 0, 0,134, 0, 0, 0, 35, 0, 0, 0,137, 0, 0, 0,141, 0, 0, 0, 35, 0, 0, 0,140, 0, 0, 0,141, 0, 0, 0, 35,
- 0, 0, 0,136, 0, 0, 0,140, 0, 0, 0, 35, 0, 0, 0,139, 0, 0, 0,140, 0, 0, 0, 35, 0, 0, 0,135, 0, 0, 0,139,
- 0, 0, 0, 35, 0, 0, 0,138, 0, 0, 0,139, 0, 0, 0, 35, 0, 0, 0,134, 0, 0, 0,138, 0, 0, 0, 35, 0, 0, 0,141,
- 0, 0, 0,145, 0, 0, 0,163, 0, 0, 0,144, 0, 0, 0,145, 0, 0, 0, 35, 0, 0, 0,140, 0, 0, 0,144, 0, 0, 0, 35,
- 0, 0, 0,143, 0, 0, 0,144, 0, 0, 0, 35, 0, 0, 0,139, 0, 0, 0,143, 0, 0, 0, 35, 0, 0, 0,142, 0, 0, 0,143,
- 0, 0, 0, 35, 0, 0, 0,138, 0, 0, 0,142, 0, 0, 0, 35, 0, 0, 0,129, 0, 0, 0,145, 0, 0, 0, 35, 0, 0, 0,128,
- 0, 0, 0,143, 0, 0, 0, 35, 0, 0, 0,125, 0, 0, 0,130, 0, 0, 0, 35, 0, 0, 0,123, 0, 0, 0,134, 0, 0, 0, 35,
- 0, 0, 0,121, 0, 0, 0,138, 0, 0, 0, 35, 0, 0, 0,119, 0, 0, 0,142, 0, 0, 0, 35, 0, 0, 0,151, 0, 0, 0,166,
- 0, 0, 0, 35, 0, 0, 0,150, 0, 0, 0,167, 0, 0, 0, 35, 0, 0, 0,149, 0, 0, 0,168, 0, 0, 0, 35, 0, 0, 0,148,
- 0, 0, 0,169, 0, 0, 0, 35, 0, 0, 0,152, 0, 0, 0,154, 0, 0, 0,163, 0, 0, 0,148, 0, 0, 0,149, 0, 0, 0, 35,
- 0, 0, 0,150, 0, 0, 0,151, 0, 0, 0, 35, 0, 0, 0,157, 0, 0, 0,178, 0, 0, 0, 35, 0, 0, 0,156, 0, 0, 0,174,
- 0, 0, 0, 35, 0, 0, 0,155, 0, 0, 0,170, 0, 0, 0, 35, 0, 0, 0,154, 0, 0, 0,166, 0, 0, 0, 35, 0, 0, 0,154,
- 0, 0, 0,155, 0, 0, 0, 35, 0, 0, 0,155, 0, 0, 0,156, 0, 0, 0,163, 0, 0, 0,156, 0, 0, 0,157, 0, 0, 0, 35,
- 0, 0, 0,153, 0, 0, 0,157, 0, 0, 0,163, 0, 0, 0,158, 0, 0, 0,181, 0, 0, 0, 35, 0, 0, 0,159, 0, 0, 0,177,
- 0, 0, 0, 35, 0, 0, 0,160, 0, 0, 0,173, 0, 0, 0, 35, 0, 0, 0,161, 0, 0, 0,169, 0, 0, 0, 35, 0, 0, 0,158,
- 0, 0, 0,159, 0, 0, 0, 35, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0, 35, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0, 35,
- 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0, 35, 0, 0, 0,168, 0, 0, 0,169, 0, 0, 0, 35, 0, 0, 0,167, 0, 0, 0,168,
- 0, 0, 0, 35, 0, 0, 0,166, 0, 0, 0,167, 0, 0, 0, 35, 0, 0, 0,169, 0, 0, 0,173, 0, 0, 0, 35, 0, 0, 0,172,
- 0, 0, 0,173, 0, 0, 0, 35, 0, 0, 0,168, 0, 0, 0,172, 0, 0, 0, 35, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 35,
- 0, 0, 0,167, 0, 0, 0,171, 0, 0, 0, 35, 0, 0, 0,170, 0, 0, 0,171, 0, 0, 0, 35, 0, 0, 0,166, 0, 0, 0,170,
- 0, 0, 0, 35, 0, 0, 0,173, 0, 0, 0,177, 0, 0, 0, 35, 0, 0, 0,176, 0, 0, 0,177, 0, 0, 0, 35, 0, 0, 0,172,
- 0, 0, 0,176, 0, 0, 0, 35, 0, 0, 0,175, 0, 0, 0,176, 0, 0, 0, 35, 0, 0, 0,171, 0, 0, 0,175, 0, 0, 0, 35,
- 0, 0, 0,174, 0, 0, 0,175, 0, 0, 0, 35, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0, 35, 0, 0, 0,177, 0, 0, 0,181,
- 0, 0, 0, 35, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0, 35, 0, 0, 0,176, 0, 0, 0,180, 0, 0, 0, 35, 0, 0, 0,179,
- 0, 0, 0,180, 0, 0, 0, 35, 0, 0, 0,175, 0, 0, 0,179, 0, 0, 0, 35, 0, 0, 0,178, 0, 0, 0,179, 0, 0, 0, 35,
- 0, 0, 0,174, 0, 0, 0,178, 0, 0, 0, 35, 0, 0, 0,165, 0, 0, 0,181, 0, 0, 0, 35, 0, 0, 0,164, 0, 0, 0,180,
- 0, 0, 0, 35, 0, 0, 0,163, 0, 0, 0,179, 0, 0, 0, 35, 0, 0, 0,162, 0, 0, 0,178, 0, 0, 0, 35, 68, 65, 84, 65,
- 0, 0, 1, 44, 13, 65,119,144, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 40, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 7,161, 46, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7,161, 60, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,162,174, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 0, 3,162,174, 32,
+ 0, 0, 0, 55, 0, 0, 0,192, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9,
+ 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7,
+ 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34,
+ 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11,
+ 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 35,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 20,
+ 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34,
+ 0, 0, 0, 19, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22,
+ 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24,
+ 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 34,
+ 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 33,
+ 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 34,
+ 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 32,
+ 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 36,
+ 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39,
+ 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 44,
+ 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 39, 0, 0, 0, 34,
+ 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 42,
+ 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 70, 0, 0, 0, 34,
+ 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 63,
+ 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 48,
+ 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 34,
+ 0, 0, 0, 47, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 50,
+ 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 52,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 55, 0, 0, 0, 34,
+ 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61,
+ 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34,
+ 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60,
+ 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 66,
+ 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 34,
+ 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 69, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 72,
+ 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 64,
+ 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 25,
+ 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 34,
+ 0, 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 74,
+ 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 14,
+ 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 74, 0, 0, 0, 34,
+ 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 95,
+ 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 78,
+ 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34,
+ 0, 0, 0, 84, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,110,
+ 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84,
+ 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 34,
+ 0, 0, 0, 88, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87,
+ 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 92,
+ 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,109, 0, 0, 0, 34,
+ 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0,101,
+ 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 95,
+ 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34,
+ 0, 0, 0, 94, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105,
+ 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99,
+ 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34,
+ 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105,
+ 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103,
+ 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34,
+ 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108,
+ 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 66,
+ 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 34,
+ 0, 0, 0, 60, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 93,
+ 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 33,
+ 0, 0, 0, 90, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,164,240, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,184, 32,
+ 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,162,188, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,162,198, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3,212, 3,162,184, 32, 0, 0, 0, 54,
+ 0, 0, 0, 49, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36,
+ 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 17,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10,
+ 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 0,
+ 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 36,
+ 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 50,
+ 0, 0, 0, 25, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 28,
+ 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 26, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 0,
+ 0, 0, 0, 58, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90,
+ 0, 0, 0, 91, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 30, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
+ 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 51, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0,
+ 0, 0, 0, 57, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 50,
+ 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,110,
+ 0, 0, 0, 84, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 59,
+ 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 61,
+ 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 0,
+ 0, 0, 0, 70, 0, 0, 0, 53, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 64,
+ 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 95,
+ 0, 0, 0, 94, 0, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0,101, 0, 0, 0, 97, 0, 0, 0, 83,
+ 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 88,
+ 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0,
+ 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,109, 0, 0, 0,105,
+ 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106,
+ 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0,109,
+ 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 8,108,
+ 3,162,188, 32, 0, 0, 0, 65, 0, 0, 0, 49, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120, 61,104, 84,160,
+ 63, 3, 29, 0, 62, 82, 95, 26, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
+ 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242, 63, 0,188,190, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 61,104, 84,160, 63, 3, 29, 0,189,188,106,128, 62,186, 20,176, 61,104, 82,144, 62, 91,223,128, 62, 82, 95, 14,
+ 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,127, 63, 79, 65,242, 62, 82, 95, 26, 63, 41, 47,120,
+ 62,181, 84,122, 63, 3, 28,248, 63, 0,188,188, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 56,
+ 63,141,179,111, 63, 0,188,190, 63,117, 84,102, 63, 38,207, 52, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63, 3, 28,248, 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32,
+ 63, 0,188,185, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63, 79, 65,236, 63, 0,188,188,
+ 63, 41, 47,120, 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174, 63, 41, 47,116, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62,181, 84,122, 62, 91,224, 32, 62, 82, 94,138, 61,135, 43, 48, 62,181, 84, 61,189,169,104,176, 63, 0,188,185, 61,135, 44, 96,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 51,
+ 62, 91,224, 24, 63, 76,225,174, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236,
+ 63, 76,225,174, 63, 41, 47,116, 63,114,244, 42, 63, 3, 28,244, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 38,207, 51, 62, 91,224, 24, 63, 0,188,185, 61,135, 44, 96, 63, 38,207,248,189,169,109,144, 63, 76,226,112,
+ 61,135, 38, 64, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244,240, 62, 91,221, 4, 63,140,131,180, 62,186, 19,116,
+ 63,114,244, 42, 63, 3, 28,244, 63, 76,225,174, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122,
+ 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120,
+ 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122,
+ 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64,
+ 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
+ 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160,
+ 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113,
+ 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26,
+ 63,117, 84,102, 61,104, 84,200, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 64, 63, 3, 28,216,
+189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26,
+ 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 61,104, 84,200, 63, 79, 65,244,189,188,105, 96, 63, 41, 47,120,189,188,105, 96, 63, 41, 47,120, 61,104, 84,200, 63, 79, 65,242,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172,
+ 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173,
+ 63, 38,207, 56, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172,
+ 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102,
+ 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52,
+ 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111,
+ 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174,
+ 63,117, 84,102, 63, 76,225,174, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,207, 52, 63,141,179,111, 63, 0,188,190, 63,160,188,171, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,162, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 72, 63,140,131, 99,
+ 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76,
+ 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161,
+ 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236,
+ 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161,
+ 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,244, 63, 3, 28, 50, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96,
+ 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247,
+ 59, 93,211, 96, 63, 27,168,248, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,185,131,176, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63, 81,128,144,
+ 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96,
+ 62,203,162, 85, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,158,151,226,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,142, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96,
+ 63, 27,168,247, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,174,
+ 59, 93,211, 96, 63,158,151,227, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96,
+ 63,131,172, 24, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,251, 59, 93,211, 96, 62,203,162, 84,
+ 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,158,151,225, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,158,151,227, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,146, 59, 93,211, 96, 63, 27,168,250, 59, 93,211, 96, 63, 27,168,251,
+ 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 16,
+ 3,162,198, 32, 0, 0, 0, 59, 0, 0, 0,196,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,194,166,112, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,172, 96, 8,194,160,128, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 80,108, 97,110,101, 46, 48, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,167,176, 3,162,224, 32,
+ 3,162,228, 32, 0, 0, 0, 0, 3,162,202, 32, 3,162,214, 32, 0, 0, 0, 0, 3,162,238, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,167,224, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,169, 96,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,170,224, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0,192, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140, 63,127,255,214, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,167,176, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,167,224, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,202, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,176, 3,162,202, 32, 0, 0, 0, 58, 0, 0, 0,114, 63,215, 28,223,
+ 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6,
+ 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,138,163,172, 65, 6,115,181,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37,
+ 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127,
+ 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191,
+ 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,100, 43,136, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,100, 43,142, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,191,152, 28,253, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,191,152, 29, 9, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121, 65, 6,115,181, 64,100, 43,139, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192,161, 87,191, 65, 33, 87,148, 64,100, 43,133, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5,
+ 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,190, 36, 74, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,193, 6,115,182, 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183,
+ 64,215, 31,127,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,100, 43,154,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240,
+ 64, 87, 32, 2,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112,192,100, 43,147,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,192,100, 43,153,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112,191,152, 29, 18,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,191,152, 29, 30,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112, 63,152, 28,246,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 63,152, 28,234,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225,
+ 65, 60, 59,110, 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 64,100, 43,129,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,190, 36, 72,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151,192,190, 36, 72,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 64,100, 43,135,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151, 63,152, 29, 14,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,191,152, 29, 6,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151,192,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127,
+ 64,161, 86,217,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146,192,190, 36, 74,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146, 64,190, 35,242,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193,
+ 64, 87, 30, 62, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,190, 35,244,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112, 64,190, 35,239,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102,
+ 63,215, 33, 14, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 64,190, 35,238, 63,255,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244,
+ 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220,
+ 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,140,212,127, 64,161, 87,242, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201,
+ 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172,
+ 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18,
+ 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 60,152, 10,
+191,215, 33, 16, 64,190, 35,245, 0, 0,221, 42,123, 41, 2,255, 0, 0, 0, 0, 56, 60,152, 10,191,215, 33, 16,192,190, 36, 74,
+ 0, 0,221, 42,132,215, 2,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,169, 96, 0, 0, 1, 42, 0, 0, 0, 5,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 5,200, 7,161, 40, 32, 0, 0, 0, 54, 0, 0, 0, 74, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 45,
- 0, 0, 0, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 13,
- 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 13,
- 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 15,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17,
- 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0,
- 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 34,
- 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 25, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 24,
- 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 18,
- 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 28, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 26,
- 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 0,
- 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 39,
- 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 92,
- 0, 0, 0, 93, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 51,
- 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 55,
- 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 84, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0,111,
- 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 66, 0, 0, 0, 65,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 61, 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 68,
- 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 53, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 0,
- 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 97,
- 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,110,
- 0, 0, 0,101, 0, 0, 0, 97, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 95, 0, 0, 0, 96,
- 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104,
- 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0,
- 0, 0, 0,111, 0, 0, 0,109, 0, 0, 0,105, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103,
- 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 90,
- 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0,107,
- 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,119, 0, 0, 0,127, 0, 0, 0,118, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0,138,
- 0, 0, 0,142, 0, 0, 0,119, 0, 0, 0, 2, 0, 0, 0,124, 0, 0, 0,123, 0, 0, 0,121, 0, 0, 0,122, 0, 0, 0, 2,
- 0, 0, 0,125, 0, 0, 0,130, 0, 0, 0,134, 0, 0, 0,123, 0, 0, 0, 2, 0, 0, 0,117, 0, 0, 0,116, 0, 0, 0,125,
- 0, 0, 0,126, 0, 0, 0, 2, 0, 0, 0,112, 0, 0, 0,114, 0, 0, 0,133, 0, 0, 0,132, 0, 0, 0, 2, 0, 0, 0,113,
- 0, 0, 0,115, 0, 0, 0,131, 0, 0, 0,130, 0, 0, 0, 2, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0,135,
- 0, 0, 0, 2, 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0,141, 0, 0, 0,140, 0, 0, 0, 2, 0, 0, 0,134, 0, 0, 0,135,
- 0, 0, 0,139, 0, 0, 0,138, 0, 0, 0, 2, 0, 0, 0,139, 0, 0, 0,140, 0, 0, 0,144, 0, 0, 0,143, 0, 0, 0, 2,
- 0, 0, 0,129, 0, 0, 0,147, 0, 0, 0,144, 0, 0, 0,145, 0, 0, 0, 2, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,128,
- 0, 0, 0,146, 0, 0, 0, 2, 0, 0, 0,149, 0, 0, 0,148, 0, 0, 0,169, 0, 0, 0,168, 0, 0, 0, 2, 0, 0, 0,151,
- 0, 0, 0,150, 0, 0, 0,167, 0, 0, 0,166, 0, 0, 0, 2, 0, 0, 0,169, 0, 0, 0,161, 0, 0, 0,160, 0, 0, 0,173,
- 0, 0, 0, 2, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,172, 0, 0, 0,171, 0, 0, 0, 2, 0, 0, 0,154, 0, 0, 0,166,
- 0, 0, 0,170, 0, 0, 0,155, 0, 0, 0, 2, 0, 0, 0,172, 0, 0, 0,173, 0, 0, 0,177, 0, 0, 0,176, 0, 0, 0, 2,
- 0, 0, 0,170, 0, 0, 0,171, 0, 0, 0,175, 0, 0, 0,174, 0, 0, 0, 2, 0, 0, 0,177, 0, 0, 0,159, 0, 0, 0,158,
- 0, 0, 0,181, 0, 0, 0, 2, 0, 0, 0,175, 0, 0, 0,176, 0, 0, 0,180, 0, 0, 0,179, 0, 0, 0, 2, 0, 0, 0,156,
- 0, 0, 0,174, 0, 0, 0,178, 0, 0, 0,157, 0, 0, 0, 2, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0,165, 0, 0, 0,164,
- 0, 0, 0, 2, 0, 0, 0,178, 0, 0, 0,179, 0, 0, 0,163, 0, 0, 0,162, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 12,184,
- 7,161, 46, 32, 0, 0, 0, 65, 0, 0, 0, 74, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120, 61,104, 84,160,
+ 3,162,214, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 0, 3,162,214, 32,
+ 0, 0, 0, 55, 0, 0, 0,192, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9,
+ 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7,
+ 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34,
+ 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11,
+ 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 35,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 20,
+ 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34,
+ 0, 0, 0, 19, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22,
+ 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24,
+ 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 34,
+ 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 33,
+ 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 34,
+ 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 32,
+ 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 36,
+ 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39,
+ 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 44,
+ 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 39, 0, 0, 0, 34,
+ 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 42,
+ 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 70, 0, 0, 0, 34,
+ 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 63,
+ 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 48,
+ 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 34,
+ 0, 0, 0, 47, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 50,
+ 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 52,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 55, 0, 0, 0, 34,
+ 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61,
+ 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55,
+ 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34,
+ 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60,
+ 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 66,
+ 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 34,
+ 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 69, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 72,
+ 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 64,
+ 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 25,
+ 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 34,
+ 0, 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 74,
+ 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 14,
+ 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 74, 0, 0, 0, 34,
+ 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 95,
+ 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 78,
+ 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34,
+ 0, 0, 0, 84, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,110,
+ 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84,
+ 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 34,
+ 0, 0, 0, 88, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87,
+ 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 92,
+ 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,109, 0, 0, 0, 34,
+ 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0,101,
+ 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 95,
+ 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34,
+ 0, 0, 0, 94, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105,
+ 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99,
+ 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34,
+ 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105,
+ 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103,
+ 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34,
+ 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108,
+ 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 66,
+ 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 34,
+ 0, 0, 0, 60, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 93,
+ 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 33,
+ 0, 0, 0, 90, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,170,224, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,224, 32,
+ 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3,162,228, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,162,238, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3,212, 3,162,224, 32, 0, 0, 0, 54,
+ 0, 0, 0, 49, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36,
+ 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6,
+ 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 17,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10,
+ 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 0,
+ 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 36,
+ 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 50,
+ 0, 0, 0, 25, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 28,
+ 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 26, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 0,
+ 0, 0, 0, 58, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 27,
+ 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90,
+ 0, 0, 0, 91, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 30, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
+ 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 51, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0,
+ 0, 0, 0, 57, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 50,
+ 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,110,
+ 0, 0, 0, 84, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 59,
+ 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 61,
+ 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 0,
+ 0, 0, 0, 70, 0, 0, 0, 53, 0, 0, 0, 49, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 64,
+ 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 95,
+ 0, 0, 0, 94, 0, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0,101, 0, 0, 0, 97, 0, 0, 0, 83,
+ 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 88,
+ 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0,
+ 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,109, 0, 0, 0,105,
+ 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106,
+ 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0,109,
+ 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 8,108,
+ 3,162,228, 32, 0, 0, 0, 65, 0, 0, 0, 49, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120, 61,104, 84,160,
63, 3, 29, 0, 62, 82, 95, 26, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
62, 82, 95, 26, 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242, 63, 0,188,190, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
0, 0, 0, 0, 61,104, 84,160, 63, 3, 29, 0,189,188,106,128, 62,186, 20,176, 61,104, 82,144, 62, 91,223,128, 62, 82, 95, 14,
@@ -7628,30 +9425,651 @@ char datatoc_preview_blend[]= {
59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
63,158,151,225, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,158,151,227, 59, 93,211, 96,
0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,146, 59, 93,211, 96, 63, 27,168,250, 59, 93,211, 96, 63, 27,168,251,
- 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210,
- 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,244, 63, 3, 28, 50, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99,
- 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76,
- 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99,
- 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,162, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 72, 63,140,131, 99, 63, 41, 47, 76,
- 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,190,
- 63,160,188,171, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102, 63, 76,225,174, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52,
- 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111,
- 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44,
- 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111,
- 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188,
- 63,160,188,173, 63, 38,207, 56, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0,
- 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102,
- 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,200, 63, 79, 65,244,189,188,105, 96,
- 63, 41, 47,120,189,188,105, 96, 63, 41, 47,120, 61,104, 84,200, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 16,
+ 3,162,238, 32, 0, 0, 0, 59, 0, 0, 0,196,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,194,172, 96, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,178, 80, 8,194,166,112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 80,108, 97,110,101, 46, 48, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,173,160, 3,163, 8, 32,
+ 3,163, 14, 32, 0, 0, 0, 0, 3,162,242, 32, 3,162,254, 32, 0, 0, 0, 0, 3,163, 24, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,173,208, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,175, 80,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,176,208, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0,198, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140, 63,127,255,214, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,173,160, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,173,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,242, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,224, 3,162,242, 32, 0, 0, 0, 58, 0, 0, 0,116, 63,215, 28,223,
+ 65, 87, 31, 77, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144, 64,190, 35,242,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6,
+ 65, 6,115,182, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179, 64,190, 35,250,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,138,163,172, 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37,
+ 64,215, 31,175, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244, 64,190, 35,250,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127,
+ 64,161, 87,242, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113, 64,190, 35,250,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191,
+ 64, 87, 32,107, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113, 64,190, 35,239, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 64,190, 35,238,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 64,190, 35,238, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102,
+ 63,215, 33, 14, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112, 64,190, 35,239,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,190, 35,244,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4,
+ 63,215, 29,150, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62, 64,190, 35,247,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146, 64,190, 35,242, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159,
+ 64,215, 30,146,192,190, 36, 74, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,
+184, 41, 3,226,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,100, 43,135,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,191,152, 29, 6,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 63,152, 29, 14,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 64,100, 43,135,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,190, 36, 72,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 64,100, 43,129,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225, 65, 60, 59,110, 64,100, 43,129,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 63,152, 28,234,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 63,152, 28,246,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,191,152, 29, 30,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,191,152, 29, 18,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,192,100, 43,153,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,100, 43,147,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33,222,
+ 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,100, 43,154,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,182,
+ 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,190, 36, 78,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147,192,190, 36, 74, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,190, 36, 72,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 5, 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,191,
+ 65, 33, 87,148, 64,100, 43,133, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121, 65, 6,115,181, 64,100, 43,139,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147, 63,152, 29, 0, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 63,152, 29, 12,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147,191,152, 29, 9, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,191,152, 28,253,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147,192,100, 43,142, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,100, 43,136,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220,
+ 64,161, 87,240,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,140,212,127, 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201,
+ 64,215, 31,172,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172,
+ 65, 6,115,181,192,190, 36, 71, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18,
+ 65, 33, 87,147,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 63,215, 28,223, 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,175, 80, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,162,254, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 72, 3,162,254, 32, 0, 0, 0, 55, 0, 0, 0,198, 0, 0, 0, 21, 0, 0, 0, 82,
+ 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 18,
+ 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 53, 0, 0, 0, 34,
+ 0, 0, 0, 28, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 56,
+ 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34,
+ 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 8,
+ 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6,
+ 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 34,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 12,
+ 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 6,
+ 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 34,
+ 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10,
+ 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 21, 0, 0, 0, 34,
+ 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 18,
+ 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 18,
+ 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 24, 0, 0, 0, 34,
+ 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 28,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 29, 0, 0, 0, 34,
+ 0, 0, 0, 6, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35,
+ 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 23,
+ 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 33, 0, 0, 0, 34,
+ 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 98,
+ 0, 0, 0, 34, 0, 0, 0, 39, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 37,
+ 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 41, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 50, 0, 0, 0, 34,
+ 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 41,
+ 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 68,
+ 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 86, 0, 0, 0, 34,
+ 0, 0, 0, 56, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,114,
+ 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 52,
+ 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,114, 0, 0, 0, 34,
+ 0, 0, 0, 42, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43,
+ 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 44,
+ 0, 0, 0, 46, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34,
+ 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 56,
+ 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 56,
+ 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34,
+ 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 58,
+ 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 63,
+ 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 34,
+ 0, 0, 0, 58, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61,
+ 0, 0, 0, 34, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 63,
+ 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 34,
+ 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 68,
+ 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 46,
+ 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0, 34,
+ 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0,102,
+ 0, 0, 0, 34, 0, 0, 0, 72, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 74,
+ 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 75, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 0, 85, 0, 0, 0, 34,
+ 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 77,
+ 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 81,
+ 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,112, 0, 0, 0, 34,
+ 0, 0, 0, 78, 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 85,
+ 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 85,
+ 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 88, 0, 0, 0, 34,
+ 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87,
+ 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 92,
+ 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 34,
+ 0, 0, 0, 87, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 90,
+ 0, 0, 0, 34, 0, 0, 0, 93, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 92,
+ 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 34,
+ 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 97,
+ 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 78,
+ 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34,
+ 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103,
+ 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105,
+ 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, 34,
+ 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,107,
+ 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,109,
+ 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,112, 0, 0, 0, 34,
+ 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,107,
+ 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0,112,
+ 0, 0, 0,113, 0, 0, 0, 34, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0, 34,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,176,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 8, 32, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 14, 32, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 24, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3,252, 3,163, 8, 32, 0, 0, 0, 54, 0, 0, 0, 51, 0, 0, 0, 18,
+ 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 12,
+ 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12,
+ 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 14,
+ 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 29, 0, 0, 0, 14, 0, 0, 0, 0,
+ 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0,114, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 42,
+ 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 49,
+ 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 53, 0, 0, 0, 48,
+ 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56,
+ 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 57, 0, 0, 0, 0,
+ 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 68,
+ 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0,115,
+ 0, 0, 0, 51, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 85,
+ 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21,
+ 0, 0, 0, 82, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 88, 0, 0, 0, 0,
+ 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 75, 0, 0, 0, 74,
+ 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 97, 0, 0, 0, 96,
+ 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 73,
+ 0, 0, 0, 77, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 0,
+ 0, 0, 0, 78, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 50,
+ 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 39, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 98,
+ 0, 0, 0, 72, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101,
+ 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,109,
+ 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0,
+ 0, 0, 0,106, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0,112, 0, 0, 0,108,
+ 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,110, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0,113,
+ 0, 0, 0,115, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0,112,
+ 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 77, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 8,196,
+ 3,163, 14, 32, 0, 0, 0, 65, 0, 0, 0, 51, 63, 27,168,250, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 62,203,162, 84,
+ 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21, 59, 93,211, 96,
+ 63, 81,128,146, 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,225,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,149, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96,
+ 63, 27,168,246, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227,
+ 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,246, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96,
+ 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 24, 59, 93,211, 96, 63, 81,128,142,
+ 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,185,131,174, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 27,168,247,
+ 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96,
+ 63,131,172, 21, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 63, 27,168,248,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96,
+ 63, 81,128,144, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226,
+ 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236,
+ 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99,
+ 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99,
+ 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 72,
+ 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,174,
+ 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173,
+ 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44,
+ 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111,
+ 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188,
+ 63,160,188,173, 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172,
+ 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,
+190,118,127, 56, 63, 3, 28,220,190,118,127, 56, 63, 3, 28,220,189,188,105, 96, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,200, 63, 79, 65,244, 61,104, 84,200, 63, 79, 65,242, 62, 82, 95, 26,
+ 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,160,188,171, 62,181, 84,122, 63,141,179,113,
+ 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,200,
+ 63, 79, 65,242,189,188,105, 96, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102,
+ 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64,
+ 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122,
+ 63,141,179,113, 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,
+189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122,
+ 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,
+190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26,
+ 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173,
+ 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131,180, 62,186, 19,116, 63,159,140,244,
+ 63, 3, 28, 50, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 76,225,174, 62,186, 21, 0, 63, 38,207, 51, 62, 91,224, 24, 63, 76,226,112, 61,135, 38, 64, 63,114,244,240, 62, 91,221, 4,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185, 61,135, 44, 96, 62,181, 84, 61,189,169,104,176, 63, 0,189, 93,
+190,109, 1, 80, 63, 38,207,248,189,169,109,144, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63, 41, 47,116,
+ 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174, 62,186, 21, 0, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 0,188,185, 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185, 61,135, 44, 96, 63, 38,207, 51,
+ 62, 91,224, 24, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63, 79, 65,236,
+ 63, 76,225,174, 63, 41, 47,116, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188,
+ 63, 41, 47,120, 62,181, 84,122, 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 52, 63, 3, 28,248, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 14, 62,186, 21, 0, 61,104, 82,144, 62, 91,223,128, 62, 82, 94,138, 61,135, 43, 48,
+ 62,181, 84,122, 62, 91,224, 32, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 62,181, 84,127,
+ 63, 79, 65,242, 63, 0,188,188, 63, 41, 47,120, 63, 38,207, 52, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62, 82, 95, 26, 63, 41, 47,120, 61,104, 84,160, 63, 3, 29, 0, 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122, 63, 3, 28,248,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 63, 38,207, 56, 63,141,179,111, 63, 0,188,188,
+ 63,160,188,173, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102,
+ 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63, 41, 47,120, 62,181, 84,127, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,189,188,106,128, 62,186, 20,176, 61,104, 84,160,
+ 63, 3, 29, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 48, 3,163, 24, 32, 0, 0, 0, 59,
+ 0, 0, 0,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,178, 80,
+ 0, 0, 0, 52, 0, 0, 0, 1, 8,194,184, 64, 8,194,172, 96, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46,
+ 48, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,179,144, 3,163, 50, 32, 3,163, 56, 32, 0, 0, 0, 0,
+ 3,163, 28, 32, 3,163, 40, 32, 0, 0, 0, 0, 3,163, 66, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,179,192,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,181, 64, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,182,192, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0,198, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 76,204,213,
+ 63, 76,204,255,182,104, 0, 0, 63,128, 0, 30, 63,128, 0,140, 63,127,255,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,194,179,144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,179,192, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 28, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 10,224, 3,163, 28, 32, 0, 0, 0, 58, 0, 0, 0,116, 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18,
+ 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172,
+ 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201,
+ 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127, 64,161, 87,242, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220,
+ 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,142,158,222, 63,215, 33,239, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,161, 87,192,
+ 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 64,190, 35,238, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 64,190, 35,238, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,191,215, 33,222,
+ 56,135,190,183, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43, 64,190, 35,244, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 64,190, 35,239,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,190, 35,244,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,
+184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159,
+ 64,215, 30,146, 64,190, 35,242, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146,192,190, 36, 74,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4,
+ 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 56, 53,234, 98,191,215, 33, 38,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43,
+ 64,215, 31,117,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,191,152, 28,250,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,191,152, 29, 6,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 63,152, 29, 14,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43,
+ 64,215, 31,117, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,100, 43,141,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 64,100, 43,135,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,190, 36, 72,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217,
+ 65, 60, 59,112,192,190, 36, 77,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,190, 36, 72,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 64,100, 43,129,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,225, 65, 60, 59,110, 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199,
+ 65, 87, 31, 78, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,100, 43,141,
+ 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 63,152, 28,234,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 63,152, 28,246,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199,
+ 65, 87, 31, 78, 63,152, 29, 2,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 63,152, 29, 14,
+ 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,191,152, 29, 30,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,191,152, 29, 18,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199,
+ 65, 87, 31, 78,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,191,152, 28,250,
+ 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,192,100, 43,153,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,100, 43,147,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199,
+ 65, 87, 31, 78,192,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43,192,100, 43,135,
+ 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102,
+ 63,215, 33, 14,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33,222, 56,135,190,183,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,100, 43,154, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183,
+ 64,215, 31,127, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,182, 64,215, 31,128, 64,100, 43,127,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,190, 36, 78, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,190, 36, 74,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5,
+ 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,191, 65, 33, 87,148, 64,100, 43,133,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121, 65, 6,115,181, 64,100, 43,139, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,191,152, 29, 9,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,191,152, 28,253, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7,
+ 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,100, 43,142,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180,192,100, 43,136, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191,
+ 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127,
+ 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172,192,190, 36, 71,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37,
+ 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172, 65, 6,115,181,192,190, 36, 71,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6,
+ 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 63,215, 28,223,
+ 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,181, 64,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 9, 72, 3,163, 40, 32, 0, 0, 0, 55, 0, 0, 0,198, 0, 0, 0, 21, 0, 0, 0, 82, 0, 0, 0, 34, 0, 0, 0, 20,
+ 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 85, 0, 0, 0, 34,
+ 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 54,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 29,
+ 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9,
+ 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13,
+ 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7,
+ 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34,
+ 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11,
+ 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34,
+ 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 20,
+ 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 22,
+ 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34,
+ 0, 0, 0, 17, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 25,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 29, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 28,
+ 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 34,
+ 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 32,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 31, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 39,
+ 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 37, 0, 0, 0,101, 0, 0, 0, 34,
+ 0, 0, 0, 41, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39,
+ 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 51,
+ 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 34,
+ 0, 0, 0, 64, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 82,
+ 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 65,
+ 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0,115, 0, 0, 0, 34,
+ 0, 0, 0, 51, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0,114, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 50,
+ 0, 0, 0, 34, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 42,
+ 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 34,
+ 0, 0, 0, 47, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 48,
+ 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 54,
+ 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34,
+ 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59,
+ 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 53,
+ 0, 0, 0, 57, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 34,
+ 0, 0, 0, 59, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 62,
+ 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 64,
+ 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 63, 0, 0, 0, 67, 0, 0, 0, 34,
+ 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 34, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, 66,
+ 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 51,
+ 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 34,
+ 0, 0, 0, 44, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 42, 0, 0, 0, 65, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0,110,
+ 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 72,
+ 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 34,
+ 0, 0, 0, 75, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 76, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 77, 0, 0, 0, 81,
+ 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 74,
+ 0, 0, 0, 75, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0,110, 0, 0, 0, 34,
+ 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0,113,
+ 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 34, 0, 0, 0, 83,
+ 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 34,
+ 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0, 88, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 88,
+ 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 82,
+ 0, 0, 0, 86, 0, 0, 0, 34, 0, 0, 0, 89, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 34,
+ 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0, 91,
+ 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 93,
+ 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0, 96, 0, 0, 0, 34,
+ 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95,
+ 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 80,
+ 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 94, 0, 0, 0, 34,
+ 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,104,
+ 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0, 98,
+ 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105, 0, 0, 0,114, 0, 0, 0, 34,
+ 0, 0, 0,105, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108,
+ 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102,
+ 0, 0, 0,103, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,113, 0, 0, 0, 34,
+ 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,108, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108,
+ 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,106,
+ 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 34, 0, 0, 0,112, 0, 0, 0,113, 0, 0, 0, 34,
+ 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0, 34, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,182,192, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 50, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 56, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 66, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 3,252, 3,163, 50, 32, 0, 0, 0, 54, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 26,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 25,
+ 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 17,
+ 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 17,
+ 0, 0, 0, 23, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 33,
+ 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 29, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 65,
+ 0, 0, 0,114, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 0,
+ 0, 0, 0, 46, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 46,
+ 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 53, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 28,
+ 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 59,
+ 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 59,
+ 0, 0, 0, 63, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 67, 0, 0, 0, 0,
+ 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0, 51, 0, 0, 0, 66,
+ 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 76, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 19, 0, 0, 0, 84, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 82, 0, 0, 0, 56,
+ 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 89, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 83,
+ 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 75, 0, 0, 0, 74, 0, 0, 0, 93, 0, 0, 0, 0,
+ 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 92, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 86, 0, 0, 0, 90,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 90,
+ 0, 0, 0, 91, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 73, 0, 0, 0, 77, 0, 0, 0, 81,
+ 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 52,
+ 0, 0, 0, 68, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 50, 0, 0, 0,101, 0, 0, 0, 0,
+ 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 39, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 72, 0, 0, 0, 41,
+ 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,103,
+ 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,109, 0, 0, 0,105, 0, 0, 0,114,
+ 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 70,
+ 0, 0, 0, 71, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0,112, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 0,
+ 0, 0, 0,111, 0, 0, 0,110, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0,115, 0, 0, 0, 52,
+ 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 81,
+ 0, 0, 0, 77, 0, 0, 0, 69, 0, 0, 0,110, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 8,196, 3,163, 56, 32, 0, 0, 0, 65,
+ 0, 0, 0, 51, 63, 27,168,250, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 63, 27,168,251,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21, 59, 93,211, 96, 63, 81,128,146, 59, 93,211, 96,
+ 63, 81,128,149, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227,
+ 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,225, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,149, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96,
+ 63, 81,128,142, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,227, 59, 93,211, 96, 63,131,172, 22,
+ 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 27,168,246, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 24, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 63, 81,128,144,
+ 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,174, 59, 93,211, 96,
+ 63,158,151,226, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 63,185,131,176, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 81,128,144,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96,
+ 63,131,172, 22, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247,
+ 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 63, 27,168,248, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96,
+ 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,185,131,176,
+ 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99,
+ 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76,
+ 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161,
+ 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 72, 63,114,244, 44, 63, 79, 65,236,
+ 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174,
+ 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,174, 63,117, 84,102, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173,
+ 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174,
+ 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188,
+ 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236,
+ 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52,
+ 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,
+190,118,127, 56, 63, 3, 28,220,189,188,105, 96, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26,
+ 63,117, 84,102, 61,104, 84,200, 63, 79, 65,244, 61,104, 84,200, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,160,188,171, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113,
+ 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,200, 63, 79, 65,242,189,188,105, 96,
+ 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,190,118,127, 56, 63, 3, 28,220,190,118,127, 64,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64,
63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102,
- 61,104, 84,200, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
+ 61,104, 84,160, 63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188,
63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,
189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122,
@@ -7659,11 +10077,26 @@ char datatoc_preview_blend[]= {
60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128, 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,
189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160,
63, 79, 65,242, 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
- 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173,
- 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128, 63, 41, 47,120,189,188,105,128,
- 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113,
- 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 4,160, 7,161, 60, 32, 0, 0, 0, 59, 0, 0, 1, 40,255,255,255,255,255,255,255,255,
+ 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131,180, 62,186, 19,116, 63,159,140,244, 63, 3, 28, 50, 63,140,131, 99,
+ 63, 41, 47, 76, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 62,186, 21, 0,
+ 63, 38,207, 51, 62, 91,224, 24, 63, 76,226,112, 61,135, 38, 64, 63,114,244,240, 62, 91,221, 4, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 0,188,185, 61,135, 44, 96, 62,181, 84, 61,189,169,104,176, 63, 0,189, 93,190,109, 1, 80, 63, 38,207,248,
+189,169,109,144, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63, 41, 47,116, 63, 38,207, 52, 63, 3, 28,248,
+ 63, 76,225,174, 62,186, 21, 0, 63,114,244, 42, 63, 3, 28,244, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,185,
+ 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185, 61,135, 44, 96, 63, 38,207, 51, 62, 91,224, 24, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52, 63, 79, 65,236, 63, 76,225,174, 63, 41, 47,116,
+ 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63, 41, 47,120, 62,181, 84,122,
+ 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 52, 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62, 82, 95, 14, 62,186, 21, 0, 61,104, 82,144, 62, 91,223,128, 62, 82, 94,138, 61,135, 43, 48, 62,181, 84,122, 62, 91,224, 32,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242, 63, 0,188,188,
+ 63, 41, 47,120, 63, 38,207, 52, 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63, 41, 47,120,
+ 61,104, 84,160, 63, 3, 29, 0, 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122, 63, 3, 28,248, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 0,188,190, 63,117, 84,102, 63, 38,207, 56, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 62,181, 84,122,
+ 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242,
+ 62, 82, 95, 26, 63, 41, 47,120, 62,181, 84,127, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128,
+ 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,189,188,106,128, 62,186, 20,176, 61,104, 84,160, 63, 3, 29, 0, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 48, 3,163, 66, 32, 0, 0, 0, 59, 0, 0, 0,204,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
@@ -7689,6 +10122,309 @@ char datatoc_preview_blend[]= {
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,184, 64, 0, 0, 0, 52, 0, 0, 0, 1,
+ 8,194,190, 48, 8,194,178, 80, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 49, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,185,128, 3,163, 92, 32, 3,163, 96, 32, 0, 0, 0, 0, 3,163, 70, 32, 3,163, 82, 32,
+ 0, 0, 0, 0, 3,163,106, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,185,176, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,187, 48, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,188,176, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,
+ 0, 0, 0,192, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 76,204,213, 63, 76,204,255,182,104, 0, 0,
+ 63,128, 0, 30, 63,128, 0,140, 63,127,255,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,194,185,128, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,185,176, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,163, 70, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 10,176,
+ 3,163, 70, 32, 0, 0, 0, 58, 0, 0, 0,114, 63,215, 28,223, 65, 87, 31, 77,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 64,161, 86,175, 65, 33, 87,144,192,190, 36, 74,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,133,229,243,
+ 65, 60, 59,112,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147,192,190, 36, 69,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,161, 87,194, 64,215, 31,179,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,208,
+ 65, 33, 87,146,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172, 65, 6,115,181,192,190, 36, 71,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 87, 32, 13, 64,161, 87,244,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,226,
+ 65, 6,115,179,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172,192,190, 36, 71,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127, 64,161, 87,242,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33, 44, 64, 87, 32,113,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,173,
+ 64,215, 31,170,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240,192,190, 36, 71,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107,192,190, 36, 69, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,142,158,222, 63,215, 33,239,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180,192,100, 43,136, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,100, 43,142,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,100, 43,148, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,100, 43,154, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180,191,152, 28,253, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,191,152, 29, 9,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,191,152, 29, 20, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180, 63,152, 29, 12, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 63,152, 29, 0,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 63,152, 28,244, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81, 63,152, 28,232, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,121,
+ 65, 6,115,181, 64,100, 43,139, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,161, 87,191, 65, 33, 87,148, 64,100, 43,133,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192, 87, 32, 5, 65, 60, 59,114, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,191,215, 33, 32, 65, 87, 31, 81, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,122,
+ 65, 6,115,180,192,190, 36, 72, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147,192,190, 36, 74,
+ 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113,192,190, 36, 77, 63,255,192, 1, 90,129, 0,255,
+ 0, 0, 0, 0,191,215, 33, 36, 65, 87, 31, 81,192,190, 36, 78, 63,255,192, 1, 90,129, 0,255, 0, 0, 0, 0,193, 6,115,182,
+ 64,215, 31,128, 64,100, 43,127, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127, 63,152, 28,232,
+ 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,191,152, 29, 32, 90,129,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0,193, 6,115,183, 64,215, 31,127,192,100, 43,154, 90,129,165,127, 0, 0, 2,255, 0, 0, 0, 0,191,215, 33,222,
+ 56,135,190,183,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14,192,190, 36, 72,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192,215, 31,170, 64,161, 87,190,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43,192,100, 43,135, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,192,100, 43,141,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,100, 43,147,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,192,100, 43,153,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43,191,152, 28,250, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78,191,152, 29, 6,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,191,152, 29, 18,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146,191,152, 29, 30,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43, 63,152, 29, 14, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 63,152, 29, 2,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 63,152, 28,246,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 63,152, 28,234,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43, 64,100, 43,141, 0, 0,128, 2, 0, 0, 2,255, 0, 0, 0, 0, 63,215, 28,199, 65, 87, 31, 78, 64,100, 43,135,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,225, 65, 60, 59,110, 64,100, 43,129,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 64,161, 86,177, 65, 33, 87,146, 64,100, 43,129,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,184,136, 91,213,
+ 65,114, 3, 43,192,190, 36, 72,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112,192,190, 36, 77,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,190, 36, 72,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 64,100, 43,135,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151, 64,100, 43,141,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117, 63,152, 29, 2,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 63,152, 29, 14,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,191,152, 29, 6,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150,
+ 65, 6,115,151,191,152, 28,250,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115, 43, 64,215, 31,117,192,100, 43,141,
+165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151,192,100, 43,135,165,127,165,127, 0, 0, 2,255,
+ 0, 0, 0, 0, 63,215, 33, 15,184, 41, 3,226,192,190, 36, 67, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 32, 4,
+ 63,215, 29,150,192,190, 36, 68, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62,192,190, 36, 69,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217,192,190, 36, 72, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 65, 6,115,159, 64,215, 30,146,192,190, 36, 74,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 65, 6,115,159,
+ 64,215, 30,146, 64,190, 35,242,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0, 64,215, 31,127, 64,161, 86,217, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 87,193, 64, 87, 30, 62, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 32, 4, 63,215, 29,150, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 33, 15,
+184, 41, 3,226, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,215, 30,150, 65, 6,115,151, 64,190, 35,244,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 64, 87, 29,217, 65, 60, 59,112, 64,190, 35,239,192, 1,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0,184,136, 91,213, 65,114, 3, 43, 64,190, 35,244,165,127,165,127, 0, 0, 2,255, 0, 0, 0, 0,192,215, 31,170,
+ 64,161, 87,190, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,240, 64, 87, 32, 2, 64,190, 35,244,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32,102, 63,215, 33, 14, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,215, 33,222, 56,135,190,183, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 36,
+ 65, 87, 31, 81, 64,190, 35,238, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192, 87, 32, 7, 65, 60, 59,113, 64,190, 35,239,
+ 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,192,161, 87,192, 65, 33, 87,147, 64,190, 35,242, 63,255,192, 1, 90,129, 2,255,
+ 0, 0, 0, 0,192,215, 31,122, 65, 6,115,180, 64,190, 35,244, 63,255,192, 1, 90,129, 2,255, 0, 0, 0, 0,184,142,158,222,
+ 63,215, 33,239, 64,190, 35,248, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,191, 64, 87, 32,107, 64,190, 35,247,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 87, 29,220, 64,161, 87,240, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64,161, 86,173, 64,215, 31,170, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 44,
+ 64, 87, 32,113, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,140,212,127, 64,161, 87,242, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,215, 28,201, 64,215, 31,172, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 87, 29,226, 65, 6,115,179, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 13,
+ 64,161, 87,244, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 37, 64,215, 31,175, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,184,138,163,172, 65, 6,115,181, 64,190, 35,245, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 63,215, 28,208, 65, 33, 87,146, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,161, 87,194,
+ 64,215, 31,179, 64,190, 35,250, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 87, 32, 6, 65, 6,115,182, 64,190, 35,248,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,215, 33, 18, 65, 33, 87,147, 64,190, 35,247, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,184,133,229,243, 65, 60, 59,112, 64,190, 35,244, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,161, 86,175,
+ 65, 33, 87,144, 64,190, 35,242,192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 63,215, 28,223, 65, 87, 31, 77, 64,190, 35,242,
+192, 1,192, 1, 90,129, 2,255, 0, 0, 0, 0, 56, 60,152, 10,191,215, 33, 16, 64,190, 35,245, 0, 0,221, 42,123, 41, 2,255,
+ 0, 0, 0, 0, 56, 60,152, 10,191,215, 33, 16,192,190, 36, 74, 0, 0,221, 42,132,215, 2,255, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,187, 48, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 82, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 9, 0, 3,163, 82, 32, 0, 0, 0, 55, 0, 0, 0,192, 0, 0, 0, 4, 0, 0, 0, 5,
+ 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 7,
+ 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9,
+ 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 34,
+ 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11,
+ 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 13,
+ 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 34,
+ 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 20,
+ 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 24,
+ 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 18,
+ 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 29, 0, 0, 0, 34,
+ 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 24,
+ 0, 0, 0, 34, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 22,
+ 0, 0, 0, 26, 0, 0, 0, 34, 0, 0, 0, 29, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 34,
+ 0, 0, 0, 28, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 31,
+ 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 34, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 34,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 37,
+ 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 34,
+ 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 38,
+ 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 39, 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 18,
+ 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 42, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 34,
+ 0, 0, 0, 9, 0, 0, 0, 44, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 45, 0, 0, 0, 34, 0, 0, 0, 49, 0, 0, 0, 72,
+ 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 61,
+ 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 62, 0, 0, 0, 34,
+ 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 48, 0, 0, 0, 52,
+ 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 34, 0, 0, 0, 47, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 46,
+ 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 53, 0, 0, 0, 57, 0, 0, 0, 34,
+ 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 34, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 52,
+ 0, 0, 0, 34, 0, 0, 0, 51, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 34, 0, 0, 0, 50,
+ 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 57, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 34,
+ 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 59,
+ 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 58, 0, 0, 0, 34, 0, 0, 0, 60,
+ 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 34,
+ 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0, 34, 0, 0, 0, 67, 0, 0, 0, 68,
+ 0, 0, 0, 34, 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 34, 0, 0, 0, 67,
+ 0, 0, 0, 69, 0, 0, 0, 34, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 34,
+ 0, 0, 0, 64, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 34, 0, 0, 0, 1,
+ 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 58, 0, 0, 0, 34,
+ 0, 0, 0, 29, 0, 0, 0, 54, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 50, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 46,
+ 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 34, 0, 0, 0, 75,
+ 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 71, 0, 0, 0, 77, 0, 0, 0, 34,
+ 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 75,
+ 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 34, 0, 0, 0, 82,
+ 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 80, 0, 0, 0, 96, 0, 0, 0, 34,
+ 0, 0, 0, 79, 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 81, 0, 0, 0, 82,
+ 0, 0, 0, 34, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0, 83,
+ 0, 0, 0, 97, 0, 0, 0, 34, 0, 0, 0, 83, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 34,
+ 0, 0, 0, 84, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 84, 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0,106,
+ 0, 0, 0, 34, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0, 89,
+ 0, 0, 0, 94, 0, 0, 0, 34, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 34, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 34,
+ 0, 0, 0, 93, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0, 92, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0, 91, 0, 0, 0,108,
+ 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 92,
+ 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 97, 0, 0, 0,101, 0, 0, 0, 34, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 34,
+ 0, 0, 0, 96, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 34, 0, 0, 0, 95, 0, 0, 0, 99,
+ 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 34, 0, 0, 0, 94, 0, 0, 0, 98, 0, 0, 0, 34, 0, 0, 0,101,
+ 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0,101, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 34,
+ 0, 0, 0,100, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 34, 0, 0, 0, 99, 0, 0, 0,103,
+ 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 34, 0, 0, 0, 98, 0, 0, 0,102, 0, 0, 0, 34, 0, 0, 0,105,
+ 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, 34, 0, 0, 0,104, 0, 0, 0,108, 0, 0, 0, 34,
+ 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 34, 0, 0, 0,103, 0, 0, 0,107, 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,103,
+ 0, 0, 0, 34, 0, 0, 0,102, 0, 0, 0,106, 0, 0, 0, 34, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0,108,
+ 0, 0, 0,109, 0, 0, 0, 34, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 34, 0, 0, 0,106, 0, 0, 0,107, 0, 0, 0, 34,
+ 0, 0, 0, 65, 0, 0, 0, 78, 0, 0, 0, 34, 0, 0, 0, 66, 0, 0, 0, 83, 0, 0, 0, 34, 0, 0, 0, 58, 0, 0, 0, 85,
+ 0, 0, 0, 34, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 84, 0, 0, 0, 34, 0, 0, 0, 61,
+ 0, 0, 0,110, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 93, 0, 0, 0, 34, 0, 0, 0, 31, 0, 0, 0, 92, 0, 0, 0, 34,
+ 0, 0, 0, 32, 0, 0, 0, 91, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 90, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,188,176, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 92, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163, 96, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,106, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 3,212, 3,163, 92, 32, 0, 0, 0, 54, 0, 0, 0, 49, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 5,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9,
+ 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 16,
+ 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 18,
+ 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 25, 0, 0, 0, 21, 0, 0, 0, 46, 0, 0, 0, 0,
+ 0, 0, 0, 24, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 41,
+ 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 28, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 27,
+ 0, 0, 0, 26, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 54,
+ 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 38,
+ 0, 0, 0, 39, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 63,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 52,
+ 0, 0, 0, 51, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 53,
+ 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 59,
+ 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 84, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 0,
+ 0, 0, 0,111, 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 83, 0, 0, 0, 66,
+ 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 61, 0, 0, 0, 57, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67,
+ 0, 0, 0, 68, 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 53, 0, 0, 0, 49, 0, 0, 0, 72,
+ 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 64, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 79,
+ 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 94, 0, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 0,
+ 0, 0, 0,110, 0, 0, 0,101, 0, 0, 0, 97, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 99, 0, 0, 0, 95,
+ 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0,105,
+ 0, 0, 0,104, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0,102, 0, 0, 0, 98, 0, 0, 0, 99,
+ 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,109, 0, 0, 0,105, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0,107,
+ 0, 0, 0,103, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0,102, 0, 0, 0, 0,
+ 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0,108, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0,106,
+ 0, 0, 0,107, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 8,108, 3,163, 96, 32, 0, 0, 0, 65, 0, 0, 0, 49, 61,104, 84,160,
+ 63, 79, 65,242,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 3, 29, 0, 62, 82, 95, 26, 63, 41, 47,120, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,127, 63, 79, 65,242,
+ 63, 0,188,190, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 3, 29, 0,189,188,106,128,
+ 62,186, 20,176, 61,104, 82,144, 62, 91,223,128, 62, 82, 95, 14, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 62,181, 84,127, 63, 79, 65,242, 62, 82, 95, 26, 63, 41, 47,120, 62,181, 84,122, 63, 3, 28,248, 63, 0,188,188, 63, 41, 47,120,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 56, 63,141,179,111, 63, 0,188,190, 63,117, 84,102, 63, 38,207, 52,
+ 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63, 3, 28,248,
+ 62, 82, 95, 14, 62,186, 21, 0, 62,181, 84,122, 62, 91,224, 32, 63, 0,188,185, 62,186, 21, 0, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 38,207, 52, 63, 79, 65,236, 63, 0,188,188, 63, 41, 47,120, 63, 38,207, 52, 63, 3, 28,248, 63, 76,225,174,
+ 63, 41, 47,116, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 62, 91,224, 32, 62, 82, 94,138, 61,135, 43, 48,
+ 62,181, 84, 61,189,169,104,176, 63, 0,188,185, 61,135, 44, 96, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52,
+ 63, 3, 28,248, 63, 0,188,185, 62,186, 21, 0, 63, 38,207, 51, 62, 91,224, 24, 63, 76,225,174, 62,186, 21, 0, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63, 41, 47,116, 63,114,244, 42, 63, 3, 28,244,
+ 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 51, 62, 91,224, 24, 63, 0,188,185,
+ 61,135, 44, 96, 63, 38,207,248,189,169,109,144, 63, 76,226,112, 61,135, 38, 64, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,114,244,240, 62, 91,221, 4, 63,140,131,180, 62,186, 19,116, 63,114,244, 42, 63, 3, 28,244, 63, 76,225,174, 62,186, 21, 0,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26,
+ 63,117, 84,102, 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,
+189,188,105,128, 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188,
+ 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,160, 63, 79, 65,242,
+ 61,104, 84,160, 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105,128,
+ 63, 41, 47,120,190,118,127, 64, 63, 3, 28,216,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102,
+ 62,181, 84,122, 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,160, 63, 79, 65,242,189,188,105,128,
+ 63, 41, 47,120,189,188,105,128, 63, 41, 47,120, 61,104, 84,160, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63, 0,188,188, 63,160,188,173, 62,181, 84,122, 63,141,179,113, 62,181, 84,122, 63,141,179,113, 63, 0,188,188, 63,160,188,173,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 62, 82, 95, 26, 63,117, 84,102, 61,104, 84,200, 63, 79, 65,242, 61,104, 84,160,
+ 63, 79, 65,242, 62, 82, 95, 26, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,189,188,105, 96, 63, 41, 47,120,
+190,118,127, 56, 63, 3, 28,220,190,118,127, 64, 63, 3, 28,216,189,188,105,128, 63, 41, 47,120, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 62,181, 84,122, 63,141,179,113, 62, 82, 95, 26, 63,117, 84,102, 62, 82, 95, 26, 63,117, 84,102, 62,181, 84,122,
+ 63,141,179,113, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 61,104, 84,200, 63, 79, 65,244,189,188,105, 96, 63, 41, 47,120,
+189,188,105, 96, 63, 41, 47,120, 61,104, 84,200, 63, 79, 65,242, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,114,244, 44,
+ 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63, 0,188,188, 63,160,188,173, 63, 38,207, 56, 63,141,179,111, 63, 38,207, 52, 63,141,179,111,
+ 63, 0,188,188, 63,160,188,173, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,172, 63,117, 84,102, 63, 38,207, 52,
+ 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,114,244, 44, 63, 79, 65,236, 63, 76,225,172, 63,117, 84,102, 63, 76,225,172, 63,117, 84,102, 63,114,244, 44, 63, 79, 65,236,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,188, 63,160,188,173, 63, 0,188,188,
+ 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 76,225,174, 63,117, 84,102,
+ 63, 38,207, 52, 63,141,179,111, 63, 38,207, 52, 63,141,179,111, 63, 76,225,172, 63,117, 84,102, 0, 0, 0, 0, 60, 0, 0, 1,
+ 0, 0, 0, 0, 63,114,244, 44, 63, 79, 65,236, 63, 76,225,174, 63,117, 84,102, 63, 76,225,174, 63,117, 84,102, 63,114,244, 44,
+ 63, 79, 65,236, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63, 38,207, 52, 63,141,179,111, 63, 0,188,190, 63,160,188,171,
+ 63, 0,188,188, 63,160,188,173, 63, 38,207, 52, 63,141,179,111, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,162,
+ 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 72, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0,
+ 60, 0, 0, 1, 0, 0, 0, 0, 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236,
+ 63,140,131, 99, 63, 41, 47, 76, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99,
+ 63, 41, 47, 76, 63,140,131, 99, 63, 41, 47, 76, 63,159,140,161, 63, 3, 28,210, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0,
+ 63,140,131, 99, 63, 41, 47, 76, 63,114,244, 44, 63, 79, 65,236, 63,114,244, 44, 63, 79, 65,236, 63,140,131, 99, 63, 41, 47, 76,
+ 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,159,140,161, 63, 3, 28,210, 63,140,131, 99, 63, 41, 47, 76, 63,140,131, 99,
+ 63, 41, 47, 76, 63,159,140,244, 63, 3, 28, 50, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96,
+ 63,158,151,226, 59, 93,211, 96, 63,158,151,224, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63, 81,128,144, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 27,168,248, 59, 93,211, 96, 63, 81,128,144,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,176, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96,
+ 63,158,151,224, 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 21,
+ 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96, 63,131,172, 22, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 27,168,247, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96, 62,203,162, 85, 59, 93,211, 96,
+ 63, 27,168,247, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,226, 59, 93,211, 96, 63,131,172, 24,
+ 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96, 63,158,151,226, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 81,128,142, 59, 93,211, 96, 63, 27,168,246, 59, 93,211, 96, 63, 27,168,247, 59, 93,211, 96, 63, 81,128,144, 59, 93,211, 96,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,185,131,174, 59, 93,211, 96, 63,158,151,227, 59, 93,211, 96, 63,158,151,226,
+ 59, 93,211, 96, 63,185,131,174, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,131,172, 22, 59, 93,211, 96,
+ 63, 81,128,149, 59, 93,211, 96, 63, 81,128,142, 59, 93,211, 96, 63,131,172, 24, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 63, 27,168,251, 59, 93,211, 96, 62,203,162, 84, 59, 93,211, 96, 62,203,162, 86, 59, 93,211, 96, 63, 27,168,246,
+ 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63,158,151,225, 59, 93,211, 96, 63,131,172, 21, 59, 93,211, 96,
+ 63,131,172, 22, 59, 93,211, 96, 63,158,151,227, 59, 93,211, 96, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 81,128,146,
+ 59, 93,211, 96, 63, 27,168,250, 59, 93,211, 96, 63, 27,168,251, 59, 93,211, 96, 63, 81,128,149, 59, 93,211, 96, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 3, 16, 3,163,106, 32, 0, 0, 0, 59, 0, 0, 0,196,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
@@ -7700,20 +10436,63 @@ char datatoc_preview_blend[]= {
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24,
- 13, 65,120,240, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,131, 64, 13, 65,115, 96, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108,
- 97,110,101, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,122, 48, 13, 65,128, 48, 13, 65,129, 0,
- 0, 0, 0, 0, 7,161, 66, 32, 13, 65,125, 32, 0, 0, 0, 0, 13, 65,130,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,122, 96, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,123,192, 0, 0, 0, 1,
- 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,126,208, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 4, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,122, 48, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 1, 44, 13, 65,122, 96, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,190, 48, 0, 0, 0, 52, 0, 0, 0, 1,
+ 8,194,200,224, 8,194,184, 64, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 49, 49, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,191,112, 8,194,197,208, 8,194,198,160, 0, 0, 0, 0, 3,163,110, 32, 8,194,194,160,
+ 0, 0, 0, 0, 8,194,200, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,191,160, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,193, 32, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,196, 80, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
+ 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 76,205, 4, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,194,191,112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,191,160, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,163,110, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40,
+ 3,163,110, 32, 0, 0, 0, 58, 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0,
+ 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,193, 32,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,194,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 66, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7721,91 +10500,65 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 2, 40, 7,161, 66, 32, 0, 0, 0, 58, 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1,
- 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
-182, 70, 0, 0, 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,
- 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1,
- 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
-191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,
- 62,204,204,205, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1,
- 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
-182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,
-191, 76,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1,
- 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
- 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0,
- 63, 76,204,210, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1,
- 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
- 62,204,205, 47,180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,
- 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1,
- 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,
- 62,204,205, 47,180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44,
- 13, 65,123,192, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,125, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128,
- 13, 65,125, 32, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 20,
- 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 2,
- 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35,
- 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 1,
- 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 35,
- 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 7,
- 0, 0, 0, 35, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 9,
- 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 35,
- 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 17,
- 0, 0, 0, 35, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 20,
- 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 35,
- 0, 0, 0, 14, 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,126,208, 0, 0, 1, 35, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,128, 48, 0, 0, 0, 5,
- 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,129, 0, 0, 0, 0, 6, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,130,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 13, 65,128, 48, 0, 0, 0, 54, 0, 0, 0, 8,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1,
- 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10,
- 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 17,
- 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 21,
- 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2,
- 68, 65, 84, 65, 0, 0, 1, 96, 13, 65,129, 0, 0, 0, 0, 65, 0, 0, 0, 8, 62,137,192, 12, 63,125,226,162, 61,246,108,144,
- 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
- 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162,
- 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144,
- 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,229, 0, 63,125,226,162,
- 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
- 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152,
- 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162,
- 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30,
- 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0,
- 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252, 63,125,226,162,
- 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 13, 65,130,144,
- 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 0, 0, 1,128, 8,194,194,160, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35,
+ 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3,
+ 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8,
+ 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 35, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15,
+ 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21,
+ 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,196, 80, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,197,208, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,198,160, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,200, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160,
+ 8,194,197,208, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96, 8,194,198,160, 0, 0, 0, 65, 0, 0, 0, 8,
+ 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,229, 0, 63,125,226,162, 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,128, 8,194,200, 48, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,131, 64, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,141,144,
- 13, 65,120,240,192,139, 5, 8, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,132,128, 13, 65,138,128, 13, 65,139, 80, 0, 0, 0, 0, 7,161, 70, 32, 13, 65,135,112, 0, 0, 0, 0,
- 13, 65,140,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,132,176, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,134, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,137, 32, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32,
- 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2,
- 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,132,128,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,132,176, 0, 0, 1, 35, 0, 0, 0, 5,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,200,224,
+ 0, 0, 0, 52, 0, 0, 0, 1, 8,194,211,144, 8,194,190, 48, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46,
+ 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,202, 32, 8,194,208,128, 8,194,209, 80, 0, 0, 0, 0,
+ 3,163,114, 32, 8,194,205, 80, 0, 0, 0, 0, 8,194,210,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,202, 80,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,203,208, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,207, 0, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,180, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,194,202, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,202, 80, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,161, 70, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,114, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7813,92 +10566,703 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 7,161, 70, 32, 0, 0, 0, 58, 0, 0, 0, 23,
- 62,204,205, 47,180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,
-190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1,
- 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
- 62,204,205, 47,180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,
- 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1,
- 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
- 63, 76,205, 0, 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,
-191, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1,
- 0, 0, 2, 0, 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
-190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,
- 63, 76,204,210, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1,
- 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
-191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,
-180,144, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1,
- 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,
-182, 70, 0, 0, 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,
-190,204,204,216, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1,
- 0, 0, 2, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,134, 16, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,135,112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 2, 40, 3,163,114, 32, 0, 0, 0, 58, 0, 0, 0, 23, 62,204,205, 47,180,128, 0, 0,190,204,204,200,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,191, 76,204,208,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 62, 0, 0,
+ 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55,
+ 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,203,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,205, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 13, 65,135,112, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 1,
- 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 34,
- 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 34,
- 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16,
- 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 11,
- 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 34,
- 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 22,
- 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20,
- 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 34,
- 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 14,
- 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34, 68, 65, 84, 65,
- 0, 0, 1, 44, 13, 65,137, 32, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,138,128, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,139, 80, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,140,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,194,205, 80, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 8,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 6,
+ 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 12,
+ 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34,
+ 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 14,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 17,
+ 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 9,
+ 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,207, 0, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,208,128, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,209, 80, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,210,224, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,160, 8,194,208,128, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 96, 8,194,209, 80,
+ 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 18, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252,
+ 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,194,210,224, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,194,211,144, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,222, 64, 8,194,200,224, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 80,108, 97,110,101, 46, 48, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,212,208, 8,194,219, 48,
+ 8,194,220, 0, 0, 0, 0, 0, 3,163,118, 32, 8,194,216, 0, 0, 0, 0, 0, 8,194,221,144, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,213, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,214,128,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,217,176, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,212,208, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,213, 0, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,118, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,163,118, 32, 0, 0, 0, 58, 0, 0, 0, 23, 62,204,205, 47,
+180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 47,
+ 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,214,128, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,216, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,194,216, 0, 0, 0, 0, 55, 0, 0, 0, 32,
+ 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2,
+ 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34,
+ 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19,
+ 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4,
+ 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,217,176, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,219, 48, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,220, 0, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,221,144,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,194,219, 48, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11,
+ 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22,
+ 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 96, 8,194,220, 0, 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 62,137,192, 18, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,194,221,144, 0, 0, 0, 59,
+ 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,222, 64, 0, 0, 0, 52, 0, 0, 0, 1, 8,194,232,240, 8,194,211,144,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,223,128, 8,194,229,224, 8,194,230,176, 0, 0, 0, 0, 3,163,122, 32, 8,194,226,176, 0, 0, 0, 0, 8,194,232, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,223,176, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,225, 48, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,228, 96,
+ 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 4, 55, 39,197,172,
+ 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,223,128, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,223,176, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,122, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,163,122, 32, 0, 0, 0, 58,
+ 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55,
+ 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 47,
+ 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,190,204,204,200,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,225, 48, 0, 0, 1, 42, 0, 0, 0, 5,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,226,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,194,226,176,
+ 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 13,
+ 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 5,
+ 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 35,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 6,
+ 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 35, 0, 0, 0, 16,
+ 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 35,
+ 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 20, 0, 0, 0, 22,
+ 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 35, 0, 0, 0, 14,
+ 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,228, 96, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,229,224,
+ 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,194,230,176, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,232, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,194,229,224, 0, 0, 0, 54,
+ 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 2,
+ 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 18,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22,
+ 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 14,
+ 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96, 8,194,230,176, 0, 0, 0, 65, 0, 0, 0, 8, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,229, 0,
+ 63,125,226,162, 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128,
+ 8,194,232, 64, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,232,240, 0, 0, 0, 52, 0, 0, 0, 1,
+ 8,194,243,160, 8,194,222, 64, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 49, 53, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,234, 48, 8,194,240,144, 8,194,241, 96, 0, 0, 0, 0, 3,163,126, 32, 8,194,237, 96,
+ 0, 0, 0, 0, 8,194,242,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,234, 96, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,235,224, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,239, 16, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
+ 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 76,205, 4, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,194,234, 48, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,234, 96, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,163,126, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40,
+ 3,163,126, 32, 0, 0, 0, 58, 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0,
+ 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,235,224,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,237, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,160, 13, 65,138,128, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8,
- 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18,
- 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 20,
- 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 96, 13, 65,139, 80, 0, 0, 0, 65,
- 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152,
- 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
- 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,152,
- 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0,
- 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0, 63,125,226,162, 62,213,228,252, 63,125,226,162,
- 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 18, 63,125,226,162, 61,246,108,144,
- 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
- 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162,
- 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144,
- 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162,
- 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 13, 65,140,224, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,
+ 0, 0, 1,128, 8,194,237, 96, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35,
+ 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3,
+ 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8,
+ 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 35, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15,
+ 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21,
+ 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,194,239, 16, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,240,144, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,194,241, 96, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,242,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160,
+ 8,194,240,144, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96, 8,194,241, 96, 0, 0, 0, 65, 0, 0, 0, 8,
+ 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,229, 0, 63,125,226,162, 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,128, 8,194,242,240, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24,
- 13, 65,141,144, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,148,176, 13, 65,131, 64, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108,
- 97,110,101, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,142,208, 13, 65,148, 16, 13, 65,148, 80,
- 0, 0, 0, 0, 13, 65,144, 96, 13, 65,146, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,143, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,144,240, 0, 0, 0, 1,
- 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,146,176, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-179,128, 0, 0, 52, 64, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 2, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,142,208, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 8, 32, 68, 65, 84, 65,
- 0, 0, 1, 44, 13, 65,143, 0, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,194,243,160,
+ 0, 0, 0, 52, 0, 0, 0, 1, 8,194,254, 80, 8,194,232,240, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46,
+ 48, 49, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,244,224, 8,194,251, 64, 8,194,252, 16, 0, 0, 0, 0,
+ 3,163,130, 32, 8,194,248, 16, 0, 0, 0, 0, 8,194,253,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,245, 16,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,246,144, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,249,192, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,180, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,194,244,224, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,245, 16, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,130, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 2, 40, 3,163,130, 32, 0, 0, 0, 58, 0, 0, 0, 23, 62,204,205, 47,180,128, 0, 0,190,204,204,200,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,191, 76,204,208,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 62, 0, 0,
+ 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55,
+ 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,194,246,144, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,248, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,194,248, 16, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 8,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 6,
+ 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 12,
+ 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34,
+ 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 14,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 17,
+ 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 9,
+ 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,194,249,192, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,251, 64, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,252, 16, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,253,160, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,160, 8,194,251, 64, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 96, 8,194,252, 16,
+ 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 18, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252,
+ 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,194,253,160, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,194,254, 80, 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 9, 0, 8,194,243,160, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 80,108, 97,110,101, 46, 48, 49, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,194,255,144, 8,195, 5,240,
+ 8,195, 6,192, 0, 0, 0, 0, 3,163,134, 32, 8,195, 2,192, 0, 0, 0, 0, 8,195, 8, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,194,255,192, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 1, 64,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 4,112, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,194,255,144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,194,255,192, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,134, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,163,134, 32, 0, 0, 0, 58, 0, 0, 0, 23, 62,204,205, 47,
+180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 47,
+ 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 1, 64, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 2,192, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,195, 2,192, 0, 0, 0, 55, 0, 0, 0, 32,
+ 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2,
+ 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34,
+ 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19,
+ 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4,
+ 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 4,112, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 5,240, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 6,192, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 8, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,195, 5,240, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11,
+ 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22,
+ 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 96, 8,195, 6,192, 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 62,137,192, 18, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,195, 8, 80, 0, 0, 0, 59,
+ 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 9, 0, 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 19,176, 8,194,254, 80,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 49, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 10, 64, 8,195, 16,160, 8,195, 17,112, 0, 0, 0, 0, 3,163,138, 32, 8,195, 13,112, 0, 0, 0, 0, 8,195, 19, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 10,112, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 11,240, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 15, 32,
+ 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 4, 55, 39,197,172,
+ 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 10, 64, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 10,112, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,138, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,163,138, 32, 0, 0, 0, 58,
+ 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55,
+ 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 47,
+ 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,190,204,204,200,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 11,240, 0, 0, 1, 42, 0, 0, 0, 5,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 13,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,195, 13,112,
+ 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 13,
+ 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 5,
+ 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 35,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 6,
+ 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 35, 0, 0, 0, 16,
+ 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 35,
+ 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 20, 0, 0, 0, 22,
+ 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 35, 0, 0, 0, 14,
+ 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 15, 32, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 16,160,
+ 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 17,112, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,195, 16,160, 0, 0, 0, 54,
+ 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 2,
+ 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 18,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22,
+ 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 14,
+ 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96, 8,195, 17,112, 0, 0, 0, 65, 0, 0, 0, 8, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,229, 0,
+ 63,125,226,162, 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128,
+ 8,195, 19, 0, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 19,176, 0, 0, 0, 52, 0, 0, 0, 1,
+ 8,195, 30, 96, 8,195, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 49, 57, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 20,240, 8,195, 27, 80, 8,195, 28, 32, 0, 0, 0, 0, 3,163,142, 32, 8,195, 24, 32,
+ 0, 0, 0, 0, 8,195, 29,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 21, 32, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 22,160, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 25,208, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
+ 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 76,205, 4, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,195, 20,240, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 21, 32, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3,163,142, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40,
+ 3,163,142, 32, 0, 0, 0, 58, 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0,
+ 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 22,160,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 24, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,144, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -7906,548 +11270,856 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0, 96, 13, 65,144, 96, 0, 0, 0, 58, 0, 0, 0, 4, 63,128, 0, 0, 63,127,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
-127,255, 3,255, 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,
-191,128, 0, 1,191,127,255,253, 0, 0, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,191,127,255,250, 63,128, 0, 3,
- 0, 0, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,144,240, 0, 0, 1, 35,
- 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,146, 80,
+ 0, 0, 1,128, 8,195, 24, 32, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35,
+ 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3,
+ 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8,
+ 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16,
+ 0, 0, 0, 35, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15,
+ 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21,
+ 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 25,208, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 27, 80, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 28, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 29,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160,
+ 8,195, 27, 80, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2,
+ 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3,
+ 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96, 8,195, 28, 32, 0, 0, 0, 65, 0, 0, 0, 8,
+ 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,229, 0, 63,125,226,162, 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,128, 8,195, 29,176, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 30, 96,
+ 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 41, 16, 8,195, 19,176, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46,
+ 48, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 31,160, 8,195, 38, 0, 8,195, 38,208, 0, 0, 0, 0,
+ 3,163,146, 32, 8,195, 34,208, 0, 0, 0, 0, 8,195, 40, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 31,208,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 33, 80, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 36,128, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,180, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 31,160, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,195, 31,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,146, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 48, 13, 65,146, 80, 0, 0, 0, 55,
- 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,146,176,
- 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,148, 16, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,
-120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,148, 80,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 13, 65,148, 16,
- 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 68, 65, 84, 65,
- 0, 0, 0, 44, 13, 65,148, 80, 0, 0, 0, 65, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 0, 0, 77, 69,
- 0, 0, 1, 24, 13, 65,148,176, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,154, 64, 13, 65,141,144, 0, 0, 0, 0, 0, 0, 0, 0,
- 77, 69,112,114,101,118,105,101,119, 0, 0, 0, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,149,240, 12,118,208, 32,
- 12,119, 64, 32, 0, 0, 0, 0, 12,118, 48, 32, 12,118,112, 32, 0, 0, 0, 0, 12,120, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,150, 32, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,151,128,
- 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,152,224, 0, 0, 0, 3, 0, 0, 0, 5,
- 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130, 0, 0, 7,128, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,186,224,117, 64,187, 13, 91, 64,186,240,160, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,149,240, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 8, 32,
- 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,150, 32, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,118, 48, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 60, 48, 12,118, 48, 32, 0, 0, 0, 58, 0, 0, 2,130,191,141,136, 28, 62,244,243, 12,192,183, 86,198,
-231,212, 10,117,130,191, 3,255, 0, 0, 0, 0,192,131,102,240, 64,119,183, 30,191,199,169,109,166, 58, 84,158,221,230, 3,255,
- 0, 0, 0, 0, 63,239,108,119, 64,156, 85,213,192, 40, 58,188, 40,228,106,207,198,137, 3,255, 0, 0, 0, 0, 64,146,135, 95,
-191, 14, 54, 63,192,102,194,241,100, 27,243,219,177, 45, 3,255, 0, 0, 0, 0, 62,141, 84,239,192,157,220, 16,192, 73, 2, 14,
- 6, 8,148, 39,187, 86, 3,255, 0, 0, 0, 0,192,162,239,132,192, 12,165,206,191,240, 45,150,144,175,207,245,214,251, 3,255,
- 0, 0, 0, 0,190,141, 84,239, 64,157,220, 16, 64, 73, 2, 14,249,248,107,217, 68,170, 3,255, 0, 0, 0, 0, 64,162,239,132,
- 64, 12,165,206, 63,240, 45,150,111, 81, 48, 11, 41, 5, 3,255, 0, 0, 0, 0, 64,131,102,240,192,119,183, 30, 63,199,169,109,
- 89,198,171, 98, 34, 26, 3,255, 0, 0, 0, 0,191,239,108,119,192,156, 85,213, 64, 40, 58,188,215, 28,149, 49, 57,119, 3,255,
- 0, 0, 0, 0,192,146,135, 95, 63, 14, 54, 63, 64,102,194,241,155,229, 12, 37, 78,211, 3,255, 0, 0, 0, 0, 63,141,136, 28,
-190,244,243, 12, 64,183, 86,198, 24, 44,245,139,125, 65, 3,255, 0, 0, 0, 0,192, 68, 17,114, 64, 35,153,226,192,137, 26,154,
-189, 6, 55,226,162, 85, 3,255, 0, 0, 0, 0, 62,230, 40,155, 64, 73,199,239,192,157, 52,176, 9,211, 68,237,148,153, 3,255,
- 0, 0, 0, 0,191,168, 55,124, 64,164,177,224,192, 29,144, 58,227, 69,112,132,202, 46, 3,255, 0, 0, 0, 0,192,105, 35, 94,
-191,129, 88,230,192,143, 14,195,176, 93,233,233,158, 68, 3,255, 0, 0, 0, 0,192,173, 2, 37, 63,123,187,137,192, 1, 68, 56,
-137,206, 21,127,211,216, 3,255, 0, 0, 0, 0, 64, 2,168,234,189, 57,158,231,192,175,149, 65, 44,162,255, 3,136, 11, 3,255,
- 0, 0, 0, 0, 64,114,159, 19, 64, 34,226,254,192,106,133,196, 82,225, 55,164,175,228, 3,255, 0, 0, 0, 0,190,249,176,105,
-192, 39,148, 21,192,166,214,217,245, 87,198,194,142, 5, 3,255, 0, 0, 0, 0, 64, 54,163,227,192, 78,121, 86,192,125,202, 22,
- 62, 99,185,120,169, 79, 3,255, 0, 0, 0, 0,192, 53, 40,241,192,134, 31,200,192, 60,188,229,194, 30,164, 94,191,136, 3,255,
- 0, 0, 0, 0,192,181,230, 96,191,119, 24, 33, 63,130, 26,174,131,186,234,231, 22, 56, 3,255, 0, 0, 0, 0,192,163, 93,103,
- 64, 38,128,136, 63,153,235, 83,144,100, 56,224, 26, 74, 3,255, 0, 0, 0, 0,192, 36,219,238, 64,165,151,132, 63,109,226,165,
-199,176,113, 33, 20, 80, 3,255, 0, 0, 0, 0, 63,111,237, 24, 64,184,174,118, 62,154, 34,212, 20,125,126, 44, 6,148, 3,255,
- 0, 0, 0, 0, 64,130,244,163, 64,133, 58,157,190,226, 95,125, 89,119, 91, 5,246, 86, 3,255, 0, 0, 0, 0, 64,181,230, 96,
- 63,119, 24, 33,191,130, 26,174,124, 70, 21, 25,233,200, 3,255, 0, 0, 0, 0, 64,163, 93,103,192, 38,128,136,191,153,235, 83,
-111,156,199, 32,229,182, 3,255, 0, 0, 0, 0, 64, 36,219,238,192,165,151,132,191,109,226,165, 56, 80,142,223,235,176, 3,255,
- 0, 0, 0, 0,191,111,237, 24,192,184,174,118,190,154, 34,212,235,131,129,212,249,108, 3,255, 0, 0, 0, 0,192,130,244,163,
-192,133, 58,157, 62,226, 95,125,166,137,164,251, 9,170, 3,255, 0, 0, 0, 0,192, 54,163,227, 64, 78,121, 86, 64,125,202, 22,
-193,157, 70,136, 86,177, 3,255, 0, 0, 0, 0, 64, 53, 40,241, 64,134, 31,200, 64, 60,188,229, 61,226, 91,162, 64,120, 3,255,
- 0, 0, 0, 0, 64,173, 2, 37,191,123,187,137, 64, 1, 68, 56,118, 50,234,129, 44, 40, 3,255, 0, 0, 0, 0, 63,168, 55,124,
-192,164,177,224, 64, 29,144, 58, 28,187,143,124, 53,210, 3,255, 0, 0, 0, 0,192,114,159, 19,192, 34,226,254, 64,106,133,196,
-173, 31,200, 92, 80, 28, 3,255, 0, 0, 0, 0,192, 2,168,234, 61, 57,158,231, 64,175,149, 65,211, 94, 0,253,119,245, 3,255,
- 0, 0, 0, 0, 62,249,176,105, 64, 39,148, 21, 64,166,214,217, 10,169, 57, 62,113,251, 3,255, 0, 0, 0, 0, 64,105, 35, 94,
- 63,129, 88,230, 64,143, 14,195, 79,163, 22, 23, 97,188, 3,255, 0, 0, 0, 0, 64, 68, 17,114,192, 35,153,226, 64,137, 26,154,
- 66,250,200, 30, 93,171, 3,255, 0, 0, 0, 0,190,230, 40,155,192, 73,199,239, 64,157, 52,176,246, 45,187, 19,107,103, 3,255,
- 0, 0, 0, 0,192, 10,178, 37, 63,201,231,138,192,166,143,149,209,129, 33,140,141,145, 3,255, 0, 0, 0, 0,192,110,132, 3,
- 64, 85,203,243,192, 66,107,151,174, 16, 73,158,190,209, 3,255, 0, 0, 0, 0,190,174,161,116, 63,241,152, 81,192,177, 2,110,
-247,217, 40, 15,134,182, 3,255, 0, 0, 0, 0, 63,154, 91,138, 64,133,179,218,192,122,222,209, 27, 0, 92, 30,171, 86, 3,255,
- 0, 0, 0, 0,192, 52, 82, 7, 64,149,252, 82,192, 5,202, 64,193, 39,101,227,210,181, 3,255, 0, 0, 0, 0, 62,148, 12,179,
- 64,166,221,251,192, 41, 87,188, 7,192,113,224,198, 21, 3,255, 0, 0, 0, 0,192, 29,246,216,190,141,156, 17,192,169,167,209,
-203, 47,250,160,139,137, 3,255, 0, 0, 0, 0,192,145, 72, 99,191,213,114, 79,192, 83, 35,183,156, 26,219, 3,185, 12, 3,255,
- 0, 0, 0, 0,192,158, 58,115, 64, 33,120,129,191,238, 41,198,148,126, 56,116,215,137, 3,255, 0, 0, 0, 0,192,174,158,118,
-191, 33,148,103,192, 1,156,140,136,218,240,198,211,203, 3,255, 0, 0, 0, 0, 62,249, 14, 55, 62,102,133, 95,192,186,143,210,
- 9, 56, 5, 40,128,113, 3,255, 0, 0, 0, 0, 64, 92, 61,220,190,159,230, 56,192,151, 61, 6, 76, 94,248,242,153,135, 3,255,
- 0, 0, 0, 0, 64, 60, 86, 7, 64,119, 48, 60,192, 81, 88, 93, 63,119, 85,124,184,246, 3,255, 0, 0, 0, 0, 64,139, 55,252,
- 63,132, 95, 62,192,113,216,225, 95,118, 21, 54,173,107, 3,255, 0, 0, 0, 0,191, 84, 6, 18,191,142, 96,251,192,182, 4, 76,
-237,158,233, 20,131,109, 3,255, 0, 0, 0, 0,189,225, 74,109,192,123, 54, 51,192,138,246, 34,253,241,169, 39,162, 1, 3,255,
- 0, 0, 0, 0, 64,119, 66,153,191,251,154,127,192,123,220,161, 85, 59,214, 59,170, 34, 3,255, 0, 0, 0, 0, 63,208, 59,201,
-192,135,182,241,192,108,101,212, 34,103,162,133,175,160, 3,255, 0, 0, 0, 0,191,169,246,161,192,151,196,235,192, 74,149,170,
-228, 95,151,253,186,184, 3,255, 0, 0, 0, 0,192,131,198, 33,192, 84,137,218,192, 32,134, 37,164,247,184, 77,201,167, 3,255,
- 0, 0, 0, 0,192,179, 61,176,191,210,110,138,190,228,220, 24,133,210,219,130,244,238, 3,255, 0, 0, 0, 0,192,170,182, 73,
-190, 90, 16,136, 64, 25,194, 90,139,224,252, 8, 53,174, 3,255, 0, 0, 0, 0,192,153, 55, 75, 64, 87, 78, 4,190, 62, 54, 12,
-151,200, 74, 29,250,179, 3,255, 0, 0, 0, 0,192,161, 19,235, 63,210, 12,207, 64, 31,242,210,146, 50, 34,244, 55,182, 3,255,
- 0, 0, 0, 0,192, 94, 75, 60, 64,150,115,189,190,167,211,186,179, 98,102, 49,247,183, 3,255, 0, 0, 0, 0,191,189,191,186,
- 64,168, 32, 63, 64, 7,100,213,224,161,114,191, 47, 61, 3,255, 0, 0, 0, 0, 63,186,205,242, 64,177, 65,141,191,154,219,127,
- 32, 82,120,177,228, 61, 3,255, 0, 0, 0, 0, 62,175,245, 99, 64,178, 12, 97, 63,228,253,255, 6,247,121, 65, 40, 98, 3,255,
- 0, 0, 0, 0, 64, 70, 92,226, 64,150,131, 8,191,204, 77,182, 66,193,103, 37,220, 32, 3,255, 0, 0, 0, 0, 64,152,194,200,
- 64, 83,155,180, 63, 62,217,154,104,207, 71,101, 17, 87, 3,255, 0, 0, 0, 0, 64,170,182, 73, 62, 90, 16,136,192, 25,194, 90,
-116, 32, 3,248,202, 82, 3,255, 0, 0, 0, 0, 64,179, 61,176, 63,210,110,138, 62,228,220, 24,122, 46, 36,126, 11, 18, 3,255,
- 0, 0, 0, 0, 64,161, 19,235,191,210, 12,207,192, 31,242,210,109,206,221, 12,200, 74, 3,255, 0, 0, 0, 0, 64,153, 55, 75,
-192, 87, 78, 4, 62, 62, 54, 12,104, 56,181,227, 5, 77, 3,255, 0, 0, 0, 0, 63,189,191,186,192,168, 32, 63,192, 7,100,213,
- 31, 95,141, 65,208,195, 3,255, 0, 0, 0, 0, 64, 94, 75, 60,192,150,115,189, 62,167,211,186, 76,158,153,207, 8, 73, 3,255,
- 0, 0, 0, 0,190,175,245, 99,192,178, 12, 97,191,228,253,255,249, 9,134,191,215,158, 3,255, 0, 0, 0, 0,191,186,205,242,
-192,177, 65,141, 63,154,219,127,223,174,135, 79, 27,195, 3,255, 0, 0, 0, 0,192,152,194,200,192, 83,155,180,191, 62,217,154,
-151, 49,184,155,238,169, 3,255, 0, 0, 0, 0,192, 70, 92,226,192,150,131, 8, 63,204, 77,182,189, 63,152,219, 35,224, 3,255,
- 0, 0, 0, 0,191,208, 59,201, 64,135,182,241, 64,108,101,212,221,153, 93,123, 80, 96, 3,255, 0, 0, 0, 0,192,119, 66,153,
- 63,251,154,127, 64,123,220,161,170,197, 41,197, 85,222, 3,255, 0, 0, 0, 0, 63,169,246,161, 64,151,196,235, 64, 74,149,170,
- 27,161,104, 3, 69, 72, 3,255, 0, 0, 0, 0, 64,131,198, 33, 64, 84,137,218, 64, 32,134, 37, 91, 9, 71,179, 54, 89, 3,255,
- 0, 0, 0, 0, 64,174,158,118, 63, 33,148,103, 64, 1,156,140,119, 38, 15, 58, 44, 53, 3,255, 0, 0, 0, 0, 64,158, 58,115,
-192, 33,120,129, 63,238, 41,198,107,130,199,140, 40,119, 3,255, 0, 0, 0, 0, 64, 52, 82, 7,192,149,252, 82, 64, 5,202, 64,
- 62,217,154, 29, 45, 75, 3,255, 0, 0, 0, 0,190,148, 12,179,192,166,221,251, 64, 41, 87,188,248, 64,142, 32, 57,235, 3,255,
- 0, 0, 0, 0,192, 60, 86, 7,192,119, 48, 60, 64, 81, 88, 93,192,137,170,132, 71, 10, 3,255, 0, 0, 0, 0,192,139, 55,252,
-191,132, 95, 62, 64,113,216,225,160,138,234,202, 82,149, 3,255, 0, 0, 0, 0,192, 92, 61,220, 62,159,230, 56, 64,151, 61, 6,
-179,162, 7, 14,102,121, 3,255, 0, 0, 0, 0,190,249, 14, 55,190,102,133, 95, 64,186,143,210,246,200,250,216,127,143, 3,255,
- 0, 0, 0, 0, 61,225, 74,109, 64,123, 54, 51, 64,138,246, 34, 2, 15, 86,217, 93,255, 3,255, 0, 0, 0, 0, 63, 84, 6, 18,
- 63,142, 96,251, 64,182, 4, 76, 18, 98, 22,236,124,147, 3,255, 0, 0, 0, 0, 64,145, 72, 99, 63,213,114, 79, 64, 83, 35,183,
- 99,230, 36,253, 70,244, 3,255, 0, 0, 0, 0, 64, 29,246,216, 62,141,156, 17, 64,169,167,209, 52,209, 5, 96,116,119, 3,255,
- 0, 0, 0, 0, 64,110,132, 3,192, 85,203,243, 64, 66,107,151, 81,240,182, 98, 65, 47, 3,255, 0, 0, 0, 0, 64, 10,178, 37,
-191,201,231,138, 64,166,143,149, 46,127,222,116,114,111, 3,255, 0, 0, 0, 0,191,154, 91,138,192,133,179,218, 64,122,222,209,
-229, 0,163,226, 84,170, 3,255, 0, 0, 0, 0, 62,174,161,116,191,241,152, 81, 64,177, 2,110, 8, 39,215,241,121, 74, 3,255,
- 0, 0, 0, 0,192, 19, 76, 36, 64,129,151, 25,192, 98,254,212,206,231, 88, 97,177,131, 3,255, 0, 0, 0, 0,191,175,232, 93,
- 64, 64, 23,177,192,154,186, 69,225,227, 66,235,151, 34, 3,255, 0, 0, 0, 0,190,232,190,208, 64,139,160, 93,192,120, 33,191,
-244,183, 94,205,170,192, 3,255, 0, 0, 0, 0,192,142,126,210, 63,238, 49, 43,192, 84, 30,112,158,187, 39, 95,182,183, 3,255,
- 0, 0, 0, 0,192, 97,165,138, 63, 80, 9, 92,192,147, 74, 20,177,183, 17,233,156, 86, 3,255, 0, 0, 0, 0,192,152, 61, 98,
-188,106, 63, 87,192, 90, 97, 6,152,127, 0,251,180,183, 3,255, 0, 0, 0, 0, 64, 14,173,200, 64, 63,183,155,192,144, 75,192,
- 48,206, 64, 45,156,152, 3,255, 0, 0, 0, 0, 63,167,162, 95, 63,209, 29,144,192,174,245, 25, 29,250, 36, 75,136,250, 3,255,
- 0, 0, 0, 0, 64, 68, 62,211, 63,168, 56, 51,192,153,245, 13, 65,241, 29,192,150,106, 3,255, 0, 0, 0, 0, 64, 36,182, 33,
-191,220, 38, 34,192,159, 5,150, 54,233,217,211,146,223, 3,255, 0, 0, 0, 0, 63, 81, 34, 16,191,179, 64,129,192,180, 5,162,
- 18,242,224, 93,133,111, 3,255, 0, 0, 0, 0, 63,159, 56,212,192, 68,166,172,192,154,108,212, 27,176,190, 32,149,208, 3,255,
- 0, 0, 0, 0,191,223, 76,204,192,101, 32,170,192,137, 83, 65,216,199,178,195,161,198, 3,255, 0, 0, 0, 0,192, 10,249,249,
-191,244, 52, 62,192,162,236, 25,208, 9,213, 0,145,102, 3,255, 0, 0, 0, 0,192, 89,207, 42,192, 47, 6,251,192,121,165, 27,
-182,209,196, 18,169,198, 3,255, 0, 0, 0, 0,192,176,215,137, 63,241, 62, 25,190,219,254,179,134,179, 39,232,247, 78, 3,255,
- 0, 0, 0, 0,192,186,150, 28, 60, 28, 16,150,191, 7, 9,191,128,118, 1,131,245, 77, 3,255, 0, 0, 0, 0,192,181,132, 34,
- 63, 92, 60, 99, 63,149, 81,217,131,181, 18,238, 23,252, 3,255, 0, 0, 0, 0,190, 74,242,175, 64,183,173,164,191,145,105,227,
-250,117,125,160,232, 31, 3,255, 0, 0, 0, 0,192, 2,227,219, 64,173,164, 96,191, 78, 71,200,212,164,119, 52,238,226, 3,255,
- 0, 0, 0, 0,191, 92,140,181, 64,184, 38, 75, 63, 37,148,176,236,224,125,237, 12,159, 3,255, 0, 0, 0, 0, 64,159,104, 75,
- 63,236, 56,212,192, 29,126,240,108,211, 41,166,203, 9, 3,255, 0, 0, 0, 0, 64,132,159,215, 64, 97,184, 84,192, 10, 44, 30,
- 91,176, 76, 19,209, 56, 3,255, 0, 0, 0, 0, 64,164,122, 95, 64, 44,143,199,191, 68, 78, 53,112, 17, 59, 17,237,185, 3,255,
- 0, 0, 0, 0, 64, 54,176,255,192,141, 84,243,192, 36,176,237, 63,192,160, 9,200, 63, 3,255, 0, 0, 0, 0, 64,133,229, 93,
-192, 68, 21,217,192, 45,226,157, 90,249,187,187,197, 78, 3,255, 0, 0, 0, 0, 64,129, 56,203,192,130,211, 21,191,143,115,187,
- 87,252,166,194,229,252, 3,255, 0, 0, 0, 0,192,104,239,189,192,140,142, 82,191,168,178,178,177,134,158,245,227,155, 3,255,
- 0, 0, 0, 0,191,253,141, 50,192,167,155, 52,191,218,181,170,211,125,141,166,219,155, 3,255, 0, 0, 0, 0,192, 41, 58,164,
-192,167, 34,172, 61,151,232,206,197,232,141,243, 0, 26, 3,255, 0, 0, 0, 0,192,133,229, 93, 64, 68, 21,217, 64, 45,226,157,
-165, 7, 68, 69, 58,178, 3,255, 0, 0, 0, 0,192,129, 56,203, 64,130,211, 21, 63,143,115,187,168, 4, 89, 62, 26, 4, 3,255,
- 0, 0, 0, 0,192, 54,176,255, 64,141, 84,243, 64, 36,176,237,192, 64, 95,247, 55,193, 3,255, 0, 0, 0, 0, 63,253,141, 50,
- 64,167,155, 52, 63,218,181,170, 44,131,114, 90, 36,101, 3,255, 0, 0, 0, 0, 64, 41, 58,164, 64,167, 34,172,189,151,232,206,
- 58, 24,114, 13,255,230, 3,255, 0, 0, 0, 0, 64,104,239,189, 64,140,142, 82, 63,168,178,178, 78,122, 97, 11, 28,101, 3,255,
- 0, 0, 0, 0, 64,186,150, 28,188, 28, 16,150, 63, 7, 9,191,127,138,254,125, 10,179, 3,255, 0, 0, 0, 0, 64,181,132, 34,
-191, 92, 60, 99,191,149, 81,217,124, 75,237, 18,232, 4, 3,255, 0, 0, 0, 0, 64,176,215,137,191,241, 62, 25, 62,219,254,179,
-121, 77,216, 24, 8,178, 3,255, 0, 0, 0, 0, 64, 2,227,219,192,173,164, 96, 63, 78, 71,200, 43, 92,136,204, 17, 30, 3,255,
- 0, 0, 0, 0, 63, 92,140,181,192,184, 38, 75,191, 37,148,176, 19, 32,130, 19,243, 97, 3,255, 0, 0, 0, 0, 62, 74,242,175,
-192,183,173,164, 63,145,105,227, 5,139,130, 96, 23,225, 3,255, 0, 0, 0, 0,192,132,159,215,192, 97,184, 84, 64, 10, 44, 30,
-164, 80,179,237, 46,200, 3,255, 0, 0, 0, 0,192,164,122, 95,192, 44,143,199, 63, 68, 78, 53,143,239,196,239, 18, 71, 3,255,
- 0, 0, 0, 0,192,159,104, 75,191,236, 56,212, 64, 29,126,240,147, 45,214, 90, 52,247, 3,255, 0, 0, 0, 0,191,159, 56,212,
- 64, 68,166,172, 64,154,108,212,228, 80, 65,224,106, 48, 3,255, 0, 0, 0, 0,192, 36,182, 33, 63,220, 38, 34, 64,159, 5,150,
-201, 23, 38, 45,109, 33, 3,255, 0, 0, 0, 0,191, 81, 34, 16, 63,179, 64,129, 64,180, 5,162,237, 14, 31,163,122,145, 3,255,
- 0, 0, 0, 0, 64, 89,207, 42, 64, 47, 6,251, 64,121,165, 27, 73, 47, 59,238, 86, 58, 3,255, 0, 0, 0, 0, 63,223, 76,208,
- 64,101, 32,170, 64,137, 83, 65, 39, 57, 77, 61, 94, 58, 3,255, 0, 0, 0, 0, 64, 10,249,249, 63,244, 52, 62, 64,162,236, 25,
- 47,247, 43, 0,110,154, 3,255, 0, 0, 0, 0, 64,142,126,210,191,238, 49, 43, 64, 84, 30,112, 97, 69,216,161, 73, 73, 3,255,
- 0, 0, 0, 0, 64,152, 61, 98, 60,106, 63, 87, 64, 90, 97, 6,103,129,255, 5, 75, 73, 3,255, 0, 0, 0, 0, 64, 97,165,138,
-191, 80, 9, 92, 64,147, 74, 20, 78, 73,238, 23, 99,170, 3,255, 0, 0, 0, 0, 62,232,190,208,192,139,160, 93, 64,120, 33,191,
- 11, 73,161, 51, 85, 64, 3,255, 0, 0, 0, 0, 64, 19, 76, 36,192,129,151, 25, 64, 98,254,212, 49, 25,167,159, 78,125, 3,255,
- 0, 0, 0, 0, 63,175,232, 93,192, 64, 23,177, 64,154,186, 69, 30, 29,189, 21,104,222, 3,255, 0, 0, 0, 0,192, 68, 62,211,
-191,168, 56, 51, 64,153,245, 13,190, 15,226, 64,105,150, 3,255, 0, 0, 0, 0,192, 14,173,200,192, 63,183,155, 64,144, 75,192,
-207, 50,191,211, 99,104, 3,255, 0, 0, 0, 0,191,167,162, 95,191,209, 29,144, 64,174,245, 25,226, 6,219,181,119, 6, 3,255,
- 0, 0, 0, 0,191,211,156,158, 63,132,228,185,192,176,207,190,220,164, 21,231,134,244, 3,255, 0, 0, 0, 0,192, 41, 76, 0,
- 64, 5,199,190,192,153,157, 83,198,146, 45, 75,150,246, 3,255, 0, 0, 0, 0,192,125, 83,204, 64,105, 55,169,192, 20,162,244,
-169, 72, 79,246,206, 82, 3,255, 0, 0, 0, 0,192, 91,215,178, 64, 62,235,222,192,108,254,190,180,215, 65, 87,175,155, 3,255,
- 0, 0, 0, 0,191, 59, 63,242, 63,152,237,210,192,182, 21,251,239,125, 25, 26,131,149, 3,255, 0, 0, 0, 0, 61, 94,230, 86,
- 64, 35, 30,198,192,169, 15,233, 0,238, 55, 52,140,135, 3,255, 0, 0, 0, 0, 63,199, 4,220, 64,146,145, 7,192, 83,186,104,
- 34,109,100,137,184,168, 3,255, 0, 0, 0, 0, 63, 86,120, 9, 64,109, 91,149,192,142,242, 79, 18,133, 81, 64,158,218, 3,255,
- 0, 0, 0, 0,192, 95,243,103, 64,138, 91,221,191,236, 15,186,178,170, 93,219,216, 25, 3,255, 0, 0, 0, 0,192, 5,206, 46,
- 64,159, 41,121,192, 19, 91,154,209,230,108, 96,205,226, 3,255, 0, 0, 0, 0, 63,139,200,169, 64,163, 78,198,192, 42,146,201,
- 24,247,111, 59,197,206, 3,255, 0, 0, 0, 0,191, 4,128,187, 64,167,181,206,192, 37, 92, 74,245, 57,114, 96,199,145, 3,255,
- 0, 0, 0, 0,191,231, 16,151, 61,209,166,160,192,178, 95,167,217,136, 2,196,133,245, 3,255, 0, 0, 0, 0,192, 69,200,163,
-191, 38,143,178,192,158, 48,148,188,243,242, 11,147,223, 3,255, 0, 0, 0, 0,192,155,192, 43,191,250, 6,151,192, 39, 82,170,
-149, 79,212,247,199,231, 3,255, 0, 0, 0, 0,192,132,118,233,191,173,111,217,192,123,122, 67,165,100,226, 58,170,165, 3,255,
- 0, 0, 0, 0,192,146, 85,238, 64, 78,205,178,191,221, 54, 70,156,183, 71,134,218,120, 3,255, 0, 0, 0, 0,192,167,137, 76,
- 63,227, 31,111,191,251, 57,158,141,234, 39, 54,213, 59, 3,255, 0, 0, 0, 0,192,170,143, 39,191,183, 15,167,191,252, 85,251,
-139,217,223,169,213, 13, 3,255, 0, 0, 0, 0,192,175,214, 8, 62, 53,124,177,192, 2,241,206,136, 23, 3, 89,211, 92, 3,255,
- 0, 0, 0, 0,190,160,160, 77, 62,182, 20, 9,192,186,232,108,248, 8, 7,241,128,128, 3,255, 0, 0, 0, 0, 63,163,144, 33,
- 61,186,144,151,192,183, 47, 50, 27, 97, 2, 19,130,252, 3,255, 0, 0, 0, 0, 64,129,179,222,190,224,147,234,192,134,180, 38,
- 89, 83,246, 64,164,218, 3,255, 0, 0, 0, 0, 64, 49,138,114,190, 57, 97,246,192,165, 76, 57, 60,250,251,247,143,138, 3,255,
- 0, 0, 0, 0, 64, 27,158,249, 64,141,118,197,192, 62,196, 58, 52, 90, 97, 70,191, 90, 3,255, 0, 0, 0, 0, 64, 89,244, 98,
- 64, 79,120, 8,192, 96,128, 65, 74, 8, 71, 39,179,151, 3,255, 0, 0, 0, 0, 64,144,100, 13, 62,118,214,200,192,110,205, 64,
- 98,182, 4, 37,174,161, 3,255, 0, 0, 0, 0, 64,131,202, 42, 63,231,161, 60,192,112,245,142, 90, 10, 38,255,173,209, 3,255,
- 0, 0, 0, 0,191,122, 51,149,190,163,151, 52,192,184,157, 15,234,118,250, 36,129,248, 3,255, 0, 0, 0, 0,191, 42,113, 5,
-191,241,112, 31,192,176,119, 15,241, 93,215, 84,135,135, 3,255, 0, 0, 0, 0, 61,172, 55, 60,192,143, 64, 22,192,113,246,164,
- 2, 27,157,132,174, 71, 3,255, 0, 0, 0, 0,190,154,173,167,192, 83,224,111,192,154,169,198,249,136,183, 89,150,211, 3,255,
- 0, 0, 0, 0, 64,136,133,151,191,162,249, 9,192,115,219,106, 93,175,229, 47,173, 3, 3,255, 0, 0, 0, 0, 64, 89,124,110,
-192, 40, 6,135,192,127,195,223, 74,120,199, 31,168,208, 3,255, 0, 0, 0, 0, 63,117,248,244,192,148, 90,109,192, 93, 0,123,
- 20, 8,154, 66,180,249, 3,255, 0, 0, 0, 0, 64, 17, 0,162,192,113,196, 63,192,119,239, 52, 49, 10,173, 64,171,144, 3,255,
- 0, 0, 0, 0,191, 7,217,162,192,156,117, 21,192, 75,238,222,245,139,149, 20,186,108, 3,255, 0, 0, 0, 0,192, 6,144,171,
-192,144,158,112,192, 69,241,198,210,156,157, 55,188,115, 3,255, 0, 0, 0, 0,192,148,238,110,192, 50,109,115,192, 13,197,187,
-153,170,195,231,208, 17, 3,255, 0, 0, 0, 0,192, 96,252, 79,192,115, 40,140,192, 48,165,116,178,226,173, 98,195,236, 3,255,
- 0, 0, 0, 0,192,172,228,100,191,248,128,217,191,150, 93, 8,138, 91,213, 53,229, 86, 3,255, 0, 0, 0, 0,192,182,171, 82,
-191,168,250,216, 62,147, 15, 15,131,122,226,250, 5,203, 3,255, 0, 0, 0, 0,192,160, 73,215, 62, 49,165,124, 64, 66, 85,232,
-147, 33, 4, 84, 67, 42, 3,255, 0, 0, 0, 0,192,178, 89,171,191, 24,115,192, 63,221,116, 78,134,129,243, 64, 38, 50, 3,255,
- 0, 0, 0, 0,192,143,206, 51, 64,105,250,133,191, 97,251,119,158, 85, 80, 53,235,193, 3,255, 0, 0, 0, 0,192,160, 32, 62,
- 64, 65, 38,163, 63, 3,117,164,146,236, 66, 24, 10,193, 3,255, 0, 0, 0, 0,192,155,108,216, 63,141,255, 59, 64, 69,117,189,
-150, 61, 23,119, 68, 42, 3,255, 0, 0, 0, 0,192,164, 27, 85, 64, 9, 78,244, 63,239,193, 87,144, 33, 46,128, 41, 73, 3,255,
- 0, 0, 0, 0,192,117, 35,134, 64,138,152, 39,191,116, 86, 73,171,230, 94, 2,234, 73, 3,255, 0, 0, 0, 0,192, 67,220, 35,
- 64,159,218, 6, 62,155,103,242,188,240,108,215, 6, 55, 3,255, 0, 0, 0, 0,191, 99, 79,130, 64,164,182,215, 64, 42, 4, 10,
-237,118,112, 50, 58,190, 3,255, 0, 0, 0, 0,192, 3, 86,161, 64,168,205, 14, 63,197, 55, 60,211,148,115, 31, 33,255, 3,255,
- 0, 0, 0, 0, 63,215,101,229, 64,168,141, 84,191,248, 90, 16, 37, 11,114,148,212,159, 3,255, 0, 0, 0, 0, 63,155, 52, 99,
- 64,183, 17,198,190,235,199,232, 26,159,124,192,245,120, 3,255, 0, 0, 0, 0, 61, 10,179,105, 64,169,185, 25, 64, 31,119,120,
- 0, 77,115,101, 55, 96, 3,255, 0, 0, 0, 0, 63, 37,198,143, 64,183,120,123, 63,135,108,160, 13,240,125, 8, 23,144, 3,255,
- 0, 0, 0, 0, 64, 32,174,180, 64,155, 13, 65,192, 8,167,238, 53,247,105,245,208,163, 3,255, 0, 0, 0, 0, 64,104,199, 69,
- 64,143,135,177,191,132, 12, 41, 79, 10, 98, 10,233, 31, 3,255, 0, 0, 0, 0, 64,159,134,121, 64, 49,245, 49, 63,169,166,210,
-109, 27, 59,242, 29,190, 3,255, 0, 0, 0, 0, 64,143,133, 52, 64,113,200,119, 62, 29,206,186, 98, 20, 82, 39, 3,190, 3,255,
- 0, 0, 0, 0, 64,160, 73,215,190, 49,165,124,192, 66, 85,232,108,223,251,172,188,214, 3,255, 0, 0, 0, 0, 64,178, 89,171,
- 63, 24,115,192,191,221,116, 78,121,127, 12,192,217,206, 3,255, 0, 0, 0, 0, 64,172,228,100, 63,248,128,217, 63,150, 93, 8,
-117,165, 42,203, 26,170, 3,255, 0, 0, 0, 0, 64,182,171, 82, 63,168,250,216,190,147, 15, 15,124,134, 29, 6,250, 53, 3,255,
- 0, 0, 0, 0, 64,155,108,216,191,141,255, 59,192, 69,117,189,105,195,232,137,187,214, 3,255, 0, 0, 0, 0, 64,164, 27, 85,
-192, 9, 78,244,191,239,193, 87,111,223,209,128,214,183, 3,255, 0, 0, 0, 0, 64,143,206, 51,192,105,250,133, 63, 97,251,119,
- 97,171,175,203, 20, 63, 3,255, 0, 0, 0, 0, 64,160, 32, 62,192, 65, 38,163,191, 3,117,164,109, 20,189,232,245, 63, 3,255,
- 0, 0, 0, 0, 63, 99, 79,130,192,164,182,215,192, 42, 4, 10, 18,138,143,206,197, 66, 3,255, 0, 0, 0, 0, 64, 3, 86,161,
-192,168,205, 14,191,197, 55, 60, 44,108,140,225,222, 1, 3,255, 0, 0, 0, 0, 64,117, 35,134,192,138,152, 39, 63,116, 86, 73,
- 84, 26,161,254, 21,183, 3,255, 0, 0, 0, 0, 64, 67,220, 35,192,159,218, 6,190,155,103,242, 67, 16,147, 41,249,201, 3,255,
- 0, 0, 0, 0,189, 10,179,105,192,169,185, 25,192, 31,119,120,255,179,140,155,200,160, 3,255, 0, 0, 0, 0,191, 37,198,143,
-192,183,120,123,191,135,108,160,242, 16,130,248,232,112, 3,255, 0, 0, 0, 0,191,215,101,229,192,168,141, 84, 63,248, 90, 16,
-218,245,141,108, 43, 97, 3,255, 0, 0, 0, 0,191,155, 52, 99,192,183, 17,198, 62,235,199,232,229, 97,131, 64, 10,136, 3,255,
- 0, 0, 0, 0,192,159,134,121,192, 49,245, 49,191,169,166,210,146,229,196, 14,226, 66, 3,255, 0, 0, 0, 0,192,143,133, 52,
-192,113,200,119,190, 29,206,186,157,236,173,217,252, 66, 3,255, 0, 0, 0, 0,192, 32,174,180,192,155, 13, 65, 64, 8,167,238,
-202, 9,150, 11, 47, 93, 3,255, 0, 0, 0, 0,192,104,199, 69,192,143,135,177, 63,132, 12, 41,176,246,157,246, 22,225, 3,255,
- 0, 0, 0, 0,191,117,248,244, 64,148, 90,109, 64, 93, 0,123,235,248,101,190, 75, 7, 3,255, 0, 0, 0, 0,192, 17, 0,162,
- 64,113,196, 63, 64,119,239, 52,206,246, 82,192, 84,112, 3,255, 0, 0, 0, 0,192,136,133,151, 63,162,249, 9, 64,115,219,106,
-162, 81, 26,209, 82,253, 3,255, 0, 0, 0, 0,192, 89,124,110, 64, 40, 6,135, 64,127,195,223,181,136, 56,225, 87, 48, 3,255,
- 0, 0, 0, 0, 63, 7,217,162, 64,156,117, 21, 64, 75,238,222, 10,117,106,236, 69,148, 3,255, 0, 0, 0, 0, 64, 6,144,171,
- 64,144,158,112, 64, 69,241,198, 45,100, 98,201, 67,141, 3,255, 0, 0, 0, 0, 64,148,238,110, 64, 50,109,115, 64, 13,197,187,
-102, 86, 60, 25, 47,239, 3,255, 0, 0, 0, 0, 64, 96,252, 79, 64,115, 40,140, 64, 48,165,116, 77, 30, 82,158, 60, 20, 3,255,
- 0, 0, 0, 0, 64,170,143, 39, 63,183, 15,167, 63,252, 85,251,116, 39, 32, 87, 42,243, 3,255, 0, 0, 0, 0, 64,175,214, 8,
-190, 53,124,177, 64, 2,241,206,119,233,252,167, 44,164, 3,255, 0, 0, 0, 0, 64,146, 85,238,192, 78,205,178, 63,221, 54, 70,
- 99, 73,184,122, 37,136, 3,255, 0, 0, 0, 0, 64,167,137, 76,191,227, 31,111, 63,251, 57,158,114, 22,216,202, 42,197, 3,255,
- 0, 0, 0, 0, 64, 95,243,103,192,138, 91,221, 63,236, 15,186, 77, 86,162, 37, 39,231, 3,255, 0, 0, 0, 0, 64, 5,206, 46,
-192,159, 41,121, 64, 19, 91,154, 46, 26,147,160, 50, 30, 3,255, 0, 0, 0, 0,191,139,200,169,192,163, 78,198, 64, 42,146,201,
-231, 9,144,197, 58, 50, 3,255, 0, 0, 0, 0, 63, 4,128,187,192,167,181,206, 64, 37, 92, 74, 10,199,141,160, 56,111, 3,255,
- 0, 0, 0, 0,192, 27,158,249,192,141,118,197, 64, 62,196, 58,203,166,158,186, 64,166, 3,255, 0, 0, 0, 0,192, 89,244, 98,
-192, 79,120, 8, 64, 96,128, 65,181,248,184,217, 76,105, 3,255, 0, 0, 0, 0,192,144,100, 13,190,118,214,200, 64,110,205, 64,
-157, 74,251,219, 81, 95, 3,255, 0, 0, 0, 0,192,131,202, 42,191,231,161, 60, 64,112,245,142,165,246,217, 1, 82, 47, 3,255,
- 0, 0, 0, 0,192,129,179,222, 62,224,147,234, 64,134,180, 38,166,173, 9,192, 91, 38, 3,255, 0, 0, 0, 0,192, 49,138,114,
- 62, 57, 97,246, 64,165, 76, 57,195, 6, 4, 9,112,118, 3,255, 0, 0, 0, 0, 62,160,160, 77,190,182, 20, 9, 64,186,232,108,
- 7,248,248, 15,127,128, 3,255, 0, 0, 0, 0,191,163,144, 33,189,186,144,151, 64,183, 47, 50,228,159,253,237,125, 4, 3,255,
- 0, 0, 0, 0,189,172, 55, 60, 64,143, 64, 22, 64,113,246,164,253,229, 98,124, 81,185, 3,255, 0, 0, 0, 0, 62,154,173,167,
- 64, 83,224,111, 64,154,169,198, 6,120, 72,167,105, 45, 3,255, 0, 0, 0, 0, 63,122, 51,149, 62,163,151, 52, 64,184,157, 15,
- 21,138, 5,220,126, 8, 3,255, 0, 0, 0, 0, 63, 42,113, 5, 63,241,112, 31, 64,176,119, 15, 14,163, 40,172,120,121, 3,255,
- 0, 0, 0, 0, 64,155,192, 43, 63,250, 6,151, 64, 39, 82,170,106,177, 43, 9, 56, 25, 3,255, 0, 0, 0, 0, 64,132,118,233,
- 63,173,111,217, 64,123,122, 67, 90,156, 29,198, 85, 91, 3,255, 0, 0, 0, 0, 63,231, 16,151,189,209,166,160, 64,178, 95,167,
- 38,120,253, 60,122, 11, 3,255, 0, 0, 0, 0, 64, 69,200,163, 63, 38,143,178, 64,158, 48,148, 67, 13, 13,245,108, 33, 3,255,
- 0, 0, 0, 0, 64,125, 83,204,192,105, 55,169, 64, 20,162,244, 86,184,176, 10, 49,174, 3,255, 0, 0, 0, 0, 64, 91,215,178,
-192, 62,235,222, 64,108,254,190, 75, 41,190,169, 80,101, 3,255, 0, 0, 0, 0, 63,211,156,158,191,132,228,185, 64,176,207,190,
- 35, 92,234, 25,121, 12, 3,255, 0, 0, 0, 0, 64, 41, 76, 0,192, 5,199,190, 64,153,157, 83, 57,110,210,181,105, 10, 3,255,
- 0, 0, 0, 0,191,199, 4,220,192,146,145, 7, 64, 83,186,104,221,147,155,119, 71, 88, 3,255, 0, 0, 0, 0,191, 86,120, 9,
-192,109, 91,149, 64,142,242, 79,237,123,174,192, 97, 38, 3,255, 0, 0, 0, 0, 63, 59, 63,242,191,152,237,210, 64,182, 21,251,
- 16,131,230,230,124,107, 3,255, 0, 0, 0, 0,189, 94,230, 86,192, 35, 30,198, 64,169, 15,233,255, 18,200,204,115,121, 3,255,
- 0, 0, 0, 0,192, 46, 27,208, 64, 86,104,124,192,126, 52, 85,197,137, 72,226,168,134, 3,255, 0, 0, 0, 0,191,234,168, 82,
- 64,149, 62, 87,192, 67, 12,118,217, 5,101,188,188,210, 3,255, 0, 0, 0, 0,192, 16, 10,186, 64, 52,106,249,192,147,253,210,
-206,182, 62,131,155,198, 3,255, 0, 0, 0, 0,190,240, 33, 93, 64, 71,199,191,192,158, 47,142,245,214, 69, 40,148,199, 3,255,
- 0, 0, 0, 0,187, 71, 46, 19, 64,115,240,194,192,142,166,175,254,240, 82,161,158, 66, 3,255, 0, 0, 0, 0,191,101,194,188,
- 64,154, 84, 17,192, 77,193,240,235, 76,104,214,185,142, 3,255, 0, 0, 0, 0,192,115,246,246, 64, 15, 86,183,192,118,168, 51,
-172,249, 47,229,171, 45, 3,255, 0, 0, 0, 0,192,160, 1,101, 63,184,146, 47,192, 45, 38,153,146,225, 30, 96,196,102, 3,255,
- 0, 0, 0, 0,192, 85,229,215, 63,218,178,166,192,144, 55,183,182, 38, 37,133,158,110, 3,255, 0, 0, 0, 0,192,104,178,151,
-189,205,107,245,192,147, 60,175,175,178,253,205,156, 91, 3,255, 0, 0, 0, 0,192,136, 81,192,191, 4,239, 55,192,127,222, 24,
-163,130,245,158,168, 35, 3,255, 0, 0, 0, 0,192,164,241, 70, 62,251,218,102,192, 48, 82,143,143,222, 11,210,195,110, 3,255,
- 0, 0, 0, 0, 63,173,230,209, 64, 71,135,231,192,152,234, 27, 29,148, 67, 4,151, 11, 3,255, 0, 0, 0, 0, 64, 67,103,158,
- 64, 51,206, 82,192,132,168, 39, 66,203, 60, 63,164,242, 3,255, 0, 0, 0, 0, 63,100,131,136, 64, 27, 95, 16,192,168,115, 4,
- 20,122, 53,138,141,143, 3,255, 0, 0, 0, 0, 63,217,154, 77, 63, 78, 69,185,192,177,196,221, 38, 53, 17,236,135, 42, 3,255,
- 0, 0, 0, 0, 64, 37,195,107, 63, 36,213, 4,192,167, 33, 20, 55,151, 14,194,141,168, 3,255, 0, 0, 0, 0, 64, 94,139,103,
- 63,250,146,153,192,137,141, 72, 75, 19, 43,156,161,245, 3,255, 0, 0, 0, 0, 64, 21,195,231,191,101, 58,236,192,169,178,218,
- 49,247,236, 31,139,218, 3,255, 0, 0, 0, 0, 64, 48, 32,142,192, 32,140,155,192,145, 1,195, 59, 3,200,178,156,204, 3,255,
- 0, 0, 0, 0, 63,185,155, 70,191, 59,202, 12,192,180, 86,163, 32,149,239, 73,133, 91, 3,255, 0, 0, 0, 0, 62, 43, 97, 29,
-192, 2,118,144,192,175,231,125, 4,106,210,160,136,103, 3,255, 0, 0, 0, 0, 62,196,116, 97,192, 56,176, 10,192,162,239,120,
- 8,164,194, 20,144, 81, 3,255, 0, 0, 0, 0, 64, 5, 2,185,192, 76,105,217,192,142,173,135, 45,218,187, 79,158, 56, 3,255,
- 0, 0, 0, 0,191,144,243,163,192, 73, 41,252,192,154, 66,148,230,134,188, 73,150,107, 3,255, 0, 0, 0, 0,192, 20,133,147,
-192,124, 55,234,192,107, 3,176,204,110,170,196,175,164, 3,255, 0, 0, 0, 0,192, 60,186, 42,191,189,128,219,192,155, 43, 23,
-191, 41,222,189,150,199, 3,255, 0, 0, 0, 0,191,172,164, 52,192, 18,240,106,192,167, 58,141,226, 76,204,213,142,128, 3,255,
- 0, 0, 0, 0,192,100,171, 12,191,243, 33,249,192,135,221,106,178,248,214,143,162,143, 3,255, 0, 0, 0, 0,192, 74, 78,195,
-192, 96,206,241,192, 94, 88, 98,188, 4,179, 34,179,129, 3,255, 0, 0, 0, 0,192,177,110, 41, 63,186, 30, 81,191,158,249,105,
-134,160, 30,165,229, 86, 3,255, 0, 0, 0, 0,192,172,138, 45, 64, 17,149,114, 62,200,203,127,137,251, 48,171, 9, 56, 3,255,
- 0, 0, 0, 0,192,182, 94, 10, 63, 1, 5, 48,191,165, 81, 86,131,156, 12, 24,228, 94, 3,255, 0, 0, 0, 0,192,186,224,117,
-190,247,234, 37, 62,126, 56,147,128,132,246,101, 6, 46, 3,255, 0, 0, 0, 0,192,184, 78,204,189, 89,193, 19, 63,141,163,187,
-130, 22,254,208, 22,241, 3,255, 0, 0, 0, 0,192,174,232,105, 63,224,187,151, 63,153,183,156,136,137, 38,137, 25, 3, 3,255,
- 0, 0, 0, 0,191, 68,118, 42, 64,176,173,101,191,233,132,114,238, 57,120,142,216,217, 3,255, 0, 0, 0, 0, 62,191,172, 81,
- 64,186,208, 67,190,216,163,195, 7, 75,127,131,247,159, 3,255, 0, 0, 0, 0,191,218, 2,113, 64,171,151,172,191,212, 25,114,
-219,243,117,116,220, 30, 3,255, 0, 0, 0, 0,192, 21,244,251, 64,172, 12, 28, 61,128,151, 13,205,229,117,196, 1,226, 3,255,
- 0, 0, 0, 0,191,223, 39, 51, 64,177, 94,248, 63, 76,122,104,217,155,121, 3, 16, 65, 3,255, 0, 0, 0, 0, 61, 28,208, 72,
- 64,187, 13, 91, 62,245,215, 64, 0,187,127,168, 9, 66, 3,255, 0, 0, 0, 0, 64,142, 93, 45, 64, 14,137, 70,192, 70,202,147,
- 96,241, 49,173,188,202, 3,255, 0, 0, 0, 0, 64,173, 23,106, 63,182,131,157,191,225,176,175,118, 7, 32, 20,218, 72, 3,255,
- 0, 0, 0, 0, 64,128,203, 78, 64, 69, 14,124,192, 61, 0, 55, 88,168, 66, 80,191,199, 3,255, 0, 0, 0, 0, 64,133,175,133,
- 64,121,149, 28,191,168,212, 51, 92, 4, 84, 86,227,170, 3,255, 0, 0, 0, 0, 64,149,211, 8, 64, 94,166, 84,191, 29, 24, 68,
-101,221, 76, 30,241,113, 3,255, 0, 0, 0, 0, 64,175,169, 31, 63,237,176,138,191,103,168, 15,119,152, 40,128,235, 11, 3,255,
- 0, 0, 0, 0, 64, 57, 78,122,192,120, 12,224,192, 84, 56, 7, 64, 62,171,247,183,239, 3,255, 0, 0, 0, 0, 64, 48, 74, 0,
-192,155,165,245,191,227, 87,208, 61, 38,150, 68,217,192, 3,255, 0, 0, 0, 0, 64,100,108, 85,192, 76, 47,115,192, 88,224,149,
- 77,102,185, 90,182,131, 3,255, 0, 0, 0, 0, 64,150,191,173,192, 55,233,227,191,254,101,198,102,121,192, 79,213, 73, 3,255,
- 0, 0, 0, 0, 64,148, 97,119,192, 89, 33,200,191,150,225, 24,101, 7,182, 44,229, 20, 3,255, 0, 0, 0, 0, 64, 86,171, 75,
-192,150, 83, 36,191,133, 36, 22, 72,220,153,131,232, 32, 3,255, 0, 0, 0, 0,192, 81,251,116,192,139, 80,115,192, 10,124, 57,
-185, 81,160, 53,208,254, 3,255, 0, 0, 0, 0,192,122,239, 70,192,138,220, 53,190,227, 86,113,171, 68,160,132,246,195, 3,255,
- 0, 0, 0, 0,192, 28, 50, 14,192,153, 4,245,192, 23, 39,141,201,187,151,215,205, 33, 3,255, 0, 0, 0, 0,191,189,123, 34,
-192,178,168,203,191,130,106,149,222,209,134, 63,234,158, 3,255, 0, 0, 0, 0,191,232,127,176,192,178,107,177,189,236,189, 47,
-216, 65,134,100,252, 66, 3,255, 0, 0, 0, 0,192, 90,168, 53,192,152, 83,169, 62,133,201,227,181, 29,152, 77, 4,136, 3,255,
- 0, 0, 0, 0,192,150,191,173, 64, 55,233,227, 63,254,101,198,153,135, 63,177, 42,183, 3,255, 0, 0, 0, 0,192,100,108, 85,
- 64, 76, 47,115, 64, 88,224,149,178,154, 70,166, 73,125, 3,255, 0, 0, 0, 0,192,148, 97,119, 64, 89, 33,200, 63,150,225, 24,
-154,249, 73,212, 26,236, 3,255, 0, 0, 0, 0,192, 86,171, 75, 64,150, 83, 36, 63,133, 36, 22,183, 36,102,125, 23,224, 3,255,
- 0, 0, 0, 0,192, 48, 74, 0, 64,155,165,245, 63,227, 87,208,194,218,105,188, 38, 64, 3,255, 0, 0, 0, 0,192, 57, 78,122,
- 64,120, 12,224, 64, 84, 56, 7,191,194, 84, 9, 72, 17, 3,255, 0, 0, 0, 0, 63,189,123, 34, 64,178,168,203, 63,130,106,149,
- 33, 47,121,193, 21, 98, 3,255, 0, 0, 0, 0, 64, 28, 50, 14, 64,153, 4,245, 64, 23, 39,141, 54, 69,104, 41, 50,223, 3,255,
- 0, 0, 0, 0, 63,232,127,176, 64,178,107,177, 61,236,189, 47, 39,191,121,156, 3,190, 3,255, 0, 0, 0, 0, 64, 90,168, 53,
- 64,152, 83,169,190,133,201,227, 74,227,103,179,251,120, 3,255, 0, 0, 0, 0, 64,122,239, 70, 64,138,220, 53, 62,227, 86,113,
- 84,188, 95,124, 9, 61, 3,255, 0, 0, 0, 0, 64, 81,251,116, 64,139, 80,115, 64, 10,124, 57, 70,175, 95,203, 47, 2, 3,255,
- 0, 0, 0, 0, 64,186,224,117, 62,247,234, 37,190,126, 56,147,127,124, 9,155,249,210, 3,255, 0, 0, 0, 0, 64,182, 94, 10,
-191, 1, 5, 48, 63,165, 81, 86,124,100,243,232, 27,162, 3,255, 0, 0, 0, 0, 64,184, 78,204, 61, 89,193, 19,191,141,163,187,
-125,234, 1, 48,233, 15, 3,255, 0, 0, 0, 0, 64,174,232,105,191,224,187,151,191,153,183,156,119,119,217,119,230,253, 3,255,
- 0, 0, 0, 0, 64,172,138, 45,192, 17,149,114,190,200,203,127,118, 5,207, 85,246,200, 3,255, 0, 0, 0, 0, 64,177,110, 41,
-191,186, 30, 81, 63,158,249,105,121, 96,225, 91, 26,170, 3,255, 0, 0, 0, 0, 64, 21,244,251,192,172, 12, 28,189,128,151, 13,
- 50, 27,138, 60,254, 30, 3,255, 0, 0, 0, 0, 63,218, 2,113,192,171,151,172, 63,212, 25,114, 36, 13,138,140, 35,226, 3,255,
- 0, 0, 0, 0, 63,223, 39, 51,192,177, 94,248,191, 76,122,104, 38,101,134,253,239,191, 3,255, 0, 0, 0, 0,189, 28,208, 72,
-192,187, 13, 91,190,245,215, 64,255, 69,128, 88,246,190, 3,255, 0, 0, 0, 0,190,191,172, 81,192,186,208, 67, 62,216,163,195,
-248,181,128,125, 8, 97, 3,255, 0, 0, 0, 0, 63, 68,118, 42,192,176,173,101, 63,233,132,114, 17,199,135,114, 39, 39, 3,255,
- 0, 0, 0, 0,192,133,175,133,192,121,149, 28, 63,168,212, 51,163,252,171,170, 28, 86, 3,255, 0, 0, 0, 0,192,128,203, 78,
-192, 69, 14,124, 64, 61, 0, 55,167, 88,189,176, 64, 57, 3,255, 0, 0, 0, 0,192,175,169, 31,191,237,176,138, 63,103,168, 15,
-136,104,215,128, 20,245, 3,255, 0, 0, 0, 0,192,149,211, 8,192, 94,166, 84, 63, 29, 24, 68,154, 35,179,226, 14,143, 3,255,
- 0, 0, 0, 0,192,173, 23,106,191,182,131,157, 63,225,176,175,137,249,223,236, 37,184, 3,255, 0, 0, 0, 0,192,142, 93, 45,
-192, 14,137, 70, 64, 70,202,147,159, 15,206, 83, 67, 54, 3,255, 0, 0, 0, 0,192, 5, 2,185, 64, 76,105,217, 64,142,173,135,
-210, 38, 68,177, 97,200, 3,255, 0, 0, 0, 0,190,196,116, 97, 64, 56,176, 10, 64,162,239,120,247, 92, 61,236,111,175, 3,255,
- 0, 0, 0, 0,192, 48, 32,142, 64, 32,140,155, 64,145, 1,195,196,253, 55, 78, 99, 52, 3,255, 0, 0, 0, 0,192, 21,195,231,
- 63,101, 58,236, 64,169,178,218,206, 9, 19,225,116, 38, 3,255, 0, 0, 0, 0,191,185,155, 70, 63, 59,202, 12, 64,180, 86,163,
-223,107, 16,183,122,165, 3,255, 0, 0, 0, 0,190, 43, 97, 29, 64, 2,118,144, 64,175,231,125,251,150, 45, 96,119,153, 3,255,
- 0, 0, 0, 0, 64, 74, 78,195, 64, 96,206,241, 64, 94, 88, 98, 67,252, 76,222, 76,127, 3,255, 0, 0, 0, 0, 64,100,171, 12,
- 63,243, 33,249, 64,135,221,106, 77, 8, 41,113, 93,113, 3,255, 0, 0, 0, 0, 64, 20,133,147, 64,124, 55,234, 64,107, 3,176,
- 51,146, 85, 60, 80, 92, 3,255, 0, 0, 0, 0, 63,144,243,164, 64, 73, 41,252, 64,154, 66,148, 25,122, 67,183,105,149, 3,255,
- 0, 0, 0, 0, 63,172,164, 52, 64, 18,240,106, 64,167, 58,141, 29,180, 51, 43,113,128, 3,255, 0, 0, 0, 0, 64, 60,186, 42,
- 63,189,128,219, 64,155, 43, 23, 64,215, 33, 67,105, 57, 3,255, 0, 0, 0, 0, 64,160, 1,101,191,184,146, 47, 64, 45, 38,153,
-109, 31,225,160, 59,154, 3,255, 0, 0, 0, 0, 64,115,246,246,192, 15, 86,183, 64,118,168, 51, 83, 7,208, 27, 84,211, 3,255,
- 0, 0, 0, 0, 64,164,241, 70,190,251,218,102, 64, 48, 82,143,112, 34,244, 46, 60,146, 3,255, 0, 0, 0, 0, 64,136, 81,192,
- 63, 4,239, 55, 64,127,222, 24, 92,126, 10, 98, 87,221, 3,255, 0, 0, 0, 0, 64,104,178,151, 61,205,107,245, 64,147, 60,175,
- 80, 78, 2, 51, 99,165, 3,255, 0, 0, 0, 0, 64, 85,229,215,191,218,178,166, 64,144, 55,183, 73,218,218,123, 97,146, 3,255,
- 0, 0, 0, 0, 63,101,194,188,192,154, 84, 17, 64, 77,193,240, 20,180,151, 42, 70,114, 3,255, 0, 0, 0, 0, 59, 71, 46, 19,
-192,115,240,194, 64,142,166,175, 1, 16,173, 95, 97,190, 3,255, 0, 0, 0, 0, 63,234,168, 82,192,149, 62, 87, 64, 67, 12,118,
- 38,251,154, 68, 67, 46, 3,255, 0, 0, 0, 0, 64, 46, 27,208,192, 86,104,124, 64,126, 52, 85, 58,119,183, 30, 87,122, 3,255,
- 0, 0, 0, 0, 64, 16, 10,186,192, 52,106,249, 64,147,253,210, 49, 74,193,125,100, 58, 3,255, 0, 0, 0, 0, 62,240, 33, 93,
-192, 71,199,191, 64,158, 47,142, 10, 42,186,216,107, 57, 3,255, 0, 0, 0, 0,192, 94,139,103,191,250,146,153, 64,137,141, 72,
-180,237,212,100, 94, 11, 3,255, 0, 0, 0, 0,192, 37,195,107,191, 36,213, 4, 64,167, 33, 20,200,105,241, 62,114, 88, 3,255,
- 0, 0, 0, 0,192, 67,103,158,192, 51,206, 82, 64,132,168, 39,189, 53,195,193, 91, 14, 3,255, 0, 0, 0, 0,191,173,230,209,
-192, 71,135,231, 64,152,234, 27,226,108,188,252,104,245, 3,255, 0, 0, 0, 0,191,217,154, 77,191, 78, 69,185, 64,177,196,221,
-217,203,238, 20,120,214, 3,255, 0, 0, 0, 0,191,100,131,136,192, 27, 95, 16, 64,168,115, 4,235,134,202,118,114,113, 3,255,
- 0, 0, 0, 0,192, 37,220,139, 64,141,135,245,192, 54,173,114,199, 45, 96, 95,193,211, 3,255, 0, 0, 0, 0,192, 84,119,204,
- 64,130, 73, 93,192, 38,107,212,183, 58, 88,223,199,137, 3,255, 0, 0, 0, 0,192, 67, 76,208, 64,111,120, 62,192, 85, 89, 14,
-189, 80, 81,196,183,140, 3,255, 0, 0, 0, 0,191,238,147, 68, 64,100,230,166,192,136, 9,234,215,216, 78,130,163, 59, 3,255,
- 0, 0, 0, 0,191,109,149, 30, 64,111, 18, 40,192,141,100,171,235, 37, 81,201,159,199, 3,255, 0, 0, 0, 0,191,178,237,144,
- 64,136,136, 25,192,113, 1,121,225,117, 92,189,173, 62, 3,255, 0, 0, 0, 0, 63, 66, 82,214, 64,152,115,128,192, 85, 25,164,
- 16,241,104, 27,183,126, 3,255, 0, 0, 0, 0,189,171,155,119, 64,155, 40,138,192, 83, 96,113,254,128,105,196,183,238, 3,255,
- 0, 0, 0, 0, 62,194,138, 67, 64,138, 97,177,192,124,158, 75, 8,112, 94,134,170, 29, 3,255, 0, 0, 0, 0,191, 94,106,158,
- 64, 30,106,167,192,167,240,254,236,229, 53,187,141,105, 3,255, 0, 0, 0, 0,191,229,114, 22, 64, 20, 96,193,192,162,167,253,
-217, 22, 50, 93,144,244, 3,255, 0, 0, 0, 0,191,162,210, 45, 63,224,211,233,192,174, 67,184,228, 69, 37,245,136,244, 3,255,
- 0, 0, 0, 0,192,152, 61, 37, 64, 14, 9,230,192, 39,179,137,152, 85, 48,183,198,226, 3,255, 0, 0, 0, 0,192,140,187,232,
- 64, 62, 96, 6,192, 30,247,107,160, 7, 65, 68,202, 11, 3,255, 0, 0, 0, 0,192,132,134,116, 64, 40,130, 40,192, 77,207,237,
-165,139, 57,149,186, 30, 3,255, 0, 0, 0, 0,192,129,129, 12, 63,173,129,231,192,128,125,159,167, 62, 29, 15,168,123, 3,255,
- 0, 0, 0, 0,192,134,112,254, 62,207,146,126,192,130, 19,159,164, 15, 9,119,167,117, 3,255, 0, 0, 0, 0,192,149,121,189,
- 63,111,192,142,192, 90, 95, 76,154, 95, 20,107,180,236, 3,255, 0, 0, 0, 0,192,162, 65, 12,191,149, 84, 11,192, 44,202,172,
-145, 60,230, 47,197, 75, 3,255, 0, 0, 0, 0,192,165,120, 74,190,167, 78, 95,192, 48, 51,139,143, 54,248,140,195,244, 3,255,
- 0, 0, 0, 0,192,150,161, 61,191, 89,221,107,192, 89,113,118,153, 40,237, 79,182, 35, 3,255, 0, 0, 0, 0,192, 66, 56, 52,
- 62,139, 40,206,192,160,116, 21,190, 13, 6, 19,146,121, 3,255, 0, 0, 0, 0,192, 56,120,245, 63,154,213,118,192,158,227, 81,
-193, 81, 26, 47,147,133, 3,255, 0, 0, 0, 0,192, 22,104,220, 63, 40,221,204,192,170,137,115,205, 16, 14, 89,139,117, 3,255,
- 0, 0, 0, 0, 64, 39,143,145, 64, 94, 49,190,192,124, 27,165, 56,238, 75,252,170, 43, 3,255, 0, 0, 0, 0, 64, 6,168,130,
- 64,130,132,190,192,105, 96, 12, 45,226, 89, 91,176,173, 3,255, 0, 0, 0, 0, 63,222,169, 76, 64,104,107,205,192,136,142,150,
- 38, 23, 79,105,163, 33, 3,255, 0, 0, 0, 0, 63,229,207,137, 64, 22, 63, 30,192,161,235,207, 39,198, 50,227,145,127, 3,255,
- 0, 0, 0, 0, 64, 14, 11,239, 63,191,114,175,192,166,208,254, 48,133, 33, 81,142, 87, 3,255, 0, 0, 0, 0, 64, 43,222,239,
- 64, 11,226,212,192,151, 71,227, 58, 33, 47,140,152, 91, 3,255, 0, 0, 0, 0, 64,124,245, 0, 62,187, 32, 27,192,138, 6, 57,
- 86,138, 7,176,162, 2, 3,255, 0, 0, 0, 0, 64,112, 75, 42, 63,152, 42,228,192,139, 44, 25, 82, 0, 25,159,161, 31, 3,255,
- 0, 0, 0, 0, 64, 82,218,178, 63, 1,247,178,192,154,129,211, 72, 35, 11, 4,150,217, 3,255, 0, 0, 0, 0, 63,104,203,208,
- 63,113, 6,146,192,183, 5,108, 19,132, 20,150,131, 49, 3,255, 0, 0, 0, 0, 62,251, 68, 26, 63,228, 38,111,192,178, 48,114,
- 10,139, 38,158,134,109, 3,255, 0, 0, 0, 0, 61,149, 78,163, 63,137, 25, 65,192,184,102,234, 1, 54, 23, 52,130, 34, 3,255,
- 0, 0, 0, 0, 64, 80,140, 98,191,238,205,169,192,144, 69, 83, 71, 70,215,145,157,173, 3,255, 0, 0, 0, 0, 64,109, 39,177,
-191,147,213,155,192,140,143,238, 81, 57,230,247,160, 77, 3,255, 0, 0, 0, 0, 64, 66,225,100,191,131,191,146,192,157, 18,152,
- 66,178,233,128,149, 25, 3,255, 0, 0, 0, 0, 63,220, 24,190,191,202,163,163,192,171,244,160, 37, 99,220,199,138,196, 3,255,
- 0, 0, 0, 0, 63,133,219,227,192, 17, 47,172,192,169,160, 93, 23,126,206,164,140, 68, 3,255, 0, 0, 0, 0, 63,247,202, 46,
-192, 27,140, 23,192,158,252,116, 41,217,203, 77,147, 32, 3,255, 0, 0, 0, 0, 63, 68,220, 36,192,132,143, 24,192,130,105, 20,
- 16,163,165, 66,167, 72, 3,255, 0, 0, 0, 0, 63,185,255, 60,192,108,244,215,192,138, 7,129, 31,113,175, 11,161,251, 3,255,
- 0, 0, 0, 0, 63, 19, 18,220,192, 98,186,168,192,148,136, 66, 12,155,178,121,154,241, 3,255, 0, 0, 0, 0,187,172,119,131,
-191,162,209,182,192,183, 73,170,255,209,228,144,130,251, 3,255, 0, 0, 0, 0, 63, 40,230,165,191, 24,111,246,192,185,150, 50,
- 14, 19,243, 18,129,113, 3,255, 0, 0, 0, 0,190, 50, 45,123,190,230, 16,213,192,186,240,160,251,231,246,124,128,109, 3,255,
- 0, 0, 0, 0,191,199, 22,221,192,134,211, 71,192,113,161, 37,222, 98,163,255,173,157, 3,255, 0, 0, 0, 0,191, 58,131,171,
-192,140,178, 57,192,115,174,214,240,105,159,201,173, 11, 3,255, 0, 0, 0, 0,191,112,119,228,192,115, 46, 49,192,139,222,186,
-235,152,172,221,160,217, 3,255, 0, 0, 0, 0,191,254, 75,122,192, 50, 36, 18,192,152, 70, 84,211,253,195, 46,152, 87, 3,255,
- 0, 0, 0, 0,192, 52,239,190,192, 22,186,193,192,145,240,166,194,167,204, 3,156,108, 3,255, 0, 0, 0, 0,192, 39, 23, 51,
-192, 76,245, 14,192,132,248,105,199, 29,186,137,164,200, 3,255, 0, 0, 0, 0,192,140,137,202,192, 33,234, 4,192, 60,117,152,
-159,215,200,216,192, 6, 3,255, 0, 0, 0, 0,192,115,176, 68,192, 68, 49, 85,192, 79,173, 65,172,178,189, 81,185, 81, 3,255,
- 0, 0, 0, 0,192,128,173,131,192, 14,170, 50,192,105, 71,247,168, 30,207, 64,176,189, 3,255, 0, 0, 0, 0,192, 22, 80,230,
-191,141,155, 50,192,168, 95,108,205, 3,232, 6,141, 19, 3,255, 0, 0, 0, 0,191,194,113, 96,191,195,184,166,192,174,160, 31,
-222,205,222,245,136,227, 3,255, 0, 0, 0, 0,191,213,244,249,191, 52, 33, 10,192,178, 94,248,219,172,241, 3,134, 48, 3,255,
- 0, 0, 0, 0,192,167, 26, 30, 64, 42, 11, 62,190,159,163,199,142, 45, 58, 26,248,236, 3,255, 0, 0, 0, 0,192,157,242, 15,
- 64, 63, 35,177,191,132,230,242,148,115, 65,134,233, 39, 3,255, 0, 0, 0, 0,192,169,163, 58, 64, 14,207,184,191,148, 92, 43,
-140,122, 48,250,230,193, 3,255, 0, 0, 0, 0,192,184, 83,241, 63,117,241, 33,190,248, 69,204,130, 32, 20,245,246, 22, 3,255,
- 0, 0, 0, 0,192,186,178, 88, 62,226, 33,180, 62,165,211, 69,128,153, 10, 65, 6,196, 3,255, 0, 0, 0, 0,192,181,194,100,
- 63,178, 37,227, 62,191, 51, 65,131,199, 29,217, 7,201, 3,255, 0, 0, 0, 0,192,168, 68,140, 63, 57,100,162, 64, 31, 41, 90,
-141, 91, 15,195, 54,175, 3,255, 0, 0, 0, 0,192,173,114,185, 63,162, 11,147, 63,237,131,136,137,204, 27,106, 40,187, 3,255,
- 0, 0, 0, 0,192,178, 82, 90, 62,168, 0,181, 63,231, 64,125,134,136, 7, 78, 39,175, 3,255, 0, 0, 0, 0,192,185, 52,235,
-191, 83,185,191,190,252,176, 39,129,201,237,211,244,241, 3,255, 0, 0, 0, 0,192,182,222, 95,190,161, 32,178,191,165, 92, 48,
-131, 90,248,208,227,211, 3,255, 0, 0, 0, 0,192,179,119, 52,191,147,204,223,191,160,141,116,133,169,230,113,228,103, 3,255,
- 0, 0, 0, 0, 63, 35, 88,109, 64,182,186,129,191,152, 8,207, 14, 5,124,127,229,202, 3,255, 0, 0, 0, 0, 63, 99, 54,226,
- 64,174,134,172,191,250, 98, 96, 19,180,118,244,213, 14, 3,255, 0, 0, 0, 0, 61, 60,195,150, 64,177,121, 46,191,245, 6,174,
- 1, 84,120,249,214, 55, 3,255, 0, 0, 0, 0,191,145,160,228, 64,181, 59,121,191,123,252,246,231, 63,123,214,235, 42, 3,255,
- 0, 0, 0, 0,191,188,166, 29, 64,181,120,167,189,165,224, 4,224, 81,123,253,253,203, 3,255, 0, 0, 0, 0,191, 9,186, 26,
- 64,186,142,104,190,126, 74,128,243,158,127, 69,250, 88, 3,255, 0, 0, 0, 0,191, 19,205,179, 64,175,145, 33, 63,253,151,102,
-243,125,119,171, 43,167, 3,255, 0, 0, 0, 0,190,134,114,163, 64,183, 94, 81, 63,157,210, 73,250, 40,124,240, 27, 49, 3,255,
- 0, 0, 0, 0,191,151,217,253, 64,178, 89, 90, 63,178,246,210,230, 89,121,146, 30,187, 3,255, 0, 0, 0, 0,192, 50,200,107,
- 64,164, 21, 4,191, 18,252,143,194,229,111,189,243, 58, 3,255, 0, 0, 0, 0,192, 29,140,219, 64,163,216,164,191,187,160,163,
-202, 2,111,148,224, 27, 3,255, 0, 0, 0, 0,192, 76, 63, 8, 64,152, 92,149,191,157, 6,201,185,254,103,184,229, 25, 3,255,
- 0, 0, 0, 0, 64,167, 31,102, 63,133,113, 18,192, 29,150,122,113,214, 22,149,202, 5, 3,255, 0, 0, 0, 0, 64,157, 48,115,
- 63, 33,183, 74,192, 72,172, 21,107, 50, 13,106,187, 91, 3,255, 0, 0, 0, 0, 64,151, 48,250, 63,186,157,117,192, 74, 37,236,
-103, 41, 31,126,187, 23, 3,255, 0, 0, 0, 0, 64,148, 31,118, 64, 46, 99,144,192, 21,237, 95,101,101, 59,141,205,115, 3,255,
- 0, 0, 0, 0, 64,150,177, 40, 64, 73,250,101,191,189,252,104,103, 13, 68,113,223, 39, 3,255, 0, 0, 0, 0, 64,164, 67, 59,
- 64, 19,116,106,191,209,145, 96,111,204, 50,223,219,255, 3,255, 0, 0, 0, 0, 64,168, 99, 9, 64, 32,173,184, 63, 27, 16,129,
-114,228, 54,189, 13,164, 3,255, 0, 0, 0, 0, 64,174, 1,225, 64, 12,167, 65,190, 38, 1,199,118,149, 48, 17,252,195, 3,255,
- 0, 0, 0, 0, 64,160,156,172, 64, 66,121, 23,188, 53,253,220,109,155, 66, 25, 0, 0, 3,255, 0, 0, 0, 0, 64,106,184,230,
- 64,133, 83,117,191,243, 95, 76, 79,202, 90,251,214, 77, 3,255, 0, 0, 0, 0, 64,101,166,116, 64,111,107, 67,192, 47,233, 69,
- 78, 23, 81,219,196, 34, 3,255, 0, 0, 0, 0, 64, 68, 20,109, 64,139, 9,202,192, 29,255,124, 66,138, 95, 22,202, 6, 3,255,
- 0, 0, 0, 0, 64, 12,138, 46,192,156,168,195,192, 23,240, 99, 47,172,149, 54,203,252, 3,255, 0, 0, 0, 0, 63,201,189,110,
-192,154, 28, 48,192, 60,148,180, 34, 2,150,195,191,147, 3,255, 0, 0, 0, 0, 64, 17, 55, 21,192,140, 67,125,192, 75, 8,118,
- 49, 61,160, 50,186,221, 3,255, 0, 0, 0, 0, 64,100,126, 85,192,114,211,103,192, 43,176,187, 78, 60,172,241,198, 2, 3,255,
- 0, 0, 0, 0, 64,133,112, 29,192,104, 45,168,191,249, 44, 95, 90,154,176, 96,213, 48, 3,255, 0, 0, 0, 0, 64, 95,193,192,
-192,138, 5,221,191,239,219, 42, 76,181,162, 61,214,177, 3,255, 0, 0, 0, 0, 64,134, 21, 28,192,130,231,185, 62,133,210,175,
- 91,128,166,182, 6, 33, 3,255, 0, 0, 0, 0, 64,115,101,128,192,142,100,106,190,205,174,214, 83, 32,159, 12,247,127, 3,255,
- 0, 0, 0, 0, 64,142,250,187,192,113,123,178,190,242,120, 90, 97, 99,173,142,245,244, 3,255, 0, 0, 0, 0, 64,149, 83,115,
-192, 24,118, 25,192, 41, 5, 96,101,195,204, 61,198, 36, 3,255, 0, 0, 0, 0, 64,130, 97,236,192, 34,248,181,192, 87,132, 49,
- 89, 17,200,184,182,144, 3,255, 0, 0, 0, 0, 64,144,103,186,191,234, 9, 91,192, 80,226,150, 98,152,216,121,184,152, 3,255,
- 0, 0, 0, 0,192,136, 74,208,192,121,117,231,191,133,193, 32,162,248,171, 42,232,249, 3,255, 0, 0, 0, 0,192,144, 84, 31,
-192, 87, 19, 24,191,211, 65, 53,157, 74,182,248,219,224, 3,255, 0, 0, 0, 0,192,123, 90, 7,192,121,238,107,191,247,227,115,
-170, 22,171, 1,213,218, 3,255, 0, 0, 0, 0,192, 54,112,161,192,156, 77, 94,191,196,107,207,193,198,149, 23,223, 32, 3,255,
- 0, 0, 0, 0,192, 22, 41, 24,192,169,197, 1,191, 84, 68,191,204, 45,140,105,237,172, 3,255, 0, 0, 0, 0,192, 75,243, 73,
-192,156, 16, 86,191, 33,150,180,186,216,149, 63,241,194, 3,255, 0, 0, 0, 0,192, 19,246,140,192,166, 60,148, 63,182, 70, 11,
-205,164,142,159, 31,127, 3,255, 0, 0, 0, 0,192, 58, 21, 17,192,160,209,224, 63, 88,100,103,192,202,146, 72, 18,171, 3,255,
- 0, 0, 0, 0,192, 4,252,151,192,174, 89, 71, 63, 38, 93,215,210,148,137, 55, 14,122, 3,255, 0, 0, 0, 0,191,150,176, 53,
-192,174,252,238,191,226,172, 37,230,114,136,199,217, 20, 3,255, 0, 0, 0, 0,191,214,105,225,192,161,177,211,192, 29,229,160,
-219,197,145,175,202, 38, 3,255, 0, 0, 0, 0,191, 88,213, 62,192,167, 70,193,192, 32,217,212,237,221,141,232,200,230, 3,255,
- 0, 0, 0, 0,192,130, 97,236, 64, 34,248,181, 64, 87,132, 49,166,239, 55, 72, 73,112, 3,255, 0, 0, 0, 0,192,144,103,186,
- 63,234, 9, 91, 64, 80,226,150,157,104, 39,135, 71,104, 3,255, 0, 0, 0, 0,192,149, 83,115, 64, 24,118, 25, 64, 41, 5, 96,
-154, 61, 51,195, 57,220, 3,255, 0, 0, 0, 0,192,133,112, 29, 64,104, 45,168, 63,249, 44, 95,165,102, 79,160, 42,208, 3,255,
- 0, 0, 0, 0,192, 95,193,192, 64,138, 5,221, 63,239,219, 42,179, 75, 93,195, 41, 79, 3,255, 0, 0, 0, 0,192,100,126, 85,
- 64,114,211,103, 64, 43,176,187,177,196, 83, 15, 57,254, 3,255, 0, 0, 0, 0,191,201,189,110, 64,154, 28, 48, 64, 60,148,180,
-221,254,105, 61, 64,109, 3,255, 0, 0, 0, 0,192, 17, 55, 21, 64,140, 67,125, 64, 75, 8,118,206,195, 95,206, 69, 35, 3,255,
- 0, 0, 0, 0,192, 12,138, 46, 64,156,168,195, 64, 23,240, 99,208, 84,106,202, 52, 4, 3,255, 0, 0, 0, 0,192,115,101,128,
- 64,142,100,106, 62,205,174,214,172,224, 96,244, 8,129, 3,255, 0, 0, 0, 0,192,142,250,187, 64,113,123,178, 62,242,120, 90,
-158,157, 82,114, 10, 12, 3,255, 0, 0, 0, 0,192,134, 21, 28, 64,130,231,185,190,133,210,175,164,128, 89, 74,249,223, 3,255,
- 0, 0, 0, 0, 63,214,105,225, 64,161,177,211, 64, 29,229,160, 36, 59,110, 81, 53,218, 3,255, 0, 0, 0, 0, 63, 88,213, 62,
- 64,167, 70,193, 64, 32,217,212, 18, 35,114, 24, 55, 26, 3,255, 0, 0, 0, 0, 63,150,176, 53, 64,174,252,238, 63,226,172, 37,
- 25,142,119, 57, 38,236, 3,255, 0, 0, 0, 0, 64, 22, 41, 24, 64,169,197, 1, 63, 84, 68,191, 51,211,115,151, 18, 84, 3,255,
- 0, 0, 0, 0, 64, 75,243, 73, 64,156, 16, 86, 63, 33,150,180, 69, 40,106,193, 14, 62, 3,255, 0, 0, 0, 0, 64, 54,112,161,
- 64,156, 77, 94, 63,196,107,208, 62, 58,106,233, 32,224, 3,255, 0, 0, 0, 0, 64,144, 84, 31, 64, 87, 19, 24, 63,211, 65, 53,
- 98,182, 73, 8, 36, 32, 3,255, 0, 0, 0, 0, 64,123, 90, 7, 64,121,238,107, 63,247,227,115, 85,234, 84,255, 42, 38, 3,255,
- 0, 0, 0, 0, 64,136, 74,208, 64,121,117,231, 63,133,193, 32, 93, 8, 84,214, 23, 7, 3,255, 0, 0, 0, 0, 64, 58, 21, 17,
- 64,160,209,224,191, 88,100,103, 63, 54,109,184,237, 85, 3,255, 0, 0, 0, 0, 64, 4,252,151, 64,174, 89, 71,191, 38, 93,215,
- 45,108,118,201,241,134, 3,255, 0, 0, 0, 0, 64, 19,246,140, 64,166, 60,148,191,182, 70, 11, 50, 92,113, 97,224,129, 3,255,
- 0, 0, 0, 0, 64,182,222, 95, 62,161, 32,178, 63,165, 92, 48,124,166, 7, 48, 28, 45, 3,255, 0, 0, 0, 0, 64,179,119, 52,
- 63,147,204,223, 63,160,141,116,122, 87, 25,143, 27,153, 3,255, 0, 0, 0, 0, 64,185, 52,235, 63, 83,185,191, 62,252,176, 39,
-126, 55, 18, 45, 11, 15, 3,255, 0, 0, 0, 0, 64,186,178, 88,190,226, 33,180,190,165,211, 69,127,103,245,191,249, 60, 3,255,
- 0, 0, 0, 0, 64,181,194,100,191,178, 37,227,190,191, 51, 65,124, 57,226, 39,248, 55, 3,255, 0, 0, 0, 0, 64,184, 83,241,
-191,117,241, 33, 62,248, 69,204,125,224,235, 11, 9,234, 3,255, 0, 0, 0, 0, 64,157,242, 15,192, 63, 35,177, 63,132,230,242,
-107,141,190,122, 22,217, 3,255, 0, 0, 0, 0, 64,169,163, 58,192, 14,207,184, 63,148, 92, 43,115,134,207, 6, 25, 63, 3,255,
- 0, 0, 0, 0, 64,167, 26, 30,192, 42, 11, 62, 62,159,163,199,113,211,197,230, 7, 20, 3,255, 0, 0, 0, 0, 64,173,114,185,
-191,162, 11,147,191,237,131,136,118, 52,228,150,215, 69, 3,255, 0, 0, 0, 0, 64,178, 82, 90,190,168, 0,181,191,231, 64,125,
-121,120,248,178,216, 81, 3,255, 0, 0, 0, 0, 64,168, 68,140,191, 57,100,162,192, 31, 41, 90,114,165,240, 61,201, 81, 3,255,
- 0, 0, 0, 0, 64, 29,140,219,192,163,216,164, 63,187,160,163, 53,254,144,108, 31,229, 3,255, 0, 0, 0, 0, 64, 76, 63, 8,
-192,152, 92,149, 63,157, 6,201, 70, 2,152, 72, 26,231, 3,255, 0, 0, 0, 0, 64, 50,200,107,192,164, 21, 4, 63, 18,252,143,
- 61, 27,144, 67, 12,198, 3,255, 0, 0, 0, 0, 63,188,166, 29,192,181,120,167, 61,165,224, 4, 31,175,132, 3, 2, 53, 3,255,
- 0, 0, 0, 0, 63, 9,186, 26,192,186,142,104, 62,126, 74,128, 12, 98,128,187, 5,168, 3,255, 0, 0, 0, 0, 63,145,160,228,
-192,181, 59,121, 63,123,252,246, 24,193,132, 42, 20,214, 3,255, 0, 0, 0, 0,191, 99, 54,226,192,174,134,172, 63,250, 98, 96,
-236, 76,137, 12, 42,242, 3,255, 0, 0, 0, 0,189, 60,195,150,192,177,121, 46, 63,245, 6,174,254,172,135, 7, 41,201, 3,255,
- 0, 0, 0, 0,191, 35, 88,109,192,182,186,129, 63,152, 8,207,241,251,131,129, 26, 54, 3,255, 0, 0, 0, 0, 62,134,114,163,
-192,183, 94, 81,191,157,210, 73, 5,216,131, 16,228,207, 3,255, 0, 0, 0, 0, 63,151,217,253,192,178, 89, 90,191,178,246,210,
- 25,167,134,110,225, 69, 3,255, 0, 0, 0, 0, 63, 19,205,179,192,175,145, 33,191,253,151,102, 12,131,136, 85,212, 89, 3,255,
- 0, 0, 0, 0,192,101,166,116,192,111,107, 67, 64, 47,233, 69,177,233,174, 37, 59,222, 3,255, 0, 0, 0, 0,192, 68, 20,109,
-192,139, 9,202, 64, 29,255,124,189,118,160,234, 53,250, 3,255, 0, 0, 0, 0,192,106,184,230,192,133, 83,117, 63,243, 95, 76,
-176, 54,165, 5, 41,179, 3,255, 0, 0, 0, 0,192,150,177, 40,192, 73,250,101, 63,189,252,104,152,243,187,143, 32,217, 3,255,
- 0, 0, 0, 0,192,164, 67, 59,192, 19,116,106, 63,209,145, 96,144, 52,205, 33, 36, 1, 3,255, 0, 0, 0, 0,192,148, 31,118,
-192, 46, 99,144, 64, 21,237, 95,154,155,196,115, 50,141, 3,255, 0, 0, 0, 0,192,157, 48,115,191, 33,183, 74, 64, 72,172, 21,
-148,206,242,150, 68,165, 3,255, 0, 0, 0, 0,192,151, 48,250,191,186,157,117, 64, 74, 37,236,152,215,224,130, 68,233, 3,255,
- 0, 0, 0, 0,192,167, 31,102,191,133,113, 18, 64, 29,150,122,142, 42,233,107, 53,251, 3,255, 0, 0, 0, 0,192,174, 1,225,
-192, 12,167, 65, 62, 38, 1,199,137,107,207,239, 3, 61, 3,255, 0, 0, 0, 0,192,160,156,172,192, 66,121, 23, 60, 53,253,220,
-146,101,189,231, 0, 0, 3,255, 0, 0, 0, 0,192,168, 99, 9,192, 32,173,184,191, 27, 16,129,141, 28,201, 67,242, 92, 3,255,
- 0, 0, 0, 0,191, 19, 18,220, 64, 98,186,168, 64,148,136, 66,243,101, 77,135,101, 15, 3,255, 0, 0, 0, 0,191, 68,220, 36,
- 64,132,143, 24, 64,130,105, 20,239, 93, 90,190, 88,184, 3,255, 0, 0, 0, 0,191,185,255, 60, 64,108,244,215, 64,138, 7,129,
-224,143, 80,245, 94, 5, 3,255, 0, 0, 0, 0,191,247,202, 46, 64, 27,140, 23, 64,158,252,116,214, 39, 52,179,108,224, 3,255,
- 0, 0, 0, 0,191,220, 24,190, 63,202,163,163, 64,171,244,160,218,157, 35, 57,117, 60, 3,255, 0, 0, 0, 0,191,133,219,227,
- 64, 17, 47,172, 64,169,160, 93,232,130, 49, 92,115,188, 3,255, 0, 0, 0, 0, 62, 50, 45,123, 62,230, 16,213, 64,186,240,160,
- 4, 25, 9,132,127,147, 3,255, 0, 0, 0, 0, 59,172,119,131, 63,162,209,182, 64,183, 73,170, 0, 47, 27,112,125, 5, 3,255,
- 0, 0, 0, 0,191, 40,230,165, 63, 24,111,246, 64,185,150, 50,241,237, 12,238,126,143, 3,255, 0, 0, 0, 0,192, 66,225,100,
- 63,131,191,146, 64,157, 18,152,189, 78, 22,128,106,231, 3,255, 0, 0, 0, 0,192, 80,140, 98, 63,238,205,169, 64,144, 69, 83,
-184,186, 40,111, 98, 83, 3,255, 0, 0, 0, 0,192,109, 39,177, 63,147,213,154, 64,140,143,239,174,199, 25, 9, 95,179, 3,255,
- 0, 0, 0, 0, 64,128,173,131, 64, 14,170, 50, 64,105, 71,247, 87,226, 48,192, 79, 67, 3,255, 0, 0, 0, 0, 64,140,137,202,
- 64, 33,234, 4, 64, 60,117,152, 96, 41, 55, 40, 63,250, 3,255, 0, 0, 0, 0, 64,115,176, 68, 64, 68, 49, 85, 64, 79,173, 65,
- 83, 78, 66,175, 70,175, 3,255, 0, 0, 0, 0, 64, 39, 23, 51, 64, 76,245, 14, 64,132,248,105, 56,227, 69,119, 91, 56, 3,255,
- 0, 0, 0, 0, 63,254, 75,122, 64, 50, 36, 17, 64,152, 70, 83, 44, 3, 60,210,103,169, 3,255, 0, 0, 0, 0, 64, 52,239,190,
- 64, 22,186,193, 64,145,240,166, 61, 89, 51,253, 99,148, 3,255, 0, 0, 0, 0, 63,213,244,249, 63, 52, 33, 10, 64,178, 94,248,
- 36, 84, 14,253,121,208, 3,255, 0, 0, 0, 0, 64, 22, 80,230, 63,141,155, 50, 64,168, 95,108, 50,253, 23,250,114,237, 3,255,
- 0, 0, 0, 0, 63,194,113, 96, 63,195,184,166, 64,174,160, 31, 33, 51, 33, 11,119, 29, 3,255, 0, 0, 0, 0, 63,112,119,228,
- 64,115, 46, 49, 64,139,222,186, 20,104, 83, 35, 95, 40, 3,255, 0, 0, 0, 0, 63,199, 22,221, 64,134,211, 71, 64,113,161, 37,
- 33,158, 92, 1, 82, 99, 3,255, 0, 0, 0, 0, 63, 58,131,170, 64,140,178, 58, 64,115,174,213, 15,151, 96, 55, 82,245, 3,255,
- 0, 0, 0, 0, 64,132,134,116,192, 40,130, 40, 64, 77,207,237, 90,117,198,107, 69,226, 3,255, 0, 0, 0, 0, 64,140,187,232,
-192, 62, 96, 6, 64, 30,247,107, 95,249,190,188, 53,245, 3,255, 0, 0, 0, 0, 64,152, 61, 37,192, 14, 9,230, 64, 39,179,137,
-103,171,207, 73, 57, 30, 3,255, 0, 0, 0, 0, 64,149,121,189,191,111,192,142, 64, 90, 95, 76,101,161,235,149, 75, 20, 3,255,
- 0, 0, 0, 0, 64,134,112,254,190,207,146,126, 64,130, 19,159, 91,241,246,137, 88,139, 3,255, 0, 0, 0, 0, 64,129,129, 12,
-191,173,129,231, 64,128,125,159, 88,194,226,241, 87,133, 3,255, 0, 0, 0, 0, 64, 22,104,220,191, 40,221,204, 64,170,137,115,
- 50,240,241,167,116,139, 3,255, 0, 0, 0, 0, 64, 56,120,245,191,154,213,118, 64,158,227, 81, 62,175,229,209,108,123, 3,255,
- 0, 0, 0, 0, 64, 66, 56, 52,190,139, 40,206, 64,160,116, 21, 65,243,249,237,109,135, 3,255, 0, 0, 0, 0, 64,150,161, 61,
- 63, 89,221,107, 64, 89,113,118,102,216, 18,177, 73,221, 3,255, 0, 0, 0, 0, 64,165,120, 74, 62,167, 78, 95, 64, 48, 51,139,
-112,202, 7,116, 60, 12, 3,255, 0, 0, 0, 0, 64,162, 65, 12, 63,149, 84, 11, 64, 44,202,172,110,196, 25,209, 58,181, 3,255,
- 0, 0, 0, 0,190,194,138, 67,192,138, 97,177, 64,124,158, 75,247,144,161,122, 85,227, 3,255, 0, 0, 0, 0,191, 66, 82,214,
-192,152,115,128, 64, 85, 25,164,239, 15,151,229, 72,130, 3,255, 0, 0, 0, 0, 61,171,155,119,192,155, 40,138, 64, 83, 96,113,
- 1,128,150, 60, 72, 18, 3,255, 0, 0, 0, 0, 63,178,237,144,192,136,136, 25, 64,113, 1,121, 30,139,163, 67, 82,194, 3,255,
- 0, 0, 0, 0, 63,238,147, 68,192,100,230,166, 64,136, 9,234, 40, 40,177,126, 92,197, 3,255, 0, 0, 0, 0, 63,109,149, 30,
-192,111, 18, 40, 64,141,100,171, 20,219,174, 55, 96, 57, 3,255, 0, 0, 0, 0, 63,162,210, 45,191,224,211,233, 64,174, 67,184,
- 27,187,218, 11,119, 12, 3,255, 0, 0, 0, 0, 63, 94,106,158,192, 30,106,167, 64,167,240,254, 19, 27,202, 69,114,151, 3,255,
- 0, 0, 0, 0, 63,229,114, 22,192, 20, 96,193, 64,162,167,253, 38,234,205,163,111, 12, 3,255, 0, 0, 0, 0, 64, 67, 76,208,
-192,111,120, 62, 64, 85, 89, 14, 66,176,174, 60, 72,116, 3,255, 0, 0, 0, 0, 64, 37,220,139,192,141,135,245, 64, 54,173,114,
- 56,211,159,161, 62, 45, 3,255, 0, 0, 0, 0, 64, 84,119,204,192,130, 73, 93, 64, 38,107,212, 72,198,167, 33, 56,119, 3,255,
- 0, 0, 0, 0,192, 82,218,178,191, 1,247,178, 64,154,129,211,183,221,244,252,105, 39, 3,255, 0, 0, 0, 0,192,124,245, 0,
-190,187, 32, 27, 64,138, 6, 57,169,118,248, 80, 93,254, 3,255, 0, 0, 0, 0,192,112, 75, 42,191,152, 42,228, 64,139, 44, 25,
-174, 0,230, 97, 94,225, 3,255, 0, 0, 0, 0,192, 43,222,239,192, 11,226,212, 64,151, 71,227,197,223,208,116,103,165, 3,255,
- 0, 0, 0, 0,191,229,207,137,192, 22, 63, 30, 64,161,235,207,216, 58,205, 29,110,129, 3,255, 0, 0, 0, 0,192, 14, 11,239,
-191,191,114,175, 64,166,208,254,207,123,222,175,113,169, 3,255, 0, 0, 0, 0,189,149, 78,163,191,137, 25, 65, 64,184,102,234,
-254,202,232,204,125,222, 3,255, 0, 0, 0, 0,191,104,203,208,191,113, 6,146, 64,183, 5,108,236,124,235,106,124,207, 3,255,
- 0, 0, 0, 0,190,251, 68, 26,191,228, 38,111, 64,178, 48,114,245,117,217, 98,121,147, 3,255, 0, 0, 0, 0,191,222,169, 76,
-192,104,107,205, 64,136,142,150,217,233,176,151, 92,223, 3,255, 0, 0, 0, 0,192, 39,143,145,192, 94, 49,190, 64,124, 27,165,
-199, 18,180, 4, 85,213, 3,255, 0, 0, 0, 0,192, 6,168,130,192,130,132,190, 64,105, 96, 12,210, 30,166,165, 79, 83, 3,255,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,151,128, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,118,112, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 90, 0, 12,118,112, 32, 0, 0, 0, 55, 0, 0, 7,128, 0, 0, 0, 0, 0, 0, 0,162,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 2, 40, 3,163,146, 32, 0, 0, 0, 58, 0, 0, 0, 23, 62,204,205, 47,180,128, 0, 0,190,204,204,200,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,191, 76,204,208,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 62, 0, 0,
+ 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 47, 0, 0, 0, 0, 63, 76,204,206,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55,
+ 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,195, 33, 80, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 34,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,195, 34,208, 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 8,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 6,
+ 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 12,
+ 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 34,
+ 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 11, 0, 0, 0, 14,
+ 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 17,
+ 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 9,
+ 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 34,
+ 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,195, 36,128, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 38, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 38,208, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 40, 96, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,160, 8,195, 38, 0, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 96, 8,195, 38,208,
+ 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 18, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252,
+ 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,195, 40, 96, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,195, 41, 16, 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 51,192, 8,195, 30, 96, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69, 80,108, 97,110,101, 46, 48, 50, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 42, 80, 8,195, 48,176,
+ 8,195, 49,128, 0, 0, 0, 0, 3,163,150, 32, 8,195, 45,128, 0, 0, 0, 0, 8,195, 51, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 42,128, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 44, 0,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 47, 48, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 2, 55, 39,197,172, 63, 76,204,214, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 42, 80, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 42,128, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,150, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,163,150, 32, 0, 0, 0, 58, 0, 0, 0, 23, 62,204,205, 47,
+180,128, 0, 0,190,204,204,200, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0,190,204,204,208,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 47,
+180,128, 0, 0, 62,204,204,221, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,191, 76,204,214,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 47,
+ 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,180,144, 0, 0,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,190,204,204,224, 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,190,204,204,216,
+ 0, 0,128, 1, 0, 0, 2, 0, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 2, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 44, 0, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 45,128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,195, 45,128, 0, 0, 0, 55, 0, 0, 0, 32,
+ 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 2,
+ 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 15,
+ 0, 0, 0, 16, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 34,
+ 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 15, 0, 0, 0, 18,
+ 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 19,
+ 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 21, 0, 0, 0, 34,
+ 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 21,
+ 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 4,
+ 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 34,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 47, 48, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 48,176, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 49,128, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 51, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,195, 48,176, 0, 0, 0, 54, 0, 0, 0, 8, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11,
+ 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 22,
+ 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 96, 8,195, 49,128, 0, 0, 0, 65, 0, 0, 0, 8, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 34, 63,125,226,162, 62,213,229, 0,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 62,137,192, 18, 63,125,226,162, 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128, 8,195, 51, 16, 0, 0, 0, 59,
+ 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 51,192, 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 62,112, 8,195, 41, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 80,108, 97,110,101, 46, 48, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 53, 0, 8,195, 59, 96, 8,195, 60, 48, 0, 0, 0, 0, 3,163,154, 32, 8,195, 56, 48, 0, 0, 0, 0, 8,195, 61,192,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 53, 48, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 54,176, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 57,224,
+ 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 32, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 76,205, 4, 55, 39,197,172,
+ 63, 76,204,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 5, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 53, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 53, 48, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,154, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 2, 40, 3,163,154, 32, 0, 0, 0, 58,
+ 0, 0, 0, 23,191, 76,205, 4, 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55,
+ 0, 0, 0, 0,190,204,204,216, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0,190,204,204,224,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,179, 0, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,180,144, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0, 62,204,204,213,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0, 62,204,204,205, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,182, 70, 0, 0, 52,128, 0, 0, 62,204,204,197, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,190,204,205, 47,
+ 0, 0, 0, 0, 63, 76,204,206, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 62, 0, 0, 52,128, 0, 0, 63, 76,204,206,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,191, 76,205, 4, 0, 0, 0, 0,191, 76,204,208, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0,190,204,205, 55, 0, 0, 0, 0,191, 76,204,212, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0,182, 70, 0, 0,
+ 52,128, 0, 0,191, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,191, 76,204,206,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 4, 0, 0, 0, 0, 63, 76,204,210, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 62,204,205, 53,180,128, 0, 0, 63, 76,204,214, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0, 62,204,204,213, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 62,204,204,221,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0, 0, 0, 0, 0, 52, 96, 0, 0, 0, 0,128, 1, 0, 0, 3, 1,
+ 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0, 52,240, 0, 0, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 63, 76,205, 0,
+ 0, 0, 0, 0,190,204,204,208, 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 62,204,205, 47,180,128, 0, 0,190,204,204,200,
+ 0, 0,128, 1, 0, 0, 3, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 54,176, 0, 0, 1, 42, 0, 0, 0, 5,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1,128, 8,195, 56, 48,
+ 0, 0, 0, 55, 0, 0, 0, 32, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 35,
+ 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 13,
+ 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 5,
+ 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 35,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 6,
+ 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 35,
+ 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 9, 0, 0, 0, 10,
+ 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 35, 0, 0, 0, 16,
+ 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 35,
+ 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 35, 0, 0, 0, 20, 0, 0, 0, 22,
+ 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 35, 0, 0, 0, 14,
+ 0, 0, 0, 22, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 57,224, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 59, 96,
+ 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,195, 60, 48, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 61,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,160, 8,195, 59, 96, 0, 0, 0, 54,
+ 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4,
+ 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 2,
+ 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 18,
+ 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22,
+ 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 14,
+ 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 96, 8,195, 60, 48, 0, 0, 0, 65, 0, 0, 0, 8, 62,137,192, 12, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1,
+ 0, 0, 0, 0, 62,213,228,252, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,137,192, 12, 63,125,226,162, 61,246,108,144, 63,125,226,162,
+ 61,246,108,144, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 62,213,229, 0,
+ 63,125,226,162, 62,137,192, 18, 63,125,226,162, 62,137,192, 12, 63,125,226,162, 62,213,228,252, 63,125,226,162, 0, 0, 0, 0,
+ 61, 0, 0, 1, 0, 0, 0, 0, 63, 55, 23,154, 63,125,226,162, 63, 17, 5, 34, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 63, 55, 23,152, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 62,213,228,252, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0,
+ 63, 17, 5, 30, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 55, 23,152, 63,125,226,162, 63, 17, 5, 30, 63,125,226,162,
+ 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 63, 17, 5, 30, 63,125,226,162, 62,213,228,252, 63,125,226,162, 62,213,228,252,
+ 63,125,226,162, 63, 17, 5, 30, 63,125,226,162, 0, 0, 0, 0, 61, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,128,
+ 8,195, 61,192, 0, 0, 0, 59, 0, 0, 0, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 62,112, 0, 0, 0, 52, 0, 0, 0, 1,
+ 8,195, 68, 96, 8,195, 51,192, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69,112,114,101,118,105,101,119, 0, 0, 0, 0,112,104,101,
+114,101, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 63,176, 7,248,144, 32, 7,249, 0, 32, 0, 0, 0, 0, 7,247,240, 32, 7,248, 48, 32,
+ 0, 0, 0, 0, 7,254, 48, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 63,224, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 65, 96, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 66,224, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,
+ 0, 0, 7,128, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64,186,224,117, 64,187, 13, 91, 64,186,240,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4,
+ 8,195, 63,176, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 94, 32, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 63,224, 0, 0, 1, 42,
+ 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7,247,240, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 60, 48,
+ 7,247,240, 32, 0, 0, 0, 58, 0, 0, 2,130,191,141,136, 28, 62,244,243, 12,192,183, 86,198,231,212, 10,117,130,191, 3,255,
+ 0, 0, 0, 0,192,131,102,240, 64,119,183, 30,191,199,169,109,166, 58, 84,158,221,230, 3,255, 0, 0, 0, 0, 63,239,108,119,
+ 64,156, 85,213,192, 40, 58,188, 40,228,106,207,198,137, 3,255, 0, 0, 0, 0, 64,146,135, 95,191, 14, 54, 63,192,102,194,241,
+100, 27,243,219,177, 45, 3,255, 0, 0, 0, 0, 62,141, 84,239,192,157,220, 16,192, 73, 2, 14, 6, 8,148, 39,187, 86, 3,255,
+ 0, 0, 0, 0,192,162,239,132,192, 12,165,206,191,240, 45,150,144,175,207,245,214,251, 3,255, 0, 0, 0, 0,190,141, 84,239,
+ 64,157,220, 16, 64, 73, 2, 14,249,248,107,217, 68,170, 3,255, 0, 0, 0, 0, 64,162,239,132, 64, 12,165,206, 63,240, 45,150,
+111, 81, 48, 11, 41, 5, 3,255, 0, 0, 0, 0, 64,131,102,240,192,119,183, 30, 63,199,169,109, 89,198,171, 98, 34, 26, 3,255,
+ 0, 0, 0, 0,191,239,108,119,192,156, 85,213, 64, 40, 58,188,215, 28,149, 49, 57,119, 3,255, 0, 0, 0, 0,192,146,135, 95,
+ 63, 14, 54, 63, 64,102,194,241,155,229, 12, 37, 78,211, 3,255, 0, 0, 0, 0, 63,141,136, 28,190,244,243, 12, 64,183, 86,198,
+ 24, 44,245,139,125, 65, 3,255, 0, 0, 0, 0,192, 68, 17,114, 64, 35,153,226,192,137, 26,154,189, 6, 55,226,162, 85, 3,255,
+ 0, 0, 0, 0, 62,230, 40,155, 64, 73,199,239,192,157, 52,176, 9,211, 68,237,148,153, 3,255, 0, 0, 0, 0,191,168, 55,124,
+ 64,164,177,224,192, 29,144, 58,227, 69,112,132,202, 46, 3,255, 0, 0, 0, 0,192,105, 35, 94,191,129, 88,230,192,143, 14,195,
+176, 93,233,233,158, 68, 3,255, 0, 0, 0, 0,192,173, 2, 37, 63,123,187,137,192, 1, 68, 56,137,206, 21,127,211,216, 3,255,
+ 0, 0, 0, 0, 64, 2,168,234,189, 57,158,231,192,175,149, 65, 44,162,255, 3,136, 11, 3,255, 0, 0, 0, 0, 64,114,159, 19,
+ 64, 34,226,254,192,106,133,196, 82,225, 55,164,175,228, 3,255, 0, 0, 0, 0,190,249,176,105,192, 39,148, 21,192,166,214,217,
+245, 87,198,194,142, 5, 3,255, 0, 0, 0, 0, 64, 54,163,227,192, 78,121, 86,192,125,202, 22, 62, 99,185,120,169, 79, 3,255,
+ 0, 0, 0, 0,192, 53, 40,241,192,134, 31,200,192, 60,188,229,194, 30,164, 94,191,136, 3,255, 0, 0, 0, 0,192,181,230, 96,
+191,119, 24, 33, 63,130, 26,174,131,186,234,231, 22, 56, 3,255, 0, 0, 0, 0,192,163, 93,103, 64, 38,128,136, 63,153,235, 83,
+144,100, 56,224, 26, 74, 3,255, 0, 0, 0, 0,192, 36,219,238, 64,165,151,132, 63,109,226,165,199,176,113, 33, 20, 80, 3,255,
+ 0, 0, 0, 0, 63,111,237, 24, 64,184,174,118, 62,154, 34,212, 20,125,126, 44, 6,148, 3,255, 0, 0, 0, 0, 64,130,244,163,
+ 64,133, 58,157,190,226, 95,125, 89,119, 91, 5,246, 86, 3,255, 0, 0, 0, 0, 64,181,230, 96, 63,119, 24, 33,191,130, 26,174,
+124, 70, 21, 25,233,200, 3,255, 0, 0, 0, 0, 64,163, 93,103,192, 38,128,136,191,153,235, 83,111,156,199, 32,229,182, 3,255,
+ 0, 0, 0, 0, 64, 36,219,238,192,165,151,132,191,109,226,165, 56, 80,142,223,235,176, 3,255, 0, 0, 0, 0,191,111,237, 24,
+192,184,174,118,190,154, 34,212,235,131,129,212,249,108, 3,255, 0, 0, 0, 0,192,130,244,163,192,133, 58,157, 62,226, 95,125,
+166,137,164,251, 9,170, 3,255, 0, 0, 0, 0,192, 54,163,227, 64, 78,121, 86, 64,125,202, 22,193,157, 70,136, 86,177, 3,255,
+ 0, 0, 0, 0, 64, 53, 40,241, 64,134, 31,200, 64, 60,188,229, 61,226, 91,162, 64,120, 3,255, 0, 0, 0, 0, 64,173, 2, 37,
+191,123,187,137, 64, 1, 68, 56,118, 50,234,129, 44, 40, 3,255, 0, 0, 0, 0, 63,168, 55,124,192,164,177,224, 64, 29,144, 58,
+ 28,187,143,124, 53,210, 3,255, 0, 0, 0, 0,192,114,159, 19,192, 34,226,254, 64,106,133,196,173, 31,200, 92, 80, 28, 3,255,
+ 0, 0, 0, 0,192, 2,168,234, 61, 57,158,231, 64,175,149, 65,211, 94, 0,253,119,245, 3,255, 0, 0, 0, 0, 62,249,176,105,
+ 64, 39,148, 21, 64,166,214,217, 10,169, 57, 62,113,251, 3,255, 0, 0, 0, 0, 64,105, 35, 94, 63,129, 88,230, 64,143, 14,195,
+ 79,163, 22, 23, 97,188, 3,255, 0, 0, 0, 0, 64, 68, 17,114,192, 35,153,226, 64,137, 26,154, 66,250,200, 30, 93,171, 3,255,
+ 0, 0, 0, 0,190,230, 40,155,192, 73,199,239, 64,157, 52,176,246, 45,187, 19,107,103, 3,255, 0, 0, 0, 0,192, 10,178, 37,
+ 63,201,231,138,192,166,143,149,209,129, 33,140,141,145, 3,255, 0, 0, 0, 0,192,110,132, 3, 64, 85,203,243,192, 66,107,151,
+174, 16, 73,158,190,209, 3,255, 0, 0, 0, 0,190,174,161,116, 63,241,152, 81,192,177, 2,110,247,217, 40, 15,134,182, 3,255,
+ 0, 0, 0, 0, 63,154, 91,138, 64,133,179,218,192,122,222,209, 27, 0, 92, 30,171, 86, 3,255, 0, 0, 0, 0,192, 52, 82, 7,
+ 64,149,252, 82,192, 5,202, 64,193, 39,101,227,210,181, 3,255, 0, 0, 0, 0, 62,148, 12,179, 64,166,221,251,192, 41, 87,188,
+ 7,192,113,224,198, 21, 3,255, 0, 0, 0, 0,192, 29,246,216,190,141,156, 17,192,169,167,209,203, 47,250,160,139,137, 3,255,
+ 0, 0, 0, 0,192,145, 72, 99,191,213,114, 79,192, 83, 35,183,156, 26,219, 3,185, 12, 3,255, 0, 0, 0, 0,192,158, 58,115,
+ 64, 33,120,129,191,238, 41,198,148,126, 56,116,215,137, 3,255, 0, 0, 0, 0,192,174,158,118,191, 33,148,103,192, 1,156,140,
+136,218,240,198,211,203, 3,255, 0, 0, 0, 0, 62,249, 14, 55, 62,102,133, 95,192,186,143,210, 9, 56, 5, 40,128,113, 3,255,
+ 0, 0, 0, 0, 64, 92, 61,220,190,159,230, 56,192,151, 61, 6, 76, 94,248,242,153,135, 3,255, 0, 0, 0, 0, 64, 60, 86, 7,
+ 64,119, 48, 60,192, 81, 88, 93, 63,119, 85,124,184,246, 3,255, 0, 0, 0, 0, 64,139, 55,252, 63,132, 95, 62,192,113,216,225,
+ 95,118, 21, 54,173,107, 3,255, 0, 0, 0, 0,191, 84, 6, 18,191,142, 96,251,192,182, 4, 76,237,158,233, 20,131,109, 3,255,
+ 0, 0, 0, 0,189,225, 74,109,192,123, 54, 51,192,138,246, 34,253,241,169, 39,162, 1, 3,255, 0, 0, 0, 0, 64,119, 66,153,
+191,251,154,127,192,123,220,161, 85, 59,214, 59,170, 34, 3,255, 0, 0, 0, 0, 63,208, 59,201,192,135,182,241,192,108,101,212,
+ 34,103,162,133,175,160, 3,255, 0, 0, 0, 0,191,169,246,161,192,151,196,235,192, 74,149,170,228, 95,151,253,186,184, 3,255,
+ 0, 0, 0, 0,192,131,198, 33,192, 84,137,218,192, 32,134, 37,164,247,184, 77,201,167, 3,255, 0, 0, 0, 0,192,179, 61,176,
+191,210,110,138,190,228,220, 24,133,210,219,130,244,238, 3,255, 0, 0, 0, 0,192,170,182, 73,190, 90, 16,136, 64, 25,194, 90,
+139,224,252, 8, 53,174, 3,255, 0, 0, 0, 0,192,153, 55, 75, 64, 87, 78, 4,190, 62, 54, 12,151,200, 74, 29,250,179, 3,255,
+ 0, 0, 0, 0,192,161, 19,235, 63,210, 12,207, 64, 31,242,210,146, 50, 34,244, 55,182, 3,255, 0, 0, 0, 0,192, 94, 75, 60,
+ 64,150,115,189,190,167,211,186,179, 98,102, 49,247,183, 3,255, 0, 0, 0, 0,191,189,191,186, 64,168, 32, 63, 64, 7,100,213,
+224,161,114,191, 47, 61, 3,255, 0, 0, 0, 0, 63,186,205,242, 64,177, 65,141,191,154,219,127, 32, 82,120,177,228, 61, 3,255,
+ 0, 0, 0, 0, 62,175,245, 99, 64,178, 12, 97, 63,228,253,255, 6,247,121, 65, 40, 98, 3,255, 0, 0, 0, 0, 64, 70, 92,226,
+ 64,150,131, 8,191,204, 77,182, 66,193,103, 37,220, 32, 3,255, 0, 0, 0, 0, 64,152,194,200, 64, 83,155,180, 63, 62,217,154,
+104,207, 71,101, 17, 87, 3,255, 0, 0, 0, 0, 64,170,182, 73, 62, 90, 16,136,192, 25,194, 90,116, 32, 3,248,202, 82, 3,255,
+ 0, 0, 0, 0, 64,179, 61,176, 63,210,110,138, 62,228,220, 24,122, 46, 36,126, 11, 18, 3,255, 0, 0, 0, 0, 64,161, 19,235,
+191,210, 12,207,192, 31,242,210,109,206,221, 12,200, 74, 3,255, 0, 0, 0, 0, 64,153, 55, 75,192, 87, 78, 4, 62, 62, 54, 12,
+104, 56,181,227, 5, 77, 3,255, 0, 0, 0, 0, 63,189,191,186,192,168, 32, 63,192, 7,100,213, 31, 95,141, 65,208,195, 3,255,
+ 0, 0, 0, 0, 64, 94, 75, 60,192,150,115,189, 62,167,211,186, 76,158,153,207, 8, 73, 3,255, 0, 0, 0, 0,190,175,245, 99,
+192,178, 12, 97,191,228,253,255,249, 9,134,191,215,158, 3,255, 0, 0, 0, 0,191,186,205,242,192,177, 65,141, 63,154,219,127,
+223,174,135, 79, 27,195, 3,255, 0, 0, 0, 0,192,152,194,200,192, 83,155,180,191, 62,217,154,151, 49,184,155,238,169, 3,255,
+ 0, 0, 0, 0,192, 70, 92,226,192,150,131, 8, 63,204, 77,182,189, 63,152,219, 35,224, 3,255, 0, 0, 0, 0,191,208, 59,201,
+ 64,135,182,241, 64,108,101,212,221,153, 93,123, 80, 96, 3,255, 0, 0, 0, 0,192,119, 66,153, 63,251,154,127, 64,123,220,161,
+170,197, 41,197, 85,222, 3,255, 0, 0, 0, 0, 63,169,246,161, 64,151,196,235, 64, 74,149,170, 27,161,104, 3, 69, 72, 3,255,
+ 0, 0, 0, 0, 64,131,198, 33, 64, 84,137,218, 64, 32,134, 37, 91, 9, 71,179, 54, 89, 3,255, 0, 0, 0, 0, 64,174,158,118,
+ 63, 33,148,103, 64, 1,156,140,119, 38, 15, 58, 44, 53, 3,255, 0, 0, 0, 0, 64,158, 58,115,192, 33,120,129, 63,238, 41,198,
+107,130,199,140, 40,119, 3,255, 0, 0, 0, 0, 64, 52, 82, 7,192,149,252, 82, 64, 5,202, 64, 62,217,154, 29, 45, 75, 3,255,
+ 0, 0, 0, 0,190,148, 12,179,192,166,221,251, 64, 41, 87,188,248, 64,142, 32, 57,235, 3,255, 0, 0, 0, 0,192, 60, 86, 7,
+192,119, 48, 60, 64, 81, 88, 93,192,137,170,132, 71, 10, 3,255, 0, 0, 0, 0,192,139, 55,252,191,132, 95, 62, 64,113,216,225,
+160,138,234,202, 82,149, 3,255, 0, 0, 0, 0,192, 92, 61,220, 62,159,230, 56, 64,151, 61, 6,179,162, 7, 14,102,121, 3,255,
+ 0, 0, 0, 0,190,249, 14, 55,190,102,133, 95, 64,186,143,210,246,200,250,216,127,143, 3,255, 0, 0, 0, 0, 61,225, 74,109,
+ 64,123, 54, 51, 64,138,246, 34, 2, 15, 86,217, 93,255, 3,255, 0, 0, 0, 0, 63, 84, 6, 18, 63,142, 96,251, 64,182, 4, 76,
+ 18, 98, 22,236,124,147, 3,255, 0, 0, 0, 0, 64,145, 72, 99, 63,213,114, 79, 64, 83, 35,183, 99,230, 36,253, 70,244, 3,255,
+ 0, 0, 0, 0, 64, 29,246,216, 62,141,156, 17, 64,169,167,209, 52,209, 5, 96,116,119, 3,255, 0, 0, 0, 0, 64,110,132, 3,
+192, 85,203,243, 64, 66,107,151, 81,240,182, 98, 65, 47, 3,255, 0, 0, 0, 0, 64, 10,178, 37,191,201,231,138, 64,166,143,149,
+ 46,127,222,116,114,111, 3,255, 0, 0, 0, 0,191,154, 91,138,192,133,179,218, 64,122,222,209,229, 0,163,226, 84,170, 3,255,
+ 0, 0, 0, 0, 62,174,161,116,191,241,152, 81, 64,177, 2,110, 8, 39,215,241,121, 74, 3,255, 0, 0, 0, 0,192, 19, 76, 36,
+ 64,129,151, 25,192, 98,254,212,206,231, 88, 97,177,131, 3,255, 0, 0, 0, 0,191,175,232, 93, 64, 64, 23,177,192,154,186, 69,
+225,227, 66,235,151, 34, 3,255, 0, 0, 0, 0,190,232,190,208, 64,139,160, 93,192,120, 33,191,244,183, 94,205,170,192, 3,255,
+ 0, 0, 0, 0,192,142,126,210, 63,238, 49, 43,192, 84, 30,112,158,187, 39, 95,182,183, 3,255, 0, 0, 0, 0,192, 97,165,138,
+ 63, 80, 9, 92,192,147, 74, 20,177,183, 17,233,156, 86, 3,255, 0, 0, 0, 0,192,152, 61, 98,188,106, 63, 87,192, 90, 97, 6,
+152,127, 0,251,180,183, 3,255, 0, 0, 0, 0, 64, 14,173,200, 64, 63,183,155,192,144, 75,192, 48,206, 64, 45,156,152, 3,255,
+ 0, 0, 0, 0, 63,167,162, 95, 63,209, 29,144,192,174,245, 25, 29,250, 36, 75,136,250, 3,255, 0, 0, 0, 0, 64, 68, 62,211,
+ 63,168, 56, 51,192,153,245, 13, 65,241, 29,192,150,106, 3,255, 0, 0, 0, 0, 64, 36,182, 33,191,220, 38, 34,192,159, 5,150,
+ 54,233,217,211,146,223, 3,255, 0, 0, 0, 0, 63, 81, 34, 16,191,179, 64,129,192,180, 5,162, 18,242,224, 93,133,111, 3,255,
+ 0, 0, 0, 0, 63,159, 56,212,192, 68,166,172,192,154,108,212, 27,176,190, 32,149,208, 3,255, 0, 0, 0, 0,191,223, 76,204,
+192,101, 32,170,192,137, 83, 65,216,199,178,195,161,198, 3,255, 0, 0, 0, 0,192, 10,249,249,191,244, 52, 62,192,162,236, 25,
+208, 9,213, 0,145,102, 3,255, 0, 0, 0, 0,192, 89,207, 42,192, 47, 6,251,192,121,165, 27,182,209,196, 18,169,198, 3,255,
+ 0, 0, 0, 0,192,176,215,137, 63,241, 62, 25,190,219,254,179,134,179, 39,232,247, 78, 3,255, 0, 0, 0, 0,192,186,150, 28,
+ 60, 28, 16,150,191, 7, 9,191,128,118, 1,131,245, 77, 3,255, 0, 0, 0, 0,192,181,132, 34, 63, 92, 60, 99, 63,149, 81,217,
+131,181, 18,238, 23,252, 3,255, 0, 0, 0, 0,190, 74,242,175, 64,183,173,164,191,145,105,227,250,117,125,160,232, 31, 3,255,
+ 0, 0, 0, 0,192, 2,227,219, 64,173,164, 96,191, 78, 71,200,212,164,119, 52,238,226, 3,255, 0, 0, 0, 0,191, 92,140,181,
+ 64,184, 38, 75, 63, 37,148,176,236,224,125,237, 12,159, 3,255, 0, 0, 0, 0, 64,159,104, 75, 63,236, 56,212,192, 29,126,240,
+108,211, 41,166,203, 9, 3,255, 0, 0, 0, 0, 64,132,159,215, 64, 97,184, 84,192, 10, 44, 30, 91,176, 76, 19,209, 56, 3,255,
+ 0, 0, 0, 0, 64,164,122, 95, 64, 44,143,199,191, 68, 78, 53,112, 17, 59, 17,237,185, 3,255, 0, 0, 0, 0, 64, 54,176,255,
+192,141, 84,243,192, 36,176,237, 63,192,160, 9,200, 63, 3,255, 0, 0, 0, 0, 64,133,229, 93,192, 68, 21,217,192, 45,226,157,
+ 90,249,187,187,197, 78, 3,255, 0, 0, 0, 0, 64,129, 56,203,192,130,211, 21,191,143,115,187, 87,252,166,194,229,252, 3,255,
+ 0, 0, 0, 0,192,104,239,189,192,140,142, 82,191,168,178,178,177,134,158,245,227,155, 3,255, 0, 0, 0, 0,191,253,141, 50,
+192,167,155, 52,191,218,181,170,211,125,141,166,219,155, 3,255, 0, 0, 0, 0,192, 41, 58,164,192,167, 34,172, 61,151,232,206,
+197,232,141,243, 0, 26, 3,255, 0, 0, 0, 0,192,133,229, 93, 64, 68, 21,217, 64, 45,226,157,165, 7, 68, 69, 58,178, 3,255,
+ 0, 0, 0, 0,192,129, 56,203, 64,130,211, 21, 63,143,115,187,168, 4, 89, 62, 26, 4, 3,255, 0, 0, 0, 0,192, 54,176,255,
+ 64,141, 84,243, 64, 36,176,237,192, 64, 95,247, 55,193, 3,255, 0, 0, 0, 0, 63,253,141, 50, 64,167,155, 52, 63,218,181,170,
+ 44,131,114, 90, 36,101, 3,255, 0, 0, 0, 0, 64, 41, 58,164, 64,167, 34,172,189,151,232,206, 58, 24,114, 13,255,230, 3,255,
+ 0, 0, 0, 0, 64,104,239,189, 64,140,142, 82, 63,168,178,178, 78,122, 97, 11, 28,101, 3,255, 0, 0, 0, 0, 64,186,150, 28,
+188, 28, 16,150, 63, 7, 9,191,127,138,254,125, 10,179, 3,255, 0, 0, 0, 0, 64,181,132, 34,191, 92, 60, 99,191,149, 81,217,
+124, 75,237, 18,232, 4, 3,255, 0, 0, 0, 0, 64,176,215,137,191,241, 62, 25, 62,219,254,179,121, 77,216, 24, 8,178, 3,255,
+ 0, 0, 0, 0, 64, 2,227,219,192,173,164, 96, 63, 78, 71,200, 43, 92,136,204, 17, 30, 3,255, 0, 0, 0, 0, 63, 92,140,181,
+192,184, 38, 75,191, 37,148,176, 19, 32,130, 19,243, 97, 3,255, 0, 0, 0, 0, 62, 74,242,175,192,183,173,164, 63,145,105,227,
+ 5,139,130, 96, 23,225, 3,255, 0, 0, 0, 0,192,132,159,215,192, 97,184, 84, 64, 10, 44, 30,164, 80,179,237, 46,200, 3,255,
+ 0, 0, 0, 0,192,164,122, 95,192, 44,143,199, 63, 68, 78, 53,143,239,196,239, 18, 71, 3,255, 0, 0, 0, 0,192,159,104, 75,
+191,236, 56,212, 64, 29,126,240,147, 45,214, 90, 52,247, 3,255, 0, 0, 0, 0,191,159, 56,212, 64, 68,166,172, 64,154,108,212,
+228, 80, 65,224,106, 48, 3,255, 0, 0, 0, 0,192, 36,182, 33, 63,220, 38, 34, 64,159, 5,150,201, 23, 38, 45,109, 33, 3,255,
+ 0, 0, 0, 0,191, 81, 34, 16, 63,179, 64,129, 64,180, 5,162,237, 14, 31,163,122,145, 3,255, 0, 0, 0, 0, 64, 89,207, 42,
+ 64, 47, 6,251, 64,121,165, 27, 73, 47, 59,238, 86, 58, 3,255, 0, 0, 0, 0, 63,223, 76,208, 64,101, 32,170, 64,137, 83, 65,
+ 39, 57, 77, 61, 94, 58, 3,255, 0, 0, 0, 0, 64, 10,249,249, 63,244, 52, 62, 64,162,236, 25, 47,247, 43, 0,110,154, 3,255,
+ 0, 0, 0, 0, 64,142,126,210,191,238, 49, 43, 64, 84, 30,112, 97, 69,216,161, 73, 73, 3,255, 0, 0, 0, 0, 64,152, 61, 98,
+ 60,106, 63, 87, 64, 90, 97, 6,103,129,255, 5, 75, 73, 3,255, 0, 0, 0, 0, 64, 97,165,138,191, 80, 9, 92, 64,147, 74, 20,
+ 78, 73,238, 23, 99,170, 3,255, 0, 0, 0, 0, 62,232,190,208,192,139,160, 93, 64,120, 33,191, 11, 73,161, 51, 85, 64, 3,255,
+ 0, 0, 0, 0, 64, 19, 76, 36,192,129,151, 25, 64, 98,254,212, 49, 25,167,159, 78,125, 3,255, 0, 0, 0, 0, 63,175,232, 93,
+192, 64, 23,177, 64,154,186, 69, 30, 29,189, 21,104,222, 3,255, 0, 0, 0, 0,192, 68, 62,211,191,168, 56, 51, 64,153,245, 13,
+190, 15,226, 64,105,150, 3,255, 0, 0, 0, 0,192, 14,173,200,192, 63,183,155, 64,144, 75,192,207, 50,191,211, 99,104, 3,255,
+ 0, 0, 0, 0,191,167,162, 95,191,209, 29,144, 64,174,245, 25,226, 6,219,181,119, 6, 3,255, 0, 0, 0, 0,191,211,156,158,
+ 63,132,228,185,192,176,207,190,220,164, 21,231,134,244, 3,255, 0, 0, 0, 0,192, 41, 76, 0, 64, 5,199,190,192,153,157, 83,
+198,146, 45, 75,150,246, 3,255, 0, 0, 0, 0,192,125, 83,204, 64,105, 55,169,192, 20,162,244,169, 72, 79,246,206, 82, 3,255,
+ 0, 0, 0, 0,192, 91,215,178, 64, 62,235,222,192,108,254,190,180,215, 65, 87,175,155, 3,255, 0, 0, 0, 0,191, 59, 63,242,
+ 63,152,237,210,192,182, 21,251,239,125, 25, 26,131,149, 3,255, 0, 0, 0, 0, 61, 94,230, 86, 64, 35, 30,198,192,169, 15,233,
+ 0,238, 55, 52,140,135, 3,255, 0, 0, 0, 0, 63,199, 4,220, 64,146,145, 7,192, 83,186,104, 34,109,100,137,184,168, 3,255,
+ 0, 0, 0, 0, 63, 86,120, 9, 64,109, 91,149,192,142,242, 79, 18,133, 81, 64,158,218, 3,255, 0, 0, 0, 0,192, 95,243,103,
+ 64,138, 91,221,191,236, 15,186,178,170, 93,219,216, 25, 3,255, 0, 0, 0, 0,192, 5,206, 46, 64,159, 41,121,192, 19, 91,154,
+209,230,108, 96,205,226, 3,255, 0, 0, 0, 0, 63,139,200,169, 64,163, 78,198,192, 42,146,201, 24,247,111, 59,197,206, 3,255,
+ 0, 0, 0, 0,191, 4,128,187, 64,167,181,206,192, 37, 92, 74,245, 57,114, 96,199,145, 3,255, 0, 0, 0, 0,191,231, 16,151,
+ 61,209,166,160,192,178, 95,167,217,136, 2,196,133,245, 3,255, 0, 0, 0, 0,192, 69,200,163,191, 38,143,178,192,158, 48,148,
+188,243,242, 11,147,223, 3,255, 0, 0, 0, 0,192,155,192, 43,191,250, 6,151,192, 39, 82,170,149, 79,212,247,199,231, 3,255,
+ 0, 0, 0, 0,192,132,118,233,191,173,111,217,192,123,122, 67,165,100,226, 58,170,165, 3,255, 0, 0, 0, 0,192,146, 85,238,
+ 64, 78,205,178,191,221, 54, 70,156,183, 71,134,218,120, 3,255, 0, 0, 0, 0,192,167,137, 76, 63,227, 31,111,191,251, 57,158,
+141,234, 39, 54,213, 59, 3,255, 0, 0, 0, 0,192,170,143, 39,191,183, 15,167,191,252, 85,251,139,217,223,169,213, 13, 3,255,
+ 0, 0, 0, 0,192,175,214, 8, 62, 53,124,177,192, 2,241,206,136, 23, 3, 89,211, 92, 3,255, 0, 0, 0, 0,190,160,160, 77,
+ 62,182, 20, 9,192,186,232,108,248, 8, 7,241,128,128, 3,255, 0, 0, 0, 0, 63,163,144, 33, 61,186,144,151,192,183, 47, 50,
+ 27, 97, 2, 19,130,252, 3,255, 0, 0, 0, 0, 64,129,179,222,190,224,147,234,192,134,180, 38, 89, 83,246, 64,164,218, 3,255,
+ 0, 0, 0, 0, 64, 49,138,114,190, 57, 97,246,192,165, 76, 57, 60,250,251,247,143,138, 3,255, 0, 0, 0, 0, 64, 27,158,249,
+ 64,141,118,197,192, 62,196, 58, 52, 90, 97, 70,191, 90, 3,255, 0, 0, 0, 0, 64, 89,244, 98, 64, 79,120, 8,192, 96,128, 65,
+ 74, 8, 71, 39,179,151, 3,255, 0, 0, 0, 0, 64,144,100, 13, 62,118,214,200,192,110,205, 64, 98,182, 4, 37,174,161, 3,255,
+ 0, 0, 0, 0, 64,131,202, 42, 63,231,161, 60,192,112,245,142, 90, 10, 38,255,173,209, 3,255, 0, 0, 0, 0,191,122, 51,149,
+190,163,151, 52,192,184,157, 15,234,118,250, 36,129,248, 3,255, 0, 0, 0, 0,191, 42,113, 5,191,241,112, 31,192,176,119, 15,
+241, 93,215, 84,135,135, 3,255, 0, 0, 0, 0, 61,172, 55, 60,192,143, 64, 22,192,113,246,164, 2, 27,157,132,174, 71, 3,255,
+ 0, 0, 0, 0,190,154,173,167,192, 83,224,111,192,154,169,198,249,136,183, 89,150,211, 3,255, 0, 0, 0, 0, 64,136,133,151,
+191,162,249, 9,192,115,219,106, 93,175,229, 47,173, 3, 3,255, 0, 0, 0, 0, 64, 89,124,110,192, 40, 6,135,192,127,195,223,
+ 74,120,199, 31,168,208, 3,255, 0, 0, 0, 0, 63,117,248,244,192,148, 90,109,192, 93, 0,123, 20, 8,154, 66,180,249, 3,255,
+ 0, 0, 0, 0, 64, 17, 0,162,192,113,196, 63,192,119,239, 52, 49, 10,173, 64,171,144, 3,255, 0, 0, 0, 0,191, 7,217,162,
+192,156,117, 21,192, 75,238,222,245,139,149, 20,186,108, 3,255, 0, 0, 0, 0,192, 6,144,171,192,144,158,112,192, 69,241,198,
+210,156,157, 55,188,115, 3,255, 0, 0, 0, 0,192,148,238,110,192, 50,109,115,192, 13,197,187,153,170,195,231,208, 17, 3,255,
+ 0, 0, 0, 0,192, 96,252, 79,192,115, 40,140,192, 48,165,116,178,226,173, 98,195,236, 3,255, 0, 0, 0, 0,192,172,228,100,
+191,248,128,217,191,150, 93, 8,138, 91,213, 53,229, 86, 3,255, 0, 0, 0, 0,192,182,171, 82,191,168,250,216, 62,147, 15, 15,
+131,122,226,250, 5,203, 3,255, 0, 0, 0, 0,192,160, 73,215, 62, 49,165,124, 64, 66, 85,232,147, 33, 4, 84, 67, 42, 3,255,
+ 0, 0, 0, 0,192,178, 89,171,191, 24,115,192, 63,221,116, 78,134,129,243, 64, 38, 50, 3,255, 0, 0, 0, 0,192,143,206, 51,
+ 64,105,250,133,191, 97,251,119,158, 85, 80, 53,235,193, 3,255, 0, 0, 0, 0,192,160, 32, 62, 64, 65, 38,163, 63, 3,117,164,
+146,236, 66, 24, 10,193, 3,255, 0, 0, 0, 0,192,155,108,216, 63,141,255, 59, 64, 69,117,189,150, 61, 23,119, 68, 42, 3,255,
+ 0, 0, 0, 0,192,164, 27, 85, 64, 9, 78,244, 63,239,193, 87,144, 33, 46,128, 41, 73, 3,255, 0, 0, 0, 0,192,117, 35,134,
+ 64,138,152, 39,191,116, 86, 73,171,230, 94, 2,234, 73, 3,255, 0, 0, 0, 0,192, 67,220, 35, 64,159,218, 6, 62,155,103,242,
+188,240,108,215, 6, 55, 3,255, 0, 0, 0, 0,191, 99, 79,130, 64,164,182,215, 64, 42, 4, 10,237,118,112, 50, 58,190, 3,255,
+ 0, 0, 0, 0,192, 3, 86,161, 64,168,205, 14, 63,197, 55, 60,211,148,115, 31, 33,255, 3,255, 0, 0, 0, 0, 63,215,101,229,
+ 64,168,141, 84,191,248, 90, 16, 37, 11,114,148,212,159, 3,255, 0, 0, 0, 0, 63,155, 52, 99, 64,183, 17,198,190,235,199,232,
+ 26,159,124,192,245,120, 3,255, 0, 0, 0, 0, 61, 10,179,105, 64,169,185, 25, 64, 31,119,120, 0, 77,115,101, 55, 96, 3,255,
+ 0, 0, 0, 0, 63, 37,198,143, 64,183,120,123, 63,135,108,160, 13,240,125, 8, 23,144, 3,255, 0, 0, 0, 0, 64, 32,174,180,
+ 64,155, 13, 65,192, 8,167,238, 53,247,105,245,208,163, 3,255, 0, 0, 0, 0, 64,104,199, 69, 64,143,135,177,191,132, 12, 41,
+ 79, 10, 98, 10,233, 31, 3,255, 0, 0, 0, 0, 64,159,134,121, 64, 49,245, 49, 63,169,166,210,109, 27, 59,242, 29,190, 3,255,
+ 0, 0, 0, 0, 64,143,133, 52, 64,113,200,119, 62, 29,206,186, 98, 20, 82, 39, 3,190, 3,255, 0, 0, 0, 0, 64,160, 73,215,
+190, 49,165,124,192, 66, 85,232,108,223,251,172,188,214, 3,255, 0, 0, 0, 0, 64,178, 89,171, 63, 24,115,192,191,221,116, 78,
+121,127, 12,192,217,206, 3,255, 0, 0, 0, 0, 64,172,228,100, 63,248,128,217, 63,150, 93, 8,117,165, 42,203, 26,170, 3,255,
+ 0, 0, 0, 0, 64,182,171, 82, 63,168,250,216,190,147, 15, 15,124,134, 29, 6,250, 53, 3,255, 0, 0, 0, 0, 64,155,108,216,
+191,141,255, 59,192, 69,117,189,105,195,232,137,187,214, 3,255, 0, 0, 0, 0, 64,164, 27, 85,192, 9, 78,244,191,239,193, 87,
+111,223,209,128,214,183, 3,255, 0, 0, 0, 0, 64,143,206, 51,192,105,250,133, 63, 97,251,119, 97,171,175,203, 20, 63, 3,255,
+ 0, 0, 0, 0, 64,160, 32, 62,192, 65, 38,163,191, 3,117,164,109, 20,189,232,245, 63, 3,255, 0, 0, 0, 0, 63, 99, 79,130,
+192,164,182,215,192, 42, 4, 10, 18,138,143,206,197, 66, 3,255, 0, 0, 0, 0, 64, 3, 86,161,192,168,205, 14,191,197, 55, 60,
+ 44,108,140,225,222, 1, 3,255, 0, 0, 0, 0, 64,117, 35,134,192,138,152, 39, 63,116, 86, 73, 84, 26,161,254, 21,183, 3,255,
+ 0, 0, 0, 0, 64, 67,220, 35,192,159,218, 6,190,155,103,242, 67, 16,147, 41,249,201, 3,255, 0, 0, 0, 0,189, 10,179,105,
+192,169,185, 25,192, 31,119,120,255,179,140,155,200,160, 3,255, 0, 0, 0, 0,191, 37,198,143,192,183,120,123,191,135,108,160,
+242, 16,130,248,232,112, 3,255, 0, 0, 0, 0,191,215,101,229,192,168,141, 84, 63,248, 90, 16,218,245,141,108, 43, 97, 3,255,
+ 0, 0, 0, 0,191,155, 52, 99,192,183, 17,198, 62,235,199,232,229, 97,131, 64, 10,136, 3,255, 0, 0, 0, 0,192,159,134,121,
+192, 49,245, 49,191,169,166,210,146,229,196, 14,226, 66, 3,255, 0, 0, 0, 0,192,143,133, 52,192,113,200,119,190, 29,206,186,
+157,236,173,217,252, 66, 3,255, 0, 0, 0, 0,192, 32,174,180,192,155, 13, 65, 64, 8,167,238,202, 9,150, 11, 47, 93, 3,255,
+ 0, 0, 0, 0,192,104,199, 69,192,143,135,177, 63,132, 12, 41,176,246,157,246, 22,225, 3,255, 0, 0, 0, 0,191,117,248,244,
+ 64,148, 90,109, 64, 93, 0,123,235,248,101,190, 75, 7, 3,255, 0, 0, 0, 0,192, 17, 0,162, 64,113,196, 63, 64,119,239, 52,
+206,246, 82,192, 84,112, 3,255, 0, 0, 0, 0,192,136,133,151, 63,162,249, 9, 64,115,219,106,162, 81, 26,209, 82,253, 3,255,
+ 0, 0, 0, 0,192, 89,124,110, 64, 40, 6,135, 64,127,195,223,181,136, 56,225, 87, 48, 3,255, 0, 0, 0, 0, 63, 7,217,162,
+ 64,156,117, 21, 64, 75,238,222, 10,117,106,236, 69,148, 3,255, 0, 0, 0, 0, 64, 6,144,171, 64,144,158,112, 64, 69,241,198,
+ 45,100, 98,201, 67,141, 3,255, 0, 0, 0, 0, 64,148,238,110, 64, 50,109,115, 64, 13,197,187,102, 86, 60, 25, 47,239, 3,255,
+ 0, 0, 0, 0, 64, 96,252, 79, 64,115, 40,140, 64, 48,165,116, 77, 30, 82,158, 60, 20, 3,255, 0, 0, 0, 0, 64,170,143, 39,
+ 63,183, 15,167, 63,252, 85,251,116, 39, 32, 87, 42,243, 3,255, 0, 0, 0, 0, 64,175,214, 8,190, 53,124,177, 64, 2,241,206,
+119,233,252,167, 44,164, 3,255, 0, 0, 0, 0, 64,146, 85,238,192, 78,205,178, 63,221, 54, 70, 99, 73,184,122, 37,136, 3,255,
+ 0, 0, 0, 0, 64,167,137, 76,191,227, 31,111, 63,251, 57,158,114, 22,216,202, 42,197, 3,255, 0, 0, 0, 0, 64, 95,243,103,
+192,138, 91,221, 63,236, 15,186, 77, 86,162, 37, 39,231, 3,255, 0, 0, 0, 0, 64, 5,206, 46,192,159, 41,121, 64, 19, 91,154,
+ 46, 26,147,160, 50, 30, 3,255, 0, 0, 0, 0,191,139,200,169,192,163, 78,198, 64, 42,146,201,231, 9,144,197, 58, 50, 3,255,
+ 0, 0, 0, 0, 63, 4,128,187,192,167,181,206, 64, 37, 92, 74, 10,199,141,160, 56,111, 3,255, 0, 0, 0, 0,192, 27,158,249,
+192,141,118,197, 64, 62,196, 58,203,166,158,186, 64,166, 3,255, 0, 0, 0, 0,192, 89,244, 98,192, 79,120, 8, 64, 96,128, 65,
+181,248,184,217, 76,105, 3,255, 0, 0, 0, 0,192,144,100, 13,190,118,214,200, 64,110,205, 64,157, 74,251,219, 81, 95, 3,255,
+ 0, 0, 0, 0,192,131,202, 42,191,231,161, 60, 64,112,245,142,165,246,217, 1, 82, 47, 3,255, 0, 0, 0, 0,192,129,179,222,
+ 62,224,147,234, 64,134,180, 38,166,173, 9,192, 91, 38, 3,255, 0, 0, 0, 0,192, 49,138,114, 62, 57, 97,246, 64,165, 76, 57,
+195, 6, 4, 9,112,118, 3,255, 0, 0, 0, 0, 62,160,160, 77,190,182, 20, 9, 64,186,232,108, 7,248,248, 15,127,128, 3,255,
+ 0, 0, 0, 0,191,163,144, 33,189,186,144,151, 64,183, 47, 50,228,159,253,237,125, 4, 3,255, 0, 0, 0, 0,189,172, 55, 60,
+ 64,143, 64, 22, 64,113,246,164,253,229, 98,124, 81,185, 3,255, 0, 0, 0, 0, 62,154,173,167, 64, 83,224,111, 64,154,169,198,
+ 6,120, 72,167,105, 45, 3,255, 0, 0, 0, 0, 63,122, 51,149, 62,163,151, 52, 64,184,157, 15, 21,138, 5,220,126, 8, 3,255,
+ 0, 0, 0, 0, 63, 42,113, 5, 63,241,112, 31, 64,176,119, 15, 14,163, 40,172,120,121, 3,255, 0, 0, 0, 0, 64,155,192, 43,
+ 63,250, 6,151, 64, 39, 82,170,106,177, 43, 9, 56, 25, 3,255, 0, 0, 0, 0, 64,132,118,233, 63,173,111,217, 64,123,122, 67,
+ 90,156, 29,198, 85, 91, 3,255, 0, 0, 0, 0, 63,231, 16,151,189,209,166,160, 64,178, 95,167, 38,120,253, 60,122, 11, 3,255,
+ 0, 0, 0, 0, 64, 69,200,163, 63, 38,143,178, 64,158, 48,148, 67, 13, 13,245,108, 33, 3,255, 0, 0, 0, 0, 64,125, 83,204,
+192,105, 55,169, 64, 20,162,244, 86,184,176, 10, 49,174, 3,255, 0, 0, 0, 0, 64, 91,215,178,192, 62,235,222, 64,108,254,190,
+ 75, 41,190,169, 80,101, 3,255, 0, 0, 0, 0, 63,211,156,158,191,132,228,185, 64,176,207,190, 35, 92,234, 25,121, 12, 3,255,
+ 0, 0, 0, 0, 64, 41, 76, 0,192, 5,199,190, 64,153,157, 83, 57,110,210,181,105, 10, 3,255, 0, 0, 0, 0,191,199, 4,220,
+192,146,145, 7, 64, 83,186,104,221,147,155,119, 71, 88, 3,255, 0, 0, 0, 0,191, 86,120, 9,192,109, 91,149, 64,142,242, 79,
+237,123,174,192, 97, 38, 3,255, 0, 0, 0, 0, 63, 59, 63,242,191,152,237,210, 64,182, 21,251, 16,131,230,230,124,107, 3,255,
+ 0, 0, 0, 0,189, 94,230, 86,192, 35, 30,198, 64,169, 15,233,255, 18,200,204,115,121, 3,255, 0, 0, 0, 0,192, 46, 27,208,
+ 64, 86,104,124,192,126, 52, 85,197,137, 72,226,168,134, 3,255, 0, 0, 0, 0,191,234,168, 82, 64,149, 62, 87,192, 67, 12,118,
+217, 5,101,188,188,210, 3,255, 0, 0, 0, 0,192, 16, 10,186, 64, 52,106,249,192,147,253,210,206,182, 62,131,155,198, 3,255,
+ 0, 0, 0, 0,190,240, 33, 93, 64, 71,199,191,192,158, 47,142,245,214, 69, 40,148,199, 3,255, 0, 0, 0, 0,187, 71, 46, 19,
+ 64,115,240,194,192,142,166,175,254,240, 82,161,158, 66, 3,255, 0, 0, 0, 0,191,101,194,188, 64,154, 84, 17,192, 77,193,240,
+235, 76,104,214,185,142, 3,255, 0, 0, 0, 0,192,115,246,246, 64, 15, 86,183,192,118,168, 51,172,249, 47,229,171, 45, 3,255,
+ 0, 0, 0, 0,192,160, 1,101, 63,184,146, 47,192, 45, 38,153,146,225, 30, 96,196,102, 3,255, 0, 0, 0, 0,192, 85,229,215,
+ 63,218,178,166,192,144, 55,183,182, 38, 37,133,158,110, 3,255, 0, 0, 0, 0,192,104,178,151,189,205,107,245,192,147, 60,175,
+175,178,253,205,156, 91, 3,255, 0, 0, 0, 0,192,136, 81,192,191, 4,239, 55,192,127,222, 24,163,130,245,158,168, 35, 3,255,
+ 0, 0, 0, 0,192,164,241, 70, 62,251,218,102,192, 48, 82,143,143,222, 11,210,195,110, 3,255, 0, 0, 0, 0, 63,173,230,209,
+ 64, 71,135,231,192,152,234, 27, 29,148, 67, 4,151, 11, 3,255, 0, 0, 0, 0, 64, 67,103,158, 64, 51,206, 82,192,132,168, 39,
+ 66,203, 60, 63,164,242, 3,255, 0, 0, 0, 0, 63,100,131,136, 64, 27, 95, 16,192,168,115, 4, 20,122, 53,138,141,143, 3,255,
+ 0, 0, 0, 0, 63,217,154, 77, 63, 78, 69,185,192,177,196,221, 38, 53, 17,236,135, 42, 3,255, 0, 0, 0, 0, 64, 37,195,107,
+ 63, 36,213, 4,192,167, 33, 20, 55,151, 14,194,141,168, 3,255, 0, 0, 0, 0, 64, 94,139,103, 63,250,146,153,192,137,141, 72,
+ 75, 19, 43,156,161,245, 3,255, 0, 0, 0, 0, 64, 21,195,231,191,101, 58,236,192,169,178,218, 49,247,236, 31,139,218, 3,255,
+ 0, 0, 0, 0, 64, 48, 32,142,192, 32,140,155,192,145, 1,195, 59, 3,200,178,156,204, 3,255, 0, 0, 0, 0, 63,185,155, 70,
+191, 59,202, 12,192,180, 86,163, 32,149,239, 73,133, 91, 3,255, 0, 0, 0, 0, 62, 43, 97, 29,192, 2,118,144,192,175,231,125,
+ 4,106,210,160,136,103, 3,255, 0, 0, 0, 0, 62,196,116, 97,192, 56,176, 10,192,162,239,120, 8,164,194, 20,144, 81, 3,255,
+ 0, 0, 0, 0, 64, 5, 2,185,192, 76,105,217,192,142,173,135, 45,218,187, 79,158, 56, 3,255, 0, 0, 0, 0,191,144,243,163,
+192, 73, 41,252,192,154, 66,148,230,134,188, 73,150,107, 3,255, 0, 0, 0, 0,192, 20,133,147,192,124, 55,234,192,107, 3,176,
+204,110,170,196,175,164, 3,255, 0, 0, 0, 0,192, 60,186, 42,191,189,128,219,192,155, 43, 23,191, 41,222,189,150,199, 3,255,
+ 0, 0, 0, 0,191,172,164, 52,192, 18,240,106,192,167, 58,141,226, 76,204,213,142,128, 3,255, 0, 0, 0, 0,192,100,171, 12,
+191,243, 33,249,192,135,221,106,178,248,214,143,162,143, 3,255, 0, 0, 0, 0,192, 74, 78,195,192, 96,206,241,192, 94, 88, 98,
+188, 4,179, 34,179,129, 3,255, 0, 0, 0, 0,192,177,110, 41, 63,186, 30, 81,191,158,249,105,134,160, 30,165,229, 86, 3,255,
+ 0, 0, 0, 0,192,172,138, 45, 64, 17,149,114, 62,200,203,127,137,251, 48,171, 9, 56, 3,255, 0, 0, 0, 0,192,182, 94, 10,
+ 63, 1, 5, 48,191,165, 81, 86,131,156, 12, 24,228, 94, 3,255, 0, 0, 0, 0,192,186,224,117,190,247,234, 37, 62,126, 56,147,
+128,132,246,101, 6, 46, 3,255, 0, 0, 0, 0,192,184, 78,204,189, 89,193, 19, 63,141,163,187,130, 22,254,208, 22,241, 3,255,
+ 0, 0, 0, 0,192,174,232,105, 63,224,187,151, 63,153,183,156,136,137, 38,137, 25, 3, 3,255, 0, 0, 0, 0,191, 68,118, 42,
+ 64,176,173,101,191,233,132,114,238, 57,120,142,216,217, 3,255, 0, 0, 0, 0, 62,191,172, 81, 64,186,208, 67,190,216,163,195,
+ 7, 75,127,131,247,159, 3,255, 0, 0, 0, 0,191,218, 2,113, 64,171,151,172,191,212, 25,114,219,243,117,116,220, 30, 3,255,
+ 0, 0, 0, 0,192, 21,244,251, 64,172, 12, 28, 61,128,151, 13,205,229,117,196, 1,226, 3,255, 0, 0, 0, 0,191,223, 39, 51,
+ 64,177, 94,248, 63, 76,122,104,217,155,121, 3, 16, 65, 3,255, 0, 0, 0, 0, 61, 28,208, 72, 64,187, 13, 91, 62,245,215, 64,
+ 0,187,127,168, 9, 66, 3,255, 0, 0, 0, 0, 64,142, 93, 45, 64, 14,137, 70,192, 70,202,147, 96,241, 49,173,188,202, 3,255,
+ 0, 0, 0, 0, 64,173, 23,106, 63,182,131,157,191,225,176,175,118, 7, 32, 20,218, 72, 3,255, 0, 0, 0, 0, 64,128,203, 78,
+ 64, 69, 14,124,192, 61, 0, 55, 88,168, 66, 80,191,199, 3,255, 0, 0, 0, 0, 64,133,175,133, 64,121,149, 28,191,168,212, 51,
+ 92, 4, 84, 86,227,170, 3,255, 0, 0, 0, 0, 64,149,211, 8, 64, 94,166, 84,191, 29, 24, 68,101,221, 76, 30,241,113, 3,255,
+ 0, 0, 0, 0, 64,175,169, 31, 63,237,176,138,191,103,168, 15,119,152, 40,128,235, 11, 3,255, 0, 0, 0, 0, 64, 57, 78,122,
+192,120, 12,224,192, 84, 56, 7, 64, 62,171,247,183,239, 3,255, 0, 0, 0, 0, 64, 48, 74, 0,192,155,165,245,191,227, 87,208,
+ 61, 38,150, 68,217,192, 3,255, 0, 0, 0, 0, 64,100,108, 85,192, 76, 47,115,192, 88,224,149, 77,102,185, 90,182,131, 3,255,
+ 0, 0, 0, 0, 64,150,191,173,192, 55,233,227,191,254,101,198,102,121,192, 79,213, 73, 3,255, 0, 0, 0, 0, 64,148, 97,119,
+192, 89, 33,200,191,150,225, 24,101, 7,182, 44,229, 20, 3,255, 0, 0, 0, 0, 64, 86,171, 75,192,150, 83, 36,191,133, 36, 22,
+ 72,220,153,131,232, 32, 3,255, 0, 0, 0, 0,192, 81,251,116,192,139, 80,115,192, 10,124, 57,185, 81,160, 53,208,254, 3,255,
+ 0, 0, 0, 0,192,122,239, 70,192,138,220, 53,190,227, 86,113,171, 68,160,132,246,195, 3,255, 0, 0, 0, 0,192, 28, 50, 14,
+192,153, 4,245,192, 23, 39,141,201,187,151,215,205, 33, 3,255, 0, 0, 0, 0,191,189,123, 34,192,178,168,203,191,130,106,149,
+222,209,134, 63,234,158, 3,255, 0, 0, 0, 0,191,232,127,176,192,178,107,177,189,236,189, 47,216, 65,134,100,252, 66, 3,255,
+ 0, 0, 0, 0,192, 90,168, 53,192,152, 83,169, 62,133,201,227,181, 29,152, 77, 4,136, 3,255, 0, 0, 0, 0,192,150,191,173,
+ 64, 55,233,227, 63,254,101,198,153,135, 63,177, 42,183, 3,255, 0, 0, 0, 0,192,100,108, 85, 64, 76, 47,115, 64, 88,224,149,
+178,154, 70,166, 73,125, 3,255, 0, 0, 0, 0,192,148, 97,119, 64, 89, 33,200, 63,150,225, 24,154,249, 73,212, 26,236, 3,255,
+ 0, 0, 0, 0,192, 86,171, 75, 64,150, 83, 36, 63,133, 36, 22,183, 36,102,125, 23,224, 3,255, 0, 0, 0, 0,192, 48, 74, 0,
+ 64,155,165,245, 63,227, 87,208,194,218,105,188, 38, 64, 3,255, 0, 0, 0, 0,192, 57, 78,122, 64,120, 12,224, 64, 84, 56, 7,
+191,194, 84, 9, 72, 17, 3,255, 0, 0, 0, 0, 63,189,123, 34, 64,178,168,203, 63,130,106,149, 33, 47,121,193, 21, 98, 3,255,
+ 0, 0, 0, 0, 64, 28, 50, 14, 64,153, 4,245, 64, 23, 39,141, 54, 69,104, 41, 50,223, 3,255, 0, 0, 0, 0, 63,232,127,176,
+ 64,178,107,177, 61,236,189, 47, 39,191,121,156, 3,190, 3,255, 0, 0, 0, 0, 64, 90,168, 53, 64,152, 83,169,190,133,201,227,
+ 74,227,103,179,251,120, 3,255, 0, 0, 0, 0, 64,122,239, 70, 64,138,220, 53, 62,227, 86,113, 84,188, 95,124, 9, 61, 3,255,
+ 0, 0, 0, 0, 64, 81,251,116, 64,139, 80,115, 64, 10,124, 57, 70,175, 95,203, 47, 2, 3,255, 0, 0, 0, 0, 64,186,224,117,
+ 62,247,234, 37,190,126, 56,147,127,124, 9,155,249,210, 3,255, 0, 0, 0, 0, 64,182, 94, 10,191, 1, 5, 48, 63,165, 81, 86,
+124,100,243,232, 27,162, 3,255, 0, 0, 0, 0, 64,184, 78,204, 61, 89,193, 19,191,141,163,187,125,234, 1, 48,233, 15, 3,255,
+ 0, 0, 0, 0, 64,174,232,105,191,224,187,151,191,153,183,156,119,119,217,119,230,253, 3,255, 0, 0, 0, 0, 64,172,138, 45,
+192, 17,149,114,190,200,203,127,118, 5,207, 85,246,200, 3,255, 0, 0, 0, 0, 64,177,110, 41,191,186, 30, 81, 63,158,249,105,
+121, 96,225, 91, 26,170, 3,255, 0, 0, 0, 0, 64, 21,244,251,192,172, 12, 28,189,128,151, 13, 50, 27,138, 60,254, 30, 3,255,
+ 0, 0, 0, 0, 63,218, 2,113,192,171,151,172, 63,212, 25,114, 36, 13,138,140, 35,226, 3,255, 0, 0, 0, 0, 63,223, 39, 51,
+192,177, 94,248,191, 76,122,104, 38,101,134,253,239,191, 3,255, 0, 0, 0, 0,189, 28,208, 72,192,187, 13, 91,190,245,215, 64,
+255, 69,128, 88,246,190, 3,255, 0, 0, 0, 0,190,191,172, 81,192,186,208, 67, 62,216,163,195,248,181,128,125, 8, 97, 3,255,
+ 0, 0, 0, 0, 63, 68,118, 42,192,176,173,101, 63,233,132,114, 17,199,135,114, 39, 39, 3,255, 0, 0, 0, 0,192,133,175,133,
+192,121,149, 28, 63,168,212, 51,163,252,171,170, 28, 86, 3,255, 0, 0, 0, 0,192,128,203, 78,192, 69, 14,124, 64, 61, 0, 55,
+167, 88,189,176, 64, 57, 3,255, 0, 0, 0, 0,192,175,169, 31,191,237,176,138, 63,103,168, 15,136,104,215,128, 20,245, 3,255,
+ 0, 0, 0, 0,192,149,211, 8,192, 94,166, 84, 63, 29, 24, 68,154, 35,179,226, 14,143, 3,255, 0, 0, 0, 0,192,173, 23,106,
+191,182,131,157, 63,225,176,175,137,249,223,236, 37,184, 3,255, 0, 0, 0, 0,192,142, 93, 45,192, 14,137, 70, 64, 70,202,147,
+159, 15,206, 83, 67, 54, 3,255, 0, 0, 0, 0,192, 5, 2,185, 64, 76,105,217, 64,142,173,135,210, 38, 68,177, 97,200, 3,255,
+ 0, 0, 0, 0,190,196,116, 97, 64, 56,176, 10, 64,162,239,120,247, 92, 61,236,111,175, 3,255, 0, 0, 0, 0,192, 48, 32,142,
+ 64, 32,140,155, 64,145, 1,195,196,253, 55, 78, 99, 52, 3,255, 0, 0, 0, 0,192, 21,195,231, 63,101, 58,236, 64,169,178,218,
+206, 9, 19,225,116, 38, 3,255, 0, 0, 0, 0,191,185,155, 70, 63, 59,202, 12, 64,180, 86,163,223,107, 16,183,122,165, 3,255,
+ 0, 0, 0, 0,190, 43, 97, 29, 64, 2,118,144, 64,175,231,125,251,150, 45, 96,119,153, 3,255, 0, 0, 0, 0, 64, 74, 78,195,
+ 64, 96,206,241, 64, 94, 88, 98, 67,252, 76,222, 76,127, 3,255, 0, 0, 0, 0, 64,100,171, 12, 63,243, 33,249, 64,135,221,106,
+ 77, 8, 41,113, 93,113, 3,255, 0, 0, 0, 0, 64, 20,133,147, 64,124, 55,234, 64,107, 3,176, 51,146, 85, 60, 80, 92, 3,255,
+ 0, 0, 0, 0, 63,144,243,164, 64, 73, 41,252, 64,154, 66,148, 25,122, 67,183,105,149, 3,255, 0, 0, 0, 0, 63,172,164, 52,
+ 64, 18,240,106, 64,167, 58,141, 29,180, 51, 43,113,128, 3,255, 0, 0, 0, 0, 64, 60,186, 42, 63,189,128,219, 64,155, 43, 23,
+ 64,215, 33, 67,105, 57, 3,255, 0, 0, 0, 0, 64,160, 1,101,191,184,146, 47, 64, 45, 38,153,109, 31,225,160, 59,154, 3,255,
+ 0, 0, 0, 0, 64,115,246,246,192, 15, 86,183, 64,118,168, 51, 83, 7,208, 27, 84,211, 3,255, 0, 0, 0, 0, 64,164,241, 70,
+190,251,218,102, 64, 48, 82,143,112, 34,244, 46, 60,146, 3,255, 0, 0, 0, 0, 64,136, 81,192, 63, 4,239, 55, 64,127,222, 24,
+ 92,126, 10, 98, 87,221, 3,255, 0, 0, 0, 0, 64,104,178,151, 61,205,107,245, 64,147, 60,175, 80, 78, 2, 51, 99,165, 3,255,
+ 0, 0, 0, 0, 64, 85,229,215,191,218,178,166, 64,144, 55,183, 73,218,218,123, 97,146, 3,255, 0, 0, 0, 0, 63,101,194,188,
+192,154, 84, 17, 64, 77,193,240, 20,180,151, 42, 70,114, 3,255, 0, 0, 0, 0, 59, 71, 46, 19,192,115,240,194, 64,142,166,175,
+ 1, 16,173, 95, 97,190, 3,255, 0, 0, 0, 0, 63,234,168, 82,192,149, 62, 87, 64, 67, 12,118, 38,251,154, 68, 67, 46, 3,255,
+ 0, 0, 0, 0, 64, 46, 27,208,192, 86,104,124, 64,126, 52, 85, 58,119,183, 30, 87,122, 3,255, 0, 0, 0, 0, 64, 16, 10,186,
+192, 52,106,249, 64,147,253,210, 49, 74,193,125,100, 58, 3,255, 0, 0, 0, 0, 62,240, 33, 93,192, 71,199,191, 64,158, 47,142,
+ 10, 42,186,216,107, 57, 3,255, 0, 0, 0, 0,192, 94,139,103,191,250,146,153, 64,137,141, 72,180,237,212,100, 94, 11, 3,255,
+ 0, 0, 0, 0,192, 37,195,107,191, 36,213, 4, 64,167, 33, 20,200,105,241, 62,114, 88, 3,255, 0, 0, 0, 0,192, 67,103,158,
+192, 51,206, 82, 64,132,168, 39,189, 53,195,193, 91, 14, 3,255, 0, 0, 0, 0,191,173,230,209,192, 71,135,231, 64,152,234, 27,
+226,108,188,252,104,245, 3,255, 0, 0, 0, 0,191,217,154, 77,191, 78, 69,185, 64,177,196,221,217,203,238, 20,120,214, 3,255,
+ 0, 0, 0, 0,191,100,131,136,192, 27, 95, 16, 64,168,115, 4,235,134,202,118,114,113, 3,255, 0, 0, 0, 0,192, 37,220,139,
+ 64,141,135,245,192, 54,173,114,199, 45, 96, 95,193,211, 3,255, 0, 0, 0, 0,192, 84,119,204, 64,130, 73, 93,192, 38,107,212,
+183, 58, 88,223,199,137, 3,255, 0, 0, 0, 0,192, 67, 76,208, 64,111,120, 62,192, 85, 89, 14,189, 80, 81,196,183,140, 3,255,
+ 0, 0, 0, 0,191,238,147, 68, 64,100,230,166,192,136, 9,234,215,216, 78,130,163, 59, 3,255, 0, 0, 0, 0,191,109,149, 30,
+ 64,111, 18, 40,192,141,100,171,235, 37, 81,201,159,199, 3,255, 0, 0, 0, 0,191,178,237,144, 64,136,136, 25,192,113, 1,121,
+225,117, 92,189,173, 62, 3,255, 0, 0, 0, 0, 63, 66, 82,214, 64,152,115,128,192, 85, 25,164, 16,241,104, 27,183,126, 3,255,
+ 0, 0, 0, 0,189,171,155,119, 64,155, 40,138,192, 83, 96,113,254,128,105,196,183,238, 3,255, 0, 0, 0, 0, 62,194,138, 67,
+ 64,138, 97,177,192,124,158, 75, 8,112, 94,134,170, 29, 3,255, 0, 0, 0, 0,191, 94,106,158, 64, 30,106,167,192,167,240,254,
+236,229, 53,187,141,105, 3,255, 0, 0, 0, 0,191,229,114, 22, 64, 20, 96,193,192,162,167,253,217, 22, 50, 93,144,244, 3,255,
+ 0, 0, 0, 0,191,162,210, 45, 63,224,211,233,192,174, 67,184,228, 69, 37,245,136,244, 3,255, 0, 0, 0, 0,192,152, 61, 37,
+ 64, 14, 9,230,192, 39,179,137,152, 85, 48,183,198,226, 3,255, 0, 0, 0, 0,192,140,187,232, 64, 62, 96, 6,192, 30,247,107,
+160, 7, 65, 68,202, 11, 3,255, 0, 0, 0, 0,192,132,134,116, 64, 40,130, 40,192, 77,207,237,165,139, 57,149,186, 30, 3,255,
+ 0, 0, 0, 0,192,129,129, 12, 63,173,129,231,192,128,125,159,167, 62, 29, 15,168,123, 3,255, 0, 0, 0, 0,192,134,112,254,
+ 62,207,146,126,192,130, 19,159,164, 15, 9,119,167,117, 3,255, 0, 0, 0, 0,192,149,121,189, 63,111,192,142,192, 90, 95, 76,
+154, 95, 20,107,180,236, 3,255, 0, 0, 0, 0,192,162, 65, 12,191,149, 84, 11,192, 44,202,172,145, 60,230, 47,197, 75, 3,255,
+ 0, 0, 0, 0,192,165,120, 74,190,167, 78, 95,192, 48, 51,139,143, 54,248,140,195,244, 3,255, 0, 0, 0, 0,192,150,161, 61,
+191, 89,221,107,192, 89,113,118,153, 40,237, 79,182, 35, 3,255, 0, 0, 0, 0,192, 66, 56, 52, 62,139, 40,206,192,160,116, 21,
+190, 13, 6, 19,146,121, 3,255, 0, 0, 0, 0,192, 56,120,245, 63,154,213,118,192,158,227, 81,193, 81, 26, 47,147,133, 3,255,
+ 0, 0, 0, 0,192, 22,104,220, 63, 40,221,204,192,170,137,115,205, 16, 14, 89,139,117, 3,255, 0, 0, 0, 0, 64, 39,143,145,
+ 64, 94, 49,190,192,124, 27,165, 56,238, 75,252,170, 43, 3,255, 0, 0, 0, 0, 64, 6,168,130, 64,130,132,190,192,105, 96, 12,
+ 45,226, 89, 91,176,173, 3,255, 0, 0, 0, 0, 63,222,169, 76, 64,104,107,205,192,136,142,150, 38, 23, 79,105,163, 33, 3,255,
+ 0, 0, 0, 0, 63,229,207,137, 64, 22, 63, 30,192,161,235,207, 39,198, 50,227,145,127, 3,255, 0, 0, 0, 0, 64, 14, 11,239,
+ 63,191,114,175,192,166,208,254, 48,133, 33, 81,142, 87, 3,255, 0, 0, 0, 0, 64, 43,222,239, 64, 11,226,212,192,151, 71,227,
+ 58, 33, 47,140,152, 91, 3,255, 0, 0, 0, 0, 64,124,245, 0, 62,187, 32, 27,192,138, 6, 57, 86,138, 7,176,162, 2, 3,255,
+ 0, 0, 0, 0, 64,112, 75, 42, 63,152, 42,228,192,139, 44, 25, 82, 0, 25,159,161, 31, 3,255, 0, 0, 0, 0, 64, 82,218,178,
+ 63, 1,247,178,192,154,129,211, 72, 35, 11, 4,150,217, 3,255, 0, 0, 0, 0, 63,104,203,208, 63,113, 6,146,192,183, 5,108,
+ 19,132, 20,150,131, 49, 3,255, 0, 0, 0, 0, 62,251, 68, 26, 63,228, 38,111,192,178, 48,114, 10,139, 38,158,134,109, 3,255,
+ 0, 0, 0, 0, 61,149, 78,163, 63,137, 25, 65,192,184,102,234, 1, 54, 23, 52,130, 34, 3,255, 0, 0, 0, 0, 64, 80,140, 98,
+191,238,205,169,192,144, 69, 83, 71, 70,215,145,157,173, 3,255, 0, 0, 0, 0, 64,109, 39,177,191,147,213,155,192,140,143,238,
+ 81, 57,230,247,160, 77, 3,255, 0, 0, 0, 0, 64, 66,225,100,191,131,191,146,192,157, 18,152, 66,178,233,128,149, 25, 3,255,
+ 0, 0, 0, 0, 63,220, 24,190,191,202,163,163,192,171,244,160, 37, 99,220,199,138,196, 3,255, 0, 0, 0, 0, 63,133,219,227,
+192, 17, 47,172,192,169,160, 93, 23,126,206,164,140, 68, 3,255, 0, 0, 0, 0, 63,247,202, 46,192, 27,140, 23,192,158,252,116,
+ 41,217,203, 77,147, 32, 3,255, 0, 0, 0, 0, 63, 68,220, 36,192,132,143, 24,192,130,105, 20, 16,163,165, 66,167, 72, 3,255,
+ 0, 0, 0, 0, 63,185,255, 60,192,108,244,215,192,138, 7,129, 31,113,175, 11,161,251, 3,255, 0, 0, 0, 0, 63, 19, 18,220,
+192, 98,186,168,192,148,136, 66, 12,155,178,121,154,241, 3,255, 0, 0, 0, 0,187,172,119,131,191,162,209,182,192,183, 73,170,
+255,209,228,144,130,251, 3,255, 0, 0, 0, 0, 63, 40,230,165,191, 24,111,246,192,185,150, 50, 14, 19,243, 18,129,113, 3,255,
+ 0, 0, 0, 0,190, 50, 45,123,190,230, 16,213,192,186,240,160,251,231,246,124,128,109, 3,255, 0, 0, 0, 0,191,199, 22,221,
+192,134,211, 71,192,113,161, 37,222, 98,163,255,173,157, 3,255, 0, 0, 0, 0,191, 58,131,171,192,140,178, 57,192,115,174,214,
+240,105,159,201,173, 11, 3,255, 0, 0, 0, 0,191,112,119,228,192,115, 46, 49,192,139,222,186,235,152,172,221,160,217, 3,255,
+ 0, 0, 0, 0,191,254, 75,122,192, 50, 36, 18,192,152, 70, 84,211,253,195, 46,152, 87, 3,255, 0, 0, 0, 0,192, 52,239,190,
+192, 22,186,193,192,145,240,166,194,167,204, 3,156,108, 3,255, 0, 0, 0, 0,192, 39, 23, 51,192, 76,245, 14,192,132,248,105,
+199, 29,186,137,164,200, 3,255, 0, 0, 0, 0,192,140,137,202,192, 33,234, 4,192, 60,117,152,159,215,200,216,192, 6, 3,255,
+ 0, 0, 0, 0,192,115,176, 68,192, 68, 49, 85,192, 79,173, 65,172,178,189, 81,185, 81, 3,255, 0, 0, 0, 0,192,128,173,131,
+192, 14,170, 50,192,105, 71,247,168, 30,207, 64,176,189, 3,255, 0, 0, 0, 0,192, 22, 80,230,191,141,155, 50,192,168, 95,108,
+205, 3,232, 6,141, 19, 3,255, 0, 0, 0, 0,191,194,113, 96,191,195,184,166,192,174,160, 31,222,205,222,245,136,227, 3,255,
+ 0, 0, 0, 0,191,213,244,249,191, 52, 33, 10,192,178, 94,248,219,172,241, 3,134, 48, 3,255, 0, 0, 0, 0,192,167, 26, 30,
+ 64, 42, 11, 62,190,159,163,199,142, 45, 58, 26,248,236, 3,255, 0, 0, 0, 0,192,157,242, 15, 64, 63, 35,177,191,132,230,242,
+148,115, 65,134,233, 39, 3,255, 0, 0, 0, 0,192,169,163, 58, 64, 14,207,184,191,148, 92, 43,140,122, 48,250,230,193, 3,255,
+ 0, 0, 0, 0,192,184, 83,241, 63,117,241, 33,190,248, 69,204,130, 32, 20,245,246, 22, 3,255, 0, 0, 0, 0,192,186,178, 88,
+ 62,226, 33,180, 62,165,211, 69,128,153, 10, 65, 6,196, 3,255, 0, 0, 0, 0,192,181,194,100, 63,178, 37,227, 62,191, 51, 65,
+131,199, 29,217, 7,201, 3,255, 0, 0, 0, 0,192,168, 68,140, 63, 57,100,162, 64, 31, 41, 90,141, 91, 15,195, 54,175, 3,255,
+ 0, 0, 0, 0,192,173,114,185, 63,162, 11,147, 63,237,131,136,137,204, 27,106, 40,187, 3,255, 0, 0, 0, 0,192,178, 82, 90,
+ 62,168, 0,181, 63,231, 64,125,134,136, 7, 78, 39,175, 3,255, 0, 0, 0, 0,192,185, 52,235,191, 83,185,191,190,252,176, 39,
+129,201,237,211,244,241, 3,255, 0, 0, 0, 0,192,182,222, 95,190,161, 32,178,191,165, 92, 48,131, 90,248,208,227,211, 3,255,
+ 0, 0, 0, 0,192,179,119, 52,191,147,204,223,191,160,141,116,133,169,230,113,228,103, 3,255, 0, 0, 0, 0, 63, 35, 88,109,
+ 64,182,186,129,191,152, 8,207, 14, 5,124,127,229,202, 3,255, 0, 0, 0, 0, 63, 99, 54,226, 64,174,134,172,191,250, 98, 96,
+ 19,180,118,244,213, 14, 3,255, 0, 0, 0, 0, 61, 60,195,150, 64,177,121, 46,191,245, 6,174, 1, 84,120,249,214, 55, 3,255,
+ 0, 0, 0, 0,191,145,160,228, 64,181, 59,121,191,123,252,246,231, 63,123,214,235, 42, 3,255, 0, 0, 0, 0,191,188,166, 29,
+ 64,181,120,167,189,165,224, 4,224, 81,123,253,253,203, 3,255, 0, 0, 0, 0,191, 9,186, 26, 64,186,142,104,190,126, 74,128,
+243,158,127, 69,250, 88, 3,255, 0, 0, 0, 0,191, 19,205,179, 64,175,145, 33, 63,253,151,102,243,125,119,171, 43,167, 3,255,
+ 0, 0, 0, 0,190,134,114,163, 64,183, 94, 81, 63,157,210, 73,250, 40,124,240, 27, 49, 3,255, 0, 0, 0, 0,191,151,217,253,
+ 64,178, 89, 90, 63,178,246,210,230, 89,121,146, 30,187, 3,255, 0, 0, 0, 0,192, 50,200,107, 64,164, 21, 4,191, 18,252,143,
+194,229,111,189,243, 58, 3,255, 0, 0, 0, 0,192, 29,140,219, 64,163,216,164,191,187,160,163,202, 2,111,148,224, 27, 3,255,
+ 0, 0, 0, 0,192, 76, 63, 8, 64,152, 92,149,191,157, 6,201,185,254,103,184,229, 25, 3,255, 0, 0, 0, 0, 64,167, 31,102,
+ 63,133,113, 18,192, 29,150,122,113,214, 22,149,202, 5, 3,255, 0, 0, 0, 0, 64,157, 48,115, 63, 33,183, 74,192, 72,172, 21,
+107, 50, 13,106,187, 91, 3,255, 0, 0, 0, 0, 64,151, 48,250, 63,186,157,117,192, 74, 37,236,103, 41, 31,126,187, 23, 3,255,
+ 0, 0, 0, 0, 64,148, 31,118, 64, 46, 99,144,192, 21,237, 95,101,101, 59,141,205,115, 3,255, 0, 0, 0, 0, 64,150,177, 40,
+ 64, 73,250,101,191,189,252,104,103, 13, 68,113,223, 39, 3,255, 0, 0, 0, 0, 64,164, 67, 59, 64, 19,116,106,191,209,145, 96,
+111,204, 50,223,219,255, 3,255, 0, 0, 0, 0, 64,168, 99, 9, 64, 32,173,184, 63, 27, 16,129,114,228, 54,189, 13,164, 3,255,
+ 0, 0, 0, 0, 64,174, 1,225, 64, 12,167, 65,190, 38, 1,199,118,149, 48, 17,252,195, 3,255, 0, 0, 0, 0, 64,160,156,172,
+ 64, 66,121, 23,188, 53,253,220,109,155, 66, 25, 0, 0, 3,255, 0, 0, 0, 0, 64,106,184,230, 64,133, 83,117,191,243, 95, 76,
+ 79,202, 90,251,214, 77, 3,255, 0, 0, 0, 0, 64,101,166,116, 64,111,107, 67,192, 47,233, 69, 78, 23, 81,219,196, 34, 3,255,
+ 0, 0, 0, 0, 64, 68, 20,109, 64,139, 9,202,192, 29,255,124, 66,138, 95, 22,202, 6, 3,255, 0, 0, 0, 0, 64, 12,138, 46,
+192,156,168,195,192, 23,240, 99, 47,172,149, 54,203,252, 3,255, 0, 0, 0, 0, 63,201,189,110,192,154, 28, 48,192, 60,148,180,
+ 34, 2,150,195,191,147, 3,255, 0, 0, 0, 0, 64, 17, 55, 21,192,140, 67,125,192, 75, 8,118, 49, 61,160, 50,186,221, 3,255,
+ 0, 0, 0, 0, 64,100,126, 85,192,114,211,103,192, 43,176,187, 78, 60,172,241,198, 2, 3,255, 0, 0, 0, 0, 64,133,112, 29,
+192,104, 45,168,191,249, 44, 95, 90,154,176, 96,213, 48, 3,255, 0, 0, 0, 0, 64, 95,193,192,192,138, 5,221,191,239,219, 42,
+ 76,181,162, 61,214,177, 3,255, 0, 0, 0, 0, 64,134, 21, 28,192,130,231,185, 62,133,210,175, 91,128,166,182, 6, 33, 3,255,
+ 0, 0, 0, 0, 64,115,101,128,192,142,100,106,190,205,174,214, 83, 32,159, 12,247,127, 3,255, 0, 0, 0, 0, 64,142,250,187,
+192,113,123,178,190,242,120, 90, 97, 99,173,142,245,244, 3,255, 0, 0, 0, 0, 64,149, 83,115,192, 24,118, 25,192, 41, 5, 96,
+101,195,204, 61,198, 36, 3,255, 0, 0, 0, 0, 64,130, 97,236,192, 34,248,181,192, 87,132, 49, 89, 17,200,184,182,144, 3,255,
+ 0, 0, 0, 0, 64,144,103,186,191,234, 9, 91,192, 80,226,150, 98,152,216,121,184,152, 3,255, 0, 0, 0, 0,192,136, 74,208,
+192,121,117,231,191,133,193, 32,162,248,171, 42,232,249, 3,255, 0, 0, 0, 0,192,144, 84, 31,192, 87, 19, 24,191,211, 65, 53,
+157, 74,182,248,219,224, 3,255, 0, 0, 0, 0,192,123, 90, 7,192,121,238,107,191,247,227,115,170, 22,171, 1,213,218, 3,255,
+ 0, 0, 0, 0,192, 54,112,161,192,156, 77, 94,191,196,107,207,193,198,149, 23,223, 32, 3,255, 0, 0, 0, 0,192, 22, 41, 24,
+192,169,197, 1,191, 84, 68,191,204, 45,140,105,237,172, 3,255, 0, 0, 0, 0,192, 75,243, 73,192,156, 16, 86,191, 33,150,180,
+186,216,149, 63,241,194, 3,255, 0, 0, 0, 0,192, 19,246,140,192,166, 60,148, 63,182, 70, 11,205,164,142,159, 31,127, 3,255,
+ 0, 0, 0, 0,192, 58, 21, 17,192,160,209,224, 63, 88,100,103,192,202,146, 72, 18,171, 3,255, 0, 0, 0, 0,192, 4,252,151,
+192,174, 89, 71, 63, 38, 93,215,210,148,137, 55, 14,122, 3,255, 0, 0, 0, 0,191,150,176, 53,192,174,252,238,191,226,172, 37,
+230,114,136,199,217, 20, 3,255, 0, 0, 0, 0,191,214,105,225,192,161,177,211,192, 29,229,160,219,197,145,175,202, 38, 3,255,
+ 0, 0, 0, 0,191, 88,213, 62,192,167, 70,193,192, 32,217,212,237,221,141,232,200,230, 3,255, 0, 0, 0, 0,192,130, 97,236,
+ 64, 34,248,181, 64, 87,132, 49,166,239, 55, 72, 73,112, 3,255, 0, 0, 0, 0,192,144,103,186, 63,234, 9, 91, 64, 80,226,150,
+157,104, 39,135, 71,104, 3,255, 0, 0, 0, 0,192,149, 83,115, 64, 24,118, 25, 64, 41, 5, 96,154, 61, 51,195, 57,220, 3,255,
+ 0, 0, 0, 0,192,133,112, 29, 64,104, 45,168, 63,249, 44, 95,165,102, 79,160, 42,208, 3,255, 0, 0, 0, 0,192, 95,193,192,
+ 64,138, 5,221, 63,239,219, 42,179, 75, 93,195, 41, 79, 3,255, 0, 0, 0, 0,192,100,126, 85, 64,114,211,103, 64, 43,176,187,
+177,196, 83, 15, 57,254, 3,255, 0, 0, 0, 0,191,201,189,110, 64,154, 28, 48, 64, 60,148,180,221,254,105, 61, 64,109, 3,255,
+ 0, 0, 0, 0,192, 17, 55, 21, 64,140, 67,125, 64, 75, 8,118,206,195, 95,206, 69, 35, 3,255, 0, 0, 0, 0,192, 12,138, 46,
+ 64,156,168,195, 64, 23,240, 99,208, 84,106,202, 52, 4, 3,255, 0, 0, 0, 0,192,115,101,128, 64,142,100,106, 62,205,174,214,
+172,224, 96,244, 8,129, 3,255, 0, 0, 0, 0,192,142,250,187, 64,113,123,178, 62,242,120, 90,158,157, 82,114, 10, 12, 3,255,
+ 0, 0, 0, 0,192,134, 21, 28, 64,130,231,185,190,133,210,175,164,128, 89, 74,249,223, 3,255, 0, 0, 0, 0, 63,214,105,225,
+ 64,161,177,211, 64, 29,229,160, 36, 59,110, 81, 53,218, 3,255, 0, 0, 0, 0, 63, 88,213, 62, 64,167, 70,193, 64, 32,217,212,
+ 18, 35,114, 24, 55, 26, 3,255, 0, 0, 0, 0, 63,150,176, 53, 64,174,252,238, 63,226,172, 37, 25,142,119, 57, 38,236, 3,255,
+ 0, 0, 0, 0, 64, 22, 41, 24, 64,169,197, 1, 63, 84, 68,191, 51,211,115,151, 18, 84, 3,255, 0, 0, 0, 0, 64, 75,243, 73,
+ 64,156, 16, 86, 63, 33,150,180, 69, 40,106,193, 14, 62, 3,255, 0, 0, 0, 0, 64, 54,112,161, 64,156, 77, 94, 63,196,107,208,
+ 62, 58,106,233, 32,224, 3,255, 0, 0, 0, 0, 64,144, 84, 31, 64, 87, 19, 24, 63,211, 65, 53, 98,182, 73, 8, 36, 32, 3,255,
+ 0, 0, 0, 0, 64,123, 90, 7, 64,121,238,107, 63,247,227,115, 85,234, 84,255, 42, 38, 3,255, 0, 0, 0, 0, 64,136, 74,208,
+ 64,121,117,231, 63,133,193, 32, 93, 8, 84,214, 23, 7, 3,255, 0, 0, 0, 0, 64, 58, 21, 17, 64,160,209,224,191, 88,100,103,
+ 63, 54,109,184,237, 85, 3,255, 0, 0, 0, 0, 64, 4,252,151, 64,174, 89, 71,191, 38, 93,215, 45,108,118,201,241,134, 3,255,
+ 0, 0, 0, 0, 64, 19,246,140, 64,166, 60,148,191,182, 70, 11, 50, 92,113, 97,224,129, 3,255, 0, 0, 0, 0, 64,182,222, 95,
+ 62,161, 32,178, 63,165, 92, 48,124,166, 7, 48, 28, 45, 3,255, 0, 0, 0, 0, 64,179,119, 52, 63,147,204,223, 63,160,141,116,
+122, 87, 25,143, 27,153, 3,255, 0, 0, 0, 0, 64,185, 52,235, 63, 83,185,191, 62,252,176, 39,126, 55, 18, 45, 11, 15, 3,255,
+ 0, 0, 0, 0, 64,186,178, 88,190,226, 33,180,190,165,211, 69,127,103,245,191,249, 60, 3,255, 0, 0, 0, 0, 64,181,194,100,
+191,178, 37,227,190,191, 51, 65,124, 57,226, 39,248, 55, 3,255, 0, 0, 0, 0, 64,184, 83,241,191,117,241, 33, 62,248, 69,204,
+125,224,235, 11, 9,234, 3,255, 0, 0, 0, 0, 64,157,242, 15,192, 63, 35,177, 63,132,230,242,107,141,190,122, 22,217, 3,255,
+ 0, 0, 0, 0, 64,169,163, 58,192, 14,207,184, 63,148, 92, 43,115,134,207, 6, 25, 63, 3,255, 0, 0, 0, 0, 64,167, 26, 30,
+192, 42, 11, 62, 62,159,163,199,113,211,197,230, 7, 20, 3,255, 0, 0, 0, 0, 64,173,114,185,191,162, 11,147,191,237,131,136,
+118, 52,228,150,215, 69, 3,255, 0, 0, 0, 0, 64,178, 82, 90,190,168, 0,181,191,231, 64,125,121,120,248,178,216, 81, 3,255,
+ 0, 0, 0, 0, 64,168, 68,140,191, 57,100,162,192, 31, 41, 90,114,165,240, 61,201, 81, 3,255, 0, 0, 0, 0, 64, 29,140,219,
+192,163,216,164, 63,187,160,163, 53,254,144,108, 31,229, 3,255, 0, 0, 0, 0, 64, 76, 63, 8,192,152, 92,149, 63,157, 6,201,
+ 70, 2,152, 72, 26,231, 3,255, 0, 0, 0, 0, 64, 50,200,107,192,164, 21, 4, 63, 18,252,143, 61, 27,144, 67, 12,198, 3,255,
+ 0, 0, 0, 0, 63,188,166, 29,192,181,120,167, 61,165,224, 4, 31,175,132, 3, 2, 53, 3,255, 0, 0, 0, 0, 63, 9,186, 26,
+192,186,142,104, 62,126, 74,128, 12, 98,128,187, 5,168, 3,255, 0, 0, 0, 0, 63,145,160,228,192,181, 59,121, 63,123,252,246,
+ 24,193,132, 42, 20,214, 3,255, 0, 0, 0, 0,191, 99, 54,226,192,174,134,172, 63,250, 98, 96,236, 76,137, 12, 42,242, 3,255,
+ 0, 0, 0, 0,189, 60,195,150,192,177,121, 46, 63,245, 6,174,254,172,135, 7, 41,201, 3,255, 0, 0, 0, 0,191, 35, 88,109,
+192,182,186,129, 63,152, 8,207,241,251,131,129, 26, 54, 3,255, 0, 0, 0, 0, 62,134,114,163,192,183, 94, 81,191,157,210, 73,
+ 5,216,131, 16,228,207, 3,255, 0, 0, 0, 0, 63,151,217,253,192,178, 89, 90,191,178,246,210, 25,167,134,110,225, 69, 3,255,
+ 0, 0, 0, 0, 63, 19,205,179,192,175,145, 33,191,253,151,102, 12,131,136, 85,212, 89, 3,255, 0, 0, 0, 0,192,101,166,116,
+192,111,107, 67, 64, 47,233, 69,177,233,174, 37, 59,222, 3,255, 0, 0, 0, 0,192, 68, 20,109,192,139, 9,202, 64, 29,255,124,
+189,118,160,234, 53,250, 3,255, 0, 0, 0, 0,192,106,184,230,192,133, 83,117, 63,243, 95, 76,176, 54,165, 5, 41,179, 3,255,
+ 0, 0, 0, 0,192,150,177, 40,192, 73,250,101, 63,189,252,104,152,243,187,143, 32,217, 3,255, 0, 0, 0, 0,192,164, 67, 59,
+192, 19,116,106, 63,209,145, 96,144, 52,205, 33, 36, 1, 3,255, 0, 0, 0, 0,192,148, 31,118,192, 46, 99,144, 64, 21,237, 95,
+154,155,196,115, 50,141, 3,255, 0, 0, 0, 0,192,157, 48,115,191, 33,183, 74, 64, 72,172, 21,148,206,242,150, 68,165, 3,255,
+ 0, 0, 0, 0,192,151, 48,250,191,186,157,117, 64, 74, 37,236,152,215,224,130, 68,233, 3,255, 0, 0, 0, 0,192,167, 31,102,
+191,133,113, 18, 64, 29,150,122,142, 42,233,107, 53,251, 3,255, 0, 0, 0, 0,192,174, 1,225,192, 12,167, 65, 62, 38, 1,199,
+137,107,207,239, 3, 61, 3,255, 0, 0, 0, 0,192,160,156,172,192, 66,121, 23, 60, 53,253,220,146,101,189,231, 0, 0, 3,255,
+ 0, 0, 0, 0,192,168, 99, 9,192, 32,173,184,191, 27, 16,129,141, 28,201, 67,242, 92, 3,255, 0, 0, 0, 0,191, 19, 18,220,
+ 64, 98,186,168, 64,148,136, 66,243,101, 77,135,101, 15, 3,255, 0, 0, 0, 0,191, 68,220, 36, 64,132,143, 24, 64,130,105, 20,
+239, 93, 90,190, 88,184, 3,255, 0, 0, 0, 0,191,185,255, 60, 64,108,244,215, 64,138, 7,129,224,143, 80,245, 94, 5, 3,255,
+ 0, 0, 0, 0,191,247,202, 46, 64, 27,140, 23, 64,158,252,116,214, 39, 52,179,108,224, 3,255, 0, 0, 0, 0,191,220, 24,190,
+ 63,202,163,163, 64,171,244,160,218,157, 35, 57,117, 60, 3,255, 0, 0, 0, 0,191,133,219,227, 64, 17, 47,172, 64,169,160, 93,
+232,130, 49, 92,115,188, 3,255, 0, 0, 0, 0, 62, 50, 45,123, 62,230, 16,213, 64,186,240,160, 4, 25, 9,132,127,147, 3,255,
+ 0, 0, 0, 0, 59,172,119,131, 63,162,209,182, 64,183, 73,170, 0, 47, 27,112,125, 5, 3,255, 0, 0, 0, 0,191, 40,230,165,
+ 63, 24,111,246, 64,185,150, 50,241,237, 12,238,126,143, 3,255, 0, 0, 0, 0,192, 66,225,100, 63,131,191,146, 64,157, 18,152,
+189, 78, 22,128,106,231, 3,255, 0, 0, 0, 0,192, 80,140, 98, 63,238,205,169, 64,144, 69, 83,184,186, 40,111, 98, 83, 3,255,
+ 0, 0, 0, 0,192,109, 39,177, 63,147,213,154, 64,140,143,239,174,199, 25, 9, 95,179, 3,255, 0, 0, 0, 0, 64,128,173,131,
+ 64, 14,170, 50, 64,105, 71,247, 87,226, 48,192, 79, 67, 3,255, 0, 0, 0, 0, 64,140,137,202, 64, 33,234, 4, 64, 60,117,152,
+ 96, 41, 55, 40, 63,250, 3,255, 0, 0, 0, 0, 64,115,176, 68, 64, 68, 49, 85, 64, 79,173, 65, 83, 78, 66,175, 70,175, 3,255,
+ 0, 0, 0, 0, 64, 39, 23, 51, 64, 76,245, 14, 64,132,248,105, 56,227, 69,119, 91, 56, 3,255, 0, 0, 0, 0, 63,254, 75,122,
+ 64, 50, 36, 17, 64,152, 70, 83, 44, 3, 60,210,103,169, 3,255, 0, 0, 0, 0, 64, 52,239,190, 64, 22,186,193, 64,145,240,166,
+ 61, 89, 51,253, 99,148, 3,255, 0, 0, 0, 0, 63,213,244,249, 63, 52, 33, 10, 64,178, 94,248, 36, 84, 14,253,121,208, 3,255,
+ 0, 0, 0, 0, 64, 22, 80,230, 63,141,155, 50, 64,168, 95,108, 50,253, 23,250,114,237, 3,255, 0, 0, 0, 0, 63,194,113, 96,
+ 63,195,184,166, 64,174,160, 31, 33, 51, 33, 11,119, 29, 3,255, 0, 0, 0, 0, 63,112,119,228, 64,115, 46, 49, 64,139,222,186,
+ 20,104, 83, 35, 95, 40, 3,255, 0, 0, 0, 0, 63,199, 22,221, 64,134,211, 71, 64,113,161, 37, 33,158, 92, 1, 82, 99, 3,255,
+ 0, 0, 0, 0, 63, 58,131,170, 64,140,178, 58, 64,115,174,213, 15,151, 96, 55, 82,245, 3,255, 0, 0, 0, 0, 64,132,134,116,
+192, 40,130, 40, 64, 77,207,237, 90,117,198,107, 69,226, 3,255, 0, 0, 0, 0, 64,140,187,232,192, 62, 96, 6, 64, 30,247,107,
+ 95,249,190,188, 53,245, 3,255, 0, 0, 0, 0, 64,152, 61, 37,192, 14, 9,230, 64, 39,179,137,103,171,207, 73, 57, 30, 3,255,
+ 0, 0, 0, 0, 64,149,121,189,191,111,192,142, 64, 90, 95, 76,101,161,235,149, 75, 20, 3,255, 0, 0, 0, 0, 64,134,112,254,
+190,207,146,126, 64,130, 19,159, 91,241,246,137, 88,139, 3,255, 0, 0, 0, 0, 64,129,129, 12,191,173,129,231, 64,128,125,159,
+ 88,194,226,241, 87,133, 3,255, 0, 0, 0, 0, 64, 22,104,220,191, 40,221,204, 64,170,137,115, 50,240,241,167,116,139, 3,255,
+ 0, 0, 0, 0, 64, 56,120,245,191,154,213,118, 64,158,227, 81, 62,175,229,209,108,123, 3,255, 0, 0, 0, 0, 64, 66, 56, 52,
+190,139, 40,206, 64,160,116, 21, 65,243,249,237,109,135, 3,255, 0, 0, 0, 0, 64,150,161, 61, 63, 89,221,107, 64, 89,113,118,
+102,216, 18,177, 73,221, 3,255, 0, 0, 0, 0, 64,165,120, 74, 62,167, 78, 95, 64, 48, 51,139,112,202, 7,116, 60, 12, 3,255,
+ 0, 0, 0, 0, 64,162, 65, 12, 63,149, 84, 11, 64, 44,202,172,110,196, 25,209, 58,181, 3,255, 0, 0, 0, 0,190,194,138, 67,
+192,138, 97,177, 64,124,158, 75,247,144,161,122, 85,227, 3,255, 0, 0, 0, 0,191, 66, 82,214,192,152,115,128, 64, 85, 25,164,
+239, 15,151,229, 72,130, 3,255, 0, 0, 0, 0, 61,171,155,119,192,155, 40,138, 64, 83, 96,113, 1,128,150, 60, 72, 18, 3,255,
+ 0, 0, 0, 0, 63,178,237,144,192,136,136, 25, 64,113, 1,121, 30,139,163, 67, 82,194, 3,255, 0, 0, 0, 0, 63,238,147, 68,
+192,100,230,166, 64,136, 9,234, 40, 40,177,126, 92,197, 3,255, 0, 0, 0, 0, 63,109,149, 30,192,111, 18, 40, 64,141,100,171,
+ 20,219,174, 55, 96, 57, 3,255, 0, 0, 0, 0, 63,162,210, 45,191,224,211,233, 64,174, 67,184, 27,187,218, 11,119, 12, 3,255,
+ 0, 0, 0, 0, 63, 94,106,158,192, 30,106,167, 64,167,240,254, 19, 27,202, 69,114,151, 3,255, 0, 0, 0, 0, 63,229,114, 22,
+192, 20, 96,193, 64,162,167,253, 38,234,205,163,111, 12, 3,255, 0, 0, 0, 0, 64, 67, 76,208,192,111,120, 62, 64, 85, 89, 14,
+ 66,176,174, 60, 72,116, 3,255, 0, 0, 0, 0, 64, 37,220,139,192,141,135,245, 64, 54,173,114, 56,211,159,161, 62, 45, 3,255,
+ 0, 0, 0, 0, 64, 84,119,204,192,130, 73, 93, 64, 38,107,212, 72,198,167, 33, 56,119, 3,255, 0, 0, 0, 0,192, 82,218,178,
+191, 1,247,178, 64,154,129,211,183,221,244,252,105, 39, 3,255, 0, 0, 0, 0,192,124,245, 0,190,187, 32, 27, 64,138, 6, 57,
+169,118,248, 80, 93,254, 3,255, 0, 0, 0, 0,192,112, 75, 42,191,152, 42,228, 64,139, 44, 25,174, 0,230, 97, 94,225, 3,255,
+ 0, 0, 0, 0,192, 43,222,239,192, 11,226,212, 64,151, 71,227,197,223,208,116,103,165, 3,255, 0, 0, 0, 0,191,229,207,137,
+192, 22, 63, 30, 64,161,235,207,216, 58,205, 29,110,129, 3,255, 0, 0, 0, 0,192, 14, 11,239,191,191,114,175, 64,166,208,254,
+207,123,222,175,113,169, 3,255, 0, 0, 0, 0,189,149, 78,163,191,137, 25, 65, 64,184,102,234,254,202,232,204,125,222, 3,255,
+ 0, 0, 0, 0,191,104,203,208,191,113, 6,146, 64,183, 5,108,236,124,235,106,124,207, 3,255, 0, 0, 0, 0,190,251, 68, 26,
+191,228, 38,111, 64,178, 48,114,245,117,217, 98,121,147, 3,255, 0, 0, 0, 0,191,222,169, 76,192,104,107,205, 64,136,142,150,
+217,233,176,151, 92,223, 3,255, 0, 0, 0, 0,192, 39,143,145,192, 94, 49,190, 64,124, 27,165,199, 18,180, 4, 85,213, 3,255,
+ 0, 0, 0, 0,192, 6,168,130,192,130,132,190, 64,105, 96, 12,210, 30,166,165, 79, 83, 3,255, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1, 84, 8,195, 65, 96, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,248, 48, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 90, 0, 7,248, 48, 32, 0, 0, 0, 55, 0, 0, 7,128, 0, 0, 0, 0, 0, 0, 0,162,
0, 0, 0, 35, 0, 0, 0, 42, 0, 0, 0,162, 0, 0, 0, 35, 0, 0, 0, 12, 0, 0, 0,163, 0, 0, 0, 35, 0, 0, 0, 42,
0, 0, 0,163, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0,164, 0, 0, 0, 35, 0, 0, 0, 43, 0, 0, 0,164, 0, 0, 0, 35,
0, 0, 0, 12, 0, 0, 0,165, 0, 0, 0, 35, 0, 0, 0, 43, 0, 0, 0,165, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0,166,
@@ -9167,2579 +12839,2580 @@ char datatoc_preview_blend[]= {
0, 0, 1,143, 0, 0, 2,127, 0, 0, 0, 35, 0, 0, 2,127, 0, 0, 2,128, 0, 0, 0, 35, 0, 0, 2,128, 0, 0, 2,129,
0, 0, 0, 35, 0, 0, 2,127, 0, 0, 2,129, 0, 0, 0, 35, 0, 0, 1, 2, 0, 0, 1, 22, 0, 0, 0, 35, 0, 0, 1, 22,
0, 0, 2,129, 0, 0, 0, 35, 0, 0, 1, 2, 0, 0, 2,129, 0, 0, 0, 35, 0, 0, 1, 3, 0, 0, 2,128, 0, 0, 0, 35,
- 0, 0, 1,142, 0, 0, 2,128, 0, 0, 0, 35, 0, 0, 1, 3, 0, 0, 1,142, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 44,
- 13, 65,152,224, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1,142, 0, 0, 2,128, 0, 0, 0, 35, 0, 0, 1, 3, 0, 0, 1,142, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,195, 66,224, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12,118,208, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 12,119, 64, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,120, 32, 32,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0,100, 0,
- 12,118,208, 32, 0, 0, 0, 54, 0, 0, 5, 0, 0, 0, 1, 27, 0, 0, 0,102, 0, 0, 1,146, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,146, 0, 0, 0,171, 0, 0, 1, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 14, 0, 0, 1, 27, 0, 0, 0,171,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,171, 0, 0, 1,146, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,147,
- 0, 0, 0, 46, 0, 0, 1,146, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,146, 0, 0, 1,148, 0, 0, 1,147, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 43, 0, 0, 1,147, 0, 0, 1,148, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,148, 0, 0, 1,146,
- 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 26, 0, 0, 0, 12, 0, 0, 0,165, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,165, 0, 0, 1,148, 0, 0, 1, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,102, 0, 0, 1, 26, 0, 0, 1,148,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,148, 0, 0, 0,165, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,147,
- 0, 0, 0, 43, 0, 0, 0,164, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,164, 0, 0, 0,170, 0, 0, 1,147, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 46, 0, 0, 1,147, 0, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,170, 0, 0, 0,164,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 26, 0, 0, 0,102, 0, 0, 1,149, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,149, 0, 0, 1, 28, 0, 0, 1, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 1, 26, 0, 0, 1, 28,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 28, 0, 0, 1,149, 0, 0, 0,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,150,
- 0, 0, 0,103, 0, 0, 1,149, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,149, 0, 0, 1,151, 0, 0, 1,150, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,104, 0, 0, 1,150, 0, 0, 1,151, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,151, 0, 0, 1,149,
- 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 27, 0, 0, 0, 14, 0, 0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 31, 0, 0, 1,151, 0, 0, 1, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,102, 0, 0, 1, 27, 0, 0, 1,151,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,151, 0, 0, 1, 31, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,150,
- 0, 0, 0,104, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 30, 0, 0, 1, 29, 0, 0, 1,150, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,103, 0, 0, 1,150, 0, 0, 1, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 29, 0, 0, 1, 30,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,168, 0, 0, 0, 45, 0, 0, 1,152, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,152, 0, 0, 0,172, 0, 0, 0,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,168, 0, 0, 0,172,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,172, 0, 0, 1,152, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,153,
- 0, 0, 0, 47, 0, 0, 1,152, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,152, 0, 0, 1,154, 0, 0, 1,153, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,104, 0, 0, 1,153, 0, 0, 1,154, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,154, 0, 0, 1,152,
- 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,169, 0, 0, 0, 13, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 30, 0, 0, 1,154, 0, 0, 0,169, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 45, 0, 0, 0,169, 0, 0, 1,154,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,154, 0, 0, 1, 30, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,153,
- 0, 0, 0,104, 0, 0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 31, 0, 0, 0,173, 0, 0, 1,153, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 47, 0, 0, 1,153, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,173, 0, 0, 1, 31,
- 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,167, 0, 0, 0, 44, 0, 0, 1,155, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,155, 0, 0, 1, 29, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0,167, 0, 0, 1, 29,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 29, 0, 0, 1,155, 0, 0, 0,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,156,
- 0, 0, 0,103, 0, 0, 1,155, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,155, 0, 0, 1,157, 0, 0, 1,156, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 42, 0, 0, 1,156, 0, 0, 1,157, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,157, 0, 0, 1,155,
- 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,162, 0, 0, 1,157, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0,166, 0, 0, 1,157,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,157, 0, 0, 0,162, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,156,
- 0, 0, 0, 42, 0, 0, 0,163, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,163, 0, 0, 1, 28, 0, 0, 1,156, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,103, 0, 0, 1,156, 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 28, 0, 0, 0,163,
- 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,158, 0, 0, 0,105, 0, 0, 1, 33, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 33, 0, 0, 0,179, 0, 0, 1,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 50, 0, 0, 1,158, 0, 0, 0,179,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,179, 0, 0, 1, 33, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,158,
- 0, 0, 0, 50, 0, 0, 1,159, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,159, 0, 0, 1,160, 0, 0, 1,158, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,105, 0, 0, 1,158, 0, 0, 1,160, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,160, 0, 0, 1,159,
- 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,165, 0, 0, 0, 12, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 32, 0, 0, 1,160, 0, 0, 0,165, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 43, 0, 0, 0,165, 0, 0, 1,160,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,160, 0, 0, 1, 32, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,164,
- 0, 0, 0, 43, 0, 0, 1,159, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,159, 0, 0, 0,178, 0, 0, 0,164, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,164, 0, 0, 0,178, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,178, 0, 0, 1,159,
- 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,161, 0, 0, 0,105, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 32, 0, 0, 1, 34, 0, 0, 1,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,106, 0, 0, 1,161, 0, 0, 1, 34,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 34, 0, 0, 1, 32, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,161,
- 0, 0, 0,106, 0, 0, 1,162, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,162, 0, 0, 1,163, 0, 0, 1,161, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,105, 0, 0, 1,161, 0, 0, 1,163, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,163, 0, 0, 1,162,
- 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 37, 0, 0, 0, 16, 0, 0, 1, 33, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 33, 0, 0, 1,163, 0, 0, 1, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,107, 0, 0, 1, 37, 0, 0, 1,163,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,163, 0, 0, 1, 33, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 36,
- 0, 0, 0,107, 0, 0, 1,162, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,162, 0, 0, 1, 35, 0, 0, 1, 36, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 15, 0, 0, 1, 36, 0, 0, 1, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 35, 0, 0, 1,162,
- 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,164, 0, 0, 0, 49, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,176, 0, 0, 0,180, 0, 0, 1,164, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 51, 0, 0, 1,164, 0, 0, 0,180,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,180, 0, 0, 0,176, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,164,
- 0, 0, 0, 51, 0, 0, 1,165, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,165, 0, 0, 1,166, 0, 0, 1,164, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 49, 0, 0, 1,164, 0, 0, 1,166, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,166, 0, 0, 1,165,
- 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 36, 0, 0, 0, 15, 0, 0, 0,177, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,177, 0, 0, 1,166, 0, 0, 1, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,107, 0, 0, 1, 36, 0, 0, 1,166,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,166, 0, 0, 0,177, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 37,
- 0, 0, 0,107, 0, 0, 1,165, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,165, 0, 0, 0,181, 0, 0, 1, 37, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 1, 37, 0, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,181, 0, 0, 1,165,
- 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,167, 0, 0, 0, 48, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,175, 0, 0, 1, 35, 0, 0, 1,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,106, 0, 0, 1,167, 0, 0, 1, 35,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 35, 0, 0, 0,175, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,167,
- 0, 0, 0,106, 0, 0, 1,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,168, 0, 0, 1,169, 0, 0, 1,167, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 48, 0, 0, 1,167, 0, 0, 1,169, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,169, 0, 0, 1,168,
- 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,174, 0, 0, 1,169, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 42, 0, 0, 0,162, 0, 0, 1,169,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,169, 0, 0, 0,174, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,163,
- 0, 0, 0, 42, 0, 0, 1,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,168, 0, 0, 1, 34, 0, 0, 0,163, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0,163, 0, 0, 1, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 34, 0, 0, 1,168,
- 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 39, 0, 0, 0,108, 0, 0, 1,170, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,170, 0, 0, 0,187, 0, 0, 1, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 18, 0, 0, 1, 39, 0, 0, 0,187,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,187, 0, 0, 1,170, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,171,
- 0, 0, 0, 54, 0, 0, 1,170, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,170, 0, 0, 1,172, 0, 0, 1,171, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 45, 0, 0, 1,171, 0, 0, 1,172, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,172, 0, 0, 1,170,
- 0, 0, 0,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 38, 0, 0, 0, 13, 0, 0, 0,169, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,169, 0, 0, 1,172, 0, 0, 1, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,108, 0, 0, 1, 38, 0, 0, 1,172,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,172, 0, 0, 0,169, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,171,
- 0, 0, 0, 45, 0, 0, 0,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,168, 0, 0, 0,186, 0, 0, 1,171, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 54, 0, 0, 1,171, 0, 0, 0,186, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,186, 0, 0, 0,168,
- 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 38, 0, 0, 0,108, 0, 0, 1,173, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,173, 0, 0, 1, 40, 0, 0, 1, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 1, 38, 0, 0, 1, 40,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 40, 0, 0, 1,173, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,174,
- 0, 0, 0,109, 0, 0, 1,173, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,173, 0, 0, 1,175, 0, 0, 1,174, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,110, 0, 0, 1,174, 0, 0, 1,175, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,175, 0, 0, 1,173,
- 0, 0, 0,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 39, 0, 0, 0, 18, 0, 0, 1, 43, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 43, 0, 0, 1,175, 0, 0, 1, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,108, 0, 0, 1, 39, 0, 0, 1,175,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,175, 0, 0, 1, 43, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,174,
- 0, 0, 0,110, 0, 0, 1, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 42, 0, 0, 1, 41, 0, 0, 1,174, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,109, 0, 0, 1,174, 0, 0, 1, 41, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 41, 0, 0, 1, 42,
- 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,184, 0, 0, 0, 53, 0, 0, 1,176, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,176, 0, 0, 0,188, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,184, 0, 0, 0,188,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,188, 0, 0, 1,176, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,177,
- 0, 0, 0, 55, 0, 0, 1,176, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,176, 0, 0, 1,178, 0, 0, 1,177, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,110, 0, 0, 1,177, 0, 0, 1,178, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,178, 0, 0, 1,176,
- 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,185, 0, 0, 0, 17, 0, 0, 1, 42, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 42, 0, 0, 1,178, 0, 0, 0,185, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 53, 0, 0, 0,185, 0, 0, 1,178,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,178, 0, 0, 1, 42, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,177,
- 0, 0, 0,110, 0, 0, 1, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 43, 0, 0, 0,189, 0, 0, 1,177, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 55, 0, 0, 1,177, 0, 0, 0,189, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,189, 0, 0, 1, 43,
- 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,183, 0, 0, 0, 52, 0, 0, 1,179, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,179, 0, 0, 1, 41, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 17, 0, 0, 0,183, 0, 0, 1, 41,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 41, 0, 0, 1,179, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,180,
- 0, 0, 0,109, 0, 0, 1,179, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,179, 0, 0, 1,181, 0, 0, 1,180, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 44, 0, 0, 1,180, 0, 0, 1,181, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,181, 0, 0, 1,179,
- 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,166, 0, 0, 1,181, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 52, 0, 0, 0,182, 0, 0, 1,181,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,181, 0, 0, 0,166, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,180,
- 0, 0, 0, 44, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,167, 0, 0, 1, 40, 0, 0, 1,180, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,109, 0, 0, 1,180, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 40, 0, 0, 0,167,
- 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 45, 0, 0, 0,111, 0, 0, 1,182, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,182, 0, 0, 0,195, 0, 0, 1, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 1, 45, 0, 0, 0,195,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,195, 0, 0, 1,182, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,183,
- 0, 0, 0, 58, 0, 0, 1,182, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,182, 0, 0, 1,184, 0, 0, 1,183, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 53, 0, 0, 1,183, 0, 0, 1,184, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,184, 0, 0, 1,182,
- 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 44, 0, 0, 0, 17, 0, 0, 0,185, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,185, 0, 0, 1,184, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,111, 0, 0, 1, 44, 0, 0, 1,184,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,184, 0, 0, 0,185, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,183,
- 0, 0, 0, 53, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,184, 0, 0, 0,194, 0, 0, 1,183, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 58, 0, 0, 1,183, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,194, 0, 0, 0,184,
- 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 44, 0, 0, 0,111, 0, 0, 1,185, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,185, 0, 0, 1, 46, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 17, 0, 0, 1, 44, 0, 0, 1, 46,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 46, 0, 0, 1,185, 0, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,186,
- 0, 0, 0,112, 0, 0, 1,185, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,185, 0, 0, 1,187, 0, 0, 1,186, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,113, 0, 0, 1,186, 0, 0, 1,187, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,187, 0, 0, 1,185,
- 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 45, 0, 0, 0, 20, 0, 0, 1, 49, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 49, 0, 0, 1,187, 0, 0, 1, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,111, 0, 0, 1, 45, 0, 0, 1,187,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,187, 0, 0, 1, 49, 0, 0, 0,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,186,
- 0, 0, 0,113, 0, 0, 1, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 48, 0, 0, 1, 47, 0, 0, 1,186, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,112, 0, 0, 1,186, 0, 0, 1, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 47, 0, 0, 1, 48,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,192, 0, 0, 0, 57, 0, 0, 1,188, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,188, 0, 0, 0,196, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,192, 0, 0, 0,196,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,196, 0, 0, 1,188, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,189,
- 0, 0, 0, 59, 0, 0, 1,188, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,188, 0, 0, 1,190, 0, 0, 1,189, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,113, 0, 0, 1,189, 0, 0, 1,190, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,190, 0, 0, 1,188,
- 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,193, 0, 0, 0, 19, 0, 0, 1, 48, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 48, 0, 0, 1,190, 0, 0, 0,193, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 57, 0, 0, 0,193, 0, 0, 1,190,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,190, 0, 0, 1, 48, 0, 0, 0,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,189,
- 0, 0, 0,113, 0, 0, 1, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 49, 0, 0, 0,197, 0, 0, 1,189, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 59, 0, 0, 1,189, 0, 0, 0,197, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,197, 0, 0, 1, 49,
- 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,191, 0, 0, 0, 56, 0, 0, 1,191, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,191, 0, 0, 1, 47, 0, 0, 0,191, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19, 0, 0, 0,191, 0, 0, 1, 47,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 47, 0, 0, 1,191, 0, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,192,
- 0, 0, 0,112, 0, 0, 1,191, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,191, 0, 0, 1,193, 0, 0, 1,192, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 52, 0, 0, 1,192, 0, 0, 1,193, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,193, 0, 0, 1,191,
- 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,190, 0, 0, 0, 0, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,182, 0, 0, 1,193, 0, 0, 0,190, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 56, 0, 0, 0,190, 0, 0, 1,193,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,193, 0, 0, 0,182, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,192,
- 0, 0, 0, 52, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,183, 0, 0, 1, 46, 0, 0, 1,192, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,112, 0, 0, 1,192, 0, 0, 1, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 46, 0, 0, 0,183,
- 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 51, 0, 0, 0,114, 0, 0, 1,194, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,194, 0, 0, 0,199, 0, 0, 1, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 21, 0, 0, 1, 51, 0, 0, 0,199,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,199, 0, 0, 1,194, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,195,
- 0, 0, 0, 60, 0, 0, 1,194, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,194, 0, 0, 1,196, 0, 0, 1,195, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 57, 0, 0, 1,195, 0, 0, 1,196, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,196, 0, 0, 1,194,
- 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 50, 0, 0, 0, 19, 0, 0, 0,193, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,193, 0, 0, 1,196, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,114, 0, 0, 1, 50, 0, 0, 1,196,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,196, 0, 0, 0,193, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,195,
- 0, 0, 0, 57, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,192, 0, 0, 0,198, 0, 0, 1,195, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 60, 0, 0, 1,195, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,198, 0, 0, 0,192,
- 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 50, 0, 0, 0,114, 0, 0, 1,197, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,197, 0, 0, 1, 53, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19, 0, 0, 1, 50, 0, 0, 1, 53,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 53, 0, 0, 1,197, 0, 0, 0,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,198,
- 0, 0, 0,115, 0, 0, 1,197, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,197, 0, 0, 1,199, 0, 0, 1,198, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,116, 0, 0, 1,198, 0, 0, 1,199, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,199, 0, 0, 1,197,
- 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 51, 0, 0, 0, 21, 0, 0, 1, 55, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 55, 0, 0, 1,199, 0, 0, 1, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,114, 0, 0, 1, 51, 0, 0, 1,199,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,199, 0, 0, 1, 55, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,198,
- 0, 0, 0,116, 0, 0, 1, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 54, 0, 0, 1, 52, 0, 0, 1,198, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,115, 0, 0, 1,198, 0, 0, 1, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 52, 0, 0, 1, 54,
- 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,176, 0, 0, 0, 49, 0, 0, 1,200, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,200, 0, 0, 0,200, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0,176, 0, 0, 0,200,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,200, 0, 0, 1,200, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,201,
- 0, 0, 0, 61, 0, 0, 1,200, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,200, 0, 0, 1,202, 0, 0, 1,201, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,116, 0, 0, 1,201, 0, 0, 1,202, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,202, 0, 0, 1,200,
- 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,177, 0, 0, 0, 15, 0, 0, 1, 54, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 54, 0, 0, 1,202, 0, 0, 0,177, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 49, 0, 0, 0,177, 0, 0, 1,202,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,202, 0, 0, 1, 54, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,201,
- 0, 0, 0,116, 0, 0, 1, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 55, 0, 0, 0,201, 0, 0, 1,201, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 61, 0, 0, 1,201, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,201, 0, 0, 1, 55,
- 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,175, 0, 0, 0, 48, 0, 0, 1,203, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,203, 0, 0, 1, 52, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 15, 0, 0, 0,175, 0, 0, 1, 52,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 52, 0, 0, 1,203, 0, 0, 0,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,204,
- 0, 0, 0,115, 0, 0, 1,203, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,203, 0, 0, 1,205, 0, 0, 1,204, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 56, 0, 0, 1,204, 0, 0, 1,205, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,205, 0, 0, 1,203,
- 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0,190, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,190, 0, 0, 1,205, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 48, 0, 0, 0,174, 0, 0, 1,205,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,205, 0, 0, 0,190, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,204,
- 0, 0, 0, 56, 0, 0, 0,191, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,191, 0, 0, 1, 53, 0, 0, 1,204, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,115, 0, 0, 1,204, 0, 0, 1, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 53, 0, 0, 0,191,
- 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,206, 0, 0, 0,117, 0, 0, 1, 57, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 57, 0, 0, 0,207, 0, 0, 1,206, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 64, 0, 0, 1,206, 0, 0, 0,207,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,207, 0, 0, 1, 57, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,206,
- 0, 0, 0, 64, 0, 0, 1,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,207, 0, 0, 1,208, 0, 0, 1,206, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,117, 0, 0, 1,206, 0, 0, 1,208, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,208, 0, 0, 1,207,
- 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,179, 0, 0, 0, 16, 0, 0, 1, 56, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 56, 0, 0, 1,208, 0, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 50, 0, 0, 0,179, 0, 0, 1,208,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,208, 0, 0, 1, 56, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,178,
- 0, 0, 0, 50, 0, 0, 1,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,207, 0, 0, 0,206, 0, 0, 0,178, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,178, 0, 0, 0,206, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,206, 0, 0, 1,207,
- 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,209, 0, 0, 0,117, 0, 0, 1, 56, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 56, 0, 0, 1, 58, 0, 0, 1,209, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,118, 0, 0, 1,209, 0, 0, 1, 58,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 58, 0, 0, 1, 56, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,209,
- 0, 0, 0,118, 0, 0, 1,210, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,210, 0, 0, 1,211, 0, 0, 1,209, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,117, 0, 0, 1,209, 0, 0, 1,211, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,211, 0, 0, 1,210,
- 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 61, 0, 0, 0, 23, 0, 0, 1, 57, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 57, 0, 0, 1,211, 0, 0, 1, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,119, 0, 0, 1, 61, 0, 0, 1,211,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,211, 0, 0, 1, 57, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 60,
- 0, 0, 0,119, 0, 0, 1,210, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,210, 0, 0, 1, 59, 0, 0, 1, 60, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 1, 60, 0, 0, 1, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 59, 0, 0, 1,210,
- 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,212, 0, 0, 0, 63, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,204, 0, 0, 0,208, 0, 0, 1,212, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 65, 0, 0, 1,212, 0, 0, 0,208,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,208, 0, 0, 0,204, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,212,
- 0, 0, 0, 65, 0, 0, 1,213, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,213, 0, 0, 1,214, 0, 0, 1,212, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 63, 0, 0, 1,212, 0, 0, 1,214, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,214, 0, 0, 1,213,
- 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 60, 0, 0, 0, 22, 0, 0, 0,205, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,205, 0, 0, 1,214, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,119, 0, 0, 1, 60, 0, 0, 1,214,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,214, 0, 0, 0,205, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 61,
- 0, 0, 0,119, 0, 0, 1,213, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,213, 0, 0, 0,209, 0, 0, 1, 61, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 23, 0, 0, 1, 61, 0, 0, 0,209, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,209, 0, 0, 1,213,
- 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,215, 0, 0, 0, 62, 0, 0, 0,203, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,203, 0, 0, 1, 59, 0, 0, 1,215, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,118, 0, 0, 1,215, 0, 0, 1, 59,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 59, 0, 0, 0,203, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,215,
- 0, 0, 0,118, 0, 0, 1,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,216, 0, 0, 1,217, 0, 0, 1,215, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 62, 0, 0, 1,215, 0, 0, 1,217, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,217, 0, 0, 1,216,
- 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,180, 0, 0, 0, 5, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,202, 0, 0, 1,217, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 51, 0, 0, 0,180, 0, 0, 1,217,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,217, 0, 0, 0,202, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,181,
- 0, 0, 0, 51, 0, 0, 1,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,216, 0, 0, 1, 58, 0, 0, 0,181, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0,181, 0, 0, 1, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 58, 0, 0, 1,216,
- 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,218, 0, 0, 0,120, 0, 0, 1, 63, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 63, 0, 0, 0,215, 0, 0, 1,218, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 68, 0, 0, 1,218, 0, 0, 0,215,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,215, 0, 0, 1, 63, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,218,
- 0, 0, 0, 68, 0, 0, 1,219, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,219, 0, 0, 1,220, 0, 0, 1,218, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,120, 0, 0, 1,218, 0, 0, 1,220, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,220, 0, 0, 1,219,
- 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,173, 0, 0, 0, 14, 0, 0, 1, 62, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 62, 0, 0, 1,220, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 47, 0, 0, 0,173, 0, 0, 1,220,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,220, 0, 0, 1, 62, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,172,
- 0, 0, 0, 47, 0, 0, 1,219, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,219, 0, 0, 0,214, 0, 0, 0,172, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,172, 0, 0, 0,214, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,214, 0, 0, 1,219,
- 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,221, 0, 0, 0,120, 0, 0, 1, 62, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 62, 0, 0, 1, 64, 0, 0, 1,221, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,121, 0, 0, 1,221, 0, 0, 1, 64,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 64, 0, 0, 1, 62, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,221,
- 0, 0, 0,121, 0, 0, 1,222, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,222, 0, 0, 1,223, 0, 0, 1,221, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,120, 0, 0, 1,221, 0, 0, 1,223, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,223, 0, 0, 1,222,
- 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 67, 0, 0, 0, 25, 0, 0, 1, 63, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 63, 0, 0, 1,223, 0, 0, 1, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,122, 0, 0, 1, 67, 0, 0, 1,223,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,223, 0, 0, 1, 63, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 66,
- 0, 0, 0,122, 0, 0, 1,222, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,222, 0, 0, 1, 65, 0, 0, 1, 66, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 24, 0, 0, 1, 66, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 65, 0, 0, 1,222,
- 0, 0, 0,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,224, 0, 0, 0, 67, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,212, 0, 0, 0,216, 0, 0, 1,224, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 69, 0, 0, 1,224, 0, 0, 0,216,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,216, 0, 0, 0,212, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,224,
- 0, 0, 0, 69, 0, 0, 1,225, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,225, 0, 0, 1,226, 0, 0, 1,224, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 67, 0, 0, 1,224, 0, 0, 1,226, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,226, 0, 0, 1,225,
- 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 66, 0, 0, 0, 24, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,213, 0, 0, 1,226, 0, 0, 1, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,122, 0, 0, 1, 66, 0, 0, 1,226,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,226, 0, 0, 0,213, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 67,
- 0, 0, 0,122, 0, 0, 1,225, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,225, 0, 0, 0,217, 0, 0, 1, 67, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 1, 67, 0, 0, 0,217, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,217, 0, 0, 1,225,
- 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,227, 0, 0, 0, 66, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,211, 0, 0, 1, 65, 0, 0, 1,227, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,121, 0, 0, 1,227, 0, 0, 1, 65,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 65, 0, 0, 0,211, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,227,
- 0, 0, 0,121, 0, 0, 1,228, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,228, 0, 0, 1,229, 0, 0, 1,227, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 66, 0, 0, 1,227, 0, 0, 1,229, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,229, 0, 0, 1,228,
- 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,210, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,210, 0, 0, 1,229, 0, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 46, 0, 0, 0,170, 0, 0, 1,229,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,229, 0, 0, 0,210, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,171,
- 0, 0, 0, 46, 0, 0, 1,228, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,228, 0, 0, 1, 64, 0, 0, 0,171, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 14, 0, 0, 0,171, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 64, 0, 0, 1,228,
- 0, 0, 0,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,230, 0, 0, 0,123, 0, 0, 1, 69, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 69, 0, 0, 0,223, 0, 0, 1,230, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 72, 0, 0, 1,230, 0, 0, 0,223,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,223, 0, 0, 1, 69, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,230,
- 0, 0, 0, 72, 0, 0, 1,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,231, 0, 0, 1,232, 0, 0, 1,230, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,123, 0, 0, 1,230, 0, 0, 1,232, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,232, 0, 0, 1,231,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 68, 0, 0, 1,232, 0, 0, 0,189, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 55, 0, 0, 0,189, 0, 0, 1,232,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,232, 0, 0, 1, 68, 0, 0, 0,123, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,188,
- 0, 0, 0, 55, 0, 0, 1,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,231, 0, 0, 0,222, 0, 0, 0,188, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,188, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,222, 0, 0, 1,231,
- 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,233, 0, 0, 0,123, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 68, 0, 0, 1, 70, 0, 0, 1,233, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,124, 0, 0, 1,233, 0, 0, 1, 70,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 70, 0, 0, 1, 68, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,233,
- 0, 0, 0,124, 0, 0, 1,234, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,234, 0, 0, 1,235, 0, 0, 1,233, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,123, 0, 0, 1,233, 0, 0, 1,235, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,235, 0, 0, 1,234,
- 0, 0, 0,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 73, 0, 0, 0, 27, 0, 0, 1, 69, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 69, 0, 0, 1,235, 0, 0, 1, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,125, 0, 0, 1, 73, 0, 0, 1,235,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,235, 0, 0, 1, 69, 0, 0, 0,123, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 72,
- 0, 0, 0,125, 0, 0, 1,234, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,234, 0, 0, 1, 71, 0, 0, 1, 72, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 26, 0, 0, 1, 72, 0, 0, 1, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 71, 0, 0, 1,234,
- 0, 0, 0,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,236, 0, 0, 0, 71, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,220, 0, 0, 0,224, 0, 0, 1,236, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 73, 0, 0, 1,236, 0, 0, 0,224,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,224, 0, 0, 0,220, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,236,
- 0, 0, 0, 73, 0, 0, 1,237, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,237, 0, 0, 1,238, 0, 0, 1,236, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 71, 0, 0, 1,236, 0, 0, 1,238, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,238, 0, 0, 1,237,
- 0, 0, 0,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 72, 0, 0, 0, 26, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,221, 0, 0, 1,238, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,125, 0, 0, 1, 72, 0, 0, 1,238,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,238, 0, 0, 0,221, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 73,
- 0, 0, 0,125, 0, 0, 1,237, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,237, 0, 0, 0,225, 0, 0, 1, 73, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 27, 0, 0, 1, 73, 0, 0, 0,225, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,225, 0, 0, 1,237,
- 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,239, 0, 0, 0, 70, 0, 0, 0,219, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,219, 0, 0, 1, 71, 0, 0, 1,239, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,124, 0, 0, 1,239, 0, 0, 1, 71,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 71, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,239,
- 0, 0, 0,124, 0, 0, 1,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,240, 0, 0, 1,241, 0, 0, 1,239, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 70, 0, 0, 1,239, 0, 0, 1,241, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,241, 0, 0, 1,240,
- 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,186, 0, 0, 0, 2, 0, 0, 0,218, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,218, 0, 0, 1,241, 0, 0, 0,186, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 54, 0, 0, 0,186, 0, 0, 1,241,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,241, 0, 0, 0,218, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,187,
- 0, 0, 0, 54, 0, 0, 1,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,240, 0, 0, 1, 70, 0, 0, 0,187, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 18, 0, 0, 0,187, 0, 0, 1, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 70, 0, 0, 1,240,
- 0, 0, 0,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,242, 0, 0, 0,126, 0, 0, 1, 75, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 75, 0, 0, 0,231, 0, 0, 1,242, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76, 0, 0, 1,242, 0, 0, 0,231,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,231, 0, 0, 1, 75, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,242,
- 0, 0, 0, 76, 0, 0, 1,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,243, 0, 0, 1,244, 0, 0, 1,242, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,126, 0, 0, 1,242, 0, 0, 1,244, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,244, 0, 0, 1,243,
- 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,197, 0, 0, 0, 20, 0, 0, 1, 74, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 74, 0, 0, 1,244, 0, 0, 0,197, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 59, 0, 0, 0,197, 0, 0, 1,244,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,244, 0, 0, 1, 74, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,196,
- 0, 0, 0, 59, 0, 0, 1,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,243, 0, 0, 0,230, 0, 0, 0,196, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,196, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,230, 0, 0, 1,243,
- 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,245, 0, 0, 0,126, 0, 0, 1, 74, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 74, 0, 0, 1, 76, 0, 0, 1,245, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,127, 0, 0, 1,245, 0, 0, 1, 76,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 76, 0, 0, 1, 74, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,245,
- 0, 0, 0,127, 0, 0, 1,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,246, 0, 0, 1,247, 0, 0, 1,245, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,126, 0, 0, 1,245, 0, 0, 1,247, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,247, 0, 0, 1,246,
- 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 79, 0, 0, 0, 29, 0, 0, 1, 75, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 75, 0, 0, 1,247, 0, 0, 1, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,128, 0, 0, 1, 79, 0, 0, 1,247,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,247, 0, 0, 1, 75, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 78,
- 0, 0, 0,128, 0, 0, 1,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,246, 0, 0, 1, 77, 0, 0, 1, 78, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 28, 0, 0, 1, 78, 0, 0, 1, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 77, 0, 0, 1,246,
- 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,248, 0, 0, 0, 75, 0, 0, 0,228, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,228, 0, 0, 0,232, 0, 0, 1,248, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 77, 0, 0, 1,248, 0, 0, 0,232,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,232, 0, 0, 0,228, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,248,
- 0, 0, 0, 77, 0, 0, 1,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,249, 0, 0, 1,250, 0, 0, 1,248, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 1,248, 0, 0, 1,250, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,250, 0, 0, 1,249,
- 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 78, 0, 0, 0, 28, 0, 0, 0,229, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,229, 0, 0, 1,250, 0, 0, 1, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,128, 0, 0, 1, 78, 0, 0, 1,250,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,250, 0, 0, 0,229, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 79,
- 0, 0, 0,128, 0, 0, 1,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,249, 0, 0, 0,233, 0, 0, 1, 79, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 29, 0, 0, 1, 79, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,233, 0, 0, 1,249,
- 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,251, 0, 0, 0, 74, 0, 0, 0,227, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,227, 0, 0, 1, 77, 0, 0, 1,251, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,127, 0, 0, 1,251, 0, 0, 1, 77,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 77, 0, 0, 0,227, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,251,
- 0, 0, 0,127, 0, 0, 1,252, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,252, 0, 0, 1,253, 0, 0, 1,251, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 74, 0, 0, 1,251, 0, 0, 1,253, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,253, 0, 0, 1,252,
- 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,194, 0, 0, 0, 3, 0, 0, 0,226, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,226, 0, 0, 1,253, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 58, 0, 0, 0,194, 0, 0, 1,253,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,253, 0, 0, 0,226, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,195,
- 0, 0, 0, 58, 0, 0, 1,252, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,252, 0, 0, 1, 76, 0, 0, 0,195, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0,195, 0, 0, 1, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 76, 0, 0, 1,252,
- 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,254, 0, 0, 0,129, 0, 0, 1, 81, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 81, 0, 0, 0,239, 0, 0, 1,254, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 80, 0, 0, 1,254, 0, 0, 0,239,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,239, 0, 0, 1, 81, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,254,
- 0, 0, 0, 80, 0, 0, 1,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,255, 0, 0, 2, 0, 0, 0, 1,254, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,129, 0, 0, 1,254, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 1,255,
- 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,201, 0, 0, 0, 21, 0, 0, 1, 80, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 80, 0, 0, 2, 0, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 61, 0, 0, 0,201, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 1, 80, 0, 0, 0,129, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,200,
- 0, 0, 0, 61, 0, 0, 1,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,255, 0, 0, 0,238, 0, 0, 0,200, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0,200, 0, 0, 0,238, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,238, 0, 0, 1,255,
- 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 1, 0, 0, 0,129, 0, 0, 1, 80, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 80, 0, 0, 1, 82, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,130, 0, 0, 2, 1, 0, 0, 1, 82,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 82, 0, 0, 1, 80, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 1,
- 0, 0, 0,130, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 2, 3, 0, 0, 2, 1, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,129, 0, 0, 2, 1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 3, 0, 0, 2, 2,
- 0, 0, 0,131, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 85, 0, 0, 0, 31, 0, 0, 1, 81, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 81, 0, 0, 2, 3, 0, 0, 1, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,131, 0, 0, 1, 85, 0, 0, 2, 3,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 3, 0, 0, 1, 81, 0, 0, 0,129, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 84,
- 0, 0, 0,131, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 1, 83, 0, 0, 1, 84, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 30, 0, 0, 1, 84, 0, 0, 1, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 83, 0, 0, 2, 2,
- 0, 0, 0,130, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 4, 0, 0, 0, 79, 0, 0, 0,236, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,236, 0, 0, 0,240, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 81, 0, 0, 2, 4, 0, 0, 0,240,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,240, 0, 0, 0,236, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 4,
- 0, 0, 0, 81, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 5, 0, 0, 2, 6, 0, 0, 2, 4, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 79, 0, 0, 2, 4, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 6, 0, 0, 2, 5,
- 0, 0, 0,131, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 84, 0, 0, 0, 30, 0, 0, 0,237, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,237, 0, 0, 2, 6, 0, 0, 1, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,131, 0, 0, 1, 84, 0, 0, 2, 6,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 6, 0, 0, 0,237, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 85,
- 0, 0, 0,131, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 5, 0, 0, 0,241, 0, 0, 1, 85, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 31, 0, 0, 1, 85, 0, 0, 0,241, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,241, 0, 0, 2, 5,
- 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 7, 0, 0, 0, 78, 0, 0, 0,235, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,235, 0, 0, 1, 83, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,130, 0, 0, 2, 7, 0, 0, 1, 83,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 83, 0, 0, 0,235, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 7,
- 0, 0, 0,130, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 8, 0, 0, 2, 9, 0, 0, 2, 7, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 78, 0, 0, 2, 7, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 9, 0, 0, 2, 8,
- 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,198, 0, 0, 0, 4, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,234, 0, 0, 2, 9, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 60, 0, 0, 0,198, 0, 0, 2, 9,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 9, 0, 0, 0,234, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,199,
- 0, 0, 0, 60, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 8, 0, 0, 1, 82, 0, 0, 0,199, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 21, 0, 0, 0,199, 0, 0, 1, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 82, 0, 0, 2, 8,
- 0, 0, 0,130, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 87, 0, 0, 0,132, 0, 0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 10, 0, 0, 0,245, 0, 0, 1, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 32, 0, 0, 1, 87, 0, 0, 0,245,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,245, 0, 0, 2, 10, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 11,
- 0, 0, 0, 83, 0, 0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 10, 0, 0, 2, 12, 0, 0, 2, 11, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 65, 0, 0, 2, 11, 0, 0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 12, 0, 0, 2, 10,
- 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 86, 0, 0, 0, 23, 0, 0, 0,209, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,209, 0, 0, 2, 12, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,132, 0, 0, 1, 86, 0, 0, 2, 12,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 12, 0, 0, 0,209, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 11,
- 0, 0, 0, 65, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,208, 0, 0, 0,244, 0, 0, 2, 11, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 83, 0, 0, 2, 11, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,244, 0, 0, 0,208,
- 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 86, 0, 0, 0,132, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 13, 0, 0, 1, 88, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 23, 0, 0, 1, 86, 0, 0, 1, 88,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 88, 0, 0, 2, 13, 0, 0, 0,133, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 14,
- 0, 0, 0,133, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 13, 0, 0, 2, 15, 0, 0, 2, 14, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,134, 0, 0, 2, 14, 0, 0, 2, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 15, 0, 0, 2, 13,
- 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 87, 0, 0, 0, 32, 0, 0, 1, 91, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 91, 0, 0, 2, 15, 0, 0, 1, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,132, 0, 0, 1, 87, 0, 0, 2, 15,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 15, 0, 0, 1, 91, 0, 0, 0,134, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 14,
- 0, 0, 0,134, 0, 0, 1, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 90, 0, 0, 1, 89, 0, 0, 2, 14, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,133, 0, 0, 2, 14, 0, 0, 1, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 89, 0, 0, 1, 90,
- 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,212, 0, 0, 0, 67, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 16, 0, 0, 0,242, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0,212, 0, 0, 0,242,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,242, 0, 0, 2, 16, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 17,
- 0, 0, 0, 82, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 16, 0, 0, 2, 18, 0, 0, 2, 17, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,134, 0, 0, 2, 17, 0, 0, 2, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 18, 0, 0, 2, 16,
- 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,213, 0, 0, 0, 24, 0, 0, 1, 90, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 90, 0, 0, 2, 18, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 67, 0, 0, 0,213, 0, 0, 2, 18,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 18, 0, 0, 1, 90, 0, 0, 0,134, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 17,
- 0, 0, 0,134, 0, 0, 1, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 91, 0, 0, 0,243, 0, 0, 2, 17, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 82, 0, 0, 2, 17, 0, 0, 0,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,243, 0, 0, 1, 91,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,211, 0, 0, 0, 66, 0, 0, 2, 19, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 19, 0, 0, 1, 89, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 24, 0, 0, 0,211, 0, 0, 1, 89,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 89, 0, 0, 2, 19, 0, 0, 0,133, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 20,
- 0, 0, 0,133, 0, 0, 2, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 19, 0, 0, 2, 21, 0, 0, 2, 20, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 64, 0, 0, 2, 20, 0, 0, 2, 21, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 21, 0, 0, 2, 19,
- 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0,206, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,206, 0, 0, 2, 21, 0, 0, 0,210, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 66, 0, 0, 0,210, 0, 0, 2, 21,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 21, 0, 0, 0,206, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 20,
- 0, 0, 0, 64, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,207, 0, 0, 1, 88, 0, 0, 2, 20, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,133, 0, 0, 2, 20, 0, 0, 1, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 88, 0, 0, 0,207,
- 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 93, 0, 0, 0,135, 0, 0, 2, 22, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 22, 0, 0, 0,247, 0, 0, 1, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 33, 0, 0, 1, 93, 0, 0, 0,247,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,247, 0, 0, 2, 22, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 23,
- 0, 0, 0, 84, 0, 0, 2, 22, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 22, 0, 0, 2, 24, 0, 0, 2, 23, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 69, 0, 0, 2, 23, 0, 0, 2, 24, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 24, 0, 0, 2, 22,
- 0, 0, 0,135, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 92, 0, 0, 0, 25, 0, 0, 0,217, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,217, 0, 0, 2, 24, 0, 0, 1, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,135, 0, 0, 1, 92, 0, 0, 2, 24,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 24, 0, 0, 0,217, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 23,
- 0, 0, 0, 69, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,216, 0, 0, 0,246, 0, 0, 2, 23, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 84, 0, 0, 2, 23, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,246, 0, 0, 0,216,
- 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 92, 0, 0, 0,135, 0, 0, 2, 25, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 25, 0, 0, 1, 94, 0, 0, 1, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 1, 92, 0, 0, 1, 94,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 94, 0, 0, 2, 25, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 26,
- 0, 0, 0,136, 0, 0, 2, 25, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 25, 0, 0, 2, 27, 0, 0, 2, 26, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,137, 0, 0, 2, 26, 0, 0, 2, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 27, 0, 0, 2, 25,
- 0, 0, 0,135, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 93, 0, 0, 0, 33, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 97, 0, 0, 2, 27, 0, 0, 1, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,135, 0, 0, 1, 93, 0, 0, 2, 27,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 27, 0, 0, 1, 97, 0, 0, 0,137, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 26,
- 0, 0, 0,137, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 96, 0, 0, 1, 95, 0, 0, 2, 26, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,136, 0, 0, 2, 26, 0, 0, 1, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 95, 0, 0, 1, 96,
- 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,220, 0, 0, 0, 71, 0, 0, 2, 28, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 28, 0, 0, 0,248, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,220, 0, 0, 0,248,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,248, 0, 0, 2, 28, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 29,
- 0, 0, 0, 85, 0, 0, 2, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 28, 0, 0, 2, 30, 0, 0, 2, 29, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,137, 0, 0, 2, 29, 0, 0, 2, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 30, 0, 0, 2, 28,
- 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,221, 0, 0, 0, 26, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 96, 0, 0, 2, 30, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 71, 0, 0, 0,221, 0, 0, 2, 30,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 30, 0, 0, 1, 96, 0, 0, 0,137, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 29,
- 0, 0, 0,137, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 97, 0, 0, 0,249, 0, 0, 2, 29, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 85, 0, 0, 2, 29, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,249, 0, 0, 1, 97,
- 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,219, 0, 0, 0, 70, 0, 0, 2, 31, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 31, 0, 0, 1, 95, 0, 0, 0,219, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 26, 0, 0, 0,219, 0, 0, 1, 95,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 95, 0, 0, 2, 31, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 32,
- 0, 0, 0,136, 0, 0, 2, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 31, 0, 0, 2, 33, 0, 0, 2, 32, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 68, 0, 0, 2, 32, 0, 0, 2, 33, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 33, 0, 0, 2, 31,
- 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,218, 0, 0, 0, 2, 0, 0, 0,214, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,214, 0, 0, 2, 33, 0, 0, 0,218, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 70, 0, 0, 0,218, 0, 0, 2, 33,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 33, 0, 0, 0,214, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 32,
- 0, 0, 0, 68, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,215, 0, 0, 1, 94, 0, 0, 2, 32, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,136, 0, 0, 2, 32, 0, 0, 1, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 94, 0, 0, 0,215,
- 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 99, 0, 0, 0,138, 0, 0, 2, 34, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 34, 0, 0, 0,251, 0, 0, 1, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 1, 99, 0, 0, 0,251,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,251, 0, 0, 2, 34, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 35,
- 0, 0, 0, 86, 0, 0, 2, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 34, 0, 0, 2, 36, 0, 0, 2, 35, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 73, 0, 0, 2, 35, 0, 0, 2, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 36, 0, 0, 2, 34,
- 0, 0, 0,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 98, 0, 0, 0, 27, 0, 0, 0,225, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,225, 0, 0, 2, 36, 0, 0, 1, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,138, 0, 0, 1, 98, 0, 0, 2, 36,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 36, 0, 0, 0,225, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 35,
- 0, 0, 0, 73, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,224, 0, 0, 0,250, 0, 0, 2, 35, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 86, 0, 0, 2, 35, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,250, 0, 0, 0,224,
- 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 98, 0, 0, 0,138, 0, 0, 2, 37, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 37, 0, 0, 1,100, 0, 0, 1, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 27, 0, 0, 1, 98, 0, 0, 1,100,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,100, 0, 0, 2, 37, 0, 0, 0,139, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 38,
- 0, 0, 0,139, 0, 0, 2, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 37, 0, 0, 2, 39, 0, 0, 2, 38, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,140, 0, 0, 2, 38, 0, 0, 2, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 39, 0, 0, 2, 37,
- 0, 0, 0,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 99, 0, 0, 0, 34, 0, 0, 1,103, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,103, 0, 0, 2, 39, 0, 0, 1, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,138, 0, 0, 1, 99, 0, 0, 2, 39,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 39, 0, 0, 1,103, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 38,
- 0, 0, 0,140, 0, 0, 1,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,102, 0, 0, 1,101, 0, 0, 2, 38, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,139, 0, 0, 2, 38, 0, 0, 1,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,101, 0, 0, 1,102,
- 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,228, 0, 0, 0, 75, 0, 0, 2, 40, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 40, 0, 0, 0,252, 0, 0, 0,228, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0,228, 0, 0, 0,252,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,252, 0, 0, 2, 40, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 41,
- 0, 0, 0, 87, 0, 0, 2, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 40, 0, 0, 2, 42, 0, 0, 2, 41, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,140, 0, 0, 2, 41, 0, 0, 2, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 42, 0, 0, 2, 40,
- 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,229, 0, 0, 0, 28, 0, 0, 1,102, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,102, 0, 0, 2, 42, 0, 0, 0,229, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,229, 0, 0, 2, 42,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 42, 0, 0, 1,102, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 41,
- 0, 0, 0,140, 0, 0, 1,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,103, 0, 0, 0,253, 0, 0, 2, 41, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 87, 0, 0, 2, 41, 0, 0, 0,253, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,253, 0, 0, 1,103,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,227, 0, 0, 0, 74, 0, 0, 2, 43, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 43, 0, 0, 1,101, 0, 0, 0,227, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 28, 0, 0, 0,227, 0, 0, 1,101,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,101, 0, 0, 2, 43, 0, 0, 0,139, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 44,
- 0, 0, 0,139, 0, 0, 2, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 43, 0, 0, 2, 45, 0, 0, 2, 44, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 72, 0, 0, 2, 44, 0, 0, 2, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 45, 0, 0, 2, 43,
- 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,226, 0, 0, 0, 3, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,222, 0, 0, 2, 45, 0, 0, 0,226, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 74, 0, 0, 0,226, 0, 0, 2, 45,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 45, 0, 0, 0,222, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 44,
- 0, 0, 0, 72, 0, 0, 0,223, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,223, 0, 0, 1,100, 0, 0, 2, 44, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,139, 0, 0, 2, 44, 0, 0, 1,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,100, 0, 0, 0,223,
- 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,105, 0, 0, 0,141, 0, 0, 2, 46, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 46, 0, 0, 0,255, 0, 0, 1,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 1,105, 0, 0, 0,255,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,255, 0, 0, 2, 46, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 47,
- 0, 0, 0, 88, 0, 0, 2, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 46, 0, 0, 2, 48, 0, 0, 2, 47, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 77, 0, 0, 2, 47, 0, 0, 2, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 48, 0, 0, 2, 46,
- 0, 0, 0,141, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,104, 0, 0, 0, 29, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,233, 0, 0, 2, 48, 0, 0, 1,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,141, 0, 0, 1,104, 0, 0, 2, 48,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 48, 0, 0, 0,233, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 47,
- 0, 0, 0, 77, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,232, 0, 0, 0,254, 0, 0, 2, 47, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 88, 0, 0, 2, 47, 0, 0, 0,254, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,254, 0, 0, 0,232,
- 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,104, 0, 0, 0,141, 0, 0, 2, 49, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 49, 0, 0, 1,106, 0, 0, 1,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29, 0, 0, 1,104, 0, 0, 1,106,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,106, 0, 0, 2, 49, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 50,
- 0, 0, 0,142, 0, 0, 2, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 49, 0, 0, 2, 51, 0, 0, 2, 50, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,143, 0, 0, 2, 50, 0, 0, 2, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 51, 0, 0, 2, 49,
- 0, 0, 0,141, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,105, 0, 0, 0, 35, 0, 0, 1,109, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,109, 0, 0, 2, 51, 0, 0, 1,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,141, 0, 0, 1,105, 0, 0, 2, 51,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 51, 0, 0, 1,109, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 50,
- 0, 0, 0,143, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,108, 0, 0, 1,107, 0, 0, 2, 50, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,142, 0, 0, 2, 50, 0, 0, 1,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,107, 0, 0, 1,108,
- 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,236, 0, 0, 0, 79, 0, 0, 2, 52, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 52, 0, 0, 1, 0, 0, 0, 0,236, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0,236, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 2, 52, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 53,
- 0, 0, 0, 89, 0, 0, 2, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 52, 0, 0, 2, 54, 0, 0, 2, 53, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,143, 0, 0, 2, 53, 0, 0, 2, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 54, 0, 0, 2, 52,
- 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,237, 0, 0, 0, 30, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,108, 0, 0, 2, 54, 0, 0, 0,237, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 79, 0, 0, 0,237, 0, 0, 2, 54,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 54, 0, 0, 1,108, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 53,
- 0, 0, 0,143, 0, 0, 1,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,109, 0, 0, 1, 1, 0, 0, 2, 53, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 89, 0, 0, 2, 53, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 1,109,
- 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,235, 0, 0, 0, 78, 0, 0, 2, 55, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 55, 0, 0, 1,107, 0, 0, 0,235, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 30, 0, 0, 0,235, 0, 0, 1,107,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,107, 0, 0, 2, 55, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 56,
- 0, 0, 0,142, 0, 0, 2, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 55, 0, 0, 2, 57, 0, 0, 2, 56, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 76, 0, 0, 2, 56, 0, 0, 2, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 57, 0, 0, 2, 55,
- 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,234, 0, 0, 0, 4, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,230, 0, 0, 2, 57, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 78, 0, 0, 0,234, 0, 0, 2, 57,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 57, 0, 0, 0,230, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 56,
- 0, 0, 0, 76, 0, 0, 0,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,231, 0, 0, 1,106, 0, 0, 2, 56, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,142, 0, 0, 2, 56, 0, 0, 1,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,106, 0, 0, 0,231,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,111, 0, 0, 0,144, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 58, 0, 0, 1, 3, 0, 0, 1,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 1,111, 0, 0, 1, 3,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 3, 0, 0, 2, 58, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 59,
- 0, 0, 0, 90, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 58, 0, 0, 2, 60, 0, 0, 2, 59, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 81, 0, 0, 2, 59, 0, 0, 2, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 60, 0, 0, 2, 58,
- 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,110, 0, 0, 0, 31, 0, 0, 0,241, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,241, 0, 0, 2, 60, 0, 0, 1,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,144, 0, 0, 1,110, 0, 0, 2, 60,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 60, 0, 0, 0,241, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 59,
- 0, 0, 0, 81, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,240, 0, 0, 1, 2, 0, 0, 2, 59, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 90, 0, 0, 2, 59, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 2, 0, 0, 0,240,
- 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,110, 0, 0, 0,144, 0, 0, 2, 61, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 61, 0, 0, 1,113, 0, 0, 1,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 31, 0, 0, 1,110, 0, 0, 1,113,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,113, 0, 0, 2, 61, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 62,
- 0, 0, 0,145, 0, 0, 2, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 61, 0, 0, 2, 63, 0, 0, 2, 62, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,146, 0, 0, 2, 62, 0, 0, 2, 63, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 63, 0, 0, 2, 61,
- 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,111, 0, 0, 0, 36, 0, 0, 1,115, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,115, 0, 0, 2, 63, 0, 0, 1,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,144, 0, 0, 1,111, 0, 0, 2, 63,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 63, 0, 0, 1,115, 0, 0, 0,146, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 62,
- 0, 0, 0,146, 0, 0, 1,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,114, 0, 0, 1,112, 0, 0, 2, 62, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,145, 0, 0, 2, 62, 0, 0, 1,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,112, 0, 0, 1,114,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,204, 0, 0, 0, 63, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 64, 0, 0, 1, 4, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 0,204, 0, 0, 1, 4,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 4, 0, 0, 2, 64, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 65,
- 0, 0, 0, 91, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 64, 0, 0, 2, 66, 0, 0, 2, 65, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,146, 0, 0, 2, 65, 0, 0, 2, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 66, 0, 0, 2, 64,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,205, 0, 0, 0, 22, 0, 0, 1,114, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,114, 0, 0, 2, 66, 0, 0, 0,205, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 63, 0, 0, 0,205, 0, 0, 2, 66,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 66, 0, 0, 1,114, 0, 0, 0,146, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 65,
- 0, 0, 0,146, 0, 0, 1,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,115, 0, 0, 1, 5, 0, 0, 2, 65, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 91, 0, 0, 2, 65, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 5, 0, 0, 1,115,
- 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,203, 0, 0, 0, 62, 0, 0, 2, 67, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 2, 67, 0, 0, 1,112, 0, 0, 0,203, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 0,203, 0, 0, 1,112,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,112, 0, 0, 2, 67, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 68,
- 0, 0, 0,145, 0, 0, 2, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 67, 0, 0, 2, 69, 0, 0, 2, 68, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 80, 0, 0, 2, 68, 0, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 69, 0, 0, 2, 67,
- 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,202, 0, 0, 0, 5, 0, 0, 0,238, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0,238, 0, 0, 2, 69, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 62, 0, 0, 0,202, 0, 0, 2, 69,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 69, 0, 0, 0,238, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 68,
- 0, 0, 0, 80, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,239, 0, 0, 1,113, 0, 0, 2, 68, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,145, 0, 0, 2, 68, 0, 0, 1,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,113, 0, 0, 0,239,
- 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 70, 0, 0, 0,147, 0, 0, 1,117, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,117, 0, 0, 1, 11, 0, 0, 2, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 94, 0, 0, 2, 70, 0, 0, 1, 11,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 11, 0, 0, 1,117, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 70,
- 0, 0, 0, 94, 0, 0, 2, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 71, 0, 0, 2, 72, 0, 0, 2, 70, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,147, 0, 0, 2, 70, 0, 0, 2, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 72, 0, 0, 2, 71,
- 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,243, 0, 0, 0, 32, 0, 0, 1,116, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,116, 0, 0, 2, 72, 0, 0, 0,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 82, 0, 0, 0,243, 0, 0, 2, 72,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 72, 0, 0, 1,116, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,242,
- 0, 0, 0, 82, 0, 0, 2, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 71, 0, 0, 1, 10, 0, 0, 0,242, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0,242, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 10, 0, 0, 2, 71,
- 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 73, 0, 0, 0,147, 0, 0, 1,116, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,116, 0, 0, 1,118, 0, 0, 2, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,148, 0, 0, 2, 73, 0, 0, 1,118,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,118, 0, 0, 1,116, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 73,
- 0, 0, 0,148, 0, 0, 2, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 74, 0, 0, 2, 75, 0, 0, 2, 73, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,147, 0, 0, 2, 73, 0, 0, 2, 75, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 75, 0, 0, 2, 74,
- 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,121, 0, 0, 0, 38, 0, 0, 1,117, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,117, 0, 0, 2, 75, 0, 0, 1,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,149, 0, 0, 1,121, 0, 0, 2, 75,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 75, 0, 0, 1,117, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,120,
- 0, 0, 0,149, 0, 0, 2, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 74, 0, 0, 1,119, 0, 0, 1,120, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 37, 0, 0, 1,120, 0, 0, 1,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,119, 0, 0, 2, 74,
- 0, 0, 0,148, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 76, 0, 0, 0, 93, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 8, 0, 0, 1, 12, 0, 0, 2, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 95, 0, 0, 2, 76, 0, 0, 1, 12,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 12, 0, 0, 1, 8, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 76,
- 0, 0, 0, 95, 0, 0, 2, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 77, 0, 0, 2, 78, 0, 0, 2, 76, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 93, 0, 0, 2, 76, 0, 0, 2, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 78, 0, 0, 2, 77,
- 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,120, 0, 0, 0, 37, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 9, 0, 0, 2, 78, 0, 0, 1,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,149, 0, 0, 1,120, 0, 0, 2, 78,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 78, 0, 0, 1, 9, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,121,
- 0, 0, 0,149, 0, 0, 2, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 77, 0, 0, 1, 13, 0, 0, 1,121, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 38, 0, 0, 1,121, 0, 0, 1, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 13, 0, 0, 2, 77,
- 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 79, 0, 0, 0, 92, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 7, 0, 0, 1,119, 0, 0, 2, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,148, 0, 0, 2, 79, 0, 0, 1,119,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,119, 0, 0, 1, 7, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 79,
- 0, 0, 0,148, 0, 0, 2, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 80, 0, 0, 2, 81, 0, 0, 2, 79, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 92, 0, 0, 2, 79, 0, 0, 2, 81, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 81, 0, 0, 2, 80,
- 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,244, 0, 0, 0, 10, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 6, 0, 0, 2, 81, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 83, 0, 0, 0,244, 0, 0, 2, 81,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 81, 0, 0, 1, 6, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,245,
- 0, 0, 0, 83, 0, 0, 2, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 80, 0, 0, 1,118, 0, 0, 0,245, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 32, 0, 0, 0,245, 0, 0, 1,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,118, 0, 0, 2, 80,
- 0, 0, 0,148, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 82, 0, 0, 0,150, 0, 0, 1,123, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,123, 0, 0, 1, 15, 0, 0, 2, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 96, 0, 0, 2, 82, 0, 0, 1, 15,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 15, 0, 0, 1,123, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 82,
- 0, 0, 0, 96, 0, 0, 2, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 83, 0, 0, 2, 84, 0, 0, 2, 82, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,150, 0, 0, 2, 82, 0, 0, 2, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 84, 0, 0, 2, 83,
- 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,249, 0, 0, 0, 33, 0, 0, 1,122, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,122, 0, 0, 2, 84, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 85, 0, 0, 0,249, 0, 0, 2, 84,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 84, 0, 0, 1,122, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,248,
- 0, 0, 0, 85, 0, 0, 2, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 83, 0, 0, 1, 14, 0, 0, 0,248, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,248, 0, 0, 1, 14, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 14, 0, 0, 2, 83,
- 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 85, 0, 0, 0,150, 0, 0, 1,122, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,122, 0, 0, 1,124, 0, 0, 2, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,151, 0, 0, 2, 85, 0, 0, 1,124,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,124, 0, 0, 1,122, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 85,
- 0, 0, 0,151, 0, 0, 2, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 86, 0, 0, 2, 87, 0, 0, 2, 85, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,150, 0, 0, 2, 85, 0, 0, 2, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 87, 0, 0, 2, 86,
- 0, 0, 0,152, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,127, 0, 0, 0, 39, 0, 0, 1,123, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,123, 0, 0, 2, 87, 0, 0, 1,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,152, 0, 0, 1,127, 0, 0, 2, 87,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 87, 0, 0, 1,123, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,126,
- 0, 0, 0,152, 0, 0, 2, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 86, 0, 0, 1,125, 0, 0, 1,126, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 38, 0, 0, 1,126, 0, 0, 1,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,125, 0, 0, 2, 86,
- 0, 0, 0,151, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 88, 0, 0, 0, 95, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 12, 0, 0, 1, 16, 0, 0, 2, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 97, 0, 0, 2, 88, 0, 0, 1, 16,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 16, 0, 0, 1, 12, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 88,
- 0, 0, 0, 97, 0, 0, 2, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 89, 0, 0, 2, 90, 0, 0, 2, 88, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 95, 0, 0, 2, 88, 0, 0, 2, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 90, 0, 0, 2, 89,
- 0, 0, 0,152, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,126, 0, 0, 0, 38, 0, 0, 1, 13, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 13, 0, 0, 2, 90, 0, 0, 1,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,152, 0, 0, 1,126, 0, 0, 2, 90,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 90, 0, 0, 1, 13, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,127,
- 0, 0, 0,152, 0, 0, 2, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 89, 0, 0, 1, 17, 0, 0, 1,127, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 39, 0, 0, 1,127, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 17, 0, 0, 2, 89,
- 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 91, 0, 0, 0, 94, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 11, 0, 0, 1,125, 0, 0, 2, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,151, 0, 0, 2, 91, 0, 0, 1,125,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,125, 0, 0, 1, 11, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 91,
- 0, 0, 0,151, 0, 0, 2, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 92, 0, 0, 2, 93, 0, 0, 2, 91, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 94, 0, 0, 2, 91, 0, 0, 2, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 93, 0, 0, 2, 92,
- 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,246, 0, 0, 0, 6, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 10, 0, 0, 2, 93, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 84, 0, 0, 0,246, 0, 0, 2, 93,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 93, 0, 0, 1, 10, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,247,
- 0, 0, 0, 84, 0, 0, 2, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 92, 0, 0, 1,124, 0, 0, 0,247, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 33, 0, 0, 0,247, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,124, 0, 0, 2, 92,
- 0, 0, 0,151, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 94, 0, 0, 0,153, 0, 0, 1,129, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,129, 0, 0, 1, 19, 0, 0, 2, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 98, 0, 0, 2, 94, 0, 0, 1, 19,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 19, 0, 0, 1,129, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 94,
- 0, 0, 0, 98, 0, 0, 2, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 95, 0, 0, 2, 96, 0, 0, 2, 94, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,153, 0, 0, 2, 94, 0, 0, 2, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 96, 0, 0, 2, 95,
- 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 1,128, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,128, 0, 0, 2, 96, 0, 0, 0,253, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 87, 0, 0, 0,253, 0, 0, 2, 96,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 96, 0, 0, 1,128, 0, 0, 0,153, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,252,
- 0, 0, 0, 87, 0, 0, 2, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 95, 0, 0, 1, 18, 0, 0, 0,252, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0,252, 0, 0, 1, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 18, 0, 0, 2, 95,
- 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 97, 0, 0, 0,153, 0, 0, 1,128, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,128, 0, 0, 1,130, 0, 0, 2, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,154, 0, 0, 2, 97, 0, 0, 1,130,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,130, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 97,
- 0, 0, 0,154, 0, 0, 2, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 98, 0, 0, 2, 99, 0, 0, 2, 97, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,153, 0, 0, 2, 97, 0, 0, 2, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 99, 0, 0, 2, 98,
- 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,133, 0, 0, 0, 40, 0, 0, 1,129, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,129, 0, 0, 2, 99, 0, 0, 1,133, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,155, 0, 0, 1,133, 0, 0, 2, 99,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 99, 0, 0, 1,129, 0, 0, 0,153, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,132,
- 0, 0, 0,155, 0, 0, 2, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 98, 0, 0, 1,131, 0, 0, 1,132, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 39, 0, 0, 1,132, 0, 0, 1,131, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,131, 0, 0, 2, 98,
- 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,100, 0, 0, 0, 97, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 16, 0, 0, 1, 20, 0, 0, 2,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 99, 0, 0, 2,100, 0, 0, 1, 20,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 20, 0, 0, 1, 16, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,100,
- 0, 0, 0, 99, 0, 0, 2,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,101, 0, 0, 2,102, 0, 0, 2,100, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 97, 0, 0, 2,100, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,102, 0, 0, 2,101,
- 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,132, 0, 0, 0, 39, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 17, 0, 0, 2,102, 0, 0, 1,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,155, 0, 0, 1,132, 0, 0, 2,102,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,102, 0, 0, 1, 17, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,133,
- 0, 0, 0,155, 0, 0, 2,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,101, 0, 0, 1, 21, 0, 0, 1,133, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 40, 0, 0, 1,133, 0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 21, 0, 0, 2,101,
- 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,103, 0, 0, 0, 96, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 15, 0, 0, 1,131, 0, 0, 2,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,154, 0, 0, 2,103, 0, 0, 1,131,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,131, 0, 0, 1, 15, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,103,
- 0, 0, 0,154, 0, 0, 2,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,104, 0, 0, 2,105, 0, 0, 2,103, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 96, 0, 0, 2,103, 0, 0, 2,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,105, 0, 0, 2,104,
- 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,250, 0, 0, 0, 7, 0, 0, 1, 14, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 14, 0, 0, 2,105, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 86, 0, 0, 0,250, 0, 0, 2,105,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,105, 0, 0, 1, 14, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,251,
- 0, 0, 0, 86, 0, 0, 2,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,104, 0, 0, 1,130, 0, 0, 0,251, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0,251, 0, 0, 1,130, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,130, 0, 0, 2,104,
- 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,106, 0, 0, 0,156, 0, 0, 1,135, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,135, 0, 0, 1, 23, 0, 0, 2,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,100, 0, 0, 2,106, 0, 0, 1, 23,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 23, 0, 0, 1,135, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,106,
- 0, 0, 0,100, 0, 0, 2,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,107, 0, 0, 2,108, 0, 0, 2,106, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,156, 0, 0, 2,106, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,108, 0, 0, 2,107,
- 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 35, 0, 0, 1,134, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,134, 0, 0, 2,108, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 89, 0, 0, 1, 1, 0, 0, 2,108,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,108, 0, 0, 1,134, 0, 0, 0,156, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0,
- 0, 0, 0, 89, 0, 0, 2,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,107, 0, 0, 1, 22, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 1, 22, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 22, 0, 0, 2,107,
- 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,109, 0, 0, 0,156, 0, 0, 1,134, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,134, 0, 0, 1,136, 0, 0, 2,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,157, 0, 0, 2,109, 0, 0, 1,136,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,136, 0, 0, 1,134, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,109,
- 0, 0, 0,157, 0, 0, 2,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,110, 0, 0, 2,111, 0, 0, 2,109, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,156, 0, 0, 2,109, 0, 0, 2,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,111, 0, 0, 2,110,
- 0, 0, 0,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,139, 0, 0, 0, 41, 0, 0, 1,135, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,135, 0, 0, 2,111, 0, 0, 1,139, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,158, 0, 0, 1,139, 0, 0, 2,111,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,111, 0, 0, 1,135, 0, 0, 0,156, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,138,
- 0, 0, 0,158, 0, 0, 2,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,110, 0, 0, 1,137, 0, 0, 1,138, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 40, 0, 0, 1,138, 0, 0, 1,137, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,137, 0, 0, 2,110,
- 0, 0, 0,157, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,112, 0, 0, 0, 99, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 20, 0, 0, 1, 24, 0, 0, 2,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,101, 0, 0, 2,112, 0, 0, 1, 24,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 24, 0, 0, 1, 20, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,112,
- 0, 0, 0,101, 0, 0, 2,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,113, 0, 0, 2,114, 0, 0, 2,112, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 99, 0, 0, 2,112, 0, 0, 2,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,114, 0, 0, 2,113,
- 0, 0, 0,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,138, 0, 0, 0, 40, 0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 21, 0, 0, 2,114, 0, 0, 1,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,158, 0, 0, 1,138, 0, 0, 2,114,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,114, 0, 0, 1, 21, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,139,
- 0, 0, 0,158, 0, 0, 2,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,113, 0, 0, 1, 25, 0, 0, 1,139, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 41, 0, 0, 1,139, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 25, 0, 0, 2,113,
- 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,115, 0, 0, 0, 98, 0, 0, 1, 19, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 19, 0, 0, 1,137, 0, 0, 2,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,157, 0, 0, 2,115, 0, 0, 1,137,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,137, 0, 0, 1, 19, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,115,
- 0, 0, 0,157, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,116, 0, 0, 2,117, 0, 0, 2,115, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 98, 0, 0, 2,115, 0, 0, 2,117, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,117, 0, 0, 2,116,
- 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,254, 0, 0, 0, 8, 0, 0, 1, 18, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 18, 0, 0, 2,117, 0, 0, 0,254, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 88, 0, 0, 0,254, 0, 0, 2,117,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,117, 0, 0, 1, 18, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,255,
- 0, 0, 0, 88, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,116, 0, 0, 1,136, 0, 0, 0,255, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0,255, 0, 0, 1,136, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,136, 0, 0, 2,116,
- 0, 0, 0,157, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,118, 0, 0, 0,159, 0, 0, 1,141, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,141, 0, 0, 1, 7, 0, 0, 2,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 92, 0, 0, 2,118, 0, 0, 1, 7,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 7, 0, 0, 1,141, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,118,
- 0, 0, 0, 92, 0, 0, 2,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,119, 0, 0, 2,120, 0, 0, 2,118, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,159, 0, 0, 2,118, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,120, 0, 0, 2,119,
- 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 5, 0, 0, 0, 36, 0, 0, 1,140, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,140, 0, 0, 2,120, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 91, 0, 0, 1, 5, 0, 0, 2,120,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,120, 0, 0, 1,140, 0, 0, 0,159, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 4,
- 0, 0, 0, 91, 0, 0, 2,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,119, 0, 0, 1, 6, 0, 0, 1, 4, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 1, 4, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 6, 0, 0, 2,119,
- 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,121, 0, 0, 0,159, 0, 0, 1,140, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,140, 0, 0, 1,142, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,160, 0, 0, 2,121, 0, 0, 1,142,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,142, 0, 0, 1,140, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,121,
- 0, 0, 0,160, 0, 0, 2,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,122, 0, 0, 2,123, 0, 0, 2,121, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,159, 0, 0, 2,121, 0, 0, 2,123, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,123, 0, 0, 2,122,
- 0, 0, 0,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,144, 0, 0, 0, 37, 0, 0, 1,141, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1,141, 0, 0, 2,123, 0, 0, 1,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,161, 0, 0, 1,144, 0, 0, 2,123,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,123, 0, 0, 1,141, 0, 0, 0,159, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,145,
- 0, 0, 0,161, 0, 0, 2,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,122, 0, 0, 1,143, 0, 0, 1,145, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 41, 0, 0, 1,145, 0, 0, 1,143, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,143, 0, 0, 2,122,
- 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,124, 0, 0, 0,101, 0, 0, 1, 24, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 24, 0, 0, 1, 8, 0, 0, 2,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 93, 0, 0, 2,124, 0, 0, 1, 8,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 8, 0, 0, 1, 24, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,124,
- 0, 0, 0, 93, 0, 0, 2,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,125, 0, 0, 2,126, 0, 0, 2,124, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,101, 0, 0, 2,124, 0, 0, 2,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,126, 0, 0, 2,125,
- 0, 0, 0,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,145, 0, 0, 0, 41, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 25, 0, 0, 2,126, 0, 0, 1,145, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,161, 0, 0, 1,145, 0, 0, 2,126,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,126, 0, 0, 1, 25, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,144,
- 0, 0, 0,161, 0, 0, 2,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,125, 0, 0, 1, 9, 0, 0, 1,144, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 37, 0, 0, 1,144, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 9, 0, 0, 2,125,
- 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,127, 0, 0, 0,100, 0, 0, 1, 23, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 23, 0, 0, 1,143, 0, 0, 2,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,160, 0, 0, 2,127, 0, 0, 1,143,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,143, 0, 0, 1, 23, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,127,
- 0, 0, 0,160, 0, 0, 2,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,128, 0, 0, 2,129, 0, 0, 2,127, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0,100, 0, 0, 2,127, 0, 0, 2,129, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,129, 0, 0, 2,128,
- 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 2, 0, 0, 0, 9, 0, 0, 1, 22, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 1, 22, 0, 0, 2,129, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 90, 0, 0, 1, 2, 0, 0, 2,129,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,129, 0, 0, 1, 22, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 3,
- 0, 0, 0, 90, 0, 0, 2,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,128, 0, 0, 1,142, 0, 0, 1, 3, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 1, 3, 0, 0, 1,142, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,142, 0, 0, 2,128,
- 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 3, 68, 65, 84, 65, 0, 0,220, 0, 12,119, 64, 32, 0, 0, 0, 65, 0, 0, 5, 0,
- 63,110,222,166, 63, 55,205, 9, 63,105,132,212, 63, 65,236,201, 63,103,153,218, 63, 54,155,119, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,103,153,218, 63, 54,155,119, 63,108,148,118, 63, 44,160,211, 63,110,222,166,
- 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 45, 28, 36,
- 63,110,222,166, 63, 55,205, 9, 63,108,148,118, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,108,148,118, 63, 44,160,211, 63,103,153,218, 63, 54,155,119, 63,102, 17, 87, 63, 43, 52,229, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 81, 56, 63, 52, 55,170, 63,102, 17, 87, 63, 43, 52,229,
- 63,103,153,218, 63, 54,155,119, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,103,153,218,
- 63, 54,155,119, 63, 97, 75, 9, 63, 63,233, 92, 63, 96, 81, 56, 63, 52, 55,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 60, 86, 49, 63, 96, 81, 56, 63, 52, 55,170, 63, 97, 75, 9, 63, 63,233, 92,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 97, 75, 9, 63, 63,233, 92, 63,103,153,218,
- 63, 54,155,119, 63,105,132,212, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 98,167,103, 63, 75, 39,168, 63, 89,153,138, 63, 82,228, 39, 63, 89,153,139, 63, 71,153,255, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 71,153,255, 63, 97, 75, 9, 63, 63,233, 92, 63, 98,167,103,
- 63, 75, 39,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,132,212, 63, 65,236,201,
- 63, 98,167,103, 63, 75, 39,168, 63, 97, 75, 9, 63, 63,233, 92, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 97, 75, 9, 63, 63,233, 92, 63, 89,153,139, 63, 71,153,255, 63, 89,153,138, 63, 60, 86, 49, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 81, 56, 63, 52, 55,170, 63, 89,153,138, 63, 60, 86, 49,
- 63, 89,153,139, 63, 49, 12, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139,
- 63, 49, 12, 79, 63, 95,182,205, 63, 40,228,222, 63, 96, 81, 56, 63, 52, 55,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,102, 17, 87, 63, 43, 52,229, 63, 96, 81, 56, 63, 52, 55,170, 63, 95,182,205, 63, 40,228,222,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,182,205, 63, 40,228,222, 63, 89,153,139,
- 63, 49, 12, 79, 63, 89,153,139, 63, 37,200, 45, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 98,167,103, 63, 75, 39,168, 63,105,132,212, 63, 65,236,201, 63,109, 83,168, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,109, 83,168, 63, 78, 83,207, 63,101, 85,135, 63, 88, 64,148, 63, 98,167,103,
- 63, 75, 39,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 82,228, 39,
- 63, 98,167,103, 63, 75, 39,168, 63,101, 85,135, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,101, 85,135, 63, 88, 64,148, 63,109, 83,168, 63, 78, 83,207, 63,115, 51, 36, 63, 90, 56, 22, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 18,162, 63, 78, 83,207, 63,115, 51, 36, 63, 90, 56, 22,
- 63,109, 83,168, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,109, 83,168,
- 63, 78, 83,207, 63,115, 51, 36, 63, 67, 23,115, 63,121, 18,162, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,124,225,116, 63, 65,236,202, 63,121, 18,162, 63, 78, 83,207, 63,115, 51, 36, 63, 67, 23,115,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 67, 23,115, 63,109, 83,168,
- 63, 78, 83,207, 63,105,132,212, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,110,222,166, 63, 55,205, 9, 63,115, 51, 36, 63, 45, 28, 36, 63,119,135,163, 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,119,135,163, 63, 55,205, 11, 63,115, 51, 36, 63, 67, 23,115, 63,110,222,166,
- 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,132,212, 63, 65,236,201,
- 63,110,222,166, 63, 55,205, 9, 63,115, 51, 36, 63, 67, 23,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,115, 51, 36, 63, 67, 23,115, 63,119,135,163, 63, 55,205, 11, 63,124,225,116, 63, 65,236,202, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 18,162, 63, 78, 83,207, 63,124,225,116, 63, 65,236,202,
- 63,129,223,113, 63, 75, 39,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,129,223,113,
- 63, 75, 39,170, 63,128,136, 98, 63, 88, 64,148, 63,121, 18,162, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 90, 56, 22, 63,121, 18,162, 63, 78, 83,207, 63,128,136, 98, 63, 88, 64,148,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 59,136, 98, 95, 63, 88, 64,148, 60,111,184,160,
- 63, 75, 39,170, 61, 76,203,243, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61, 76,203,243, 63, 49, 12, 82, 61, 76,203,246, 63, 60, 86, 53, 60,194,162, 31, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,194,162, 31, 63, 52, 55,172, 60,213,239,111, 63, 40,228,223, 61, 76,203,243,
- 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,246, 63, 37,200, 48,
- 61, 76,203,243, 63, 49, 12, 82, 60,213,239,111, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 60,213,239,111, 63, 40,228,223, 60,194,162, 31, 63, 52, 55,172, 58,169,226,120, 63, 43, 52,230, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,126,204,111, 63, 54,155,121, 63,128, 42,121, 63, 43, 52,230,
- 63,131, 10,136, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,131, 10,136,
- 63, 52, 55,172, 63,130,141,160, 63, 63,233, 95, 63,126,204,111, 63, 54,155,121, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,124,225,116, 63, 65,236,202, 63,126,204,111, 63, 54,155,121, 63,130,141,160, 63, 63,233, 95,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,163,104, 11, 63, 63,233, 95, 60,194,162, 31,
- 63, 52, 55,172, 61, 76,203,246, 63, 60, 86, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61, 76,203,244, 63, 71,154, 2, 61, 76,203,243, 63, 82,228, 41, 60,111,184,160, 63, 75, 39,170, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,111,184,160, 63, 75, 39,170, 60,163,104, 11, 63, 63,233, 95, 61, 76,203,244,
- 63, 71,154, 2, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,246, 63, 60, 86, 53,
- 61, 76,203,244, 63, 71,154, 2, 60,163,104, 11, 63, 63,233, 95, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,130,141,160, 63, 63,233, 95, 63,129,223,113, 63, 75, 39,170, 63,124,225,116, 63, 65,236,202, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,126,204,111, 63, 54,155,121, 63,124,225,116, 63, 65,236,202,
- 63,119,135,163, 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,119,135,163,
- 63, 55,205, 11, 63,121,209,210, 63, 44,160,212, 63,126,204,111, 63, 54,155,121, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,128, 42,121, 63, 43, 52,230, 63,126,204,111, 63, 54,155,121, 63,121,209,210, 63, 44,160,212,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,209,210, 63, 44,160,212, 63,119,135,163,
- 63, 55,205, 11, 63,115, 51, 36, 63, 45, 28, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,134,102, 95, 63, 94, 46, 79, 63,134,102, 95, 63,105,114, 22, 63,124,205, 52, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,205, 52, 63, 99, 26, 58, 63,128,136, 98, 63, 88, 64,148, 63,134,102, 95,
- 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,243, 63, 82,228, 41,
- 61, 76,203,234, 63, 94, 46, 79, 59,136, 98, 95, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,128,136, 98, 63, 88, 64,148, 63,124,205, 52, 63, 99, 26, 58, 63,115, 51, 36, 63, 90, 56, 22, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,153, 21, 63, 99, 26, 58, 63,115, 51, 36, 63, 90, 56, 22,
- 63,124,205, 52, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,205, 52,
- 63, 99, 26, 58, 63,115, 51, 32, 63,109,154,212, 63,105,153, 21, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63,105,114, 19, 63,105,153, 21, 63, 99, 26, 58, 63,115, 51, 32, 63,109,154,212,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 32, 63,109,154,212, 63,124,205, 52,
- 63, 99, 26, 58, 63,134,102, 95, 63,105,114, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,134,102, 95, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 63, 89,153,136, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,136, 63,116,187,242, 63,115, 51, 32, 63,109,154,212, 63,134,102, 95,
- 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,134,102, 95, 63,105,114, 22,
- 63,134,102, 95, 63,116,187,242, 63,115, 51, 32, 63,109,154,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,115, 51, 32, 63,109,154,212, 63, 89,153,136, 63,116,187,242, 63, 89,153,138, 63,105,114, 19, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,153, 21, 63, 99, 26, 58, 63, 89,153,138, 63,105,114, 19,
- 63, 89,153,138, 63, 94, 46, 77, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138,
- 63, 94, 46, 77, 63,101, 85,135, 63, 88, 64,148, 63,105,153, 21, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 90, 56, 22, 63,105,153, 21, 63, 99, 26, 58, 63,101, 85,135, 63, 88, 64,148,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,101, 85,135, 63, 88, 64,148, 63, 89,153,138,
- 63, 94, 46, 77, 63, 89,153,138, 63, 82,228, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 75,153, 67, 63, 54,155,113, 63, 73,174, 74, 63, 65,236,193, 63, 68, 84,124, 63, 55,204,255, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 68, 84,124, 63, 55,204,255, 63, 70,158,169, 63, 44,160,200, 63, 75,153, 67,
- 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 77, 33,196, 63, 43, 52,221,
- 63, 75,153, 67, 63, 54,155,113, 63, 70,158,169, 63, 44,160,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 70,158,169, 63, 44,160,200, 63, 68, 84,124, 63, 55,204,255, 63, 64, 0, 0, 63, 45, 28, 24, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 75,153, 67, 63, 54,155,113, 63, 77, 33,196, 63, 43, 52,221,
- 63, 82,225,225, 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,225,225,
- 63, 52, 55,165, 63, 81,232, 16, 63, 63,233, 89, 63, 75,153, 67, 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,174, 74, 63, 65,236,193, 63, 75,153, 67, 63, 54,155,113, 63, 81,232, 16, 63, 63,233, 89,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 81,232, 16, 63, 63,233, 89, 63, 82,225,225,
- 63, 52, 55,165, 63, 89,153,138, 63, 60, 86, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 89,153,139, 63, 71,153,255, 63, 89,153,138, 63, 82,228, 39, 63, 80,139,179, 63, 75, 39,164, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 80,139,179, 63, 75, 39,164, 63, 81,232, 16, 63, 63,233, 89, 63, 89,153,139,
- 63, 71,153,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 60, 86, 49,
- 63, 89,153,139, 63, 71,153,255, 63, 81,232, 16, 63, 63,233, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 81,232, 16, 63, 63,233, 89, 63, 80,139,179, 63, 75, 39,164, 63, 73,174, 74, 63, 65,236,193, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 49, 12, 79, 63, 89,153,138, 63, 60, 86, 49,
- 63, 82,225,225, 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,225,225,
- 63, 52, 55,165, 63, 83,124, 75, 63, 40,228,217, 63, 89,153,139, 63, 49, 12, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 37,200, 45, 63, 89,153,139, 63, 49, 12, 79, 63, 83,124, 75, 63, 40,228,217,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83,124, 75, 63, 40,228,217, 63, 82,225,225,
- 63, 52, 55,165, 63, 77, 33,196, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 69,223,120, 63, 78, 83,198, 63, 73,174, 74, 63, 65,236,193, 63, 80,139,179, 63, 75, 39,164, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 80,139,179, 63, 75, 39,164, 63, 77,221,148, 63, 88, 64,140, 63, 69,223,120,
- 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 90, 56, 12,
- 63, 69,223,120, 63, 78, 83,198, 63, 77,221,148, 63, 88, 64,140, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 77,221,148, 63, 88, 64,140, 63, 80,139,179, 63, 75, 39,164, 63, 89,153,138, 63, 82,228, 39, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 69,223,120, 63, 78, 83,198, 63, 64, 0, 0, 63, 90, 56, 12,
- 63, 58, 32,136, 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 58, 32,136,
- 63, 78, 83,198, 63, 64, 0, 0, 63, 67, 23,106, 63, 69,223,120, 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,174, 74, 63, 65,236,193, 63, 69,223,120, 63, 78, 83,198, 63, 64, 0, 0, 63, 67, 23,106,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 67, 23,106, 63, 58, 32,136,
- 63, 78, 83,198, 63, 54, 81,182, 63, 65,236,193, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 59,171,132, 63, 55,204,255, 63, 64, 0, 0, 63, 45, 28, 24, 63, 68, 84,124, 63, 55,204,255, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 68, 84,124, 63, 55,204,255, 63, 64, 0, 0, 63, 67, 23,106, 63, 59,171,132,
- 63, 55,204,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 81,182, 63, 65,236,193,
- 63, 59,171,132, 63, 55,204,255, 63, 64, 0, 0, 63, 67, 23,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 64, 0, 0, 63, 67, 23,106, 63, 68, 84,124, 63, 55,204,255, 63, 73,174, 74, 63, 65,236,193, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 47,116, 77, 63, 75, 39,164, 63, 54, 81,182, 63, 65,236,193,
- 63, 58, 32,136, 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 58, 32,136,
- 63, 78, 83,198, 63, 50, 34,108, 63, 88, 64,140, 63, 47,116, 77, 63, 75, 39,164, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63, 82,228, 38, 63, 47,116, 77, 63, 75, 39,164, 63, 50, 34,108, 63, 88, 64,140,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 50, 34,108, 63, 88, 64,140, 63, 58, 32,136,
- 63, 78, 83,198, 63, 64, 0, 0, 63, 90, 56, 12, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 45, 30, 31, 63, 52, 55,165, 63, 38,102,117, 63, 60, 86, 50, 63, 38,102,117, 63, 49, 12, 78, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 49, 12, 78, 63, 44,131,181, 63, 40,228,216, 63, 45, 30, 31,
- 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 50,222, 60, 63, 43, 52,221,
- 63, 45, 30, 31, 63, 52, 55,165, 63, 44,131,181, 63, 40,228,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 44,131,181, 63, 40,228,216, 63, 38,102,117, 63, 49, 12, 78, 63, 38,102,117, 63, 37,200, 45, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 30, 31, 63, 52, 55,165, 63, 50,222, 60, 63, 43, 52,221,
- 63, 52,102,189, 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 52,102,189,
- 63, 54,155,113, 63, 46, 23,240, 63, 63,233, 89, 63, 45, 30, 31, 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 60, 86, 50, 63, 45, 30, 31, 63, 52, 55,165, 63, 46, 23,240, 63, 63,233, 89,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 46, 23,240, 63, 63,233, 89, 63, 52,102,189,
- 63, 54,155,113, 63, 54, 81,182, 63, 65,236,193, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 47,116, 77, 63, 75, 39,164, 63, 38,102,118, 63, 82,228, 38, 63, 38,102,117, 63, 71,153,255, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 71,153,255, 63, 46, 23,240, 63, 63,233, 89, 63, 47,116, 77,
- 63, 75, 39,164, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 81,182, 63, 65,236,193,
- 63, 47,116, 77, 63, 75, 39,164, 63, 46, 23,240, 63, 63,233, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 46, 23,240, 63, 63,233, 89, 63, 38,102,117, 63, 71,153,255, 63, 38,102,117, 63, 60, 86, 50, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 59,171,132, 63, 55,204,255, 63, 54, 81,182, 63, 65,236,193,
- 63, 52,102,189, 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 52,102,189,
- 63, 54,155,113, 63, 57, 97, 87, 63, 44,160,200, 63, 59,171,132, 63, 55,204,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 45, 28, 24, 63, 59,171,132, 63, 55,204,255, 63, 57, 97, 87, 63, 44,160,200,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 97, 87, 63, 44,160,200, 63, 52,102,189,
- 63, 54,155,113, 63, 50,222, 60, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 54,101,250, 63, 99, 26, 51, 63, 38,102,118, 63,105,114, 19, 63, 38,102,118, 63, 94, 46, 77, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63, 94, 46, 77, 63, 50, 34,108, 63, 88, 64,140, 63, 54,101,250,
- 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 90, 56, 12,
- 63, 54,101,250, 63, 99, 26, 51, 63, 50, 34,108, 63, 88, 64,140, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 50, 34,108, 63, 88, 64,140, 63, 38,102,118, 63, 94, 46, 77, 63, 38,102,118, 63, 82,228, 38, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,101,250, 63, 99, 26, 51, 63, 64, 0, 0, 63, 90, 56, 12,
- 63, 73,154, 6, 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,154, 6,
- 63, 99, 26, 51, 63, 64, 0, 0, 63,109,154,206, 63, 54,101,250, 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63,105,114, 19, 63, 54,101,250, 63, 99, 26, 51, 63, 64, 0, 0, 63,109,154,206,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63,109,154,206, 63, 73,154, 6,
- 63, 99, 26, 51, 63, 89,153,138, 63,105,114, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 89,153,136, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 63, 38,102,120, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,120, 63,116,187,242, 63, 64, 0, 0, 63,109,154,206, 63, 89,153,136,
- 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63,105,114, 19,
- 63, 89,153,136, 63,116,187,242, 63, 64, 0, 0, 63,109,154,206, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 64, 0, 0, 63,109,154,206, 63, 38,102,120, 63,116,187,242, 63, 38,102,118, 63,105,114, 19, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 94, 46, 77, 63, 89,153,138, 63,105,114, 19,
- 63, 73,154, 6, 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,154, 6,
- 63, 99, 26, 51, 63, 77,221,148, 63, 88, 64,140, 63, 89,153,138, 63, 94, 46, 77, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 82,228, 39, 63, 89,153,138, 63, 94, 46, 77, 63, 77,221,148, 63, 88, 64,140,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 77,221,148, 63, 88, 64,140, 63, 73,154, 6,
- 63, 99, 26, 51, 63, 64, 0, 0, 63, 90, 56, 12, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 8, 71,167, 63, 55,205, 7, 61,229,192,170, 63, 65,236,200, 61,214,104,203, 63, 54,155,120, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,214,104,203, 63, 54,155,120, 61,254, 61,201, 63, 44,160,207, 62, 8, 71,167,
- 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,173, 63, 45, 28, 27,
- 62, 8, 71,167, 63, 55,205, 7, 61,254, 61,201, 63, 44,160,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,254, 61,201, 63, 44,160,207, 61,214,104,203, 63, 54,155,120, 61,202, 36,175, 63, 43, 52,228, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,156, 35,145, 63, 52, 55,172, 61,202, 36,175, 63, 43, 52,228,
- 61,214,104,203, 63, 54,155,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,214,104,203,
- 63, 54,155,120, 61,163,242, 32, 63, 63,233, 96, 61,156, 35,145, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,246, 63, 60, 86, 53, 61,156, 35,145, 63, 52, 55,172, 61,163,242, 32, 63, 63,233, 96,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,163,242, 32, 63, 63,233, 96, 61,214,104,203,
- 63, 54,155,120, 61,229,192,170, 63, 65,236,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,174,213, 17, 63, 75, 39,171, 61, 76,203,243, 63, 82,228, 41, 61, 76,203,244, 63, 71,154, 2, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,244, 63, 71,154, 2, 61,163,242, 32, 63, 63,233, 96, 61,174,213, 17,
- 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,229,192,170, 63, 65,236,200,
- 61,174,213, 17, 63, 75, 39,171, 61,163,242, 32, 63, 63,233, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,163,242, 32, 63, 63,233, 96, 61, 76,203,244, 63, 71,154, 2, 61, 76,203,246, 63, 60, 86, 53, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,156, 35,145, 63, 52, 55,172, 61, 76,203,246, 63, 60, 86, 53,
- 61, 76,203,243, 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,243,
- 63, 49, 12, 82, 61,151, 80, 53, 63, 40,228,223, 61,156, 35,145, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,202, 36,175, 63, 43, 52,228, 61,156, 35,145, 63, 52, 55,172, 61,151, 80, 53, 63, 40,228,223,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,151, 80, 53, 63, 40,228,223, 61, 76,203,243,
- 63, 49, 12, 82, 61, 76,203,246, 63, 37,200, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,174,213, 17, 63, 75, 39,171, 61,229,192,170, 63, 65,236,200, 62, 2, 27,169, 63, 78, 83,204, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 2, 27,169, 63, 78, 83,204, 61,196, 70, 23, 63, 88, 64,147, 61,174,213, 17,
- 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,243, 63, 82,228, 41,
- 61,174,213, 17, 63, 75, 39,171, 61,196, 70, 23, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,196, 70, 23, 63, 88, 64,147, 62, 2, 27,169, 63, 78, 83,204, 62, 25,153,160, 63, 90, 56, 14, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 49, 23,162, 63, 78, 83,195, 62, 25,153,160, 63, 90, 56, 14,
- 62, 2, 27,169, 63, 78, 83,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 2, 27,169,
- 63, 78, 83,204, 62, 25,153,172, 63, 67, 23,108, 62, 49, 23,162, 63, 78, 83,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 82,240, 63, 65,236,183, 62, 49, 23,162, 63, 78, 83,195, 62, 25,153,172, 63, 67, 23,108,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,172, 63, 67, 23,108, 62, 2, 27,169,
- 63, 78, 83,204, 61,229,192,170, 63, 65,236,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 8, 71,167, 63, 55,205, 7, 62, 25,153,173, 63, 45, 28, 27, 62, 42,235,173, 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 42,235,173, 63, 55,204,254, 62, 25,153,172, 63, 67, 23,108, 62, 8, 71,167,
- 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,229,192,170, 63, 65,236,200,
- 62, 8, 71,167, 63, 55,205, 7, 62, 25,153,172, 63, 67, 23,108, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 25,153,172, 63, 67, 23,108, 62, 42,235,173, 63, 55,204,254, 62, 64, 82,240, 63, 65,236,183, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 49, 23,162, 63, 78, 83,195, 62, 64, 82,240, 63, 65,236,183,
- 62, 91,200,166, 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 91,200,166,
- 63, 75, 39,147, 62, 81, 16, 34, 63, 88, 64,131, 62, 49, 23,162, 63, 78, 83,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,160, 63, 90, 56, 14, 62, 49, 23,162, 63, 78, 83,195, 62, 81, 16, 34, 63, 88, 64,131,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 81, 16, 34, 63, 88, 64,131, 62, 91,200,166,
- 63, 75, 39,147, 62,128, 0, 0, 63, 82,228, 13, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,128, 0, 0, 63, 49, 12, 47, 62,128, 0, 0, 63, 60, 86, 19, 62,101, 33, 92, 63, 52, 55,146, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,101, 33, 92, 63, 52, 55,146, 62,103,139, 14, 63, 40,228,199, 62,128, 0, 0,
- 63, 49, 12, 47, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 37,200, 23,
- 62,128, 0, 0, 63, 49, 12, 47, 62,103,139, 14, 63, 40,228,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,103,139, 14, 63, 40,228,199, 62,101, 33, 92, 63, 52, 55,146, 62, 78, 32,230, 63, 43, 52,211, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 71,254,223, 63, 54,155,102, 62, 78, 32,230, 63, 43, 52,211,
- 62,101, 33, 92, 63, 52, 55,146, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,101, 33, 92,
- 63, 52, 55,146, 62, 97, 58, 23, 63, 63,233, 69, 62, 71,254,223, 63, 54,155,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 82,240, 63, 65,236,183, 62, 71,254,223, 63, 54,155,102, 62, 97, 58, 23, 63, 63,233, 69,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 97, 58, 23, 63, 63,233, 69, 62,101, 33, 92,
- 63, 52, 55,146, 62,128, 0, 0, 63, 60, 86, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,128, 0, 0, 63, 71,153,228, 62,128, 0, 0, 63, 82,228, 13, 62, 91,200,166, 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 91,200,166, 63, 75, 39,147, 62, 97, 58, 23, 63, 63,233, 69, 62,128, 0, 0,
- 63, 71,153,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 60, 86, 19,
- 62,128, 0, 0, 63, 71,153,228, 62, 97, 58, 23, 63, 63,233, 69, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 97, 58, 23, 63, 63,233, 69, 62, 91,200,166, 63, 75, 39,147, 62, 64, 82,240, 63, 65,236,183, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 71,254,223, 63, 54,155,102, 62, 64, 82,240, 63, 65,236,183,
- 62, 42,235,173, 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 42,235,173,
- 63, 55,204,254, 62, 52, 20,105, 63, 44,160,198, 62, 71,254,223, 63, 54,155,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 78, 32,230, 63, 43, 52,211, 62, 71,254,223, 63, 54,155,102, 62, 52, 20,105, 63, 44,160,198,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52, 20,105, 63, 44,160,198, 62, 42,235,173,
- 63, 55,204,254, 62, 25,153,173, 63, 45, 28, 27, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,128, 0, 0, 63, 94, 46, 58, 62,128, 0, 0, 63,105,114, 8, 62, 64, 1,230, 63, 99, 26, 49, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 1,230, 63, 99, 26, 49, 62, 81, 16, 34, 63, 88, 64,131, 62,128, 0, 0,
- 63, 94, 46, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 82,228, 13,
- 62,128, 0, 0, 63, 94, 46, 58, 62, 81, 16, 34, 63, 88, 64,131, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 81, 16, 34, 63, 88, 64,131, 62, 64, 1,230, 63, 99, 26, 49, 62, 25,153,160, 63, 90, 56, 14, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,230, 98,164, 63, 99, 26, 58, 62, 25,153,160, 63, 90, 56, 14,
- 62, 64, 1,230, 63, 99, 26, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 1,230,
- 63, 99, 26, 49, 62, 25,153,159, 63,109,154,210, 61,230, 98,164, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,237, 63,105,114, 22, 61,230, 98,164, 63, 99, 26, 58, 62, 25,153,159, 63,109,154,210,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,159, 63,109,154,210, 62, 64, 1,230,
- 63, 99, 26, 49, 62,128, 0, 0, 63,105,114, 8, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,128, 0, 0, 63,116,187,232, 63, 59,153, 3, 63,128, 0, 0, 63,134,102, 95, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,210, 63,116,187,242, 62, 25,153,159, 63,109,154,210, 62,128, 0, 0,
- 63,116,187,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63,105,114, 8,
- 62,128, 0, 0, 63,116,187,232, 62, 25,153,159, 63,109,154,210, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 25,153,159, 63,109,154,210, 61, 76,203,210, 63,116,187,242, 61, 76,203,237, 63,105,114, 22, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,230, 98,164, 63, 99, 26, 58, 61, 76,203,237, 63,105,114, 22,
- 61, 76,203,234, 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,234,
- 63, 94, 46, 79, 61,196, 70, 23, 63, 88, 64,147, 61,230, 98,164, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,160, 63, 90, 56, 14, 61,230, 98,164, 63, 99, 26, 58, 61,196, 70, 23, 63, 88, 64,147,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,196, 70, 23, 63, 88, 64,147, 61, 76,203,234,
- 63, 94, 46, 79, 61, 76,203,243, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,170,138, 42, 63, 55,204,254, 62,159,214,136, 63, 65,236,183, 62,156, 0,145, 63, 54,155,102, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,156, 0,145, 63, 54,155,102, 62,165,245,204, 63, 44,160,198, 62,170,138, 42,
- 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 42, 63, 45, 28, 28,
- 62,170,138, 42, 63, 55,204,254, 62,165,245,204, 63, 44,160,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,165,245,204, 63, 44,160,198, 62,156, 0,145, 63, 54,155,102, 62,152,239,141, 63, 43, 52,211, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,111, 82, 63, 52, 55,146, 62,152,239,141, 63, 43, 52,211,
- 62,156, 0,145, 63, 54,155,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,156, 0,145,
- 63, 54,155,102, 62,143, 98,245, 63, 63,233, 68, 62,141,111, 82, 63, 52, 55,146, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 60, 86, 19, 62,141,111, 82, 63, 52, 55,146, 62,143, 98,245, 63, 63,233, 68,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,143, 98,245, 63, 63,233, 68, 62,156, 0,145,
- 63, 54,155,102, 62,159,214,136, 63, 65,236,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,146, 27,173, 63, 75, 39,147, 62,128, 0, 0, 63, 82,228, 13, 62,128, 0, 0, 63, 71,153,228, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 71,153,228, 62,143, 98,245, 63, 63,233, 68, 62,146, 27,173,
- 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,214,136, 63, 65,236,183,
- 62,146, 27,173, 63, 75, 39,147, 62,143, 98,245, 63, 63,233, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,143, 98,245, 63, 63,233, 68, 62,128, 0, 0, 63, 71,153,228, 62,128, 0, 0, 63, 60, 86, 19, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,111, 82, 63, 52, 55,146, 62,128, 0, 0, 63, 60, 86, 19,
- 62,128, 0, 0, 63, 49, 12, 47, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0,
- 63, 49, 12, 47, 62,140, 58,121, 63, 40,228,199, 62,141,111, 82, 63, 52, 55,146, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,152,239,141, 63, 43, 52,211, 62,141,111, 82, 63, 52, 55,146, 62,140, 58,121, 63, 40,228,199,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,140, 58,121, 63, 40,228,199, 62,128, 0, 0,
- 63, 49, 12, 47, 62,128, 0, 0, 63, 37,200, 23, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,146, 27,173, 63, 75, 39,147, 62,159,214,136, 63, 65,236,183, 62,167,116, 47, 63, 78, 83,195, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,167,116, 47, 63, 78, 83,195, 62,151,119,239, 63, 88, 64,131, 62,146, 27,173,
- 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 82,228, 13,
- 62,146, 27,173, 63, 75, 39,147, 62,151,119,239, 63, 88, 64,131, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,151,119,239, 63, 88, 64,131, 62,167,116, 47, 63, 78, 83,195, 62,179, 51, 49, 63, 90, 56, 14, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,190,242, 44, 63, 78, 83,205, 62,179, 51, 49, 63, 90, 56, 14,
- 62,167,116, 47, 63, 78, 83,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,167,116, 47,
- 63, 78, 83,195, 62,179, 51, 42, 63, 67, 23,108, 62,190,242, 44, 63, 78, 83,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,198,143,214, 63, 65,236,200, 62,190,242, 44, 63, 78, 83,205, 62,179, 51, 42, 63, 67, 23,108,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 42, 63, 67, 23,108, 62,167,116, 47,
- 63, 78, 83,195, 62,159,214,136, 63, 65,236,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,170,138, 42, 63, 55,204,254, 62,179, 51, 42, 63, 45, 28, 28, 62,187,220, 45, 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,187,220, 45, 63, 55,205, 7, 62,179, 51, 42, 63, 67, 23,108, 62,170,138, 42,
- 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,214,136, 63, 65,236,183,
- 62,170,138, 42, 63, 55,204,254, 62,179, 51, 42, 63, 67, 23,108, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,179, 51, 42, 63, 67, 23,108, 62,187,220, 45, 63, 55,205, 7, 62,198,143,214, 63, 65,236,200, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,190,242, 44, 63, 78, 83,205, 62,198,143,214, 63, 65,236,200,
- 62,212, 74,188, 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,212, 74,188,
- 63, 75, 39,171, 62,206,238,122, 63, 88, 64,147, 62,190,242, 44, 63, 78, 83,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49, 63, 90, 56, 14, 62,190,242, 44, 63, 78, 83,205, 62,206,238,122, 63, 88, 64,147,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,206,238,122, 63, 88, 64,147, 62,212, 74,188,
- 63, 75, 39,171, 62,230,102,130, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,230,102,130, 63, 49, 12, 82, 62,230,102,129, 63, 60, 86, 53, 62,216,247, 28, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,247, 28, 63, 52, 55,172, 62,218, 43,243, 63, 40,228,223, 62,230,102,130,
- 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,129, 63, 37,200, 48,
- 62,230,102,130, 63, 49, 12, 82, 62,218, 43,243, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,218, 43,243, 63, 40,228,223, 62,216,247, 28, 63, 52, 55,172, 62,205,118,212, 63, 43, 52,228, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,202,101,206, 63, 54,155,120, 62,205,118,212, 63, 43, 52,228,
- 62,216,247, 28, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,247, 28,
- 63, 52, 55,172, 62,215, 3,120, 63, 63,233, 95, 62,202,101,206, 63, 54,155,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,198,143,214, 63, 65,236,200, 62,202,101,206, 63, 54,155,120, 62,215, 3,120, 63, 63,233, 95,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,215, 3,120, 63, 63,233, 95, 62,216,247, 28,
- 63, 52, 55,172, 62,230,102,129, 63, 60, 86, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,230,102,130, 63, 71,154, 1, 62,230,102,130, 63, 82,228, 41, 62,212, 74,188, 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,212, 74,188, 63, 75, 39,171, 62,215, 3,120, 63, 63,233, 95, 62,230,102,130,
- 63, 71,154, 1, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,129, 63, 60, 86, 53,
- 62,230,102,130, 63, 71,154, 1, 62,215, 3,120, 63, 63,233, 95, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,215, 3,120, 63, 63,233, 95, 62,212, 74,188, 63, 75, 39,171, 62,198,143,214, 63, 65,236,200, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,202,101,206, 63, 54,155,120, 62,198,143,214, 63, 65,236,200,
- 62,187,220, 45, 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,187,220, 45,
- 63, 55,205, 7, 62,192,112,142, 63, 44,160,207, 62,202,101,206, 63, 54,155,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,205,118,212, 63, 43, 52,228, 62,202,101,206, 63, 54,155,120, 62,192,112,142, 63, 44,160,207,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,112,142, 63, 44,160,207, 62,187,220, 45,
- 63, 55,205, 7, 62,179, 51, 42, 63, 45, 28, 28, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,230,102,131, 63, 94, 46, 79, 62,230,102,131, 63,105,114, 22, 62,198,103, 87, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,103, 87, 63, 99, 26, 58, 62,206,238,122, 63, 88, 64,147, 62,230,102,131,
- 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130, 63, 82,228, 41,
- 62,230,102,131, 63, 94, 46, 79, 62,206,238,122, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,206,238,122, 63, 88, 64,147, 62,198,103, 87, 63, 99, 26, 58, 62,179, 51, 49, 63, 90, 56, 14, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,255, 14, 63, 99, 26, 49, 62,179, 51, 49, 63, 90, 56, 14,
- 62,198,103, 87, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,103, 87,
- 63, 99, 26, 58, 62,179, 51, 49, 63,109,154,210, 62,159,255, 14, 63, 99, 26, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63,105,114, 8, 62,159,255, 14, 63, 99, 26, 49, 62,179, 51, 49, 63,109,154,210,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49, 63,109,154,210, 62,198,103, 87,
- 63, 99, 26, 58, 62,230,102,131, 63,105,114, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,230,102,134, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 62,128, 0, 0, 63,116,187,232, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63,116,187,232, 62,179, 51, 49, 63,109,154,210, 62,230,102,134,
- 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,131, 63,105,114, 22,
- 62,230,102,134, 63,116,187,242, 62,179, 51, 49, 63,109,154,210, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,179, 51, 49, 63,109,154,210, 62,128, 0, 0, 63,116,187,232, 62,128, 0, 0, 63,105,114, 8, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,255, 14, 63, 99, 26, 49, 62,128, 0, 0, 63,105,114, 8,
- 62,128, 0, 0, 63, 94, 46, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0,
- 63, 94, 46, 58, 62,151,119,239, 63, 88, 64,131, 62,159,255, 14, 63, 99, 26, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49, 63, 90, 56, 14, 62,159,255, 14, 63, 99, 26, 49, 62,151,119,239, 63, 88, 64,131,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,151,119,239, 63, 88, 64,131, 62,128, 0, 0,
- 63, 94, 46, 58, 62,128, 0, 0, 63, 82,228, 13, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 8,120, 93, 63, 55,205, 11, 63, 3, 30,140, 63, 65,236,201, 63, 1, 51,145, 63, 54,155,121, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 1, 51,145, 63, 54,155,121, 63, 6, 46, 46, 63, 44,160,211, 63, 8,120, 93,
- 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 45, 28, 35,
- 63, 8,120, 93, 63, 55,205, 11, 63, 6, 46, 46, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 6, 46, 46, 63, 44,160,211, 63, 1, 51,145, 63, 54,155,121, 62,255, 86, 30, 63, 43, 52,230, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,213,222, 63, 52, 55,172, 62,255, 86, 30, 63, 43, 52,230,
- 63, 1, 51,145, 63, 54,155,121, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 1, 51,145,
- 63, 54,155,121, 62,245,201,128, 63, 63,233, 94, 62,243,213,222, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,129, 63, 60, 86, 53, 62,243,213,222, 63, 52, 55,172, 62,245,201,128, 63, 63,233, 94,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,245,201,128, 63, 63,233, 94, 63, 1, 51,145,
- 63, 54,155,121, 63, 3, 30,140, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,248,130, 59, 63, 75, 39,169, 62,230,102,130, 63, 82,228, 41, 62,230,102,130, 63, 71,154, 1, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130, 63, 71,154, 1, 62,245,201,128, 63, 63,233, 94, 62,248,130, 59,
- 63, 75, 39,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 30,140, 63, 65,236,201,
- 62,248,130, 59, 63, 75, 39,169, 62,245,201,128, 63, 63,233, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,245,201,128, 63, 63,233, 94, 62,230,102,130, 63, 71,154, 1, 62,230,102,129, 63, 60, 86, 53, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,213,222, 63, 52, 55,172, 62,230,102,129, 63, 60, 86, 53,
- 62,230,102,130, 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130,
- 63, 49, 12, 82, 62,242,161, 9, 63, 40,228,223, 62,243,213,222, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,255, 86, 30, 63, 43, 52,230, 62,243,213,222, 63, 52, 55,172, 62,242,161, 9, 63, 40,228,223,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,242,161, 9, 63, 40,228,223, 62,230,102,130,
- 63, 49, 12, 82, 62,230,102,129, 63, 37,200, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,248,130, 59, 63, 75, 39,169, 63, 3, 30,140, 63, 65,236,201, 63, 6,237, 94, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,237, 94, 63, 78, 83,207, 62,253,222,118, 63, 88, 64,148, 62,248,130, 59,
- 63, 75, 39,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130, 63, 82,228, 41,
- 62,248,130, 59, 63, 75, 39,169, 62,253,222,118, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,253,222,118, 63, 88, 64,148, 63, 6,237, 94, 63, 78, 83,207, 63, 12,204,220, 63, 90, 56, 22, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,172, 88, 63, 78, 83,207, 63, 12,204,220, 63, 90, 56, 22,
- 63, 6,237, 94, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,237, 94,
- 63, 78, 83,207, 63, 12,204,220, 63, 67, 23,115, 63, 18,172, 88, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,123, 44, 63, 65,236,201, 63, 18,172, 88, 63, 78, 83,207, 63, 12,204,220, 63, 67, 23,115,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 67, 23,115, 63, 6,237, 94,
- 63, 78, 83,207, 63, 3, 30,140, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 8,120, 93, 63, 55,205, 11, 63, 12,204,220, 63, 45, 28, 35, 63, 17, 33, 91, 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 17, 33, 91, 63, 55,205, 9, 63, 12,204,220, 63, 67, 23,115, 63, 8,120, 93,
- 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 30,140, 63, 65,236,201,
- 63, 8,120, 93, 63, 55,205, 11, 63, 12,204,220, 63, 67, 23,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 12,204,220, 63, 67, 23,115, 63, 17, 33, 91, 63, 55,205, 9, 63, 22,123, 44, 63, 65,236,201, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,172, 88, 63, 78, 83,207, 63, 22,123, 44, 63, 65,236,201,
- 63, 29, 88,153, 63, 75, 39,167, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 29, 88,153,
- 63, 75, 39,167, 63, 26,170,121, 63, 88, 64,147, 63, 18,172, 88, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 90, 56, 22, 63, 18,172, 88, 63, 78, 83,207, 63, 26,170,121, 63, 88, 64,147,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 26,170,121, 63, 88, 64,147, 63, 29, 88,153,
- 63, 75, 39,167, 63, 38,102,118, 63, 82,228, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,102,117, 63, 49, 12, 78, 63, 38,102,117, 63, 60, 86, 50, 63, 31,174,200, 63, 52, 55,169, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,174,200, 63, 52, 55,169, 63, 32, 73, 51, 63, 40,228,221, 63, 38,102,117,
- 63, 49, 12, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 37,200, 45,
- 63, 38,102,117, 63, 49, 12, 78, 63, 32, 73, 51, 63, 40,228,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 32, 73, 51, 63, 40,228,221, 63, 31,174,200, 63, 52, 55,169, 63, 25,238,169, 63, 43, 52,229, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,102, 39, 63, 54,155,119, 63, 25,238,169, 63, 43, 52,229,
- 63, 31,174,200, 63, 52, 55,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,174,200,
- 63, 52, 55,169, 63, 30,180,246, 63, 63,233, 92, 63, 24,102, 39, 63, 54,155,119, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,123, 44, 63, 65,236,201, 63, 24,102, 39, 63, 54,155,119, 63, 30,180,246, 63, 63,233, 92,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 30,180,246, 63, 63,233, 92, 63, 31,174,200,
- 63, 52, 55,169, 63, 38,102,117, 63, 60, 86, 50, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,102,117, 63, 71,153,255, 63, 38,102,118, 63, 82,228, 38, 63, 29, 88,153, 63, 75, 39,167, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 29, 88,153, 63, 75, 39,167, 63, 30,180,246, 63, 63,233, 92, 63, 38,102,117,
- 63, 71,153,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 60, 86, 50,
- 63, 38,102,117, 63, 71,153,255, 63, 30,180,246, 63, 63,233, 92, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 30,180,246, 63, 63,233, 92, 63, 29, 88,153, 63, 75, 39,167, 63, 22,123, 44, 63, 65,236,201, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,102, 39, 63, 54,155,119, 63, 22,123, 44, 63, 65,236,201,
- 63, 17, 33, 91, 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 17, 33, 91,
- 63, 55,205, 9, 63, 19,107,138, 63, 44,160,211, 63, 24,102, 39, 63, 54,155,119, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,238,169, 63, 43, 52,229, 63, 24,102, 39, 63, 54,155,119, 63, 19,107,138, 63, 44,160,211,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,107,138, 63, 44,160,211, 63, 17, 33, 91,
- 63, 55,205, 9, 63, 12,204,220, 63, 45, 28, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,102,118, 63, 94, 46, 77, 63, 38,102,118, 63,105,114, 19, 63, 22,102,235, 63, 99, 26, 59, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,102,235, 63, 99, 26, 59, 63, 26,170,121, 63, 88, 64,147, 63, 38,102,118,
- 63, 94, 46, 77, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63, 82,228, 38,
- 63, 38,102,118, 63, 94, 46, 77, 63, 26,170,121, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 26,170,121, 63, 88, 64,147, 63, 22,102,235, 63, 99, 26, 59, 63, 12,204,220, 63, 90, 56, 22, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 50,204, 63, 99, 26, 58, 63, 12,204,220, 63, 90, 56, 22,
- 63, 22,102,235, 63, 99, 26, 59, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,102,235,
- 63, 99, 26, 59, 63, 12,204,224, 63,109,154,212, 63, 3, 50,204, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,131, 63,105,114, 22, 63, 3, 50,204, 63, 99, 26, 58, 63, 12,204,224, 63,109,154,212,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,224, 63,109,154,212, 63, 22,102,235,
- 63, 99, 26, 59, 63, 38,102,118, 63,105,114, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,102,120, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 62,230,102,134, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,134, 63,116,187,242, 63, 12,204,224, 63,109,154,212, 63, 38,102,120,
- 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63,105,114, 19,
- 63, 38,102,120, 63,116,187,242, 63, 12,204,224, 63,109,154,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 12,204,224, 63,109,154,212, 62,230,102,134, 63,116,187,242, 62,230,102,131, 63,105,114, 22, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 50,204, 63, 99, 26, 58, 62,230,102,131, 63,105,114, 22,
- 62,230,102,131, 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,131,
- 63, 94, 46, 79, 62,253,222,118, 63, 88, 64,148, 63, 3, 50,204, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 90, 56, 22, 63, 3, 50,204, 63, 99, 26, 58, 62,253,222,118, 63, 88, 64,148,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,253,222,118, 63, 88, 64,148, 62,230,102,131,
- 63, 94, 46, 79, 62,230,102,130, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 76,233,213, 63, 21, 48, 35, 63, 70,235,176, 63, 22,209,226, 63, 73,234, 80, 63, 11,111,146, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,234, 80, 63, 11,111,146, 63, 79,200, 1, 63, 9,152, 94, 63, 76,233,213,
- 63, 21, 48, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,215, 19, 63, 19, 29,252,
- 63, 76,233,213, 63, 21, 48, 35, 63, 79,200, 1, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 79,200, 1, 63, 9,152, 94, 63, 73,234, 80, 63, 11,111,146, 63, 76,204,193, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,233,213, 63, 21, 48, 35, 63, 82,215, 19, 63, 19, 29,252,
- 63, 80, 41,220, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 80, 41,220,
- 63, 31, 60,105, 63, 73,219,164, 63, 33, 23,173, 63, 76,233,213, 63, 21, 48, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,235,176, 63, 22,209,226, 63, 76,233,213, 63, 21, 48, 35, 63, 73,219,164, 63, 33, 23,173,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,219,164, 63, 33, 23,173, 63, 80, 41,220,
- 63, 31, 60,105, 63, 77, 33,196, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 70,158,169, 63, 44,160,200, 63, 64, 0, 0, 63, 45, 28, 24, 63, 67,171, 5, 63, 34, 17,216, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67,171, 5, 63, 34, 17,216, 63, 73,219,164, 63, 33, 23,173, 63, 70,158,169,
- 63, 44,160,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 77, 33,196, 63, 43, 52,221,
- 63, 70,158,169, 63, 44,160,200, 63, 73,219,164, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 73,219,164, 63, 33, 23,173, 63, 67,171, 5, 63, 34, 17,216, 63, 70,235,176, 63, 22,209,226, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83,124, 75, 63, 40,228,217, 63, 77, 33,196, 63, 43, 52,221,
- 63, 80, 41,220, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 80, 41,220,
- 63, 31, 60,105, 63, 86, 20,218, 63, 28,140,143, 63, 83,124, 75, 63, 40,228,217, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 37,200, 45, 63, 83,124, 75, 63, 40,228,217, 63, 86, 20,218, 63, 28,140,143,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 20,218, 63, 28,140,143, 63, 80, 41,220,
- 63, 31, 60,105, 63, 82,215, 19, 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 64, 0, 0, 63, 23, 32,182, 63, 70,235,176, 63, 22,209,226, 63, 67,171, 5, 63, 34, 17,216, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67,171, 5, 63, 34, 17,216, 63, 60, 84,251, 63, 34, 17,216, 63, 64, 0, 0,
- 63, 23, 32,182, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 20, 80, 63, 22,209,226,
- 63, 64, 0, 0, 63, 23, 32,182, 63, 60, 84,251, 63, 34, 17,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 60, 84,251, 63, 34, 17,216, 63, 67,171, 5, 63, 34, 17,216, 63, 64, 0, 0, 63, 45, 28, 24, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 23, 32,182, 63, 57, 20, 80, 63, 22,209,226,
- 63, 60,156,169, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,156,169,
- 63, 11,116, 96, 63, 67, 99, 87, 63, 11,116, 96, 63, 64, 0, 0, 63, 23, 32,182, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,235,176, 63, 22,209,226, 63, 64, 0, 0, 63, 23, 32,182, 63, 67, 99, 87, 63, 11,116, 96,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67, 99, 87, 63, 11,116, 96, 63, 60,156,169,
- 63, 11,116, 96, 63, 64, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 70,102, 96, 63, 0, 1,244, 63, 76,204,193, 63, 0, 0, 0, 63, 73,234, 80, 63, 11,111,146, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,234, 80, 63, 11,111,146, 63, 67, 99, 87, 63, 11,116, 96, 63, 70,102, 96,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 0, 0, 0,
- 63, 70,102, 96, 63, 0, 1,244, 63, 67, 99, 87, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 67, 99, 87, 63, 11,116, 96, 63, 73,234, 80, 63, 11,111,146, 63, 70,235,176, 63, 22,209,226, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57,153,160, 63, 0, 1,244, 63, 64, 0, 0, 63, 0, 0, 0,
- 63, 60,156,169, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,156,169,
- 63, 11,116, 96, 63, 54, 21,176, 63, 11,111,146, 63, 57,153,160, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 51, 63, 63, 0, 0, 0, 63, 57,153,160, 63, 0, 1,244, 63, 54, 21,176, 63, 11,111,146,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 21,176, 63, 11,111,146, 63, 60,156,169,
- 63, 11,116, 96, 63, 57, 20, 80, 63, 22,209,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 64, 0, 0, 62,217, 58, 93, 63, 57, 61,144, 62,217,196, 19, 63, 60,123, 85, 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,123, 85, 62,198,230,253, 63, 67,132,171, 62,198,230,253, 63, 64, 0, 0,
- 62,217, 58, 93, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,194,112, 62,217,196, 19,
- 63, 64, 0, 0, 62,217, 58, 93, 63, 67,132,171, 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 67,132,171, 62,198,230,253, 63, 60,123, 85, 62,198,230,253, 63, 64, 0, 0, 62,180,111,211, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,217, 58, 93, 63, 70,194,112, 62,217,196, 19,
- 63, 67, 84,125, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67, 84,125,
- 62,236,211, 42, 63, 60,171,131, 62,236,211, 42, 63, 64, 0, 0, 62,217, 58, 93, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 61,144, 62,217,196, 19, 63, 64, 0, 0, 62,217, 58, 93, 63, 60,171,131, 62,236,211, 42,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,171,131, 62,236,211, 42, 63, 67, 84,125,
- 62,236,211, 42, 63, 64, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 57,153,160, 63, 0, 1,244, 63, 51, 51, 63, 63, 0, 0, 0, 63, 54, 46,128, 62,236,207, 75, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 46,128, 62,236,207, 75, 63, 60,171,131, 62,236,211, 42, 63, 57,153,160,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 0, 0, 0,
- 63, 57,153,160, 63, 0, 1,244, 63, 60,171,131, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 60,171,131, 62,236,211, 42, 63, 54, 46,128, 62,236,207, 75, 63, 57, 61,144, 62,217,196, 19, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,102, 96, 63, 0, 1,244, 63, 64, 0, 0, 63, 0, 0, 0,
- 63, 67, 84,125, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67, 84,125,
- 62,236,211, 42, 63, 73,209,128, 62,236,207, 75, 63, 70,102, 96, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,204,193, 63, 0, 0, 0, 63, 70,102, 96, 63, 0, 1,244, 63, 73,209,128, 62,236,207, 75,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,209,128, 62,236,207, 75, 63, 67, 84,125,
- 62,236,211, 42, 63, 70,194,112, 62,217,196, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 51, 22, 43, 63, 21, 48, 35, 63, 45, 40,237, 63, 19, 29,252, 63, 48, 55,255, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 55,255, 63, 9,152, 94, 63, 54, 21,176, 63, 11,111,146, 63, 51, 22, 43,
- 63, 21, 48, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 20, 80, 63, 22,209,226,
- 63, 51, 22, 43, 63, 21, 48, 35, 63, 54, 21,176, 63, 11,111,146, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 54, 21,176, 63, 11,111,146, 63, 48, 55,255, 63, 9,152, 94, 63, 51, 51, 63, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 22, 43, 63, 21, 48, 35, 63, 57, 20, 80, 63, 22,209,226,
- 63, 54, 36, 91, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 36, 91,
- 63, 33, 23,173, 63, 47,214, 36, 63, 31, 60,105, 63, 51, 22, 43, 63, 21, 48, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 40,237, 63, 19, 29,252, 63, 51, 22, 43, 63, 21, 48, 35, 63, 47,214, 36, 63, 31, 60,105,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 47,214, 36, 63, 31, 60,105, 63, 54, 36, 91,
- 63, 33, 23,173, 63, 50,222, 60, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 44,131,181, 63, 40,228,216, 63, 38,102,117, 63, 37,200, 45, 63, 41,235, 38, 63, 28,140,141, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,235, 38, 63, 28,140,141, 63, 47,214, 36, 63, 31, 60,105, 63, 44,131,181,
- 63, 40,228,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 50,222, 60, 63, 43, 52,221,
- 63, 44,131,181, 63, 40,228,216, 63, 47,214, 36, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 47,214, 36, 63, 31, 60,105, 63, 41,235, 38, 63, 28,140,141, 63, 45, 40,237, 63, 19, 29,252, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 97, 87, 63, 44,160,200, 63, 50,222, 60, 63, 43, 52,221,
- 63, 54, 36, 91, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 36, 91,
- 63, 33, 23,173, 63, 60, 84,251, 63, 34, 17,216, 63, 57, 97, 87, 63, 44,160,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 45, 28, 24, 63, 57, 97, 87, 63, 44,160,200, 63, 60, 84,251, 63, 34, 17,216,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60, 84,251, 63, 34, 17,216, 63, 54, 36, 91,
- 63, 33, 23,173, 63, 57, 20, 80, 63, 22,209,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,128, 14,134, 63, 21, 48, 39, 63,122, 30,227, 63, 22,209,233, 63,125, 29,138, 63, 11,111,150, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 29,138, 63, 11,111,150, 63,129,125,159, 63, 9,152, 94, 63,128, 14,134,
- 63, 21, 48, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,193, 73,174, 63, 19, 29,253,
- 57,232, 92,209, 63, 21, 48, 39, 60, 62,207,114, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,129,125,159, 63, 9,152, 94, 63,125, 29,138, 63, 11,111,150, 63,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 57,232, 92,209, 63, 21, 48, 39, 60,193, 73,174, 63, 19, 29,253,
- 60, 87, 67,214, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,129,174,136,
- 63, 31, 60,110, 63,125, 14,213, 63, 33, 23,180, 63,128, 14,134, 63, 21, 48, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,122, 30,227, 63, 22,209,233, 63,128, 14,134, 63, 21, 48, 39, 63,125, 14,213, 63, 33, 23,180,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 14,213, 63, 33, 23,180, 63,129,174,136,
- 63, 31, 60,110, 63,128, 42,121, 63, 43, 52,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,121,209,210, 63, 44,160,212, 63,115, 51, 36, 63, 45, 28, 36, 63,118,222, 49, 63, 34, 17,226, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,222, 49, 63, 34, 17,226, 63,125, 14,213, 63, 33, 23,180, 63,121,209,210,
- 63, 44,160,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,128, 42,121, 63, 43, 52,230,
- 63,121,209,210, 63, 44,160,212, 63,125, 14,213, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,125, 14,213, 63, 33, 23,180, 63,118,222, 49, 63, 34, 17,226, 63,122, 30,227, 63, 22,209,233, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,213,239,111, 63, 40,228,223, 58,169,226,120, 63, 43, 52,230,
- 60, 87, 67,214, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60, 87, 67,214,
- 63, 31, 60,110, 61, 20,129, 13, 63, 28,140,143, 60,213,239,111, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,246, 63, 37,200, 48, 60,213,239,111, 63, 40,228,223, 61, 20,129, 13, 63, 28,140,143,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 20,129, 13, 63, 28,140,143, 60, 87, 67,214,
- 63, 31, 60,110, 60,193, 73,174, 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,115, 51, 44, 63, 23, 32,188, 63,122, 30,227, 63, 22,209,233, 63,118,222, 49, 63, 34, 17,226, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,222, 49, 63, 34, 17,226, 63,111,136, 31, 63, 34, 17,225, 63,115, 51, 44,
- 63, 23, 32,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108, 71,116, 63, 22,209,232,
- 63,115, 51, 44, 63, 23, 32,188, 63,111,136, 31, 63, 34, 17,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,111,136, 31, 63, 34, 17,225, 63,118,222, 49, 63, 34, 17,226, 63,115, 51, 36, 63, 45, 28, 36, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 44, 63, 23, 32,188, 63,108, 71,116, 63, 22,209,232,
- 63,111,207,213, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,207,213,
- 63, 11,116,100, 63,118,150,138, 63, 11,116,101, 63,115, 51, 44, 63, 23, 32,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,122, 30,227, 63, 22,209,233, 63,115, 51, 44, 63, 23, 32,188, 63,118,150,138, 63, 11,116,101,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,150,138, 63, 11,116,101, 63,111,207,213,
- 63, 11,116,100, 63,115, 51, 51, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,121,153,154, 63, 0, 1,244, 63,128, 0, 0, 63, 0, 0, 0, 63,125, 29,138, 63, 11,111,150, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 29,138, 63, 11,111,150, 63,118,150,138, 63, 11,116,101, 63,121,153,154,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 51, 63, 0, 0, 0,
- 63,121,153,154, 63, 0, 1,244, 63,118,150,138, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,118,150,138, 63, 11,116,101, 63,125, 29,138, 63, 11,111,150, 63,122, 30,227, 63, 22,209,233, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,204,205, 63, 0, 1,244, 63,115, 51, 51, 63, 0, 0, 0,
- 63,111,207,213, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,207,213,
- 63, 11,116,100, 63,105, 72,213, 63, 11,111,149, 63,108,204,205, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,102,102,101, 63, 0, 0, 0, 63,108,204,205, 63, 0, 1,244, 63,105, 72,213, 63, 11,111,149,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 72,213, 63, 11,111,149, 63,111,207,213,
- 63, 11,116,100, 63,108, 71,116, 63, 22,209,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,115, 51, 58, 62,217, 58, 73, 63,108,112,192, 62,217,196, 4, 63,111,174,139, 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,174,139, 62,198,230,223, 63,118,183,239, 62,198,230,227, 63,115, 51, 58,
- 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,245,179, 62,217,196, 6,
- 63,115, 51, 58, 62,217, 58, 73, 63,118,183,239, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,118,183,239, 62,198,230,227, 63,111,174,139, 62,198,230,223, 63,115, 51, 65, 62,180,111,160, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 58, 62,217, 58, 73, 63,121,245,179, 62,217,196, 6,
- 63,118,135,185, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,135,185,
- 62,236,211, 30, 63,111,222,180, 62,236,211, 30, 63,115, 51, 58, 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,108,112,192, 62,217,196, 4, 63,115, 51, 58, 62,217, 58, 73, 63,111,222,180, 62,236,211, 30,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,222,180, 62,236,211, 30, 63,118,135,185,
- 62,236,211, 30, 63,115, 51, 51, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,108,204,205, 63, 0, 1,244, 63,102,102,101, 63, 0, 0, 0, 63,105, 97,170, 62,236,207, 65, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 97,170, 62,236,207, 65, 63,111,222,180, 62,236,211, 30, 63,108,204,205,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 51, 63, 0, 0, 0,
- 63,108,204,205, 63, 0, 1,244, 63,111,222,180, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,111,222,180, 62,236,211, 30, 63,105, 97,170, 62,236,207, 65, 63,108,112,192, 62,217,196, 4, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,153,154, 63, 0, 1,244, 63,115, 51, 51, 63, 0, 0, 0,
- 63,118,135,185, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,135,185,
- 62,236,211, 30, 63,125, 4,194, 62,236,207, 67, 63,121,153,154, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,121,153,154, 63, 0, 1,244, 63,125, 4,194, 62,236,207, 67,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 4,194, 62,236,207, 67, 63,118,135,185,
- 62,236,211, 30, 63,121,245,179, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,102, 73, 76, 63, 21, 48, 38, 63, 96, 92, 11, 63, 19, 29,253, 63, 99,107, 33, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,107, 33, 63, 9,152, 94, 63,105, 72,213, 63, 11,111,149, 63,102, 73, 76,
- 63, 21, 48, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108, 71,116, 63, 22,209,232,
- 63,102, 73, 76, 63, 21, 48, 38, 63,105, 72,213, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,105, 72,213, 63, 11,111,149, 63, 99,107, 33, 63, 9,152, 94, 63,102,102,101, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102, 73, 76, 63, 21, 48, 38, 63,108, 71,116, 63, 22,209,232,
- 63,105, 87,124, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 87,124,
- 63, 33, 23,180, 63, 99, 9, 65, 63, 31, 60,109, 63,102, 73, 76, 63, 21, 48, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 92, 11, 63, 19, 29,253, 63,102, 73, 76, 63, 21, 48, 38, 63, 99, 9, 65, 63, 31, 60,109,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 9, 65, 63, 31, 60,109, 63,105, 87,124,
- 63, 33, 23,180, 63,102, 17, 87, 63, 43, 52,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 95,182,205, 63, 40,228,222, 63, 89,153,139, 63, 37,200, 45, 63, 93, 30, 63, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93, 30, 63, 63, 28,140,143, 63, 99, 9, 65, 63, 31, 60,109, 63, 95,182,205,
- 63, 40,228,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102, 17, 87, 63, 43, 52,229,
- 63, 95,182,205, 63, 40,228,222, 63, 99, 9, 65, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 99, 9, 65, 63, 31, 60,109, 63, 93, 30, 63, 63, 28,140,143, 63, 96, 92, 11, 63, 19, 29,253, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,148,118, 63, 44,160,211, 63,102, 17, 87, 63, 43, 52,229,
- 63,105, 87,124, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 87,124,
- 63, 33, 23,180, 63,111,136, 31, 63, 34, 17,225, 63,108,148,118, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 45, 28, 36, 63,108,148,118, 63, 44,160,211, 63,111,136, 31, 63, 34, 17,225,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,136, 31, 63, 34, 17,225, 63,105, 87,124,
- 63, 33, 23,180, 63,108, 71,116, 63, 22,209,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 77, 65, 65, 63, 21, 48, 32, 62, 53, 72,152, 63, 22,209,229, 62, 65, 67, 47, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 67, 47, 63, 11,111,147, 62, 88,185,255, 63, 9,152, 90, 62, 77, 65, 65,
- 63, 21, 48, 32, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,100,246, 64, 63, 19, 29,246,
- 62, 77, 65, 65, 63, 21, 48, 32, 62, 88,185,255, 63, 9,152, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 88,185,255, 63, 9,152, 90, 62, 65, 67, 47, 63, 11,111,147, 62, 76,204,254, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 77, 65, 65, 63, 21, 48, 32, 62,100,246, 64, 63, 19, 29,246,
- 62, 90, 65, 89, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 90, 65, 89,
- 63, 31, 60, 94, 62, 65, 8,107, 63, 33, 23,170, 62, 77, 65, 65, 63, 21, 48, 32, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 53, 72,152, 63, 22,209,229, 62, 77, 65, 65, 63, 21, 48, 32, 62, 65, 8,107, 63, 33, 23,170,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 8,107, 63, 33, 23,170, 62, 90, 65, 89,
- 63, 31, 60, 94, 62, 78, 32,230, 63, 43, 52,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 52, 20,105, 63, 44,160,198, 62, 25,153,173, 63, 45, 28, 27, 62, 40, 69,216, 63, 34, 17,220, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 40, 69,216, 63, 34, 17,220, 62, 65, 8,107, 63, 33, 23,170, 62, 52, 20,105,
- 63, 44,160,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 78, 32,230, 63, 43, 52,211,
- 62, 52, 20,105, 63, 44,160,198, 62, 65, 8,107, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 65, 8,107, 63, 33, 23,170, 62, 40, 69,216, 63, 34, 17,220, 62, 53, 72,152, 63, 22,209,229, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,103,139, 14, 63, 40,228,199, 62, 78, 32,230, 63, 43, 52,211,
- 62, 90, 65, 89, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 90, 65, 89,
- 63, 31, 60, 94, 62,113,237, 83, 63, 28,140,130, 62,103,139, 14, 63, 40,228,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 37,200, 23, 62,103,139, 14, 63, 40,228,199, 62,113,237, 83, 63, 28,140,130,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,113,237, 83, 63, 28,140,130, 62, 90, 65, 89,
- 63, 31, 60, 94, 62,100,246, 64, 63, 19, 29,246, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 25,153,180, 63, 23, 32,185, 62, 53, 72,152, 63, 22,209,229, 62, 40, 69,216, 63, 34, 17,220, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 40, 69,216, 63, 34, 17,220, 62, 10,237,133, 63, 34, 17,219, 62, 25,153,180,
- 63, 23, 32,185, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,251,213,147, 63, 22,209,228,
- 62, 25,153,180, 63, 23, 32,185, 62, 10,237,133, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 10,237,133, 63, 34, 17,219, 62, 40, 69,216, 63, 34, 17,220, 62, 25,153,173, 63, 45, 28, 27, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,180, 63, 23, 32,185, 61,251,213,147, 63, 22,209,228,
- 62, 12, 12, 67, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 12, 12, 67,
- 63, 11,116, 98, 62, 39, 39, 34, 63, 11,116, 98, 62, 25,153,180, 63, 23, 32,185, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 53, 72,152, 63, 22,209,229, 62, 25,153,180, 63, 23, 32,185, 62, 39, 39, 34, 63, 11,116, 98,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 39, 39, 34, 63, 11,116, 98, 62, 12, 12, 67,
- 63, 11,116, 98, 62, 25,153,181, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 51, 51, 92, 63, 0, 1,244, 62, 76,204,254, 63, 0, 0, 0, 62, 65, 67, 47, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 67, 47, 63, 11,111,147, 62, 39, 39, 34, 63, 11,116, 98, 62, 51, 51, 92,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,181, 63, 0, 0, 0,
- 62, 51, 51, 92, 63, 0, 1,244, 62, 39, 39, 34, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 39, 39, 34, 63, 11,116, 98, 62, 65, 67, 47, 63, 11,111,147, 62, 53, 72,152, 63, 22,209,229, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 0, 0, 8, 63, 0, 1,244, 62, 25,153,181, 63, 0, 0, 0,
- 62, 12, 12, 67, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 12, 12, 67,
- 63, 11,116, 98, 61,227,224,109, 63, 11,111,147, 62, 0, 0, 8, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,204,204,215, 63, 0, 0, 0, 62, 0, 0, 8, 63, 0, 1,244, 61,227,224,109, 63, 11,111,147,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,227,224,109, 63, 11,111,147, 62, 12, 12, 67,
- 63, 11,116, 98, 61,251,213,147, 63, 22,209,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 25,153,196, 62,217, 58, 73, 61,253, 31,171, 62,217,196, 6, 62, 11,135, 1, 62,198,230,228, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 11,135, 1, 62,198,230,228, 62, 39,172,153, 62,198,230,230, 62, 25,153,196,
- 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52,163,179, 62,217,196, 7,
- 62, 25,153,196, 62,217, 58, 73, 62, 39,172,153, 62,198,230,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 39,172,153, 62,198,230,230, 62, 11,135, 1, 62,198,230,228, 62, 25,153,214, 62,180,111,165, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,196, 62,217, 58, 73, 62, 52,163,179, 62,217,196, 7,
- 62, 38,235,202, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 38,235,202,
- 62,236,211, 33, 62, 12, 71,173, 62,236,211, 31, 62, 25,153,196, 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,253, 31,171, 62,217,196, 6, 62, 25,153,196, 62,217, 58, 73, 62, 12, 71,173, 62,236,211, 31,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 12, 71,173, 62,236,211, 31, 62, 38,235,202,
- 62,236,211, 33, 62, 25,153,181, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 0, 0, 8, 63, 0, 1,244, 61,204,204,215, 63, 0, 0, 0, 61,228,166,251, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,228,166,251, 62,236,207, 67, 62, 12, 71,173, 62,236,211, 31, 62, 0, 0, 8,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,181, 63, 0, 0, 0,
- 62, 0, 0, 8, 63, 0, 1,244, 62, 12, 71,173, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 12, 71,173, 62,236,211, 31, 61,228,166,251, 62,236,207, 67, 61,253, 31,171, 62,217,196, 6, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 51, 51, 92, 63, 0, 1,244, 62, 25,153,181, 63, 0, 0, 0,
- 62, 38,235,202, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 38,235,202,
- 62,236,211, 33, 62, 64,223,251, 62,236,207, 67, 62, 51, 51, 92, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 76,204,254, 63, 0, 0, 0, 62, 51, 51, 92, 63, 0, 1,244, 62, 64,223,251, 62,236,207, 67,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64,223,251, 62,236,207, 67, 62, 38,235,202,
- 62,236,211, 33, 62, 52,163,179, 62,217,196, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,203,228, 42, 63, 21, 48, 37, 61,156,122, 1, 63, 19, 29,254, 61,180,242,172, 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,180,242,172, 63, 9,152, 96, 61,227,224,109, 63, 11,111,147, 61,203,228, 42,
- 63, 21, 48, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,251,213,147, 63, 22,209,228,
- 61,203,228, 42, 63, 21, 48, 37, 61,227,224,109, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,227,224,109, 63, 11,111,147, 61,180,242,172, 63, 9,152, 96, 61,204,204,215, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,203,228, 42, 63, 21, 48, 37, 61,251,213,147, 63, 22,209,228,
- 61,228, 85,208, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,228, 85,208,
- 63, 33, 23,179, 61,177,227,212, 63, 31, 60,110, 61,203,228, 42, 63, 21, 48, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,156,122, 1, 63, 19, 29,254, 61,203,228, 42, 63, 21, 48, 37, 61,177,227,212, 63, 31, 60,110,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,177,227,212, 63, 31, 60,110, 61,228, 85,208,
- 63, 33, 23,179, 61,202, 36,175, 63, 43, 52,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,151, 80, 53, 63, 40,228,223, 61, 76,203,246, 63, 37,200, 48, 61,130,139,166, 63, 28,140,145, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,130,139,166, 63, 28,140,145, 61,177,227,212, 63, 31, 60,110, 61,151, 80, 53,
- 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,202, 36,175, 63, 43, 52,228,
- 61,151, 80, 53, 63, 40,228,223, 61,177,227,212, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,177,227,212, 63, 31, 60,110, 61,130,139,166, 63, 28,140,145, 61,156,122, 1, 63, 19, 29,254, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,254, 61,201, 63, 44,160,207, 61,202, 36,175, 63, 43, 52,228,
- 61,228, 85,208, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,228, 85,208,
- 63, 33, 23,179, 62, 10,237,133, 63, 34, 17,219, 61,254, 61,201, 63, 44,160,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,173, 63, 45, 28, 27, 61,254, 61,201, 63, 44,160,207, 62, 10,237,133, 63, 34, 17,219,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 10,237,133, 63, 34, 17,219, 61,228, 85,208,
- 63, 33, 23,179, 61,251,213,147, 63, 22,209,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,205, 6,245, 63, 21, 48, 37, 62,193, 10,155, 63, 22,209,229, 62,199, 7,229, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,199, 7,229, 63, 11,111,147, 62,210,195, 85, 63, 9,152, 96, 62,205, 6,245,
- 63, 21, 48, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,225,128, 63, 19, 29,254,
- 62,205, 6,245, 63, 21, 48, 37, 62,210,195, 85, 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,210,195, 85, 63, 9,152, 96, 62,199, 7,229, 63, 11,111,147, 62,204,204,202, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,205, 6,245, 63, 21, 48, 37, 62,216,225,128, 63, 19, 29,254,
- 62,211,135, 11, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211,135, 11,
- 63, 31, 60,110, 62,198,234,140, 63, 33, 23,179, 62,205, 6,245, 63, 21, 48, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,193, 10,155, 63, 22,209,229, 62,205, 6,245, 63, 21, 48, 37, 62,198,234,140, 63, 33, 23,179,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,234,140, 63, 33, 23,179, 62,211,135, 11,
- 63, 31, 60,110, 62,205,118,212, 63, 43, 52,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,192,112,142, 63, 44,160,207, 62,179, 51, 42, 63, 45, 28, 28, 62,186,137, 61, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,186,137, 61, 63, 34, 17,219, 62,198,234,140, 63, 33, 23,179, 62,192,112,142,
- 63, 44,160,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,205,118,212, 63, 43, 52,228,
- 62,192,112,142, 63, 44,160,207, 62,198,234,140, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,198,234,140, 63, 33, 23,179, 62,186,137, 61, 63, 34, 17,219, 62,193, 10,155, 63, 22,209,229, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,218, 43,243, 63, 40,228,223, 62,205,118,212, 63, 43, 52,228,
- 62,211,135, 11, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211,135, 11,
- 63, 31, 60,110, 62,223, 93, 22, 63, 28,140,145, 62,218, 43,243, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,129, 63, 37,200, 48, 62,218, 43,243, 63, 40,228,223, 62,223, 93, 22, 63, 28,140,145,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223, 93, 22, 63, 28,140,145, 62,211,135, 11,
- 63, 31, 60,110, 62,216,225,128, 63, 19, 29,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,179, 51, 38, 63, 23, 32,185, 62,193, 10,155, 63, 22,209,229, 62,186,137, 61, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,186,137, 61, 63, 34, 17,219, 62,171,221, 20, 63, 34, 17,219, 62,179, 51, 38,
- 63, 23, 32,185, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165, 91,180, 63, 22,209,229,
- 62,179, 51, 38, 63, 23, 32,185, 62,171,221, 20, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,171,221, 20, 63, 34, 17,219, 62,186,137, 61, 63, 34, 17,219, 62,179, 51, 42, 63, 45, 28, 28, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 38, 63, 23, 32,185, 62,165, 91,180, 63, 22,209,229,
- 62,172,108,111, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172,108,111,
- 63, 11,116, 98, 62,185,249,222, 63, 11,116, 98, 62,179, 51, 38, 63, 23, 32,185, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,193, 10,155, 63, 22,209,229, 62,179, 51, 38, 63, 23, 32,185, 62,185,249,222, 63, 11,116, 98,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,185,249,222, 63, 11,116, 98, 62,172,108,111,
- 63, 11,116, 98, 62,179, 51, 38, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,191,255,252, 63, 0, 1,244, 62,204,204,202, 63, 0, 0, 0, 62,199, 7,229, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,199, 7,229, 63, 11,111,147, 62,185,249,222, 63, 11,116, 98, 62,191,255,252,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 38, 63, 0, 0, 0,
- 62,191,255,252, 63, 0, 1,244, 62,185,249,222, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,185,249,222, 63, 11,116, 98, 62,199, 7,229, 63, 11,111,147, 62,193, 10,155, 63, 22,209,229, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,166,102, 82, 63, 0, 1,244, 62,179, 51, 38, 63, 0, 0, 0,
- 62,172,108,111, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172,108,111,
- 63, 11,116, 98, 62,159, 94,104, 63, 11,111,147, 62,166,102, 82, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,153,153,129, 63, 0, 0, 0, 62,166,102, 82, 63, 0, 1,244, 62,159, 94,104, 63, 11,111,147,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159, 94,104, 63, 11,111,147, 62,172,108,111,
- 63, 11,116, 98, 62,165, 91,180, 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,179, 51, 30, 62,217, 58, 73, 62,165,174, 39, 62,217,196, 7, 62,172, 41,180, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172, 41,180, 62,198,230,227, 62,186, 60,127, 62,198,230,225, 62,179, 51, 30,
- 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,184, 21, 62,217,196, 6,
- 62,179, 51, 30, 62,217, 58, 73, 62,186, 60,127, 62,198,230,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,186, 60,127, 62,198,230,225, 62,172, 41,180, 62,198,230,227, 62,179, 51, 21, 62,180,111,165, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 30, 62,217, 58, 73, 62,192,184, 21, 62,217,196, 6,
- 62,185,220, 42, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,185,220, 42,
- 62,236,211, 31, 62,172,138, 27, 62,236,211, 33, 62,179, 51, 30, 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,165,174, 39, 62,217,196, 7, 62,179, 51, 30, 62,217, 58, 73, 62,172,138, 27, 62,236,211, 33,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172,138, 27, 62,236,211, 33, 62,185,220, 42,
- 62,236,211, 31, 62,179, 51, 38, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,166,102, 82, 63, 0, 1,244, 62,153,153,129, 63, 0, 0, 0, 62,159,144, 3, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,144, 3, 62,236,207, 67, 62,172,138, 27, 62,236,211, 33, 62,166,102, 82,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 38, 63, 0, 0, 0,
- 62,166,102, 82, 63, 0, 1,244, 62,172,138, 27, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,172,138, 27, 62,236,211, 33, 62,159,144, 3, 62,236,207, 67, 62,165,174, 39, 62,217,196, 7, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,191,255,252, 63, 0, 1,244, 62,179, 51, 38, 63, 0, 0, 0,
- 62,185,220, 42, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,185,220, 42,
- 62,236,211, 31, 62,198,214, 65, 62,236,207, 67, 62,191,255,252, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,204,204,202, 63, 0, 0, 0, 62,191,255,252, 63, 0, 1,244, 62,198,214, 65, 62,236,207, 67,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,214, 65, 62,236,207, 67, 62,185,220, 42,
- 62,236,211, 31, 62,192,184, 21, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,153, 95, 95, 63, 21, 48, 32, 62,141,132,224, 63, 19, 29,246, 62,147,163, 1, 63, 9,152, 91, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,163, 1, 63, 9,152, 91, 62,159, 94,104, 63, 11,111,147, 62,153, 95, 95,
- 63, 21, 48, 32, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165, 91,180, 63, 22,209,229,
- 62,153, 95, 95, 63, 21, 48, 32, 62,159, 94,104, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,159, 94,104, 63, 11,111,147, 62,147,163, 1, 63, 9,152, 91, 62,153,153,129, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153, 95, 95, 63, 21, 48, 32, 62,165, 91,180, 63, 22,209,229,
- 62,159,123,203, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,123,203,
- 63, 33, 23,170, 62,146,223, 84, 63, 31, 60, 94, 62,153, 95, 95, 63, 21, 48, 32, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,141,132,224, 63, 19, 29,246, 62,153, 95, 95, 63, 21, 48, 32, 62,146,223, 84, 63, 31, 60, 94,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,146,223, 84, 63, 31, 60, 94, 62,159,123,203,
- 63, 33, 23,170, 62,152,239,141, 63, 43, 52,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,140, 58,121, 63, 40,228,199, 62,128, 0, 0, 63, 37,200, 23, 62,135, 9, 86, 63, 28,140,130, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,135, 9, 86, 63, 28,140,130, 62,146,223, 84, 63, 31, 60, 94, 62,140, 58,121,
- 63, 40,228,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,152,239,141, 63, 43, 52,211,
- 62,140, 58,121, 63, 40,228,199, 62,146,223, 84, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,146,223, 84, 63, 31, 60, 94, 62,135, 9, 86, 63, 28,140,130, 62,141,132,224, 63, 19, 29,246, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,245,204, 63, 44,160,198, 62,152,239,141, 63, 43, 52,211,
- 62,159,123,203, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,123,203,
- 63, 33, 23,170, 62,171,221, 20, 63, 34, 17,219, 62,165,245,204, 63, 44,160,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 42, 63, 45, 28, 28, 62,165,245,204, 63, 44,160,198, 62,171,221, 20, 63, 34, 17,219,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,171,221, 20, 63, 34, 17,219, 62,159,123,203,
- 63, 33, 23,170, 62,165, 91,180, 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 25,182,180, 63, 21, 48, 38, 63, 19,184,140, 63, 22,209,232, 63, 22,183, 43, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,183, 43, 63, 11,111,149, 63, 28,148,223, 63, 9,152, 94, 63, 25,182,180,
- 63, 21, 48, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,163,245, 63, 19, 29,253,
- 63, 25,182,180, 63, 21, 48, 38, 63, 28,148,223, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 28,148,223, 63, 9,152, 94, 63, 22,183, 43, 63, 11,111,149, 63, 25,153,155, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,182,180, 63, 21, 48, 38, 63, 31,163,245, 63, 19, 29,253,
- 63, 28,246,191, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,246,191,
- 63, 31, 60,109, 63, 22,168,132, 63, 33, 23,180, 63, 25,182,180, 63, 21, 48, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,184,140, 63, 22,209,232, 63, 25,182,180, 63, 21, 48, 38, 63, 22,168,132, 63, 33, 23,180,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,168,132, 63, 33, 23,180, 63, 28,246,191,
- 63, 31, 60,109, 63, 25,238,169, 63, 43, 52,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 19,107,138, 63, 44,160,211, 63, 12,204,220, 63, 45, 28, 35, 63, 16,119,225, 63, 34, 17,225, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16,119,225, 63, 34, 17,225, 63, 22,168,132, 63, 33, 23,180, 63, 19,107,138,
- 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,238,169, 63, 43, 52,229,
- 63, 19,107,138, 63, 44,160,211, 63, 22,168,132, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 22,168,132, 63, 33, 23,180, 63, 16,119,225, 63, 34, 17,225, 63, 19,184,140, 63, 22,209,232, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32, 73, 51, 63, 40,228,221, 63, 25,238,169, 63, 43, 52,229,
- 63, 28,246,191, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,246,191,
- 63, 31, 60,109, 63, 34,225,192, 63, 28,140,142, 63, 32, 73, 51, 63, 40,228,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 37,200, 45, 63, 32, 73, 51, 63, 40,228,221, 63, 34,225,192, 63, 28,140,142,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34,225,192, 63, 28,140,142, 63, 28,246,191,
- 63, 31, 60,109, 63, 31,163,245, 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 12,204,212, 63, 23, 32,188, 63, 19,184,140, 63, 22,209,232, 63, 16,119,225, 63, 34, 17,225, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16,119,225, 63, 34, 17,225, 63, 9, 33,207, 63, 34, 17,226, 63, 12,204,212,
- 63, 23, 32,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 5,225, 29, 63, 22,209,233,
- 63, 12,204,212, 63, 23, 32,188, 63, 9, 33,207, 63, 34, 17,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 9, 33,207, 63, 34, 17,226, 63, 16,119,225, 63, 34, 17,225, 63, 12,204,220, 63, 45, 28, 35, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,212, 63, 23, 32,188, 63, 5,225, 29, 63, 22,209,233,
- 63, 9,105,118, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9,105,118,
- 63, 11,116,101, 63, 16, 48, 43, 63, 11,116,100, 63, 12,204,212, 63, 23, 32,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,184,140, 63, 22,209,232, 63, 12,204,212, 63, 23, 32,188, 63, 16, 48, 43, 63, 11,116,100,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 48, 43, 63, 11,116,100, 63, 9,105,118,
- 63, 11,116,101, 63, 12,204,205, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 19, 51, 51, 63, 0, 1,244, 63, 25,153,155, 63, 0, 0, 0, 63, 22,183, 43, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,183, 43, 63, 11,111,149, 63, 16, 48, 43, 63, 11,116,100, 63, 19, 51, 51,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,205, 63, 0, 0, 0,
- 63, 19, 51, 51, 63, 0, 1,244, 63, 16, 48, 43, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 16, 48, 43, 63, 11,116,100, 63, 22,183, 43, 63, 11,111,149, 63, 19,184,140, 63, 22,209,232, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,102,102, 63, 0, 1,244, 63, 12,204,205, 63, 0, 0, 0,
- 63, 9,105,118, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9,105,118,
- 63, 11,116,101, 63, 2,226,118, 63, 11,111,149, 63, 6,102,102, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 6,102,102, 63, 0, 1,244, 63, 2,226,118, 63, 11,111,149,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,226,118, 63, 11,111,149, 63, 9,105,118,
- 63, 11,116,101, 63, 5,225, 29, 63, 22,209,233, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 12,204,198, 62,217, 58, 72, 63, 6, 10, 77, 62,217,196, 6, 63, 9, 72, 17, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9, 72, 17, 62,198,230,227, 63, 16, 81,117, 62,198,230,223, 63, 12,204,198,
- 62,217, 58, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,143, 64, 62,217,196, 4,
- 63, 12,204,198, 62,217, 58, 72, 63, 16, 81,117, 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 16, 81,117, 62,198,230,223, 63, 9, 72, 17, 62,198,230,227, 63, 12,204,191, 62,180,111,160, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,198, 62,217, 58, 72, 63, 19,143, 64, 62,217,196, 4,
- 63, 16, 33, 76, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 33, 76,
- 62,236,211, 30, 63, 9,120, 71, 62,236,211, 30, 63, 12,204,198, 62,217, 58, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 10, 77, 62,217,196, 6, 63, 12,204,198, 62,217, 58, 72, 63, 9,120, 71, 62,236,211, 30,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9,120, 71, 62,236,211, 30, 63, 16, 33, 76,
- 62,236,211, 30, 63, 12,204,205, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 6,102,102, 63, 0, 1,244, 63, 0, 0, 0, 63, 0, 0, 0, 63, 2,251, 62, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,251, 62, 62,236,207, 67, 63, 9,120, 71, 62,236,211, 30, 63, 6,102,102,
- 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,205, 63, 0, 0, 0,
- 63, 6,102,102, 63, 0, 1,244, 63, 9,120, 71, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 9,120, 71, 62,236,211, 30, 63, 2,251, 62, 62,236,207, 67, 63, 6, 10, 77, 62,217,196, 6, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19, 51, 51, 63, 0, 1,244, 63, 12,204,205, 63, 0, 0, 0,
- 63, 16, 33, 76, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 33, 76,
- 62,236,211, 30, 63, 22,158, 86, 62,236,207, 65, 63, 19, 51, 51, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,153,155, 63, 0, 0, 0, 63, 19, 51, 51, 63, 0, 1,244, 63, 22,158, 86, 62,236,207, 65,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,158, 86, 62,236,207, 65, 63, 16, 33, 76,
- 62,236,211, 30, 63, 19,143, 64, 62,217,196, 4, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,255,197,233, 63, 21, 48, 39, 62,243,235,101, 63, 19, 29,252, 62,250, 9,132, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 9,132, 63, 9,152, 94, 63, 2,226,118, 63, 11,111,149, 62,255,197,233,
- 63, 21, 48, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 5,225, 29, 63, 22,209,233,
- 62,255,197,233, 63, 21, 48, 39, 63, 2,226,118, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 2,226,118, 63, 11,111,149, 62,250, 9,132, 63, 9,152, 94, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,255,197,233, 63, 21, 48, 39, 63, 5,225, 29, 63, 22,209,233,
- 63, 2,241, 43, 63, 33, 23,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,241, 43,
- 63, 33, 23,181, 62,249, 69,225, 63, 31, 60,110, 62,255,197,233, 63, 21, 48, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,243,235,101, 63, 19, 29,252, 62,255,197,233, 63, 21, 48, 39, 62,249, 69,225, 63, 31, 60,110,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249, 69,225, 63, 31, 60,110, 63, 2,241, 43,
- 63, 33, 23,181, 62,255, 86, 30, 63, 43, 52,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,242,161, 9, 63, 40,228,223, 62,230,102,129, 63, 37,200, 48, 62,237,111,222, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237,111,222, 63, 28,140,143, 62,249, 69,225, 63, 31, 60,110, 62,242,161, 9,
- 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,255, 86, 30, 63, 43, 52,230,
- 62,242,161, 9, 63, 40,228,223, 62,249, 69,225, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,249, 69,225, 63, 31, 60,110, 62,237,111,222, 63, 28,140,143, 62,243,235,101, 63, 19, 29,252, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 46, 46, 63, 44,160,211, 62,255, 86, 30, 63, 43, 52,230,
- 63, 2,241, 43, 63, 33, 23,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,241, 43,
- 63, 33, 23,181, 63, 9, 33,207, 63, 34, 17,226, 63, 6, 46, 46, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 45, 28, 35, 63, 6, 46, 46, 63, 44,160,211, 63, 9, 33,207, 63, 34, 17,226,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9, 33,207, 63, 34, 17,226, 63, 2,241, 43,
- 63, 33, 23,181, 63, 5,225, 29, 63, 22,209,233, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 85,238,138, 62,187,220, 72, 63, 82,173,218, 62,210, 92, 55, 63, 79,189,229, 62,189,208,173, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,189,229, 62,189,208,173, 63, 82,250,230, 62,166,190,117, 63, 85,238,138,
- 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,149, 62,165,199,201,
- 63, 85,238,138, 62,187,220, 72, 63, 82,250,230, 62,166,190,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 82,250,230, 62,166,190,117, 63, 79,189,229, 62,189,208,173, 63, 76,119,198, 62,169,150, 90, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,111,170, 62,193,135, 68, 63, 76,119,198, 62,169,150, 90,
- 63, 79,189,229, 62,189,208,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,189,229,
- 62,189,208,173, 63, 76,175,176, 62,213,159,192, 63, 73,111,170, 62,193,135, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,194,112, 62,217,196, 19, 63, 73,111,170, 62,193,135, 68, 63, 76,175,176, 62,213,159,192,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,175,176, 62,213,159,192, 63, 79,189,229,
- 62,189,208,173, 63, 82,173,218, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 79,175, 52, 62,233, 32,218, 63, 76,204,193, 63, 0, 0, 0, 63, 73,209,128, 62,236,207, 75, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,209,128, 62,236,207, 75, 63, 76,175,176, 62,213,159,192, 63, 79,175, 52,
- 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,173,218, 62,210, 92, 55,
- 63, 79,175, 52, 62,233, 32,218, 63, 76,175,176, 62,213,159,192, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 76,175,176, 62,213,159,192, 63, 73,209,128, 62,236,207, 75, 63, 70,194,112, 62,217,196, 19, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,111,170, 62,193,135, 68, 63, 70,194,112, 62,217,196, 19,
- 63, 67,132,171, 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67,132,171,
- 62,198,230,253, 63, 70, 29, 61, 62,174, 54,114, 63, 73,111,170, 62,193,135, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,119,198, 62,169,150, 90, 63, 73,111,170, 62,193,135, 68, 63, 70, 29, 61, 62,174, 54,114,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70, 29, 61, 62,174, 54,114, 63, 67,132,171,
- 62,198,230,253, 63, 64, 0, 0, 62,180,111,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 79,175, 52, 62,233, 32,218, 63, 82,173,218, 62,210, 92, 55, 63, 86, 54, 56, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 54, 56, 62,233, 23, 58, 63, 83, 51, 41, 62,255,252, 24, 63, 79,175, 52,
- 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,204,193, 63, 0, 0, 0,
- 63, 79,175, 52, 62,233, 32,218, 63, 83, 51, 41, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 83, 51, 41, 62,255,252, 24, 63, 86, 54, 56, 62,233, 23, 58, 63, 89,153,147, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,252,239, 62,233, 23, 58, 63, 89,153,147, 63, 0, 0, 0,
- 63, 86, 54, 56, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 54, 56,
- 62,233, 23, 58, 63, 89,153,147, 62,209,190,143, 63, 92,252,239, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 96,133, 78, 62,210, 92, 55, 63, 92,252,239, 62,233, 23, 58, 63, 89,153,147, 62,209,190,143,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147, 62,209,190,143, 63, 86, 54, 56,
- 62,233, 23, 58, 63, 82,173,218, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 85,238,138, 62,187,220, 72, 63, 89,153,149, 62,165,199,201, 63, 93, 68,159, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93, 68,159, 62,187,220, 72, 63, 89,153,147, 62,209,190,143, 63, 85,238,138,
- 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,173,218, 62,210, 92, 55,
- 63, 85,238,138, 62,187,220, 72, 63, 89,153,147, 62,209,190,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 89,153,147, 62,209,190,143, 63, 93, 68,159, 62,187,220, 72, 63, 96,133, 78, 62,210, 92, 55, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,252,239, 62,233, 23, 58, 63, 96,133, 78, 62,210, 92, 55,
- 63, 99,131,242, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,131,242,
- 62,233, 32,218, 63, 95,255,254, 62,255,252, 24, 63, 92,252,239, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147, 63, 0, 0, 0, 63, 92,252,239, 62,233, 23, 58, 63, 95,255,254, 62,255,252, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,255,254, 62,255,252, 24, 63, 99,131,242,
- 62,233, 32,218, 63,102,102,101, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,111,174,139, 62,198,230,223, 63,108,112,192, 62,217,196, 4, 63,105,195,133, 62,193,135, 37, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,195,133, 62,193,135, 37, 63,109, 21,249, 62,174, 54, 65, 63,111,174,139,
- 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,180,111,160,
- 63,111,174,139, 62,198,230,223, 63,109, 21,249, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,109, 21,249, 62,174, 54, 65, 63,105,195,133, 62,193,135, 37, 63,102,187,106, 62,169,150, 54, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,117, 70, 62,189,208,155, 63,102,187,106, 62,169,150, 54,
- 63,105,195,133, 62,193,135, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,195,133,
- 62,193,135, 37, 63,102,131,123, 62,213,159,181, 63, 99,117, 70, 62,189,208,155, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 96,133, 78, 62,210, 92, 55, 63, 99,117, 70, 62,189,208,155, 63,102,131,123, 62,213,159,181,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,131,123, 62,213,159,181, 63,105,195,133,
- 62,193,135, 37, 63,108,112,192, 62,217,196, 4, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,105, 97,170, 62,236,207, 65, 63,102,102,101, 63, 0, 0, 0, 63, 99,131,242, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,131,242, 62,233, 32,218, 63,102,131,123, 62,213,159,181, 63,105, 97,170,
- 62,236,207, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,112,192, 62,217,196, 4,
- 63,105, 97,170, 62,236,207, 65, 63,102,131,123, 62,213,159,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,102,131,123, 62,213,159,181, 63, 99,131,242, 62,233, 32,218, 63, 96,133, 78, 62,210, 92, 55, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,117, 70, 62,189,208,155, 63, 96,133, 78, 62,210, 92, 55,
- 63, 93, 68,159, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93, 68,159,
- 62,187,220, 72, 63, 96, 56, 71, 62,166,190, 99, 63, 99,117, 70, 62,189,208,155, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,102,187,106, 62,169,150, 54, 63, 99,117, 70, 62,189,208,155, 63, 96, 56, 71, 62,166,190, 99,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 56, 71, 62,166,190, 99, 63, 93, 68,159,
- 62,187,220, 72, 63, 89,153,149, 62,165,199,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 99,107, 33, 63, 9,152, 94, 63, 96, 92, 11, 63, 19, 29,253, 63, 92,238, 21, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,238, 21, 63, 9,150,112, 63, 95,255,254, 62,255,252, 24, 63, 99,107, 33,
- 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,102,101, 63, 0, 0, 0,
- 63, 99,107, 33, 63, 9,152, 94, 63, 95,255,254, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 95,255,254, 62,255,252, 24, 63, 92,238, 21, 63, 9,150,112, 63, 89,153,147, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 69, 14, 63, 9,150,112, 63, 89,153,147, 63, 0, 0, 0,
- 63, 92,238, 21, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,238, 21,
- 63, 9,150,112, 63, 89,153,143, 63, 19, 98,219, 63, 86, 69, 14, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,215, 19, 63, 19, 29,252, 63, 86, 69, 14, 63, 9,150,112, 63, 89,153,143, 63, 19, 98,219,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,143, 63, 19, 98,219, 63, 92,238, 21,
- 63, 9,150,112, 63, 96, 92, 11, 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 93, 30, 63, 63, 28,140,143, 63, 89,153,139, 63, 37,200, 45, 63, 86, 20,218, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 20,218, 63, 28,140,143, 63, 89,153,143, 63, 19, 98,219, 63, 93, 30, 63,
- 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 92, 11, 63, 19, 29,253,
- 63, 93, 30, 63, 63, 28,140,143, 63, 89,153,143, 63, 19, 98,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 89,153,143, 63, 19, 98,219, 63, 86, 20,218, 63, 28,140,143, 63, 82,215, 19, 63, 19, 29,252, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 69, 14, 63, 9,150,112, 63, 82,215, 19, 63, 19, 29,252,
- 63, 79,200, 1, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,200, 1,
- 63, 9,152, 94, 63, 83, 51, 41, 62,255,252, 24, 63, 86, 69, 14, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147, 63, 0, 0, 0, 63, 86, 69, 14, 63, 9,150,112, 63, 83, 51, 41, 62,255,252, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83, 51, 41, 62,255,252, 24, 63, 79,200, 1,
- 63, 9,152, 94, 63, 76,204,193, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61, 18, 28,237, 62,187,220, 60, 60,188, 35,151, 62,210, 92, 46, 60, 60, 74,218, 62,189,208,150, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60, 60, 74,218, 62,189,208,150, 60,197,197,195, 62,166,190, 89, 61, 18, 28,237,
- 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,194, 62,165,199,186,
- 61, 18, 28,237, 62,187,220, 60, 60,197,197,195, 62,166,190, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,131, 23, 23, 62,166,190, 89, 63,129,120,150, 62,189,208,150, 63,127,171, 15, 62,169,150, 52, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,162,241, 62,193,135, 36, 63,127,171, 15, 62,169,150, 52,
- 63,129,120,150, 62,189,208,150, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,129,120,150,
- 62,189,208,150, 63,127,226,244, 62,213,159,179, 63,124,162,241, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,121,245,179, 62,217,196, 6, 63,124,162,241, 62,193,135, 36, 63,127,226,244, 62,213,159,179,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,127,226,244, 62,213,159,179, 63,129,120,150,
- 62,189,208,150, 63,130,240,142, 62,210, 92, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,129,113, 59, 62,233, 32,214, 63,128, 0, 0, 63, 0, 0, 0, 63,125, 4,194, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 4,194, 62,236,207, 67, 63,127,226,244, 62,213,159,179, 63,129,113, 59,
- 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,130,240,142, 62,210, 92, 46,
- 63,129,113, 59, 62,233, 32,214, 63,127,226,244, 62,213,159,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,127,226,244, 62,213,159,179, 63,125, 4,194, 62,236,207, 67, 63,121,245,179, 62,217,196, 6, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,162,241, 62,193,135, 36, 63,121,245,179, 62,217,196, 6,
- 63,118,183,239, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,183,239,
- 62,198,230,227, 63,121, 80,133, 62,174, 54, 65, 63,124,162,241, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,127,171, 15, 62,169,150, 52, 63,124,162,241, 62,193,135, 36, 63,121, 80,133, 62,174, 54, 65,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 80,133, 62,174, 54, 65, 63,118,183,239,
- 62,198,230,227, 63,115, 51, 65, 62,180,111,160, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 60, 56,157,110, 62,233, 32,214, 60,188, 35,151, 62,210, 92, 46, 61, 22,151, 95, 62,233, 23, 55, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 22,151, 95, 62,233, 23, 55, 60,204,204,176, 62,255,252, 24, 60, 56,157,110,
- 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 38, 11, 79,167, 63, 0, 0, 0,
- 60, 56,157,110, 62,233, 32,214, 60,204,204,176, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 60,204,204,176, 62,255,252, 24, 61, 22,151, 95, 62,233, 23, 55, 61, 76,204,215, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129,129, 87, 62,233, 23, 57, 61, 76,204,215, 63, 0, 0, 0,
- 61, 22,151, 95, 62,233, 23, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 22,151, 95,
- 62,233, 23, 55, 61, 76,205, 68, 62,209,190,135, 61,129,129, 87, 62,233, 23, 57, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,157,196, 92, 62,210, 92, 49, 61,129,129, 87, 62,233, 23, 57, 61, 76,205, 68, 62,209,190,135,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205, 68, 62,209,190,135, 61, 22,151, 95,
- 62,233, 23, 55, 60,188, 35,151, 62,210, 92, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61, 18, 28,237, 62,187,220, 60, 61, 76,205,194, 62,165,199,186, 61,131,191, 7, 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,131,191, 7, 62,187,220, 62, 61, 76,205, 68, 62,209,190,135, 61, 18, 28,237,
- 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,188, 35,151, 62,210, 92, 46,
- 61, 18, 28,237, 62,187,220, 60, 61, 76,205, 68, 62,209,190,135, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61, 76,205, 68, 62,209,190,135, 61,131,191, 7, 62,187,220, 62, 61,157,196, 92, 62,210, 92, 49, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129,129, 87, 62,233, 23, 57, 61,157,196, 92, 62,210, 92, 49,
- 61,181,185, 89, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181,185, 89,
- 62,233, 32,214, 61,153,153,154, 62,255,252, 25, 61,129,129, 87, 62,233, 23, 57, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204,215, 63, 0, 0, 0, 61,129,129, 87, 62,233, 23, 57, 61,153,153,154, 62,255,252, 25,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,153,153,154, 62,255,252, 25, 61,181,185, 89,
- 62,233, 32,214, 61,204,204,215, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 11,135, 1, 62,198,230,228, 61,253, 31,171, 62,217,196, 6, 61,231,181,251, 62,193,135, 38, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,231,181,251, 62,193,135, 38, 62, 1, 36,204, 62,174, 54, 70, 62, 11,135, 1,
- 62,198,230,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62,180,111,165,
- 62, 11,135, 1, 62,198,230,228, 62, 1, 36,204, 62,174, 54, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 1, 36,204, 62,174, 54, 70, 61,231,181,251, 62,193,135, 38, 61,207,117, 70, 62,169,150, 54, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181, 68, 35, 62,189,208,153, 61,207,117, 70, 62,169,150, 54,
- 61,231,181,251, 62,193,135, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,231,181,251,
- 62,193,135, 38, 61,205,181,164, 62,213,159,180, 61,181, 68, 35, 62,189,208,153, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,157,196, 92, 62,210, 92, 49, 61,181, 68, 35, 62,189,208,153, 61,205,181,164, 62,213,159,180,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,205,181,164, 62,213,159,180, 61,231,181,251,
- 62,193,135, 38, 61,253, 31,171, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,228,166,251, 62,236,207, 67, 61,204,204,215, 63, 0, 0, 0, 61,181,185, 89, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181,185, 89, 62,233, 32,214, 61,205,181,164, 62,213,159,180, 61,228,166,251,
- 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,253, 31,171, 62,217,196, 6,
- 61,228,166,251, 62,236,207, 67, 61,205,181,164, 62,213,159,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,205,181,164, 62,213,159,180, 61,181,185, 89, 62,233, 32,214, 61,157,196, 92, 62,210, 92, 49, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181, 68, 35, 62,189,208,153, 61,157,196, 92, 62,210, 92, 49,
- 61,131,191, 7, 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,131,191, 7,
- 62,187,220, 62, 61,155, 92, 79, 62,166,190, 91, 61,181, 68, 35, 62,189,208,153, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,207,117, 70, 62,169,150, 54, 61,181, 68, 35, 62,189,208,153, 61,155, 92, 79, 62,166,190, 91,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,155, 92, 79, 62,166,190, 91, 61,131,191, 7,
- 62,187,220, 62, 61, 76,205,194, 62,165,199,186, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,180,242,172, 63, 9,152, 96, 61,156,122, 1, 63, 19, 29,254, 61,129, 10,100, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129, 10,100, 63, 9,150,113, 61,153,153,154, 62,255,252, 25, 61,180,242,172,
- 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,204,204,215, 63, 0, 0, 0,
- 61,180,242,172, 63, 9,152, 96, 61,153,153,154, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,153,153,154, 62,255,252, 25, 61,129, 10,100, 63, 9,150,113, 61, 76,204,215, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 23,132,109, 63, 9,150,113, 61, 76,204,215, 63, 0, 0, 0,
- 61,129, 10,100, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129, 10,100,
- 63, 9,150,113, 61, 76,204, 91, 63, 19, 98,220, 61, 23,132,109, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 60,193, 73,174, 63, 19, 29,253, 61, 23,132,109, 63, 9,150,113, 61, 76,204, 91, 63, 19, 98,220,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204, 91, 63, 19, 98,220, 61,129, 10,100,
- 63, 9,150,113, 61,156,122, 1, 63, 19, 29,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,130,139,166, 63, 28,140,145, 61, 76,203,246, 63, 37,200, 48, 61, 20,129, 13, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 20,129, 13, 63, 28,140,143, 61, 76,204, 91, 63, 19, 98,220, 61,130,139,166,
- 63, 28,140,145, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,156,122, 1, 63, 19, 29,254,
- 61,130,139,166, 63, 28,140,145, 61, 76,204, 91, 63, 19, 98,220, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61, 76,204, 91, 63, 19, 98,220, 61, 20,129, 13, 63, 28,140,143, 60,193, 73,174, 63, 19, 29,253, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 23,132,109, 63, 9,150,113, 60,193, 73,174, 63, 19, 29,253,
- 60, 62,207,114, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60, 62,207,114,
- 63, 9,152, 94, 60,204,204,176, 62,255,252, 24, 61, 23,132,109, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204,215, 63, 0, 0, 0, 61, 23,132,109, 63, 9,150,113, 60,204,204,176, 62,255,252, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,204,204,176, 62,255,252, 24, 60, 62,207,114,
- 63, 9,152, 94, 38, 11, 79,167, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,113, 83,237, 62,187,220, 79, 62,100, 81, 63, 62,210, 92, 60, 62, 88,145,110, 62,189,208,167, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 88,145,110, 62,189,208,167, 62,101,133, 91, 62,166,190,112, 62,113, 83,237,
- 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,165,199,206,
- 62,113, 83,237, 62,187,220, 79, 62,101,133, 91, 62,166,190,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,101,133, 91, 62,166,190,112, 62, 88,145,110, 62,189,208,167, 62, 75,120,239, 62,169,150, 70, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 63, 88,144, 62,193,135, 46, 62, 75,120,239, 62,169,150, 70,
- 62, 88,145,110, 62,189,208,167, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 88,145,110,
- 62,189,208,167, 62, 76, 88,170, 62,213,159,187, 62, 63, 88,144, 62,193,135, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 52,163,179, 62,217,196, 7, 62, 63, 88,144, 62,193,135, 46, 62, 76, 88,170, 62,213,159,187,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 76, 88,170, 62,213,159,187, 62, 88,145,110,
- 62,189,208,167, 62,100, 81, 63, 62,210, 92, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 88, 86,190, 62,233, 32,221, 62, 76,204,254, 63, 0, 0, 0, 62, 64,223,251, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64,223,251, 62,236,207, 67, 62, 76, 88,170, 62,213,159,187, 62, 88, 86,190,
- 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,100, 81, 63, 62,210, 92, 60,
- 62, 88, 86,190, 62,233, 32,221, 62, 76, 88,170, 62,213,159,187, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 76, 88,170, 62,213,159,187, 62, 64,223,251, 62,236,207, 67, 62, 52,163,179, 62,217,196, 7, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 63, 88,144, 62,193,135, 46, 62, 52,163,179, 62,217,196, 7,
- 62, 39,172,153, 62,198,230,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 39,172,153,
- 62,198,230,230, 62, 50, 14,213, 62,174, 54, 78, 62, 63, 88,144, 62,193,135, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 75,120,239, 62,169,150, 70, 62, 63, 88,144, 62,193,135, 46, 62, 50, 14,213, 62,174, 54, 78,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 50, 14,213, 62,174, 54, 78, 62, 39,172,153,
- 62,198,230,230, 62, 25,153,214, 62,180,111,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 88, 86,190, 62,233, 32,221, 62,100, 81, 63, 62,210, 92, 60, 62,114,114,166, 62,233, 23, 63, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,114,166, 62,233, 23, 63, 62,102,102,126, 62,255,252, 25, 62, 88, 86,190,
- 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 76,204,254, 63, 0, 0, 0,
- 62, 88, 86,190, 62,233, 32,221, 62,102,102,126, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,102,102,126, 62,255,252, 25, 62,114,114,166, 62,233, 23, 63, 62,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,198,173, 62,233, 23, 63, 62,128, 0, 0, 63, 0, 0, 0,
- 62,114,114,166, 62,233, 23, 63, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,114,166,
- 62,233, 23, 63, 62,128, 0, 0, 62,209,190,149, 62,134,198,173, 62,233, 23, 63, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,141,215, 97, 62,210, 92, 60, 62,134,198,173, 62,233, 23, 63, 62,128, 0, 0, 62,209,190,149,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,209,190,149, 62,114,114,166,
- 62,233, 23, 63, 62,100, 81, 63, 62,210, 92, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,113, 83,237, 62,187,220, 79, 62,128, 0, 0, 62,165,199,206, 62,135, 86, 9, 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,135, 86, 9, 62,187,220, 79, 62,128, 0, 0, 62,209,190,149, 62,113, 83,237,
- 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,100, 81, 63, 62,210, 92, 60,
- 62,113, 83,237, 62,187,220, 79, 62,128, 0, 0, 62,209,190,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,128, 0, 0, 62,209,190,149, 62,135, 86, 9, 62,187,220, 79, 62,141,215, 97, 62,210, 92, 60, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,198,173, 62,233, 23, 63, 62,141,215, 97, 62,210, 92, 60,
- 62,147,212,161, 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,212,161,
- 62,233, 32,221, 62,140,204,193, 62,255,252, 25, 62,134,198,173, 62,233, 23, 63, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 0, 0, 0, 62,134,198,173, 62,233, 23, 63, 62,140,204,193, 62,255,252, 25,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,140,204,193, 62,255,252, 25, 62,147,212,161,
- 62,233, 32,221, 62,153,153,129, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,172, 41,180, 62,198,230,227, 62,165,174, 39, 62,217,196, 7, 62,160, 83,184, 62,193,135, 46, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,160, 83,184, 62,193,135, 46, 62,166,248,150, 62,174, 54, 78, 62,172, 41,180,
- 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,180,111,165,
- 62,172, 41,180, 62,198,230,227, 62,166,248,150, 62,174, 54, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,166,248,150, 62,174, 54, 78, 62,160, 83,184, 62,193,135, 46, 62,154, 67,137, 62,169,150, 70, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,183, 73, 62,189,208,167, 62,154, 67,137, 62,169,150, 70,
- 62,160, 83,184, 62,193,135, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,160, 83,184,
- 62,193,135, 46, 62,153,211,171, 62,213,159,187, 62,147,183, 73, 62,189,208,167, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,141,215, 97, 62,210, 92, 60, 62,147,183, 73, 62,189,208,167, 62,153,211,171, 62,213,159,187,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153,211,171, 62,213,159,187, 62,160, 83,184,
- 62,193,135, 46, 62,165,174, 39, 62,217,196, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,159,144, 3, 62,236,207, 67, 62,153,153,129, 63, 0, 0, 0, 62,147,212,161, 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,212,161, 62,233, 32,221, 62,153,211,171, 62,213,159,187, 62,159,144, 3,
- 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,174, 39, 62,217,196, 7,
- 62,159,144, 3, 62,236,207, 67, 62,153,211,171, 62,213,159,187, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,153,211,171, 62,213,159,187, 62,147,212,161, 62,233, 32,221, 62,141,215, 97, 62,210, 92, 60, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,183, 73, 62,189,208,167, 62,141,215, 97, 62,210, 92, 60,
- 62,135, 86, 9, 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,135, 86, 9,
- 62,187,220, 79, 62,141, 61, 82, 62,166,190,112, 62,147,183, 73, 62,189,208,167, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,154, 67,137, 62,169,150, 70, 62,147,183, 73, 62,189,208,167, 62,141, 61, 82, 62,166,190,112,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141, 61, 82, 62,166,190,112, 62,135, 86, 9,
- 62,187,220, 79, 62,128, 0, 0, 62,165,199,206, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,147,163, 1, 63, 9,152, 91, 62,141,132,224, 63, 19, 29,246, 62,134,168,251, 63, 9,150,107, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,168,251, 63, 9,150,107, 62,140,204,193, 62,255,252, 25, 62,147,163, 1,
- 63, 9,152, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153,153,129, 63, 0, 0, 0,
- 62,147,163, 1, 63, 9,152, 91, 62,140,204,193, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,140,204,193, 62,255,252, 25, 62,134,168,251, 63, 9,150,107, 62,128, 0, 0, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,174, 11, 63, 9,150,107, 62,128, 0, 0, 63, 0, 0, 0,
- 62,134,168,251, 63, 9,150,107, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,168,251,
- 63, 9,150,107, 62,128, 0, 0, 63, 19, 98,209, 62,114,174, 11, 63, 9,150,107, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,100,246, 64, 63, 19, 29,246, 62,114,174, 11, 63, 9,150,107, 62,128, 0, 0, 63, 19, 98,209,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 19, 98,209, 62,134,168,251,
- 63, 9,150,107, 62,141,132,224, 63, 19, 29,246, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,135, 9, 86, 63, 28,140,130, 62,128, 0, 0, 63, 37,200, 23, 62,113,237, 83, 63, 28,140,130, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,113,237, 83, 63, 28,140,130, 62,128, 0, 0, 63, 19, 98,209, 62,135, 9, 86,
- 63, 28,140,130, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,132,224, 63, 19, 29,246,
- 62,135, 9, 86, 63, 28,140,130, 62,128, 0, 0, 63, 19, 98,209, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,128, 0, 0, 63, 19, 98,209, 62,113,237, 83, 63, 28,140,130, 62,100,246, 64, 63, 19, 29,246, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,174, 11, 63, 9,150,107, 62,100,246, 64, 63, 19, 29,246,
- 62, 88,185,255, 63, 9,152, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 88,185,255,
- 63, 9,152, 90, 62,102,102,126, 62,255,252, 25, 62,114,174, 11, 63, 9,150,107, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 0, 0, 0, 62,114,174, 11, 63, 9,150,107, 62,102,102,126, 62,255,252, 25,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,102,102,126, 62,255,252, 25, 62, 88,185,255,
- 63, 9,152, 90, 62, 76,204,254, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,223, 16, 63, 62,187,220, 62, 62,216,142,233, 62,210, 92, 49, 62,210,174,248, 62,189,208,153, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,210,174,248, 62,189,208,153, 62,217, 40,237, 62,166,190, 91, 62,223, 16, 63,
- 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62,165,199,183,
- 62,223, 16, 63, 62,187,220, 62, 62,217, 40,237, 62,166,190, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,217, 40,237, 62,166,190, 91, 62,210,174,248, 62,189,208,153, 62,204, 34,175, 62,169,150, 54, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198, 18,129, 62,193,135, 37, 62,204, 34,175, 62,169,150, 54,
- 62,210,174,248, 62,189,208,153, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,210,174,248,
- 62,189,208,153, 62,204,146,151, 62,213,159,180, 62,198, 18,129, 62,193,135, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,192,184, 21, 62,217,196, 6, 62,198, 18,129, 62,193,135, 37, 62,204,146,151, 62,213,159,180,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204,146,151, 62,213,159,180, 62,210,174,248,
- 62,189,208,153, 62,216,142,233, 62,210, 92, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,210,145,170, 62,233, 32,214, 62,204,204,202, 63, 0, 0, 0, 62,198,214, 65, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,214, 65, 62,236,207, 67, 62,204,146,151, 62,213,159,180, 62,210,145,170,
- 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,142,233, 62,210, 92, 49,
- 62,210,145,170, 62,233, 32,214, 62,204,146,151, 62,213,159,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,204,146,151, 62,213,159,180, 62,198,214, 65, 62,236,207, 67, 62,192,184, 21, 62,217,196, 6, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198, 18,129, 62,193,135, 37, 62,192,184, 21, 62,217,196, 6,
- 62,186, 60,127, 62,198,230,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,186, 60,127,
- 62,198,230,225, 62,191,109,154, 62,174, 54, 68, 62,198, 18,129, 62,193,135, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,204, 34,175, 62,169,150, 54, 62,198, 18,129, 62,193,135, 37, 62,191,109,154, 62,174, 54, 68,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,191,109,154, 62,174, 54, 68, 62,186, 60,127,
- 62,198,230,225, 62,179, 51, 21, 62,180,111,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,210,145,170, 62,233, 32,214, 62,216,142,233, 62,210, 92, 49, 62,223,159,171, 62,233, 23, 57, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,159,171, 62,233, 23, 57, 62,217,153,154, 62,255,252, 24, 62,210,145,170,
- 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204,204,202, 63, 0, 0, 0,
- 62,210,145,170, 62,233, 32,214, 62,217,153,154, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,217,153,154, 62,255,252, 24, 62,223,159,171, 62,233, 23, 57, 62,230,102,101, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 45, 20, 62,233, 23, 55, 62,230,102,101, 63, 0, 0, 0,
- 62,223,159,171, 62,233, 23, 57, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,159,171,
- 62,233, 23, 57, 62,230,102, 88, 62,209,190,135, 62,237, 45, 20, 62,233, 23, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,244, 61,199, 62,210, 92, 46, 62,237, 45, 20, 62,233, 23, 55, 62,230,102, 88, 62,209,190,135,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 88, 62,209,190,135, 62,223,159,171,
- 62,233, 23, 57, 62,216,142,233, 62,210, 92, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,223, 16, 63, 62,187,220, 62, 62,230,102, 72, 62,165,199,183, 62,237,188, 99, 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237,188, 99, 62,187,220, 60, 62,230,102, 88, 62,209,190,135, 62,223, 16, 63,
- 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,142,233, 62,210, 92, 49,
- 62,223, 16, 63, 62,187,220, 62, 62,230,102, 88, 62,209,190,135, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,230,102, 88, 62,209,190,135, 62,237,188, 99, 62,187,220, 60, 62,244, 61,199, 62,210, 92, 46, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 45, 20, 62,233, 23, 55, 62,244, 61,199, 62,210, 92, 46,
- 62,250, 59, 21, 62,233, 32,213, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 59, 21,
- 62,233, 32,213, 62,243, 51, 53, 62,255,252, 24, 62,237, 45, 20, 62,233, 23, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,101, 63, 0, 0, 0, 62,237, 45, 20, 62,233, 23, 55, 62,243, 51, 53, 62,255,252, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243, 51, 53, 62,255,252, 24, 62,250, 59, 21,
- 62,233, 32,213, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 9, 72, 17, 62,198,230,227, 63, 6, 10, 77, 62,217,196, 6, 63, 3, 93, 15, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 93, 15, 62,193,135, 36, 63, 6,175,123, 62,174, 54, 65, 63, 9, 72, 17,
- 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,180,111,160,
- 63, 9, 72, 17, 62,198,230,227, 63, 6,175,123, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 6,175,123, 62,174, 54, 65, 63, 3, 93, 15, 62,193,135, 36, 63, 0, 84,241, 62,169,150, 52, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 29,169, 62,189,208,150, 63, 0, 84,241, 62,169,150, 52,
- 63, 3, 93, 15, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 93, 15,
- 62,193,135, 36, 63, 0, 29, 12, 62,213,159,179, 62,250, 29,169, 62,189,208,150, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,244, 61,199, 62,210, 92, 46, 62,250, 29,169, 62,189,208,150, 63, 0, 29, 12, 62,213,159,179,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 29, 12, 62,213,159,179, 63, 3, 93, 15,
- 62,193,135, 36, 63, 6, 10, 77, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 2,251, 62, 62,236,207, 67, 63, 0, 0, 0, 63, 0, 0, 0, 62,250, 59, 21, 62,233, 32,213, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 59, 21, 62,233, 32,213, 63, 0, 29, 12, 62,213,159,179, 63, 2,251, 62,
- 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 10, 77, 62,217,196, 6,
- 63, 2,251, 62, 62,236,207, 67, 63, 0, 29, 12, 62,213,159,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 0, 29, 12, 62,213,159,179, 62,250, 59, 21, 62,233, 32,213, 62,244, 61,199, 62,210, 92, 46, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 29,169, 62,189,208,150, 62,244, 61,199, 62,210, 92, 46,
- 62,237,188, 99, 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237,188, 99,
- 62,187,220, 60, 62,243,163,164, 62,166,190, 89, 62,250, 29,169, 62,189,208,150, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 84,241, 62,169,150, 52, 62,250, 29,169, 62,189,208,150, 62,243,163,164, 62,166,190, 89,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,163,164, 62,166,190, 89, 62,237,188, 99,
- 62,187,220, 60, 62,230,102, 72, 62,165,199,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,250, 9,132, 63, 9,152, 94, 62,243,235,101, 63, 19, 29,252, 62,237, 15,114, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 15,114, 63, 9,150,113, 62,243, 51, 53, 62,255,252, 24, 62,250, 9,132,
- 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
- 62,250, 9,132, 63, 9,152, 94, 62,243, 51, 53, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,243, 51, 53, 62,255,252, 24, 62,237, 15,114, 63, 9,150,113, 62,230,102,101, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,189,103, 63, 9,150,112, 62,230,102,101, 63, 0, 0, 0,
- 62,237, 15,114, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 15,114,
- 63, 9,150,113, 62,230,102,117, 63, 19, 98,220, 62,223,189,103, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,216,225,128, 63, 19, 29,254, 62,223,189,103, 63, 9,150,112, 62,230,102,117, 63, 19, 98,220,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,117, 63, 19, 98,220, 62,237, 15,114,
- 63, 9,150,113, 62,243,235,101, 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,237,111,222, 63, 28,140,143, 62,230,102,129, 63, 37,200, 48, 62,223, 93, 22, 63, 28,140,145, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223, 93, 22, 63, 28,140,145, 62,230,102,117, 63, 19, 98,220, 62,237,111,222,
- 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,235,101, 63, 19, 29,252,
- 62,237,111,222, 63, 28,140,143, 62,230,102,117, 63, 19, 98,220, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,230,102,117, 63, 19, 98,220, 62,223, 93, 22, 63, 28,140,145, 62,216,225,128, 63, 19, 29,254, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,189,103, 63, 9,150,112, 62,216,225,128, 63, 19, 29,254,
- 62,210,195, 85, 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,210,195, 85,
- 63, 9,152, 96, 62,217,153,154, 62,255,252, 24, 62,223,189,103, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,101, 63, 0, 0, 0, 62,223,189,103, 63, 9,150,112, 62,217,153,154, 62,255,252, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,217,153,154, 62,255,252, 24, 62,210,195, 85,
- 63, 9,152, 96, 62,204,204,202, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 34,187, 97, 62,187,220, 72, 63, 31,122,178, 62,210, 92, 55, 63, 28,138,186, 62,189,208,155, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,138,186, 62,189,208,155, 63, 31,199,185, 62,166,190, 96, 63, 34,187, 97,
- 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,107, 62,165,199,201,
- 63, 34,187, 97, 62,187,220, 72, 63, 31,199,185, 62,166,190, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 31,199,185, 62,166,190, 96, 63, 28,138,186, 62,189,208,155, 63, 25, 68,150, 62,169,150, 54, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22, 60,123, 62,193,135, 36, 63, 25, 68,150, 62,169,150, 54,
- 63, 28,138,186, 62,189,208,155, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,138,186,
- 62,189,208,155, 63, 25,124,133, 62,213,159,181, 63, 22, 60,123, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,143, 64, 62,217,196, 4, 63, 22, 60,123, 62,193,135, 36, 63, 25,124,133, 62,213,159,181,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,124,133, 62,213,159,181, 63, 28,138,186,
- 62,189,208,155, 63, 31,122,178, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 28,124, 14, 62,233, 32,218, 63, 25,153,155, 63, 0, 0, 0, 63, 22,158, 86, 62,236,207, 65, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,158, 86, 62,236,207, 65, 63, 25,124,133, 62,213,159,181, 63, 28,124, 14,
- 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,122,178, 62,210, 92, 55,
- 63, 28,124, 14, 62,233, 32,218, 63, 25,124,133, 62,213,159,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 25,124,133, 62,213,159,181, 63, 22,158, 86, 62,236,207, 65, 63, 19,143, 64, 62,217,196, 4, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22, 60,123, 62,193,135, 36, 63, 19,143, 64, 62,217,196, 4,
- 63, 16, 81,117, 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 81,117,
- 62,198,230,223, 63, 18,234, 7, 62,174, 54, 65, 63, 22, 60,123, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 25, 68,150, 62,169,150, 54, 63, 22, 60,123, 62,193,135, 36, 63, 18,234, 7, 62,174, 54, 65,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,234, 7, 62,174, 54, 65, 63, 16, 81,117,
- 62,198,230,223, 63, 12,204,191, 62,180,111,160, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 28,124, 14, 62,233, 32,218, 63, 31,122,178, 62,210, 92, 55, 63, 35, 3, 17, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 3, 17, 62,233, 23, 58, 63, 32, 0, 2, 62,255,252, 24, 63, 28,124, 14,
- 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,153,155, 63, 0, 0, 0,
- 63, 28,124, 14, 62,233, 32,218, 63, 32, 0, 2, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 32, 0, 2, 62,255,252, 24, 63, 35, 3, 17, 62,233, 23, 58, 63, 38,102,109, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,201,200, 62,233, 23, 58, 63, 38,102,109, 63, 0, 0, 0,
- 63, 35, 3, 17, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 3, 17,
- 62,233, 23, 58, 63, 38,102,109, 62,209,190,143, 63, 41,201,200, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 82, 38, 62,210, 92, 55, 63, 41,201,200, 62,233, 23, 58, 63, 38,102,109, 62,209,190,143,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109, 62,209,190,143, 63, 35, 3, 17,
- 62,233, 23, 58, 63, 31,122,178, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 34,187, 97, 62,187,220, 72, 63, 38,102,107, 62,165,199,201, 63, 42, 17,118, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42, 17,118, 62,187,220, 72, 63, 38,102,109, 62,209,190,143, 63, 34,187, 97,
- 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,122,178, 62,210, 92, 55,
- 63, 34,187, 97, 62,187,220, 72, 63, 38,102,109, 62,209,190,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 38,102,109, 62,209,190,143, 63, 42, 17,118, 62,187,220, 72, 63, 45, 82, 38, 62,210, 92, 55, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,201,200, 62,233, 23, 58, 63, 45, 82, 38, 62,210, 92, 55,
- 63, 48, 80,204, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 80,204,
- 62,233, 32,218, 63, 44,204,215, 62,255,252, 23, 63, 41,201,200, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109, 63, 0, 0, 0, 63, 41,201,200, 62,233, 23, 58, 63, 44,204,215, 62,255,252, 23,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44,204,215, 62,255,252, 23, 63, 48, 80,204,
- 62,233, 32,218, 63, 51, 51, 63, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 60,123, 85, 62,198,230,253, 63, 57, 61,144, 62,217,196, 19, 63, 54,144, 86, 62,193,135, 68, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,144, 86, 62,193,135, 68, 63, 57,226,196, 62,174, 54,114, 63, 60,123, 85,
- 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,180,111,211,
- 63, 60,123, 85, 62,198,230,253, 63, 57,226,196, 62,174, 54,114, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 57,226,196, 62,174, 54,114, 63, 54,144, 86, 62,193,135, 68, 63, 51,136, 58, 62,169,150, 90, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 66, 27, 62,189,208,173, 63, 51,136, 58, 62,169,150, 90,
- 63, 54,144, 86, 62,193,135, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,144, 86,
- 62,193,135, 68, 63, 51, 80, 80, 62,213,159,192, 63, 48, 66, 27, 62,189,208,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 82, 38, 62,210, 92, 55, 63, 48, 66, 27, 62,189,208,173, 63, 51, 80, 80, 62,213,159,192,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 80, 80, 62,213,159,192, 63, 54,144, 86,
- 62,193,135, 68, 63, 57, 61,144, 62,217,196, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 54, 46,128, 62,236,207, 75, 63, 51, 51, 63, 63, 0, 0, 0, 63, 48, 80,204, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 80,204, 62,233, 32,218, 63, 51, 80, 80, 62,213,159,192, 63, 54, 46,128,
- 62,236,207, 75, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 61,144, 62,217,196, 19,
- 63, 54, 46,128, 62,236,207, 75, 63, 51, 80, 80, 62,213,159,192, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 51, 80, 80, 62,213,159,192, 63, 48, 80,204, 62,233, 32,218, 63, 45, 82, 38, 62,210, 92, 55, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 66, 27, 62,189,208,173, 63, 45, 82, 38, 62,210, 92, 55,
- 63, 42, 17,118, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42, 17,118,
- 62,187,220, 72, 63, 45, 5, 26, 62,166,190,117, 63, 48, 66, 27, 62,189,208,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 51,136, 58, 62,169,150, 90, 63, 48, 66, 27, 62,189,208,173, 63, 45, 5, 26, 62,166,190,117,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 5, 26, 62,166,190,117, 63, 42, 17,118,
- 62,187,220, 72, 63, 38,102,107, 62,165,199,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 48, 55,255, 63, 9,152, 94, 63, 45, 40,237, 63, 19, 29,252, 63, 41,186,242, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,186,242, 63, 9,150,112, 63, 44,204,215, 62,255,252, 23, 63, 48, 55,255,
- 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 51, 63, 63, 0, 0, 0,
- 63, 48, 55,255, 63, 9,152, 94, 63, 44,204,215, 62,255,252, 23, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 44,204,215, 62,255,252, 23, 63, 41,186,242, 63, 9,150,112, 63, 38,102,109, 63, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 17,235, 63, 9,150,112, 63, 38,102,109, 63, 0, 0, 0,
- 63, 41,186,242, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,186,242,
- 63, 9,150,112, 63, 38,102,113, 63, 19, 98,219, 63, 35, 17,235, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,163,245, 63, 19, 29,253, 63, 35, 17,235, 63, 9,150,112, 63, 38,102,113, 63, 19, 98,219,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,113, 63, 19, 98,219, 63, 41,186,242,
- 63, 9,150,112, 63, 45, 40,237, 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 41,235, 38, 63, 28,140,141, 63, 38,102,117, 63, 37,200, 45, 63, 34,225,192, 63, 28,140,142, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34,225,192, 63, 28,140,142, 63, 38,102,113, 63, 19, 98,219, 63, 41,235, 38,
- 63, 28,140,141, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 40,237, 63, 19, 29,252,
- 63, 41,235, 38, 63, 28,140,141, 63, 38,102,113, 63, 19, 98,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 38,102,113, 63, 19, 98,219, 63, 34,225,192, 63, 28,140,142, 63, 31,163,245, 63, 19, 29,253, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 17,235, 63, 9,150,112, 63, 31,163,245, 63, 19, 29,253,
- 63, 28,148,223, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,148,223,
- 63, 9,152, 94, 63, 32, 0, 2, 62,255,252, 24, 63, 35, 17,235, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109, 63, 0, 0, 0, 63, 35, 17,235, 63, 9,150,112, 63, 32, 0, 2, 62,255,252, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32, 0, 2, 62,255,252, 24, 63, 28,148,223,
- 63, 9,152, 94, 63, 25,153,155, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,107,129,188, 62,128, 45, 66, 63, 99, 71,235, 62,120, 76,222, 63,106, 37, 94, 62, 83, 97, 84, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,106, 37, 94, 62, 83, 97, 84, 63,115, 51, 65, 62, 97,151,248, 63,107,129,188,
- 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,135, 83,151,
- 63,107,129,188, 62,128, 45, 66, 63,115, 51, 65, 62, 97,151,248, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,115, 51, 65, 62, 97,151,248, 63,106, 37, 94, 62, 83, 97, 84, 63,115, 51, 65, 62, 52,111, 90, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,107,129,188, 62,128, 45, 66, 63,115, 51, 65, 62,135, 83,151,
- 63,108,123,142, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,123,142,
- 62,151,144,169, 63,101, 50,231, 62,146,201, 17, 63,107,129,188, 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 71,235, 62,120, 76,222, 63,107,129,188, 62,128, 45, 66, 63,101, 50,231, 62,146,201, 17,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,101, 50,231, 62,146,201, 17, 63,108,123,142,
- 62,151,144,169, 63,102,187,106, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 96, 56, 71, 62,166,190, 99, 63, 89,153,149, 62,165,199,201, 63, 93,238, 22, 62,144,101,243, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93,238, 22, 62,144,101,243, 63,101, 50,231, 62,146,201, 17, 63, 96, 56, 71,
- 62,166,190, 99, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,187,106, 62,169,150, 54,
- 63, 96, 56, 71, 62,166,190, 99, 63,101, 50,231, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,101, 50,231, 62,146,201, 17, 63, 93,238, 22, 62,144,101,243, 63, 99, 71,235, 62,120, 76,222, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,109, 21,249, 62,174, 54, 65, 63,102,187,106, 62,169,150, 54,
- 63,108,123,142, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,123,142,
- 62,151,144,169, 63,115, 51, 65, 62,157,231, 93, 63,109, 21,249, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,180,111,160, 63,109, 21,249, 62,174, 54, 65, 63,115, 51, 65, 62,157,231, 93,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,157,231, 93, 63,108,123,142,
- 62,151,144,169, 63,115, 51, 65, 62,135, 83,151, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 89,153,149, 62,115,162, 79, 63, 99, 71,235, 62,120, 76,222, 63, 93,238, 22, 62,144,101,243, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93,238, 22, 62,144,101,243, 63, 85, 69, 21, 62,144,102, 3, 63, 89,153,149,
- 62,115,162, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,235, 68, 62,120, 77, 37,
- 63, 89,153,149, 62,115,162, 79, 63, 85, 69, 21, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 85, 69, 21, 62,144,102, 3, 63, 93,238, 22, 62,144,101,243, 63, 89,153,149, 62,165,199,201, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,149, 62,115,162, 79, 63, 79,235, 68, 62,120, 77, 37,
- 63, 83,186, 24, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83,186, 24,
- 62, 70,176,245, 63, 95,121, 22, 62, 70,176,204, 63, 89,153,149, 62,115,162, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 71,235, 62,120, 76,222, 63, 89,153,149, 62,115,162, 79, 63, 95,121, 22, 62, 70,176,204,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,121, 22, 62, 70,176,204, 63, 83,186, 24,
- 62, 70,176,245, 63, 89,153,152, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,103,119, 61, 62, 30,253,179, 63,115, 51, 65, 62, 52,111, 90, 63,106, 37, 94, 62, 83, 97, 84, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,106, 37, 94, 62, 83, 97, 84, 63, 95,121, 22, 62, 70,176,204, 63,103,119, 61,
- 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,152, 62, 23, 31,198,
- 63,103,119, 61, 62, 30,253,179, 63, 95,121, 22, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 95,121, 22, 62, 70,176,204, 63,106, 37, 94, 62, 83, 97, 84, 63, 99, 71,235, 62,120, 76,222, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 75,187,248, 62, 30,253,241, 63, 89,153,152, 62, 23, 31,198,
- 63, 83,186, 24, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83,186, 24,
- 62, 70,176,245, 63, 73, 13,214, 62, 83, 97,181, 63, 75,187,248, 62, 30,253,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 52,111,202, 63, 75,187,248, 62, 30,253,241, 63, 73, 13,214, 62, 83, 97,181,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73, 13,214, 62, 83, 97,181, 63, 83,186, 24,
- 62, 70,176,245, 63, 79,235, 68, 62,120, 77, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 89,153,152, 61,147, 41,111, 63, 64, 0, 0, 61,180,111,195, 63, 64, 0, 0, 61, 52, 65,111, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 61, 52, 65,111, 63,117, 49, 38, 61, 52, 64,225, 63, 89,153,152,
- 61,147, 41,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 61,180,111, 83,
- 63, 89,153,152, 61,147, 41,111, 63,117, 49, 38, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,117, 49, 38, 61, 52, 64,225, 63, 64, 0, 0, 61, 52, 65,111, 63,121,222,208,178,239, 9,102, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,152, 61,147, 41,111, 63,115, 51, 65, 61,180,111, 83,
- 63, 99, 51,172, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 51,172,
- 61,231, 46, 48, 63, 79,255,135, 61,231, 46,120, 63, 89,153,152, 61,147, 41,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 61,180,111,195, 63, 89,153,152, 61,147, 41,111, 63, 79,255,135, 61,231, 46,120,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,255,135, 61,231, 46,120, 63, 99, 51,172,
- 61,231, 46, 48, 63, 89,153,152, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 75,187,248, 62, 30,253,241, 63, 64, 0, 0, 62, 52,111,202, 63, 64, 0, 0, 62, 7, 71, 24, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 7, 71, 24, 63, 79,255,135, 61,231, 46,120, 63, 75,187,248,
- 62, 30,253,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,152, 62, 23, 31,198,
- 63, 75,187,248, 62, 30,253,241, 63, 79,255,135, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 79,255,135, 61,231, 46,120, 63, 64, 0, 0, 62, 7, 71, 24, 63, 64, 0, 0, 61,180,111,195, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,103,119, 61, 62, 30,253,179, 63, 89,153,152, 62, 23, 31,198,
- 63, 99, 51,172, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 51,172,
- 61,231, 46, 48, 63,115, 51, 66, 62, 7, 70,199, 63,103,119, 61, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 52,111, 90, 63,103,119, 61, 62, 30,253,179, 63,115, 51, 66, 62, 7, 70,199,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 66, 62, 7, 70,199, 63, 99, 51,172,
- 61,231, 46, 48, 63,115, 51, 65, 61,180,111, 83, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 71,177,122, 62,128, 45,120, 63, 64, 0, 0, 62,135, 83,218, 63, 64, 0, 0, 62, 97,152,115, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 97,152,115, 63, 73, 13,214, 62, 83, 97,181, 63, 71,177,122,
- 62,128, 45,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,235, 68, 62,120, 77, 37,
- 63, 71,177,122, 62,128, 45,120, 63, 73, 13,214, 62, 83, 97,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 73, 13,214, 62, 83, 97,181, 63, 64, 0, 0, 62, 97,152,115, 63, 64, 0, 0, 62, 52,111,202, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 71,177,122, 62,128, 45,120, 63, 79,235, 68, 62,120, 77, 37,
- 63, 78, 0, 72, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 78, 0, 72,
- 62,146,201, 52, 63, 70,183,169, 62,151,144,219, 63, 71,177,122, 62,128, 45,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,135, 83,218, 63, 71,177,122, 62,128, 45,120, 63, 70,183,169, 62,151,144,219,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,183,169, 62,151,144,219, 63, 78, 0, 72,
- 62,146,201, 52, 63, 76,119,198, 62,169,150, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 70, 29, 61, 62,174, 54,114, 63, 64, 0, 0, 62,180,111,211, 63, 64, 0, 0, 62,157,231,162, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,157,231,162, 63, 70,183,169, 62,151,144,219, 63, 70, 29, 61,
- 62,174, 54,114, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,119,198, 62,169,150, 90,
- 63, 70, 29, 61, 62,174, 54,114, 63, 70,183,169, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 70,183,169, 62,151,144,219, 63, 64, 0, 0, 62,157,231,162, 63, 64, 0, 0, 62,135, 83,218, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,250,230, 62,166,190,117, 63, 76,119,198, 62,169,150, 90,
- 63, 78, 0, 72, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 78, 0, 72,
- 62,146,201, 52, 63, 85, 69, 21, 62,144,102, 3, 63, 82,250,230, 62,166,190,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,149, 62,165,199,201, 63, 82,250,230, 62,166,190,117, 63, 85, 69, 21, 62,144,102, 3,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 85, 69, 21, 62,144,102, 3, 63, 78, 0, 72,
- 62,146,201, 52, 63, 79,235, 68, 62,120, 77, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,245,167,179, 62,128, 45, 72, 61,179,217, 94, 62,120, 76,222, 61,234,196,202, 62, 83, 97,100, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,234,196,202, 62, 83, 97,100, 62, 25,153,212, 62, 97,152, 2, 61,245,167,179,
- 62,128, 45, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62,135, 83,156,
- 61,245,167,179, 62,128, 45, 72, 62, 25,153,212, 62, 97,152, 2, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 25,153,212, 62, 97,152, 2, 61,234,196,202, 62, 83, 97,100, 62, 25,153,214, 62, 52,111,106, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,245,167,179, 62,128, 45, 72, 62, 25,153,214, 62,135, 83,156,
- 61,253,118, 62, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,253,118, 62,
- 62,151,144,174, 61,195, 49, 53, 62,146,201, 17, 61,245,167,179, 62,128, 45, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,179,217, 94, 62,120, 76,222, 61,245,167,179, 62,128, 45, 72, 61,195, 49, 53, 62,146,201, 17,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,195, 49, 53, 62,146,201, 17, 61,253,118, 62,
- 62,151,144,174, 61,207,117, 70, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,155, 92, 79, 62,166,190, 91, 61, 76,205,194, 62,165,199,186, 61,137, 10,212, 62,144,101,238, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,137, 10,212, 62,144,101,238, 61,195, 49, 53, 62,146,201, 17, 61,155, 92, 79,
- 62,166,190, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,207,117, 70, 62,169,150, 54,
- 61,155, 92, 79, 62,166,190, 91, 61,195, 49, 53, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,195, 49, 53, 62,146,201, 17, 61,137, 10,212, 62,144,101,238, 61,179,217, 94, 62,120, 76,222, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 1, 36,204, 62,174, 54, 70, 61,207,117, 70, 62,169,150, 54,
- 61,253,118, 62, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,253,118, 62,
- 62,151,144,174, 62, 25,153,213, 62,157,231,100, 62, 1, 36,204, 62,174, 54, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62,180,111,165, 62, 1, 36,204, 62,174, 54, 70, 62, 25,153,213, 62,157,231,100,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,213, 62,157,231,100, 61,253,118, 62,
- 62,151,144,174, 62, 25,153,214, 62,135, 83,156, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61, 76,205,188, 62,115,162, 53, 61,179,217, 94, 62,120, 76,222, 61,137, 10,212, 62,144,101,238, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,137, 10,212, 62,144,101,238, 61, 7,133,207, 62,144,101,236, 61, 76,205,188,
- 62,115,162, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60, 71,162,255, 62,120, 76,216,
- 61, 76,205,188, 62,115,162, 53, 61, 7,133,207, 62,144,101,236, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61, 7,133,207, 62,144,101,236, 61,137, 10,212, 62,144,101,238, 61, 76,205,194, 62,165,199,186, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,188, 62,115,162, 53, 60, 71,162,255, 62,120, 76,216,
- 60,221,171,190, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,221,171,190,
- 62, 70,176,194, 61,149, 98,194, 62, 70,176,194, 61, 76,205,188, 62,115,162, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61,179,217, 94, 62,120, 76,222, 61, 76,205,188, 62,115,162, 53, 61,149, 98,194, 62, 70,176,194,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,149, 98,194, 62, 70,176,194, 60,221,171,190,
- 62, 70,176,194, 61, 76,205,193, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 61,213, 83,198, 62, 30,253,179, 62, 25,153,214, 62, 52,111,106, 61,234,196,202, 62, 83, 97,100, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,234,196,202, 62, 83, 97,100, 61,149, 98,194, 62, 70,176,194, 61,213, 83,198,
- 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,193, 62, 23, 31,168,
- 61,213, 83,198, 62, 30,253,179, 61,149, 98,194, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 61,149, 98,194, 62, 70,176,194, 61,234,196,202, 62, 83, 97,100, 61,179,217, 94, 62,120, 76,222, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,126,239, 59, 62, 30,253,174, 63,131,105,154, 62, 23, 31,168,
- 63,131,118,175, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,131,118,175,
- 62, 70,176,194, 63,124, 65, 30, 62, 83, 97, 90, 63,126,239, 59, 62, 30,253,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 52,111, 90, 63,126,239, 59, 62, 30,253,174, 63,124, 65, 30, 62, 83, 97, 90,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124, 65, 30, 62, 83, 97, 90, 63,131,118,175,
- 62, 70,176,194, 63,129,143, 70, 62,120, 76,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,131,105,156, 61,147, 41,101, 63,115, 51, 65, 61,180,111, 83, 63,117, 49, 38, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,117, 49, 38, 61, 52, 64,225, 63,135,148,232, 60,125,158,144, 63,131,105,156,
- 61,147, 41,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,215, 61,180,111,104,
- 61,128,245,122, 61,147, 41,101, 62, 25,153,224, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,135,148,232, 60,125,158,144, 63,117, 49, 38, 61, 52, 64,225, 63,121,222,208,178,239, 9,102, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,128,245,122, 61,147, 41,101, 62, 25,153,215, 61,180,111,104,
- 61,179, 55, 89, 61,231, 46, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,179, 55, 89,
- 61,231, 46, 38, 60,208,147, 96, 61,231, 46, 48, 61,128,245,122, 61,147, 41,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 61,180,111, 83, 63,131,105,156, 61,147, 41,101, 63,129,153,102, 61,231, 46, 48,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,208,147, 96, 61,231, 46, 48, 61,179, 55, 89,
- 61,231, 46, 38, 61, 76,205,193, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,126,239, 59, 62, 30,253,174, 63,115, 51, 65, 62, 52,111, 90, 63,115, 51, 66, 62, 7, 70,199, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 66, 62, 7, 70,199, 63,129,153,102, 61,231, 46, 48, 63,126,239, 59,
- 62, 30,253,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,131,105,154, 62, 23, 31,168,
- 63,126,239, 59, 62, 30,253,174, 63,129,153,102, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,129,153,102, 61,231, 46, 48, 63,115, 51, 66, 62, 7, 70,199, 63,115, 51, 65, 61,180,111, 83, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,213, 83,198, 62, 30,253,179, 61, 76,205,193, 62, 23, 31,168,
- 61,179, 55, 89, 61,231, 46, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,179, 55, 89,
- 61,231, 46, 38, 62, 25,153,217, 62, 7, 70,204, 61,213, 83,198, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62, 52,111,106, 61,213, 83,198, 62, 30,253,179, 62, 25,153,217, 62, 7, 70,204,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,217, 62, 7, 70,204, 61,179, 55, 89,
- 61,231, 46, 38, 62, 25,153,215, 61,180,111,104, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,122,228,192, 62,128, 45, 66, 63,115, 51, 65, 62,135, 83,151, 63,115, 51, 65, 62, 97,151,248, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 97,151,248, 63,124, 65, 30, 62, 83, 97, 90, 63,122,228,192,
- 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,129,143, 70, 62,120, 76,216,
- 63,122,228,192, 62,128, 45, 66, 63,124, 65, 30, 62, 83, 97, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,124, 65, 30, 62, 83, 97, 90, 63,115, 51, 65, 62, 97,151,248, 63,115, 51, 65, 62, 52,111, 90, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,122,228,192, 62,128, 45, 66, 63,129,143, 70, 62,120, 76,216,
- 63,128,153,201, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,128,153,201,
- 62,146,201, 14, 63,121,234,239, 62,151,144,169, 63,122,228,192, 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,135, 83,151, 63,122,228,192, 62,128, 45, 66, 63,121,234,239, 62,151,144,169,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,234,239, 62,151,144,169, 63,128,153,201,
- 62,146,201, 14, 63,127,171, 15, 62,169,150, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63,121, 80,133, 62,174, 54, 65, 63,115, 51, 65, 62,180,111,160, 63,115, 51, 65, 62,157,231, 93, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,157,231, 93, 63,121,234,239, 62,151,144,169, 63,121, 80,133,
- 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,127,171, 15, 62,169,150, 52,
- 63,121, 80,133, 62,174, 54, 65, 63,121,234,239, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63,121,234,239, 62,151,144,169, 63,115, 51, 65, 62,157,231, 93, 63,115, 51, 65, 62,135, 83,151, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,131, 23, 23, 62,166,190, 89, 63,127,171, 15, 62,169,150, 52,
- 63,128,153,201, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 59,153,200,136,
- 62,146,201, 14, 61, 7,133,207, 62,144,101,236, 60,197,197,195, 62,166,190, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,194, 62,165,199,186, 60,197,197,195, 62,166,190, 89, 61, 7,133,207, 62,144,101,236,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 7,133,207, 62,144,101,236, 59,153,200,136,
- 62,146,201, 14, 60, 71,162,255, 62,120, 76,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,163,208, 32, 62,128, 45, 79, 62,147, 92,147, 62,120, 76,252, 62,161, 23,102, 62, 83, 97,115, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,161, 23,102, 62, 83, 97,115, 62,179, 51, 22, 62, 97,152, 2, 62,163,208, 32,
- 62,128, 45, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,135, 83,156,
- 62,163,208, 32, 62,128, 45, 79, 62,179, 51, 22, 62, 97,152, 2, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,179, 51, 22, 62, 97,152, 2, 62,161, 23,102, 62, 83, 97,115, 62,179, 51, 21, 62, 52,111,101, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,163,208, 32, 62,128, 45, 79, 62,179, 51, 21, 62,135, 83,156,
- 62,165,195,194, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,195,194,
- 62,151,144,181, 62,151, 50,134, 62,146,201, 29, 62,163,208, 32, 62,128, 45, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,147, 92,147, 62,120, 76,252, 62,163,208, 32, 62,128, 45, 79, 62,151, 50,134, 62,146,201, 29,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,151, 50,134, 62,146,201, 29, 62,165,195,194,
- 62,151,144,181, 62,154, 67,137, 62,169,150, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,141, 61, 82, 62,166,190,112, 62,128, 0, 0, 62,165,199,206, 62,136,168,247, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,136,168,247, 62,144,102, 3, 62,151, 50,134, 62,146,201, 29, 62,141, 61, 82,
- 62,166,190,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,154, 67,137, 62,169,150, 70,
- 62,141, 61, 82, 62,166,190,112, 62,151, 50,134, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,151, 50,134, 62,146,201, 29, 62,136,168,247, 62,144,102, 3, 62,147, 92,147, 62,120, 76,252, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,166,248,150, 62,174, 54, 78, 62,154, 67,137, 62,169,150, 70,
- 62,165,195,194, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,195,194,
- 62,151,144,181, 62,179, 51, 21, 62,157,231, 98, 62,166,248,150, 62,174, 54, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,180,111,165, 62,166,248,150, 62,174, 54, 78, 62,179, 51, 21, 62,157,231, 98,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,157,231, 98, 62,165,195,194,
- 62,151,144,181, 62,179, 51, 21, 62,135, 83,156, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,128, 0, 0, 62,115,162, 89, 62,147, 92,147, 62,120, 76,252, 62,136,168,247, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,136,168,247, 62,144,102, 3, 62,110,174, 18, 62,144,102, 3, 62,128, 0, 0,
- 62,115,162, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 89, 70,217, 62,120, 76,252,
- 62,128, 0, 0, 62,115,162, 89, 62,110,174, 18, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,110,174, 18, 62,144,102, 3, 62,136,168,247, 62,144,102, 3, 62,128, 0, 0, 62,165,199,206, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,115,162, 89, 62, 89, 70,217, 62,120, 76,252,
- 62,104,130, 30, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,104,130, 30,
- 62, 70,176,230, 62,139,190,241, 62, 70,176,230, 62,128, 0, 0, 62,115,162, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,147, 92,147, 62,120, 76,252, 62,128, 0, 0, 62,115,162, 89, 62,139,190,241, 62, 70,176,230,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,139,190,241, 62, 70,176,230, 62,104,130, 30,
- 62, 70,176,230, 62,128, 0, 0, 62, 23, 31,208, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,155,187, 41, 62, 30,253,205, 62,179, 51, 21, 62, 52,111,101, 62,161, 23,102, 62, 83, 97,115, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,161, 23,102, 62, 83, 97,115, 62,139,190,241, 62, 70,176,230, 62,155,187, 41,
- 62, 30,253,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62, 23, 31,208,
- 62,155,187, 41, 62, 30,253,205, 62,139,190,241, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,139,190,241, 62, 70,176,230, 62,161, 23,102, 62, 83, 97,115, 62,147, 92,147, 62,120, 76,252, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 72,137,174, 62, 30,253,205, 62,128, 0, 0, 62, 23, 31,208,
- 62,104,130, 30, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,104,130, 30,
- 62, 70,176,230, 62, 61,209, 51, 62, 83, 97,115, 62, 72,137,174, 62, 30,253,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62, 52,111,106, 62, 72,137,174, 62, 30,253,205, 62, 61,209, 51, 62, 83, 97,115,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 61,209, 51, 62, 83, 97,115, 62,104,130, 30,
- 62, 70,176,230, 62, 89, 70,217, 62,120, 76,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,127,255,255, 61,147, 41,141, 62, 25,153,215, 61,180,111,104, 62, 25,153,224, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,224, 61, 52, 64,225, 62,179, 51, 15, 61, 52, 64,225, 62,127,255,255,
- 61,147, 41,141, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 20, 61,180,111,104,
- 62,127,255,255, 61,147, 41,141, 62,179, 51, 15, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,179, 51, 15, 61, 52, 64,225, 62, 25,153,224, 61, 52, 64,225, 62,161,175,144,178,239, 9,102, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,127,255,255, 61,147, 41,141, 62,179, 51, 20, 61,180,111,104,
- 62,147, 52, 12, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147, 52, 12,
- 61,231, 46,109, 62, 89,151,231, 61,231, 46,109, 62,127,255,255, 61,147, 41,141, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,215, 61,180,111,104, 62,127,255,255, 61,147, 41,141, 62, 89,151,231, 61,231, 46,109,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 89,151,231, 61,231, 46,109, 62,147, 52, 12,
- 61,231, 46,109, 62,128, 0, 0, 62, 23, 31,208, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 72,137,174, 62, 30,253,205, 62, 25,153,214, 62, 52,111,106, 62, 25,153,217, 62, 7, 70,204, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,217, 62, 7, 70,204, 62, 89,151,231, 61,231, 46,109, 62, 72,137,174,
- 62, 30,253,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62, 23, 31,208,
- 62, 72,137,174, 62, 30,253,205, 62, 89,151,231, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 89,151,231, 61,231, 46,109, 62, 25,153,217, 62, 7, 70,204, 62, 25,153,215, 61,180,111,104, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,155,187, 41, 62, 30,253,205, 62,128, 0, 0, 62, 23, 31,208,
- 62,147, 52, 12, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147, 52, 12,
- 61,231, 46,109, 62,179, 51, 19, 62, 7, 70,204, 62,155,187, 41, 62, 30,253,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62, 52,111,101, 62,155,187, 41, 62, 30,253,205, 62,179, 51, 19, 62, 7, 70,204,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 19, 62, 7, 70,204, 62,147, 52, 12,
- 61,231, 46,109, 62,179, 51, 20, 61,180,111,104, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 56, 95,192, 62,128, 45, 79, 62, 25,153,214, 62,135, 83,156, 62, 25,153,212, 62, 97,152, 2, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,212, 62, 97,152, 2, 62, 61,209, 51, 62, 83, 97,115, 62, 56, 95,192,
- 62,128, 45, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 89, 70,217, 62,120, 76,252,
- 62, 56, 95,192, 62,128, 45, 79, 62, 61,209, 51, 62, 83, 97,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 61,209, 51, 62, 83, 97,115, 62, 25,153,212, 62, 97,152, 2, 62, 25,153,214, 62, 52,111,106, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 56, 95,192, 62,128, 45, 79, 62, 89, 70,217, 62,120, 76,252,
- 62, 81,154,245, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 81,154,245,
- 62,146,201, 29, 62, 52,120,125, 62,151,144,181, 62, 56, 95,192, 62,128, 45, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62,135, 83,156, 62, 56, 95,192, 62,128, 45, 79, 62, 52,120,125, 62,151,144,181,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52,120,125, 62,151,144,181, 62, 81,154,245,
- 62,146,201, 29, 62, 75,120,239, 62,169,150, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62, 50, 14,213, 62,174, 54, 78, 62, 25,153,214, 62,180,111,165, 62, 25,153,213, 62,157,231,100, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,213, 62,157,231,100, 62, 52,120,125, 62,151,144,181, 62, 50, 14,213,
- 62,174, 54, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 75,120,239, 62,169,150, 70,
- 62, 50, 14,213, 62,174, 54, 78, 62, 52,120,125, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62, 52,120,125, 62,151,144,181, 62, 25,153,213, 62,157,231,100, 62, 25,153,214, 62,135, 83,156, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,101,133, 91, 62,166,190,112, 62, 75,120,239, 62,169,150, 70,
- 62, 81,154,245, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 81,154,245,
- 62,146,201, 29, 62,110,174, 18, 62,144,102, 3, 62,101,133, 91, 62,166,190,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,165,199,206, 62,101,133, 91, 62,166,190,112, 62,110,174, 18, 62,144,102, 3,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,110,174, 18, 62,144,102, 3, 62, 81,154,245,
- 62,146,201, 29, 62, 89, 70,217, 62,120, 76,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 5, 27, 64, 62,128, 45, 66, 62,249,194,232, 62,120, 76,216, 63, 3,190,226, 62, 83, 97, 90, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3,190,226, 62, 83, 97, 90, 63, 12,204,191, 62, 97,151,248, 63, 5, 27, 64,
- 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,135, 83,149,
- 63, 5, 27, 64, 62,128, 45, 66, 63, 12,204,191, 62, 97,151,248, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 12,204,191, 62, 97,151,248, 63, 3,190,226, 62, 83, 97, 90, 63, 12,204,191, 62, 52,111, 90, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 5, 27, 64, 62,128, 45, 66, 63, 12,204,191, 62,135, 83,149,
- 63, 6, 21, 17, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 21, 17,
- 62,151,144,169, 62,253,152,222, 62,146,201, 14, 63, 5, 27, 64, 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,249,194,232, 62,120, 76,216, 63, 5, 27, 64, 62,128, 45, 66, 62,253,152,222, 62,146,201, 14,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,253,152,222, 62,146,201, 14, 63, 6, 21, 17,
- 62,151,144,169, 63, 0, 84,241, 62,169,150, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,243,163,164, 62,166,190, 89, 62,230,102, 72, 62,165,199,183, 62,239, 15, 70, 62,144,101,233, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,239, 15, 70, 62,144,101,233, 62,253,152,222, 62,146,201, 14, 62,243,163,164,
- 62,166,190, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 84,241, 62,169,150, 52,
- 62,243,163,164, 62,166,190, 89, 62,253,152,222, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,253,152,222, 62,146,201, 14, 62,239, 15, 70, 62,144,101,233, 62,249,194,232, 62,120, 76,216, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,175,123, 62,174, 54, 65, 63, 0, 84,241, 62,169,150, 52,
- 63, 6, 21, 17, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 21, 17,
- 62,151,144,169, 63, 12,204,191, 62,157,231, 90, 63, 6,175,123, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,180,111,160, 63, 6,175,123, 62,174, 54, 65, 63, 12,204,191, 62,157,231, 90,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,157,231, 90, 63, 6, 21, 17,
- 62,151,144,169, 63, 12,204,191, 62,135, 83,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,230,102, 72, 62,115,162, 53, 62,249,194,232, 62,120, 76,216, 62,239, 15, 70, 62,144,101,233, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,239, 15, 70, 62,144,101,233, 62,221,189, 75, 62,144,101,238, 62,230,102, 72,
- 62,115,162, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211, 9,168, 62,120, 76,222,
- 62,230,102, 72, 62,115,162, 53, 62,221,189, 75, 62,144,101,238, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,221,189, 75, 62,144,101,238, 62,239, 15, 70, 62,144,101,233, 62,230,102, 72, 62,165,199,183, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62,115,162, 53, 62,211, 9,168, 62,120, 76,222,
- 62,218,167, 80, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,218,167, 80,
- 62, 70,176,194, 62,242, 37, 68, 62, 70,176,194, 62,230,102, 72, 62,115,162, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,249,194,232, 62,120, 76,216, 62,230,102, 72, 62,115,162, 53, 62,242, 37, 68, 62, 70,176,194,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,242, 37, 68, 62, 70,176,194, 62,218,167, 80,
- 62, 70,176,194, 62,230,102, 72, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 1, 16,197, 62, 30,253,174, 63, 12,204,191, 62, 52,111, 90, 63, 3,190,226, 62, 83, 97, 90, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3,190,226, 62, 83, 97, 90, 62,242, 37, 68, 62, 70,176,194, 63, 1, 16,197,
- 62, 30,253,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62, 23, 31,168,
- 63, 1, 16,197, 62, 30,253,174, 62,242, 37, 68, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,242, 37, 68, 62, 70,176,194, 63, 3,190,226, 62, 83, 97, 90, 62,249,194,232, 62,120, 76,216, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,202,171, 14, 62, 30,253,179, 62,230,102, 72, 62, 23, 31,168,
- 62,218,167, 80, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,218,167, 80,
- 62, 70,176,194, 62,197, 78,205, 62, 83, 97, 95, 62,202,171, 14, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62, 52,111,101, 62,202,171, 14, 62, 30,253,179, 62,197, 78,205, 62, 83, 97, 95,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,197, 78,205, 62, 83, 97, 95, 62,218,167, 80,
- 62, 70,176,194, 62,211, 9,168, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,230,102, 63, 61,147, 41,101, 62,179, 51, 20, 61,180,111,104, 62,179, 51, 15, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 15, 61, 52, 64,225, 63, 12,204,189, 61, 52, 64,225, 62,230,102, 63,
- 61,147, 41,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 61,180,111, 83,
- 62,230,102, 63, 61,147, 41,101, 63, 12,204,189, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 12,204,189, 61, 52, 64,225, 62,179, 51, 15, 61, 52, 64,225, 62,161,175,144,178,239, 9,102, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 63, 61,147, 41,101, 63, 12,204,191, 61,180,111, 83,
- 62,249,154,104, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249,154,104,
- 61,231, 46, 48, 62,211, 50, 42, 61,231, 46, 48, 62,230,102, 63, 61,147, 41,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 20, 61,180,111,104, 62,230,102, 63, 61,147, 41,101, 62,211, 50, 42, 61,231, 46, 48,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211, 50, 42, 61,231, 46, 48, 62,249,154,104,
- 61,231, 46, 48, 62,230,102, 72, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,202,171, 14, 62, 30,253,179, 62,179, 51, 21, 62, 52,111,101, 62,179, 51, 19, 62, 7, 70,204, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 19, 62, 7, 70,204, 62,211, 50, 42, 61,231, 46, 48, 62,202,171, 14,
- 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62, 23, 31,168,
- 62,202,171, 14, 62, 30,253,179, 62,211, 50, 42, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,211, 50, 42, 61,231, 46, 48, 62,179, 51, 19, 62, 7, 70,204, 62,179, 51, 20, 61,180,111,104, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 1, 16,197, 62, 30,253,174, 62,230,102, 72, 62, 23, 31,168,
- 62,249,154,104, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249,154,104,
- 61,231, 46, 48, 63, 12,204,191, 62, 7, 70,199, 63, 1, 16,197, 62, 30,253,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 52,111, 90, 63, 1, 16,197, 62, 30,253,174, 63, 12,204,191, 62, 7, 70,199,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 7, 70,199, 62,249,154,104,
- 61,231, 46, 48, 63, 12,204,191, 61,180,111, 83, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,194,150, 19, 62,128, 45, 72, 62,179, 51, 21, 62,135, 83,156, 62,179, 51, 22, 62, 97,152, 2, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 22, 62, 97,152, 2, 62,197, 78,205, 62, 83, 97, 95, 62,194,150, 19,
- 62,128, 45, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211, 9,168, 62,120, 76,222,
- 62,194,150, 19, 62,128, 45, 72, 62,197, 78,205, 62, 83, 97, 95, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,197, 78,205, 62, 83, 97, 95, 62,179, 51, 22, 62, 97,152, 2, 62,179, 51, 21, 62, 52,111,101, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,194,150, 19, 62,128, 45, 72, 62,211, 9,168, 62,120, 76,222,
- 62,207, 51,179, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,207, 51,179,
- 62,146,201, 17, 62,192,162,113, 62,151,144,174, 62,194,150, 19, 62,128, 45, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,135, 83,156, 62,194,150, 19, 62,128, 45, 72, 62,192,162,113, 62,151,144,174,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,162,113, 62,151,144,174, 62,207, 51,179,
- 62,146,201, 17, 62,204, 34,175, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 62,191,109,154, 62,174, 54, 68, 62,179, 51, 21, 62,180,111,165, 62,179, 51, 21, 62,157,231, 98, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,157,231, 98, 62,192,162,113, 62,151,144,174, 62,191,109,154,
- 62,174, 54, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204, 34,175, 62,169,150, 54,
- 62,191,109,154, 62,174, 54, 68, 62,192,162,113, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 62,192,162,113, 62,151,144,174, 62,179, 51, 21, 62,157,231, 98, 62,179, 51, 21, 62,135, 83,156, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,217, 40,237, 62,166,190, 91, 62,204, 34,175, 62,169,150, 54,
- 62,207, 51,179, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,207, 51,179,
- 62,146,201, 17, 62,221,189, 75, 62,144,101,238, 62,217, 40,237, 62,166,190, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62,165,199,183, 62,217, 40,237, 62,166,190, 91, 62,221,189, 75, 62,144,101,238,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,221,189, 75, 62,144,101,238, 62,207, 51,179,
- 62,146,201, 17, 62,211, 9,168, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 56, 78,134, 62,128, 45,117, 63, 48, 20,188, 62,120, 77, 37, 63, 54,242, 42, 62, 83, 97,181, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,242, 42, 62, 83, 97,181, 63, 64, 0, 0, 62, 97,152,115, 63, 56, 78,134,
- 62,128, 45,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,135, 83,218,
- 63, 56, 78,134, 62,128, 45,117, 63, 64, 0, 0, 62, 97,152,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 64, 0, 0, 62, 97,152,115, 63, 54,242, 42, 62, 83, 97,181, 63, 64, 0, 0, 62, 52,111,202, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 56, 78,134, 62,128, 45,117, 63, 64, 0, 0, 62,135, 83,218,
- 63, 57, 72, 87, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 72, 87,
- 62,151,144,219, 63, 49,255,184, 62,146,201, 52, 63, 56, 78,134, 62,128, 45,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 20,188, 62,120, 77, 37, 63, 56, 78,134, 62,128, 45,117, 63, 49,255,184, 62,146,201, 52,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 49,255,184, 62,146,201, 52, 63, 57, 72, 87,
- 62,151,144,219, 63, 51,136, 58, 62,169,150, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 45, 5, 26, 62,166,190,117, 63, 38,102,107, 62,165,199,201, 63, 42,186,235, 62,144,102, 5, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42,186,235, 62,144,102, 5, 63, 49,255,184, 62,146,201, 52, 63, 45, 5, 26,
- 62,166,190,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51,136, 58, 62,169,150, 90,
- 63, 45, 5, 26, 62,166,190,117, 63, 49,255,184, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 49,255,184, 62,146,201, 52, 63, 42,186,235, 62,144,102, 5, 63, 48, 20,188, 62,120, 77, 37, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57,226,196, 62,174, 54,114, 63, 51,136, 58, 62,169,150, 90,
- 63, 57, 72, 87, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 72, 87,
- 62,151,144,219, 63, 64, 0, 0, 62,157,231,162, 63, 57,226,196, 62,174, 54,114, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,180,111,211, 63, 57,226,196, 62,174, 54,114, 63, 64, 0, 0, 62,157,231,162,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,157,231,162, 63, 57, 72, 87,
- 62,151,144,219, 63, 64, 0, 0, 62,135, 83,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,102,107, 62,115,162, 79, 63, 48, 20,188, 62,120, 77, 37, 63, 42,186,235, 62,144,102, 5, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42,186,235, 62,144,102, 5, 63, 34, 17,234, 62,144,101,243, 63, 38,102,107,
- 62,115,162, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,184, 21, 62,120, 76,222,
- 63, 38,102,107, 62,115,162, 79, 63, 34, 17,234, 62,144,101,243, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 34, 17,234, 62,144,101,243, 63, 42,186,235, 62,144,102, 5, 63, 38,102,107, 62,165,199,201, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,107, 62,115,162, 79, 63, 28,184, 21, 62,120, 76,222,
- 63, 32,134,234, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32,134,234,
- 62, 70,176,204, 63, 44, 69,233, 62, 70,176,245, 63, 38,102,107, 62,115,162, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 20,188, 62,120, 77, 37, 63, 38,102,107, 62,115,162, 79, 63, 44, 69,233, 62, 70,176,245,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44, 69,233, 62, 70,176,245, 63, 32,134,234,
- 62, 70,176,204, 63, 38,102,104, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 52, 68, 9, 62, 30,253,241, 63, 64, 0, 0, 62, 52,111,202, 63, 54,242, 42, 62, 83, 97,181, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,242, 42, 62, 83, 97,181, 63, 44, 69,233, 62, 70,176,245, 63, 52, 68, 9,
- 62, 30,253,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,104, 62, 23, 31,198,
- 63, 52, 68, 9, 62, 30,253,241, 63, 44, 69,233, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 44, 69,233, 62, 70,176,245, 63, 54,242, 42, 62, 83, 97,181, 63, 48, 20,188, 62,120, 77, 37, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,136,195, 62, 30,253,179, 63, 38,102,104, 62, 23, 31,198,
- 63, 32,134,234, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32,134,234,
- 62, 70,176,204, 63, 21,218,162, 62, 83, 97, 84, 63, 24,136,195, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 52,111, 90, 63, 24,136,195, 62, 30,253,179, 63, 21,218,162, 62, 83, 97, 84,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 21,218,162, 62, 83, 97, 84, 63, 32,134,234,
- 62, 70,176,204, 63, 28,184, 21, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 38,102,104, 61,147, 41,111, 63, 12,204,191, 61,180,111, 83, 63, 12,204,189, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,189, 61, 52, 64,225, 63, 64, 0, 0, 61, 52, 65,111, 63, 38,102,104,
- 61,147, 41,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 61,180,111,195,
- 63, 38,102,104, 61,147, 41,111, 63, 64, 0, 0, 61, 52, 65,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 64, 0, 0, 61, 52, 65,111, 63, 12,204,189, 61, 52, 64,225, 63,121,222,208,178,239, 9,102, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,104, 61,147, 41,111, 63, 64, 0, 0, 61,180,111,195,
- 63, 48, 0,122, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 0,122,
- 61,231, 46,120, 63, 28,204, 85, 61,231, 46, 48, 63, 38,102,104, 61,147, 41,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 61,180,111, 83, 63, 38,102,104, 61,147, 41,111, 63, 28,204, 85, 61,231, 46, 48,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,204, 85, 61,231, 46, 48, 63, 48, 0,122,
- 61,231, 46,120, 63, 38,102,104, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 24,136,195, 62, 30,253,179, 63, 12,204,191, 62, 52,111, 90, 63, 12,204,191, 62, 7, 70,199, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 7, 70,199, 63, 28,204, 85, 61,231, 46, 48, 63, 24,136,195,
- 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,104, 62, 23, 31,198,
- 63, 24,136,195, 62, 30,253,179, 63, 28,204, 85, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 28,204, 85, 61,231, 46, 48, 63, 12,204,191, 62, 7, 70,199, 63, 12,204,191, 61,180,111, 83, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 52, 68, 9, 62, 30,253,241, 63, 38,102,104, 62, 23, 31,198,
- 63, 48, 0,122, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 0,122,
- 61,231, 46,120, 63, 64, 0, 0, 62, 7, 71, 24, 63, 52, 68, 9, 62, 30,253,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 52,111,202, 63, 52, 68, 9, 62, 30,253,241, 63, 64, 0, 0, 62, 7, 71, 24,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 7, 71, 24, 63, 48, 0,122,
- 61,231, 46,120, 63, 64, 0, 0, 61,180,111,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 20,126, 68, 62,128, 45, 64, 63, 12,204,191, 62,135, 83,149, 63, 12,204,191, 62, 97,151,248, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 97,151,248, 63, 21,218,162, 62, 83, 97, 84, 63, 20,126, 68,
- 62,128, 45, 64, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,184, 21, 62,120, 76,222,
- 63, 20,126, 68, 62,128, 45, 64, 63, 21,218,162, 62, 83, 97, 84, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 21,218,162, 62, 83, 97, 84, 63, 12,204,191, 62, 97,151,248, 63, 12,204,191, 62, 52,111, 90, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 20,126, 68, 62,128, 45, 64, 63, 28,184, 21, 62,120, 76,222,
- 63, 26,205, 25, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 26,205, 25,
- 62,146,201, 14, 63, 19,132,114, 62,151,144,169, 63, 20,126, 68, 62,128, 45, 64, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,135, 83,149, 63, 20,126, 68, 62,128, 45, 64, 63, 19,132,114, 62,151,144,169,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,132,114, 62,151,144,169, 63, 26,205, 25,
- 62,146,201, 14, 63, 25, 68,150, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 63, 18,234, 7, 62,174, 54, 65, 63, 12,204,191, 62,180,111,160, 63, 12,204,191, 62,157,231, 90, 63,128, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,157,231, 90, 63, 19,132,114, 62,151,144,169, 63, 18,234, 7,
- 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25, 68,150, 62,169,150, 54,
- 63, 18,234, 7, 62,174, 54, 65, 63, 19,132,114, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 0, 0, 0, 0, 63, 19,132,114, 62,151,144,169, 63, 12,204,191, 62,157,231, 90, 63, 12,204,191, 62,135, 83,149, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,199,185, 62,166,190, 96, 63, 25, 68,150, 62,169,150, 54,
- 63, 26,205, 25, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 26,205, 25,
- 62,146,201, 14, 63, 34, 17,234, 62,144,101,243, 63, 31,199,185, 62,166,190, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,107, 62,165,199,201, 63, 31,199,185, 62,166,190, 96, 63, 34, 17,234, 62,144,101,243,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34, 17,234, 62,144,101,243, 63, 26,205, 25,
- 62,146,201, 14, 63, 28,184, 21, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 80, 0, 12,120, 32, 32, 0, 0, 0, 59, 0, 0, 20, 0,255,255,255,255,255,255,255,255,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,248,144, 32, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,249, 0, 32, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254, 48, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0,100, 0, 7,248,144, 32, 0, 0, 0, 54, 0, 0, 5, 0, 0, 0, 1, 27, 0, 0, 0,102, 0, 0, 1,146,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,146, 0, 0, 0,171, 0, 0, 1, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 14,
+ 0, 0, 1, 27, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,171, 0, 0, 1,146, 0, 0, 0, 46, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,147, 0, 0, 0, 46, 0, 0, 1,146, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,146, 0, 0, 1,148,
+ 0, 0, 1,147, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 43, 0, 0, 1,147, 0, 0, 1,148, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,148, 0, 0, 1,146, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 26, 0, 0, 0, 12, 0, 0, 0,165,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,165, 0, 0, 1,148, 0, 0, 1, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,102,
+ 0, 0, 1, 26, 0, 0, 1,148, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,148, 0, 0, 0,165, 0, 0, 0, 43, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,147, 0, 0, 0, 43, 0, 0, 0,164, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,164, 0, 0, 0,170,
+ 0, 0, 1,147, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 46, 0, 0, 1,147, 0, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,170, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 26, 0, 0, 0,102, 0, 0, 1,149,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,149, 0, 0, 1, 28, 0, 0, 1, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12,
+ 0, 0, 1, 26, 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 28, 0, 0, 1,149, 0, 0, 0,103, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,150, 0, 0, 0,103, 0, 0, 1,149, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,149, 0, 0, 1,151,
+ 0, 0, 1,150, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,104, 0, 0, 1,150, 0, 0, 1,151, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,151, 0, 0, 1,149, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 27, 0, 0, 0, 14, 0, 0, 1, 31,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 31, 0, 0, 1,151, 0, 0, 1, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,102,
+ 0, 0, 1, 27, 0, 0, 1,151, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,151, 0, 0, 1, 31, 0, 0, 0,104, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,150, 0, 0, 0,104, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 30, 0, 0, 1, 29,
+ 0, 0, 1,150, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,103, 0, 0, 1,150, 0, 0, 1, 29, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 29, 0, 0, 1, 30, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,168, 0, 0, 0, 45, 0, 0, 1,152,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,152, 0, 0, 0,172, 0, 0, 0,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2,
+ 0, 0, 0,168, 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,172, 0, 0, 1,152, 0, 0, 0, 47, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,153, 0, 0, 0, 47, 0, 0, 1,152, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,152, 0, 0, 1,154,
+ 0, 0, 1,153, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,104, 0, 0, 1,153, 0, 0, 1,154, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,154, 0, 0, 1,152, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,169, 0, 0, 0, 13, 0, 0, 1, 30,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 30, 0, 0, 1,154, 0, 0, 0,169, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 45,
+ 0, 0, 0,169, 0, 0, 1,154, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,154, 0, 0, 1, 30, 0, 0, 0,104, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,153, 0, 0, 0,104, 0, 0, 1, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 31, 0, 0, 0,173,
+ 0, 0, 1,153, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 47, 0, 0, 1,153, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,173, 0, 0, 1, 31, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,167, 0, 0, 0, 44, 0, 0, 1,155,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,155, 0, 0, 1, 29, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13,
+ 0, 0, 0,167, 0, 0, 1, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 29, 0, 0, 1,155, 0, 0, 0,103, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,156, 0, 0, 0,103, 0, 0, 1,155, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,155, 0, 0, 1,157,
+ 0, 0, 1,156, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 42, 0, 0, 1,156, 0, 0, 1,157, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,157, 0, 0, 1,155, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0,162,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,162, 0, 0, 1,157, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 44,
+ 0, 0, 0,166, 0, 0, 1,157, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,157, 0, 0, 0,162, 0, 0, 0, 42, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,156, 0, 0, 0, 42, 0, 0, 0,163, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,163, 0, 0, 1, 28,
+ 0, 0, 1,156, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,103, 0, 0, 1,156, 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 28, 0, 0, 0,163, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,158, 0, 0, 0,105, 0, 0, 1, 33,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 33, 0, 0, 0,179, 0, 0, 1,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 50,
+ 0, 0, 1,158, 0, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,179, 0, 0, 1, 33, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,158, 0, 0, 0, 50, 0, 0, 1,159, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,159, 0, 0, 1,160,
+ 0, 0, 1,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,105, 0, 0, 1,158, 0, 0, 1,160, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,160, 0, 0, 1,159, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,165, 0, 0, 0, 12, 0, 0, 1, 32,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 32, 0, 0, 1,160, 0, 0, 0,165, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 43,
+ 0, 0, 0,165, 0, 0, 1,160, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,160, 0, 0, 1, 32, 0, 0, 0,105, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,164, 0, 0, 0, 43, 0, 0, 1,159, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,159, 0, 0, 0,178,
+ 0, 0, 0,164, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,164, 0, 0, 0,178, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,178, 0, 0, 1,159, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,161, 0, 0, 0,105, 0, 0, 1, 32,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 32, 0, 0, 1, 34, 0, 0, 1,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,106,
+ 0, 0, 1,161, 0, 0, 1, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 34, 0, 0, 1, 32, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,161, 0, 0, 0,106, 0, 0, 1,162, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,162, 0, 0, 1,163,
+ 0, 0, 1,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,105, 0, 0, 1,161, 0, 0, 1,163, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,163, 0, 0, 1,162, 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 37, 0, 0, 0, 16, 0, 0, 1, 33,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 33, 0, 0, 1,163, 0, 0, 1, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,107,
+ 0, 0, 1, 37, 0, 0, 1,163, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,163, 0, 0, 1, 33, 0, 0, 0,105, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 36, 0, 0, 0,107, 0, 0, 1,162, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,162, 0, 0, 1, 35,
+ 0, 0, 1, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 15, 0, 0, 1, 36, 0, 0, 1, 35, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 35, 0, 0, 1,162, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,164, 0, 0, 0, 49, 0, 0, 0,176,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,176, 0, 0, 0,180, 0, 0, 1,164, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 51,
+ 0, 0, 1,164, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,180, 0, 0, 0,176, 0, 0, 0, 5, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,164, 0, 0, 0, 51, 0, 0, 1,165, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,165, 0, 0, 1,166,
+ 0, 0, 1,164, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 49, 0, 0, 1,164, 0, 0, 1,166, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,166, 0, 0, 1,165, 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 36, 0, 0, 0, 15, 0, 0, 0,177,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,177, 0, 0, 1,166, 0, 0, 1, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,107,
+ 0, 0, 1, 36, 0, 0, 1,166, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,166, 0, 0, 0,177, 0, 0, 0, 49, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 37, 0, 0, 0,107, 0, 0, 1,165, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,165, 0, 0, 0,181,
+ 0, 0, 1, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 1, 37, 0, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,181, 0, 0, 1,165, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,167, 0, 0, 0, 48, 0, 0, 0,175,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,175, 0, 0, 1, 35, 0, 0, 1,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,106,
+ 0, 0, 1,167, 0, 0, 1, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 35, 0, 0, 0,175, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,167, 0, 0, 0,106, 0, 0, 1,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,168, 0, 0, 1,169,
+ 0, 0, 1,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 48, 0, 0, 1,167, 0, 0, 1,169, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,169, 0, 0, 1,168, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,174,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,174, 0, 0, 1,169, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 42,
+ 0, 0, 0,162, 0, 0, 1,169, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,169, 0, 0, 0,174, 0, 0, 0, 48, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,163, 0, 0, 0, 42, 0, 0, 1,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,168, 0, 0, 1, 34,
+ 0, 0, 0,163, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0,163, 0, 0, 1, 34, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 34, 0, 0, 1,168, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 39, 0, 0, 0,108, 0, 0, 1,170,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,170, 0, 0, 0,187, 0, 0, 1, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 18,
+ 0, 0, 1, 39, 0, 0, 0,187, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,187, 0, 0, 1,170, 0, 0, 0, 54, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,171, 0, 0, 0, 54, 0, 0, 1,170, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,170, 0, 0, 1,172,
+ 0, 0, 1,171, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 45, 0, 0, 1,171, 0, 0, 1,172, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,172, 0, 0, 1,170, 0, 0, 0,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 38, 0, 0, 0, 13, 0, 0, 0,169,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,169, 0, 0, 1,172, 0, 0, 1, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,108,
+ 0, 0, 1, 38, 0, 0, 1,172, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,172, 0, 0, 0,169, 0, 0, 0, 45, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,171, 0, 0, 0, 45, 0, 0, 0,168, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,168, 0, 0, 0,186,
+ 0, 0, 1,171, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 54, 0, 0, 1,171, 0, 0, 0,186, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,186, 0, 0, 0,168, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 38, 0, 0, 0,108, 0, 0, 1,173,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,173, 0, 0, 1, 40, 0, 0, 1, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13,
+ 0, 0, 1, 38, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 40, 0, 0, 1,173, 0, 0, 0,109, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,174, 0, 0, 0,109, 0, 0, 1,173, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,173, 0, 0, 1,175,
+ 0, 0, 1,174, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,110, 0, 0, 1,174, 0, 0, 1,175, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,175, 0, 0, 1,173, 0, 0, 0,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 39, 0, 0, 0, 18, 0, 0, 1, 43,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 43, 0, 0, 1,175, 0, 0, 1, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,108,
+ 0, 0, 1, 39, 0, 0, 1,175, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,175, 0, 0, 1, 43, 0, 0, 0,110, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,174, 0, 0, 0,110, 0, 0, 1, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 42, 0, 0, 1, 41,
+ 0, 0, 1,174, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,109, 0, 0, 1,174, 0, 0, 1, 41, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 41, 0, 0, 1, 42, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,184, 0, 0, 0, 53, 0, 0, 1,176,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,176, 0, 0, 0,188, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3,
+ 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,188, 0, 0, 1,176, 0, 0, 0, 55, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,177, 0, 0, 0, 55, 0, 0, 1,176, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,176, 0, 0, 1,178,
+ 0, 0, 1,177, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,110, 0, 0, 1,177, 0, 0, 1,178, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,178, 0, 0, 1,176, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,185, 0, 0, 0, 17, 0, 0, 1, 42,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 42, 0, 0, 1,178, 0, 0, 0,185, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 53,
+ 0, 0, 0,185, 0, 0, 1,178, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,178, 0, 0, 1, 42, 0, 0, 0,110, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,177, 0, 0, 0,110, 0, 0, 1, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 43, 0, 0, 0,189,
+ 0, 0, 1,177, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 55, 0, 0, 1,177, 0, 0, 0,189, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,189, 0, 0, 1, 43, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,183, 0, 0, 0, 52, 0, 0, 1,179,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,179, 0, 0, 1, 41, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 17,
+ 0, 0, 0,183, 0, 0, 1, 41, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 41, 0, 0, 1,179, 0, 0, 0,109, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,180, 0, 0, 0,109, 0, 0, 1,179, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,179, 0, 0, 1,181,
+ 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 44, 0, 0, 1,180, 0, 0, 1,181, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,181, 0, 0, 1,179, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0,166,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,166, 0, 0, 1,181, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 52,
+ 0, 0, 0,182, 0, 0, 1,181, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,181, 0, 0, 0,166, 0, 0, 0, 44, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,180, 0, 0, 0, 44, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,167, 0, 0, 1, 40,
+ 0, 0, 1,180, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,109, 0, 0, 1,180, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 40, 0, 0, 0,167, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 45, 0, 0, 0,111, 0, 0, 1,182,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,182, 0, 0, 0,195, 0, 0, 1, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20,
+ 0, 0, 1, 45, 0, 0, 0,195, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,195, 0, 0, 1,182, 0, 0, 0, 58, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,183, 0, 0, 0, 58, 0, 0, 1,182, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,182, 0, 0, 1,184,
+ 0, 0, 1,183, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 53, 0, 0, 1,183, 0, 0, 1,184, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,184, 0, 0, 1,182, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 44, 0, 0, 0, 17, 0, 0, 0,185,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,185, 0, 0, 1,184, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,111,
+ 0, 0, 1, 44, 0, 0, 1,184, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,184, 0, 0, 0,185, 0, 0, 0, 53, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,183, 0, 0, 0, 53, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,184, 0, 0, 0,194,
+ 0, 0, 1,183, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 58, 0, 0, 1,183, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,194, 0, 0, 0,184, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 44, 0, 0, 0,111, 0, 0, 1,185,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,185, 0, 0, 1, 46, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 17,
+ 0, 0, 1, 44, 0, 0, 1, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 46, 0, 0, 1,185, 0, 0, 0,112, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,186, 0, 0, 0,112, 0, 0, 1,185, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,185, 0, 0, 1,187,
+ 0, 0, 1,186, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,113, 0, 0, 1,186, 0, 0, 1,187, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,187, 0, 0, 1,185, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 45, 0, 0, 0, 20, 0, 0, 1, 49,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 49, 0, 0, 1,187, 0, 0, 1, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,111,
+ 0, 0, 1, 45, 0, 0, 1,187, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,187, 0, 0, 1, 49, 0, 0, 0,113, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,186, 0, 0, 0,113, 0, 0, 1, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 48, 0, 0, 1, 47,
+ 0, 0, 1,186, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,112, 0, 0, 1,186, 0, 0, 1, 47, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 47, 0, 0, 1, 48, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,192, 0, 0, 0, 57, 0, 0, 1,188,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,188, 0, 0, 0,196, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
+ 0, 0, 0,192, 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,196, 0, 0, 1,188, 0, 0, 0, 59, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,189, 0, 0, 0, 59, 0, 0, 1,188, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,188, 0, 0, 1,190,
+ 0, 0, 1,189, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,113, 0, 0, 1,189, 0, 0, 1,190, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,190, 0, 0, 1,188, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,193, 0, 0, 0, 19, 0, 0, 1, 48,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 48, 0, 0, 1,190, 0, 0, 0,193, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 57,
+ 0, 0, 0,193, 0, 0, 1,190, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,190, 0, 0, 1, 48, 0, 0, 0,113, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,189, 0, 0, 0,113, 0, 0, 1, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 49, 0, 0, 0,197,
+ 0, 0, 1,189, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 59, 0, 0, 1,189, 0, 0, 0,197, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,197, 0, 0, 1, 49, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,191, 0, 0, 0, 56, 0, 0, 1,191,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,191, 0, 0, 1, 47, 0, 0, 0,191, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19,
+ 0, 0, 0,191, 0, 0, 1, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 47, 0, 0, 1,191, 0, 0, 0,112, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,192, 0, 0, 0,112, 0, 0, 1,191, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,191, 0, 0, 1,193,
+ 0, 0, 1,192, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 52, 0, 0, 1,192, 0, 0, 1,193, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,193, 0, 0, 1,191, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,190, 0, 0, 0, 0, 0, 0, 0,182,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,182, 0, 0, 1,193, 0, 0, 0,190, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 56,
+ 0, 0, 0,190, 0, 0, 1,193, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,193, 0, 0, 0,182, 0, 0, 0, 52, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,192, 0, 0, 0, 52, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,183, 0, 0, 1, 46,
+ 0, 0, 1,192, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,112, 0, 0, 1,192, 0, 0, 1, 46, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 46, 0, 0, 0,183, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 51, 0, 0, 0,114, 0, 0, 1,194,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,194, 0, 0, 0,199, 0, 0, 1, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 21,
+ 0, 0, 1, 51, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,199, 0, 0, 1,194, 0, 0, 0, 60, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,195, 0, 0, 0, 60, 0, 0, 1,194, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,194, 0, 0, 1,196,
+ 0, 0, 1,195, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 57, 0, 0, 1,195, 0, 0, 1,196, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,196, 0, 0, 1,194, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 50, 0, 0, 0, 19, 0, 0, 0,193,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,193, 0, 0, 1,196, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,114,
+ 0, 0, 1, 50, 0, 0, 1,196, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,196, 0, 0, 0,193, 0, 0, 0, 57, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,195, 0, 0, 0, 57, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,192, 0, 0, 0,198,
+ 0, 0, 1,195, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 60, 0, 0, 1,195, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,198, 0, 0, 0,192, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 50, 0, 0, 0,114, 0, 0, 1,197,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,197, 0, 0, 1, 53, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19,
+ 0, 0, 1, 50, 0, 0, 1, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 53, 0, 0, 1,197, 0, 0, 0,115, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,198, 0, 0, 0,115, 0, 0, 1,197, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,197, 0, 0, 1,199,
+ 0, 0, 1,198, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,116, 0, 0, 1,198, 0, 0, 1,199, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,199, 0, 0, 1,197, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 51, 0, 0, 0, 21, 0, 0, 1, 55,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 55, 0, 0, 1,199, 0, 0, 1, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,114,
+ 0, 0, 1, 51, 0, 0, 1,199, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,199, 0, 0, 1, 55, 0, 0, 0,116, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,198, 0, 0, 0,116, 0, 0, 1, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 54, 0, 0, 1, 52,
+ 0, 0, 1,198, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,115, 0, 0, 1,198, 0, 0, 1, 52, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 52, 0, 0, 1, 54, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,176, 0, 0, 0, 49, 0, 0, 1,200,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,200, 0, 0, 0,200, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0,176, 0, 0, 0,200, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,200, 0, 0, 1,200, 0, 0, 0, 61, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,201, 0, 0, 0, 61, 0, 0, 1,200, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,200, 0, 0, 1,202,
+ 0, 0, 1,201, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,116, 0, 0, 1,201, 0, 0, 1,202, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,202, 0, 0, 1,200, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,177, 0, 0, 0, 15, 0, 0, 1, 54,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 54, 0, 0, 1,202, 0, 0, 0,177, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 49,
+ 0, 0, 0,177, 0, 0, 1,202, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,202, 0, 0, 1, 54, 0, 0, 0,116, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,201, 0, 0, 0,116, 0, 0, 1, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 55, 0, 0, 0,201,
+ 0, 0, 1,201, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 61, 0, 0, 1,201, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,201, 0, 0, 1, 55, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,175, 0, 0, 0, 48, 0, 0, 1,203,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,203, 0, 0, 1, 52, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 15,
+ 0, 0, 0,175, 0, 0, 1, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 52, 0, 0, 1,203, 0, 0, 0,115, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,204, 0, 0, 0,115, 0, 0, 1,203, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,203, 0, 0, 1,205,
+ 0, 0, 1,204, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 56, 0, 0, 1,204, 0, 0, 1,205, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,205, 0, 0, 1,203, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0,190,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,190, 0, 0, 1,205, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 48,
+ 0, 0, 0,174, 0, 0, 1,205, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,205, 0, 0, 0,190, 0, 0, 0, 56, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,204, 0, 0, 0, 56, 0, 0, 0,191, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,191, 0, 0, 1, 53,
+ 0, 0, 1,204, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,115, 0, 0, 1,204, 0, 0, 1, 53, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 53, 0, 0, 0,191, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,206, 0, 0, 0,117, 0, 0, 1, 57,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 57, 0, 0, 0,207, 0, 0, 1,206, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 64,
+ 0, 0, 1,206, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,207, 0, 0, 1, 57, 0, 0, 0, 23, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,206, 0, 0, 0, 64, 0, 0, 1,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,207, 0, 0, 1,208,
+ 0, 0, 1,206, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,117, 0, 0, 1,206, 0, 0, 1,208, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,208, 0, 0, 1,207, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,179, 0, 0, 0, 16, 0, 0, 1, 56,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 56, 0, 0, 1,208, 0, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 50,
+ 0, 0, 0,179, 0, 0, 1,208, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,208, 0, 0, 1, 56, 0, 0, 0,117, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,178, 0, 0, 0, 50, 0, 0, 1,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,207, 0, 0, 0,206,
+ 0, 0, 0,178, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0,178, 0, 0, 0,206, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,206, 0, 0, 1,207, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,209, 0, 0, 0,117, 0, 0, 1, 56,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 56, 0, 0, 1, 58, 0, 0, 1,209, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,118,
+ 0, 0, 1,209, 0, 0, 1, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 58, 0, 0, 1, 56, 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,209, 0, 0, 0,118, 0, 0, 1,210, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,210, 0, 0, 1,211,
+ 0, 0, 1,209, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,117, 0, 0, 1,209, 0, 0, 1,211, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,211, 0, 0, 1,210, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 61, 0, 0, 0, 23, 0, 0, 1, 57,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 57, 0, 0, 1,211, 0, 0, 1, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,119,
+ 0, 0, 1, 61, 0, 0, 1,211, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,211, 0, 0, 1, 57, 0, 0, 0,117, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 60, 0, 0, 0,119, 0, 0, 1,210, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,210, 0, 0, 1, 59,
+ 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 1, 60, 0, 0, 1, 59, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 59, 0, 0, 1,210, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,212, 0, 0, 0, 63, 0, 0, 0,204,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,204, 0, 0, 0,208, 0, 0, 1,212, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 65,
+ 0, 0, 1,212, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,208, 0, 0, 0,204, 0, 0, 0, 10, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,212, 0, 0, 0, 65, 0, 0, 1,213, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,213, 0, 0, 1,214,
+ 0, 0, 1,212, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 63, 0, 0, 1,212, 0, 0, 1,214, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,214, 0, 0, 1,213, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 60, 0, 0, 0, 22, 0, 0, 0,205,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,205, 0, 0, 1,214, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,119,
+ 0, 0, 1, 60, 0, 0, 1,214, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,214, 0, 0, 0,205, 0, 0, 0, 63, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 61, 0, 0, 0,119, 0, 0, 1,213, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,213, 0, 0, 0,209,
+ 0, 0, 1, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 23, 0, 0, 1, 61, 0, 0, 0,209, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,209, 0, 0, 1,213, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,215, 0, 0, 0, 62, 0, 0, 0,203,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,203, 0, 0, 1, 59, 0, 0, 1,215, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,118,
+ 0, 0, 1,215, 0, 0, 1, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 59, 0, 0, 0,203, 0, 0, 0, 22, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,215, 0, 0, 0,118, 0, 0, 1,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,216, 0, 0, 1,217,
+ 0, 0, 1,215, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 62, 0, 0, 1,215, 0, 0, 1,217, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,217, 0, 0, 1,216, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,180, 0, 0, 0, 5, 0, 0, 0,202,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,202, 0, 0, 1,217, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 51,
+ 0, 0, 0,180, 0, 0, 1,217, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,217, 0, 0, 0,202, 0, 0, 0, 62, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,181, 0, 0, 0, 51, 0, 0, 1,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,216, 0, 0, 1, 58,
+ 0, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0,181, 0, 0, 1, 58, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 58, 0, 0, 1,216, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,218, 0, 0, 0,120, 0, 0, 1, 63,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 63, 0, 0, 0,215, 0, 0, 1,218, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 68,
+ 0, 0, 1,218, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,215, 0, 0, 1, 63, 0, 0, 0, 25, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,218, 0, 0, 0, 68, 0, 0, 1,219, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,219, 0, 0, 1,220,
+ 0, 0, 1,218, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,120, 0, 0, 1,218, 0, 0, 1,220, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,220, 0, 0, 1,219, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,173, 0, 0, 0, 14, 0, 0, 1, 62,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 62, 0, 0, 1,220, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 47,
+ 0, 0, 0,173, 0, 0, 1,220, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,220, 0, 0, 1, 62, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,172, 0, 0, 0, 47, 0, 0, 1,219, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,219, 0, 0, 0,214,
+ 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,172, 0, 0, 0,214, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,214, 0, 0, 1,219, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,221, 0, 0, 0,120, 0, 0, 1, 62,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 62, 0, 0, 1, 64, 0, 0, 1,221, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,121,
+ 0, 0, 1,221, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 64, 0, 0, 1, 62, 0, 0, 0, 14, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,221, 0, 0, 0,121, 0, 0, 1,222, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,222, 0, 0, 1,223,
+ 0, 0, 1,221, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,120, 0, 0, 1,221, 0, 0, 1,223, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,223, 0, 0, 1,222, 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 67, 0, 0, 0, 25, 0, 0, 1, 63,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 63, 0, 0, 1,223, 0, 0, 1, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,122,
+ 0, 0, 1, 67, 0, 0, 1,223, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,223, 0, 0, 1, 63, 0, 0, 0,120, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 66, 0, 0, 0,122, 0, 0, 1,222, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,222, 0, 0, 1, 65,
+ 0, 0, 1, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 24, 0, 0, 1, 66, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 65, 0, 0, 1,222, 0, 0, 0,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,224, 0, 0, 0, 67, 0, 0, 0,212,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,212, 0, 0, 0,216, 0, 0, 1,224, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 69,
+ 0, 0, 1,224, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,216, 0, 0, 0,212, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,224, 0, 0, 0, 69, 0, 0, 1,225, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,225, 0, 0, 1,226,
+ 0, 0, 1,224, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 67, 0, 0, 1,224, 0, 0, 1,226, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,226, 0, 0, 1,225, 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 66, 0, 0, 0, 24, 0, 0, 0,213,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,213, 0, 0, 1,226, 0, 0, 1, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,122,
+ 0, 0, 1, 66, 0, 0, 1,226, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,226, 0, 0, 0,213, 0, 0, 0, 67, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 67, 0, 0, 0,122, 0, 0, 1,225, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,225, 0, 0, 0,217,
+ 0, 0, 1, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 1, 67, 0, 0, 0,217, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,217, 0, 0, 1,225, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,227, 0, 0, 0, 66, 0, 0, 0,211,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,211, 0, 0, 1, 65, 0, 0, 1,227, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,121,
+ 0, 0, 1,227, 0, 0, 1, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 65, 0, 0, 0,211, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,227, 0, 0, 0,121, 0, 0, 1,228, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,228, 0, 0, 1,229,
+ 0, 0, 1,227, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 66, 0, 0, 1,227, 0, 0, 1,229, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,229, 0, 0, 1,228, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,210,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,210, 0, 0, 1,229, 0, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 46,
+ 0, 0, 0,170, 0, 0, 1,229, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,229, 0, 0, 0,210, 0, 0, 0, 66, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,171, 0, 0, 0, 46, 0, 0, 1,228, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,228, 0, 0, 1, 64,
+ 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 14, 0, 0, 0,171, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 64, 0, 0, 1,228, 0, 0, 0,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,230, 0, 0, 0,123, 0, 0, 1, 69,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 69, 0, 0, 0,223, 0, 0, 1,230, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 72,
+ 0, 0, 1,230, 0, 0, 0,223, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,223, 0, 0, 1, 69, 0, 0, 0, 27, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,230, 0, 0, 0, 72, 0, 0, 1,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,231, 0, 0, 1,232,
+ 0, 0, 1,230, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,123, 0, 0, 1,230, 0, 0, 1,232, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,232, 0, 0, 1,231, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 1, 68,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 68, 0, 0, 1,232, 0, 0, 0,189, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 55,
+ 0, 0, 0,189, 0, 0, 1,232, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,232, 0, 0, 1, 68, 0, 0, 0,123, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,188, 0, 0, 0, 55, 0, 0, 1,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,231, 0, 0, 0,222,
+ 0, 0, 0,188, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,188, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,222, 0, 0, 1,231, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,233, 0, 0, 0,123, 0, 0, 1, 68,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 68, 0, 0, 1, 70, 0, 0, 1,233, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,124,
+ 0, 0, 1,233, 0, 0, 1, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 70, 0, 0, 1, 68, 0, 0, 0, 18, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,233, 0, 0, 0,124, 0, 0, 1,234, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,234, 0, 0, 1,235,
+ 0, 0, 1,233, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,123, 0, 0, 1,233, 0, 0, 1,235, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,235, 0, 0, 1,234, 0, 0, 0,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 73, 0, 0, 0, 27, 0, 0, 1, 69,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 69, 0, 0, 1,235, 0, 0, 1, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,125,
+ 0, 0, 1, 73, 0, 0, 1,235, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,235, 0, 0, 1, 69, 0, 0, 0,123, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 72, 0, 0, 0,125, 0, 0, 1,234, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,234, 0, 0, 1, 71,
+ 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 26, 0, 0, 1, 72, 0, 0, 1, 71, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 71, 0, 0, 1,234, 0, 0, 0,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,236, 0, 0, 0, 71, 0, 0, 0,220,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,220, 0, 0, 0,224, 0, 0, 1,236, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 73,
+ 0, 0, 1,236, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,224, 0, 0, 0,220, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,236, 0, 0, 0, 73, 0, 0, 1,237, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,237, 0, 0, 1,238,
+ 0, 0, 1,236, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 71, 0, 0, 1,236, 0, 0, 1,238, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,238, 0, 0, 1,237, 0, 0, 0,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 72, 0, 0, 0, 26, 0, 0, 0,221,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,221, 0, 0, 1,238, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,125,
+ 0, 0, 1, 72, 0, 0, 1,238, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,238, 0, 0, 0,221, 0, 0, 0, 71, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 73, 0, 0, 0,125, 0, 0, 1,237, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,237, 0, 0, 0,225,
+ 0, 0, 1, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 27, 0, 0, 1, 73, 0, 0, 0,225, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,225, 0, 0, 1,237, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,239, 0, 0, 0, 70, 0, 0, 0,219,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,219, 0, 0, 1, 71, 0, 0, 1,239, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,124,
+ 0, 0, 1,239, 0, 0, 1, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 71, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,239, 0, 0, 0,124, 0, 0, 1,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,240, 0, 0, 1,241,
+ 0, 0, 1,239, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 70, 0, 0, 1,239, 0, 0, 1,241, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,241, 0, 0, 1,240, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,186, 0, 0, 0, 2, 0, 0, 0,218,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,218, 0, 0, 1,241, 0, 0, 0,186, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 54,
+ 0, 0, 0,186, 0, 0, 1,241, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,241, 0, 0, 0,218, 0, 0, 0, 70, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,187, 0, 0, 0, 54, 0, 0, 1,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,240, 0, 0, 1, 70,
+ 0, 0, 0,187, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 18, 0, 0, 0,187, 0, 0, 1, 70, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 70, 0, 0, 1,240, 0, 0, 0,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,242, 0, 0, 0,126, 0, 0, 1, 75,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 75, 0, 0, 0,231, 0, 0, 1,242, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76,
+ 0, 0, 1,242, 0, 0, 0,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,231, 0, 0, 1, 75, 0, 0, 0, 29, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,242, 0, 0, 0, 76, 0, 0, 1,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,243, 0, 0, 1,244,
+ 0, 0, 1,242, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,126, 0, 0, 1,242, 0, 0, 1,244, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,244, 0, 0, 1,243, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,197, 0, 0, 0, 20, 0, 0, 1, 74,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 74, 0, 0, 1,244, 0, 0, 0,197, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 59,
+ 0, 0, 0,197, 0, 0, 1,244, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,244, 0, 0, 1, 74, 0, 0, 0,126, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,196, 0, 0, 0, 59, 0, 0, 1,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,243, 0, 0, 0,230,
+ 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0,196, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,230, 0, 0, 1,243, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,245, 0, 0, 0,126, 0, 0, 1, 74,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 74, 0, 0, 1, 76, 0, 0, 1,245, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,127,
+ 0, 0, 1,245, 0, 0, 1, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 76, 0, 0, 1, 74, 0, 0, 0, 20, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,245, 0, 0, 0,127, 0, 0, 1,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,246, 0, 0, 1,247,
+ 0, 0, 1,245, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,126, 0, 0, 1,245, 0, 0, 1,247, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,247, 0, 0, 1,246, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 79, 0, 0, 0, 29, 0, 0, 1, 75,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 75, 0, 0, 1,247, 0, 0, 1, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,128,
+ 0, 0, 1, 79, 0, 0, 1,247, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,247, 0, 0, 1, 75, 0, 0, 0,126, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 78, 0, 0, 0,128, 0, 0, 1,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,246, 0, 0, 1, 77,
+ 0, 0, 1, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 28, 0, 0, 1, 78, 0, 0, 1, 77, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 77, 0, 0, 1,246, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,248, 0, 0, 0, 75, 0, 0, 0,228,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,228, 0, 0, 0,232, 0, 0, 1,248, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 77,
+ 0, 0, 1,248, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,232, 0, 0, 0,228, 0, 0, 0, 8, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,248, 0, 0, 0, 77, 0, 0, 1,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,249, 0, 0, 1,250,
+ 0, 0, 1,248, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 1,248, 0, 0, 1,250, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,250, 0, 0, 1,249, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 78, 0, 0, 0, 28, 0, 0, 0,229,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,229, 0, 0, 1,250, 0, 0, 1, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,128,
+ 0, 0, 1, 78, 0, 0, 1,250, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,250, 0, 0, 0,229, 0, 0, 0, 75, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 79, 0, 0, 0,128, 0, 0, 1,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,249, 0, 0, 0,233,
+ 0, 0, 1, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29, 0, 0, 1, 79, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,233, 0, 0, 1,249, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,251, 0, 0, 0, 74, 0, 0, 0,227,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,227, 0, 0, 1, 77, 0, 0, 1,251, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,127,
+ 0, 0, 1,251, 0, 0, 1, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 77, 0, 0, 0,227, 0, 0, 0, 28, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,251, 0, 0, 0,127, 0, 0, 1,252, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,252, 0, 0, 1,253,
+ 0, 0, 1,251, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 74, 0, 0, 1,251, 0, 0, 1,253, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,253, 0, 0, 1,252, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,194, 0, 0, 0, 3, 0, 0, 0,226,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,226, 0, 0, 1,253, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 58,
+ 0, 0, 0,194, 0, 0, 1,253, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,253, 0, 0, 0,226, 0, 0, 0, 74, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,195, 0, 0, 0, 58, 0, 0, 1,252, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,252, 0, 0, 1, 76,
+ 0, 0, 0,195, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0,195, 0, 0, 1, 76, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 76, 0, 0, 1,252, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,254, 0, 0, 0,129, 0, 0, 1, 81,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 81, 0, 0, 0,239, 0, 0, 1,254, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 80,
+ 0, 0, 1,254, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,239, 0, 0, 1, 81, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,254, 0, 0, 0, 80, 0, 0, 1,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,255, 0, 0, 2, 0,
+ 0, 0, 1,254, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,129, 0, 0, 1,254, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 0, 0, 0, 1,255, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,201, 0, 0, 0, 21, 0, 0, 1, 80,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 80, 0, 0, 2, 0, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 61,
+ 0, 0, 0,201, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 1, 80, 0, 0, 0,129, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,200, 0, 0, 0, 61, 0, 0, 1,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,255, 0, 0, 0,238,
+ 0, 0, 0,200, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0,200, 0, 0, 0,238, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,238, 0, 0, 1,255, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 1, 0, 0, 0,129, 0, 0, 1, 80,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 80, 0, 0, 1, 82, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,130,
+ 0, 0, 2, 1, 0, 0, 1, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 82, 0, 0, 1, 80, 0, 0, 0, 21, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 1, 0, 0, 0,130, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 2, 3,
+ 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,129, 0, 0, 2, 1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 3, 0, 0, 2, 2, 0, 0, 0,131, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 85, 0, 0, 0, 31, 0, 0, 1, 81,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 81, 0, 0, 2, 3, 0, 0, 1, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,131,
+ 0, 0, 1, 85, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 3, 0, 0, 1, 81, 0, 0, 0,129, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 84, 0, 0, 0,131, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 1, 83,
+ 0, 0, 1, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 30, 0, 0, 1, 84, 0, 0, 1, 83, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 83, 0, 0, 2, 2, 0, 0, 0,130, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 4, 0, 0, 0, 79, 0, 0, 0,236,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,236, 0, 0, 0,240, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 81,
+ 0, 0, 2, 4, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,240, 0, 0, 0,236, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 4, 0, 0, 0, 81, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 5, 0, 0, 2, 6,
+ 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 79, 0, 0, 2, 4, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 6, 0, 0, 2, 5, 0, 0, 0,131, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 84, 0, 0, 0, 30, 0, 0, 0,237,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,237, 0, 0, 2, 6, 0, 0, 1, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,131,
+ 0, 0, 1, 84, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 6, 0, 0, 0,237, 0, 0, 0, 79, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 85, 0, 0, 0,131, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 5, 0, 0, 0,241,
+ 0, 0, 1, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 31, 0, 0, 1, 85, 0, 0, 0,241, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,241, 0, 0, 2, 5, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 7, 0, 0, 0, 78, 0, 0, 0,235,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,235, 0, 0, 1, 83, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,130,
+ 0, 0, 2, 7, 0, 0, 1, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 83, 0, 0, 0,235, 0, 0, 0, 30, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 7, 0, 0, 0,130, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 8, 0, 0, 2, 9,
+ 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 78, 0, 0, 2, 7, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 9, 0, 0, 2, 8, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,198, 0, 0, 0, 4, 0, 0, 0,234,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,234, 0, 0, 2, 9, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 60,
+ 0, 0, 0,198, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 9, 0, 0, 0,234, 0, 0, 0, 78, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,199, 0, 0, 0, 60, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 8, 0, 0, 1, 82,
+ 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 21, 0, 0, 0,199, 0, 0, 1, 82, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 82, 0, 0, 2, 8, 0, 0, 0,130, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 87, 0, 0, 0,132, 0, 0, 2, 10,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 10, 0, 0, 0,245, 0, 0, 1, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 32,
+ 0, 0, 1, 87, 0, 0, 0,245, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,245, 0, 0, 2, 10, 0, 0, 0, 83, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 11, 0, 0, 0, 83, 0, 0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 10, 0, 0, 2, 12,
+ 0, 0, 2, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 65, 0, 0, 2, 11, 0, 0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 12, 0, 0, 2, 10, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 86, 0, 0, 0, 23, 0, 0, 0,209,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,209, 0, 0, 2, 12, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,132,
+ 0, 0, 1, 86, 0, 0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 12, 0, 0, 0,209, 0, 0, 0, 65, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 11, 0, 0, 0, 65, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,208, 0, 0, 0,244,
+ 0, 0, 2, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 83, 0, 0, 2, 11, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,244, 0, 0, 0,208, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 86, 0, 0, 0,132, 0, 0, 2, 13,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 13, 0, 0, 1, 88, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 23,
+ 0, 0, 1, 86, 0, 0, 1, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 88, 0, 0, 2, 13, 0, 0, 0,133, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 14, 0, 0, 0,133, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 13, 0, 0, 2, 15,
+ 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,134, 0, 0, 2, 14, 0, 0, 2, 15, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 15, 0, 0, 2, 13, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 87, 0, 0, 0, 32, 0, 0, 1, 91,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 91, 0, 0, 2, 15, 0, 0, 1, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,132,
+ 0, 0, 1, 87, 0, 0, 2, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 15, 0, 0, 1, 91, 0, 0, 0,134, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 14, 0, 0, 0,134, 0, 0, 1, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 90, 0, 0, 1, 89,
+ 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,133, 0, 0, 2, 14, 0, 0, 1, 89, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 89, 0, 0, 1, 90, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,212, 0, 0, 0, 67, 0, 0, 2, 16,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 16, 0, 0, 0,242, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 6,
+ 0, 0, 0,212, 0, 0, 0,242, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,242, 0, 0, 2, 16, 0, 0, 0, 82, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 17, 0, 0, 0, 82, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 16, 0, 0, 2, 18,
+ 0, 0, 2, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,134, 0, 0, 2, 17, 0, 0, 2, 18, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 18, 0, 0, 2, 16, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,213, 0, 0, 0, 24, 0, 0, 1, 90,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 90, 0, 0, 2, 18, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 67,
+ 0, 0, 0,213, 0, 0, 2, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 18, 0, 0, 1, 90, 0, 0, 0,134, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 17, 0, 0, 0,134, 0, 0, 1, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 91, 0, 0, 0,243,
+ 0, 0, 2, 17, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 82, 0, 0, 2, 17, 0, 0, 0,243, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,243, 0, 0, 1, 91, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,211, 0, 0, 0, 66, 0, 0, 2, 19,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 19, 0, 0, 1, 89, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 24,
+ 0, 0, 0,211, 0, 0, 1, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 89, 0, 0, 2, 19, 0, 0, 0,133, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 20, 0, 0, 0,133, 0, 0, 2, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 19, 0, 0, 2, 21,
+ 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 64, 0, 0, 2, 20, 0, 0, 2, 21, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 21, 0, 0, 2, 19, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0,206,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,206, 0, 0, 2, 21, 0, 0, 0,210, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 66,
+ 0, 0, 0,210, 0, 0, 2, 21, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 21, 0, 0, 0,206, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 20, 0, 0, 0, 64, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,207, 0, 0, 1, 88,
+ 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,133, 0, 0, 2, 20, 0, 0, 1, 88, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 88, 0, 0, 0,207, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 93, 0, 0, 0,135, 0, 0, 2, 22,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 22, 0, 0, 0,247, 0, 0, 1, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 33,
+ 0, 0, 1, 93, 0, 0, 0,247, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,247, 0, 0, 2, 22, 0, 0, 0, 84, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 23, 0, 0, 0, 84, 0, 0, 2, 22, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 22, 0, 0, 2, 24,
+ 0, 0, 2, 23, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 69, 0, 0, 2, 23, 0, 0, 2, 24, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 24, 0, 0, 2, 22, 0, 0, 0,135, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 92, 0, 0, 0, 25, 0, 0, 0,217,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,217, 0, 0, 2, 24, 0, 0, 1, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,135,
+ 0, 0, 1, 92, 0, 0, 2, 24, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 24, 0, 0, 0,217, 0, 0, 0, 69, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 23, 0, 0, 0, 69, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,216, 0, 0, 0,246,
+ 0, 0, 2, 23, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 84, 0, 0, 2, 23, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,246, 0, 0, 0,216, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 92, 0, 0, 0,135, 0, 0, 2, 25,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 25, 0, 0, 1, 94, 0, 0, 1, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 25,
+ 0, 0, 1, 92, 0, 0, 1, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 94, 0, 0, 2, 25, 0, 0, 0,136, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 26, 0, 0, 0,136, 0, 0, 2, 25, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 25, 0, 0, 2, 27,
+ 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,137, 0, 0, 2, 26, 0, 0, 2, 27, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 27, 0, 0, 2, 25, 0, 0, 0,135, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 93, 0, 0, 0, 33, 0, 0, 1, 97,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 97, 0, 0, 2, 27, 0, 0, 1, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,135,
+ 0, 0, 1, 93, 0, 0, 2, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 27, 0, 0, 1, 97, 0, 0, 0,137, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 26, 0, 0, 0,137, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 96, 0, 0, 1, 95,
+ 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,136, 0, 0, 2, 26, 0, 0, 1, 95, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 95, 0, 0, 1, 96, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,220, 0, 0, 0, 71, 0, 0, 2, 28,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 28, 0, 0, 0,248, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7,
+ 0, 0, 0,220, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,248, 0, 0, 2, 28, 0, 0, 0, 85, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 29, 0, 0, 0, 85, 0, 0, 2, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 28, 0, 0, 2, 30,
+ 0, 0, 2, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,137, 0, 0, 2, 29, 0, 0, 2, 30, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 30, 0, 0, 2, 28, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,221, 0, 0, 0, 26, 0, 0, 1, 96,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 96, 0, 0, 2, 30, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 71,
+ 0, 0, 0,221, 0, 0, 2, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 30, 0, 0, 1, 96, 0, 0, 0,137, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 29, 0, 0, 0,137, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 97, 0, 0, 0,249,
+ 0, 0, 2, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 85, 0, 0, 2, 29, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,249, 0, 0, 1, 97, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,219, 0, 0, 0, 70, 0, 0, 2, 31,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 31, 0, 0, 1, 95, 0, 0, 0,219, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 26,
+ 0, 0, 0,219, 0, 0, 1, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 95, 0, 0, 2, 31, 0, 0, 0,136, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 32, 0, 0, 0,136, 0, 0, 2, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 31, 0, 0, 2, 33,
+ 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 68, 0, 0, 2, 32, 0, 0, 2, 33, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 33, 0, 0, 2, 31, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,218, 0, 0, 0, 2, 0, 0, 0,214,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,214, 0, 0, 2, 33, 0, 0, 0,218, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 70,
+ 0, 0, 0,218, 0, 0, 2, 33, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 33, 0, 0, 0,214, 0, 0, 0, 68, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 32, 0, 0, 0, 68, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,215, 0, 0, 1, 94,
+ 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,136, 0, 0, 2, 32, 0, 0, 1, 94, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 94, 0, 0, 0,215, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 99, 0, 0, 0,138, 0, 0, 2, 34,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 34, 0, 0, 0,251, 0, 0, 1, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 34,
+ 0, 0, 1, 99, 0, 0, 0,251, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,251, 0, 0, 2, 34, 0, 0, 0, 86, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 35, 0, 0, 0, 86, 0, 0, 2, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 34, 0, 0, 2, 36,
+ 0, 0, 2, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 73, 0, 0, 2, 35, 0, 0, 2, 36, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 36, 0, 0, 2, 34, 0, 0, 0,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 98, 0, 0, 0, 27, 0, 0, 0,225,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,225, 0, 0, 2, 36, 0, 0, 1, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,138,
+ 0, 0, 1, 98, 0, 0, 2, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 36, 0, 0, 0,225, 0, 0, 0, 73, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 35, 0, 0, 0, 73, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,224, 0, 0, 0,250,
+ 0, 0, 2, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 86, 0, 0, 2, 35, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,250, 0, 0, 0,224, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 98, 0, 0, 0,138, 0, 0, 2, 37,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 37, 0, 0, 1,100, 0, 0, 1, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 27,
+ 0, 0, 1, 98, 0, 0, 1,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,100, 0, 0, 2, 37, 0, 0, 0,139, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 38, 0, 0, 0,139, 0, 0, 2, 37, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 37, 0, 0, 2, 39,
+ 0, 0, 2, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,140, 0, 0, 2, 38, 0, 0, 2, 39, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 39, 0, 0, 2, 37, 0, 0, 0,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 99, 0, 0, 0, 34, 0, 0, 1,103,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,103, 0, 0, 2, 39, 0, 0, 1, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,138,
+ 0, 0, 1, 99, 0, 0, 2, 39, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 39, 0, 0, 1,103, 0, 0, 0,140, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 38, 0, 0, 0,140, 0, 0, 1,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,102, 0, 0, 1,101,
+ 0, 0, 2, 38, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,139, 0, 0, 2, 38, 0, 0, 1,101, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,101, 0, 0, 1,102, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,228, 0, 0, 0, 75, 0, 0, 2, 40,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 40, 0, 0, 0,252, 0, 0, 0,228, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 8,
+ 0, 0, 0,228, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,252, 0, 0, 2, 40, 0, 0, 0, 87, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 41, 0, 0, 0, 87, 0, 0, 2, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 40, 0, 0, 2, 42,
+ 0, 0, 2, 41, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,140, 0, 0, 2, 41, 0, 0, 2, 42, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 42, 0, 0, 2, 40, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,229, 0, 0, 0, 28, 0, 0, 1,102,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,102, 0, 0, 2, 42, 0, 0, 0,229, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75,
+ 0, 0, 0,229, 0, 0, 2, 42, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 42, 0, 0, 1,102, 0, 0, 0,140, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 41, 0, 0, 0,140, 0, 0, 1,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,103, 0, 0, 0,253,
+ 0, 0, 2, 41, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 87, 0, 0, 2, 41, 0, 0, 0,253, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,253, 0, 0, 1,103, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,227, 0, 0, 0, 74, 0, 0, 2, 43,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 43, 0, 0, 1,101, 0, 0, 0,227, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 28,
+ 0, 0, 0,227, 0, 0, 1,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,101, 0, 0, 2, 43, 0, 0, 0,139, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 44, 0, 0, 0,139, 0, 0, 2, 43, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 43, 0, 0, 2, 45,
+ 0, 0, 2, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 72, 0, 0, 2, 44, 0, 0, 2, 45, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 45, 0, 0, 2, 43, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,226, 0, 0, 0, 3, 0, 0, 0,222,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,222, 0, 0, 2, 45, 0, 0, 0,226, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 74,
+ 0, 0, 0,226, 0, 0, 2, 45, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 45, 0, 0, 0,222, 0, 0, 0, 72, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 44, 0, 0, 0, 72, 0, 0, 0,223, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,223, 0, 0, 1,100,
+ 0, 0, 2, 44, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,139, 0, 0, 2, 44, 0, 0, 1,100, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,100, 0, 0, 0,223, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,105, 0, 0, 0,141, 0, 0, 2, 46,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 46, 0, 0, 0,255, 0, 0, 1,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35,
+ 0, 0, 1,105, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,255, 0, 0, 2, 46, 0, 0, 0, 88, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 47, 0, 0, 0, 88, 0, 0, 2, 46, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 46, 0, 0, 2, 48,
+ 0, 0, 2, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 77, 0, 0, 2, 47, 0, 0, 2, 48, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 48, 0, 0, 2, 46, 0, 0, 0,141, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,104, 0, 0, 0, 29, 0, 0, 0,233,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,233, 0, 0, 2, 48, 0, 0, 1,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,141,
+ 0, 0, 1,104, 0, 0, 2, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 48, 0, 0, 0,233, 0, 0, 0, 77, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 47, 0, 0, 0, 77, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,232, 0, 0, 0,254,
+ 0, 0, 2, 47, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 88, 0, 0, 2, 47, 0, 0, 0,254, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0,254, 0, 0, 0,232, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,104, 0, 0, 0,141, 0, 0, 2, 49,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 49, 0, 0, 1,106, 0, 0, 1,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29,
+ 0, 0, 1,104, 0, 0, 1,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,106, 0, 0, 2, 49, 0, 0, 0,142, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 50, 0, 0, 0,142, 0, 0, 2, 49, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 49, 0, 0, 2, 51,
+ 0, 0, 2, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,143, 0, 0, 2, 50, 0, 0, 2, 51, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 51, 0, 0, 2, 49, 0, 0, 0,141, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,105, 0, 0, 0, 35, 0, 0, 1,109,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,109, 0, 0, 2, 51, 0, 0, 1,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,141,
+ 0, 0, 1,105, 0, 0, 2, 51, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 51, 0, 0, 1,109, 0, 0, 0,143, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 50, 0, 0, 0,143, 0, 0, 1,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,108, 0, 0, 1,107,
+ 0, 0, 2, 50, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,142, 0, 0, 2, 50, 0, 0, 1,107, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,107, 0, 0, 1,108, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,236, 0, 0, 0, 79, 0, 0, 2, 52,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 52, 0, 0, 1, 0, 0, 0, 0,236, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9,
+ 0, 0, 0,236, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 2, 52, 0, 0, 0, 89, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 53, 0, 0, 0, 89, 0, 0, 2, 52, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 52, 0, 0, 2, 54,
+ 0, 0, 2, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,143, 0, 0, 2, 53, 0, 0, 2, 54, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 54, 0, 0, 2, 52, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,237, 0, 0, 0, 30, 0, 0, 1,108,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,108, 0, 0, 2, 54, 0, 0, 0,237, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 79,
+ 0, 0, 0,237, 0, 0, 2, 54, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 54, 0, 0, 1,108, 0, 0, 0,143, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 53, 0, 0, 0,143, 0, 0, 1,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,109, 0, 0, 1, 1,
+ 0, 0, 2, 53, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 89, 0, 0, 2, 53, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 1, 0, 0, 1,109, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,235, 0, 0, 0, 78, 0, 0, 2, 55,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 55, 0, 0, 1,107, 0, 0, 0,235, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 30,
+ 0, 0, 0,235, 0, 0, 1,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,107, 0, 0, 2, 55, 0, 0, 0,142, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 56, 0, 0, 0,142, 0, 0, 2, 55, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 55, 0, 0, 2, 57,
+ 0, 0, 2, 56, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76, 0, 0, 2, 56, 0, 0, 2, 57, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 57, 0, 0, 2, 55, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,234, 0, 0, 0, 4, 0, 0, 0,230,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,230, 0, 0, 2, 57, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 78,
+ 0, 0, 0,234, 0, 0, 2, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 57, 0, 0, 0,230, 0, 0, 0, 76, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 56, 0, 0, 0, 76, 0, 0, 0,231, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,231, 0, 0, 1,106,
+ 0, 0, 2, 56, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,142, 0, 0, 2, 56, 0, 0, 1,106, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,106, 0, 0, 0,231, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,111, 0, 0, 0,144, 0, 0, 2, 58,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 58, 0, 0, 1, 3, 0, 0, 1,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 36,
+ 0, 0, 1,111, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 3, 0, 0, 2, 58, 0, 0, 0, 90, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 59, 0, 0, 0, 90, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 58, 0, 0, 2, 60,
+ 0, 0, 2, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 81, 0, 0, 2, 59, 0, 0, 2, 60, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 60, 0, 0, 2, 58, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,110, 0, 0, 0, 31, 0, 0, 0,241,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,241, 0, 0, 2, 60, 0, 0, 1,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,144,
+ 0, 0, 1,110, 0, 0, 2, 60, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 60, 0, 0, 0,241, 0, 0, 0, 81, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 59, 0, 0, 0, 81, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,240, 0, 0, 1, 2,
+ 0, 0, 2, 59, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 90, 0, 0, 2, 59, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 2, 0, 0, 0,240, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,110, 0, 0, 0,144, 0, 0, 2, 61,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 61, 0, 0, 1,113, 0, 0, 1,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 31,
+ 0, 0, 1,110, 0, 0, 1,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,113, 0, 0, 2, 61, 0, 0, 0,145, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 62, 0, 0, 0,145, 0, 0, 2, 61, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 61, 0, 0, 2, 63,
+ 0, 0, 2, 62, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,146, 0, 0, 2, 62, 0, 0, 2, 63, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 63, 0, 0, 2, 61, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,111, 0, 0, 0, 36, 0, 0, 1,115,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,115, 0, 0, 2, 63, 0, 0, 1,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,144,
+ 0, 0, 1,111, 0, 0, 2, 63, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 63, 0, 0, 1,115, 0, 0, 0,146, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 62, 0, 0, 0,146, 0, 0, 1,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,114, 0, 0, 1,112,
+ 0, 0, 2, 62, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,145, 0, 0, 2, 62, 0, 0, 1,112, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,112, 0, 0, 1,114, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,204, 0, 0, 0, 63, 0, 0, 2, 64,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 64, 0, 0, 1, 4, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 10,
+ 0, 0, 0,204, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 4, 0, 0, 2, 64, 0, 0, 0, 91, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 65, 0, 0, 0, 91, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 64, 0, 0, 2, 66,
+ 0, 0, 2, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,146, 0, 0, 2, 65, 0, 0, 2, 66, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 66, 0, 0, 2, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,205, 0, 0, 0, 22, 0, 0, 1,114,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,114, 0, 0, 2, 66, 0, 0, 0,205, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 63,
+ 0, 0, 0,205, 0, 0, 2, 66, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 66, 0, 0, 1,114, 0, 0, 0,146, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 65, 0, 0, 0,146, 0, 0, 1,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,115, 0, 0, 1, 5,
+ 0, 0, 2, 65, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 91, 0, 0, 2, 65, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 5, 0, 0, 1,115, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,203, 0, 0, 0, 62, 0, 0, 2, 67,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 67, 0, 0, 1,112, 0, 0, 0,203, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22,
+ 0, 0, 0,203, 0, 0, 1,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,112, 0, 0, 2, 67, 0, 0, 0,145, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 68, 0, 0, 0,145, 0, 0, 2, 67, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 67, 0, 0, 2, 69,
+ 0, 0, 2, 68, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 80, 0, 0, 2, 68, 0, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 69, 0, 0, 2, 67, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,202, 0, 0, 0, 5, 0, 0, 0,238,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,238, 0, 0, 2, 69, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 62,
+ 0, 0, 0,202, 0, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 69, 0, 0, 0,238, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 68, 0, 0, 0, 80, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,239, 0, 0, 1,113,
+ 0, 0, 2, 68, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,145, 0, 0, 2, 68, 0, 0, 1,113, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,113, 0, 0, 0,239, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 70, 0, 0, 0,147, 0, 0, 1,117,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,117, 0, 0, 1, 11, 0, 0, 2, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 94,
+ 0, 0, 2, 70, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 11, 0, 0, 1,117, 0, 0, 0, 38, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 70, 0, 0, 0, 94, 0, 0, 2, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 71, 0, 0, 2, 72,
+ 0, 0, 2, 70, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,147, 0, 0, 2, 70, 0, 0, 2, 72, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 72, 0, 0, 2, 71, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,243, 0, 0, 0, 32, 0, 0, 1,116,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,116, 0, 0, 2, 72, 0, 0, 0,243, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 82,
+ 0, 0, 0,243, 0, 0, 2, 72, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 72, 0, 0, 1,116, 0, 0, 0,147, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,242, 0, 0, 0, 82, 0, 0, 2, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 71, 0, 0, 1, 10,
+ 0, 0, 0,242, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0,242, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 10, 0, 0, 2, 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 73, 0, 0, 0,147, 0, 0, 1,116,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,116, 0, 0, 1,118, 0, 0, 2, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,148,
+ 0, 0, 2, 73, 0, 0, 1,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,118, 0, 0, 1,116, 0, 0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 73, 0, 0, 0,148, 0, 0, 2, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 74, 0, 0, 2, 75,
+ 0, 0, 2, 73, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,147, 0, 0, 2, 73, 0, 0, 2, 75, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 75, 0, 0, 2, 74, 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,121, 0, 0, 0, 38, 0, 0, 1,117,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,117, 0, 0, 2, 75, 0, 0, 1,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,149,
+ 0, 0, 1,121, 0, 0, 2, 75, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 75, 0, 0, 1,117, 0, 0, 0,147, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,120, 0, 0, 0,149, 0, 0, 2, 74, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 74, 0, 0, 1,119,
+ 0, 0, 1,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 37, 0, 0, 1,120, 0, 0, 1,119, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,119, 0, 0, 2, 74, 0, 0, 0,148, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 76, 0, 0, 0, 93, 0, 0, 1, 8,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 8, 0, 0, 1, 12, 0, 0, 2, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 95,
+ 0, 0, 2, 76, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 12, 0, 0, 1, 8, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 76, 0, 0, 0, 95, 0, 0, 2, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 77, 0, 0, 2, 78,
+ 0, 0, 2, 76, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 93, 0, 0, 2, 76, 0, 0, 2, 78, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 78, 0, 0, 2, 77, 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,120, 0, 0, 0, 37, 0, 0, 1, 9,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 9, 0, 0, 2, 78, 0, 0, 1,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,149,
+ 0, 0, 1,120, 0, 0, 2, 78, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 78, 0, 0, 1, 9, 0, 0, 0, 93, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,121, 0, 0, 0,149, 0, 0, 2, 77, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 77, 0, 0, 1, 13,
+ 0, 0, 1,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 38, 0, 0, 1,121, 0, 0, 1, 13, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 13, 0, 0, 2, 77, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 79, 0, 0, 0, 92, 0, 0, 1, 7,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 7, 0, 0, 1,119, 0, 0, 2, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,148,
+ 0, 0, 2, 79, 0, 0, 1,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,119, 0, 0, 1, 7, 0, 0, 0, 37, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 79, 0, 0, 0,148, 0, 0, 2, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 80, 0, 0, 2, 81,
+ 0, 0, 2, 79, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 92, 0, 0, 2, 79, 0, 0, 2, 81, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 81, 0, 0, 2, 80, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,244, 0, 0, 0, 10, 0, 0, 1, 6,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 6, 0, 0, 2, 81, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 83,
+ 0, 0, 0,244, 0, 0, 2, 81, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 81, 0, 0, 1, 6, 0, 0, 0, 92, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,245, 0, 0, 0, 83, 0, 0, 2, 80, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 80, 0, 0, 1,118,
+ 0, 0, 0,245, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 32, 0, 0, 0,245, 0, 0, 1,118, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,118, 0, 0, 2, 80, 0, 0, 0,148, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 82, 0, 0, 0,150, 0, 0, 1,123,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,123, 0, 0, 1, 15, 0, 0, 2, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 96,
+ 0, 0, 2, 82, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 15, 0, 0, 1,123, 0, 0, 0, 39, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 82, 0, 0, 0, 96, 0, 0, 2, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 83, 0, 0, 2, 84,
+ 0, 0, 2, 82, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,150, 0, 0, 2, 82, 0, 0, 2, 84, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 84, 0, 0, 2, 83, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,249, 0, 0, 0, 33, 0, 0, 1,122,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,122, 0, 0, 2, 84, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 85,
+ 0, 0, 0,249, 0, 0, 2, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 84, 0, 0, 1,122, 0, 0, 0,150, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,248, 0, 0, 0, 85, 0, 0, 2, 83, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 83, 0, 0, 1, 14,
+ 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,248, 0, 0, 1, 14, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 14, 0, 0, 2, 83, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 85, 0, 0, 0,150, 0, 0, 1,122,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,122, 0, 0, 1,124, 0, 0, 2, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,151,
+ 0, 0, 2, 85, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,124, 0, 0, 1,122, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 85, 0, 0, 0,151, 0, 0, 2, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 86, 0, 0, 2, 87,
+ 0, 0, 2, 85, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,150, 0, 0, 2, 85, 0, 0, 2, 87, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 87, 0, 0, 2, 86, 0, 0, 0,152, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,127, 0, 0, 0, 39, 0, 0, 1,123,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,123, 0, 0, 2, 87, 0, 0, 1,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,152,
+ 0, 0, 1,127, 0, 0, 2, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 87, 0, 0, 1,123, 0, 0, 0,150, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,126, 0, 0, 0,152, 0, 0, 2, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 86, 0, 0, 1,125,
+ 0, 0, 1,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 38, 0, 0, 1,126, 0, 0, 1,125, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,125, 0, 0, 2, 86, 0, 0, 0,151, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 88, 0, 0, 0, 95, 0, 0, 1, 12,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 12, 0, 0, 1, 16, 0, 0, 2, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 97,
+ 0, 0, 2, 88, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 16, 0, 0, 1, 12, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 88, 0, 0, 0, 97, 0, 0, 2, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 89, 0, 0, 2, 90,
+ 0, 0, 2, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 95, 0, 0, 2, 88, 0, 0, 2, 90, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 90, 0, 0, 2, 89, 0, 0, 0,152, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,126, 0, 0, 0, 38, 0, 0, 1, 13,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 13, 0, 0, 2, 90, 0, 0, 1,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,152,
+ 0, 0, 1,126, 0, 0, 2, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 90, 0, 0, 1, 13, 0, 0, 0, 95, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,127, 0, 0, 0,152, 0, 0, 2, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 89, 0, 0, 1, 17,
+ 0, 0, 1,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 39, 0, 0, 1,127, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 17, 0, 0, 2, 89, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 91, 0, 0, 0, 94, 0, 0, 1, 11,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 11, 0, 0, 1,125, 0, 0, 2, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,151,
+ 0, 0, 2, 91, 0, 0, 1,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,125, 0, 0, 1, 11, 0, 0, 0, 38, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 91, 0, 0, 0,151, 0, 0, 2, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 92, 0, 0, 2, 93,
+ 0, 0, 2, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 94, 0, 0, 2, 91, 0, 0, 2, 93, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 93, 0, 0, 2, 92, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,246, 0, 0, 0, 6, 0, 0, 1, 10,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 10, 0, 0, 2, 93, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 84,
+ 0, 0, 0,246, 0, 0, 2, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 93, 0, 0, 1, 10, 0, 0, 0, 94, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,247, 0, 0, 0, 84, 0, 0, 2, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 92, 0, 0, 1,124,
+ 0, 0, 0,247, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 33, 0, 0, 0,247, 0, 0, 1,124, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,124, 0, 0, 2, 92, 0, 0, 0,151, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 94, 0, 0, 0,153, 0, 0, 1,129,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,129, 0, 0, 1, 19, 0, 0, 2, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 98,
+ 0, 0, 2, 94, 0, 0, 1, 19, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 19, 0, 0, 1,129, 0, 0, 0, 40, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 94, 0, 0, 0, 98, 0, 0, 2, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 95, 0, 0, 2, 96,
+ 0, 0, 2, 94, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,153, 0, 0, 2, 94, 0, 0, 2, 96, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 96, 0, 0, 2, 95, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,253, 0, 0, 0, 34, 0, 0, 1,128,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,128, 0, 0, 2, 96, 0, 0, 0,253, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 87,
+ 0, 0, 0,253, 0, 0, 2, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 96, 0, 0, 1,128, 0, 0, 0,153, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,252, 0, 0, 0, 87, 0, 0, 2, 95, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 95, 0, 0, 1, 18,
+ 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0,252, 0, 0, 1, 18, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 18, 0, 0, 2, 95, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 97, 0, 0, 0,153, 0, 0, 1,128,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,128, 0, 0, 1,130, 0, 0, 2, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,154,
+ 0, 0, 2, 97, 0, 0, 1,130, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,130, 0, 0, 1,128, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2, 97, 0, 0, 0,154, 0, 0, 2, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 98, 0, 0, 2, 99,
+ 0, 0, 2, 97, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,153, 0, 0, 2, 97, 0, 0, 2, 99, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2, 99, 0, 0, 2, 98, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,133, 0, 0, 0, 40, 0, 0, 1,129,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,129, 0, 0, 2, 99, 0, 0, 1,133, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,155,
+ 0, 0, 1,133, 0, 0, 2, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 99, 0, 0, 1,129, 0, 0, 0,153, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,132, 0, 0, 0,155, 0, 0, 2, 98, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 98, 0, 0, 1,131,
+ 0, 0, 1,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 39, 0, 0, 1,132, 0, 0, 1,131, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,131, 0, 0, 2, 98, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,100, 0, 0, 0, 97, 0, 0, 1, 16,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 16, 0, 0, 1, 20, 0, 0, 2,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 99,
+ 0, 0, 2,100, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 20, 0, 0, 1, 16, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,100, 0, 0, 0, 99, 0, 0, 2,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,101, 0, 0, 2,102,
+ 0, 0, 2,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 97, 0, 0, 2,100, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,102, 0, 0, 2,101, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,132, 0, 0, 0, 39, 0, 0, 1, 17,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 17, 0, 0, 2,102, 0, 0, 1,132, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,155,
+ 0, 0, 1,132, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,102, 0, 0, 1, 17, 0, 0, 0, 97, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,133, 0, 0, 0,155, 0, 0, 2,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,101, 0, 0, 1, 21,
+ 0, 0, 1,133, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 40, 0, 0, 1,133, 0, 0, 1, 21, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 21, 0, 0, 2,101, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,103, 0, 0, 0, 96, 0, 0, 1, 15,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 15, 0, 0, 1,131, 0, 0, 2,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,154,
+ 0, 0, 2,103, 0, 0, 1,131, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,131, 0, 0, 1, 15, 0, 0, 0, 39, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,103, 0, 0, 0,154, 0, 0, 2,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,104, 0, 0, 2,105,
+ 0, 0, 2,103, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 96, 0, 0, 2,103, 0, 0, 2,105, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,105, 0, 0, 2,104, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,250, 0, 0, 0, 7, 0, 0, 1, 14,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 14, 0, 0, 2,105, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 86,
+ 0, 0, 0,250, 0, 0, 2,105, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,105, 0, 0, 1, 14, 0, 0, 0, 96, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,251, 0, 0, 0, 86, 0, 0, 2,104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,104, 0, 0, 1,130,
+ 0, 0, 0,251, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0,251, 0, 0, 1,130, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,130, 0, 0, 2,104, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,106, 0, 0, 0,156, 0, 0, 1,135,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,135, 0, 0, 1, 23, 0, 0, 2,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,100,
+ 0, 0, 2,106, 0, 0, 1, 23, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 23, 0, 0, 1,135, 0, 0, 0, 41, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,106, 0, 0, 0,100, 0, 0, 2,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,107, 0, 0, 2,108,
+ 0, 0, 2,106, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,156, 0, 0, 2,106, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,108, 0, 0, 2,107, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 35, 0, 0, 1,134,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,134, 0, 0, 2,108, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 89,
+ 0, 0, 1, 1, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,108, 0, 0, 1,134, 0, 0, 0,156, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 89, 0, 0, 2,107, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,107, 0, 0, 1, 22,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 1, 22, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 22, 0, 0, 2,107, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,109, 0, 0, 0,156, 0, 0, 1,134,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,134, 0, 0, 1,136, 0, 0, 2,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,157,
+ 0, 0, 2,109, 0, 0, 1,136, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,136, 0, 0, 1,134, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,109, 0, 0, 0,157, 0, 0, 2,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,110, 0, 0, 2,111,
+ 0, 0, 2,109, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,156, 0, 0, 2,109, 0, 0, 2,111, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,111, 0, 0, 2,110, 0, 0, 0,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,139, 0, 0, 0, 41, 0, 0, 1,135,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,135, 0, 0, 2,111, 0, 0, 1,139, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,158,
+ 0, 0, 1,139, 0, 0, 2,111, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,111, 0, 0, 1,135, 0, 0, 0,156, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,138, 0, 0, 0,158, 0, 0, 2,110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,110, 0, 0, 1,137,
+ 0, 0, 1,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 40, 0, 0, 1,138, 0, 0, 1,137, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,137, 0, 0, 2,110, 0, 0, 0,157, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,112, 0, 0, 0, 99, 0, 0, 1, 20,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 20, 0, 0, 1, 24, 0, 0, 2,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,101,
+ 0, 0, 2,112, 0, 0, 1, 24, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 24, 0, 0, 1, 20, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,112, 0, 0, 0,101, 0, 0, 2,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,113, 0, 0, 2,114,
+ 0, 0, 2,112, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 99, 0, 0, 2,112, 0, 0, 2,114, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,114, 0, 0, 2,113, 0, 0, 0,158, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,138, 0, 0, 0, 40, 0, 0, 1, 21,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 21, 0, 0, 2,114, 0, 0, 1,138, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,158,
+ 0, 0, 1,138, 0, 0, 2,114, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,114, 0, 0, 1, 21, 0, 0, 0, 99, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,139, 0, 0, 0,158, 0, 0, 2,113, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,113, 0, 0, 1, 25,
+ 0, 0, 1,139, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 41, 0, 0, 1,139, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 25, 0, 0, 2,113, 0, 0, 0,101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,115, 0, 0, 0, 98, 0, 0, 1, 19,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 19, 0, 0, 1,137, 0, 0, 2,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,157,
+ 0, 0, 2,115, 0, 0, 1,137, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,137, 0, 0, 1, 19, 0, 0, 0, 40, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,115, 0, 0, 0,157, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,116, 0, 0, 2,117,
+ 0, 0, 2,115, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 98, 0, 0, 2,115, 0, 0, 2,117, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,117, 0, 0, 2,116, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,254, 0, 0, 0, 8, 0, 0, 1, 18,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 18, 0, 0, 2,117, 0, 0, 0,254, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 88,
+ 0, 0, 0,254, 0, 0, 2,117, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,117, 0, 0, 1, 18, 0, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0,255, 0, 0, 0, 88, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,116, 0, 0, 1,136,
+ 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0,255, 0, 0, 1,136, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,136, 0, 0, 2,116, 0, 0, 0,157, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,118, 0, 0, 0,159, 0, 0, 1,141,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,141, 0, 0, 1, 7, 0, 0, 2,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 92,
+ 0, 0, 2,118, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 7, 0, 0, 1,141, 0, 0, 0, 37, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,118, 0, 0, 0, 92, 0, 0, 2,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,119, 0, 0, 2,120,
+ 0, 0, 2,118, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,159, 0, 0, 2,118, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,120, 0, 0, 2,119, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 5, 0, 0, 0, 36, 0, 0, 1,140,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,140, 0, 0, 2,120, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 91,
+ 0, 0, 1, 5, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,120, 0, 0, 1,140, 0, 0, 0,159, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 4, 0, 0, 0, 91, 0, 0, 2,119, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,119, 0, 0, 1, 6,
+ 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 1, 4, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 6, 0, 0, 2,119, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,121, 0, 0, 0,159, 0, 0, 1,140,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,140, 0, 0, 1,142, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,160,
+ 0, 0, 2,121, 0, 0, 1,142, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,142, 0, 0, 1,140, 0, 0, 0, 36, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,121, 0, 0, 0,160, 0, 0, 2,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,122, 0, 0, 2,123,
+ 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,159, 0, 0, 2,121, 0, 0, 2,123, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,123, 0, 0, 2,122, 0, 0, 0,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,144, 0, 0, 0, 37, 0, 0, 1,141,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,141, 0, 0, 2,123, 0, 0, 1,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,161,
+ 0, 0, 1,144, 0, 0, 2,123, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,123, 0, 0, 1,141, 0, 0, 0,159, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,145, 0, 0, 0,161, 0, 0, 2,122, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,122, 0, 0, 1,143,
+ 0, 0, 1,145, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 41, 0, 0, 1,145, 0, 0, 1,143, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,143, 0, 0, 2,122, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,124, 0, 0, 0,101, 0, 0, 1, 24,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 24, 0, 0, 1, 8, 0, 0, 2,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 93,
+ 0, 0, 2,124, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 8, 0, 0, 1, 24, 0, 0, 0, 11, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,124, 0, 0, 0, 93, 0, 0, 2,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,125, 0, 0, 2,126,
+ 0, 0, 2,124, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,101, 0, 0, 2,124, 0, 0, 2,126, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,126, 0, 0, 2,125, 0, 0, 0,161, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,145, 0, 0, 0, 41, 0, 0, 1, 25,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 25, 0, 0, 2,126, 0, 0, 1,145, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,161,
+ 0, 0, 1,145, 0, 0, 2,126, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,126, 0, 0, 1, 25, 0, 0, 0,101, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1,144, 0, 0, 0,161, 0, 0, 2,125, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,125, 0, 0, 1, 9,
+ 0, 0, 1,144, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 37, 0, 0, 1,144, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1, 9, 0, 0, 2,125, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,127, 0, 0, 0,100, 0, 0, 1, 23,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 23, 0, 0, 1,143, 0, 0, 2,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,160,
+ 0, 0, 2,127, 0, 0, 1,143, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1,143, 0, 0, 1, 23, 0, 0, 0, 41, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 2,127, 0, 0, 0,160, 0, 0, 2,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,128, 0, 0, 2,129,
+ 0, 0, 2,127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,100, 0, 0, 2,127, 0, 0, 2,129, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 2,129, 0, 0, 2,128, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 2, 0, 0, 0, 9, 0, 0, 1, 22,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 22, 0, 0, 2,129, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 90,
+ 0, 0, 1, 2, 0, 0, 2,129, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,129, 0, 0, 1, 22, 0, 0, 0,100, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 1, 3, 0, 0, 0, 90, 0, 0, 2,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2,128, 0, 0, 1,142,
+ 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 36, 0, 0, 1, 3, 0, 0, 1,142, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 1,142, 0, 0, 2,128, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 3, 68, 65, 84, 65, 0, 0,220, 0, 7,249, 0, 32,
+ 0, 0, 0, 65, 0, 0, 5, 0, 63,110,222,166, 63, 55,205, 9, 63,105,132,212, 63, 65,236,201, 63,103,153,218, 63, 54,155,119,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,103,153,218, 63, 54,155,119, 63,108,148,118,
+ 63, 44,160,211, 63,110,222,166, 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,115, 51, 36, 63, 45, 28, 36, 63,110,222,166, 63, 55,205, 9, 63,108,148,118, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,148,118, 63, 44,160,211, 63,103,153,218, 63, 54,155,119, 63,102, 17, 87,
+ 63, 43, 52,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 81, 56, 63, 52, 55,170,
+ 63,102, 17, 87, 63, 43, 52,229, 63,103,153,218, 63, 54,155,119, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,103,153,218, 63, 54,155,119, 63, 97, 75, 9, 63, 63,233, 92, 63, 96, 81, 56, 63, 52, 55,170, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 60, 86, 49, 63, 96, 81, 56, 63, 52, 55,170,
+ 63, 97, 75, 9, 63, 63,233, 92, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 97, 75, 9,
+ 63, 63,233, 92, 63,103,153,218, 63, 54,155,119, 63,105,132,212, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 98,167,103, 63, 75, 39,168, 63, 89,153,138, 63, 82,228, 39, 63, 89,153,139, 63, 71,153,255,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 71,153,255, 63, 97, 75, 9,
+ 63, 63,233, 92, 63, 98,167,103, 63, 75, 39,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,105,132,212, 63, 65,236,201, 63, 98,167,103, 63, 75, 39,168, 63, 97, 75, 9, 63, 63,233, 92, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 97, 75, 9, 63, 63,233, 92, 63, 89,153,139, 63, 71,153,255, 63, 89,153,138,
+ 63, 60, 86, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 81, 56, 63, 52, 55,170,
+ 63, 89,153,138, 63, 60, 86, 49, 63, 89,153,139, 63, 49, 12, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 89,153,139, 63, 49, 12, 79, 63, 95,182,205, 63, 40,228,222, 63, 96, 81, 56, 63, 52, 55,170, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102, 17, 87, 63, 43, 52,229, 63, 96, 81, 56, 63, 52, 55,170,
+ 63, 95,182,205, 63, 40,228,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,182,205,
+ 63, 40,228,222, 63, 89,153,139, 63, 49, 12, 79, 63, 89,153,139, 63, 37,200, 45, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 98,167,103, 63, 75, 39,168, 63,105,132,212, 63, 65,236,201, 63,109, 83,168, 63, 78, 83,207,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,109, 83,168, 63, 78, 83,207, 63,101, 85,135,
+ 63, 88, 64,148, 63, 98,167,103, 63, 75, 39,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 89,153,138, 63, 82,228, 39, 63, 98,167,103, 63, 75, 39,168, 63,101, 85,135, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,101, 85,135, 63, 88, 64,148, 63,109, 83,168, 63, 78, 83,207, 63,115, 51, 36,
+ 63, 90, 56, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 18,162, 63, 78, 83,207,
+ 63,115, 51, 36, 63, 90, 56, 22, 63,109, 83,168, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,109, 83,168, 63, 78, 83,207, 63,115, 51, 36, 63, 67, 23,115, 63,121, 18,162, 63, 78, 83,207, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,225,116, 63, 65,236,202, 63,121, 18,162, 63, 78, 83,207,
+ 63,115, 51, 36, 63, 67, 23,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36,
+ 63, 67, 23,115, 63,109, 83,168, 63, 78, 83,207, 63,105,132,212, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,110,222,166, 63, 55,205, 9, 63,115, 51, 36, 63, 45, 28, 36, 63,119,135,163, 63, 55,205, 11,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,119,135,163, 63, 55,205, 11, 63,115, 51, 36,
+ 63, 67, 23,115, 63,110,222,166, 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,105,132,212, 63, 65,236,201, 63,110,222,166, 63, 55,205, 9, 63,115, 51, 36, 63, 67, 23,115, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 67, 23,115, 63,119,135,163, 63, 55,205, 11, 63,124,225,116,
+ 63, 65,236,202, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 18,162, 63, 78, 83,207,
+ 63,124,225,116, 63, 65,236,202, 63,129,223,113, 63, 75, 39,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,129,223,113, 63, 75, 39,170, 63,128,136, 98, 63, 88, 64,148, 63,121, 18,162, 63, 78, 83,207, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 90, 56, 22, 63,121, 18,162, 63, 78, 83,207,
+ 63,128,136, 98, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 59,136, 98, 95,
+ 63, 88, 64,148, 60,111,184,160, 63, 75, 39,170, 61, 76,203,243, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,243, 63, 49, 12, 82, 61, 76,203,246, 63, 60, 86, 53, 60,194,162, 31, 63, 52, 55,172,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,194,162, 31, 63, 52, 55,172, 60,213,239,111,
+ 63, 40,228,223, 61, 76,203,243, 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61, 76,203,246, 63, 37,200, 48, 61, 76,203,243, 63, 49, 12, 82, 60,213,239,111, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,213,239,111, 63, 40,228,223, 60,194,162, 31, 63, 52, 55,172, 58,169,226,120,
+ 63, 43, 52,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,126,204,111, 63, 54,155,121,
+ 63,128, 42,121, 63, 43, 52,230, 63,131, 10,136, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,131, 10,136, 63, 52, 55,172, 63,130,141,160, 63, 63,233, 95, 63,126,204,111, 63, 54,155,121, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,225,116, 63, 65,236,202, 63,126,204,111, 63, 54,155,121,
+ 63,130,141,160, 63, 63,233, 95, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,163,104, 11,
+ 63, 63,233, 95, 60,194,162, 31, 63, 52, 55,172, 61, 76,203,246, 63, 60, 86, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,244, 63, 71,154, 2, 61, 76,203,243, 63, 82,228, 41, 60,111,184,160, 63, 75, 39,170,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,111,184,160, 63, 75, 39,170, 60,163,104, 11,
+ 63, 63,233, 95, 61, 76,203,244, 63, 71,154, 2, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61, 76,203,246, 63, 60, 86, 53, 61, 76,203,244, 63, 71,154, 2, 60,163,104, 11, 63, 63,233, 95, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,130,141,160, 63, 63,233, 95, 63,129,223,113, 63, 75, 39,170, 63,124,225,116,
+ 63, 65,236,202, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,126,204,111, 63, 54,155,121,
+ 63,124,225,116, 63, 65,236,202, 63,119,135,163, 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,119,135,163, 63, 55,205, 11, 63,121,209,210, 63, 44,160,212, 63,126,204,111, 63, 54,155,121, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,128, 42,121, 63, 43, 52,230, 63,126,204,111, 63, 54,155,121,
+ 63,121,209,210, 63, 44,160,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,209,210,
+ 63, 44,160,212, 63,119,135,163, 63, 55,205, 11, 63,115, 51, 36, 63, 45, 28, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,134,102, 95, 63, 94, 46, 79, 63,134,102, 95, 63,105,114, 22, 63,124,205, 52, 63, 99, 26, 58,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,205, 52, 63, 99, 26, 58, 63,128,136, 98,
+ 63, 88, 64,148, 63,134,102, 95, 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61, 76,203,243, 63, 82,228, 41, 61, 76,203,234, 63, 94, 46, 79, 59,136, 98, 95, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,128,136, 98, 63, 88, 64,148, 63,124,205, 52, 63, 99, 26, 58, 63,115, 51, 36,
+ 63, 90, 56, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,153, 21, 63, 99, 26, 58,
+ 63,115, 51, 36, 63, 90, 56, 22, 63,124,205, 52, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,124,205, 52, 63, 99, 26, 58, 63,115, 51, 32, 63,109,154,212, 63,105,153, 21, 63, 99, 26, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63,105,114, 19, 63,105,153, 21, 63, 99, 26, 58,
+ 63,115, 51, 32, 63,109,154,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 32,
+ 63,109,154,212, 63,124,205, 52, 63, 99, 26, 58, 63,134,102, 95, 63,105,114, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,134,102, 95, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 63, 89,153,136, 63,116,187,242,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,136, 63,116,187,242, 63,115, 51, 32,
+ 63,109,154,212, 63,134,102, 95, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,134,102, 95, 63,105,114, 22, 63,134,102, 95, 63,116,187,242, 63,115, 51, 32, 63,109,154,212, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 32, 63,109,154,212, 63, 89,153,136, 63,116,187,242, 63, 89,153,138,
+ 63,105,114, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,153, 21, 63, 99, 26, 58,
+ 63, 89,153,138, 63,105,114, 19, 63, 89,153,138, 63, 94, 46, 77, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 89,153,138, 63, 94, 46, 77, 63,101, 85,135, 63, 88, 64,148, 63,105,153, 21, 63, 99, 26, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 90, 56, 22, 63,105,153, 21, 63, 99, 26, 58,
+ 63,101, 85,135, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,101, 85,135,
+ 63, 88, 64,148, 63, 89,153,138, 63, 94, 46, 77, 63, 89,153,138, 63, 82,228, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 75,153, 67, 63, 54,155,113, 63, 73,174, 74, 63, 65,236,193, 63, 68, 84,124, 63, 55,204,255,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 68, 84,124, 63, 55,204,255, 63, 70,158,169,
+ 63, 44,160,200, 63, 75,153, 67, 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 77, 33,196, 63, 43, 52,221, 63, 75,153, 67, 63, 54,155,113, 63, 70,158,169, 63, 44,160,200, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,158,169, 63, 44,160,200, 63, 68, 84,124, 63, 55,204,255, 63, 64, 0, 0,
+ 63, 45, 28, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 75,153, 67, 63, 54,155,113,
+ 63, 77, 33,196, 63, 43, 52,221, 63, 82,225,225, 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 82,225,225, 63, 52, 55,165, 63, 81,232, 16, 63, 63,233, 89, 63, 75,153, 67, 63, 54,155,113, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,174, 74, 63, 65,236,193, 63, 75,153, 67, 63, 54,155,113,
+ 63, 81,232, 16, 63, 63,233, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 81,232, 16,
+ 63, 63,233, 89, 63, 82,225,225, 63, 52, 55,165, 63, 89,153,138, 63, 60, 86, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 71,153,255, 63, 89,153,138, 63, 82,228, 39, 63, 80,139,179, 63, 75, 39,164,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 80,139,179, 63, 75, 39,164, 63, 81,232, 16,
+ 63, 63,233, 89, 63, 89,153,139, 63, 71,153,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 89,153,138, 63, 60, 86, 49, 63, 89,153,139, 63, 71,153,255, 63, 81,232, 16, 63, 63,233, 89, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 81,232, 16, 63, 63,233, 89, 63, 80,139,179, 63, 75, 39,164, 63, 73,174, 74,
+ 63, 65,236,193, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 49, 12, 79,
+ 63, 89,153,138, 63, 60, 86, 49, 63, 82,225,225, 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 82,225,225, 63, 52, 55,165, 63, 83,124, 75, 63, 40,228,217, 63, 89,153,139, 63, 49, 12, 79, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 37,200, 45, 63, 89,153,139, 63, 49, 12, 79,
+ 63, 83,124, 75, 63, 40,228,217, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83,124, 75,
+ 63, 40,228,217, 63, 82,225,225, 63, 52, 55,165, 63, 77, 33,196, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 69,223,120, 63, 78, 83,198, 63, 73,174, 74, 63, 65,236,193, 63, 80,139,179, 63, 75, 39,164,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 80,139,179, 63, 75, 39,164, 63, 77,221,148,
+ 63, 88, 64,140, 63, 69,223,120, 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 63, 90, 56, 12, 63, 69,223,120, 63, 78, 83,198, 63, 77,221,148, 63, 88, 64,140, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 77,221,148, 63, 88, 64,140, 63, 80,139,179, 63, 75, 39,164, 63, 89,153,138,
+ 63, 82,228, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 69,223,120, 63, 78, 83,198,
+ 63, 64, 0, 0, 63, 90, 56, 12, 63, 58, 32,136, 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 58, 32,136, 63, 78, 83,198, 63, 64, 0, 0, 63, 67, 23,106, 63, 69,223,120, 63, 78, 83,198, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,174, 74, 63, 65,236,193, 63, 69,223,120, 63, 78, 83,198,
+ 63, 64, 0, 0, 63, 67, 23,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0,
+ 63, 67, 23,106, 63, 58, 32,136, 63, 78, 83,198, 63, 54, 81,182, 63, 65,236,193, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 59,171,132, 63, 55,204,255, 63, 64, 0, 0, 63, 45, 28, 24, 63, 68, 84,124, 63, 55,204,255,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 68, 84,124, 63, 55,204,255, 63, 64, 0, 0,
+ 63, 67, 23,106, 63, 59,171,132, 63, 55,204,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 54, 81,182, 63, 65,236,193, 63, 59,171,132, 63, 55,204,255, 63, 64, 0, 0, 63, 67, 23,106, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 67, 23,106, 63, 68, 84,124, 63, 55,204,255, 63, 73,174, 74,
+ 63, 65,236,193, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 47,116, 77, 63, 75, 39,164,
+ 63, 54, 81,182, 63, 65,236,193, 63, 58, 32,136, 63, 78, 83,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 58, 32,136, 63, 78, 83,198, 63, 50, 34,108, 63, 88, 64,140, 63, 47,116, 77, 63, 75, 39,164, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63, 82,228, 38, 63, 47,116, 77, 63, 75, 39,164,
+ 63, 50, 34,108, 63, 88, 64,140, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 50, 34,108,
+ 63, 88, 64,140, 63, 58, 32,136, 63, 78, 83,198, 63, 64, 0, 0, 63, 90, 56, 12, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 30, 31, 63, 52, 55,165, 63, 38,102,117, 63, 60, 86, 50, 63, 38,102,117, 63, 49, 12, 78,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 49, 12, 78, 63, 44,131,181,
+ 63, 40,228,216, 63, 45, 30, 31, 63, 52, 55,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 50,222, 60, 63, 43, 52,221, 63, 45, 30, 31, 63, 52, 55,165, 63, 44,131,181, 63, 40,228,216, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44,131,181, 63, 40,228,216, 63, 38,102,117, 63, 49, 12, 78, 63, 38,102,117,
+ 63, 37,200, 45, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 30, 31, 63, 52, 55,165,
+ 63, 50,222, 60, 63, 43, 52,221, 63, 52,102,189, 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 52,102,189, 63, 54,155,113, 63, 46, 23,240, 63, 63,233, 89, 63, 45, 30, 31, 63, 52, 55,165, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 60, 86, 50, 63, 45, 30, 31, 63, 52, 55,165,
+ 63, 46, 23,240, 63, 63,233, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 46, 23,240,
+ 63, 63,233, 89, 63, 52,102,189, 63, 54,155,113, 63, 54, 81,182, 63, 65,236,193, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 47,116, 77, 63, 75, 39,164, 63, 38,102,118, 63, 82,228, 38, 63, 38,102,117, 63, 71,153,255,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 71,153,255, 63, 46, 23,240,
+ 63, 63,233, 89, 63, 47,116, 77, 63, 75, 39,164, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 54, 81,182, 63, 65,236,193, 63, 47,116, 77, 63, 75, 39,164, 63, 46, 23,240, 63, 63,233, 89, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 46, 23,240, 63, 63,233, 89, 63, 38,102,117, 63, 71,153,255, 63, 38,102,117,
+ 63, 60, 86, 50, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 59,171,132, 63, 55,204,255,
+ 63, 54, 81,182, 63, 65,236,193, 63, 52,102,189, 63, 54,155,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 52,102,189, 63, 54,155,113, 63, 57, 97, 87, 63, 44,160,200, 63, 59,171,132, 63, 55,204,255, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 45, 28, 24, 63, 59,171,132, 63, 55,204,255,
+ 63, 57, 97, 87, 63, 44,160,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 97, 87,
+ 63, 44,160,200, 63, 52,102,189, 63, 54,155,113, 63, 50,222, 60, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,101,250, 63, 99, 26, 51, 63, 38,102,118, 63,105,114, 19, 63, 38,102,118, 63, 94, 46, 77,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63, 94, 46, 77, 63, 50, 34,108,
+ 63, 88, 64,140, 63, 54,101,250, 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 63, 90, 56, 12, 63, 54,101,250, 63, 99, 26, 51, 63, 50, 34,108, 63, 88, 64,140, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 50, 34,108, 63, 88, 64,140, 63, 38,102,118, 63, 94, 46, 77, 63, 38,102,118,
+ 63, 82,228, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,101,250, 63, 99, 26, 51,
+ 63, 64, 0, 0, 63, 90, 56, 12, 63, 73,154, 6, 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 73,154, 6, 63, 99, 26, 51, 63, 64, 0, 0, 63,109,154,206, 63, 54,101,250, 63, 99, 26, 51, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63,105,114, 19, 63, 54,101,250, 63, 99, 26, 51,
+ 63, 64, 0, 0, 63,109,154,206, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0,
+ 63,109,154,206, 63, 73,154, 6, 63, 99, 26, 51, 63, 89,153,138, 63,105,114, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,136, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 63, 38,102,120, 63,116,187,242,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,120, 63,116,187,242, 63, 64, 0, 0,
+ 63,109,154,206, 63, 89,153,136, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 89,153,138, 63,105,114, 19, 63, 89,153,136, 63,116,187,242, 63, 64, 0, 0, 63,109,154,206, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63,109,154,206, 63, 38,102,120, 63,116,187,242, 63, 38,102,118,
+ 63,105,114, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 94, 46, 77,
+ 63, 89,153,138, 63,105,114, 19, 63, 73,154, 6, 63, 99, 26, 51, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 73,154, 6, 63, 99, 26, 51, 63, 77,221,148, 63, 88, 64,140, 63, 89,153,138, 63, 94, 46, 77, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,138, 63, 82,228, 39, 63, 89,153,138, 63, 94, 46, 77,
+ 63, 77,221,148, 63, 88, 64,140, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 77,221,148,
+ 63, 88, 64,140, 63, 73,154, 6, 63, 99, 26, 51, 63, 64, 0, 0, 63, 90, 56, 12, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 8, 71,167, 63, 55,205, 7, 61,229,192,170, 63, 65,236,200, 61,214,104,203, 63, 54,155,120,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,214,104,203, 63, 54,155,120, 61,254, 61,201,
+ 63, 44,160,207, 62, 8, 71,167, 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 25,153,173, 63, 45, 28, 27, 62, 8, 71,167, 63, 55,205, 7, 61,254, 61,201, 63, 44,160,207, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,254, 61,201, 63, 44,160,207, 61,214,104,203, 63, 54,155,120, 61,202, 36,175,
+ 63, 43, 52,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,156, 35,145, 63, 52, 55,172,
+ 61,202, 36,175, 63, 43, 52,228, 61,214,104,203, 63, 54,155,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,214,104,203, 63, 54,155,120, 61,163,242, 32, 63, 63,233, 96, 61,156, 35,145, 63, 52, 55,172, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,246, 63, 60, 86, 53, 61,156, 35,145, 63, 52, 55,172,
+ 61,163,242, 32, 63, 63,233, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,163,242, 32,
+ 63, 63,233, 96, 61,214,104,203, 63, 54,155,120, 61,229,192,170, 63, 65,236,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,174,213, 17, 63, 75, 39,171, 61, 76,203,243, 63, 82,228, 41, 61, 76,203,244, 63, 71,154, 2,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,244, 63, 71,154, 2, 61,163,242, 32,
+ 63, 63,233, 96, 61,174,213, 17, 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,229,192,170, 63, 65,236,200, 61,174,213, 17, 63, 75, 39,171, 61,163,242, 32, 63, 63,233, 96, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,163,242, 32, 63, 63,233, 96, 61, 76,203,244, 63, 71,154, 2, 61, 76,203,246,
+ 63, 60, 86, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,156, 35,145, 63, 52, 55,172,
+ 61, 76,203,246, 63, 60, 86, 53, 61, 76,203,243, 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61, 76,203,243, 63, 49, 12, 82, 61,151, 80, 53, 63, 40,228,223, 61,156, 35,145, 63, 52, 55,172, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,202, 36,175, 63, 43, 52,228, 61,156, 35,145, 63, 52, 55,172,
+ 61,151, 80, 53, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,151, 80, 53,
+ 63, 40,228,223, 61, 76,203,243, 63, 49, 12, 82, 61, 76,203,246, 63, 37,200, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,174,213, 17, 63, 75, 39,171, 61,229,192,170, 63, 65,236,200, 62, 2, 27,169, 63, 78, 83,204,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 2, 27,169, 63, 78, 83,204, 61,196, 70, 23,
+ 63, 88, 64,147, 61,174,213, 17, 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61, 76,203,243, 63, 82,228, 41, 61,174,213, 17, 63, 75, 39,171, 61,196, 70, 23, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,196, 70, 23, 63, 88, 64,147, 62, 2, 27,169, 63, 78, 83,204, 62, 25,153,160,
+ 63, 90, 56, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 49, 23,162, 63, 78, 83,195,
+ 62, 25,153,160, 63, 90, 56, 14, 62, 2, 27,169, 63, 78, 83,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 2, 27,169, 63, 78, 83,204, 62, 25,153,172, 63, 67, 23,108, 62, 49, 23,162, 63, 78, 83,195, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 82,240, 63, 65,236,183, 62, 49, 23,162, 63, 78, 83,195,
+ 62, 25,153,172, 63, 67, 23,108, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,172,
+ 63, 67, 23,108, 62, 2, 27,169, 63, 78, 83,204, 61,229,192,170, 63, 65,236,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 8, 71,167, 63, 55,205, 7, 62, 25,153,173, 63, 45, 28, 27, 62, 42,235,173, 63, 55,204,254,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 42,235,173, 63, 55,204,254, 62, 25,153,172,
+ 63, 67, 23,108, 62, 8, 71,167, 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,229,192,170, 63, 65,236,200, 62, 8, 71,167, 63, 55,205, 7, 62, 25,153,172, 63, 67, 23,108, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,172, 63, 67, 23,108, 62, 42,235,173, 63, 55,204,254, 62, 64, 82,240,
+ 63, 65,236,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 49, 23,162, 63, 78, 83,195,
+ 62, 64, 82,240, 63, 65,236,183, 62, 91,200,166, 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 91,200,166, 63, 75, 39,147, 62, 81, 16, 34, 63, 88, 64,131, 62, 49, 23,162, 63, 78, 83,195, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,160, 63, 90, 56, 14, 62, 49, 23,162, 63, 78, 83,195,
+ 62, 81, 16, 34, 63, 88, 64,131, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 81, 16, 34,
+ 63, 88, 64,131, 62, 91,200,166, 63, 75, 39,147, 62,128, 0, 0, 63, 82,228, 13, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 49, 12, 47, 62,128, 0, 0, 63, 60, 86, 19, 62,101, 33, 92, 63, 52, 55,146,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,101, 33, 92, 63, 52, 55,146, 62,103,139, 14,
+ 63, 40,228,199, 62,128, 0, 0, 63, 49, 12, 47, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 63, 37,200, 23, 62,128, 0, 0, 63, 49, 12, 47, 62,103,139, 14, 63, 40,228,199, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,103,139, 14, 63, 40,228,199, 62,101, 33, 92, 63, 52, 55,146, 62, 78, 32,230,
+ 63, 43, 52,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 71,254,223, 63, 54,155,102,
+ 62, 78, 32,230, 63, 43, 52,211, 62,101, 33, 92, 63, 52, 55,146, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,101, 33, 92, 63, 52, 55,146, 62, 97, 58, 23, 63, 63,233, 69, 62, 71,254,223, 63, 54,155,102, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 82,240, 63, 65,236,183, 62, 71,254,223, 63, 54,155,102,
+ 62, 97, 58, 23, 63, 63,233, 69, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 97, 58, 23,
+ 63, 63,233, 69, 62,101, 33, 92, 63, 52, 55,146, 62,128, 0, 0, 63, 60, 86, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 71,153,228, 62,128, 0, 0, 63, 82,228, 13, 62, 91,200,166, 63, 75, 39,147,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 91,200,166, 63, 75, 39,147, 62, 97, 58, 23,
+ 63, 63,233, 69, 62,128, 0, 0, 63, 71,153,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 63, 60, 86, 19, 62,128, 0, 0, 63, 71,153,228, 62, 97, 58, 23, 63, 63,233, 69, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 97, 58, 23, 63, 63,233, 69, 62, 91,200,166, 63, 75, 39,147, 62, 64, 82,240,
+ 63, 65,236,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 71,254,223, 63, 54,155,102,
+ 62, 64, 82,240, 63, 65,236,183, 62, 42,235,173, 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 42,235,173, 63, 55,204,254, 62, 52, 20,105, 63, 44,160,198, 62, 71,254,223, 63, 54,155,102, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 78, 32,230, 63, 43, 52,211, 62, 71,254,223, 63, 54,155,102,
+ 62, 52, 20,105, 63, 44,160,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52, 20,105,
+ 63, 44,160,198, 62, 42,235,173, 63, 55,204,254, 62, 25,153,173, 63, 45, 28, 27, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 94, 46, 58, 62,128, 0, 0, 63,105,114, 8, 62, 64, 1,230, 63, 99, 26, 49,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64, 1,230, 63, 99, 26, 49, 62, 81, 16, 34,
+ 63, 88, 64,131, 62,128, 0, 0, 63, 94, 46, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 63, 82,228, 13, 62,128, 0, 0, 63, 94, 46, 58, 62, 81, 16, 34, 63, 88, 64,131, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 81, 16, 34, 63, 88, 64,131, 62, 64, 1,230, 63, 99, 26, 49, 62, 25,153,160,
+ 63, 90, 56, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,230, 98,164, 63, 99, 26, 58,
+ 62, 25,153,160, 63, 90, 56, 14, 62, 64, 1,230, 63, 99, 26, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 64, 1,230, 63, 99, 26, 49, 62, 25,153,159, 63,109,154,210, 61,230, 98,164, 63, 99, 26, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,237, 63,105,114, 22, 61,230, 98,164, 63, 99, 26, 58,
+ 62, 25,153,159, 63,109,154,210, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,159,
+ 63,109,154,210, 62, 64, 1,230, 63, 99, 26, 49, 62,128, 0, 0, 63,105,114, 8, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63,116,187,232, 63, 59,153, 3, 63,128, 0, 0, 63,134,102, 95, 63,116,187,242,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,210, 63,116,187,242, 62, 25,153,159,
+ 63,109,154,210, 62,128, 0, 0, 63,116,187,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 63,105,114, 8, 62,128, 0, 0, 63,116,187,232, 62, 25,153,159, 63,109,154,210, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,159, 63,109,154,210, 61, 76,203,210, 63,116,187,242, 61, 76,203,237,
+ 63,105,114, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,230, 98,164, 63, 99, 26, 58,
+ 61, 76,203,237, 63,105,114, 22, 61, 76,203,234, 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61, 76,203,234, 63, 94, 46, 79, 61,196, 70, 23, 63, 88, 64,147, 61,230, 98,164, 63, 99, 26, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,160, 63, 90, 56, 14, 61,230, 98,164, 63, 99, 26, 58,
+ 61,196, 70, 23, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,196, 70, 23,
+ 63, 88, 64,147, 61, 76,203,234, 63, 94, 46, 79, 61, 76,203,243, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,170,138, 42, 63, 55,204,254, 62,159,214,136, 63, 65,236,183, 62,156, 0,145, 63, 54,155,102,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,156, 0,145, 63, 54,155,102, 62,165,245,204,
+ 63, 44,160,198, 62,170,138, 42, 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,179, 51, 42, 63, 45, 28, 28, 62,170,138, 42, 63, 55,204,254, 62,165,245,204, 63, 44,160,198, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,245,204, 63, 44,160,198, 62,156, 0,145, 63, 54,155,102, 62,152,239,141,
+ 63, 43, 52,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,111, 82, 63, 52, 55,146,
+ 62,152,239,141, 63, 43, 52,211, 62,156, 0,145, 63, 54,155,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,156, 0,145, 63, 54,155,102, 62,143, 98,245, 63, 63,233, 68, 62,141,111, 82, 63, 52, 55,146, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 60, 86, 19, 62,141,111, 82, 63, 52, 55,146,
+ 62,143, 98,245, 63, 63,233, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,143, 98,245,
+ 63, 63,233, 68, 62,156, 0,145, 63, 54,155,102, 62,159,214,136, 63, 65,236,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,146, 27,173, 63, 75, 39,147, 62,128, 0, 0, 63, 82,228, 13, 62,128, 0, 0, 63, 71,153,228,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 71,153,228, 62,143, 98,245,
+ 63, 63,233, 68, 62,146, 27,173, 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,159,214,136, 63, 65,236,183, 62,146, 27,173, 63, 75, 39,147, 62,143, 98,245, 63, 63,233, 68, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,143, 98,245, 63, 63,233, 68, 62,128, 0, 0, 63, 71,153,228, 62,128, 0, 0,
+ 63, 60, 86, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,111, 82, 63, 52, 55,146,
+ 62,128, 0, 0, 63, 60, 86, 19, 62,128, 0, 0, 63, 49, 12, 47, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,128, 0, 0, 63, 49, 12, 47, 62,140, 58,121, 63, 40,228,199, 62,141,111, 82, 63, 52, 55,146, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,152,239,141, 63, 43, 52,211, 62,141,111, 82, 63, 52, 55,146,
+ 62,140, 58,121, 63, 40,228,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,140, 58,121,
+ 63, 40,228,199, 62,128, 0, 0, 63, 49, 12, 47, 62,128, 0, 0, 63, 37,200, 23, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,146, 27,173, 63, 75, 39,147, 62,159,214,136, 63, 65,236,183, 62,167,116, 47, 63, 78, 83,195,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,167,116, 47, 63, 78, 83,195, 62,151,119,239,
+ 63, 88, 64,131, 62,146, 27,173, 63, 75, 39,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 63, 82,228, 13, 62,146, 27,173, 63, 75, 39,147, 62,151,119,239, 63, 88, 64,131, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,151,119,239, 63, 88, 64,131, 62,167,116, 47, 63, 78, 83,195, 62,179, 51, 49,
+ 63, 90, 56, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,190,242, 44, 63, 78, 83,205,
+ 62,179, 51, 49, 63, 90, 56, 14, 62,167,116, 47, 63, 78, 83,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,167,116, 47, 63, 78, 83,195, 62,179, 51, 42, 63, 67, 23,108, 62,190,242, 44, 63, 78, 83,205, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,143,214, 63, 65,236,200, 62,190,242, 44, 63, 78, 83,205,
+ 62,179, 51, 42, 63, 67, 23,108, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 42,
+ 63, 67, 23,108, 62,167,116, 47, 63, 78, 83,195, 62,159,214,136, 63, 65,236,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,170,138, 42, 63, 55,204,254, 62,179, 51, 42, 63, 45, 28, 28, 62,187,220, 45, 63, 55,205, 7,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,187,220, 45, 63, 55,205, 7, 62,179, 51, 42,
+ 63, 67, 23,108, 62,170,138, 42, 63, 55,204,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,159,214,136, 63, 65,236,183, 62,170,138, 42, 63, 55,204,254, 62,179, 51, 42, 63, 67, 23,108, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 42, 63, 67, 23,108, 62,187,220, 45, 63, 55,205, 7, 62,198,143,214,
+ 63, 65,236,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,190,242, 44, 63, 78, 83,205,
+ 62,198,143,214, 63, 65,236,200, 62,212, 74,188, 63, 75, 39,171, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,212, 74,188, 63, 75, 39,171, 62,206,238,122, 63, 88, 64,147, 62,190,242, 44, 63, 78, 83,205, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49, 63, 90, 56, 14, 62,190,242, 44, 63, 78, 83,205,
+ 62,206,238,122, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,206,238,122,
+ 63, 88, 64,147, 62,212, 74,188, 63, 75, 39,171, 62,230,102,130, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130, 63, 49, 12, 82, 62,230,102,129, 63, 60, 86, 53, 62,216,247, 28, 63, 52, 55,172,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,247, 28, 63, 52, 55,172, 62,218, 43,243,
+ 63, 40,228,223, 62,230,102,130, 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102,129, 63, 37,200, 48, 62,230,102,130, 63, 49, 12, 82, 62,218, 43,243, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,218, 43,243, 63, 40,228,223, 62,216,247, 28, 63, 52, 55,172, 62,205,118,212,
+ 63, 43, 52,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,202,101,206, 63, 54,155,120,
+ 62,205,118,212, 63, 43, 52,228, 62,216,247, 28, 63, 52, 55,172, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,216,247, 28, 63, 52, 55,172, 62,215, 3,120, 63, 63,233, 95, 62,202,101,206, 63, 54,155,120, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,143,214, 63, 65,236,200, 62,202,101,206, 63, 54,155,120,
+ 62,215, 3,120, 63, 63,233, 95, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,215, 3,120,
+ 63, 63,233, 95, 62,216,247, 28, 63, 52, 55,172, 62,230,102,129, 63, 60, 86, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130, 63, 71,154, 1, 62,230,102,130, 63, 82,228, 41, 62,212, 74,188, 63, 75, 39,171,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,212, 74,188, 63, 75, 39,171, 62,215, 3,120,
+ 63, 63,233, 95, 62,230,102,130, 63, 71,154, 1, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102,129, 63, 60, 86, 53, 62,230,102,130, 63, 71,154, 1, 62,215, 3,120, 63, 63,233, 95, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,215, 3,120, 63, 63,233, 95, 62,212, 74,188, 63, 75, 39,171, 62,198,143,214,
+ 63, 65,236,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,202,101,206, 63, 54,155,120,
+ 62,198,143,214, 63, 65,236,200, 62,187,220, 45, 63, 55,205, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,187,220, 45, 63, 55,205, 7, 62,192,112,142, 63, 44,160,207, 62,202,101,206, 63, 54,155,120, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,205,118,212, 63, 43, 52,228, 62,202,101,206, 63, 54,155,120,
+ 62,192,112,142, 63, 44,160,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,112,142,
+ 63, 44,160,207, 62,187,220, 45, 63, 55,205, 7, 62,179, 51, 42, 63, 45, 28, 28, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,131, 63, 94, 46, 79, 62,230,102,131, 63,105,114, 22, 62,198,103, 87, 63, 99, 26, 58,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,103, 87, 63, 99, 26, 58, 62,206,238,122,
+ 63, 88, 64,147, 62,230,102,131, 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102,130, 63, 82,228, 41, 62,230,102,131, 63, 94, 46, 79, 62,206,238,122, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,206,238,122, 63, 88, 64,147, 62,198,103, 87, 63, 99, 26, 58, 62,179, 51, 49,
+ 63, 90, 56, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,255, 14, 63, 99, 26, 49,
+ 62,179, 51, 49, 63, 90, 56, 14, 62,198,103, 87, 63, 99, 26, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,198,103, 87, 63, 99, 26, 58, 62,179, 51, 49, 63,109,154,210, 62,159,255, 14, 63, 99, 26, 49, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63,105,114, 8, 62,159,255, 14, 63, 99, 26, 49,
+ 62,179, 51, 49, 63,109,154,210, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49,
+ 63,109,154,210, 62,198,103, 87, 63, 99, 26, 58, 62,230,102,131, 63,105,114, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,134, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 62,128, 0, 0, 63,116,187,232,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63,116,187,232, 62,179, 51, 49,
+ 63,109,154,210, 62,230,102,134, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102,131, 63,105,114, 22, 62,230,102,134, 63,116,187,242, 62,179, 51, 49, 63,109,154,210, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49, 63,109,154,210, 62,128, 0, 0, 63,116,187,232, 62,128, 0, 0,
+ 63,105,114, 8, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,255, 14, 63, 99, 26, 49,
+ 62,128, 0, 0, 63,105,114, 8, 62,128, 0, 0, 63, 94, 46, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,128, 0, 0, 63, 94, 46, 58, 62,151,119,239, 63, 88, 64,131, 62,159,255, 14, 63, 99, 26, 49, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 49, 63, 90, 56, 14, 62,159,255, 14, 63, 99, 26, 49,
+ 62,151,119,239, 63, 88, 64,131, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,151,119,239,
+ 63, 88, 64,131, 62,128, 0, 0, 63, 94, 46, 58, 62,128, 0, 0, 63, 82,228, 13, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 8,120, 93, 63, 55,205, 11, 63, 3, 30,140, 63, 65,236,201, 63, 1, 51,145, 63, 54,155,121,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 1, 51,145, 63, 54,155,121, 63, 6, 46, 46,
+ 63, 44,160,211, 63, 8,120, 93, 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 12,204,220, 63, 45, 28, 35, 63, 8,120, 93, 63, 55,205, 11, 63, 6, 46, 46, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 46, 46, 63, 44,160,211, 63, 1, 51,145, 63, 54,155,121, 62,255, 86, 30,
+ 63, 43, 52,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,213,222, 63, 52, 55,172,
+ 62,255, 86, 30, 63, 43, 52,230, 63, 1, 51,145, 63, 54,155,121, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 1, 51,145, 63, 54,155,121, 62,245,201,128, 63, 63,233, 94, 62,243,213,222, 63, 52, 55,172, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,129, 63, 60, 86, 53, 62,243,213,222, 63, 52, 55,172,
+ 62,245,201,128, 63, 63,233, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,245,201,128,
+ 63, 63,233, 94, 63, 1, 51,145, 63, 54,155,121, 63, 3, 30,140, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,248,130, 59, 63, 75, 39,169, 62,230,102,130, 63, 82,228, 41, 62,230,102,130, 63, 71,154, 1,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,130, 63, 71,154, 1, 62,245,201,128,
+ 63, 63,233, 94, 62,248,130, 59, 63, 75, 39,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 3, 30,140, 63, 65,236,201, 62,248,130, 59, 63, 75, 39,169, 62,245,201,128, 63, 63,233, 94, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,245,201,128, 63, 63,233, 94, 62,230,102,130, 63, 71,154, 1, 62,230,102,129,
+ 63, 60, 86, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,213,222, 63, 52, 55,172,
+ 62,230,102,129, 63, 60, 86, 53, 62,230,102,130, 63, 49, 12, 82, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,230,102,130, 63, 49, 12, 82, 62,242,161, 9, 63, 40,228,223, 62,243,213,222, 63, 52, 55,172, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,255, 86, 30, 63, 43, 52,230, 62,243,213,222, 63, 52, 55,172,
+ 62,242,161, 9, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,242,161, 9,
+ 63, 40,228,223, 62,230,102,130, 63, 49, 12, 82, 62,230,102,129, 63, 37,200, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,248,130, 59, 63, 75, 39,169, 63, 3, 30,140, 63, 65,236,201, 63, 6,237, 94, 63, 78, 83,207,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,237, 94, 63, 78, 83,207, 62,253,222,118,
+ 63, 88, 64,148, 62,248,130, 59, 63, 75, 39,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102,130, 63, 82,228, 41, 62,248,130, 59, 63, 75, 39,169, 62,253,222,118, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,253,222,118, 63, 88, 64,148, 63, 6,237, 94, 63, 78, 83,207, 63, 12,204,220,
+ 63, 90, 56, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,172, 88, 63, 78, 83,207,
+ 63, 12,204,220, 63, 90, 56, 22, 63, 6,237, 94, 63, 78, 83,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 6,237, 94, 63, 78, 83,207, 63, 12,204,220, 63, 67, 23,115, 63, 18,172, 88, 63, 78, 83,207, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,123, 44, 63, 65,236,201, 63, 18,172, 88, 63, 78, 83,207,
+ 63, 12,204,220, 63, 67, 23,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220,
+ 63, 67, 23,115, 63, 6,237, 94, 63, 78, 83,207, 63, 3, 30,140, 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 8,120, 93, 63, 55,205, 11, 63, 12,204,220, 63, 45, 28, 35, 63, 17, 33, 91, 63, 55,205, 9,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 17, 33, 91, 63, 55,205, 9, 63, 12,204,220,
+ 63, 67, 23,115, 63, 8,120, 93, 63, 55,205, 11, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 3, 30,140, 63, 65,236,201, 63, 8,120, 93, 63, 55,205, 11, 63, 12,204,220, 63, 67, 23,115, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 67, 23,115, 63, 17, 33, 91, 63, 55,205, 9, 63, 22,123, 44,
+ 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,172, 88, 63, 78, 83,207,
+ 63, 22,123, 44, 63, 65,236,201, 63, 29, 88,153, 63, 75, 39,167, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 29, 88,153, 63, 75, 39,167, 63, 26,170,121, 63, 88, 64,147, 63, 18,172, 88, 63, 78, 83,207, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 90, 56, 22, 63, 18,172, 88, 63, 78, 83,207,
+ 63, 26,170,121, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 26,170,121,
+ 63, 88, 64,147, 63, 29, 88,153, 63, 75, 39,167, 63, 38,102,118, 63, 82,228, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 49, 12, 78, 63, 38,102,117, 63, 60, 86, 50, 63, 31,174,200, 63, 52, 55,169,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,174,200, 63, 52, 55,169, 63, 32, 73, 51,
+ 63, 40,228,221, 63, 38,102,117, 63, 49, 12, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,117, 63, 37,200, 45, 63, 38,102,117, 63, 49, 12, 78, 63, 32, 73, 51, 63, 40,228,221, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32, 73, 51, 63, 40,228,221, 63, 31,174,200, 63, 52, 55,169, 63, 25,238,169,
+ 63, 43, 52,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,102, 39, 63, 54,155,119,
+ 63, 25,238,169, 63, 43, 52,229, 63, 31,174,200, 63, 52, 55,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 31,174,200, 63, 52, 55,169, 63, 30,180,246, 63, 63,233, 92, 63, 24,102, 39, 63, 54,155,119, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,123, 44, 63, 65,236,201, 63, 24,102, 39, 63, 54,155,119,
+ 63, 30,180,246, 63, 63,233, 92, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 30,180,246,
+ 63, 63,233, 92, 63, 31,174,200, 63, 52, 55,169, 63, 38,102,117, 63, 60, 86, 50, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 71,153,255, 63, 38,102,118, 63, 82,228, 38, 63, 29, 88,153, 63, 75, 39,167,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 29, 88,153, 63, 75, 39,167, 63, 30,180,246,
+ 63, 63,233, 92, 63, 38,102,117, 63, 71,153,255, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,117, 63, 60, 86, 50, 63, 38,102,117, 63, 71,153,255, 63, 30,180,246, 63, 63,233, 92, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 30,180,246, 63, 63,233, 92, 63, 29, 88,153, 63, 75, 39,167, 63, 22,123, 44,
+ 63, 65,236,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,102, 39, 63, 54,155,119,
+ 63, 22,123, 44, 63, 65,236,201, 63, 17, 33, 91, 63, 55,205, 9, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 17, 33, 91, 63, 55,205, 9, 63, 19,107,138, 63, 44,160,211, 63, 24,102, 39, 63, 54,155,119, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,238,169, 63, 43, 52,229, 63, 24,102, 39, 63, 54,155,119,
+ 63, 19,107,138, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,107,138,
+ 63, 44,160,211, 63, 17, 33, 91, 63, 55,205, 9, 63, 12,204,220, 63, 45, 28, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,118, 63, 94, 46, 77, 63, 38,102,118, 63,105,114, 19, 63, 22,102,235, 63, 99, 26, 59,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,102,235, 63, 99, 26, 59, 63, 26,170,121,
+ 63, 88, 64,147, 63, 38,102,118, 63, 94, 46, 77, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,118, 63, 82,228, 38, 63, 38,102,118, 63, 94, 46, 77, 63, 26,170,121, 63, 88, 64,147, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 26,170,121, 63, 88, 64,147, 63, 22,102,235, 63, 99, 26, 59, 63, 12,204,220,
+ 63, 90, 56, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 50,204, 63, 99, 26, 58,
+ 63, 12,204,220, 63, 90, 56, 22, 63, 22,102,235, 63, 99, 26, 59, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 22,102,235, 63, 99, 26, 59, 63, 12,204,224, 63,109,154,212, 63, 3, 50,204, 63, 99, 26, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,131, 63,105,114, 22, 63, 3, 50,204, 63, 99, 26, 58,
+ 63, 12,204,224, 63,109,154,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,224,
+ 63,109,154,212, 63, 22,102,235, 63, 99, 26, 59, 63, 38,102,118, 63,105,114, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,120, 63,116,187,242, 63, 59,153, 3, 63,128, 0, 0, 62,230,102,134, 63,116,187,242,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,134, 63,116,187,242, 63, 12,204,224,
+ 63,109,154,212, 63, 38,102,120, 63,116,187,242, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,118, 63,105,114, 19, 63, 38,102,120, 63,116,187,242, 63, 12,204,224, 63,109,154,212, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,224, 63,109,154,212, 62,230,102,134, 63,116,187,242, 62,230,102,131,
+ 63,105,114, 22, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 50,204, 63, 99, 26, 58,
+ 62,230,102,131, 63,105,114, 22, 62,230,102,131, 63, 94, 46, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,230,102,131, 63, 94, 46, 79, 62,253,222,118, 63, 88, 64,148, 63, 3, 50,204, 63, 99, 26, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 90, 56, 22, 63, 3, 50,204, 63, 99, 26, 58,
+ 62,253,222,118, 63, 88, 64,148, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,253,222,118,
+ 63, 88, 64,148, 62,230,102,131, 63, 94, 46, 79, 62,230,102,130, 63, 82,228, 41, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,233,213, 63, 21, 48, 35, 63, 70,235,176, 63, 22,209,226, 63, 73,234, 80, 63, 11,111,146,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,234, 80, 63, 11,111,146, 63, 79,200, 1,
+ 63, 9,152, 94, 63, 76,233,213, 63, 21, 48, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 82,215, 19, 63, 19, 29,252, 63, 76,233,213, 63, 21, 48, 35, 63, 79,200, 1, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,200, 1, 63, 9,152, 94, 63, 73,234, 80, 63, 11,111,146, 63, 76,204,193,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,233,213, 63, 21, 48, 35,
+ 63, 82,215, 19, 63, 19, 29,252, 63, 80, 41,220, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 80, 41,220, 63, 31, 60,105, 63, 73,219,164, 63, 33, 23,173, 63, 76,233,213, 63, 21, 48, 35, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,235,176, 63, 22,209,226, 63, 76,233,213, 63, 21, 48, 35,
+ 63, 73,219,164, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,219,164,
+ 63, 33, 23,173, 63, 80, 41,220, 63, 31, 60,105, 63, 77, 33,196, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,158,169, 63, 44,160,200, 63, 64, 0, 0, 63, 45, 28, 24, 63, 67,171, 5, 63, 34, 17,216,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67,171, 5, 63, 34, 17,216, 63, 73,219,164,
+ 63, 33, 23,173, 63, 70,158,169, 63, 44,160,200, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 77, 33,196, 63, 43, 52,221, 63, 70,158,169, 63, 44,160,200, 63, 73,219,164, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,219,164, 63, 33, 23,173, 63, 67,171, 5, 63, 34, 17,216, 63, 70,235,176,
+ 63, 22,209,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83,124, 75, 63, 40,228,217,
+ 63, 77, 33,196, 63, 43, 52,221, 63, 80, 41,220, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 80, 41,220, 63, 31, 60,105, 63, 86, 20,218, 63, 28,140,143, 63, 83,124, 75, 63, 40,228,217, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,139, 63, 37,200, 45, 63, 83,124, 75, 63, 40,228,217,
+ 63, 86, 20,218, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 20,218,
+ 63, 28,140,143, 63, 80, 41,220, 63, 31, 60,105, 63, 82,215, 19, 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 23, 32,182, 63, 70,235,176, 63, 22,209,226, 63, 67,171, 5, 63, 34, 17,216,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67,171, 5, 63, 34, 17,216, 63, 60, 84,251,
+ 63, 34, 17,216, 63, 64, 0, 0, 63, 23, 32,182, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 57, 20, 80, 63, 22,209,226, 63, 64, 0, 0, 63, 23, 32,182, 63, 60, 84,251, 63, 34, 17,216, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60, 84,251, 63, 34, 17,216, 63, 67,171, 5, 63, 34, 17,216, 63, 64, 0, 0,
+ 63, 45, 28, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 23, 32,182,
+ 63, 57, 20, 80, 63, 22,209,226, 63, 60,156,169, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 60,156,169, 63, 11,116, 96, 63, 67, 99, 87, 63, 11,116, 96, 63, 64, 0, 0, 63, 23, 32,182, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,235,176, 63, 22,209,226, 63, 64, 0, 0, 63, 23, 32,182,
+ 63, 67, 99, 87, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67, 99, 87,
+ 63, 11,116, 96, 63, 60,156,169, 63, 11,116, 96, 63, 64, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,102, 96, 63, 0, 1,244, 63, 76,204,193, 63, 0, 0, 0, 63, 73,234, 80, 63, 11,111,146,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,234, 80, 63, 11,111,146, 63, 67, 99, 87,
+ 63, 11,116, 96, 63, 70,102, 96, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 63, 0, 0, 0, 63, 70,102, 96, 63, 0, 1,244, 63, 67, 99, 87, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67, 99, 87, 63, 11,116, 96, 63, 73,234, 80, 63, 11,111,146, 63, 70,235,176,
+ 63, 22,209,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57,153,160, 63, 0, 1,244,
+ 63, 64, 0, 0, 63, 0, 0, 0, 63, 60,156,169, 63, 11,116, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 60,156,169, 63, 11,116, 96, 63, 54, 21,176, 63, 11,111,146, 63, 57,153,160, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 51, 63, 63, 0, 0, 0, 63, 57,153,160, 63, 0, 1,244,
+ 63, 54, 21,176, 63, 11,111,146, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 21,176,
+ 63, 11,111,146, 63, 60,156,169, 63, 11,116, 96, 63, 57, 20, 80, 63, 22,209,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,217, 58, 93, 63, 57, 61,144, 62,217,196, 19, 63, 60,123, 85, 62,198,230,253,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,123, 85, 62,198,230,253, 63, 67,132,171,
+ 62,198,230,253, 63, 64, 0, 0, 62,217, 58, 93, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 70,194,112, 62,217,196, 19, 63, 64, 0, 0, 62,217, 58, 93, 63, 67,132,171, 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 67,132,171, 62,198,230,253, 63, 60,123, 85, 62,198,230,253, 63, 64, 0, 0,
+ 62,180,111,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,217, 58, 93,
+ 63, 70,194,112, 62,217,196, 19, 63, 67, 84,125, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 67, 84,125, 62,236,211, 42, 63, 60,171,131, 62,236,211, 42, 63, 64, 0, 0, 62,217, 58, 93, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 61,144, 62,217,196, 19, 63, 64, 0, 0, 62,217, 58, 93,
+ 63, 60,171,131, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,171,131,
+ 62,236,211, 42, 63, 67, 84,125, 62,236,211, 42, 63, 64, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 57,153,160, 63, 0, 1,244, 63, 51, 51, 63, 63, 0, 0, 0, 63, 54, 46,128, 62,236,207, 75,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 46,128, 62,236,207, 75, 63, 60,171,131,
+ 62,236,211, 42, 63, 57,153,160, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 63, 0, 0, 0, 63, 57,153,160, 63, 0, 1,244, 63, 60,171,131, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,171,131, 62,236,211, 42, 63, 54, 46,128, 62,236,207, 75, 63, 57, 61,144,
+ 62,217,196, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,102, 96, 63, 0, 1,244,
+ 63, 64, 0, 0, 63, 0, 0, 0, 63, 67, 84,125, 62,236,211, 42, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 67, 84,125, 62,236,211, 42, 63, 73,209,128, 62,236,207, 75, 63, 70,102, 96, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,204,193, 63, 0, 0, 0, 63, 70,102, 96, 63, 0, 1,244,
+ 63, 73,209,128, 62,236,207, 75, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,209,128,
+ 62,236,207, 75, 63, 67, 84,125, 62,236,211, 42, 63, 70,194,112, 62,217,196, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 22, 43, 63, 21, 48, 35, 63, 45, 40,237, 63, 19, 29,252, 63, 48, 55,255, 63, 9,152, 94,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 55,255, 63, 9,152, 94, 63, 54, 21,176,
+ 63, 11,111,146, 63, 51, 22, 43, 63, 21, 48, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 57, 20, 80, 63, 22,209,226, 63, 51, 22, 43, 63, 21, 48, 35, 63, 54, 21,176, 63, 11,111,146, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 21,176, 63, 11,111,146, 63, 48, 55,255, 63, 9,152, 94, 63, 51, 51, 63,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 22, 43, 63, 21, 48, 35,
+ 63, 57, 20, 80, 63, 22,209,226, 63, 54, 36, 91, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 54, 36, 91, 63, 33, 23,173, 63, 47,214, 36, 63, 31, 60,105, 63, 51, 22, 43, 63, 21, 48, 35, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 40,237, 63, 19, 29,252, 63, 51, 22, 43, 63, 21, 48, 35,
+ 63, 47,214, 36, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 47,214, 36,
+ 63, 31, 60,105, 63, 54, 36, 91, 63, 33, 23,173, 63, 50,222, 60, 63, 43, 52,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 44,131,181, 63, 40,228,216, 63, 38,102,117, 63, 37,200, 45, 63, 41,235, 38, 63, 28,140,141,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,235, 38, 63, 28,140,141, 63, 47,214, 36,
+ 63, 31, 60,105, 63, 44,131,181, 63, 40,228,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 50,222, 60, 63, 43, 52,221, 63, 44,131,181, 63, 40,228,216, 63, 47,214, 36, 63, 31, 60,105, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 47,214, 36, 63, 31, 60,105, 63, 41,235, 38, 63, 28,140,141, 63, 45, 40,237,
+ 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57, 97, 87, 63, 44,160,200,
+ 63, 50,222, 60, 63, 43, 52,221, 63, 54, 36, 91, 63, 33, 23,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 54, 36, 91, 63, 33, 23,173, 63, 60, 84,251, 63, 34, 17,216, 63, 57, 97, 87, 63, 44,160,200, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 63, 45, 28, 24, 63, 57, 97, 87, 63, 44,160,200,
+ 63, 60, 84,251, 63, 34, 17,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 60, 84,251,
+ 63, 34, 17,216, 63, 54, 36, 91, 63, 33, 23,173, 63, 57, 20, 80, 63, 22,209,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,128, 14,134, 63, 21, 48, 39, 63,122, 30,227, 63, 22,209,233, 63,125, 29,138, 63, 11,111,150,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 29,138, 63, 11,111,150, 63,129,125,159,
+ 63, 9,152, 94, 63,128, 14,134, 63, 21, 48, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 60,193, 73,174, 63, 19, 29,253, 57,232, 92,209, 63, 21, 48, 39, 60, 62,207,114, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,129,125,159, 63, 9,152, 94, 63,125, 29,138, 63, 11,111,150, 63,128, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 57,232, 92,209, 63, 21, 48, 39,
+ 60,193, 73,174, 63, 19, 29,253, 60, 87, 67,214, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,129,174,136, 63, 31, 60,110, 63,125, 14,213, 63, 33, 23,180, 63,128, 14,134, 63, 21, 48, 39, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,122, 30,227, 63, 22,209,233, 63,128, 14,134, 63, 21, 48, 39,
+ 63,125, 14,213, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 14,213,
+ 63, 33, 23,180, 63,129,174,136, 63, 31, 60,110, 63,128, 42,121, 63, 43, 52,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,121,209,210, 63, 44,160,212, 63,115, 51, 36, 63, 45, 28, 36, 63,118,222, 49, 63, 34, 17,226,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,222, 49, 63, 34, 17,226, 63,125, 14,213,
+ 63, 33, 23,180, 63,121,209,210, 63, 44,160,212, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,128, 42,121, 63, 43, 52,230, 63,121,209,210, 63, 44,160,212, 63,125, 14,213, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 14,213, 63, 33, 23,180, 63,118,222, 49, 63, 34, 17,226, 63,122, 30,227,
+ 63, 22,209,233, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,213,239,111, 63, 40,228,223,
+ 58,169,226,120, 63, 43, 52,230, 60, 87, 67,214, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 60, 87, 67,214, 63, 31, 60,110, 61, 20,129, 13, 63, 28,140,143, 60,213,239,111, 63, 40,228,223, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,203,246, 63, 37,200, 48, 60,213,239,111, 63, 40,228,223,
+ 61, 20,129, 13, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 20,129, 13,
+ 63, 28,140,143, 60, 87, 67,214, 63, 31, 60,110, 60,193, 73,174, 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 44, 63, 23, 32,188, 63,122, 30,227, 63, 22,209,233, 63,118,222, 49, 63, 34, 17,226,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,222, 49, 63, 34, 17,226, 63,111,136, 31,
+ 63, 34, 17,225, 63,115, 51, 44, 63, 23, 32,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,108, 71,116, 63, 22,209,232, 63,115, 51, 44, 63, 23, 32,188, 63,111,136, 31, 63, 34, 17,225, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,136, 31, 63, 34, 17,225, 63,118,222, 49, 63, 34, 17,226, 63,115, 51, 36,
+ 63, 45, 28, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 44, 63, 23, 32,188,
+ 63,108, 71,116, 63, 22,209,232, 63,111,207,213, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,111,207,213, 63, 11,116,100, 63,118,150,138, 63, 11,116,101, 63,115, 51, 44, 63, 23, 32,188, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,122, 30,227, 63, 22,209,233, 63,115, 51, 44, 63, 23, 32,188,
+ 63,118,150,138, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,150,138,
+ 63, 11,116,101, 63,111,207,213, 63, 11,116,100, 63,115, 51, 51, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,121,153,154, 63, 0, 1,244, 63,128, 0, 0, 63, 0, 0, 0, 63,125, 29,138, 63, 11,111,150,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 29,138, 63, 11,111,150, 63,118,150,138,
+ 63, 11,116,101, 63,121,153,154, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,115, 51, 51, 63, 0, 0, 0, 63,121,153,154, 63, 0, 1,244, 63,118,150,138, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,150,138, 63, 11,116,101, 63,125, 29,138, 63, 11,111,150, 63,122, 30,227,
+ 63, 22,209,233, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,204,205, 63, 0, 1,244,
+ 63,115, 51, 51, 63, 0, 0, 0, 63,111,207,213, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,111,207,213, 63, 11,116,100, 63,105, 72,213, 63, 11,111,149, 63,108,204,205, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,102,101, 63, 0, 0, 0, 63,108,204,205, 63, 0, 1,244,
+ 63,105, 72,213, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 72,213,
+ 63, 11,111,149, 63,111,207,213, 63, 11,116,100, 63,108, 71,116, 63, 22,209,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 58, 62,217, 58, 73, 63,108,112,192, 62,217,196, 4, 63,111,174,139, 62,198,230,223,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,174,139, 62,198,230,223, 63,118,183,239,
+ 62,198,230,227, 63,115, 51, 58, 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,121,245,179, 62,217,196, 6, 63,115, 51, 58, 62,217, 58, 73, 63,118,183,239, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,118,183,239, 62,198,230,227, 63,111,174,139, 62,198,230,223, 63,115, 51, 65,
+ 62,180,111,160, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 58, 62,217, 58, 73,
+ 63,121,245,179, 62,217,196, 6, 63,118,135,185, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,118,135,185, 62,236,211, 30, 63,111,222,180, 62,236,211, 30, 63,115, 51, 58, 62,217, 58, 73, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,112,192, 62,217,196, 4, 63,115, 51, 58, 62,217, 58, 73,
+ 63,111,222,180, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,222,180,
+ 62,236,211, 30, 63,118,135,185, 62,236,211, 30, 63,115, 51, 51, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,108,204,205, 63, 0, 1,244, 63,102,102,101, 63, 0, 0, 0, 63,105, 97,170, 62,236,207, 65,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 97,170, 62,236,207, 65, 63,111,222,180,
+ 62,236,211, 30, 63,108,204,205, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,115, 51, 51, 63, 0, 0, 0, 63,108,204,205, 63, 0, 1,244, 63,111,222,180, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,222,180, 62,236,211, 30, 63,105, 97,170, 62,236,207, 65, 63,108,112,192,
+ 62,217,196, 4, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,153,154, 63, 0, 1,244,
+ 63,115, 51, 51, 63, 0, 0, 0, 63,118,135,185, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,118,135,185, 62,236,211, 30, 63,125, 4,194, 62,236,207, 67, 63,121,153,154, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 63, 0, 0, 0, 63,121,153,154, 63, 0, 1,244,
+ 63,125, 4,194, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 4,194,
+ 62,236,207, 67, 63,118,135,185, 62,236,211, 30, 63,121,245,179, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,102, 73, 76, 63, 21, 48, 38, 63, 96, 92, 11, 63, 19, 29,253, 63, 99,107, 33, 63, 9,152, 94,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,107, 33, 63, 9,152, 94, 63,105, 72,213,
+ 63, 11,111,149, 63,102, 73, 76, 63, 21, 48, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,108, 71,116, 63, 22,209,232, 63,102, 73, 76, 63, 21, 48, 38, 63,105, 72,213, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 72,213, 63, 11,111,149, 63, 99,107, 33, 63, 9,152, 94, 63,102,102,101,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102, 73, 76, 63, 21, 48, 38,
+ 63,108, 71,116, 63, 22,209,232, 63,105, 87,124, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,105, 87,124, 63, 33, 23,180, 63, 99, 9, 65, 63, 31, 60,109, 63,102, 73, 76, 63, 21, 48, 38, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 92, 11, 63, 19, 29,253, 63,102, 73, 76, 63, 21, 48, 38,
+ 63, 99, 9, 65, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 9, 65,
+ 63, 31, 60,109, 63,105, 87,124, 63, 33, 23,180, 63,102, 17, 87, 63, 43, 52,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,182,205, 63, 40,228,222, 63, 89,153,139, 63, 37,200, 45, 63, 93, 30, 63, 63, 28,140,143,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93, 30, 63, 63, 28,140,143, 63, 99, 9, 65,
+ 63, 31, 60,109, 63, 95,182,205, 63, 40,228,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,102, 17, 87, 63, 43, 52,229, 63, 95,182,205, 63, 40,228,222, 63, 99, 9, 65, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 9, 65, 63, 31, 60,109, 63, 93, 30, 63, 63, 28,140,143, 63, 96, 92, 11,
+ 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,108,148,118, 63, 44,160,211,
+ 63,102, 17, 87, 63, 43, 52,229, 63,105, 87,124, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,105, 87,124, 63, 33, 23,180, 63,111,136, 31, 63, 34, 17,225, 63,108,148,118, 63, 44,160,211, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 36, 63, 45, 28, 36, 63,108,148,118, 63, 44,160,211,
+ 63,111,136, 31, 63, 34, 17,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,111,136, 31,
+ 63, 34, 17,225, 63,105, 87,124, 63, 33, 23,180, 63,108, 71,116, 63, 22,209,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 77, 65, 65, 63, 21, 48, 32, 62, 53, 72,152, 63, 22,209,229, 62, 65, 67, 47, 63, 11,111,147,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 67, 47, 63, 11,111,147, 62, 88,185,255,
+ 63, 9,152, 90, 62, 77, 65, 65, 63, 21, 48, 32, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,100,246, 64, 63, 19, 29,246, 62, 77, 65, 65, 63, 21, 48, 32, 62, 88,185,255, 63, 9,152, 90, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 88,185,255, 63, 9,152, 90, 62, 65, 67, 47, 63, 11,111,147, 62, 76,204,254,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 77, 65, 65, 63, 21, 48, 32,
+ 62,100,246, 64, 63, 19, 29,246, 62, 90, 65, 89, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 90, 65, 89, 63, 31, 60, 94, 62, 65, 8,107, 63, 33, 23,170, 62, 77, 65, 65, 63, 21, 48, 32, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 53, 72,152, 63, 22,209,229, 62, 77, 65, 65, 63, 21, 48, 32,
+ 62, 65, 8,107, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 8,107,
+ 63, 33, 23,170, 62, 90, 65, 89, 63, 31, 60, 94, 62, 78, 32,230, 63, 43, 52,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 52, 20,105, 63, 44,160,198, 62, 25,153,173, 63, 45, 28, 27, 62, 40, 69,216, 63, 34, 17,220,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 40, 69,216, 63, 34, 17,220, 62, 65, 8,107,
+ 63, 33, 23,170, 62, 52, 20,105, 63, 44,160,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 78, 32,230, 63, 43, 52,211, 62, 52, 20,105, 63, 44,160,198, 62, 65, 8,107, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 8,107, 63, 33, 23,170, 62, 40, 69,216, 63, 34, 17,220, 62, 53, 72,152,
+ 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,103,139, 14, 63, 40,228,199,
+ 62, 78, 32,230, 63, 43, 52,211, 62, 90, 65, 89, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 90, 65, 89, 63, 31, 60, 94, 62,113,237, 83, 63, 28,140,130, 62,103,139, 14, 63, 40,228,199, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 37,200, 23, 62,103,139, 14, 63, 40,228,199,
+ 62,113,237, 83, 63, 28,140,130, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,113,237, 83,
+ 63, 28,140,130, 62, 90, 65, 89, 63, 31, 60, 94, 62,100,246, 64, 63, 19, 29,246, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,180, 63, 23, 32,185, 62, 53, 72,152, 63, 22,209,229, 62, 40, 69,216, 63, 34, 17,220,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 40, 69,216, 63, 34, 17,220, 62, 10,237,133,
+ 63, 34, 17,219, 62, 25,153,180, 63, 23, 32,185, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,251,213,147, 63, 22,209,228, 62, 25,153,180, 63, 23, 32,185, 62, 10,237,133, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 10,237,133, 63, 34, 17,219, 62, 40, 69,216, 63, 34, 17,220, 62, 25,153,173,
+ 63, 45, 28, 27, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,180, 63, 23, 32,185,
+ 61,251,213,147, 63, 22,209,228, 62, 12, 12, 67, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 12, 12, 67, 63, 11,116, 98, 62, 39, 39, 34, 63, 11,116, 98, 62, 25,153,180, 63, 23, 32,185, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 53, 72,152, 63, 22,209,229, 62, 25,153,180, 63, 23, 32,185,
+ 62, 39, 39, 34, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 39, 39, 34,
+ 63, 11,116, 98, 62, 12, 12, 67, 63, 11,116, 98, 62, 25,153,181, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 51, 51, 92, 63, 0, 1,244, 62, 76,204,254, 63, 0, 0, 0, 62, 65, 67, 47, 63, 11,111,147,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 65, 67, 47, 63, 11,111,147, 62, 39, 39, 34,
+ 63, 11,116, 98, 62, 51, 51, 92, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 25,153,181, 63, 0, 0, 0, 62, 51, 51, 92, 63, 0, 1,244, 62, 39, 39, 34, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 39, 39, 34, 63, 11,116, 98, 62, 65, 67, 47, 63, 11,111,147, 62, 53, 72,152,
+ 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 0, 0, 8, 63, 0, 1,244,
+ 62, 25,153,181, 63, 0, 0, 0, 62, 12, 12, 67, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 12, 12, 67, 63, 11,116, 98, 61,227,224,109, 63, 11,111,147, 62, 0, 0, 8, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,204,204,215, 63, 0, 0, 0, 62, 0, 0, 8, 63, 0, 1,244,
+ 61,227,224,109, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,227,224,109,
+ 63, 11,111,147, 62, 12, 12, 67, 63, 11,116, 98, 61,251,213,147, 63, 22,209,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,196, 62,217, 58, 73, 61,253, 31,171, 62,217,196, 6, 62, 11,135, 1, 62,198,230,228,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 11,135, 1, 62,198,230,228, 62, 39,172,153,
+ 62,198,230,230, 62, 25,153,196, 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 52,163,179, 62,217,196, 7, 62, 25,153,196, 62,217, 58, 73, 62, 39,172,153, 62,198,230,230, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 39,172,153, 62,198,230,230, 62, 11,135, 1, 62,198,230,228, 62, 25,153,214,
+ 62,180,111,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,196, 62,217, 58, 73,
+ 62, 52,163,179, 62,217,196, 7, 62, 38,235,202, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 38,235,202, 62,236,211, 33, 62, 12, 71,173, 62,236,211, 31, 62, 25,153,196, 62,217, 58, 73, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,253, 31,171, 62,217,196, 6, 62, 25,153,196, 62,217, 58, 73,
+ 62, 12, 71,173, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 12, 71,173,
+ 62,236,211, 31, 62, 38,235,202, 62,236,211, 33, 62, 25,153,181, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 0, 0, 8, 63, 0, 1,244, 61,204,204,215, 63, 0, 0, 0, 61,228,166,251, 62,236,207, 67,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,228,166,251, 62,236,207, 67, 62, 12, 71,173,
+ 62,236,211, 31, 62, 0, 0, 8, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 25,153,181, 63, 0, 0, 0, 62, 0, 0, 8, 63, 0, 1,244, 62, 12, 71,173, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 12, 71,173, 62,236,211, 31, 61,228,166,251, 62,236,207, 67, 61,253, 31,171,
+ 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 51, 51, 92, 63, 0, 1,244,
+ 62, 25,153,181, 63, 0, 0, 0, 62, 38,235,202, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 38,235,202, 62,236,211, 33, 62, 64,223,251, 62,236,207, 67, 62, 51, 51, 92, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 76,204,254, 63, 0, 0, 0, 62, 51, 51, 92, 63, 0, 1,244,
+ 62, 64,223,251, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64,223,251,
+ 62,236,207, 67, 62, 38,235,202, 62,236,211, 33, 62, 52,163,179, 62,217,196, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,203,228, 42, 63, 21, 48, 37, 61,156,122, 1, 63, 19, 29,254, 61,180,242,172, 63, 9,152, 96,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,180,242,172, 63, 9,152, 96, 61,227,224,109,
+ 63, 11,111,147, 61,203,228, 42, 63, 21, 48, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,251,213,147, 63, 22,209,228, 61,203,228, 42, 63, 21, 48, 37, 61,227,224,109, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,227,224,109, 63, 11,111,147, 61,180,242,172, 63, 9,152, 96, 61,204,204,215,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,203,228, 42, 63, 21, 48, 37,
+ 61,251,213,147, 63, 22,209,228, 61,228, 85,208, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,228, 85,208, 63, 33, 23,179, 61,177,227,212, 63, 31, 60,110, 61,203,228, 42, 63, 21, 48, 37, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,156,122, 1, 63, 19, 29,254, 61,203,228, 42, 63, 21, 48, 37,
+ 61,177,227,212, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,177,227,212,
+ 63, 31, 60,110, 61,228, 85,208, 63, 33, 23,179, 61,202, 36,175, 63, 43, 52,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,151, 80, 53, 63, 40,228,223, 61, 76,203,246, 63, 37,200, 48, 61,130,139,166, 63, 28,140,145,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,130,139,166, 63, 28,140,145, 61,177,227,212,
+ 63, 31, 60,110, 61,151, 80, 53, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,202, 36,175, 63, 43, 52,228, 61,151, 80, 53, 63, 40,228,223, 61,177,227,212, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,177,227,212, 63, 31, 60,110, 61,130,139,166, 63, 28,140,145, 61,156,122, 1,
+ 63, 19, 29,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,254, 61,201, 63, 44,160,207,
+ 61,202, 36,175, 63, 43, 52,228, 61,228, 85,208, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,228, 85,208, 63, 33, 23,179, 62, 10,237,133, 63, 34, 17,219, 61,254, 61,201, 63, 44,160,207, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,173, 63, 45, 28, 27, 61,254, 61,201, 63, 44,160,207,
+ 62, 10,237,133, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 10,237,133,
+ 63, 34, 17,219, 61,228, 85,208, 63, 33, 23,179, 61,251,213,147, 63, 22,209,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,205, 6,245, 63, 21, 48, 37, 62,193, 10,155, 63, 22,209,229, 62,199, 7,229, 63, 11,111,147,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,199, 7,229, 63, 11,111,147, 62,210,195, 85,
+ 63, 9,152, 96, 62,205, 6,245, 63, 21, 48, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,216,225,128, 63, 19, 29,254, 62,205, 6,245, 63, 21, 48, 37, 62,210,195, 85, 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,210,195, 85, 63, 9,152, 96, 62,199, 7,229, 63, 11,111,147, 62,204,204,202,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,205, 6,245, 63, 21, 48, 37,
+ 62,216,225,128, 63, 19, 29,254, 62,211,135, 11, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,211,135, 11, 63, 31, 60,110, 62,198,234,140, 63, 33, 23,179, 62,205, 6,245, 63, 21, 48, 37, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,193, 10,155, 63, 22,209,229, 62,205, 6,245, 63, 21, 48, 37,
+ 62,198,234,140, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,234,140,
+ 63, 33, 23,179, 62,211,135, 11, 63, 31, 60,110, 62,205,118,212, 63, 43, 52,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,192,112,142, 63, 44,160,207, 62,179, 51, 42, 63, 45, 28, 28, 62,186,137, 61, 63, 34, 17,219,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,186,137, 61, 63, 34, 17,219, 62,198,234,140,
+ 63, 33, 23,179, 62,192,112,142, 63, 44,160,207, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,205,118,212, 63, 43, 52,228, 62,192,112,142, 63, 44,160,207, 62,198,234,140, 63, 33, 23,179, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,234,140, 63, 33, 23,179, 62,186,137, 61, 63, 34, 17,219, 62,193, 10,155,
+ 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,218, 43,243, 63, 40,228,223,
+ 62,205,118,212, 63, 43, 52,228, 62,211,135, 11, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,211,135, 11, 63, 31, 60,110, 62,223, 93, 22, 63, 28,140,145, 62,218, 43,243, 63, 40,228,223, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,129, 63, 37,200, 48, 62,218, 43,243, 63, 40,228,223,
+ 62,223, 93, 22, 63, 28,140,145, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223, 93, 22,
+ 63, 28,140,145, 62,211,135, 11, 63, 31, 60,110, 62,216,225,128, 63, 19, 29,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 38, 63, 23, 32,185, 62,193, 10,155, 63, 22,209,229, 62,186,137, 61, 63, 34, 17,219,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,186,137, 61, 63, 34, 17,219, 62,171,221, 20,
+ 63, 34, 17,219, 62,179, 51, 38, 63, 23, 32,185, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,165, 91,180, 63, 22,209,229, 62,179, 51, 38, 63, 23, 32,185, 62,171,221, 20, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,171,221, 20, 63, 34, 17,219, 62,186,137, 61, 63, 34, 17,219, 62,179, 51, 42,
+ 63, 45, 28, 28, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 38, 63, 23, 32,185,
+ 62,165, 91,180, 63, 22,209,229, 62,172,108,111, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,172,108,111, 63, 11,116, 98, 62,185,249,222, 63, 11,116, 98, 62,179, 51, 38, 63, 23, 32,185, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,193, 10,155, 63, 22,209,229, 62,179, 51, 38, 63, 23, 32,185,
+ 62,185,249,222, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,185,249,222,
+ 63, 11,116, 98, 62,172,108,111, 63, 11,116, 98, 62,179, 51, 38, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,191,255,252, 63, 0, 1,244, 62,204,204,202, 63, 0, 0, 0, 62,199, 7,229, 63, 11,111,147,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,199, 7,229, 63, 11,111,147, 62,185,249,222,
+ 63, 11,116, 98, 62,191,255,252, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,179, 51, 38, 63, 0, 0, 0, 62,191,255,252, 63, 0, 1,244, 62,185,249,222, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,185,249,222, 63, 11,116, 98, 62,199, 7,229, 63, 11,111,147, 62,193, 10,155,
+ 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,166,102, 82, 63, 0, 1,244,
+ 62,179, 51, 38, 63, 0, 0, 0, 62,172,108,111, 63, 11,116, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,172,108,111, 63, 11,116, 98, 62,159, 94,104, 63, 11,111,147, 62,166,102, 82, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153,153,129, 63, 0, 0, 0, 62,166,102, 82, 63, 0, 1,244,
+ 62,159, 94,104, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159, 94,104,
+ 63, 11,111,147, 62,172,108,111, 63, 11,116, 98, 62,165, 91,180, 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 30, 62,217, 58, 73, 62,165,174, 39, 62,217,196, 7, 62,172, 41,180, 62,198,230,227,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172, 41,180, 62,198,230,227, 62,186, 60,127,
+ 62,198,230,225, 62,179, 51, 30, 62,217, 58, 73, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,192,184, 21, 62,217,196, 6, 62,179, 51, 30, 62,217, 58, 73, 62,186, 60,127, 62,198,230,225, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,186, 60,127, 62,198,230,225, 62,172, 41,180, 62,198,230,227, 62,179, 51, 21,
+ 62,180,111,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 30, 62,217, 58, 73,
+ 62,192,184, 21, 62,217,196, 6, 62,185,220, 42, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,185,220, 42, 62,236,211, 31, 62,172,138, 27, 62,236,211, 33, 62,179, 51, 30, 62,217, 58, 73, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,174, 39, 62,217,196, 7, 62,179, 51, 30, 62,217, 58, 73,
+ 62,172,138, 27, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172,138, 27,
+ 62,236,211, 33, 62,185,220, 42, 62,236,211, 31, 62,179, 51, 38, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,166,102, 82, 63, 0, 1,244, 62,153,153,129, 63, 0, 0, 0, 62,159,144, 3, 62,236,207, 67,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159,144, 3, 62,236,207, 67, 62,172,138, 27,
+ 62,236,211, 33, 62,166,102, 82, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,179, 51, 38, 63, 0, 0, 0, 62,166,102, 82, 63, 0, 1,244, 62,172,138, 27, 62,236,211, 33, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,172,138, 27, 62,236,211, 33, 62,159,144, 3, 62,236,207, 67, 62,165,174, 39,
+ 62,217,196, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,191,255,252, 63, 0, 1,244,
+ 62,179, 51, 38, 63, 0, 0, 0, 62,185,220, 42, 62,236,211, 31, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,185,220, 42, 62,236,211, 31, 62,198,214, 65, 62,236,207, 67, 62,191,255,252, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204,204,202, 63, 0, 0, 0, 62,191,255,252, 63, 0, 1,244,
+ 62,198,214, 65, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,214, 65,
+ 62,236,207, 67, 62,185,220, 42, 62,236,211, 31, 62,192,184, 21, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,153, 95, 95, 63, 21, 48, 32, 62,141,132,224, 63, 19, 29,246, 62,147,163, 1, 63, 9,152, 91,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,163, 1, 63, 9,152, 91, 62,159, 94,104,
+ 63, 11,111,147, 62,153, 95, 95, 63, 21, 48, 32, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,165, 91,180, 63, 22,209,229, 62,153, 95, 95, 63, 21, 48, 32, 62,159, 94,104, 63, 11,111,147, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,159, 94,104, 63, 11,111,147, 62,147,163, 1, 63, 9,152, 91, 62,153,153,129,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153, 95, 95, 63, 21, 48, 32,
+ 62,165, 91,180, 63, 22,209,229, 62,159,123,203, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,159,123,203, 63, 33, 23,170, 62,146,223, 84, 63, 31, 60, 94, 62,153, 95, 95, 63, 21, 48, 32, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,132,224, 63, 19, 29,246, 62,153, 95, 95, 63, 21, 48, 32,
+ 62,146,223, 84, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,146,223, 84,
+ 63, 31, 60, 94, 62,159,123,203, 63, 33, 23,170, 62,152,239,141, 63, 43, 52,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,140, 58,121, 63, 40,228,199, 62,128, 0, 0, 63, 37,200, 23, 62,135, 9, 86, 63, 28,140,130,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,135, 9, 86, 63, 28,140,130, 62,146,223, 84,
+ 63, 31, 60, 94, 62,140, 58,121, 63, 40,228,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,152,239,141, 63, 43, 52,211, 62,140, 58,121, 63, 40,228,199, 62,146,223, 84, 63, 31, 60, 94, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,146,223, 84, 63, 31, 60, 94, 62,135, 9, 86, 63, 28,140,130, 62,141,132,224,
+ 63, 19, 29,246, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,165,245,204, 63, 44,160,198,
+ 62,152,239,141, 63, 43, 52,211, 62,159,123,203, 63, 33, 23,170, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,159,123,203, 63, 33, 23,170, 62,171,221, 20, 63, 34, 17,219, 62,165,245,204, 63, 44,160,198, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 42, 63, 45, 28, 28, 62,165,245,204, 63, 44,160,198,
+ 62,171,221, 20, 63, 34, 17,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,171,221, 20,
+ 63, 34, 17,219, 62,159,123,203, 63, 33, 23,170, 62,165, 91,180, 63, 22,209,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,182,180, 63, 21, 48, 38, 63, 19,184,140, 63, 22,209,232, 63, 22,183, 43, 63, 11,111,149,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,183, 43, 63, 11,111,149, 63, 28,148,223,
+ 63, 9,152, 94, 63, 25,182,180, 63, 21, 48, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 31,163,245, 63, 19, 29,253, 63, 25,182,180, 63, 21, 48, 38, 63, 28,148,223, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,148,223, 63, 9,152, 94, 63, 22,183, 43, 63, 11,111,149, 63, 25,153,155,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,182,180, 63, 21, 48, 38,
+ 63, 31,163,245, 63, 19, 29,253, 63, 28,246,191, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 28,246,191, 63, 31, 60,109, 63, 22,168,132, 63, 33, 23,180, 63, 25,182,180, 63, 21, 48, 38, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,184,140, 63, 22,209,232, 63, 25,182,180, 63, 21, 48, 38,
+ 63, 22,168,132, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,168,132,
+ 63, 33, 23,180, 63, 28,246,191, 63, 31, 60,109, 63, 25,238,169, 63, 43, 52,229, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,107,138, 63, 44,160,211, 63, 12,204,220, 63, 45, 28, 35, 63, 16,119,225, 63, 34, 17,225,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16,119,225, 63, 34, 17,225, 63, 22,168,132,
+ 63, 33, 23,180, 63, 19,107,138, 63, 44,160,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 25,238,169, 63, 43, 52,229, 63, 19,107,138, 63, 44,160,211, 63, 22,168,132, 63, 33, 23,180, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,168,132, 63, 33, 23,180, 63, 16,119,225, 63, 34, 17,225, 63, 19,184,140,
+ 63, 22,209,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32, 73, 51, 63, 40,228,221,
+ 63, 25,238,169, 63, 43, 52,229, 63, 28,246,191, 63, 31, 60,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 28,246,191, 63, 31, 60,109, 63, 34,225,192, 63, 28,140,142, 63, 32, 73, 51, 63, 40,228,221, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,117, 63, 37,200, 45, 63, 32, 73, 51, 63, 40,228,221,
+ 63, 34,225,192, 63, 28,140,142, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34,225,192,
+ 63, 28,140,142, 63, 28,246,191, 63, 31, 60,109, 63, 31,163,245, 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,212, 63, 23, 32,188, 63, 19,184,140, 63, 22,209,232, 63, 16,119,225, 63, 34, 17,225,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16,119,225, 63, 34, 17,225, 63, 9, 33,207,
+ 63, 34, 17,226, 63, 12,204,212, 63, 23, 32,188, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 5,225, 29, 63, 22,209,233, 63, 12,204,212, 63, 23, 32,188, 63, 9, 33,207, 63, 34, 17,226, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9, 33,207, 63, 34, 17,226, 63, 16,119,225, 63, 34, 17,225, 63, 12,204,220,
+ 63, 45, 28, 35, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,212, 63, 23, 32,188,
+ 63, 5,225, 29, 63, 22,209,233, 63, 9,105,118, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 9,105,118, 63, 11,116,101, 63, 16, 48, 43, 63, 11,116,100, 63, 12,204,212, 63, 23, 32,188, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,184,140, 63, 22,209,232, 63, 12,204,212, 63, 23, 32,188,
+ 63, 16, 48, 43, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 48, 43,
+ 63, 11,116,100, 63, 9,105,118, 63, 11,116,101, 63, 12,204,205, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 19, 51, 51, 63, 0, 1,244, 63, 25,153,155, 63, 0, 0, 0, 63, 22,183, 43, 63, 11,111,149,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,183, 43, 63, 11,111,149, 63, 16, 48, 43,
+ 63, 11,116,100, 63, 19, 51, 51, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 12,204,205, 63, 0, 0, 0, 63, 19, 51, 51, 63, 0, 1,244, 63, 16, 48, 43, 63, 11,116,100, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 48, 43, 63, 11,116,100, 63, 22,183, 43, 63, 11,111,149, 63, 19,184,140,
+ 63, 22,209,232, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,102,102, 63, 0, 1,244,
+ 63, 12,204,205, 63, 0, 0, 0, 63, 9,105,118, 63, 11,116,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 9,105,118, 63, 11,116,101, 63, 2,226,118, 63, 11,111,149, 63, 6,102,102, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 6,102,102, 63, 0, 1,244,
+ 63, 2,226,118, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,226,118,
+ 63, 11,111,149, 63, 9,105,118, 63, 11,116,101, 63, 5,225, 29, 63, 22,209,233, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,198, 62,217, 58, 72, 63, 6, 10, 77, 62,217,196, 6, 63, 9, 72, 17, 62,198,230,227,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9, 72, 17, 62,198,230,227, 63, 16, 81,117,
+ 62,198,230,223, 63, 12,204,198, 62,217, 58, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 19,143, 64, 62,217,196, 4, 63, 12,204,198, 62,217, 58, 72, 63, 16, 81,117, 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 16, 81,117, 62,198,230,223, 63, 9, 72, 17, 62,198,230,227, 63, 12,204,191,
+ 62,180,111,160, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,198, 62,217, 58, 72,
+ 63, 19,143, 64, 62,217,196, 4, 63, 16, 33, 76, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 16, 33, 76, 62,236,211, 30, 63, 9,120, 71, 62,236,211, 30, 63, 12,204,198, 62,217, 58, 72, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 10, 77, 62,217,196, 6, 63, 12,204,198, 62,217, 58, 72,
+ 63, 9,120, 71, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9,120, 71,
+ 62,236,211, 30, 63, 16, 33, 76, 62,236,211, 30, 63, 12,204,205, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,102,102, 63, 0, 1,244, 63, 0, 0, 0, 63, 0, 0, 0, 63, 2,251, 62, 62,236,207, 67,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,251, 62, 62,236,207, 67, 63, 9,120, 71,
+ 62,236,211, 30, 63, 6,102,102, 63, 0, 1,244, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 12,204,205, 63, 0, 0, 0, 63, 6,102,102, 63, 0, 1,244, 63, 9,120, 71, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9,120, 71, 62,236,211, 30, 63, 2,251, 62, 62,236,207, 67, 63, 6, 10, 77,
+ 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19, 51, 51, 63, 0, 1,244,
+ 63, 12,204,205, 63, 0, 0, 0, 63, 16, 33, 76, 62,236,211, 30, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 16, 33, 76, 62,236,211, 30, 63, 22,158, 86, 62,236,207, 65, 63, 19, 51, 51, 63, 0, 1,244, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,153,155, 63, 0, 0, 0, 63, 19, 51, 51, 63, 0, 1,244,
+ 63, 22,158, 86, 62,236,207, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,158, 86,
+ 62,236,207, 65, 63, 16, 33, 76, 62,236,211, 30, 63, 19,143, 64, 62,217,196, 4, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,255,197,233, 63, 21, 48, 39, 62,243,235,101, 63, 19, 29,252, 62,250, 9,132, 63, 9,152, 94,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 9,132, 63, 9,152, 94, 63, 2,226,118,
+ 63, 11,111,149, 62,255,197,233, 63, 21, 48, 39, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 5,225, 29, 63, 22,209,233, 62,255,197,233, 63, 21, 48, 39, 63, 2,226,118, 63, 11,111,149, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,226,118, 63, 11,111,149, 62,250, 9,132, 63, 9,152, 94, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,255,197,233, 63, 21, 48, 39,
+ 63, 5,225, 29, 63, 22,209,233, 63, 2,241, 43, 63, 33, 23,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 2,241, 43, 63, 33, 23,181, 62,249, 69,225, 63, 31, 60,110, 62,255,197,233, 63, 21, 48, 39, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,235,101, 63, 19, 29,252, 62,255,197,233, 63, 21, 48, 39,
+ 62,249, 69,225, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249, 69,225,
+ 63, 31, 60,110, 63, 2,241, 43, 63, 33, 23,181, 62,255, 86, 30, 63, 43, 52,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,242,161, 9, 63, 40,228,223, 62,230,102,129, 63, 37,200, 48, 62,237,111,222, 63, 28,140,143,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237,111,222, 63, 28,140,143, 62,249, 69,225,
+ 63, 31, 60,110, 62,242,161, 9, 63, 40,228,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,255, 86, 30, 63, 43, 52,230, 62,242,161, 9, 63, 40,228,223, 62,249, 69,225, 63, 31, 60,110, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249, 69,225, 63, 31, 60,110, 62,237,111,222, 63, 28,140,143, 62,243,235,101,
+ 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6, 46, 46, 63, 44,160,211,
+ 62,255, 86, 30, 63, 43, 52,230, 63, 2,241, 43, 63, 33, 23,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 2,241, 43, 63, 33, 23,181, 63, 9, 33,207, 63, 34, 17,226, 63, 6, 46, 46, 63, 44,160,211, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,220, 63, 45, 28, 35, 63, 6, 46, 46, 63, 44,160,211,
+ 63, 9, 33,207, 63, 34, 17,226, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 9, 33,207,
+ 63, 34, 17,226, 63, 2,241, 43, 63, 33, 23,181, 63, 5,225, 29, 63, 22,209,233, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 85,238,138, 62,187,220, 72, 63, 82,173,218, 62,210, 92, 55, 63, 79,189,229, 62,189,208,173,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,189,229, 62,189,208,173, 63, 82,250,230,
+ 62,166,190,117, 63, 85,238,138, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 89,153,149, 62,165,199,201, 63, 85,238,138, 62,187,220, 72, 63, 82,250,230, 62,166,190,117, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,250,230, 62,166,190,117, 63, 79,189,229, 62,189,208,173, 63, 76,119,198,
+ 62,169,150, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,111,170, 62,193,135, 68,
+ 63, 76,119,198, 62,169,150, 90, 63, 79,189,229, 62,189,208,173, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 79,189,229, 62,189,208,173, 63, 76,175,176, 62,213,159,192, 63, 73,111,170, 62,193,135, 68, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,194,112, 62,217,196, 19, 63, 73,111,170, 62,193,135, 68,
+ 63, 76,175,176, 62,213,159,192, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,175,176,
+ 62,213,159,192, 63, 79,189,229, 62,189,208,173, 63, 82,173,218, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,175, 52, 62,233, 32,218, 63, 76,204,193, 63, 0, 0, 0, 63, 73,209,128, 62,236,207, 75,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,209,128, 62,236,207, 75, 63, 76,175,176,
+ 62,213,159,192, 63, 79,175, 52, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 82,173,218, 62,210, 92, 55, 63, 79,175, 52, 62,233, 32,218, 63, 76,175,176, 62,213,159,192, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,175,176, 62,213,159,192, 63, 73,209,128, 62,236,207, 75, 63, 70,194,112,
+ 62,217,196, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73,111,170, 62,193,135, 68,
+ 63, 70,194,112, 62,217,196, 19, 63, 67,132,171, 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 67,132,171, 62,198,230,253, 63, 70, 29, 61, 62,174, 54,114, 63, 73,111,170, 62,193,135, 68, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 76,119,198, 62,169,150, 90, 63, 73,111,170, 62,193,135, 68,
+ 63, 70, 29, 61, 62,174, 54,114, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70, 29, 61,
+ 62,174, 54,114, 63, 67,132,171, 62,198,230,253, 63, 64, 0, 0, 62,180,111,211, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,175, 52, 62,233, 32,218, 63, 82,173,218, 62,210, 92, 55, 63, 86, 54, 56, 62,233, 23, 58,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 54, 56, 62,233, 23, 58, 63, 83, 51, 41,
+ 62,255,252, 24, 63, 79,175, 52, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 76,204,193, 63, 0, 0, 0, 63, 79,175, 52, 62,233, 32,218, 63, 83, 51, 41, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83, 51, 41, 62,255,252, 24, 63, 86, 54, 56, 62,233, 23, 58, 63, 89,153,147,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,252,239, 62,233, 23, 58,
+ 63, 89,153,147, 63, 0, 0, 0, 63, 86, 54, 56, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 86, 54, 56, 62,233, 23, 58, 63, 89,153,147, 62,209,190,143, 63, 92,252,239, 62,233, 23, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96,133, 78, 62,210, 92, 55, 63, 92,252,239, 62,233, 23, 58,
+ 63, 89,153,147, 62,209,190,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147,
+ 62,209,190,143, 63, 86, 54, 56, 62,233, 23, 58, 63, 82,173,218, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 85,238,138, 62,187,220, 72, 63, 89,153,149, 62,165,199,201, 63, 93, 68,159, 62,187,220, 72,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93, 68,159, 62,187,220, 72, 63, 89,153,147,
+ 62,209,190,143, 63, 85,238,138, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 82,173,218, 62,210, 92, 55, 63, 85,238,138, 62,187,220, 72, 63, 89,153,147, 62,209,190,143, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147, 62,209,190,143, 63, 93, 68,159, 62,187,220, 72, 63, 96,133, 78,
+ 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,252,239, 62,233, 23, 58,
+ 63, 96,133, 78, 62,210, 92, 55, 63, 99,131,242, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 99,131,242, 62,233, 32,218, 63, 95,255,254, 62,255,252, 24, 63, 92,252,239, 62,233, 23, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147, 63, 0, 0, 0, 63, 92,252,239, 62,233, 23, 58,
+ 63, 95,255,254, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,255,254,
+ 62,255,252, 24, 63, 99,131,242, 62,233, 32,218, 63,102,102,101, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,111,174,139, 62,198,230,223, 63,108,112,192, 62,217,196, 4, 63,105,195,133, 62,193,135, 37,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,105,195,133, 62,193,135, 37, 63,109, 21,249,
+ 62,174, 54, 65, 63,111,174,139, 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,115, 51, 65, 62,180,111,160, 63,111,174,139, 62,198,230,223, 63,109, 21,249, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,109, 21,249, 62,174, 54, 65, 63,105,195,133, 62,193,135, 37, 63,102,187,106,
+ 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,117, 70, 62,189,208,155,
+ 63,102,187,106, 62,169,150, 54, 63,105,195,133, 62,193,135, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,105,195,133, 62,193,135, 37, 63,102,131,123, 62,213,159,181, 63, 99,117, 70, 62,189,208,155, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96,133, 78, 62,210, 92, 55, 63, 99,117, 70, 62,189,208,155,
+ 63,102,131,123, 62,213,159,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,131,123,
+ 62,213,159,181, 63,105,195,133, 62,193,135, 37, 63,108,112,192, 62,217,196, 4, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,105, 97,170, 62,236,207, 65, 63,102,102,101, 63, 0, 0, 0, 63, 99,131,242, 62,233, 32,218,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,131,242, 62,233, 32,218, 63,102,131,123,
+ 62,213,159,181, 63,105, 97,170, 62,236,207, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,108,112,192, 62,217,196, 4, 63,105, 97,170, 62,236,207, 65, 63,102,131,123, 62,213,159,181, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,131,123, 62,213,159,181, 63, 99,131,242, 62,233, 32,218, 63, 96,133, 78,
+ 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,117, 70, 62,189,208,155,
+ 63, 96,133, 78, 62,210, 92, 55, 63, 93, 68,159, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 93, 68,159, 62,187,220, 72, 63, 96, 56, 71, 62,166,190, 99, 63, 99,117, 70, 62,189,208,155, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,102,187,106, 62,169,150, 54, 63, 99,117, 70, 62,189,208,155,
+ 63, 96, 56, 71, 62,166,190, 99, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 56, 71,
+ 62,166,190, 99, 63, 93, 68,159, 62,187,220, 72, 63, 89,153,149, 62,165,199,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 99,107, 33, 63, 9,152, 94, 63, 96, 92, 11, 63, 19, 29,253, 63, 92,238, 21, 63, 9,150,112,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 92,238, 21, 63, 9,150,112, 63, 95,255,254,
+ 62,255,252, 24, 63, 99,107, 33, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,102,102,101, 63, 0, 0, 0, 63, 99,107, 33, 63, 9,152, 94, 63, 95,255,254, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,255,254, 62,255,252, 24, 63, 92,238, 21, 63, 9,150,112, 63, 89,153,147,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 69, 14, 63, 9,150,112,
+ 63, 89,153,147, 63, 0, 0, 0, 63, 92,238, 21, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 92,238, 21, 63, 9,150,112, 63, 89,153,143, 63, 19, 98,219, 63, 86, 69, 14, 63, 9,150,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,215, 19, 63, 19, 29,252, 63, 86, 69, 14, 63, 9,150,112,
+ 63, 89,153,143, 63, 19, 98,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,143,
+ 63, 19, 98,219, 63, 92,238, 21, 63, 9,150,112, 63, 96, 92, 11, 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 93, 30, 63, 63, 28,140,143, 63, 89,153,139, 63, 37,200, 45, 63, 86, 20,218, 63, 28,140,143,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 20,218, 63, 28,140,143, 63, 89,153,143,
+ 63, 19, 98,219, 63, 93, 30, 63, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 96, 92, 11, 63, 19, 29,253, 63, 93, 30, 63, 63, 28,140,143, 63, 89,153,143, 63, 19, 98,219, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,143, 63, 19, 98,219, 63, 86, 20,218, 63, 28,140,143, 63, 82,215, 19,
+ 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 86, 69, 14, 63, 9,150,112,
+ 63, 82,215, 19, 63, 19, 29,252, 63, 79,200, 1, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 79,200, 1, 63, 9,152, 94, 63, 83, 51, 41, 62,255,252, 24, 63, 86, 69, 14, 63, 9,150,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,147, 63, 0, 0, 0, 63, 86, 69, 14, 63, 9,150,112,
+ 63, 83, 51, 41, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 83, 51, 41,
+ 62,255,252, 24, 63, 79,200, 1, 63, 9,152, 94, 63, 76,204,193, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61, 18, 28,237, 62,187,220, 60, 60,188, 35,151, 62,210, 92, 46, 60, 60, 74,218, 62,189,208,150,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60, 60, 74,218, 62,189,208,150, 60,197,197,195,
+ 62,166,190, 89, 61, 18, 28,237, 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61, 76,205,194, 62,165,199,186, 61, 18, 28,237, 62,187,220, 60, 60,197,197,195, 62,166,190, 89, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,131, 23, 23, 62,166,190, 89, 63,129,120,150, 62,189,208,150, 63,127,171, 15,
+ 62,169,150, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,162,241, 62,193,135, 36,
+ 63,127,171, 15, 62,169,150, 52, 63,129,120,150, 62,189,208,150, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,129,120,150, 62,189,208,150, 63,127,226,244, 62,213,159,179, 63,124,162,241, 62,193,135, 36, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,245,179, 62,217,196, 6, 63,124,162,241, 62,193,135, 36,
+ 63,127,226,244, 62,213,159,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,127,226,244,
+ 62,213,159,179, 63,129,120,150, 62,189,208,150, 63,130,240,142, 62,210, 92, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,129,113, 59, 62,233, 32,214, 63,128, 0, 0, 63, 0, 0, 0, 63,125, 4,194, 62,236,207, 67,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,125, 4,194, 62,236,207, 67, 63,127,226,244,
+ 62,213,159,179, 63,129,113, 59, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,130,240,142, 62,210, 92, 46, 63,129,113, 59, 62,233, 32,214, 63,127,226,244, 62,213,159,179, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,127,226,244, 62,213,159,179, 63,125, 4,194, 62,236,207, 67, 63,121,245,179,
+ 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124,162,241, 62,193,135, 36,
+ 63,121,245,179, 62,217,196, 6, 63,118,183,239, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,118,183,239, 62,198,230,227, 63,121, 80,133, 62,174, 54, 65, 63,124,162,241, 62,193,135, 36, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,127,171, 15, 62,169,150, 52, 63,124,162,241, 62,193,135, 36,
+ 63,121, 80,133, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 80,133,
+ 62,174, 54, 65, 63,118,183,239, 62,198,230,227, 63,115, 51, 65, 62,180,111,160, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 60, 56,157,110, 62,233, 32,214, 60,188, 35,151, 62,210, 92, 46, 61, 22,151, 95, 62,233, 23, 55,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 22,151, 95, 62,233, 23, 55, 60,204,204,176,
+ 62,255,252, 24, 60, 56,157,110, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 38, 11, 79,167, 63, 0, 0, 0, 60, 56,157,110, 62,233, 32,214, 60,204,204,176, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,204,204,176, 62,255,252, 24, 61, 22,151, 95, 62,233, 23, 55, 61, 76,204,215,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129,129, 87, 62,233, 23, 57,
+ 61, 76,204,215, 63, 0, 0, 0, 61, 22,151, 95, 62,233, 23, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61, 22,151, 95, 62,233, 23, 55, 61, 76,205, 68, 62,209,190,135, 61,129,129, 87, 62,233, 23, 57, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,157,196, 92, 62,210, 92, 49, 61,129,129, 87, 62,233, 23, 57,
+ 61, 76,205, 68, 62,209,190,135, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205, 68,
+ 62,209,190,135, 61, 22,151, 95, 62,233, 23, 55, 60,188, 35,151, 62,210, 92, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61, 18, 28,237, 62,187,220, 60, 61, 76,205,194, 62,165,199,186, 61,131,191, 7, 62,187,220, 62,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,131,191, 7, 62,187,220, 62, 61, 76,205, 68,
+ 62,209,190,135, 61, 18, 28,237, 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 60,188, 35,151, 62,210, 92, 46, 61, 18, 28,237, 62,187,220, 60, 61, 76,205, 68, 62,209,190,135, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205, 68, 62,209,190,135, 61,131,191, 7, 62,187,220, 62, 61,157,196, 92,
+ 62,210, 92, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129,129, 87, 62,233, 23, 57,
+ 61,157,196, 92, 62,210, 92, 49, 61,181,185, 89, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,181,185, 89, 62,233, 32,214, 61,153,153,154, 62,255,252, 25, 61,129,129, 87, 62,233, 23, 57, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204,215, 63, 0, 0, 0, 61,129,129, 87, 62,233, 23, 57,
+ 61,153,153,154, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,153,153,154,
+ 62,255,252, 25, 61,181,185, 89, 62,233, 32,214, 61,204,204,215, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 11,135, 1, 62,198,230,228, 61,253, 31,171, 62,217,196, 6, 61,231,181,251, 62,193,135, 38,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,231,181,251, 62,193,135, 38, 62, 1, 36,204,
+ 62,174, 54, 70, 62, 11,135, 1, 62,198,230,228, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 25,153,214, 62,180,111,165, 62, 11,135, 1, 62,198,230,228, 62, 1, 36,204, 62,174, 54, 70, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 1, 36,204, 62,174, 54, 70, 61,231,181,251, 62,193,135, 38, 61,207,117, 70,
+ 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181, 68, 35, 62,189,208,153,
+ 61,207,117, 70, 62,169,150, 54, 61,231,181,251, 62,193,135, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,231,181,251, 62,193,135, 38, 61,205,181,164, 62,213,159,180, 61,181, 68, 35, 62,189,208,153, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,157,196, 92, 62,210, 92, 49, 61,181, 68, 35, 62,189,208,153,
+ 61,205,181,164, 62,213,159,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,205,181,164,
+ 62,213,159,180, 61,231,181,251, 62,193,135, 38, 61,253, 31,171, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,228,166,251, 62,236,207, 67, 61,204,204,215, 63, 0, 0, 0, 61,181,185, 89, 62,233, 32,214,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181,185, 89, 62,233, 32,214, 61,205,181,164,
+ 62,213,159,180, 61,228,166,251, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,253, 31,171, 62,217,196, 6, 61,228,166,251, 62,236,207, 67, 61,205,181,164, 62,213,159,180, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,205,181,164, 62,213,159,180, 61,181,185, 89, 62,233, 32,214, 61,157,196, 92,
+ 62,210, 92, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,181, 68, 35, 62,189,208,153,
+ 61,157,196, 92, 62,210, 92, 49, 61,131,191, 7, 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,131,191, 7, 62,187,220, 62, 61,155, 92, 79, 62,166,190, 91, 61,181, 68, 35, 62,189,208,153, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,207,117, 70, 62,169,150, 54, 61,181, 68, 35, 62,189,208,153,
+ 61,155, 92, 79, 62,166,190, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,155, 92, 79,
+ 62,166,190, 91, 61,131,191, 7, 62,187,220, 62, 61, 76,205,194, 62,165,199,186, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,180,242,172, 63, 9,152, 96, 61,156,122, 1, 63, 19, 29,254, 61,129, 10,100, 63, 9,150,113,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,129, 10,100, 63, 9,150,113, 61,153,153,154,
+ 62,255,252, 25, 61,180,242,172, 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,204,204,215, 63, 0, 0, 0, 61,180,242,172, 63, 9,152, 96, 61,153,153,154, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,153,153,154, 62,255,252, 25, 61,129, 10,100, 63, 9,150,113, 61, 76,204,215,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 23,132,109, 63, 9,150,113,
+ 61, 76,204,215, 63, 0, 0, 0, 61,129, 10,100, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,129, 10,100, 63, 9,150,113, 61, 76,204, 91, 63, 19, 98,220, 61, 23,132,109, 63, 9,150,113, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,193, 73,174, 63, 19, 29,253, 61, 23,132,109, 63, 9,150,113,
+ 61, 76,204, 91, 63, 19, 98,220, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204, 91,
+ 63, 19, 98,220, 61,129, 10,100, 63, 9,150,113, 61,156,122, 1, 63, 19, 29,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,130,139,166, 63, 28,140,145, 61, 76,203,246, 63, 37,200, 48, 61, 20,129, 13, 63, 28,140,143,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 20,129, 13, 63, 28,140,143, 61, 76,204, 91,
+ 63, 19, 98,220, 61,130,139,166, 63, 28,140,145, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,156,122, 1, 63, 19, 29,254, 61,130,139,166, 63, 28,140,145, 61, 76,204, 91, 63, 19, 98,220, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204, 91, 63, 19, 98,220, 61, 20,129, 13, 63, 28,140,143, 60,193, 73,174,
+ 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 23,132,109, 63, 9,150,113,
+ 60,193, 73,174, 63, 19, 29,253, 60, 62,207,114, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 60, 62,207,114, 63, 9,152, 94, 60,204,204,176, 62,255,252, 24, 61, 23,132,109, 63, 9,150,113, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,204,215, 63, 0, 0, 0, 61, 23,132,109, 63, 9,150,113,
+ 60,204,204,176, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,204,204,176,
+ 62,255,252, 24, 60, 62,207,114, 63, 9,152, 94, 38, 11, 79,167, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,113, 83,237, 62,187,220, 79, 62,100, 81, 63, 62,210, 92, 60, 62, 88,145,110, 62,189,208,167,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 88,145,110, 62,189,208,167, 62,101,133, 91,
+ 62,166,190,112, 62,113, 83,237, 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 62,165,199,206, 62,113, 83,237, 62,187,220, 79, 62,101,133, 91, 62,166,190,112, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,101,133, 91, 62,166,190,112, 62, 88,145,110, 62,189,208,167, 62, 75,120,239,
+ 62,169,150, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 63, 88,144, 62,193,135, 46,
+ 62, 75,120,239, 62,169,150, 70, 62, 88,145,110, 62,189,208,167, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 88,145,110, 62,189,208,167, 62, 76, 88,170, 62,213,159,187, 62, 63, 88,144, 62,193,135, 46, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52,163,179, 62,217,196, 7, 62, 63, 88,144, 62,193,135, 46,
+ 62, 76, 88,170, 62,213,159,187, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 76, 88,170,
+ 62,213,159,187, 62, 88,145,110, 62,189,208,167, 62,100, 81, 63, 62,210, 92, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 88, 86,190, 62,233, 32,221, 62, 76,204,254, 63, 0, 0, 0, 62, 64,223,251, 62,236,207, 67,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 64,223,251, 62,236,207, 67, 62, 76, 88,170,
+ 62,213,159,187, 62, 88, 86,190, 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,100, 81, 63, 62,210, 92, 60, 62, 88, 86,190, 62,233, 32,221, 62, 76, 88,170, 62,213,159,187, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 76, 88,170, 62,213,159,187, 62, 64,223,251, 62,236,207, 67, 62, 52,163,179,
+ 62,217,196, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 63, 88,144, 62,193,135, 46,
+ 62, 52,163,179, 62,217,196, 7, 62, 39,172,153, 62,198,230,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 39,172,153, 62,198,230,230, 62, 50, 14,213, 62,174, 54, 78, 62, 63, 88,144, 62,193,135, 46, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 75,120,239, 62,169,150, 70, 62, 63, 88,144, 62,193,135, 46,
+ 62, 50, 14,213, 62,174, 54, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 50, 14,213,
+ 62,174, 54, 78, 62, 39,172,153, 62,198,230,230, 62, 25,153,214, 62,180,111,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 88, 86,190, 62,233, 32,221, 62,100, 81, 63, 62,210, 92, 60, 62,114,114,166, 62,233, 23, 63,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,114,166, 62,233, 23, 63, 62,102,102,126,
+ 62,255,252, 25, 62, 88, 86,190, 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 76,204,254, 63, 0, 0, 0, 62, 88, 86,190, 62,233, 32,221, 62,102,102,126, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,102,102,126, 62,255,252, 25, 62,114,114,166, 62,233, 23, 63, 62,128, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,198,173, 62,233, 23, 63,
+ 62,128, 0, 0, 63, 0, 0, 0, 62,114,114,166, 62,233, 23, 63, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,114,114,166, 62,233, 23, 63, 62,128, 0, 0, 62,209,190,149, 62,134,198,173, 62,233, 23, 63, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,215, 97, 62,210, 92, 60, 62,134,198,173, 62,233, 23, 63,
+ 62,128, 0, 0, 62,209,190,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0,
+ 62,209,190,149, 62,114,114,166, 62,233, 23, 63, 62,100, 81, 63, 62,210, 92, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,113, 83,237, 62,187,220, 79, 62,128, 0, 0, 62,165,199,206, 62,135, 86, 9, 62,187,220, 79,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,135, 86, 9, 62,187,220, 79, 62,128, 0, 0,
+ 62,209,190,149, 62,113, 83,237, 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,100, 81, 63, 62,210, 92, 60, 62,113, 83,237, 62,187,220, 79, 62,128, 0, 0, 62,209,190,149, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,209,190,149, 62,135, 86, 9, 62,187,220, 79, 62,141,215, 97,
+ 62,210, 92, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,198,173, 62,233, 23, 63,
+ 62,141,215, 97, 62,210, 92, 60, 62,147,212,161, 62,233, 32,221, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,147,212,161, 62,233, 32,221, 62,140,204,193, 62,255,252, 25, 62,134,198,173, 62,233, 23, 63, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 0, 0, 0, 62,134,198,173, 62,233, 23, 63,
+ 62,140,204,193, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,140,204,193,
+ 62,255,252, 25, 62,147,212,161, 62,233, 32,221, 62,153,153,129, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,172, 41,180, 62,198,230,227, 62,165,174, 39, 62,217,196, 7, 62,160, 83,184, 62,193,135, 46,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,160, 83,184, 62,193,135, 46, 62,166,248,150,
+ 62,174, 54, 78, 62,172, 41,180, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,179, 51, 21, 62,180,111,165, 62,172, 41,180, 62,198,230,227, 62,166,248,150, 62,174, 54, 78, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,166,248,150, 62,174, 54, 78, 62,160, 83,184, 62,193,135, 46, 62,154, 67,137,
+ 62,169,150, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,183, 73, 62,189,208,167,
+ 62,154, 67,137, 62,169,150, 70, 62,160, 83,184, 62,193,135, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,160, 83,184, 62,193,135, 46, 62,153,211,171, 62,213,159,187, 62,147,183, 73, 62,189,208,167, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141,215, 97, 62,210, 92, 60, 62,147,183, 73, 62,189,208,167,
+ 62,153,211,171, 62,213,159,187, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153,211,171,
+ 62,213,159,187, 62,160, 83,184, 62,193,135, 46, 62,165,174, 39, 62,217,196, 7, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,159,144, 3, 62,236,207, 67, 62,153,153,129, 63, 0, 0, 0, 62,147,212,161, 62,233, 32,221,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,212,161, 62,233, 32,221, 62,153,211,171,
+ 62,213,159,187, 62,159,144, 3, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,165,174, 39, 62,217,196, 7, 62,159,144, 3, 62,236,207, 67, 62,153,211,171, 62,213,159,187, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,153,211,171, 62,213,159,187, 62,147,212,161, 62,233, 32,221, 62,141,215, 97,
+ 62,210, 92, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147,183, 73, 62,189,208,167,
+ 62,141,215, 97, 62,210, 92, 60, 62,135, 86, 9, 62,187,220, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,135, 86, 9, 62,187,220, 79, 62,141, 61, 82, 62,166,190,112, 62,147,183, 73, 62,189,208,167, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,154, 67,137, 62,169,150, 70, 62,147,183, 73, 62,189,208,167,
+ 62,141, 61, 82, 62,166,190,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,141, 61, 82,
+ 62,166,190,112, 62,135, 86, 9, 62,187,220, 79, 62,128, 0, 0, 62,165,199,206, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,147,163, 1, 63, 9,152, 91, 62,141,132,224, 63, 19, 29,246, 62,134,168,251, 63, 9,150,107,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,134,168,251, 63, 9,150,107, 62,140,204,193,
+ 62,255,252, 25, 62,147,163, 1, 63, 9,152, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,153,153,129, 63, 0, 0, 0, 62,147,163, 1, 63, 9,152, 91, 62,140,204,193, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,140,204,193, 62,255,252, 25, 62,134,168,251, 63, 9,150,107, 62,128, 0, 0,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,174, 11, 63, 9,150,107,
+ 62,128, 0, 0, 63, 0, 0, 0, 62,134,168,251, 63, 9,150,107, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,134,168,251, 63, 9,150,107, 62,128, 0, 0, 63, 19, 98,209, 62,114,174, 11, 63, 9,150,107, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,100,246, 64, 63, 19, 29,246, 62,114,174, 11, 63, 9,150,107,
+ 62,128, 0, 0, 63, 19, 98,209, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0,
+ 63, 19, 98,209, 62,134,168,251, 63, 9,150,107, 62,141,132,224, 63, 19, 29,246, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,135, 9, 86, 63, 28,140,130, 62,128, 0, 0, 63, 37,200, 23, 62,113,237, 83, 63, 28,140,130,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,113,237, 83, 63, 28,140,130, 62,128, 0, 0,
+ 63, 19, 98,209, 62,135, 9, 86, 63, 28,140,130, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,141,132,224, 63, 19, 29,246, 62,135, 9, 86, 63, 28,140,130, 62,128, 0, 0, 63, 19, 98,209, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 19, 98,209, 62,113,237, 83, 63, 28,140,130, 62,100,246, 64,
+ 63, 19, 29,246, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,114,174, 11, 63, 9,150,107,
+ 62,100,246, 64, 63, 19, 29,246, 62, 88,185,255, 63, 9,152, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 88,185,255, 63, 9,152, 90, 62,102,102,126, 62,255,252, 25, 62,114,174, 11, 63, 9,150,107, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 63, 0, 0, 0, 62,114,174, 11, 63, 9,150,107,
+ 62,102,102,126, 62,255,252, 25, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,102,102,126,
+ 62,255,252, 25, 62, 88,185,255, 63, 9,152, 90, 62, 76,204,254, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,223, 16, 63, 62,187,220, 62, 62,216,142,233, 62,210, 92, 49, 62,210,174,248, 62,189,208,153,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,210,174,248, 62,189,208,153, 62,217, 40,237,
+ 62,166,190, 91, 62,223, 16, 63, 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102, 72, 62,165,199,183, 62,223, 16, 63, 62,187,220, 62, 62,217, 40,237, 62,166,190, 91, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,217, 40,237, 62,166,190, 91, 62,210,174,248, 62,189,208,153, 62,204, 34,175,
+ 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198, 18,129, 62,193,135, 37,
+ 62,204, 34,175, 62,169,150, 54, 62,210,174,248, 62,189,208,153, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,210,174,248, 62,189,208,153, 62,204,146,151, 62,213,159,180, 62,198, 18,129, 62,193,135, 37, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,184, 21, 62,217,196, 6, 62,198, 18,129, 62,193,135, 37,
+ 62,204,146,151, 62,213,159,180, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204,146,151,
+ 62,213,159,180, 62,210,174,248, 62,189,208,153, 62,216,142,233, 62,210, 92, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,210,145,170, 62,233, 32,214, 62,204,204,202, 63, 0, 0, 0, 62,198,214, 65, 62,236,207, 67,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198,214, 65, 62,236,207, 67, 62,204,146,151,
+ 62,213,159,180, 62,210,145,170, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,216,142,233, 62,210, 92, 49, 62,210,145,170, 62,233, 32,214, 62,204,146,151, 62,213,159,180, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204,146,151, 62,213,159,180, 62,198,214, 65, 62,236,207, 67, 62,192,184, 21,
+ 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,198, 18,129, 62,193,135, 37,
+ 62,192,184, 21, 62,217,196, 6, 62,186, 60,127, 62,198,230,225, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,186, 60,127, 62,198,230,225, 62,191,109,154, 62,174, 54, 68, 62,198, 18,129, 62,193,135, 37, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,204, 34,175, 62,169,150, 54, 62,198, 18,129, 62,193,135, 37,
+ 62,191,109,154, 62,174, 54, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,191,109,154,
+ 62,174, 54, 68, 62,186, 60,127, 62,198,230,225, 62,179, 51, 21, 62,180,111,165, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,210,145,170, 62,233, 32,214, 62,216,142,233, 62,210, 92, 49, 62,223,159,171, 62,233, 23, 57,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,159,171, 62,233, 23, 57, 62,217,153,154,
+ 62,255,252, 24, 62,210,145,170, 62,233, 32,214, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,204,204,202, 63, 0, 0, 0, 62,210,145,170, 62,233, 32,214, 62,217,153,154, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,217,153,154, 62,255,252, 24, 62,223,159,171, 62,233, 23, 57, 62,230,102,101,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 45, 20, 62,233, 23, 55,
+ 62,230,102,101, 63, 0, 0, 0, 62,223,159,171, 62,233, 23, 57, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,223,159,171, 62,233, 23, 57, 62,230,102, 88, 62,209,190,135, 62,237, 45, 20, 62,233, 23, 55, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,244, 61,199, 62,210, 92, 46, 62,237, 45, 20, 62,233, 23, 55,
+ 62,230,102, 88, 62,209,190,135, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 88,
+ 62,209,190,135, 62,223,159,171, 62,233, 23, 57, 62,216,142,233, 62,210, 92, 49, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,223, 16, 63, 62,187,220, 62, 62,230,102, 72, 62,165,199,183, 62,237,188, 99, 62,187,220, 60,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237,188, 99, 62,187,220, 60, 62,230,102, 88,
+ 62,209,190,135, 62,223, 16, 63, 62,187,220, 62, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,216,142,233, 62,210, 92, 49, 62,223, 16, 63, 62,187,220, 62, 62,230,102, 88, 62,209,190,135, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 88, 62,209,190,135, 62,237,188, 99, 62,187,220, 60, 62,244, 61,199,
+ 62,210, 92, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 45, 20, 62,233, 23, 55,
+ 62,244, 61,199, 62,210, 92, 46, 62,250, 59, 21, 62,233, 32,213, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,250, 59, 21, 62,233, 32,213, 62,243, 51, 53, 62,255,252, 24, 62,237, 45, 20, 62,233, 23, 55, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,101, 63, 0, 0, 0, 62,237, 45, 20, 62,233, 23, 55,
+ 62,243, 51, 53, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243, 51, 53,
+ 62,255,252, 24, 62,250, 59, 21, 62,233, 32,213, 63, 0, 0, 0, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 9, 72, 17, 62,198,230,227, 63, 6, 10, 77, 62,217,196, 6, 63, 3, 93, 15, 62,193,135, 36,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3, 93, 15, 62,193,135, 36, 63, 6,175,123,
+ 62,174, 54, 65, 63, 9, 72, 17, 62,198,230,227, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 12,204,191, 62,180,111,160, 63, 9, 72, 17, 62,198,230,227, 63, 6,175,123, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,175,123, 62,174, 54, 65, 63, 3, 93, 15, 62,193,135, 36, 63, 0, 84,241,
+ 62,169,150, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 29,169, 62,189,208,150,
+ 63, 0, 84,241, 62,169,150, 52, 63, 3, 93, 15, 62,193,135, 36, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 3, 93, 15, 62,193,135, 36, 63, 0, 29, 12, 62,213,159,179, 62,250, 29,169, 62,189,208,150, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,244, 61,199, 62,210, 92, 46, 62,250, 29,169, 62,189,208,150,
+ 63, 0, 29, 12, 62,213,159,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 29, 12,
+ 62,213,159,179, 63, 3, 93, 15, 62,193,135, 36, 63, 6, 10, 77, 62,217,196, 6, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 2,251, 62, 62,236,207, 67, 63, 0, 0, 0, 63, 0, 0, 0, 62,250, 59, 21, 62,233, 32,213,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 59, 21, 62,233, 32,213, 63, 0, 29, 12,
+ 62,213,159,179, 63, 2,251, 62, 62,236,207, 67, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 6, 10, 77, 62,217,196, 6, 63, 2,251, 62, 62,236,207, 67, 63, 0, 29, 12, 62,213,159,179, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 29, 12, 62,213,159,179, 62,250, 59, 21, 62,233, 32,213, 62,244, 61,199,
+ 62,210, 92, 46, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 29,169, 62,189,208,150,
+ 62,244, 61,199, 62,210, 92, 46, 62,237,188, 99, 62,187,220, 60, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,237,188, 99, 62,187,220, 60, 62,243,163,164, 62,166,190, 89, 62,250, 29,169, 62,189,208,150, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 0, 84,241, 62,169,150, 52, 62,250, 29,169, 62,189,208,150,
+ 62,243,163,164, 62,166,190, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243,163,164,
+ 62,166,190, 89, 62,237,188, 99, 62,187,220, 60, 62,230,102, 72, 62,165,199,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,250, 9,132, 63, 9,152, 94, 62,243,235,101, 63, 19, 29,252, 62,237, 15,114, 63, 9,150,113,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,237, 15,114, 63, 9,150,113, 62,243, 51, 53,
+ 62,255,252, 24, 62,250, 9,132, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 62,250, 9,132, 63, 9,152, 94, 62,243, 51, 53, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,243, 51, 53, 62,255,252, 24, 62,237, 15,114, 63, 9,150,113, 62,230,102,101,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,189,103, 63, 9,150,112,
+ 62,230,102,101, 63, 0, 0, 0, 62,237, 15,114, 63, 9,150,113, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,237, 15,114, 63, 9,150,113, 62,230,102,117, 63, 19, 98,220, 62,223,189,103, 63, 9,150,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,216,225,128, 63, 19, 29,254, 62,223,189,103, 63, 9,150,112,
+ 62,230,102,117, 63, 19, 98,220, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,117,
+ 63, 19, 98,220, 62,237, 15,114, 63, 9,150,113, 62,243,235,101, 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,237,111,222, 63, 28,140,143, 62,230,102,129, 63, 37,200, 48, 62,223, 93, 22, 63, 28,140,145,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223, 93, 22, 63, 28,140,145, 62,230,102,117,
+ 63, 19, 98,220, 62,237,111,222, 63, 28,140,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,243,235,101, 63, 19, 29,252, 62,237,111,222, 63, 28,140,143, 62,230,102,117, 63, 19, 98,220, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,117, 63, 19, 98,220, 62,223, 93, 22, 63, 28,140,145, 62,216,225,128,
+ 63, 19, 29,254, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,223,189,103, 63, 9,150,112,
+ 62,216,225,128, 63, 19, 29,254, 62,210,195, 85, 63, 9,152, 96, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,210,195, 85, 63, 9,152, 96, 62,217,153,154, 62,255,252, 24, 62,223,189,103, 63, 9,150,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102,101, 63, 0, 0, 0, 62,223,189,103, 63, 9,150,112,
+ 62,217,153,154, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,217,153,154,
+ 62,255,252, 24, 62,210,195, 85, 63, 9,152, 96, 62,204,204,202, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 34,187, 97, 62,187,220, 72, 63, 31,122,178, 62,210, 92, 55, 63, 28,138,186, 62,189,208,155,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,138,186, 62,189,208,155, 63, 31,199,185,
+ 62,166,190, 96, 63, 34,187, 97, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,107, 62,165,199,201, 63, 34,187, 97, 62,187,220, 72, 63, 31,199,185, 62,166,190, 96, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,199,185, 62,166,190, 96, 63, 28,138,186, 62,189,208,155, 63, 25, 68,150,
+ 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22, 60,123, 62,193,135, 36,
+ 63, 25, 68,150, 62,169,150, 54, 63, 28,138,186, 62,189,208,155, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 28,138,186, 62,189,208,155, 63, 25,124,133, 62,213,159,181, 63, 22, 60,123, 62,193,135, 36, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,143, 64, 62,217,196, 4, 63, 22, 60,123, 62,193,135, 36,
+ 63, 25,124,133, 62,213,159,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,124,133,
+ 62,213,159,181, 63, 28,138,186, 62,189,208,155, 63, 31,122,178, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,124, 14, 62,233, 32,218, 63, 25,153,155, 63, 0, 0, 0, 63, 22,158, 86, 62,236,207, 65,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22,158, 86, 62,236,207, 65, 63, 25,124,133,
+ 62,213,159,181, 63, 28,124, 14, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 31,122,178, 62,210, 92, 55, 63, 28,124, 14, 62,233, 32,218, 63, 25,124,133, 62,213,159,181, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25,124,133, 62,213,159,181, 63, 22,158, 86, 62,236,207, 65, 63, 19,143, 64,
+ 62,217,196, 4, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 22, 60,123, 62,193,135, 36,
+ 63, 19,143, 64, 62,217,196, 4, 63, 16, 81,117, 62,198,230,223, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 16, 81,117, 62,198,230,223, 63, 18,234, 7, 62,174, 54, 65, 63, 22, 60,123, 62,193,135, 36, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 25, 68,150, 62,169,150, 54, 63, 22, 60,123, 62,193,135, 36,
+ 63, 18,234, 7, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,234, 7,
+ 62,174, 54, 65, 63, 16, 81,117, 62,198,230,223, 63, 12,204,191, 62,180,111,160, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,124, 14, 62,233, 32,218, 63, 31,122,178, 62,210, 92, 55, 63, 35, 3, 17, 62,233, 23, 58,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 3, 17, 62,233, 23, 58, 63, 32, 0, 2,
+ 62,255,252, 24, 63, 28,124, 14, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 25,153,155, 63, 0, 0, 0, 63, 28,124, 14, 62,233, 32,218, 63, 32, 0, 2, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32, 0, 2, 62,255,252, 24, 63, 35, 3, 17, 62,233, 23, 58, 63, 38,102,109,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,201,200, 62,233, 23, 58,
+ 63, 38,102,109, 63, 0, 0, 0, 63, 35, 3, 17, 62,233, 23, 58, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 35, 3, 17, 62,233, 23, 58, 63, 38,102,109, 62,209,190,143, 63, 41,201,200, 62,233, 23, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 82, 38, 62,210, 92, 55, 63, 41,201,200, 62,233, 23, 58,
+ 63, 38,102,109, 62,209,190,143, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109,
+ 62,209,190,143, 63, 35, 3, 17, 62,233, 23, 58, 63, 31,122,178, 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 34,187, 97, 62,187,220, 72, 63, 38,102,107, 62,165,199,201, 63, 42, 17,118, 62,187,220, 72,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42, 17,118, 62,187,220, 72, 63, 38,102,109,
+ 62,209,190,143, 63, 34,187, 97, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 31,122,178, 62,210, 92, 55, 63, 34,187, 97, 62,187,220, 72, 63, 38,102,109, 62,209,190,143, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109, 62,209,190,143, 63, 42, 17,118, 62,187,220, 72, 63, 45, 82, 38,
+ 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,201,200, 62,233, 23, 58,
+ 63, 45, 82, 38, 62,210, 92, 55, 63, 48, 80,204, 62,233, 32,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 48, 80,204, 62,233, 32,218, 63, 44,204,215, 62,255,252, 23, 63, 41,201,200, 62,233, 23, 58, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109, 63, 0, 0, 0, 63, 41,201,200, 62,233, 23, 58,
+ 63, 44,204,215, 62,255,252, 23, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44,204,215,
+ 62,255,252, 23, 63, 48, 80,204, 62,233, 32,218, 63, 51, 51, 63, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 60,123, 85, 62,198,230,253, 63, 57, 61,144, 62,217,196, 19, 63, 54,144, 86, 62,193,135, 68,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,144, 86, 62,193,135, 68, 63, 57,226,196,
+ 62,174, 54,114, 63, 60,123, 85, 62,198,230,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 62,180,111,211, 63, 60,123, 85, 62,198,230,253, 63, 57,226,196, 62,174, 54,114, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57,226,196, 62,174, 54,114, 63, 54,144, 86, 62,193,135, 68, 63, 51,136, 58,
+ 62,169,150, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 66, 27, 62,189,208,173,
+ 63, 51,136, 58, 62,169,150, 90, 63, 54,144, 86, 62,193,135, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 54,144, 86, 62,193,135, 68, 63, 51, 80, 80, 62,213,159,192, 63, 48, 66, 27, 62,189,208,173, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 82, 38, 62,210, 92, 55, 63, 48, 66, 27, 62,189,208,173,
+ 63, 51, 80, 80, 62,213,159,192, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 80, 80,
+ 62,213,159,192, 63, 54,144, 86, 62,193,135, 68, 63, 57, 61,144, 62,217,196, 19, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 54, 46,128, 62,236,207, 75, 63, 51, 51, 63, 63, 0, 0, 0, 63, 48, 80,204, 62,233, 32,218,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 80,204, 62,233, 32,218, 63, 51, 80, 80,
+ 62,213,159,192, 63, 54, 46,128, 62,236,207, 75, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 57, 61,144, 62,217,196, 19, 63, 54, 46,128, 62,236,207, 75, 63, 51, 80, 80, 62,213,159,192, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51, 80, 80, 62,213,159,192, 63, 48, 80,204, 62,233, 32,218, 63, 45, 82, 38,
+ 62,210, 92, 55, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 66, 27, 62,189,208,173,
+ 63, 45, 82, 38, 62,210, 92, 55, 63, 42, 17,118, 62,187,220, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 42, 17,118, 62,187,220, 72, 63, 45, 5, 26, 62,166,190,117, 63, 48, 66, 27, 62,189,208,173, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 51,136, 58, 62,169,150, 90, 63, 48, 66, 27, 62,189,208,173,
+ 63, 45, 5, 26, 62,166,190,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 5, 26,
+ 62,166,190,117, 63, 42, 17,118, 62,187,220, 72, 63, 38,102,107, 62,165,199,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 55,255, 63, 9,152, 94, 63, 45, 40,237, 63, 19, 29,252, 63, 41,186,242, 63, 9,150,112,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,186,242, 63, 9,150,112, 63, 44,204,215,
+ 62,255,252, 23, 63, 48, 55,255, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 51, 51, 63, 63, 0, 0, 0, 63, 48, 55,255, 63, 9,152, 94, 63, 44,204,215, 62,255,252, 23, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44,204,215, 62,255,252, 23, 63, 41,186,242, 63, 9,150,112, 63, 38,102,109,
+ 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 17,235, 63, 9,150,112,
+ 63, 38,102,109, 63, 0, 0, 0, 63, 41,186,242, 63, 9,150,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 41,186,242, 63, 9,150,112, 63, 38,102,113, 63, 19, 98,219, 63, 35, 17,235, 63, 9,150,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,163,245, 63, 19, 29,253, 63, 35, 17,235, 63, 9,150,112,
+ 63, 38,102,113, 63, 19, 98,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,113,
+ 63, 19, 98,219, 63, 41,186,242, 63, 9,150,112, 63, 45, 40,237, 63, 19, 29,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 41,235, 38, 63, 28,140,141, 63, 38,102,117, 63, 37,200, 45, 63, 34,225,192, 63, 28,140,142,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34,225,192, 63, 28,140,142, 63, 38,102,113,
+ 63, 19, 98,219, 63, 41,235, 38, 63, 28,140,141, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 45, 40,237, 63, 19, 29,252, 63, 41,235, 38, 63, 28,140,141, 63, 38,102,113, 63, 19, 98,219, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,113, 63, 19, 98,219, 63, 34,225,192, 63, 28,140,142, 63, 31,163,245,
+ 63, 19, 29,253, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 35, 17,235, 63, 9,150,112,
+ 63, 31,163,245, 63, 19, 29,253, 63, 28,148,223, 63, 9,152, 94, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 28,148,223, 63, 9,152, 94, 63, 32, 0, 2, 62,255,252, 24, 63, 35, 17,235, 63, 9,150,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,109, 63, 0, 0, 0, 63, 35, 17,235, 63, 9,150,112,
+ 63, 32, 0, 2, 62,255,252, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 32, 0, 2,
+ 62,255,252, 24, 63, 28,148,223, 63, 9,152, 94, 63, 25,153,155, 63, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,107,129,188, 62,128, 45, 66, 63, 99, 71,235, 62,120, 76,222, 63,106, 37, 94, 62, 83, 97, 84,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,106, 37, 94, 62, 83, 97, 84, 63,115, 51, 65,
+ 62, 97,151,248, 63,107,129,188, 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,115, 51, 65, 62,135, 83,151, 63,107,129,188, 62,128, 45, 66, 63,115, 51, 65, 62, 97,151,248, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 97,151,248, 63,106, 37, 94, 62, 83, 97, 84, 63,115, 51, 65,
+ 62, 52,111, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,107,129,188, 62,128, 45, 66,
+ 63,115, 51, 65, 62,135, 83,151, 63,108,123,142, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,108,123,142, 62,151,144,169, 63,101, 50,231, 62,146,201, 17, 63,107,129,188, 62,128, 45, 66, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 71,235, 62,120, 76,222, 63,107,129,188, 62,128, 45, 66,
+ 63,101, 50,231, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,101, 50,231,
+ 62,146,201, 17, 63,108,123,142, 62,151,144,169, 63,102,187,106, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 96, 56, 71, 62,166,190, 99, 63, 89,153,149, 62,165,199,201, 63, 93,238, 22, 62,144,101,243,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93,238, 22, 62,144,101,243, 63,101, 50,231,
+ 62,146,201, 17, 63, 96, 56, 71, 62,166,190, 99, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,102,187,106, 62,169,150, 54, 63, 96, 56, 71, 62,166,190, 99, 63,101, 50,231, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,101, 50,231, 62,146,201, 17, 63, 93,238, 22, 62,144,101,243, 63, 99, 71,235,
+ 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,109, 21,249, 62,174, 54, 65,
+ 63,102,187,106, 62,169,150, 54, 63,108,123,142, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,108,123,142, 62,151,144,169, 63,115, 51, 65, 62,157,231, 93, 63,109, 21,249, 62,174, 54, 65, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,180,111,160, 63,109, 21,249, 62,174, 54, 65,
+ 63,115, 51, 65, 62,157,231, 93, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65,
+ 62,157,231, 93, 63,108,123,142, 62,151,144,169, 63,115, 51, 65, 62,135, 83,151, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,149, 62,115,162, 79, 63, 99, 71,235, 62,120, 76,222, 63, 93,238, 22, 62,144,101,243,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 93,238, 22, 62,144,101,243, 63, 85, 69, 21,
+ 62,144,102, 3, 63, 89,153,149, 62,115,162, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 79,235, 68, 62,120, 77, 37, 63, 89,153,149, 62,115,162, 79, 63, 85, 69, 21, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 85, 69, 21, 62,144,102, 3, 63, 93,238, 22, 62,144,101,243, 63, 89,153,149,
+ 62,165,199,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,149, 62,115,162, 79,
+ 63, 79,235, 68, 62,120, 77, 37, 63, 83,186, 24, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 83,186, 24, 62, 70,176,245, 63, 95,121, 22, 62, 70,176,204, 63, 89,153,149, 62,115,162, 79, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 99, 71,235, 62,120, 76,222, 63, 89,153,149, 62,115,162, 79,
+ 63, 95,121, 22, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,121, 22,
+ 62, 70,176,204, 63, 83,186, 24, 62, 70,176,245, 63, 89,153,152, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,103,119, 61, 62, 30,253,179, 63,115, 51, 65, 62, 52,111, 90, 63,106, 37, 94, 62, 83, 97, 84,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,106, 37, 94, 62, 83, 97, 84, 63, 95,121, 22,
+ 62, 70,176,204, 63,103,119, 61, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 89,153,152, 62, 23, 31,198, 63,103,119, 61, 62, 30,253,179, 63, 95,121, 22, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 95,121, 22, 62, 70,176,204, 63,106, 37, 94, 62, 83, 97, 84, 63, 99, 71,235,
+ 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 75,187,248, 62, 30,253,241,
+ 63, 89,153,152, 62, 23, 31,198, 63, 83,186, 24, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 83,186, 24, 62, 70,176,245, 63, 73, 13,214, 62, 83, 97,181, 63, 75,187,248, 62, 30,253,241, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 52,111,202, 63, 75,187,248, 62, 30,253,241,
+ 63, 73, 13,214, 62, 83, 97,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73, 13,214,
+ 62, 83, 97,181, 63, 83,186, 24, 62, 70,176,245, 63, 79,235, 68, 62,120, 77, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,152, 61,147, 41,111, 63, 64, 0, 0, 61,180,111,195, 63, 64, 0, 0, 61, 52, 65,111,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 61, 52, 65,111, 63,117, 49, 38,
+ 61, 52, 64,225, 63, 89,153,152, 61,147, 41,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,115, 51, 65, 61,180,111, 83, 63, 89,153,152, 61,147, 41,111, 63,117, 49, 38, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,117, 49, 38, 61, 52, 64,225, 63, 64, 0, 0, 61, 52, 65,111, 63,121,222,208,
+178,239, 9,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,152, 61,147, 41,111,
+ 63,115, 51, 65, 61,180,111, 83, 63, 99, 51,172, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 99, 51,172, 61,231, 46, 48, 63, 79,255,135, 61,231, 46,120, 63, 89,153,152, 61,147, 41,111, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 61,180,111,195, 63, 89,153,152, 61,147, 41,111,
+ 63, 79,255,135, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,255,135,
+ 61,231, 46,120, 63, 99, 51,172, 61,231, 46, 48, 63, 89,153,152, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 75,187,248, 62, 30,253,241, 63, 64, 0, 0, 62, 52,111,202, 63, 64, 0, 0, 62, 7, 71, 24,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 7, 71, 24, 63, 79,255,135,
+ 61,231, 46,120, 63, 75,187,248, 62, 30,253,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 89,153,152, 62, 23, 31,198, 63, 75,187,248, 62, 30,253,241, 63, 79,255,135, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 79,255,135, 61,231, 46,120, 63, 64, 0, 0, 62, 7, 71, 24, 63, 64, 0, 0,
+ 61,180,111,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,103,119, 61, 62, 30,253,179,
+ 63, 89,153,152, 62, 23, 31,198, 63, 99, 51,172, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 99, 51,172, 61,231, 46, 48, 63,115, 51, 66, 62, 7, 70,199, 63,103,119, 61, 62, 30,253,179, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 52,111, 90, 63,103,119, 61, 62, 30,253,179,
+ 63,115, 51, 66, 62, 7, 70,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 66,
+ 62, 7, 70,199, 63, 99, 51,172, 61,231, 46, 48, 63,115, 51, 65, 61,180,111, 83, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 71,177,122, 62,128, 45,120, 63, 64, 0, 0, 62,135, 83,218, 63, 64, 0, 0, 62, 97,152,115,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 97,152,115, 63, 73, 13,214,
+ 62, 83, 97,181, 63, 71,177,122, 62,128, 45,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 79,235, 68, 62,120, 77, 37, 63, 71,177,122, 62,128, 45,120, 63, 73, 13,214, 62, 83, 97,181, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 73, 13,214, 62, 83, 97,181, 63, 64, 0, 0, 62, 97,152,115, 63, 64, 0, 0,
+ 62, 52,111,202, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 71,177,122, 62,128, 45,120,
+ 63, 79,235, 68, 62,120, 77, 37, 63, 78, 0, 72, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 78, 0, 72, 62,146,201, 52, 63, 70,183,169, 62,151,144,219, 63, 71,177,122, 62,128, 45,120, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,135, 83,218, 63, 71,177,122, 62,128, 45,120,
+ 63, 70,183,169, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,183,169,
+ 62,151,144,219, 63, 78, 0, 72, 62,146,201, 52, 63, 76,119,198, 62,169,150, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 70, 29, 61, 62,174, 54,114, 63, 64, 0, 0, 62,180,111,211, 63, 64, 0, 0, 62,157,231,162,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,157,231,162, 63, 70,183,169,
+ 62,151,144,219, 63, 70, 29, 61, 62,174, 54,114, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 76,119,198, 62,169,150, 90, 63, 70, 29, 61, 62,174, 54,114, 63, 70,183,169, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 70,183,169, 62,151,144,219, 63, 64, 0, 0, 62,157,231,162, 63, 64, 0, 0,
+ 62,135, 83,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 82,250,230, 62,166,190,117,
+ 63, 76,119,198, 62,169,150, 90, 63, 78, 0, 72, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 78, 0, 72, 62,146,201, 52, 63, 85, 69, 21, 62,144,102, 3, 63, 82,250,230, 62,166,190,117, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 89,153,149, 62,165,199,201, 63, 82,250,230, 62,166,190,117,
+ 63, 85, 69, 21, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 85, 69, 21,
+ 62,144,102, 3, 63, 78, 0, 72, 62,146,201, 52, 63, 79,235, 68, 62,120, 77, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,245,167,179, 62,128, 45, 72, 61,179,217, 94, 62,120, 76,222, 61,234,196,202, 62, 83, 97,100,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,234,196,202, 62, 83, 97,100, 62, 25,153,212,
+ 62, 97,152, 2, 61,245,167,179, 62,128, 45, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 25,153,214, 62,135, 83,156, 61,245,167,179, 62,128, 45, 72, 62, 25,153,212, 62, 97,152, 2, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,212, 62, 97,152, 2, 61,234,196,202, 62, 83, 97,100, 62, 25,153,214,
+ 62, 52,111,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,245,167,179, 62,128, 45, 72,
+ 62, 25,153,214, 62,135, 83,156, 61,253,118, 62, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,253,118, 62, 62,151,144,174, 61,195, 49, 53, 62,146,201, 17, 61,245,167,179, 62,128, 45, 72, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,179,217, 94, 62,120, 76,222, 61,245,167,179, 62,128, 45, 72,
+ 61,195, 49, 53, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,195, 49, 53,
+ 62,146,201, 17, 61,253,118, 62, 62,151,144,174, 61,207,117, 70, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,155, 92, 79, 62,166,190, 91, 61, 76,205,194, 62,165,199,186, 61,137, 10,212, 62,144,101,238,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,137, 10,212, 62,144,101,238, 61,195, 49, 53,
+ 62,146,201, 17, 61,155, 92, 79, 62,166,190, 91, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61,207,117, 70, 62,169,150, 54, 61,155, 92, 79, 62,166,190, 91, 61,195, 49, 53, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,195, 49, 53, 62,146,201, 17, 61,137, 10,212, 62,144,101,238, 61,179,217, 94,
+ 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 1, 36,204, 62,174, 54, 70,
+ 61,207,117, 70, 62,169,150, 54, 61,253,118, 62, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,253,118, 62, 62,151,144,174, 62, 25,153,213, 62,157,231,100, 62, 1, 36,204, 62,174, 54, 70, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62,180,111,165, 62, 1, 36,204, 62,174, 54, 70,
+ 62, 25,153,213, 62,157,231,100, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,213,
+ 62,157,231,100, 61,253,118, 62, 62,151,144,174, 62, 25,153,214, 62,135, 83,156, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,188, 62,115,162, 53, 61,179,217, 94, 62,120, 76,222, 61,137, 10,212, 62,144,101,238,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,137, 10,212, 62,144,101,238, 61, 7,133,207,
+ 62,144,101,236, 61, 76,205,188, 62,115,162, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 60, 71,162,255, 62,120, 76,216, 61, 76,205,188, 62,115,162, 53, 61, 7,133,207, 62,144,101,236, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 7,133,207, 62,144,101,236, 61,137, 10,212, 62,144,101,238, 61, 76,205,194,
+ 62,165,199,186, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,188, 62,115,162, 53,
+ 60, 71,162,255, 62,120, 76,216, 60,221,171,190, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 60,221,171,190, 62, 70,176,194, 61,149, 98,194, 62, 70,176,194, 61, 76,205,188, 62,115,162, 53, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,179,217, 94, 62,120, 76,222, 61, 76,205,188, 62,115,162, 53,
+ 61,149, 98,194, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,149, 98,194,
+ 62, 70,176,194, 60,221,171,190, 62, 70,176,194, 61, 76,205,193, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 61,213, 83,198, 62, 30,253,179, 62, 25,153,214, 62, 52,111,106, 61,234,196,202, 62, 83, 97,100,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,234,196,202, 62, 83, 97,100, 61,149, 98,194,
+ 62, 70,176,194, 61,213, 83,198, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 61, 76,205,193, 62, 23, 31,168, 61,213, 83,198, 62, 30,253,179, 61,149, 98,194, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,149, 98,194, 62, 70,176,194, 61,234,196,202, 62, 83, 97,100, 61,179,217, 94,
+ 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,126,239, 59, 62, 30,253,174,
+ 63,131,105,154, 62, 23, 31,168, 63,131,118,175, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,131,118,175, 62, 70,176,194, 63,124, 65, 30, 62, 83, 97, 90, 63,126,239, 59, 62, 30,253,174, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 52,111, 90, 63,126,239, 59, 62, 30,253,174,
+ 63,124, 65, 30, 62, 83, 97, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124, 65, 30,
+ 62, 83, 97, 90, 63,131,118,175, 62, 70,176,194, 63,129,143, 70, 62,120, 76,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,131,105,156, 61,147, 41,101, 63,115, 51, 65, 61,180,111, 83, 63,117, 49, 38, 61, 52, 64,225,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,117, 49, 38, 61, 52, 64,225, 63,135,148,232,
+ 60,125,158,144, 63,131,105,156, 61,147, 41,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 25,153,215, 61,180,111,104, 61,128,245,122, 61,147, 41,101, 62, 25,153,224, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,135,148,232, 60,125,158,144, 63,117, 49, 38, 61, 52, 64,225, 63,121,222,208,
+178,239, 9,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,128,245,122, 61,147, 41,101,
+ 62, 25,153,215, 61,180,111,104, 61,179, 55, 89, 61,231, 46, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,179, 55, 89, 61,231, 46, 38, 60,208,147, 96, 61,231, 46, 48, 61,128,245,122, 61,147, 41,101, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 61,180,111, 83, 63,131,105,156, 61,147, 41,101,
+ 63,129,153,102, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 60,208,147, 96,
+ 61,231, 46, 48, 61,179, 55, 89, 61,231, 46, 38, 61, 76,205,193, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,126,239, 59, 62, 30,253,174, 63,115, 51, 65, 62, 52,111, 90, 63,115, 51, 66, 62, 7, 70,199,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 66, 62, 7, 70,199, 63,129,153,102,
+ 61,231, 46, 48, 63,126,239, 59, 62, 30,253,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,131,105,154, 62, 23, 31,168, 63,126,239, 59, 62, 30,253,174, 63,129,153,102, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,129,153,102, 61,231, 46, 48, 63,115, 51, 66, 62, 7, 70,199, 63,115, 51, 65,
+ 61,180,111, 83, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61,213, 83,198, 62, 30,253,179,
+ 61, 76,205,193, 62, 23, 31,168, 61,179, 55, 89, 61,231, 46, 38, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 61,179, 55, 89, 61,231, 46, 38, 62, 25,153,217, 62, 7, 70,204, 61,213, 83,198, 62, 30,253,179, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62, 52,111,106, 61,213, 83,198, 62, 30,253,179,
+ 62, 25,153,217, 62, 7, 70,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,217,
+ 62, 7, 70,204, 61,179, 55, 89, 61,231, 46, 38, 62, 25,153,215, 61,180,111,104, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,122,228,192, 62,128, 45, 66, 63,115, 51, 65, 62,135, 83,151, 63,115, 51, 65, 62, 97,151,248,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62, 97,151,248, 63,124, 65, 30,
+ 62, 83, 97, 90, 63,122,228,192, 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,129,143, 70, 62,120, 76,216, 63,122,228,192, 62,128, 45, 66, 63,124, 65, 30, 62, 83, 97, 90, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,124, 65, 30, 62, 83, 97, 90, 63,115, 51, 65, 62, 97,151,248, 63,115, 51, 65,
+ 62, 52,111, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,122,228,192, 62,128, 45, 66,
+ 63,129,143, 70, 62,120, 76,216, 63,128,153,201, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63,128,153,201, 62,146,201, 14, 63,121,234,239, 62,151,144,169, 63,122,228,192, 62,128, 45, 66, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,135, 83,151, 63,122,228,192, 62,128, 45, 66,
+ 63,121,234,239, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,234,239,
+ 62,151,144,169, 63,128,153,201, 62,146,201, 14, 63,127,171, 15, 62,169,150, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63,121, 80,133, 62,174, 54, 65, 63,115, 51, 65, 62,180,111,160, 63,115, 51, 65, 62,157,231, 93,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,115, 51, 65, 62,157,231, 93, 63,121,234,239,
+ 62,151,144,169, 63,121, 80,133, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63,127,171, 15, 62,169,150, 52, 63,121, 80,133, 62,174, 54, 65, 63,121,234,239, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,121,234,239, 62,151,144,169, 63,115, 51, 65, 62,157,231, 93, 63,115, 51, 65,
+ 62,135, 83,151, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63,131, 23, 23, 62,166,190, 89,
+ 63,127,171, 15, 62,169,150, 52, 63,128,153,201, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 59,153,200,136, 62,146,201, 14, 61, 7,133,207, 62,144,101,236, 60,197,197,195, 62,166,190, 89, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 76,205,194, 62,165,199,186, 60,197,197,195, 62,166,190, 89,
+ 61, 7,133,207, 62,144,101,236, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 61, 7,133,207,
+ 62,144,101,236, 59,153,200,136, 62,146,201, 14, 60, 71,162,255, 62,120, 76,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,163,208, 32, 62,128, 45, 79, 62,147, 92,147, 62,120, 76,252, 62,161, 23,102, 62, 83, 97,115,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,161, 23,102, 62, 83, 97,115, 62,179, 51, 22,
+ 62, 97,152, 2, 62,163,208, 32, 62,128, 45, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,179, 51, 21, 62,135, 83,156, 62,163,208, 32, 62,128, 45, 79, 62,179, 51, 22, 62, 97,152, 2, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 22, 62, 97,152, 2, 62,161, 23,102, 62, 83, 97,115, 62,179, 51, 21,
+ 62, 52,111,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,163,208, 32, 62,128, 45, 79,
+ 62,179, 51, 21, 62,135, 83,156, 62,165,195,194, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,165,195,194, 62,151,144,181, 62,151, 50,134, 62,146,201, 29, 62,163,208, 32, 62,128, 45, 79, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147, 92,147, 62,120, 76,252, 62,163,208, 32, 62,128, 45, 79,
+ 62,151, 50,134, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,151, 50,134,
+ 62,146,201, 29, 62,165,195,194, 62,151,144,181, 62,154, 67,137, 62,169,150, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,141, 61, 82, 62,166,190,112, 62,128, 0, 0, 62,165,199,206, 62,136,168,247, 62,144,102, 3,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,136,168,247, 62,144,102, 3, 62,151, 50,134,
+ 62,146,201, 29, 62,141, 61, 82, 62,166,190,112, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,154, 67,137, 62,169,150, 70, 62,141, 61, 82, 62,166,190,112, 62,151, 50,134, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,151, 50,134, 62,146,201, 29, 62,136,168,247, 62,144,102, 3, 62,147, 92,147,
+ 62,120, 76,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,166,248,150, 62,174, 54, 78,
+ 62,154, 67,137, 62,169,150, 70, 62,165,195,194, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,165,195,194, 62,151,144,181, 62,179, 51, 21, 62,157,231, 98, 62,166,248,150, 62,174, 54, 78, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,180,111,165, 62,166,248,150, 62,174, 54, 78,
+ 62,179, 51, 21, 62,157,231, 98, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21,
+ 62,157,231, 98, 62,165,195,194, 62,151,144,181, 62,179, 51, 21, 62,135, 83,156, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,115,162, 89, 62,147, 92,147, 62,120, 76,252, 62,136,168,247, 62,144,102, 3,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,136,168,247, 62,144,102, 3, 62,110,174, 18,
+ 62,144,102, 3, 62,128, 0, 0, 62,115,162, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 89, 70,217, 62,120, 76,252, 62,128, 0, 0, 62,115,162, 89, 62,110,174, 18, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,110,174, 18, 62,144,102, 3, 62,136,168,247, 62,144,102, 3, 62,128, 0, 0,
+ 62,165,199,206, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,115,162, 89,
+ 62, 89, 70,217, 62,120, 76,252, 62,104,130, 30, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,104,130, 30, 62, 70,176,230, 62,139,190,241, 62, 70,176,230, 62,128, 0, 0, 62,115,162, 89, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,147, 92,147, 62,120, 76,252, 62,128, 0, 0, 62,115,162, 89,
+ 62,139,190,241, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,139,190,241,
+ 62, 70,176,230, 62,104,130, 30, 62, 70,176,230, 62,128, 0, 0, 62, 23, 31,208, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,155,187, 41, 62, 30,253,205, 62,179, 51, 21, 62, 52,111,101, 62,161, 23,102, 62, 83, 97,115,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,161, 23,102, 62, 83, 97,115, 62,139,190,241,
+ 62, 70,176,230, 62,155,187, 41, 62, 30,253,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 62, 23, 31,208, 62,155,187, 41, 62, 30,253,205, 62,139,190,241, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,139,190,241, 62, 70,176,230, 62,161, 23,102, 62, 83, 97,115, 62,147, 92,147,
+ 62,120, 76,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 72,137,174, 62, 30,253,205,
+ 62,128, 0, 0, 62, 23, 31,208, 62,104,130, 30, 62, 70,176,230, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,104,130, 30, 62, 70,176,230, 62, 61,209, 51, 62, 83, 97,115, 62, 72,137,174, 62, 30,253,205, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62, 52,111,106, 62, 72,137,174, 62, 30,253,205,
+ 62, 61,209, 51, 62, 83, 97,115, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 61,209, 51,
+ 62, 83, 97,115, 62,104,130, 30, 62, 70,176,230, 62, 89, 70,217, 62,120, 76,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,127,255,255, 61,147, 41,141, 62, 25,153,215, 61,180,111,104, 62, 25,153,224, 61, 52, 64,225,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,224, 61, 52, 64,225, 62,179, 51, 15,
+ 61, 52, 64,225, 62,127,255,255, 61,147, 41,141, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,179, 51, 20, 61,180,111,104, 62,127,255,255, 61,147, 41,141, 62,179, 51, 15, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 15, 61, 52, 64,225, 62, 25,153,224, 61, 52, 64,225, 62,161,175,144,
+178,239, 9,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,127,255,255, 61,147, 41,141,
+ 62,179, 51, 20, 61,180,111,104, 62,147, 52, 12, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,147, 52, 12, 61,231, 46,109, 62, 89,151,231, 61,231, 46,109, 62,127,255,255, 61,147, 41,141, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,215, 61,180,111,104, 62,127,255,255, 61,147, 41,141,
+ 62, 89,151,231, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 89,151,231,
+ 61,231, 46,109, 62,147, 52, 12, 61,231, 46,109, 62,128, 0, 0, 62, 23, 31,208, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 72,137,174, 62, 30,253,205, 62, 25,153,214, 62, 52,111,106, 62, 25,153,217, 62, 7, 70,204,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,217, 62, 7, 70,204, 62, 89,151,231,
+ 61,231, 46,109, 62, 72,137,174, 62, 30,253,205, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,128, 0, 0, 62, 23, 31,208, 62, 72,137,174, 62, 30,253,205, 62, 89,151,231, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 89,151,231, 61,231, 46,109, 62, 25,153,217, 62, 7, 70,204, 62, 25,153,215,
+ 61,180,111,104, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,155,187, 41, 62, 30,253,205,
+ 62,128, 0, 0, 62, 23, 31,208, 62,147, 52, 12, 61,231, 46,109, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,147, 52, 12, 61,231, 46,109, 62,179, 51, 19, 62, 7, 70,204, 62,155,187, 41, 62, 30,253,205, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62, 52,111,101, 62,155,187, 41, 62, 30,253,205,
+ 62,179, 51, 19, 62, 7, 70,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 19,
+ 62, 7, 70,204, 62,147, 52, 12, 61,231, 46,109, 62,179, 51, 20, 61,180,111,104, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 56, 95,192, 62,128, 45, 79, 62, 25,153,214, 62,135, 83,156, 62, 25,153,212, 62, 97,152, 2,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,212, 62, 97,152, 2, 62, 61,209, 51,
+ 62, 83, 97,115, 62, 56, 95,192, 62,128, 45, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 89, 70,217, 62,120, 76,252, 62, 56, 95,192, 62,128, 45, 79, 62, 61,209, 51, 62, 83, 97,115, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 61,209, 51, 62, 83, 97,115, 62, 25,153,212, 62, 97,152, 2, 62, 25,153,214,
+ 62, 52,111,106, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 56, 95,192, 62,128, 45, 79,
+ 62, 89, 70,217, 62,120, 76,252, 62, 81,154,245, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 81,154,245, 62,146,201, 29, 62, 52,120,125, 62,151,144,181, 62, 56, 95,192, 62,128, 45, 79, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,214, 62,135, 83,156, 62, 56, 95,192, 62,128, 45, 79,
+ 62, 52,120,125, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52,120,125,
+ 62,151,144,181, 62, 81,154,245, 62,146,201, 29, 62, 75,120,239, 62,169,150, 70, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62, 50, 14,213, 62,174, 54, 78, 62, 25,153,214, 62,180,111,165, 62, 25,153,213, 62,157,231,100,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 25,153,213, 62,157,231,100, 62, 52,120,125,
+ 62,151,144,181, 62, 50, 14,213, 62,174, 54, 78, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62, 75,120,239, 62,169,150, 70, 62, 50, 14,213, 62,174, 54, 78, 62, 52,120,125, 62,151,144,181, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62, 52,120,125, 62,151,144,181, 62, 25,153,213, 62,157,231,100, 62, 25,153,214,
+ 62,135, 83,156, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,101,133, 91, 62,166,190,112,
+ 62, 75,120,239, 62,169,150, 70, 62, 81,154,245, 62,146,201, 29, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62, 81,154,245, 62,146,201, 29, 62,110,174, 18, 62,144,102, 3, 62,101,133, 91, 62,166,190,112, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,128, 0, 0, 62,165,199,206, 62,101,133, 91, 62,166,190,112,
+ 62,110,174, 18, 62,144,102, 3, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,110,174, 18,
+ 62,144,102, 3, 62, 81,154,245, 62,146,201, 29, 62, 89, 70,217, 62,120, 76,252, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 5, 27, 64, 62,128, 45, 66, 62,249,194,232, 62,120, 76,216, 63, 3,190,226, 62, 83, 97, 90,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3,190,226, 62, 83, 97, 90, 63, 12,204,191,
+ 62, 97,151,248, 63, 5, 27, 64, 62,128, 45, 66, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 12,204,191, 62,135, 83,149, 63, 5, 27, 64, 62,128, 45, 66, 63, 12,204,191, 62, 97,151,248, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 97,151,248, 63, 3,190,226, 62, 83, 97, 90, 63, 12,204,191,
+ 62, 52,111, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 5, 27, 64, 62,128, 45, 66,
+ 63, 12,204,191, 62,135, 83,149, 63, 6, 21, 17, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 6, 21, 17, 62,151,144,169, 62,253,152,222, 62,146,201, 14, 63, 5, 27, 64, 62,128, 45, 66, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249,194,232, 62,120, 76,216, 63, 5, 27, 64, 62,128, 45, 66,
+ 62,253,152,222, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,253,152,222,
+ 62,146,201, 14, 63, 6, 21, 17, 62,151,144,169, 63, 0, 84,241, 62,169,150, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,243,163,164, 62,166,190, 89, 62,230,102, 72, 62,165,199,183, 62,239, 15, 70, 62,144,101,233,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,239, 15, 70, 62,144,101,233, 62,253,152,222,
+ 62,146,201, 14, 62,243,163,164, 62,166,190, 89, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 0, 84,241, 62,169,150, 52, 62,243,163,164, 62,166,190, 89, 62,253,152,222, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,253,152,222, 62,146,201, 14, 62,239, 15, 70, 62,144,101,233, 62,249,194,232,
+ 62,120, 76,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 6,175,123, 62,174, 54, 65,
+ 63, 0, 84,241, 62,169,150, 52, 63, 6, 21, 17, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 6, 21, 17, 62,151,144,169, 63, 12,204,191, 62,157,231, 90, 63, 6,175,123, 62,174, 54, 65, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,180,111,160, 63, 6,175,123, 62,174, 54, 65,
+ 63, 12,204,191, 62,157,231, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191,
+ 62,157,231, 90, 63, 6, 21, 17, 62,151,144,169, 63, 12,204,191, 62,135, 83,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62,115,162, 53, 62,249,194,232, 62,120, 76,216, 62,239, 15, 70, 62,144,101,233,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,239, 15, 70, 62,144,101,233, 62,221,189, 75,
+ 62,144,101,238, 62,230,102, 72, 62,115,162, 53, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,211, 9,168, 62,120, 76,222, 62,230,102, 72, 62,115,162, 53, 62,221,189, 75, 62,144,101,238, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,221,189, 75, 62,144,101,238, 62,239, 15, 70, 62,144,101,233, 62,230,102, 72,
+ 62,165,199,183, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62,115,162, 53,
+ 62,211, 9,168, 62,120, 76,222, 62,218,167, 80, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,218,167, 80, 62, 70,176,194, 62,242, 37, 68, 62, 70,176,194, 62,230,102, 72, 62,115,162, 53, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,249,194,232, 62,120, 76,216, 62,230,102, 72, 62,115,162, 53,
+ 62,242, 37, 68, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,242, 37, 68,
+ 62, 70,176,194, 62,218,167, 80, 62, 70,176,194, 62,230,102, 72, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 1, 16,197, 62, 30,253,174, 63, 12,204,191, 62, 52,111, 90, 63, 3,190,226, 62, 83, 97, 90,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 3,190,226, 62, 83, 97, 90, 62,242, 37, 68,
+ 62, 70,176,194, 63, 1, 16,197, 62, 30,253,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102, 72, 62, 23, 31,168, 63, 1, 16,197, 62, 30,253,174, 62,242, 37, 68, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,242, 37, 68, 62, 70,176,194, 63, 3,190,226, 62, 83, 97, 90, 62,249,194,232,
+ 62,120, 76,216, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,202,171, 14, 62, 30,253,179,
+ 62,230,102, 72, 62, 23, 31,168, 62,218,167, 80, 62, 70,176,194, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,218,167, 80, 62, 70,176,194, 62,197, 78,205, 62, 83, 97, 95, 62,202,171, 14, 62, 30,253,179, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62, 52,111,101, 62,202,171, 14, 62, 30,253,179,
+ 62,197, 78,205, 62, 83, 97, 95, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,197, 78,205,
+ 62, 83, 97, 95, 62,218,167, 80, 62, 70,176,194, 62,211, 9,168, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 63, 61,147, 41,101, 62,179, 51, 20, 61,180,111,104, 62,179, 51, 15, 61, 52, 64,225,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 15, 61, 52, 64,225, 63, 12,204,189,
+ 61, 52, 64,225, 62,230,102, 63, 61,147, 41,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 12,204,191, 61,180,111, 83, 62,230,102, 63, 61,147, 41,101, 63, 12,204,189, 61, 52, 64,225, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,189, 61, 52, 64,225, 62,179, 51, 15, 61, 52, 64,225, 62,161,175,144,
+178,239, 9,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 63, 61,147, 41,101,
+ 63, 12,204,191, 61,180,111, 83, 62,249,154,104, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,249,154,104, 61,231, 46, 48, 62,211, 50, 42, 61,231, 46, 48, 62,230,102, 63, 61,147, 41,101, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 20, 61,180,111,104, 62,230,102, 63, 61,147, 41,101,
+ 62,211, 50, 42, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211, 50, 42,
+ 61,231, 46, 48, 62,249,154,104, 61,231, 46, 48, 62,230,102, 72, 62, 23, 31,168, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,202,171, 14, 62, 30,253,179, 62,179, 51, 21, 62, 52,111,101, 62,179, 51, 19, 62, 7, 70,204,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 19, 62, 7, 70,204, 62,211, 50, 42,
+ 61,231, 46, 48, 62,202,171, 14, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,230,102, 72, 62, 23, 31,168, 62,202,171, 14, 62, 30,253,179, 62,211, 50, 42, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,211, 50, 42, 61,231, 46, 48, 62,179, 51, 19, 62, 7, 70,204, 62,179, 51, 20,
+ 61,180,111,104, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 1, 16,197, 62, 30,253,174,
+ 62,230,102, 72, 62, 23, 31,168, 62,249,154,104, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,249,154,104, 61,231, 46, 48, 63, 12,204,191, 62, 7, 70,199, 63, 1, 16,197, 62, 30,253,174, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 52,111, 90, 63, 1, 16,197, 62, 30,253,174,
+ 63, 12,204,191, 62, 7, 70,199, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191,
+ 62, 7, 70,199, 62,249,154,104, 61,231, 46, 48, 63, 12,204,191, 61,180,111, 83, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,194,150, 19, 62,128, 45, 72, 62,179, 51, 21, 62,135, 83,156, 62,179, 51, 22, 62, 97,152, 2,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 22, 62, 97,152, 2, 62,197, 78,205,
+ 62, 83, 97, 95, 62,194,150, 19, 62,128, 45, 72, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,211, 9,168, 62,120, 76,222, 62,194,150, 19, 62,128, 45, 72, 62,197, 78,205, 62, 83, 97, 95, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,197, 78,205, 62, 83, 97, 95, 62,179, 51, 22, 62, 97,152, 2, 62,179, 51, 21,
+ 62, 52,111,101, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,194,150, 19, 62,128, 45, 72,
+ 62,211, 9,168, 62,120, 76,222, 62,207, 51,179, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,207, 51,179, 62,146,201, 17, 62,192,162,113, 62,151,144,174, 62,194,150, 19, 62,128, 45, 72, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,135, 83,156, 62,194,150, 19, 62,128, 45, 72,
+ 62,192,162,113, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,162,113,
+ 62,151,144,174, 62,207, 51,179, 62,146,201, 17, 62,204, 34,175, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 62,191,109,154, 62,174, 54, 68, 62,179, 51, 21, 62,180,111,165, 62,179, 51, 21, 62,157,231, 98,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,179, 51, 21, 62,157,231, 98, 62,192,162,113,
+ 62,151,144,174, 62,191,109,154, 62,174, 54, 68, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 62,204, 34,175, 62,169,150, 54, 62,191,109,154, 62,174, 54, 68, 62,192,162,113, 62,151,144,174, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,192,162,113, 62,151,144,174, 62,179, 51, 21, 62,157,231, 98, 62,179, 51, 21,
+ 62,135, 83,156, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,217, 40,237, 62,166,190, 91,
+ 62,204, 34,175, 62,169,150, 54, 62,207, 51,179, 62,146,201, 17, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 62,207, 51,179, 62,146,201, 17, 62,221,189, 75, 62,144,101,238, 62,217, 40,237, 62,166,190, 91, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,230,102, 72, 62,165,199,183, 62,217, 40,237, 62,166,190, 91,
+ 62,221,189, 75, 62,144,101,238, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 62,221,189, 75,
+ 62,144,101,238, 62,207, 51,179, 62,146,201, 17, 62,211, 9,168, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 56, 78,134, 62,128, 45,117, 63, 48, 20,188, 62,120, 77, 37, 63, 54,242, 42, 62, 83, 97,181,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,242, 42, 62, 83, 97,181, 63, 64, 0, 0,
+ 62, 97,152,115, 63, 56, 78,134, 62,128, 45,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 62,135, 83,218, 63, 56, 78,134, 62,128, 45,117, 63, 64, 0, 0, 62, 97,152,115, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 97,152,115, 63, 54,242, 42, 62, 83, 97,181, 63, 64, 0, 0,
+ 62, 52,111,202, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 56, 78,134, 62,128, 45,117,
+ 63, 64, 0, 0, 62,135, 83,218, 63, 57, 72, 87, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 57, 72, 87, 62,151,144,219, 63, 49,255,184, 62,146,201, 52, 63, 56, 78,134, 62,128, 45,117, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 20,188, 62,120, 77, 37, 63, 56, 78,134, 62,128, 45,117,
+ 63, 49,255,184, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 49,255,184,
+ 62,146,201, 52, 63, 57, 72, 87, 62,151,144,219, 63, 51,136, 58, 62,169,150, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 45, 5, 26, 62,166,190,117, 63, 38,102,107, 62,165,199,201, 63, 42,186,235, 62,144,102, 5,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42,186,235, 62,144,102, 5, 63, 49,255,184,
+ 62,146,201, 52, 63, 45, 5, 26, 62,166,190,117, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 51,136, 58, 62,169,150, 90, 63, 45, 5, 26, 62,166,190,117, 63, 49,255,184, 62,146,201, 52, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 49,255,184, 62,146,201, 52, 63, 42,186,235, 62,144,102, 5, 63, 48, 20,188,
+ 62,120, 77, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 57,226,196, 62,174, 54,114,
+ 63, 51,136, 58, 62,169,150, 90, 63, 57, 72, 87, 62,151,144,219, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 57, 72, 87, 62,151,144,219, 63, 64, 0, 0, 62,157,231,162, 63, 57,226,196, 62,174, 54,114, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62,180,111,211, 63, 57,226,196, 62,174, 54,114,
+ 63, 64, 0, 0, 62,157,231,162, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0,
+ 62,157,231,162, 63, 57, 72, 87, 62,151,144,219, 63, 64, 0, 0, 62,135, 83,218, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,107, 62,115,162, 79, 63, 48, 20,188, 62,120, 77, 37, 63, 42,186,235, 62,144,102, 5,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 42,186,235, 62,144,102, 5, 63, 34, 17,234,
+ 62,144,101,243, 63, 38,102,107, 62,115,162, 79, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 28,184, 21, 62,120, 76,222, 63, 38,102,107, 62,115,162, 79, 63, 34, 17,234, 62,144,101,243, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34, 17,234, 62,144,101,243, 63, 42,186,235, 62,144,102, 5, 63, 38,102,107,
+ 62,165,199,201, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,107, 62,115,162, 79,
+ 63, 28,184, 21, 62,120, 76,222, 63, 32,134,234, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 32,134,234, 62, 70,176,204, 63, 44, 69,233, 62, 70,176,245, 63, 38,102,107, 62,115,162, 79, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 48, 20,188, 62,120, 77, 37, 63, 38,102,107, 62,115,162, 79,
+ 63, 44, 69,233, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44, 69,233,
+ 62, 70,176,245, 63, 32,134,234, 62, 70,176,204, 63, 38,102,104, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 52, 68, 9, 62, 30,253,241, 63, 64, 0, 0, 62, 52,111,202, 63, 54,242, 42, 62, 83, 97,181,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 54,242, 42, 62, 83, 97,181, 63, 44, 69,233,
+ 62, 70,176,245, 63, 52, 68, 9, 62, 30,253,241, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,104, 62, 23, 31,198, 63, 52, 68, 9, 62, 30,253,241, 63, 44, 69,233, 62, 70,176,245, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 44, 69,233, 62, 70,176,245, 63, 54,242, 42, 62, 83, 97,181, 63, 48, 20,188,
+ 62,120, 77, 37, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,136,195, 62, 30,253,179,
+ 63, 38,102,104, 62, 23, 31,198, 63, 32,134,234, 62, 70,176,204, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 32,134,234, 62, 70,176,204, 63, 21,218,162, 62, 83, 97, 84, 63, 24,136,195, 62, 30,253,179, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 52,111, 90, 63, 24,136,195, 62, 30,253,179,
+ 63, 21,218,162, 62, 83, 97, 84, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 21,218,162,
+ 62, 83, 97, 84, 63, 32,134,234, 62, 70,176,204, 63, 28,184, 21, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,104, 61,147, 41,111, 63, 12,204,191, 61,180,111, 83, 63, 12,204,189, 61, 52, 64,225,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,189, 61, 52, 64,225, 63, 64, 0, 0,
+ 61, 52, 65,111, 63, 38,102,104, 61,147, 41,111, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 64, 0, 0, 61,180,111,195, 63, 38,102,104, 61,147, 41,111, 63, 64, 0, 0, 61, 52, 65,111, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 61, 52, 65,111, 63, 12,204,189, 61, 52, 64,225, 63,121,222,208,
+178,239, 9,102, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,104, 61,147, 41,111,
+ 63, 64, 0, 0, 61,180,111,195, 63, 48, 0,122, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 48, 0,122, 61,231, 46,120, 63, 28,204, 85, 61,231, 46, 48, 63, 38,102,104, 61,147, 41,111, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 61,180,111, 83, 63, 38,102,104, 61,147, 41,111,
+ 63, 28,204, 85, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,204, 85,
+ 61,231, 46, 48, 63, 48, 0,122, 61,231, 46,120, 63, 38,102,104, 62, 23, 31,198, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 24,136,195, 62, 30,253,179, 63, 12,204,191, 62, 52,111, 90, 63, 12,204,191, 62, 7, 70,199,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 7, 70,199, 63, 28,204, 85,
+ 61,231, 46, 48, 63, 24,136,195, 62, 30,253,179, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 38,102,104, 62, 23, 31,198, 63, 24,136,195, 62, 30,253,179, 63, 28,204, 85, 61,231, 46, 48, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 28,204, 85, 61,231, 46, 48, 63, 12,204,191, 62, 7, 70,199, 63, 12,204,191,
+ 61,180,111, 83, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 52, 68, 9, 62, 30,253,241,
+ 63, 38,102,104, 62, 23, 31,198, 63, 48, 0,122, 61,231, 46,120, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 48, 0,122, 61,231, 46,120, 63, 64, 0, 0, 62, 7, 71, 24, 63, 52, 68, 9, 62, 30,253,241, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0, 62, 52,111,202, 63, 52, 68, 9, 62, 30,253,241,
+ 63, 64, 0, 0, 62, 7, 71, 24, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 64, 0, 0,
+ 62, 7, 71, 24, 63, 48, 0,122, 61,231, 46,120, 63, 64, 0, 0, 61,180,111,195, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 20,126, 68, 62,128, 45, 64, 63, 12,204,191, 62,135, 83,149, 63, 12,204,191, 62, 97,151,248,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62, 97,151,248, 63, 21,218,162,
+ 62, 83, 97, 84, 63, 20,126, 68, 62,128, 45, 64, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 28,184, 21, 62,120, 76,222, 63, 20,126, 68, 62,128, 45, 64, 63, 21,218,162, 62, 83, 97, 84, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 21,218,162, 62, 83, 97, 84, 63, 12,204,191, 62, 97,151,248, 63, 12,204,191,
+ 62, 52,111, 90, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 20,126, 68, 62,128, 45, 64,
+ 63, 28,184, 21, 62,120, 76,222, 63, 26,205, 25, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 26,205, 25, 62,146,201, 14, 63, 19,132,114, 62,151,144,169, 63, 20,126, 68, 62,128, 45, 64, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,135, 83,149, 63, 20,126, 68, 62,128, 45, 64,
+ 63, 19,132,114, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,132,114,
+ 62,151,144,169, 63, 26,205, 25, 62,146,201, 14, 63, 25, 68,150, 62,169,150, 54, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 63, 18,234, 7, 62,174, 54, 65, 63, 12,204,191, 62,180,111,160, 63, 12,204,191, 62,157,231, 90,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 12,204,191, 62,157,231, 90, 63, 19,132,114,
+ 62,151,144,169, 63, 18,234, 7, 62,174, 54, 65, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
+ 63, 25, 68,150, 62,169,150, 54, 63, 18,234, 7, 62,174, 54, 65, 63, 19,132,114, 62,151,144,169, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 19,132,114, 62,151,144,169, 63, 12,204,191, 62,157,231, 90, 63, 12,204,191,
+ 62,135, 83,149, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 31,199,185, 62,166,190, 96,
+ 63, 25, 68,150, 62,169,150, 54, 63, 26,205, 25, 62,146,201, 14, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 63, 26,205, 25, 62,146,201, 14, 63, 34, 17,234, 62,144,101,243, 63, 31,199,185, 62,166,190, 96, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 38,102,107, 62,165,199,201, 63, 31,199,185, 62,166,190, 96,
+ 63, 34, 17,234, 62,144,101,243, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 63, 34, 17,234,
+ 62,144,101,243, 63, 26,205, 25, 62,146,201, 14, 63, 28,184, 21, 62,120, 76,222, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 80, 0, 7,254, 48, 32, 0, 0, 0, 59, 0, 0, 20, 0,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
@@ -12379,121 +16052,185 @@ char datatoc_preview_blend[]= {
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,154, 64,
- 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,161,176, 13, 65,148,176, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69,112,114,101,118,105,101,
-119, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,155,128, 13, 65,160,208, 13, 65,161, 16, 0, 0, 0, 0,
- 13, 65,157, 16, 13, 65,159, 16, 0, 0, 0, 0, 13, 65,161,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,155,176,
- 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,157,176, 0, 0, 0, 1, 0, 0, 0, 5,
- 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,159,112, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,179,128, 0, 0,
- 52, 64, 0, 0,188,142, 92,235, 63,128, 0, 0, 63,128, 0, 2, 60,142, 92,235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,155,128, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 8, 32, 68, 65, 84, 65, 0, 0, 1, 44,
- 13, 65,155,176, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
+ 0, 0, 1, 24, 8,195, 68, 96, 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 76, 48, 8,195, 62,112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 69,112,114,101,118,105,101,119, 46, 48, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 69,160, 8,195, 75, 80,
+ 8,195, 75,144, 0, 0, 0, 0, 8,195, 71, 80, 8,195, 73,112, 0, 0, 0, 0, 8,195, 75,240, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8,195, 69,208, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 71,240,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 73,208, 0, 0, 0, 3, 0, 0, 0, 5,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,179,128, 0, 0, 52, 64, 0, 0,188,142, 92,235, 63,128, 0, 0, 63,128, 0, 2, 60,142, 92,235, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 69,160, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 94, 32,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 69,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,157, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 71, 80, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,120,
- 13, 65,157, 16, 0, 0, 0, 58, 0, 0, 0, 5, 63,128, 0, 0, 63,127,255,255, 39,251,255,255, 0, 0, 0, 0,127,255, 2,255,
- 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,168, 2, 0, 0, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,128, 0, 1,
-191,127,255,253,167,251,255,253, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,127,255,250, 63,128, 0, 3, 40, 2, 0, 3,
- 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 59,110,239, 0, 60, 26,164,131,189, 14, 92,235, 12,228, 33, 95,133, 28, 3,255,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,157,176, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,159, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,120, 8,195, 71, 80, 0, 0, 0, 58, 0, 0, 0, 5, 65, 6,116, 0,
+ 63,127,255,254, 39,228,117, 42, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 65, 6,116, 0,191,127,255,254,167,177, 59, 43,
+ 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,193, 6,116, 0,191,127,255,250,167,228,117, 39, 0, 0, 0, 0,127,255, 3,255,
+ 0, 0, 0, 0,193, 6,115,252, 63,128, 0, 1, 39,177, 59, 49, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 59,110,239, 0,
+ 60, 26,164,131,189, 14, 92,235, 12,228, 33, 95,133, 28, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 71,240,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 73,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 48, 13, 65,159, 16, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2,
- 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 2,
- 0, 0, 0, 3, 0, 0, 0, 34, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,159,112, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,160,208, 0, 0, 0, 5, 0, 0, 0, 20,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,161, 16, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,161,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 48, 8,195, 73,112, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 73,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 75, 80, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 75,144, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 75,240,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 13, 65,160,208, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 44, 13, 65,161, 16, 0, 0, 0, 65,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,195, 75, 80, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 0, 44, 8,195, 75,144, 0, 0, 0, 65,
0, 0, 0, 1, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 16, 13, 65,161,112, 0, 0, 0, 59,
- 0, 0, 0, 4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,161,176,
- 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,169, 16, 13, 65,154, 64, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69,112,114,101,118,105,101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 16, 8,195, 75,240, 0, 0, 0, 59,
+ 0, 0, 0, 4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 76, 48,
+ 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 87, 96, 8,195, 68, 96, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69,112,114,101,118,105,101,
119, 46, 48, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,162,240, 13, 65,168, 48, 13, 65,168,112, 0, 0, 0, 0,
- 13, 65,164,128, 13, 65,166,112, 0, 0, 0, 0, 13, 65,168,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,163, 32,
- 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,165, 16, 0, 0, 0, 1, 0, 0, 0, 5,
- 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,166,208, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,179,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 77,112, 8,195, 84, 0, 8,195, 84,224, 0, 0, 0, 0,
+ 3,163,158, 32, 8,195, 80,160, 0, 0, 0, 0, 8,195, 86,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 77,160,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 79, 32, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 82,128, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,179,128, 0, 0,
52, 64, 0, 0, 28,192, 0, 0, 63,128, 0, 0, 63,128, 0, 2, 55, 39,197,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,162,240, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 16, 32, 68, 65, 84, 65, 0, 0, 1, 44,
- 13, 65,163, 32, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 77,112, 0, 0, 0, 0, 0, 0, 0, 1, 3,161,102, 32, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,195, 77,160, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,164,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,163,158, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 96,
- 13, 65,164,128, 0, 0, 0, 58, 0, 0, 0, 4, 63,128, 0, 0, 63,127,255,255, 39,251,255,255, 0, 0, 0, 0,127,255, 3,255,
- 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,168, 2, 0, 0, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,191,128, 0, 1,
-191,127,255,253,167,251,255,253, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,191,127,255,250, 63,128, 0, 3, 40, 2, 0, 3,
- 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,165, 16, 0, 0, 1, 35, 0, 0, 0, 5,
- 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,166,112, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 3, 96, 3,163,158, 32, 0, 0, 0, 58, 0, 0, 0, 36, 63,128, 0, 0, 63,127,255,255, 39,251,255,255,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,168, 2, 0, 0, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,191,128, 0, 1,191,127,255,253,167,251,255,253, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,191,127,255,250,
+ 63,128, 0, 3, 40, 2, 0, 3, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 63,250,113, 63,128, 3, 7, 48,113,201, 79,
+ 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0, 64, 63,250,114,191,127,249,242, 48,113,200,107, 0, 0, 0, 0,128, 1, 2,255,
+ 0, 0, 0, 0, 63,127,233,206,191,127,249,245, 48,113,200, 95, 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0, 63,127,233,206,
+ 63,128, 3, 3, 48,113,201, 63, 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0,192, 63,235,185, 63,128, 9,197, 51,171, 82,138,
+ 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0,192, 63,235,185,191,127,236,113, 51,171, 82,137, 0, 0, 0, 0,128, 1, 2,255,
+ 0, 0, 0, 0,191,127,174,232,191,127,236,110, 51,171, 82,137, 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0,191,127,174,236,
+ 63,128, 9,201, 51,171, 82,138, 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0,192,159,242,181, 63,128, 15, 32, 43, 41,196,175,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,159,242,182,191,127,225,194, 43, 37,196,175, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,192, 63,229,108,191,127,225,197, 43, 37,180,175, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192, 63,229,108,
+ 63,128, 15, 29, 43, 41,180,175, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,159,253,112, 63,128, 18,242, 51, 18,138, 85,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64,159,253,112,191,127,218, 27, 51, 18,138, 81, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0, 64, 63,250,223,191,127,218, 24, 51, 18,138, 81, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0, 64, 63,250,225,
+ 63,128, 18,245, 51, 18,138, 85, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,223,236,178, 63,128, 14, 32,175,216,158, 81,
+ 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,223,236,178,191,127,227,192,175,216,160, 81, 0, 0, 0, 0,127,255, 2,255,
+ 0, 0, 0, 0,193, 15,246, 89,191,127,227,188,175,216,160, 73, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,193, 15,246, 89,
+ 63,128, 14, 35,175,216,158, 73, 0, 0, 0, 0,127,255, 2,255, 0, 0, 0, 0,192,159,239,217, 63,128, 8,204, 51,170,121,151,
+ 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0,192,159,239,217,191,127,238,104, 51,170,121,150, 0, 0, 0, 0,128, 1, 2,255,
+ 0, 0, 0, 0,192,223,239,217,191,127,238,108, 51,170,121,150, 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0,192,223,239,217,
+ 63,128, 8,200, 51,170,121,151, 0, 0, 0, 0,128, 1, 2,255, 0, 0, 0, 0, 64,223,247,233, 63,128, 24,219,180,155,136, 78,
+ 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 64,223,247,233,191,127,206, 76,180,155,136, 79, 0, 0, 0, 0,127,255, 3,255,
+ 0, 0, 0, 0, 65, 15,251,245,191,127,206, 80,180,155,136, 79, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 65, 15,251,245,
+ 63,128, 24,216,180,155,136, 78, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 64,159,247,179, 63,128, 8,233,180,173, 96,180,
+ 0, 0, 0, 0,128, 1, 3,255, 0, 0, 0, 0, 64,159,247,179,191,127,238, 42,180,173, 96,181, 0, 0, 0, 0,128, 1, 3,255,
+ 0, 0, 0, 0, 64,223,247,178,191,127,238, 38,180,173, 96,181, 0, 0, 0, 0,128, 1, 3,255, 0, 0, 0, 0, 64,223,247,177,
+ 63,128, 8,237,180,173, 96,180, 0, 0, 0, 0,128, 1, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 79, 32,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 80,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 48, 13, 65,166,112, 0, 0, 0, 55, 0, 0, 0, 4,
- 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,166,208, 0, 0, 1, 35,
- 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,168, 48,
- 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,168,112, 0, 0, 0, 6,
- 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,168,208, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 13, 65,168, 48, 0, 0, 0, 54,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 0, 44,
- 13, 65,168,112, 0, 0, 0, 65, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 16,
- 13, 65,168,208, 0, 0, 0, 59, 0, 0, 0, 4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69,
- 0, 0, 1, 24, 13, 65,169, 16, 0, 0, 0, 52, 0, 0, 0, 1, 13, 65,176,112, 13, 65,161,176, 0, 0, 0, 0, 0, 0, 0, 0,
- 77, 69,112,114,101,118,105,101,119, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,170, 80, 13, 65,175,144,
- 13, 65,175,208, 0, 0, 0, 0, 13, 65,171,224, 13, 65,173,208, 0, 0, 0, 0, 13, 65,176, 48, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,170,128, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,172,112,
- 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,174, 48, 0, 0, 0, 3, 0, 0, 0, 5,
- 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1,179,128, 0, 0, 52, 64, 0, 0, 28,192, 0, 0, 63,128, 0, 0, 63,128, 0, 2, 55, 39,197,172, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,170, 80, 0, 0, 0, 0, 0, 0, 0, 1, 7,160, 24, 32,
- 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,170,128, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,171,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 1,176, 8,195, 80,160, 0, 0, 0, 55, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 34,
+ 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 7,
+ 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 34, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 34, 0, 0, 0, 8,
+ 0, 0, 0, 9, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 34, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 34,
+ 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 34, 0, 0, 0, 14, 0, 0, 0, 15,
+ 0, 0, 0, 34, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 34, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 0, 0, 0, 16,
+ 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 34,
+ 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 34, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 23,
+ 0, 0, 0, 34, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 34, 0, 0, 0, 24,
+ 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 34, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 34,
+ 0, 0, 0, 29, 0, 0, 0, 28, 0, 0, 0, 35, 0, 0, 0, 31, 0, 0, 0, 28, 0, 0, 0, 35, 0, 0, 0, 31, 0, 0, 0, 30,
+ 0, 0, 0, 35, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 32,
+ 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 32, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 82,128, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 84, 0, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 84,224, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 86,160,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,180, 8,195, 84, 0, 0, 0, 0, 54, 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 12,
+ 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 23, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 24, 0, 0, 0, 25,
+ 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 2, 0, 0, 0, 32,
+ 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1,140, 8,195, 84,224, 0, 0, 0, 65,
+ 0, 0, 0, 9, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,144, 8,195, 86,160, 0, 0, 0, 59,
+ 0, 0, 0, 36,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 87, 96,
+ 0, 0, 0, 52, 0, 0, 0, 1, 8,195, 95, 32, 8,195, 76, 48, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69,112,114,101,118,105,101,
+119, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 88,160, 8,195, 94, 64, 8,195, 94,128, 0, 0, 0, 0,
+ 8,195, 90, 80, 8,195, 92, 96, 0, 0, 0, 0, 8,195, 94,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 88,208,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 90,224, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 92,192, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,179,128, 0, 0,
+ 52, 64, 0, 0, 28,192, 0, 0, 63,128, 0, 0, 63,128, 0, 2, 55, 39,197,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 88,160, 0, 0, 0, 0, 0, 0, 0, 1, 3,161,110, 32, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,195, 88,208, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 90, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12501,66 +16238,72 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 96, 13, 65,171,224, 0, 0, 0, 58, 0, 0, 0, 4, 63,128, 0, 0, 63,127,255,255, 39,251,255,255,
- 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,168, 2, 0, 0, 0, 0, 0, 0,127,255, 3,255,
- 0, 0, 0, 0,191,128, 0, 1,191,127,255,253,167,251,255,253, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,191,127,255,250,
- 63,128, 0, 3, 40, 2, 0, 3, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,172,112,
- 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,173,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 96, 8,195, 90, 80, 0, 0, 0, 58, 0, 0, 0, 4, 64,175, 49, 50, 63,127,255,255, 51,152,159, 28,
+ 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 64,175, 49, 50,191,128, 0, 0,179,152,159, 33, 0, 0, 0, 0,127,255, 3,255,
+ 0, 0, 0, 0,192,175, 49, 50,191,127,255,252,179,152,159, 31, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0,192,175, 49, 45,
+ 63,128, 0, 4, 51,152,159, 33, 0, 0, 0, 0,127,255, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 90,224,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 92, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 48, 13, 65,173,208,
- 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35,
- 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35, 68, 65, 84, 65, 0, 0, 1, 44,
- 13, 65,174, 48, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,175,144, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,175,208, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,176, 48,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
+ 0, 0, 0, 48, 8,195, 92, 96, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 92,192, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 94, 64, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 94,128, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 94,224,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20, 8,195, 94, 64, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 0, 44, 8,195, 94,128, 0, 0, 0, 65,
+ 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 16, 8,195, 94,224, 0, 0, 0, 59,
+ 0, 0, 0, 4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 8,195, 95, 32,
+ 0, 0, 0, 52, 0, 0, 0, 1, 0, 0, 0, 0, 8,195, 87, 96, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 96, 96, 8,195,102,192, 8,195,103, 96, 0, 0, 0, 0,
+ 8,195, 98, 16, 8,195,100,128, 0, 0, 0, 0, 8,195,104,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 96,144,
+ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 99, 0, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8,195,101, 64, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 51,128, 0, 0,
+180, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 4, 63,128, 0, 4, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0, 4, 8,195, 96, 96, 0, 0, 0, 0, 0, 0, 0, 1, 3,161, 94, 32, 68, 65, 84, 65, 0, 0, 1, 84,
+ 8,195, 96,144, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195, 98, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 20,
- 13, 65,175,144, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2,
- 68, 65, 84, 65, 0, 0, 0, 44, 13, 65,175,208, 0, 0, 0, 65, 0, 0, 0, 1, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0, 16, 13, 65,176, 48, 0, 0, 0, 59, 0, 0, 0, 4,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255, 0, 0, 77, 69, 0, 0, 1, 24, 13, 65,176,112, 0, 0, 0, 52, 0, 0, 0, 1, 0, 0, 0, 0, 13, 65,169, 16,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 13, 65,177,176, 13, 65,183,176, 13, 65,184, 80, 0, 0, 0, 0, 13, 65,179, 64, 13, 65,181,144, 0, 0, 0, 0, 13, 65,185,128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,177,224, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,180, 48, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,182, 80,
- 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 51,128, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 4, 63,128, 0, 4,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 4, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 4, 13, 65,177,176, 0, 0, 0, 0,
- 0, 0, 0, 1, 7,160, 8, 32, 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,177,224, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,179, 64, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 0,192, 8,195, 98, 16, 0, 0, 0, 58, 0, 0, 0, 8, 63,128, 0, 0, 63,127,255,255,191,128, 0, 0,
+ 73,230, 73,230,182, 26, 3,255, 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,191,128, 0, 0, 73,230,182, 26,182, 26, 3,255,
+ 0, 0, 0, 0,191,128, 0, 1,191,127,255,253,191,128, 0, 0,182, 26,182, 26,182, 26, 3,255, 0, 0, 0, 0,191,127,255,250,
+ 63,128, 0, 3,191,128, 0, 0,182, 26, 73,230,182, 26, 3,255, 0, 0, 0, 0, 63,128, 0, 4, 63,127,255,247, 63,128, 0, 0,
+ 73,230, 73,230, 73,230, 3,255, 0, 0, 0, 0, 63,127,255,245,191,128, 0, 5, 63,128, 0, 0, 73,230,182, 26, 73,230, 3,255,
+ 0, 0, 0, 0,191,128, 0, 3,191,127,255,250, 63,128, 0, 0,182, 26,182, 26, 73,230, 3,255, 0, 0, 0, 0,191,127,255,255,
+ 63,128, 0, 0, 63,128, 0, 0,182, 26, 73,230, 73,230, 3,255, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 1, 84, 8,195, 99, 0,
+ 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,192, 13, 65,179, 64, 0, 0, 0, 58, 0, 0, 0, 8, 63,128, 0, 0,
- 63,127,255,255,191,128, 0, 0, 73,230, 73,230,182, 26, 3,255, 0, 0, 0, 0, 63,128, 0, 0,191,128, 0, 0,191,128, 0, 0,
- 73,230,182, 26,182, 26, 3,255, 0, 0, 0, 0,191,128, 0, 1,191,127,255,253,191,128, 0, 0,182, 26,182, 26,182, 26, 3,255,
- 0, 0, 0, 0,191,127,255,250, 63,128, 0, 3,191,128, 0, 0,182, 26, 73,230,182, 26, 3,255, 0, 0, 0, 0, 63,128, 0, 4,
- 63,127,255,247, 63,128, 0, 0, 73,230, 73,230, 73,230, 3,255, 0, 0, 0, 0, 63,127,255,245,191,128, 0, 5, 63,128, 0, 0,
- 73,230,182, 26, 73,230, 3,255, 0, 0, 0, 0,191,128, 0, 3,191,127,255,250, 63,128, 0, 0,182, 26,182, 26, 73,230, 3,255,
- 0, 0, 0, 0,191,127,255,255, 63,128, 0, 0, 63,128, 0, 0,182, 26, 73,230, 73,230, 3,255, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 1, 44, 13, 65,180, 48, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8,195,100,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,181,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -12568,1385 +16311,1442 @@ char datatoc_preview_blend[]= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,
- 0, 0, 0,144, 13, 65,181,144, 0, 0, 0, 55, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0,144, 8,195,100,128, 0, 0, 0, 55, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 35, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 35,
0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 7,
0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 35, 0, 0, 0, 0,
0, 0, 0, 4, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 35, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 35,
- 68, 65, 84, 65, 0, 0, 1, 44, 13, 65,182, 80, 0, 0, 1, 35, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 65, 84, 65, 0, 0, 1, 84, 8,195,101, 64, 0, 0, 1, 42, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,183,176, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 13, 65,184, 80, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 65,185,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195,102,192, 0, 0, 0, 5, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195,103, 96, 0, 0, 0, 6,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,195,104,144,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 68, 65, 84, 65, 0, 0, 0,120, 13, 65,183,176, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2,
- 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2,
- 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 8, 13, 65,184, 80, 0, 0, 0, 65, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0,120, 8,195,102,192, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5,
+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 5,
+ 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 2,
+ 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 2, 68, 65, 84, 65, 0, 0, 1, 8, 8,195,103, 96,
+ 0, 0, 0, 65, 0, 0, 0, 6, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 96, 13, 65,185,128, 0, 0, 0, 59, 0, 0, 0, 24,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 80, 65,
- 0, 0, 1,224, 7,161, 74, 32, 0, 0, 1, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 65, 80, 83,121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 18, 0, 2, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 4,
- 0, 6, 0, 8, 0, 5, 0, 5, 0, 3, 0,100, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 4, 0, 5, 0, 3, 0, 1,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,128, 63,128, 0, 0, 61,204,204,205,
- 63, 76,204,205, 63,128, 0, 0, 66,200, 0, 0, 66, 72, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0, 10, 63,182, 41,128, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,189, 35,214,240, 0, 0, 0, 0,189,196,155,184, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 62, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 76,204,205,
- 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63,128, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 63,128, 0, 0, 62, 76,204,205, 62,153,153,154,
- 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
- 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49, 0, 0,166,136, 12,150,192, 32, 0, 0, 0, 0,
- 0, 0, 0, 1, 83, 68, 78, 65, 78, 65, 77, 69, 0, 0, 9, 22, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116,
- 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120,
- 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,
-108, 50, 0,110, 97,109,101, 91, 51, 50, 93, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,115, 97,
-118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105,
- 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,
-115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48,
- 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,
-119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,
-114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,
-109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,
-118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,
-116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108,
- 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,
-112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,
-105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,
-114,109, 97,120, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,
-101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104,
- 0, 42, 42,115, 99,114,105,112,116,115, 0, 42,102,108, 97,103, 0, 97, 99,116,115, 99,114,105,112,116, 0,116,111,116,115, 99,
-114,105,112,116, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,
-116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,
-110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,
-114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,
-111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101,
- 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 97,110,103,108,101, 0, 99,108,105,112,115,
-116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,
-115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 89, 70,
- 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95, 98,107,104, 98,105, 97,115, 0,
- 89, 70, 95, 98,107,104,114,111,116, 0,115, 99,114,105,112,116,108,105,110,107, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,
-109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0,
- 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,
-101,110,117,110,114, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,
-114, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116,
- 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,
-111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,
-119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,
-103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0, 42,
-118,110,111,100,101, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,
-116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,
-106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,
-122,101, 91, 51, 93, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,
-112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,112, 97,100, 91, 51, 93, 0,114, 0,103,
- 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,110,111,114,102, 97, 99, 0,118, 97,114,102, 97,
- 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,
-100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0,
- 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40,
- 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,
-108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97,
- 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51,
- 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115,
- 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,110,111,105,115,101,115,105,122,101,
- 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, 97,
- 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,
-114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,
-110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,
-118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,
-116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,
-112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,
-103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,
-112,121,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0,101,120,116,101,110,100, 0, 99,104,101,
- 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,112,108,117,103,105,110, 0, 42, 99,111,
- 98, 97, 0, 42,101,110,118, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,
-109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,112, 97,100, 51, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,
-100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,
-105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116,
- 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,
-115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 98,117,102,115,105,122,101, 0,115,
- 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,
-117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,
-109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101,
- 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,
-112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116,
- 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,
-121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,
-114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,
-107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,
-116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97,
- 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,
-105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0, 89, 70, 95,110,117,
-109,112,104,111,116,111,110,115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104,
- 0, 89, 70, 95,117,115,101,113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95,
- 99, 97,117,115,116,105, 99, 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,
-110,116, 0, 89, 70, 95,103,108,111,119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, 89, 70, 95,112, 97,100,
- 50, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,
-114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,
-101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104,
- 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,
-121, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,
-110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,
-108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,
-101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,
-105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112,
- 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,
-116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,
-116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101,
- 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,
-122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,
-115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,
-101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,
-110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115,
- 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,
-115,101,108, 0,112,114, 95,116,121,112,101, 0,117,115,101, 95,110,111,100,101,115, 0,112,114, 95, 98, 97, 99,107, 0,112,114,
- 95,108, 97,109,112, 0,112, 97,100, 52, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,
-112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,
-109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,
-112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,
-109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,
-115,104,111,119, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,110,
-111,100,101,116,114,101,101, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101,
- 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114,
- 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,
-115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,
-101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,
-103, 0,115,115,115, 95,112,114,101,115,101,116, 0, 89, 70, 95, 97,114, 0, 89, 70, 95, 97,103, 0, 89, 70, 95, 97, 98, 0, 89,
- 70, 95,100,115, 99, 97,108,101, 0, 89, 70, 95,100,112,119,114, 0, 89, 70, 95,100,115,109,112, 0, 89, 70, 95,112,114,101,115,
-101,116, 0, 89, 70, 95,100,106,105,116, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93,
- 0,115, 99, 97,108,101, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108,
- 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,
-120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,
-100,105,115,112, 0, 42, 42,109, 97,116, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,
-114,115,105,122,101, 0,116,104,114,101,115,104, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,
-104,116, 0,114, 97,100,105,117,115, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101,
- 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,
-101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0,
- 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0, 99,104, 97,114,
-105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,
-106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,112, 97,
-116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,
-101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0,115,112, 97, 99,101,109,111,100,101, 0,115,
-112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,
-115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,
-101,119,105,100,116,104, 0, 42,115,116,114, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,
-102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0,116,
-111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100,
- 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0,
- 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,
-101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,
-115,101,108,101, 99,116, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101,
- 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0, 99,117, 98,101,
-109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,
-114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91,
- 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,
-118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,
-116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91,
- 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,
-118, 91, 52, 93, 0,109,105,100, 0,112, 97,100, 91, 50, 93, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,
-102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,101,100,103,101, 95, 98,111,117,110,100, 97,114,121, 95,115,116, 97,116,
-101,115, 0, 42,118,101,114,116, 95,101,100,103,101, 95,109, 97,112, 0, 42,118,101,114,116, 95,102, 97, 99,101, 95,109, 97,112,
- 0, 42,109, 97,112, 95,109,101,109, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,
-117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,
-108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0,
- 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,
-112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,114,114,111,114, 0,109,
-111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0,
- 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,
-108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,115,116, 97,114,116, 95, 99, 97,112,
- 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,
-102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116,
- 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,
-101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,
-108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108,
- 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,
- 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,
-101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,
-121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,
-116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,
-115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116,
- 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120,
- 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112,
- 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,
-109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,112, 97,114,101,110,116,105,110,118, 91, 52,
- 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,
-111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,
-108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0, 42,120, 0, 42,120,110,101,119, 0, 42,
-120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,
-117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,
-101,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,116,105,109,101, 0, 42, 98,118,104,116,114,101,101, 0,111,112,101,114,
- 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,
-122,101, 0,110,101,101,100, 98,105,110,100, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,
-115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,
-101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,
-101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,
-100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,112,115,121,115, 0, 42,100,109, 0,116,111,116,100,109,118,101,114,116, 0,116,
-111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,115,121,115, 0,114,116, 91, 50, 93, 0, 42,102,
- 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,
-120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116,
- 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,
-115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,
-118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118,
- 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0,112, 97,114,116,
-121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93,
- 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,
-120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 99,
-111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,
-101,114,115, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,
-116, 91, 51, 93, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,
-108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,116,114,
- 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108,
- 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,
-110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,
-100, 0,115,102, 0, 99,116,105,109,101, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,
-102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,115,105,122,101,102, 97, 99, 0,109, 97,114,103,
-105,110, 0,100,116, 0,100,116,120, 0, 97, 99,116, 99,111,108, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,
-112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99,
- 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,
-116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103,
- 97,109,101,102,108, 97,103, 50, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105,
- 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,
-111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,112,100, 0, 42,115,111,102,116, 0, 42,100,
-117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108,
- 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,
-121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,
-100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,
-115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0, 99,117,114,105,
-110,100,101,120, 0, 97, 99,116,105,118,101, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,112,
-100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,
-101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,102, 95,115,116,114,101,110,103,116,104, 0,
-102, 95,112,111,119,101,114, 0,102, 95,100,105,115,116, 0,102, 95,100, 97,109,112, 0,109, 97,120,100,105,115,116, 0,109,105,
-110,100,105,115,116, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,102, 95,112,111,119,101,114, 95,114, 0,112,100,
-101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0,
- 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,
-110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110,
- 97, 98,108, 97, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,114,116, 50,
- 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,
-101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0, 42,112, 97,114,116,105, 99,108,101,115, 0,
-116,111,116,112,111,105,110,116, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,
-105,110,103, 0,110,111,100,101,109, 97,115,115, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,
-105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111,
- 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,
-118,101,114,116,103,114,111,117,112, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,
-114,105, 99,116, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,
-108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,
-114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,
-115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,
-111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,
-110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,
-112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,
-116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,
-122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114,
- 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,
-115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120,
- 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0,103,
-115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,
-110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,
-115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51,
- 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101,
- 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,
-101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,
-108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,
-105,118,115, 0,117,110,117,115,101,100, 68, 78, 65, 68,117,109,109,121, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,
-122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101,
- 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,
-111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,
-107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,
-101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121,
- 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,
-109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,
-114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116,
- 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,
-100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,
-115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,
-111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,
-116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,
-112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110,
- 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100,
- 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116,
- 97, 98,108,101,115, 0,104,101,109,105,114,101,115, 0,109, 97,120,105,116,101,114, 0,100,114, 97,119,116,121,112,101, 0,115,
-117, 98,115,104,111,111,116,112, 0,115,117, 98,115,104,111,111,116,101, 0,110,111,100,101,108,105,109, 0,109, 97,120,115,117,
- 98,108, 97,109,112, 0,112, 97,109, 97, 0,112, 97,109,105, 0,101,108,109, 97, 0,101,108,109,105, 0,109, 97,120,110,111,100,
-101, 0, 99,111,110,118,101,114,103,101,110, 99,101, 0,114, 97,100,102, 97, 99, 0,103, 97,109,109, 97, 0,115,101,108, 99,111,
-108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,
-109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,
-119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115,
- 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,
-101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,
-112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101,
- 99, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,
-111, 95, 98,105,116,114, 97,116,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114,
- 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97,
- 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,
- 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,
-121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,
-114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,102,102, 99,
-111,100,101, 99,100, 97,116, 97, 0, 99,102,114, 97, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115,
- 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102,
- 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,
-120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 49, 0,
-115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,
-109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,
-110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,
-108,105,116,121, 0,114,112, 97,100, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114,101,
-110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,
-101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,
-116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101,
- 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0,112,111,115,116,109,117,108, 0,112,111,115,116,103, 97,109,109, 97, 0,112,
-111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0,
- 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98,
- 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,
-113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,
-115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97, 99,104,101,
- 0, 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0, 89, 70, 95,
- 65, 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,108, 97,109,
-112,114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,116,104, 0,
- 71, 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,110,116, 0,
- 71, 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89, 70, 95,114,
- 97,121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,101,115,
- 0,121,102,112, 97,100, 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114,101,102,105,110,101,
-109,101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, 70, 95,103, 97,109,
-109, 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,
-105,120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99,107, 98,117,102, 91,
- 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,
-100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,
-103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,
-108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,
-105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101,
- 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,112, 97,114,116,105, 99,108,
-101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101,
- 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0, 99,111,108, 91, 51, 93, 0,102,114, 97,109,101, 0,110, 97,109,101, 91,
- 54, 52, 93, 0, 42, 98,114,117,115,104, 0,116,111,111,108, 0,115,116,101,112, 0,105,110,118,101,114,116, 0,116,111,116,114,
-101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55,
- 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,100,114, 97,119, 95,116,105,109,101,100, 0,110, 97,109,101, 91, 51, 54,
- 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108,
- 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,
-102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,
-116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118,
- 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,
-108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0, 97,117,116,111,105,107, 95, 99,
-104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,115,101,108,101, 99,116,
- 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0,114,101,116,111,112,111, 95,109,111,100,101,
- 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,
-112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,
-115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,
-101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,
-115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,
-111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101,
- 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,
-107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,
-115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,
-115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,101,100,103,101, 95,
-109,111,100,101, 0,112, 97,100, 51, 91, 52, 93, 0,100,105,114, 0,118,105,101,119, 0, 42,115,101,115,115,105,111,110, 0, 42,
- 99,117,109, 97,112, 0,100,114, 97,119, 98,114,117,115,104, 0,115,109,111,111,116,104, 98,114,117,115,104, 0,112,105,110, 99,
-104, 98,114,117,115,104, 0,105,110,102,108, 97,116,101, 98,114,117,115,104, 0,103,114, 97, 98, 98,114,117,115,104, 0,108, 97,
-121,101,114, 98,114,117,115,104, 0,102,108, 97,116,116,101,110, 98,114,117,115,104, 0,112,105,118,111,116, 91, 51, 93, 0, 98,
-114,117,115,104, 95,116,121,112,101, 0,116,101,120,110,114, 0,116,101,120,114,101,112,116, 0,116,101,120,102, 97,100,101, 0,
-116,101,120,115,101,112, 0, 97,118,101,114, 97,103,105,110,103, 0,116, 97, 98,108,101,116, 95,115,105,122,101, 0,116, 97, 98,
-108,101,116, 95,115,116,114,101,110,103,116,104, 0,115,121,109,109, 0,114, 97,107,101, 0, 97,120,105,115,108,111, 99,107, 0,
- 42, 99, 97,109,101,114, 97, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116,
- 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,
-109, 97,120, 91, 51, 93, 0,101,100,105,116, 98,117,116,115,105,122,101, 0,115,101,108,101, 99,116,109,111,100,101, 0,112,114,
-111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111,109,101,114,103,101, 0,112,
- 97,100, 53, 0,112, 97,100, 54, 0,112, 97,100, 55, 0, 42,101,100, 0, 42,114, 97,100,105,111, 0,102,114, 97,109,105,110,103,
- 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,
-112, 97, 99,101,115, 0,106,117,109,112,102,114, 97,109,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,
-108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,
-105,100, 0,100, 97,103,102,108, 97,103,115, 0,115, 99,117,108,112,116,100, 97,116, 97, 0,102,114, 97,109,101, 95,115,116,101,
-112, 0,122,111,111,109, 0, 98,108,101,110,100, 0,120,105,109, 0,121,105,109, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,
-108,111, 99,107,115, 99, 97,108,101, 0, 42, 97,114,101, 97, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,
-118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,
-109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,119,105,110,109, 97,116, 49, 91,
- 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 49, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93,
- 0,122,102, 97, 99, 0,108, 97,121, 95,117,115,101,100, 0,112,101,114,115,112, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0,
- 42, 98,103,112,105, 99, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119,
- 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93,
- 0,108,111, 99, 97,108,118,105,101,119, 0,108, 97,121, 97, 99,116, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,
-110,100, 0, 99, 97,109,122,111,111,109, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,103,114,105,100,118,
-105,101,119, 0,112,105,120,115,105,122,101, 0,110,101, 97,114, 0,102, 97,114, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121,
- 0,103,114,105,100,108,105,110,101,115, 0,118,105,101,119, 98,117,116, 0,103,114,105,100,102,108, 97,103, 0,109,111,100,101,
-115,101,108,101, 99,116, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0,116,119,100,114,
- 97,119,102,108, 97,103, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,108,105,112, 91, 52, 93, 91, 52, 93, 0, 42, 99,
-108,105,112, 98, 98, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,102,108, 97,103, 50, 0,
-103,114,105,100,115,117, 98,100,105,118, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,
-112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0, 42,103,112,100, 0,118,101,114,116, 0,104,111,114,
- 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,
-111,111,109, 0,115, 99,114,111,108,108, 0,107,101,101,112,116,111,116, 0,107,101,101,112, 97,115,112,101, 99,116, 0,107,101,
-101,112,122,111,111,109, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93,
- 0,114,111,119, 98,117,116, 0,118, 50,100, 0, 42,101,100,105,116,105,112,111, 0,105,112,111,107,101,121, 0, 97, 99,116,110,
- 97,109,101, 91, 51, 50, 93, 0, 99,111,110,115,116,110, 97,109,101, 91, 51, 50, 93, 0, 98,111,110,101,110, 97,109,101, 91, 51,
- 50, 93, 0,116,111,116,105,112,111, 0,112,105,110, 0, 98,117,116,111,102,115, 0, 99,104, 97,110,110,101,108, 0,108,111, 99,
-107, 0,109,101,100,105, 97,110, 91, 51, 93, 0, 99,117,114,115,101,110,115, 0, 99,117,114, 97, 99,116, 0, 97,108,105,103,110,
- 0,116, 97, 98,111, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0, 42,108,111, 99,107,112,111,105,110, 0,116,101,120,
-102,114,111,109, 0,115,104,111,119,103,114,111,117,112, 0,109,111,100,101,108,116,121,112,101, 0,115, 99,114,105,112,116, 98,
-108,111, 99,107, 0,114,101, 95, 97,108,105,103,110, 0,111,108,100,107,101,121,112,114,101,115,115, 0,116, 97, 98, 91, 55, 93,
- 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0, 42,102,105,108,101,108,105,115,116, 0,116,111,116,102,105,
-108,101, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,111,
-102,115, 0,115,111,114,116, 0,109, 97,120,110, 97,109,101,108,101,110, 0, 99,111,108,108,117,109,115, 0,102, 95,102,112, 0,
-102,112, 95,115,116,114, 91, 56, 93, 0, 42,108,105, 98,102,105,108,101,100, 97,116, 97, 0,114,101,116,118, 97,108, 0,109,101,
-110,117, 0, 97, 99,116, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,
-117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40,
- 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0,111,111,
-112,115, 0,118,105,115,105,102,108, 97,103, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114,
- 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,
-102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0,100,
-101,112,115, 95,102,108, 97,103,115, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114,
- 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0,112, 97,100, 91, 53,
- 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0, 97,117,116,111,115,110, 97,112, 0, 42,116,101,120,116, 0,116,111,112,
- 0,118,105,101,119,108,105,110,101,115, 0,102,111,110,116, 95,105,100, 0,108,104,101,105,103,104,116, 0,108,101,102,116, 0,
-115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0, 99,117,114,114,116, 97, 98, 95,115,101,
-116, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,112,105,120, 95,112,101,114, 95,108,
-105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,
-112,108,117,103,105,110,115, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,
-117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,
-111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53,
- 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,
-101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,
- 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0, 42,102,105,108,101,115, 0, 97, 99,116,105,118,101,
- 95,102,105,108,101, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,115,101,108,115,116, 97,
-116,101, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,
-111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0, 97, 99,116,105,118,
-101, 95, 98,111,111,107,109, 97,114,107, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 42,105,109,103, 0,111,117,116,108,
-105,110,101, 91, 52, 93, 0,110,101,117,116,114, 97,108, 91, 52, 93, 0, 97, 99,116,105,111,110, 91, 52, 93, 0,115,101,116,116,
-105,110,103, 91, 52, 93, 0,115,101,116,116,105,110,103, 49, 91, 52, 93, 0,115,101,116,116,105,110,103, 50, 91, 52, 93, 0,110,
-117,109, 91, 52, 93, 0,116,101,120,116,102,105,101,108,100, 91, 52, 93, 0,116,101,120,116,102,105,101,108,100, 95,104,105, 91,
- 52, 93, 0,112,111,112,117,112, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,109,
-101,110,117, 95, 98, 97, 99,107, 91, 52, 93, 0,109,101,110,117, 95,105,116,101,109, 91, 52, 93, 0,109,101,110,117, 95,104,105,
-108,105,116,101, 91, 52, 93, 0,109,101,110,117, 95,116,101,120,116, 91, 52, 93, 0,109,101,110,117, 95,116,101,120,116, 95,104,
-105, 91, 52, 93, 0, 98,117,116, 95,100,114, 97,119,116,121,112,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98,
- 97, 99,107, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,115,104, 97,100,101, 49,
- 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,
-119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101,
- 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,
-110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,
-116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101,
- 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,
-115,101,108, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97,
- 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52,
- 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,
-108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97,
- 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,
-110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,
-121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,
-101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52,
- 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104,
- 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,
-108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,
-120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,
-115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,
-116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,
-111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 98,112, 97,100, 91, 52, 93,
- 0, 98,112, 97,100, 49, 91, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,
-109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,
-100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,
-120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,
-100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,121,102,101,120,112,111,114,116,100,
-105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 0,118,114,109,108,102,108, 97,103, 0,103, 97,109,101,102,108,
- 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117,
- 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0, 99,111,110,115,111,108,101, 95, 98,117,
-102,102,101,114, 0, 99,111,110,115,111,108,101, 95,111,117,116, 0,109,105,120, 98,117,102,115,105,122,101, 0,102,111,110,116,
-115,105,122,101, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,
-115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,102,111,110,116,110, 97,109,101, 91, 50,
- 53, 54, 93, 0,116,104,101,109,101,115, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,
-103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,
-116, 0, 99,117,114,115,115,105,122,101, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,
-109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,
-103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,
-117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,
-112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112,
- 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,
-101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,
-118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,
-114,111,116, 97,116,101, 0,112, 97,100,115, 91, 50, 93, 0,112, 97,100, 91, 56, 93, 0,118,101,114,115,101,109, 97,115,116,101,
-114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,
-112, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0, 99,111, 98, 97,
- 95,119,101,105,103,104,116, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,
-115,101, 0, 42,115, 99,101,110,101, 0,101,110,100,120, 0,101,110,100,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,
-115, 99,101,110,101,110,114, 0,115, 99,114,101,101,110,110,114, 0,102,117,108,108, 0,109, 97,105,110,119,105,110, 0,119,105,
-110, 97,107,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118,
- 50, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,
-110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,
-111,108,100, 95,111,102,115,120, 0,111,108,100, 95,111,102,115,121, 0,115,111,114,116, 99,111,117,110,116,101,114, 0, 42,112,
- 97,110,101,108,116, 97, 98, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0,119,105,110,109, 97,116, 91, 52, 93, 91,
- 52, 93, 0,104,101, 97,100,114, 99,116, 0,119,105,110,114, 99,116, 0,104,101, 97,100,119,105,110, 0,119,105,110, 0,104,101,
- 97,100,101,114,116,121,112,101, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,119,105,110,120, 0,119,105,110,121, 0,
-104,101, 97,100, 95,115,119, 97,112, 0,104,101, 97,100, 95,101,113,117, 97,108, 0,119,105,110, 95,115,119, 97,112, 0,119,105,
-110, 95,101,113,117, 97,108, 0,104,101, 97,100, 98,117,116,108,101,110, 0,104,101, 97,100, 98,117,116,111,102,115, 0, 99,117,
-114,115,111,114, 0,115,112, 97, 99,101,100, 97,116, 97, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0,115,
-117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,
-115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0,100,105,115,112,108, 97,121,109,111,100,101, 0, 42,
- 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,
-111, 98, 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0,
- 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,
-111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51,
- 93, 0,115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,
-115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,
-121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,
-101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,
-116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,
-115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,
-110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,
-116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,
-104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,109,117,108, 0,104, 97,110,100,115,
-105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0,102, 97, 99,102, 48, 0,102, 97,
- 99,102, 49, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,
-111,117,110,100, 0, 42,104,100, 97,117,100,105,111, 0,108,101,118,101,108, 0,112, 97,110, 0, 99,117,114,112,111,115, 0,115,
-116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0,
- 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97,
- 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112,
- 0,109,101,116, 97,115,116, 97, 99,107, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,
-101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,
-100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,
-121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,
-105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,
-112,111,108, 97,116,105,111,110, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108,
- 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116,
- 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,
-116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,
-101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91,
- 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,
-116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,
-101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,
-109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,
-110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0,100,120, 0,100,121, 0,108,105,110,107, 0,111,116,
-121,112,101, 0,111,108,100, 0, 42,112,111,105,110, 0, 42,111,108,100,112,111,105,110, 0,114,101,115,101,116,100,105,115,116,
- 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,
-101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91,
- 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,
-109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110,
- 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0, 42,102,114,
-111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,112,117,
-108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,106,111,121,105,110,100,
-101,120, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0, 98,117,116,116,111,110,102, 0,104, 97,116, 0,104, 97,116,102,
- 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,
-115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,
-109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,
-112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,
-114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 49, 91, 50, 93, 0,109, 97,107,101, 99,111,112,
-121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 50, 91, 49, 93, 0,116,114, 97, 99,107, 0,118,111,108,117,109,101, 0,
- 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51,
- 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,
-111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121,
- 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 98,117,116,115,116, 97, 0, 98,117,
-116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,112, 0,109,105,110,
-108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,
-116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,
-116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,
-111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101,
- 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,
-110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0,103,111, 0, 97, 99,
- 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100,
- 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112,
- 0, 42,115, 97,109,112,108,101, 0, 42,115,116,114,101, 97,109, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0,
- 42,115,110,100, 95,115,111,117,110,100, 0,112, 97,110,110,105,110,103, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,112,
-105,116, 99,104, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,100,105,115,116, 97,110, 99,101, 0,
-115,116,114,101, 97,109,108,101,110, 0, 99,104, 97,110,110,101,108,115, 0,104,105,103,104,112,114,105,111, 0,112, 97,100, 91,
- 49, 48, 93, 0,103, 97,105,110, 0,100,111,112,112,108,101,114,102, 97, 99,116,111,114, 0,100,111,112,112,108,101,114,118,101,
-108,111, 99,105,116,121, 0,110,117,109,115,111,117,110,100,115, 98,108,101,110,100,101,114, 0,110,117,109,115,111,117,110,100,
-115,103, 97,109,101,101,110,103,105,110,101, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,
-108,105, 95,111,102,115, 91, 51, 93, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93,
- 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100,
- 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,
-105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100,
- 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0,112, 97,116,
-104,102,108, 97,103, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,
-111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,
-115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,
-112, 97,116,104, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108,
- 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,
-101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,
-101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101,
- 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,
-108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,
-102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0, 42, 99,117,115,116,111,109, 0, 99,104, 97,110,
- 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51,
- 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,
-101, 95,103,114,111,117,112, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 42,103,114,112, 0,114,101,115,101,114,118,
-101,100, 49, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 97, 99,116,110,114, 0, 97,
- 99,116,119,105,100,116,104, 0,116,105,109,101,115,108,105,100,101, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112,
- 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0, 42,116,
- 97,114, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112,
- 97, 99,101, 0, 42,112,114,111,112, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,
-111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116,
- 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,
-114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,114,101,115,101,114,118,
-101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111,
- 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,
-111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,
-120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91,
- 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,
-109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120,
- 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,
-120, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101,
- 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,
-111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104,
- 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116,
- 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,
-110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,
-116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,
-119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0,
- 42,110,101,119, 95,110,111,100,101, 0,117,115,101,114,110, 97,109,101, 91, 51, 50, 93, 0,108, 97,115,116,121, 0,111,117,116,
-112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0,
- 99,117,115,116,111,109, 50, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0,116,111,116,114, 0, 98,117,116,114,
- 0,112,114,118,114, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,
-101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,
-116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,
-110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0, 42,115,101,108,105,110, 0, 42,115,
-101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114,
- 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 99,121, 99,108,105, 99, 0,109,111,118,
-105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114,
- 99,101,110,116,121, 0, 98,111,107,101,104, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,
-104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,
-114, 95,121, 0,115,112,105,110, 0,105,116,101,114, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,
-105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,
-101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0,
- 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,112,114,101,118,
-105,101,119, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0,
- 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,
-108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,
-112,114,111,106, 0,102,105,116, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,
-101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116,
- 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91,
- 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,
-109,112,108,101, 91, 51, 93, 0,111,102,102,115,101,116, 91, 50, 93, 0,105,110,110,101,114,114, 97,100,105,117,115, 0,114, 97,
-116,101, 0,114,103, 98, 91, 51, 93, 0, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 42,108, 97,121,101,
-114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,
-111,108, 0,101,100,105,116,102,108, 97,103, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93,
- 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,
-102,102,115,101,116, 0,114, 97,110,100, 91, 51, 93, 0, 42,115,116,105, 99,107, 95,111, 98, 0, 42,104, 97,105,114, 0,105, 95,
-114,111,116, 91, 52, 93, 0,114, 95,114,111,116, 91, 52, 93, 0,114, 95, 97,118,101, 91, 51, 93, 0,114, 95,118,101, 91, 51, 93,
- 0,100,105,101,116,105,109,101, 0, 98, 97,110,107, 0,115,105,122,101,109,117,108, 0,110,117,109, 95,100,109, 99, 97, 99,104,
-101, 0, 98,112,105, 0, 97,108,105,118,101, 0,108,111,111,112, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0,
-114,111,116,109,111,100,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,
-100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,100,114, 97,119,
- 95,115,116,101,112, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,
-101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109,
- 0,105,110,116,101,103,114, 97,116,111,114, 0,110, 98,101,116,119,101,101,110, 0, 98,111,105,100,110,101,105,103,104, 98,111,
-117,114,115, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109,
- 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100,
- 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103,
- 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,
-115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,
-119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,107,101,121,101,100, 95,116,105,109,
-101, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102,
- 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,
-101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,
-100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0,
- 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0, 97, 98,115,108,101,110,103,116,104, 0,114, 97,110,100,108,
-101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,
-114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,
-105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,104,105,108,100,115,112,114,101, 97,100, 0, 99,108,117,
-109,112,102, 97, 99, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,
-101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,
-115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 98,114, 97,110,
- 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,109, 97,120, 95,118,101,108, 0,109, 97,
-120, 95,108, 97,116, 95, 97, 99, 99, 0,109, 97,120, 95,116, 97,110, 95, 97, 99, 99, 0, 97,118,101,114, 97,103,101, 95,118,101,
-108, 0, 98, 97,110,107,105,110,103, 0,109, 97,120, 95, 98, 97,110,107, 0,103,114,111,117,110,100,122, 0, 98,111,105,100,102,
- 97, 99, 91, 56, 93, 0, 98,111,105,100,114,117,108,101, 91, 56, 93, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,
-112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,101,100,105,116, 0, 42, 42,112,
- 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,
-117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,107,
-101,121,101,100, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,101,102,102,101, 99,116,111,114,115, 0,114,101, 97, 99,116,
-101,118,101,110,116,115, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,
-108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,107,101,121,101,100, 95,112,115,121,115, 0,116,
-111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51,
- 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,
-100, 97,116, 97, 0, 42, 99, 97, 99,104,101, 0, 67,100,105,115, 0, 67,118,105, 0, 91, 51, 93, 0,115,116,114,117, 99,116,117,
-114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,
-109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,
-108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,
-101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,
-114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,
-114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,
-117, 99,116, 0,112,114,101,115,101,116,115, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,
-108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,
-108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,
-101, 0, 42,112,111,105,110,116,115, 0,116,111,116,112,111,105,110,116,115, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,
-114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,
-110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,
-108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 0, 0, 0, 84, 89, 80, 69, 0, 0, 1, 91, 99,104, 97,114, 0,117, 99,104,
- 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,
-108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,
-105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,105, 0,118,101, 99, 50,102, 0,118,101, 99, 50,100, 0,
-118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101,
- 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,
-114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,
-105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,
-118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107,
- 0, 75,101,121, 0, 83, 99,114,105,112,116, 76,105,110,107, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,
-107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101,
- 85,115,101,114, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,
-114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116,
- 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 84,101,120, 77, 97,112,112,
-105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 77, 97,116,101,114,
-105, 97,108, 0, 98, 78,111,100,101, 84,114,101,101, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68,
- 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,
-117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0,
- 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,
-100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,
-108,101, 99,116, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108,
- 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,
-121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,
-121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,
-114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,
-115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,
-103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,117,108,116,105,114,101,115, 77, 97,112, 78,111,100,101,
- 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116,
- 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,
-105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,
-111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,
-100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,
-101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,105,115,112,108, 97, 99,
-101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68,
- 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,
-111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,
-101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,
-116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,
-102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104,
- 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,
-110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114,
- 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97,
- 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,
-114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,
-105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 68,101,114,105,118,101,100,
- 77,101,115,104, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116,
- 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104,114,105,110,107,119,114, 97,112,
- 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,
-112, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116,
- 66,111,100,121, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 79, 98, 72,111,111,107, 0, 82, 78, 71,
- 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83,
- 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 82, 97,100,105,111, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,
-101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 70, 70, 77,112,101,103,
- 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76,
- 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,
-109,101, 70,114, 97,109,105,110,103, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,
-101,116,116,105,110,103,115, 0, 66,114,117,115,104, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0,
- 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,
-105,101,110,116, 97,116,105,111,110, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 66,114,117,115,104, 68, 97,116, 97,
- 0, 83, 99,117,108,112,116, 68, 97,116, 97, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 83, 99,101,110,101, 0,
- 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107,
- 0, 83, 99,114, 65,114,101, 97, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,
-116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 98, 71, 80,100, 97,116, 97, 0, 86,105,101,119, 50, 68, 0, 83,112, 97,
- 99,101, 73,110,102,111, 0, 83,112, 97, 99,101, 73,112,111, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,
-101,113, 0, 83,112, 97, 99,101, 70,105,108,101, 0,100,105,114,101,110,116,114,121, 0, 66,108,101,110,100, 72, 97,110,100,108,
-101, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,
-108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,
-116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,
-112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 70,105,108,101, 76,105,115,116, 0, 84,104,
-101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0,
- 98, 84,104,101,109,101, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 98, 83, 99,114,101,101,
-110, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 70,105,108,101, 71,108,111, 98,
- 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,
-112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110,
- 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,
-113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0,104,100, 97,117,100,105,111, 0, 77,101,116, 97, 83,116, 97, 99,107, 0,
- 69,100,105,116,105,110,103, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,
-111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,
-114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0,
- 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 79,111,112,115, 0, 98, 80,114,111,112,101,114,116,121, 0,
- 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,
-101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,
-101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,
-111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114,
- 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,
-103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,
-121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,
-116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,
-117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117,
- 97,116,111,114, 0, 98, 67, 68, 65, 99,116,117, 97,116,111,114, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117,
- 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,
-117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,
-111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,
-116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,
-117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117,
- 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,
-108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116,
- 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 98, 83, 97,109,112,108,101, 0, 98,
- 83,111,117,110,100, 76,105,115,116,101,110,101,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,
-106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108,
- 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 83,112, 97,
- 99,101, 65, 99,116,105,111,110, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,
-115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,
-110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116,
- 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,
-111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0,
- 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,
-114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97,
- 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,
-110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,
-100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114,
- 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,
-114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116,
- 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,
-111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98,
- 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,
-101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,
-100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109,
- 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,
-116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101,
- 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,
-101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,
-114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,
-101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,
-112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,
-118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114,
- 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,
-108,101, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115,
- 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 76,
-105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71,
- 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 0, 0, 84, 76, 69, 78, 0, 1, 0, 1, 0, 2, 0, 2,
- 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24,
- 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 2, 40, 0, 0, 0, 32, 0,140, 3, 68, 0, 92, 0, 36, 0, 56,
- 0, 84, 0,112, 0,120, 0, 16, 0, 24, 0, 40, 0,120, 0, 20, 0,132, 0, 32, 1,128, 0, 0, 0, 0, 0, 0, 0,136, 1, 4,
- 1, 84, 0, 24, 3, 8, 0,168, 0, 0, 0,132, 1,120, 1, 8, 0, 56, 2,108, 0,124, 0, 76, 1, 68, 0, 0, 0,108, 0,104,
- 0,136, 0, 56, 0, 8, 0, 16, 1, 56, 0, 0, 1, 24, 0, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8,
- 0, 24, 0, 76, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 1, 0, 0, 32, 0, 16, 0, 64, 0, 24, 0, 12, 0, 56,
- 0, 0, 0, 52, 0, 68, 0, 88, 0, 96, 0, 68, 0,116, 0, 64, 0, 60, 0,108, 0, 60, 0,148, 0,152, 0, 60, 0, 92, 0,104,
- 0,184, 0,100, 0,180, 0, 52, 0, 68, 0, 0, 0,132, 0, 28, 0, 20, 0,100, 0, 0, 0, 64, 0, 8, 0, 8, 0,216, 0, 76,
- 1, 64, 0, 0, 0, 64, 0, 64, 0,108, 0,116, 0, 40, 0, 84, 0, 56, 0,128, 0,152, 1,132, 0,208, 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 1,100, 0, 40, 0, 28, 0,176, 0,144, 0, 52, 0, 16, 0, 72, 3,180, 0, 56, 0, 16, 0, 80, 0, 12, 0,184,
- 0, 8, 0, 72, 0, 80, 0,188, 0, 8, 0,168, 0, 0, 5, 96, 0, 0, 0, 60, 3, 4, 0, 36, 0,204, 0, 0, 0, 0, 0, 0,
- 0, 20, 0,136, 0, 36, 1, 88, 0,220, 0,200, 1,200, 0, 0, 0, 0, 1, 8, 0, 12, 0, 12, 1, 8, 0,180, 0,128, 2, 80,
- 0, 36, 0,164, 0,220, 2,132, 0, 0, 0,152, 0,208, 0, 16, 14, 56, 0, 56, 12, 32, 0,120, 0, 20, 0, 24, 0,228, 0, 32,
- 0, 80, 0, 28, 0, 16, 0, 8, 0, 52, 0,160, 0,240, 1,168, 0,204, 1, 28, 0, 0, 0, 16, 0, 28, 0, 12, 0, 24, 0, 48,
- 0, 16, 0, 20, 0, 16, 0, 24, 1, 56, 0, 0, 0, 56, 0, 44, 0, 64, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8,
- 0, 72, 0, 44, 0, 40, 0,108, 0, 68, 0, 76, 0, 80, 0, 64, 0,128, 0, 4, 0, 60, 0, 12, 0, 92, 0, 28, 0, 20, 0, 80,
- 0, 16, 0, 76, 0,104, 0, 52, 0, 28, 0, 96, 0, 60, 0, 56, 0,108, 0,140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 40, 0, 0,
- 0, 68, 0,176, 0, 24, 1, 4, 0,116, 1,152, 0, 72, 0, 64, 0,192, 0, 44, 0, 64, 0,116, 0, 60, 0,104, 0, 52, 0, 44,
- 0, 44, 0, 68, 0, 44, 0, 64, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 28, 0, 28, 0, 28, 0, 52, 0, 60,
- 0,140, 0, 36, 0,120, 0, 24, 0,196, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 1, 16, 0, 40, 0, 8, 0, 8,
- 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 12, 0, 44, 0, 20, 0, 60, 0, 24, 0, 56, 0, 72, 0,196, 1,224,
- 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172, 0, 0, 83, 84, 82, 67, 0, 0, 1, 50, 0, 10, 0, 2, 0, 10, 0, 0,
- 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4,
- 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5,
- 0, 7, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7,
- 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7,
- 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6,
- 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4,
- 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11,
- 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0,
- 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 2, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23,
- 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28,
- 0, 2, 0, 20, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34,
- 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41,
- 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 18,
- 0, 2, 0, 20, 0, 0, 0, 48, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51,
- 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 20,
- 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62,
- 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37,
- 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 18, 0, 2, 0, 47, 0, 2, 0, 68,
- 0, 2, 0, 20, 0, 4, 0, 69, 0, 4, 0, 70, 0, 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 17, 0, 0, 0, 72, 0, 7, 0, 73,
- 0, 7, 0, 74, 0, 38, 0, 12, 0, 27, 0, 31, 0, 37, 0, 75, 0, 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 61, 0, 12, 0, 78,
- 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 18, 0, 2, 0, 81, 0, 2, 0, 82, 0, 2, 0, 20, 0, 39, 0, 5, 0, 27, 0, 83,
- 0, 2, 0, 84, 0, 2, 0, 85, 0, 2, 0, 86, 0, 4, 0, 37, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 87,
- 0, 0, 0, 88, 0, 4, 0, 23, 0, 4, 0, 89, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 90, 0, 4, 0, 91,
- 0, 4, 0, 92, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, 42, 0, 15, 0, 27, 0, 31,
- 0, 0, 0, 96, 0, 4, 0, 93, 0, 4, 0, 97, 0, 12, 0, 98, 0, 40, 0, 99, 0, 40, 0,100, 0, 4, 0,101, 0, 4, 0,102,
- 0, 12, 0,103, 0, 0, 0,104, 0, 4, 0,105, 0, 4, 0,106, 0, 9, 0,107, 0, 8, 0,108, 0, 43, 0, 5, 0, 4, 0,109,
- 0, 4, 0,110, 0, 4, 0, 93, 0, 4, 0, 37, 0, 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 2, 0, 18, 0, 2, 0, 20,
- 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,118,
- 0, 7, 0,119, 0, 7, 0,120, 0, 7, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 7, 0,124, 0, 36, 0, 79, 0, 39, 0,125,
- 0, 32, 0,126, 0, 45, 0, 12, 0, 4, 0,127, 0, 4, 0,128, 0, 4, 0,129, 0, 4, 0,130, 0, 2, 0,131, 0, 2, 0,132,
- 0, 2, 0, 20, 0, 2, 0,133, 0, 2, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,137, 0, 46, 0, 32, 0, 27, 0, 31,
- 0, 0, 0, 34, 0, 12, 0,138, 0, 47, 0,139, 0, 48, 0,140, 0, 49, 0,141, 0, 2, 0,133, 0, 2, 0, 20, 0, 2, 0,142,
- 0, 2, 0, 18, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,143, 0, 2, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 2, 0,147,
- 0, 2, 0,148, 0, 2, 0,149, 0, 4, 0,150, 0, 4, 0,151, 0, 43, 0,152, 0, 30, 0,153, 0, 7, 0,154, 0, 4, 0,155,
- 0, 2, 0,156, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 7, 0,160, 0, 7, 0,161, 0, 9, 0,162, 0, 50, 0, 30,
- 0, 2, 0,163, 0, 2, 0,164, 0, 2, 0,165, 0, 2, 0,166, 0, 32, 0,167, 0, 51, 0,168, 0, 0, 0,169, 0, 0, 0,170,
- 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0,173, 0, 7, 0,174, 0, 7, 0,175, 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178,
- 0, 2, 0,179, 0, 2, 0,180, 0, 2, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186,
- 0, 7, 0, 57, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 52, 0, 15, 0, 0, 0,192,
- 0, 9, 0,193, 0, 0, 0,194, 0, 0, 0,195, 0, 4, 0,196, 0, 4, 0,197, 0, 9, 0,198, 0, 7, 0,199, 0, 7, 0,200,
- 0, 7, 0,201, 0, 4, 0,202, 0, 9, 0,203, 0, 9, 0,204, 0, 4, 0,205, 0, 4, 0, 37, 0, 53, 0, 6, 0, 7, 0,182,
- 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,206, 0, 7, 0, 67, 0, 4, 0, 64, 0, 54, 0, 5, 0, 2, 0, 20, 0, 2, 0, 36,
- 0, 2, 0, 64, 0, 2, 0,207, 0, 53, 0,201, 0, 55, 0, 17, 0, 32, 0,167, 0, 46, 0,208, 0, 56, 0,209, 0, 7, 0,210,
- 0, 7, 0,211, 0, 2, 0, 18, 0, 2, 0,212, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,213, 0, 4, 0,214, 0, 2, 0,215,
- 0, 2, 0,216, 0, 4, 0,133, 0, 4, 0,143, 0, 2, 0,217, 0, 2, 0,218, 0, 51, 0, 53, 0, 27, 0, 31, 0, 7, 0,219,
- 0, 7, 0,220, 0, 7, 0,221, 0, 7, 0,222, 0, 7, 0,223, 0, 7, 0,224, 0, 7, 0,225, 0, 7, 0,226, 0, 7, 0,227,
- 0, 7, 0,228, 0, 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 7, 0,232, 0, 7, 0,233, 0, 7, 0,234, 0, 7, 0,235,
- 0, 7, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0,239, 0, 2, 0,240, 0, 2, 0,241, 0, 2, 0,242, 0, 2, 0,243,
- 0, 2, 0,244, 0, 2, 0,245, 0, 2, 0, 20, 0, 2, 0, 18, 0, 2, 0,212, 0, 7, 0,246, 0, 7, 0,247, 0, 7, 0,248,
- 0, 7, 0,249, 0, 2, 0,250, 0, 2, 0,251, 0, 2, 0,252, 0, 2, 0,131, 0, 4, 0, 23, 0, 4, 0,128, 0, 4, 0,129,
- 0, 4, 0,130, 0, 7, 0,253, 0, 7, 0,254, 0, 7, 0,188, 0, 45, 0,255, 0, 36, 0, 79, 0, 46, 0,208, 0, 52, 1, 0,
- 0, 54, 1, 1, 0, 55, 1, 2, 0, 30, 0,153, 0, 57, 0, 8, 0, 7, 1, 3, 0, 7, 1, 4, 0, 7, 0,175, 0, 4, 0, 20,
- 0, 7, 1, 5, 0, 7, 1, 6, 0, 7, 1, 7, 0, 32, 0, 45, 0, 58, 0, 77, 0, 27, 0, 31, 0, 2, 0, 18, 0, 2, 1, 8,
- 0, 4, 1, 9, 0, 2, 0,177, 0, 2, 1, 10, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 1, 11,
- 0, 7, 1, 12, 0, 7, 1, 13, 0, 7, 1, 14, 0, 7, 1, 15, 0, 7, 1, 16, 0, 7, 1, 17, 0, 7, 1, 18, 0, 7, 1, 19,
- 0, 7, 1, 20, 0, 7, 1, 21, 0, 59, 1, 22, 0, 2, 1, 23, 0, 2, 0, 70, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 1, 24,
- 0, 7, 1, 25, 0, 7, 1, 26, 0, 2, 1, 27, 0, 2, 1, 28, 0, 2, 1, 29, 0, 2, 1, 30, 0, 0, 1, 31, 0, 0, 1, 32,
- 0, 2, 1, 33, 0, 2, 1, 34, 0, 2, 1, 35, 0, 2, 1, 36, 0, 2, 1, 37, 0, 7, 1, 38, 0, 7, 1, 39, 0, 7, 1, 40,
- 0, 7, 1, 41, 0, 2, 1, 42, 0, 2, 0, 43, 0, 2, 1, 43, 0, 2, 1, 44, 0, 2, 1, 45, 0, 2, 1, 46, 0, 7, 1, 47,
- 0, 7, 1, 48, 0, 7, 1, 49, 0, 7, 1, 50, 0, 7, 1, 51, 0, 7, 1, 52, 0, 7, 1, 53, 0, 7, 1, 54, 0, 7, 1, 55,
- 0, 7, 1, 56, 0, 7, 1, 57, 0, 4, 1, 58, 0, 4, 1, 59, 0, 2, 1, 60, 0, 2, 1, 61, 0, 2, 1, 62, 0, 2, 1, 63,
- 0, 7, 1, 64, 0, 7, 1, 65, 0, 7, 1, 66, 0, 7, 1, 67, 0, 2, 1, 68, 0, 2, 1, 69, 0, 50, 1, 70, 0, 36, 0, 79,
- 0, 30, 0,153, 0, 39, 0,125, 0, 60, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 61, 0,129, 0, 27, 0, 31, 0, 2, 0,177,
- 0, 2, 0, 20, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 1, 71, 0, 7, 1, 72, 0, 7, 1, 73, 0, 7, 1, 74,
- 0, 7, 1, 75, 0, 7, 1, 76, 0, 7, 1, 77, 0, 7, 1, 78, 0, 7, 1, 79, 0, 7, 1, 80, 0, 7, 1, 81, 0, 7, 1, 82,
- 0, 7, 1, 83, 0, 7, 1, 84, 0, 7, 1, 85, 0, 7, 1, 86, 0, 7, 1, 87, 0, 7, 1, 88, 0, 7, 1, 89, 0, 7, 1, 90,
- 0, 7, 1, 91, 0, 7, 1, 92, 0, 7, 1, 93, 0, 7, 1, 94, 0, 7, 1, 95, 0, 7, 1, 96, 0, 7, 1, 97, 0, 2, 1, 98,
- 0, 2, 1, 99, 0, 2, 1,100, 0, 0, 1,101, 0, 0, 1,102, 0, 7, 1,103, 0, 7, 1,104, 0, 2, 1,105, 0, 2, 1,106,
- 0, 7, 1,107, 0, 7, 1,108, 0, 7, 1,109, 0, 7, 1,110, 0, 2, 1,111, 0, 2, 1,112, 0, 4, 1, 9, 0, 4, 1,113,
- 0, 2, 1,114, 0, 2, 1,115, 0, 2, 1,116, 0, 2, 1,117, 0, 7, 1,118, 0, 7, 1,119, 0, 7, 1,120, 0, 7, 1,121,
- 0, 7, 1,122, 0, 7, 1,123, 0, 7, 1,124, 0, 7, 1,125, 0, 7, 1,126, 0, 7, 1,127, 0, 0, 1,128, 0, 7, 1,129,
- 0, 7, 1,130, 0, 7, 1,131, 0, 4, 1,132, 0, 0, 1,133, 0, 0, 1, 43, 0, 0, 1,134, 0, 0, 1,135, 0, 2, 1,136,
- 0, 2, 1,137, 0, 2, 1,138, 0, 2, 1,139, 0, 2, 1,140, 0, 2, 1,141, 0, 7, 1,142, 0, 7, 1,143, 0, 7, 1,144,
- 0, 7, 1,145, 0, 7, 1,146, 0, 2, 0,163, 0, 2, 0,164, 0, 54, 1,147, 0, 54, 1,148, 0, 0, 1,149, 0, 0, 1,150,
- 0, 0, 1,151, 0, 0, 1,152, 0, 2, 1,153, 0, 2, 1, 8, 0, 7, 1,154, 0, 7, 1,155, 0, 50, 1, 70, 0, 62, 1,156,
- 0, 36, 0, 79, 0, 63, 1,157, 0, 30, 0,153, 0, 7, 1,158, 0, 7, 1,159, 0, 7, 1,160, 0, 7, 1,161, 0, 7, 1,162,
- 0, 2, 1,163, 0, 2, 0, 70, 0, 7, 1,164, 0, 7, 1,165, 0, 7, 1,166, 0, 7, 1,167, 0, 7, 1,168, 0, 7, 1,169,
- 0, 7, 1,170, 0, 7, 1,171, 0, 7, 1,172, 0, 2, 1,173, 0, 2, 1,174, 0, 7, 1,175, 0, 7, 1,176, 0, 7, 1,177,
- 0, 7, 1,178, 0, 7, 1,179, 0, 4, 1,180, 0, 4, 1,181, 0, 4, 1,182, 0, 39, 0,125, 0, 12, 1,183, 0, 64, 0, 6,
- 0, 27, 0, 31, 0, 0, 1,184, 0, 7, 1,185, 0, 7, 0, 37, 0, 65, 0, 2, 0, 43, 0,152, 0, 66, 0, 26, 0, 66, 0, 0,
- 0, 66, 0, 1, 0, 67, 1,186, 0, 4, 1,187, 0, 4, 1,188, 0, 4, 1,189, 0, 4, 1,190, 0, 4, 1,191, 0, 4, 1,192,
- 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 1,193, 0, 2, 1,194, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 1,195,
- 0, 7, 1,196, 0, 7, 1,197, 0, 7, 1,198, 0, 7, 1,199, 0, 7, 1,200, 0, 7, 1,201, 0, 7, 0, 23, 0, 7, 1,202,
- 0, 7, 1,203, 0, 68, 0, 15, 0, 27, 0, 31, 0, 67, 1,186, 0, 12, 1,204, 0, 12, 1,205, 0, 36, 0, 79, 0, 61, 1,206,
- 0, 2, 0, 20, 0, 2, 1,207, 0, 4, 0,176, 0, 7, 1, 3, 0, 7, 0,175, 0, 7, 1, 4, 0, 7, 1,208, 0, 7, 1,209,
- 0, 7, 1,210, 0, 35, 0, 10, 0, 7, 1,211, 0, 7, 1,212, 0, 7, 1,213, 0, 7, 1,214, 0, 2, 1,215, 0, 2, 1,216,
- 0, 0, 1,217, 0, 0, 1,218, 0, 0, 1,219, 0, 0, 1,220, 0, 34, 0, 7, 0, 7, 1,221, 0, 7, 1,212, 0, 7, 1,213,
- 0, 2, 1,217, 0, 2, 1,220, 0, 7, 1,214, 0, 7, 0, 37, 0, 69, 0, 21, 0, 69, 0, 0, 0, 69, 0, 1, 0, 2, 0, 18,
- 0, 2, 1,222, 0, 2, 1,220, 0, 2, 0, 20, 0, 2, 1,223, 0, 2, 1,224, 0, 2, 1,225, 0, 2, 1,226, 0, 2, 1,227,
- 0, 2, 1,228, 0, 2, 1,229, 0, 2, 1,230, 0, 7, 1,231, 0, 7, 1,232, 0, 34, 0, 49, 0, 35, 0, 50, 0, 2, 1,233,
- 0, 2, 0, 37, 0, 4, 1,234, 0, 70, 0, 5, 0, 2, 1,235, 0, 2, 1,222, 0, 0, 0, 20, 0, 0, 0, 37, 0, 2, 0, 70,
- 0, 71, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 1,236, 0, 72, 0, 57, 0, 27, 0, 31, 0, 67, 1,186,
- 0, 12, 1,237, 0, 12, 1,205, 0, 32, 1,238, 0, 32, 1,239, 0, 32, 1,240, 0, 36, 0, 79, 0, 73, 1,241, 0, 38, 1,242,
- 0, 61, 1,206, 0, 12, 1,243, 0, 7, 1, 3, 0, 7, 0,175, 0, 7, 1, 4, 0, 4, 0,176, 0, 2, 1,244, 0, 2, 1,207,
- 0, 2, 0, 20, 0, 2, 1,245, 0, 7, 1,246, 0, 7, 1,247, 0, 7, 1,248, 0, 2, 1,225, 0, 2, 1,226, 0, 2, 1,249,
- 0, 2, 1,250, 0, 4, 0, 70, 0, 2, 0, 23, 0, 2, 0, 98, 0, 2, 0, 67, 0, 2, 1,251, 0, 7, 1,252, 0, 7, 1,253,
- 0, 7, 1,254, 0, 7, 1,255, 0, 7, 2, 0, 0, 7, 2, 1, 0, 7, 2, 2, 0, 7, 2, 3, 0, 7, 2, 4, 0, 7, 2, 5,
- 0, 0, 2, 6, 0, 0, 2, 7, 0, 64, 2, 8, 0, 64, 2, 9, 0, 64, 2, 10, 0, 64, 2, 11, 0, 4, 2, 12, 0, 4, 2, 13,
- 0, 4, 2, 14, 0, 4, 0, 37, 0, 71, 2, 15, 0, 4, 2, 16, 0, 4, 2, 17, 0, 70, 2, 18, 0, 70, 2, 19, 0, 74, 0, 39,
- 0, 27, 0, 31, 0, 67, 1,186, 0, 12, 2, 20, 0, 36, 0, 79, 0, 38, 1,242, 0, 61, 1,206, 0, 75, 2, 21, 0, 76, 2, 22,
- 0, 77, 2, 23, 0, 78, 2, 24, 0, 79, 2, 25, 0, 80, 2, 26, 0, 81, 2, 27, 0, 82, 2, 28, 0, 74, 2, 29, 0, 83, 2, 30,
- 0, 84, 2, 31, 0, 84, 2, 32, 0, 84, 2, 33, 0, 4, 0, 54, 0, 4, 2, 34, 0, 4, 2, 35, 0, 4, 2, 36, 0, 4, 2, 37,
- 0, 4, 0,176, 0, 7, 1, 3, 0, 7, 0,175, 0, 7, 1, 4, 0, 7, 2, 38, 0, 7, 0, 37, 0, 2, 2, 39, 0, 2, 0, 20,
- 0, 2, 2, 40, 0, 2, 2, 41, 0, 2, 1,207, 0, 2, 2, 42, 0, 85, 2, 43, 0, 86, 2, 44, 0, 9, 0,162, 0, 77, 0, 8,
- 0, 9, 2, 45, 0, 7, 2, 46, 0, 4, 2, 47, 0, 0, 0, 20, 0, 0, 2, 48, 0, 2, 1, 9, 0, 2, 2, 49, 0, 2, 2, 50,
- 0, 75, 0, 8, 0, 4, 2, 51, 0, 4, 2, 52, 0, 4, 2, 53, 0, 4, 2, 54, 0, 0, 0, 37, 0, 0, 1,222, 0, 0, 2, 55,
- 0, 0, 0, 20, 0, 79, 0, 5, 0, 4, 2, 51, 0, 4, 2, 52, 0, 0, 2, 56, 0, 0, 2, 57, 0, 2, 0, 20, 0, 87, 0, 2,
- 0, 4, 2, 58, 0, 7, 1,213, 0, 80, 0, 3, 0, 87, 2, 59, 0, 4, 2, 60, 0, 4, 0, 20, 0, 78, 0, 6, 0, 7, 2, 61,
- 0, 2, 2, 62, 0, 0, 0, 20, 0, 0, 1,222, 0, 0, 2, 57, 0, 0, 0,181, 0, 81, 0, 4, 0, 0, 0,206, 0, 0, 0,182,
- 0, 0, 0,183, 0, 0, 0,184, 0, 88, 0, 6, 0, 46, 2, 45, 0, 0, 0, 20, 0, 0, 2, 48, 0, 2, 1, 9, 0, 2, 2, 49,
- 0, 2, 2, 50, 0, 89, 0, 1, 0, 7, 2, 63, 0, 90, 0, 5, 0, 0, 0,206, 0, 0, 0,182, 0, 0, 0,183, 0, 0, 0,184,
- 0, 4, 0, 37, 0, 82, 0, 1, 0, 7, 2, 64, 0, 83, 0, 2, 0, 4, 2, 65, 0, 4, 0, 18, 0, 76, 0, 7, 0, 7, 2, 46,
- 0, 46, 2, 45, 0, 0, 0, 20, 0, 0, 2, 48, 0, 2, 1, 9, 0, 2, 2, 49, 0, 2, 2, 50, 0, 91, 0, 1, 0, 7, 2, 66,
- 0, 92, 0, 1, 0, 4, 2, 67, 0, 93, 0, 1, 0, 0, 2, 68, 0, 94, 0, 1, 0, 7, 2, 46, 0, 95, 0, 4, 0, 7, 0,206,
- 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 96, 0, 1, 0, 95, 2, 47, 0, 97, 0, 5, 0, 4, 2, 69, 0, 4, 2, 70,
- 0, 0, 0, 20, 0, 0, 1,222, 0, 0, 2, 71, 0, 98, 0, 2, 0, 4, 2, 72, 0, 4, 2, 70, 0, 99, 0, 14, 0, 99, 0, 0,
- 0, 99, 0, 1, 0, 97, 2, 73, 0, 96, 2, 74, 0, 98, 2, 75, 0, 0, 2, 76, 0, 12, 2, 77, 0, 12, 2, 78, 0,100, 2, 79,
- 0, 4, 0, 54, 0, 4, 2, 35, 0, 4, 2, 34, 0, 4, 0, 37, 0, 78, 2, 80, 0, 85, 0, 14, 0, 12, 2, 81, 0, 78, 2, 80,
- 0, 0, 2, 82, 0, 0, 2, 83, 0, 0, 2, 84, 0, 0, 2, 85, 0, 0, 2, 86, 0, 0, 2, 87, 0, 0, 2, 88, 0, 0, 0, 20,
- 0, 84, 2, 31, 0, 84, 2, 33, 0, 2, 2, 89, 0, 0, 2, 90, 0, 86, 0, 8, 0, 4, 2, 91, 0, 4, 2, 92, 0, 75, 2, 93,
- 0, 79, 2, 94, 0, 4, 2, 35, 0, 4, 2, 34, 0, 4, 0, 54, 0, 4, 0, 37, 0,101, 0, 6, 0,101, 0, 0, 0,101, 0, 1,
- 0, 4, 0, 18, 0, 4, 1, 9, 0, 0, 0, 17, 0, 0, 2, 95, 0,102, 0, 7, 0,101, 2, 96, 0, 2, 2, 97, 0, 2, 2, 81,
- 0, 2, 2, 98, 0, 2, 0, 93, 0, 9, 2, 99, 0, 9, 2,100, 0,103, 0, 3, 0,101, 2, 96, 0, 32, 0,167, 0, 0, 0, 17,
- 0,104, 0, 5, 0,101, 2, 96, 0, 32, 0,167, 0, 0, 0, 17, 0, 2, 2,101, 0, 0, 2,102, 0,105, 0, 5, 0,101, 2, 96,
- 0, 7, 0, 91, 0, 7, 2,103, 0, 4, 2,104, 0, 4, 2,105, 0,106, 0, 13, 0,101, 2, 96, 0, 32, 2,106, 0, 32, 2,107,
- 0, 32, 2,108, 0, 32, 2,109, 0, 7, 2,110, 0, 7, 2,111, 0, 7, 2,103, 0, 7, 2,112, 0, 4, 2,113, 0, 4, 2,114,
- 0, 4, 0, 93, 0, 4, 2,115, 0,107, 0, 5, 0,101, 2, 96, 0, 2, 2,116, 0, 2, 0, 20, 0, 7, 2,117, 0, 32, 2,118,
- 0,108, 0, 3, 0,101, 2, 96, 0, 7, 2,119, 0, 4, 0, 93, 0,109, 0, 10, 0,101, 2, 96, 0, 7, 2,120, 0, 4, 2,121,
- 0, 4, 0, 37, 0, 2, 0, 93, 0, 2, 2,122, 0, 2, 2,123, 0, 2, 2,124, 0, 7, 2,125, 0, 0, 2,126, 0,110, 0, 3,
- 0,101, 2, 96, 0, 7, 0, 37, 0, 4, 0, 18, 0,111, 0, 11, 0,101, 2, 96, 0, 51, 2,127, 0, 7, 2,128, 0, 4, 2,129,
- 0, 0, 2,126, 0, 7, 2,130, 0, 4, 2,131, 0, 32, 2,132, 0, 0, 2,133, 0, 4, 2,134, 0, 4, 0, 37, 0,112, 0, 10,
- 0,101, 2, 96, 0, 32, 2,135, 0, 46, 2,136, 0, 4, 0, 93, 0, 4, 2,137, 0, 7, 2,138, 0, 7, 2,139, 0, 0, 2,133,
- 0, 4, 2,134, 0, 4, 0, 37, 0,113, 0, 3, 0,101, 2, 96, 0, 7, 2,140, 0, 4, 2,141, 0,114, 0, 5, 0,101, 2, 96,
- 0, 7, 2,142, 0, 0, 2,126, 0, 2, 0, 20, 0, 2, 2,143, 0,115, 0, 8, 0,101, 2, 96, 0, 32, 0,167, 0, 7, 2,142,
- 0, 7, 1,214, 0, 7, 0,109, 0, 0, 2,126, 0, 2, 0, 20, 0, 2, 0, 18, 0,116, 0, 21, 0,101, 2, 96, 0, 32, 2,144,
- 0, 0, 2,126, 0, 51, 2,127, 0, 32, 2,132, 0, 2, 0, 20, 0, 2, 0, 37, 0, 7, 2,145, 0, 7, 2,146, 0, 7, 2,147,
- 0, 7, 1,246, 0, 7, 2,148, 0, 7, 2,149, 0, 7, 2,150, 0, 7, 2,151, 0, 4, 2,131, 0, 4, 2,134, 0, 0, 2,133,
- 0, 7, 2,152, 0, 7, 2,153, 0, 7, 0, 43, 0,117, 0, 7, 0,101, 2, 96, 0, 2, 2,154, 0, 2, 2,155, 0, 4, 0, 70,
- 0, 32, 0,167, 0, 7, 2,156, 0, 0, 2,126, 0,118, 0, 9, 0,101, 2, 96, 0, 32, 0,167, 0, 7, 2,157, 0, 7, 2,158,
- 0, 7, 2,151, 0, 4, 2,159, 0, 4, 2,160, 0, 7, 2,161, 0, 0, 0, 17, 0,119, 0, 1, 0,101, 2, 96, 0,120, 0, 5,
- 0,101, 2, 96, 0,121, 2,162, 0,122, 2,163, 0,123, 2,164, 0,124, 2,165, 0,125, 0, 14, 0,101, 2, 96, 0, 78, 2,166,
- 0, 78, 2,167, 0, 78, 2,168, 0, 78, 2,169, 0, 78, 2,170, 0, 78, 2,171, 0, 75, 2,172, 0, 4, 2,173, 0, 4, 2,174,
- 0, 2, 2,175, 0, 2, 0, 37, 0, 7, 2,176, 0,126, 2,177, 0,127, 0, 4, 0,101, 2, 96, 0, 32, 0,167, 0, 4, 2,178,
- 0, 4, 0, 37, 0,128, 0, 2, 0, 4, 2,179, 0, 7, 1,213, 0,129, 0, 2, 0, 4, 0,129, 0, 4, 2,180, 0,130, 0, 20,
- 0,101, 2, 96, 0, 32, 0,167, 0, 0, 2,126, 0, 2, 2,181, 0, 2, 2,182, 0, 2, 0, 20, 0, 2, 0, 37, 0, 7, 2,183,
- 0, 7, 2,184, 0, 4, 0, 54, 0, 4, 2,185, 0,129, 2,186, 0,128, 2,187, 0, 4, 2,188, 0, 4, 2,189, 0, 4, 2,190,
- 0, 4, 2,180, 0, 7, 2,191, 0, 7, 2,192, 0, 7, 2,193, 0,131, 0, 8, 0,101, 2, 96, 0,132, 2,194, 0,133, 2,195,
- 0, 4, 2,196, 0, 4, 2,197, 0, 4, 2,198, 0, 2, 0, 20, 0, 2, 0, 57, 0,134, 0, 5, 0,101, 2, 96, 0, 32, 0, 45,
- 0, 2, 2,199, 0, 2, 0, 20, 0, 2, 2,200, 0,135, 0, 5, 0,101, 2, 96, 0, 4, 2,201, 0, 2, 0, 20, 0, 2, 2,202,
- 0, 7, 2,203, 0,136, 0, 10, 0,101, 2, 96, 0, 32, 2,204, 0, 32, 2,205, 0, 0, 2,206, 0, 7, 2,207, 0, 2, 2,208,
- 0, 2, 2,209, 0, 0, 2,210, 0, 0, 2,211, 0, 0, 2,102, 0,137, 0, 24, 0, 27, 0, 31, 0, 2, 1,223, 0, 2, 1,224,
- 0, 2, 2,212, 0, 2, 0, 20, 0, 2, 2,213, 0, 2, 2,214, 0, 2, 2,215, 0, 2, 0, 70, 0, 0, 2,216, 0, 0, 2,217,
- 0, 0, 2,218, 0, 0, 0, 18, 0, 4, 0, 37, 0, 7, 2,219, 0, 7, 2,220, 0, 7, 2,221, 0, 7, 2,222, 0, 7, 2,223,
- 0, 7, 2,224, 0, 34, 2,225, 0, 36, 0, 79, 0, 38, 1,242, 0, 80, 2, 26, 0,138, 0, 3, 0,138, 0, 0, 0,138, 0, 1,
- 0, 0, 0, 17, 0, 67, 0, 3, 0, 7, 2,226, 0, 4, 0, 20, 0, 4, 0, 37, 0, 32, 0,108, 0, 27, 0, 31, 0, 2, 0, 18,
- 0, 2, 2,227, 0, 4, 2,228, 0, 4, 2,229, 0, 4, 2,230, 0, 0, 2,231, 0, 32, 0, 38, 0, 32, 2,232, 0, 32, 2,233,
- 0, 32, 2,234, 0, 32, 2,235, 0, 36, 0, 79, 0, 73, 1,241, 0, 67, 1,186, 0,139, 2,236, 0,139, 2,237, 0,140, 2,238,
- 0, 9, 0, 2, 0, 12, 2,239, 0, 12, 2, 20, 0, 12, 1,205, 0, 12, 2,240, 0, 12, 2,241, 0, 61, 1,206, 0, 7, 1, 3,
- 0, 7, 2,242, 0, 7, 2,243, 0, 7, 0,175, 0, 7, 2,244, 0, 7, 1, 4, 0, 7, 2,245, 0, 7, 2,246, 0, 7, 2,157,
- 0, 7, 2,247, 0, 7, 0,210, 0, 4, 2,248, 0, 2, 0, 20, 0, 2, 2,249, 0, 2, 2,250, 0, 2, 2,251, 0, 2, 2,252,
- 0, 2, 2,253, 0, 2, 2,254, 0, 2, 2,255, 0, 2, 3, 0, 0, 2, 3, 1, 0, 2, 3, 2, 0, 2, 3, 3, 0, 4, 3, 4,
- 0, 4, 3, 5, 0, 4, 3, 6, 0, 4, 3, 7, 0, 7, 3, 8, 0, 7, 3, 9, 0, 7, 3, 10, 0, 7, 3, 11, 0, 7, 3, 12,
- 0, 7, 3, 13, 0, 7, 3, 14, 0, 7, 3, 15, 0, 7, 3, 16, 0, 7, 1, 8, 0, 0, 3, 17, 0, 0, 3, 18, 0, 0, 1,207,
- 0, 0, 3, 19, 0, 0, 3, 20, 0, 0, 3, 21, 0, 7, 3, 22, 0, 7, 3, 23, 0, 39, 0,125, 0, 12, 3, 24, 0, 12, 3, 25,
- 0, 12, 3, 26, 0, 12, 3, 27, 0, 7, 3, 28, 0, 2, 2, 65, 0, 2, 3, 29, 0, 7, 2, 47, 0, 4, 3, 30, 0, 4, 3, 31,
- 0, 2, 3, 32, 0, 2, 0,217, 0, 7, 3, 33, 0, 12, 3, 34, 0, 12, 3, 35, 0, 12, 3, 36, 0, 12, 3, 37, 0,141, 3, 38,
- 0,142, 3, 39, 0, 63, 3, 40, 0, 2, 3, 41, 0, 2, 3, 42, 0, 2, 3, 43, 0, 2, 3, 44, 0, 7, 2, 39, 0, 2, 3, 45,
- 0, 2, 3, 46, 0,143, 3, 47, 0,133, 3, 48, 0,133, 3, 49, 0, 4, 3, 50, 0, 4, 3, 51, 0, 4, 3, 52, 0, 4, 0, 70,
- 0, 9, 0,162, 0, 12, 3, 53, 0,144, 0, 14, 0,144, 0, 0, 0,144, 0, 1, 0, 32, 0, 38, 0, 7, 2,157, 0, 7, 1, 5,
- 0, 7, 2,158, 0, 7, 2,151, 0, 0, 0, 17, 0, 4, 2,159, 0, 4, 2,160, 0, 4, 3, 54, 0, 2, 0, 18, 0, 2, 3, 55,
- 0, 7, 2,161, 0,141, 0, 36, 0, 2, 3, 56, 0, 2, 3, 57, 0, 2, 0, 20, 0, 2, 2,151, 0, 7, 3, 58, 0, 7, 3, 59,
- 0, 7, 3, 60, 0, 7, 3, 61, 0, 7, 3, 62, 0, 7, 3, 63, 0, 7, 3, 64, 0, 7, 3, 65, 0, 7, 3, 66, 0, 7, 3, 67,
- 0, 7, 3, 68, 0, 7, 3, 69, 0, 7, 3, 70, 0, 7, 3, 71, 0, 7, 3, 72, 0, 7, 3, 73, 0, 7, 3, 74, 0, 7, 3, 75,
- 0, 7, 3, 76, 0, 7, 3, 77, 0, 7, 3, 78, 0, 7, 3, 79, 0, 7, 3, 80, 0, 7, 3, 81, 0, 2, 3, 82, 0, 2, 3, 83,
- 0, 2, 3, 84, 0, 2, 3, 85, 0, 51, 0,168, 0,145, 3, 86, 0, 7, 3, 87, 0, 4, 0, 37, 0,124, 0, 5, 0, 4, 0, 20,
- 0, 4, 3, 88, 0, 4, 3, 89, 0, 4, 3, 90, 0, 4, 3, 91, 0,146, 0, 1, 0, 7, 1,221, 0,142, 0, 44, 0,132, 3, 92,
- 0, 4, 3, 93, 0, 4, 3, 94, 0,147, 3, 95, 0,148, 3, 96, 0, 7, 0, 37, 0, 7, 3, 97, 0, 7, 3, 98, 0, 7, 3, 99,
- 0, 7, 3,100, 0, 7, 3,101, 0, 7, 3,102, 0, 7, 3,103, 0, 7, 3,104, 0, 7, 3,105, 0, 7, 3,106, 0, 2, 3,107,
- 0, 2, 3,108, 0, 7, 3,109, 0, 7, 3,110, 0, 4, 0,130, 0, 4, 3,111, 0, 4, 3,112, 0, 2, 3,113, 0, 2, 3,114,
- 0,146, 3,115, 0, 4, 3,116, 0, 4, 0, 81, 0, 7, 3,117, 0, 7, 3,118, 0, 7, 3,119, 0, 7, 3,120, 0, 2, 3,121,
- 0, 2, 3,122, 0, 2, 3,123, 0, 2, 3,124, 0, 2, 3,125, 0, 2, 3,126, 0, 2, 3,127, 0, 2, 3,128, 0,149, 3,129,
- 0, 7, 3,130, 0, 7, 3,131, 0,124, 3,132, 0,143, 0, 40, 0, 2, 0, 18, 0, 2, 3,133, 0, 2, 3,134, 0, 2, 3,135,
- 0, 7, 3,136, 0, 2, 3,137, 0, 2, 3,138, 0, 7, 3,139, 0, 2, 3,140, 0, 2, 3,141, 0, 7, 3,142, 0, 7, 3,143,
- 0, 7, 3,144, 0, 7, 3,145, 0, 7, 3,146, 0, 7, 3,147, 0, 4, 3,148, 0, 7, 3,149, 0, 7, 3,150, 0, 7, 3,151,
- 0, 74, 3,152, 0, 74, 3,153, 0, 74, 3,154, 0, 0, 3,155, 0, 7, 3,156, 0, 7, 3,157, 0, 36, 0, 79, 0, 2, 3,158,
- 0, 0, 3,159, 0, 0, 3,160, 0, 7, 3,161, 0, 4, 3,162, 0, 7, 3,163, 0, 7, 3,164, 0, 4, 3,165, 0, 4, 3,166,
- 0, 7, 3,167, 0, 7, 3,168, 0, 7, 3,169, 0, 78, 3,170, 0,150, 0, 66, 0, 27, 0, 31, 0, 2, 0,177, 0, 2, 1, 10,
- 0, 2, 1, 43, 0, 2, 3,171, 0, 7, 3,172, 0, 7, 3,173, 0, 7, 3,174, 0, 7, 3,175, 0, 7, 3,176, 0, 7, 3,177,
- 0, 7, 3,178, 0, 7, 3,179, 0, 7, 1, 77, 0, 7, 1, 79, 0, 7, 1, 78, 0, 7, 3,180, 0, 4, 3,181, 0, 7, 3,182,
- 0, 7, 3,183, 0, 7, 3,184, 0, 7, 3,185, 0, 7, 3,186, 0, 7, 3,187, 0, 7, 3,188, 0, 2, 3,189, 0, 2, 1, 9,
- 0, 4, 3,190, 0, 7, 3,191, 0, 7, 3,192, 0, 7, 3,193, 0, 7, 3,194, 0, 7, 3,195, 0, 7, 3,196, 0, 7, 3,197,
- 0, 7, 3,198, 0, 7, 3,199, 0, 7, 3,200, 0, 7, 3,201, 0, 7, 3,202, 0, 2, 3,203, 0, 2, 3,204, 0, 2, 3,205,
- 0, 2, 3,206, 0, 7, 3,207, 0, 7, 3,208, 0, 7, 3,209, 0, 7, 3,210, 0, 2, 3,211, 0, 2, 3,212, 0, 2, 3,213,
- 0, 2, 3,214, 0, 7, 3,215, 0, 7, 3,216, 0, 7, 3,217, 0, 7, 3,218, 0, 2, 3,219, 0, 2, 3,220, 0, 2, 3,221,
- 0, 2, 0, 43, 0, 7, 3,222, 0, 7, 3,223, 0, 36, 0, 79, 0, 50, 1, 70, 0, 30, 0,153, 0, 39, 0,125, 0,151, 0, 16,
- 0, 2, 3,224, 0, 2, 3,225, 0, 2, 3,226, 0, 2, 0, 20, 0, 2, 3,227, 0, 2, 3,228, 0, 2, 3,229, 0, 2, 3,230,
- 0, 2, 3,231, 0, 2, 3,232, 0, 2, 3,233, 0, 2, 3,234, 0, 4, 3,235, 0, 7, 3,236, 0, 7, 3,237, 0, 7, 3,238,
- 0,152, 0, 8, 0,152, 0, 0, 0,152, 0, 1, 0, 4, 2,248, 0, 4, 3,239, 0, 4, 0, 20, 0, 2, 3,240, 0, 2, 3,241,
- 0, 32, 0,167, 0,153, 0, 13, 0, 9, 3,242, 0, 9, 3,243, 0, 4, 3,244, 0, 4, 3,245, 0, 4, 3,246, 0, 4, 3,247,
- 0, 4, 3,248, 0, 4, 3,249, 0, 4, 3,250, 0, 4, 3,251, 0, 4, 3,252, 0, 4, 0, 37, 0, 0, 3,253, 0,154, 0, 5,
- 0, 9, 3,254, 0, 9, 3,255, 0, 4, 4, 0, 0, 4, 0, 70, 0, 0, 4, 1, 0,155, 0, 13, 0, 4, 0, 18, 0, 4, 4, 2,
- 0, 4, 4, 3, 0, 4, 4, 4, 0, 4, 4, 5, 0, 4, 4, 6, 0, 4, 0, 93, 0, 4, 4, 7, 0, 4, 4, 8, 0, 4, 4, 9,
- 0, 4, 4, 10, 0, 4, 4, 11, 0, 26, 0, 30, 0,156, 0, 4, 0, 4, 4, 12, 0, 7, 4, 13, 0, 2, 0, 20, 0, 2, 0,181,
- 0,157, 0, 11, 0,157, 0, 0, 0,157, 0, 1, 0, 0, 0, 17, 0, 61, 4, 14, 0, 63, 4, 15, 0, 4, 2,248, 0, 4, 4, 16,
- 0, 4, 4, 17, 0, 4, 0, 37, 0, 4, 4, 18, 0, 4, 4, 19, 0,158, 0,120, 0,153, 4, 20, 0,154, 4, 21, 0,155, 4, 22,
- 0, 4, 4, 23, 0, 4, 0,130, 0, 4, 3,111, 0, 4, 4, 24, 0, 4, 4, 25, 0, 4, 4, 26, 0, 4, 4, 27, 0, 2, 0, 20,
- 0, 2, 4, 28, 0, 7, 3, 9, 0, 7, 4, 29, 0, 7, 4, 30, 0, 7, 4, 31, 0, 7, 4, 32, 0, 7, 4, 33, 0, 2, 4, 34,
- 0, 2, 4, 35, 0, 2, 4, 36, 0, 2, 4, 37, 0, 2, 0,216, 0, 2, 4, 38, 0, 2, 4, 39, 0, 2, 3, 85, 0, 2, 4, 40,
- 0, 2, 4, 41, 0, 2, 1, 30, 0, 2, 0,109, 0, 2, 4, 42, 0, 2, 4, 43, 0, 2, 4, 44, 0, 2, 4, 45, 0, 2, 4, 46,
- 0, 2, 4, 47, 0, 2, 4, 48, 0, 2, 4, 49, 0, 2, 4, 50, 0, 2, 1, 31, 0, 2, 4, 51, 0, 2, 4, 52, 0, 2, 4, 53,
- 0, 2, 4, 54, 0, 4, 4, 55, 0, 4, 1, 9, 0, 2, 4, 56, 0, 2, 4, 57, 0, 2, 4, 58, 0, 2, 4, 59, 0, 2, 4, 60,
- 0, 2, 4, 61, 0, 24, 4, 62, 0, 24, 4, 63, 0, 23, 4, 64, 0, 12, 4, 65, 0, 2, 4, 66, 0, 2, 0, 37, 0, 7, 4, 67,
- 0, 7, 4, 68, 0, 7, 4, 69, 0, 7, 4, 70, 0, 7, 4, 71, 0, 7, 4, 72, 0, 7, 4, 73, 0, 7, 4, 74, 0, 7, 4, 75,
- 0, 2, 4, 76, 0, 2, 4, 77, 0, 2, 4, 78, 0, 2, 4, 79, 0, 2, 4, 80, 0, 2, 4, 81, 0, 7, 4, 82, 0, 7, 4, 83,
- 0, 7, 4, 84, 0, 2, 4, 85, 0, 2, 4, 86, 0, 2, 4, 87, 0, 2, 4, 88, 0, 2, 4, 89, 0, 2, 4, 90, 0, 2, 4, 91,
- 0, 2, 4, 92, 0, 2, 4, 93, 0, 2, 4, 94, 0, 4, 4, 95, 0, 4, 4, 96, 0, 4, 4, 97, 0, 4, 4, 98, 0, 4, 4, 99,
- 0, 7, 4,100, 0, 4, 4,101, 0, 4, 4,102, 0, 4, 4,103, 0, 4, 4,104, 0, 7, 4,105, 0, 7, 4,106, 0, 7, 4,107,
- 0, 7, 4,108, 0, 7, 4,109, 0, 7, 4,110, 0, 7, 4,111, 0, 7, 4,112, 0, 7, 4,113, 0, 0, 4,114, 0, 0, 4,115,
- 0, 4, 4,116, 0, 2, 4,117, 0, 2, 1, 8, 0, 0, 4,118, 0, 7, 4,119, 0, 7, 4,120, 0, 4, 4,121, 0, 4, 4,122,
- 0, 7, 4,123, 0, 7, 4,124, 0, 2, 4,125, 0, 2, 4,126, 0, 7, 4,127, 0,159, 0, 9, 0,159, 0, 0, 0,159, 0, 1,
- 0, 0, 0, 17, 0, 2, 4,128, 0, 2, 4,129, 0, 2, 4,130, 0, 2, 0, 43, 0, 7, 4,131, 0, 7, 0, 70, 0,160, 0, 5,
- 0, 7, 4,132, 0, 0, 0, 18, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 1, 8, 0,161, 0, 5, 0,161, 0, 0, 0,161, 0, 1,
- 0, 4, 4,133, 0, 0, 4,134, 0, 4, 0, 20, 0,162, 0, 4, 0,163, 4,135, 0, 2, 0, 20, 0, 2, 4,136, 0, 4, 1, 8,
- 0,164, 0, 4, 0, 2, 0,109, 0, 2, 2,128, 0, 2, 4,137, 0, 2, 4,138, 0,165, 0, 7, 0, 2, 0, 20, 0, 2, 4,139,
- 0, 2, 4,140, 0, 2, 4,141, 0,164, 4,142, 0, 7, 4,143, 0, 4, 4,144, 0,166, 0, 4, 0,166, 0, 0, 0,166, 0, 1,
- 0, 0, 4,145, 0, 7, 4,146, 0,167, 0, 42, 0, 2, 4,147, 0, 2, 4,148, 0, 7, 4,149, 0, 7, 4,150, 0, 2, 4,137,
- 0, 2, 4,151, 0, 7, 4,152, 0, 7, 4,153, 0, 2, 4,154, 0, 2, 4,155, 0, 2, 4,156, 0, 2, 4,157, 0, 7, 4,158,
- 0, 7, 4,159, 0, 2, 4,160, 0, 2, 4,161, 0, 2, 4,162, 0, 2, 4,163, 0,162, 4,164, 0,165, 4,165, 0, 7, 4,166,
- 0, 7, 4,167, 0, 0, 4,168, 0, 0, 4,169, 0, 0, 4,170, 0, 0, 4,171, 0, 0, 4,172, 0, 0, 4,173, 0, 2, 4,174,
- 0, 7, 4,175, 0, 7, 4,176, 0, 7, 4,177, 0, 7, 4,178, 0, 7, 4,179, 0, 7, 4,180, 0, 7, 4,181, 0, 2, 4,182,
- 0, 0, 4,183, 0, 0, 4,184, 0, 0, 4,185, 0, 0, 4,186, 0, 0, 4,187, 0,168, 0, 6, 0, 2, 0,109, 0, 0, 2,128,
- 0, 0, 4,188, 0, 0, 4,189, 0, 0, 0, 20, 0, 0, 2, 71, 0,169, 0, 26, 0,170, 4,190, 0, 50, 1, 70, 0, 59, 4,191,
- 0,168, 4,192, 0,168, 4,193, 0,168, 4,194, 0,168, 4,195, 0,168, 4,196, 0,168, 4,197, 0,168, 4,198, 0, 7, 4,199,
- 0, 2, 4,200, 0, 2, 1, 43, 0, 2, 4,201, 0, 2, 1,252, 0, 0, 4,202, 0, 0, 4,203, 0, 0, 4,204, 0, 0, 4,205,
- 0, 0, 0, 93, 0, 0, 4,206, 0, 0, 4,207, 0, 0, 4,208, 0, 0, 4,209, 0, 0, 4,210, 0, 0, 2, 71, 0,171, 0, 43,
- 0, 27, 0, 31, 0, 32, 4,211, 0,150, 4,212, 0,171, 4,213, 0, 46, 0,208, 0, 12, 4,214, 0,152, 4,215, 0, 7, 4,216,
- 0, 7, 4,217, 0, 7, 4,218, 0, 7, 4,219, 0, 4, 2,248, 0, 7, 4,220, 0, 2, 4,221, 0, 2, 4,222, 0, 2, 4,223,
- 0, 2, 4,224, 0, 2, 4,225, 0, 2, 4,226, 0, 2, 4,227, 0, 2, 1,135, 0, 62, 1,156, 0, 9, 4,228, 0,151, 4,229,
- 0,160, 4,230, 0,167, 4,231, 0,158, 0,182, 0,156, 4,232, 0, 39, 0,125, 0, 12, 0,103, 0, 12, 4,233, 0, 2, 4,234,
- 0, 2, 4,235, 0, 2, 4,236, 0, 2, 4,237, 0,172, 4,238, 0, 2, 4,239, 0, 2, 4,240, 0, 2, 1,138, 0, 2, 0,217,
- 0,169, 4,241, 0, 4, 4,242, 0, 4, 0, 37, 0,173, 0, 9, 0, 46, 0,208, 0, 45, 0,255, 0, 7, 2, 3, 0, 7, 2, 4,
- 0, 7, 0,109, 0, 7, 4,243, 0, 7, 4,244, 0, 2, 4,245, 0, 2, 4,246, 0,174, 0, 70, 0,175, 0, 0, 0,175, 0, 1,
- 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0, 7, 4,251, 0, 7, 4,252, 0, 7, 4,253, 0, 7, 4,254,
- 0, 7, 4,255, 0, 7, 5, 0, 0, 7, 5, 1, 0, 7, 1, 16, 0, 7, 5, 2, 0, 4, 5, 3, 0, 2, 5, 4, 0, 2, 4,189,
- 0, 32, 4,211, 0, 32, 5, 5, 0,173, 5, 6, 0,174, 5, 7, 0,177, 5, 8, 0,178, 5, 9, 0,179, 5, 10, 0, 0, 5, 11,
- 0, 2, 3,226, 0, 2, 5, 12, 0, 4, 2,248, 0, 4, 5, 13, 0, 2, 5, 14, 0, 2, 5, 15, 0, 2, 5, 16, 0, 0, 5, 17,
- 0, 0, 0, 43, 0, 7, 0,115, 0, 7, 5, 18, 0, 7, 5, 19, 0, 7, 5, 20, 0, 7, 5, 21, 0, 7, 5, 22, 0, 7, 5, 23,
- 0, 7, 5, 24, 0, 7, 0,174, 0, 7, 4,216, 0, 2, 5, 25, 0, 2, 5, 26, 0, 2, 5, 27, 0, 2, 5, 28, 0, 2, 0,137,
- 0, 2, 4,201, 0, 2, 5, 29, 0, 2, 5, 30, 0, 2, 5, 31, 0, 2, 5, 32, 0, 7, 5, 33, 0, 7, 5, 34, 0, 67, 5, 35,
- 0, 12, 5, 36, 0, 2, 5, 37, 0, 2, 2, 48, 0, 2, 5, 38, 0, 2, 0, 20, 0, 2, 5, 39, 0, 2, 5, 40, 0, 2, 1, 8,
- 0, 0, 5, 41, 0, 0, 5, 42, 0, 9, 5, 43, 0,180, 5, 44, 0,181, 0, 19, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 5, 45,
- 0, 23, 5, 46, 0, 23, 5, 47, 0, 7, 5, 48, 0, 7, 5, 49, 0, 7, 5, 50, 0, 7, 5, 51, 0, 2, 5, 52, 0, 2, 5, 53,
- 0, 2, 5, 54, 0, 2, 5, 55, 0, 2, 5, 56, 0, 2, 5, 57, 0, 4, 0, 20, 0, 7, 5, 58, 0, 2, 5, 15, 0, 0, 2,102,
- 0,175, 0, 6, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0,182, 0, 6,
- 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0,183, 0, 27, 0,175, 0, 0,
- 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0, 4, 5, 59, 0, 4, 0, 70, 0,181, 5, 60,
- 0, 9, 5, 61, 0, 12, 5, 62, 0, 36, 0, 79, 0, 27, 0, 80, 0, 0, 5, 63, 0, 0, 5, 64, 0, 0, 5, 65, 0, 2, 5, 66,
- 0, 2, 5, 67, 0, 2, 5, 68, 0, 2, 5, 69, 0, 2, 0, 65, 0, 2, 0, 46, 0, 2, 0,137, 0, 2, 5, 70, 0, 4, 0, 20,
- 0, 7, 5, 71, 0, 24, 0, 36, 0,184, 0, 29, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249,
- 0,177, 5, 8, 0, 2, 4,250, 0, 2, 5, 72, 0, 2, 5, 73, 0, 2, 5, 74, 0, 2, 5, 75, 0,181, 5, 60, 0, 2, 5, 76,
- 0, 2, 0,137, 0, 2, 5, 67, 0, 2, 5, 77, 0, 9, 5, 78, 0, 2, 4,201, 0, 0, 5, 79, 0, 0, 5, 80, 0, 2, 5, 81,
- 0, 2, 5, 82, 0, 2, 3, 1, 0, 2, 5, 83, 0, 2, 5, 84, 0, 0, 0, 37, 0, 0, 0, 20, 0, 0, 1, 43, 0, 0, 5, 85,
- 0,185, 0, 16, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0,181, 5, 60,
- 0, 7, 2, 3, 0, 7, 2, 4, 0, 2, 5, 76, 0, 2, 0, 37, 0, 2, 5, 86, 0, 2, 5, 87, 0, 4, 0, 20, 0, 7, 4,243,
- 0,180, 5, 44, 0,186, 0, 33, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250,
- 0,187, 5, 88, 0, 4, 5, 89, 0, 0, 5, 90, 0, 0, 5, 91, 0, 0, 5, 92, 0, 2, 0, 18, 0, 2, 5, 93, 0, 2, 0, 20,
- 0, 2, 5, 94, 0, 2, 5, 95, 0, 2, 5, 96, 0, 2, 5, 97, 0, 2, 0, 43, 0, 4, 0, 70, 0, 0, 5, 98, 0,188, 5, 99,
- 0, 2, 5,100, 0, 2, 5,101, 0, 2, 5,102, 0, 2, 0,207, 0, 9, 5,103, 0, 9, 5,104, 0, 9, 5,105, 0, 9, 5,106,
- 0, 9, 5,107, 0, 2, 5,108, 0, 0, 5,109, 0,189, 0, 23, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248,
- 0,176, 4,249, 0, 2, 4,250, 0,181, 5, 60, 0, 12, 5,110, 0, 2, 5, 67, 0, 2, 5,111, 0, 2, 0, 20, 0, 2, 0, 57,
- 0, 9, 5, 78, 0, 12, 5,112, 0,190, 5,113, 0, 0, 5,114, 0,191, 5,115, 0, 4, 5,116, 0, 4, 5,117, 0, 2, 0, 18,
- 0, 2, 5,118, 0, 2, 5,119, 0, 2, 5,120, 0,192, 0, 29, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248,
- 0,176, 4,249, 0, 2, 4,250, 0,181, 5, 60, 0, 46, 2,136, 0, 45, 0,255, 0, 59, 4,191, 0, 2, 1, 9, 0, 2, 0,137,
- 0, 2, 5,121, 0, 2, 5,122, 0, 4, 0, 20, 0, 2, 4,221, 0, 2, 5,123, 0, 2, 5, 70, 0, 2, 5, 67, 0, 7, 4,243,
- 0, 0, 5,124, 0, 0, 5,125, 0, 0, 5,126, 0, 0, 5,127, 0, 7, 2, 3, 0, 7, 2, 4, 0, 7, 5,128, 0, 7, 5,129,
- 0,180, 5, 44, 0,193, 0, 11, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250,
- 0, 2, 0,137, 0, 2, 5, 70, 0, 2, 5,130, 0, 2, 0, 20, 0,181, 5, 60, 0,194, 0, 24, 0,175, 0, 0, 0,175, 0, 1,
- 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0, 42, 5,131, 0, 4, 5,132, 0, 4, 5,133, 0, 2, 0, 93,
- 0, 2, 0,137, 0, 4, 5,134, 0, 4, 5,135, 0, 4, 5,136, 0, 4, 5,137, 0, 4, 5,138, 0, 4, 5,139, 0, 4, 5,140,
- 0, 4, 5,141, 0, 7, 5,142, 0, 23, 5,143, 0, 23, 5,144, 0, 4, 5,145, 0, 4, 5,146, 0,195, 0, 10, 0, 27, 0, 31,
- 0, 9, 5,147, 0, 9, 5,148, 0, 9, 5,149, 0, 9, 5,150, 0, 9, 5,151, 0, 4, 0, 93, 0, 4, 5,152, 0, 0, 5,153,
- 0, 0, 5,154, 0,196, 0, 10, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0,195, 5,155,
- 0, 2, 0, 93, 0, 2, 0,137, 0, 4, 0, 43, 0, 9, 5,156, 0,197, 0, 8, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247,
- 0, 7, 4,248, 0,176, 4,249, 0,181, 5, 60, 0, 4, 0, 20, 0, 4, 5,157, 0,198, 0, 20, 0,175, 0, 0, 0,175, 0, 1,
- 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0,181, 5, 60, 0, 27, 5,158, 0, 27, 0, 80, 0, 2, 0, 20,
- 0, 2, 0,137, 0, 7, 5,159, 0, 9, 5,160, 0, 7, 2, 3, 0, 7, 2, 4, 0, 62, 1,156, 0, 62, 5,161, 0, 4, 5,162,
- 0, 4, 0, 37, 0,180, 5, 44, 0,199, 0, 42, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249,
- 0, 2, 4,250, 0,181, 5, 60, 0,200, 5,163, 0, 0, 5, 90, 0, 0, 5, 91, 0, 0, 5, 92, 0, 2, 0, 18, 0, 2, 5,101,
- 0, 2, 0, 20, 0, 2, 5, 94, 0, 9, 5,160, 0, 4, 5,164, 0, 4, 5,165, 0, 4, 5,166, 0, 4, 5,167, 0, 23, 5,168,
- 0, 23, 5,169, 0, 7, 5,170, 0, 7, 5,171, 0, 7, 5,172, 0, 7, 5,159, 0, 2, 5,100, 0, 2, 0,207, 0, 2, 1, 95,
- 0, 2, 5,173, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 5,174, 0, 2, 5,175, 0, 9, 5,103, 0, 9, 5,104, 0, 9, 5,105,
- 0, 9, 5,106, 0, 9, 5,107, 0, 2, 5,108, 0, 0, 5,109, 0, 56, 5,176, 0,201, 0, 20, 0, 0, 5,177, 0, 0, 5,178,
- 0, 0, 5,179, 0, 0, 5,180, 0, 0, 5,181, 0, 0, 5,182, 0, 0, 5,183, 0, 0, 5,184, 0, 0, 5,185, 0, 0, 5,186,
- 0, 0, 5,187, 0, 0, 5,188, 0, 0, 5,189, 0, 0, 5,190, 0, 0, 5,191, 0, 0, 5,192, 0, 0, 5,193, 0, 0, 5,194,
- 0, 0, 0,181, 0, 0, 5,195, 0,202, 0, 54, 0, 0, 5,196, 0, 0, 5,187, 0, 0, 5,188, 0, 0, 5,197, 0, 0, 5,198,
- 0, 0, 5,199, 0, 0, 5,200, 0, 0, 5,201, 0, 0, 5,202, 0, 0, 5,203, 0, 0, 5,204, 0, 0, 5,205, 0, 0, 5,206,
- 0, 0, 5,207, 0, 0, 5,208, 0, 0, 5,209, 0, 0, 5,210, 0, 0, 5,211, 0, 0, 5,212, 0, 0, 5,213, 0, 0, 5,214,
- 0, 0, 5,215, 0, 0, 5,216, 0, 0, 5,217, 0, 0, 5,218, 0, 0, 5,219, 0, 0, 5,220, 0, 0, 5,221, 0, 0, 5,222,
- 0, 0, 5,223, 0, 0, 5,224, 0, 0, 5,225, 0, 0, 0, 95, 0, 0, 5,226, 0, 0, 5,227, 0, 0, 5,228, 0, 0, 5,229,
- 0, 0, 5,230, 0, 0, 5,231, 0, 0, 5,232, 0, 0, 5,233, 0, 0, 5,234, 0, 0, 5,235, 0, 0, 5,236, 0, 0, 5,237,
- 0, 0, 5,238, 0, 0, 5,239, 0, 0, 5,240, 0, 0, 5,241, 0, 0, 5,242, 0, 0, 5,243, 0, 0, 5,244, 0, 0, 5,245,
- 0, 0, 5,246, 0,203, 0, 5, 0, 0, 5,247, 0, 0, 5,204, 0, 0, 5,206, 0, 2, 0, 20, 0, 2, 0, 37, 0,204, 0, 22,
- 0,204, 0, 0, 0,204, 0, 1, 0, 0, 0, 17, 0,201, 5,248, 0,202, 5,249, 0,202, 5,250, 0,202, 5,251, 0,202, 5,252,
- 0,202, 5,253, 0,202, 5,254, 0,202, 5,255, 0,202, 6, 0, 0,202, 6, 1, 0,202, 6, 2, 0,202, 6, 3, 0,202, 6, 4,
- 0,202, 6, 5, 0,202, 6, 6, 0,202, 6, 7, 0,203, 6, 8, 0, 0, 6, 9, 0, 0, 6, 10, 0,205, 0, 5, 0, 4, 0, 20,
- 0, 4, 0, 37, 0, 7, 2, 47, 0, 7, 6, 11, 0, 7, 1,221, 0,206, 0, 65, 0, 4, 0, 20, 0, 4, 6, 12, 0, 4, 6, 13,
- 0, 0, 6, 14, 0, 0, 6, 15, 0, 0, 6, 16, 0, 0, 6, 17, 0, 0, 6, 18, 0, 0, 6, 19, 0, 0, 6, 20, 0, 0, 6, 21,
- 0, 0, 6, 22, 0, 2, 6, 23, 0, 2, 6, 24, 0, 4, 6, 25, 0, 4, 6, 26, 0, 4, 6, 27, 0, 4, 6, 28, 0, 2, 6, 29,
- 0, 2, 6, 30, 0, 2, 6, 31, 0, 2, 6, 32, 0, 4, 6, 33, 0, 4, 6, 34, 0, 2, 6, 35, 0, 2, 6, 36, 0, 2, 6, 37,
- 0, 2, 6, 38, 0, 0, 6, 39, 0, 12, 6, 40, 0, 2, 6, 41, 0, 2, 6, 42, 0, 2, 6, 43, 0, 2, 6, 44, 0, 2, 0, 37,
- 0, 2, 6, 45, 0, 2, 6, 46, 0, 2, 6, 47, 0,205, 6, 48, 0, 2, 6, 49, 0, 2, 6, 50, 0, 2, 6, 51, 0, 2, 6, 52,
- 0, 4, 6, 53, 0, 4, 6, 54, 0, 4, 6, 55, 0, 4, 6, 56, 0, 2, 6, 57, 0, 2, 6, 58, 0, 2, 6, 59, 0, 2, 6, 60,
- 0, 2, 6, 61, 0, 2, 6, 62, 0, 2, 6, 63, 0, 2, 6, 64, 0, 2, 6, 65, 0, 2, 6, 66, 0, 2, 6, 67, 0, 0, 6, 68,
- 0, 0, 6, 69, 0, 0, 6, 70, 0, 7, 6, 71, 0, 2, 6, 72, 0, 2, 6, 73, 0, 54, 6, 74, 0,207, 0, 18, 0, 27, 0, 31,
- 0, 12, 6, 75, 0, 12, 6, 76, 0, 12, 6, 77, 0,171, 6, 78, 0, 2, 2,145, 0, 2, 6, 79, 0, 2, 2,146, 0, 2, 6, 80,
- 0, 2, 6, 81, 0, 2, 6, 82, 0, 2, 6, 83, 0, 2, 6, 84, 0, 2, 6, 85, 0, 2, 0, 37, 0, 2, 6, 86, 0, 2, 6, 87,
- 0, 2, 6, 88, 0,208, 0, 5, 0,208, 0, 0, 0,208, 0, 1, 0,208, 6, 89, 0, 13, 6, 90, 0, 4, 0, 20, 0,209, 0, 7,
- 0,209, 0, 0, 0,209, 0, 1, 0,208, 6, 91, 0,208, 6, 92, 0, 2, 4, 63, 0, 2, 0, 20, 0, 4, 0, 37, 0,210, 0, 17,
- 0,210, 0, 0, 0,210, 0, 1, 0, 0, 6, 93, 0, 0, 6, 94, 0, 0, 6, 95, 0, 2, 6, 96, 0, 2, 6, 97, 0, 2, 6, 81,
- 0, 2, 6, 82, 0, 2, 0, 20, 0, 2, 3, 55, 0, 2, 6, 98, 0, 2, 6, 99, 0, 2, 6,100, 0, 2, 6,101, 0, 4, 6,102,
- 0,210, 6,103, 0,176, 0, 30, 0,176, 0, 0, 0,176, 0, 1, 0,208, 6, 91, 0,208, 6, 92, 0,208, 6,104, 0,208, 6,105,
- 0,207, 6,106, 0, 7, 6,107, 0, 23, 0, 52, 0, 23, 6,108, 0, 23, 6,109, 0, 2, 6,110, 0, 2, 6,111, 0, 2, 6,112,
- 0, 0, 4,247, 0, 0, 6,113, 0, 2, 6,114, 0, 2, 6,115, 0, 0, 6,116, 0, 0, 6,117, 0, 0, 6,118, 0, 0, 6,119,
- 0, 2, 6,120, 0, 2, 6,121, 0, 2, 6,122, 0, 2, 0, 20, 0, 39, 0,125, 0, 12, 6,123, 0, 12, 6,124, 0, 12, 6,125,
- 0,211, 0, 11, 0, 0, 6,126, 0, 2, 6,127, 0, 2, 6,128, 0, 2, 6,129, 0, 2, 6,130, 0, 2, 6,131, 0, 2, 4, 47,
- 0, 9, 6,132, 0, 9, 6,133, 0, 4, 6,134, 0, 4, 6,135, 0,212, 0, 1, 0, 0, 6,136, 0,213, 0, 8, 0, 56, 6,137,
- 0, 56, 6,138, 0,213, 6,139, 0,213, 6,140, 0,213, 6,141, 0, 2, 0,133, 0, 2, 0, 20, 0, 4, 6,142, 0,214, 0, 4,
- 0, 4, 5,132, 0, 4, 6,143, 0, 4, 5,136, 0, 4, 6,144, 0,215, 0, 2, 0, 4, 6,145, 0, 4, 6,146, 0,216, 0, 7,
- 0, 7, 6,147, 0, 7, 6,148, 0, 7, 6,149, 0, 4, 0, 20, 0, 4, 0, 37, 0, 7, 3,182, 0, 7, 6,150, 0,217, 0, 1,
- 0, 0, 6,151, 0,218, 0, 21, 0,218, 0, 0, 0,218, 0, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 6,152,
- 0, 4, 6,153, 0, 4, 6,154, 0,212, 6,155, 0, 0, 6,151, 0, 4, 6,156, 0, 4, 6,157, 0,217, 2,233, 0,214, 6,158,
- 0,215, 6,159, 0,216, 6,160, 0,213, 6,161, 0,213, 6,162, 0,213, 6,163, 0, 56, 6,164, 0, 56, 6,165, 0,219, 0, 12,
- 0, 0, 1,184, 0, 9, 0,193, 0, 0, 0,194, 0, 4, 0,197, 0, 4, 0,205, 0, 9, 0,198, 0, 7, 0,200, 0, 7, 0,201,
- 0, 9, 6,166, 0, 9, 6,167, 0, 9, 0,202, 0, 9, 0,204, 0,220, 0, 45, 0,220, 0, 0, 0,220, 0, 1, 0, 9, 6,168,
- 0, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 20, 0, 4, 0, 18, 0, 4, 0, 23, 0, 4, 0, 91, 0, 4, 6,169, 0, 4, 6,170,
- 0, 4, 6,153, 0, 4, 6,154, 0, 4, 6,171, 0, 4, 0,216, 0, 4, 6,172, 0, 4, 6,173, 0, 7, 6,174, 0, 7, 6,175,
- 0, 4, 0,130, 0, 4, 6,176, 0,218, 6,177, 0, 36, 0, 79, 0,171, 6, 78, 0, 48, 0,140, 0, 7, 6,178, 0, 7, 6,179,
- 0,219, 1, 0, 0,220, 6,180, 0,220, 6,181, 0,220, 6,182, 0, 12, 6,183, 0,221, 6,184, 0,222, 6,185, 0, 7, 6,186,
- 0, 7, 6,187, 0, 4, 6,188, 0, 7, 6,189, 0, 9, 6,190, 0, 4, 6,191, 0, 4, 6,192, 0, 4, 6,193, 0, 7, 6,194,
- 0, 4, 6, 83, 0, 4, 0, 37, 0,223, 0, 4, 0,223, 0, 0, 0,223, 0, 1, 0, 12, 6,195, 0,220, 6,196, 0,224, 0, 6,
- 0, 12, 6,197, 0, 12, 6,183, 0, 12, 6,198, 0, 2, 0, 20, 0, 2, 0, 37, 0, 4, 0, 57, 0,225, 0, 4, 0, 7, 6,199,
- 0, 7, 0,112, 0, 2, 6,200, 0, 2, 6,201, 0,226, 0, 6, 0, 7, 6,202, 0, 7, 6,203, 0, 7, 6,204, 0, 7, 6,205,
- 0, 4, 6,206, 0, 4, 6,207, 0,227, 0, 12, 0, 7, 6,208, 0, 7, 6,209, 0, 7, 6,210, 0, 7, 6,211, 0, 7, 6,212,
- 0, 7, 6,213, 0, 7, 6,214, 0, 7, 6,215, 0, 7, 6,216, 0, 7, 6,217, 0, 4, 2,140, 0, 4, 6,218, 0,228, 0, 2,
- 0, 7, 4,132, 0, 7, 0, 37, 0,229, 0, 5, 0, 7, 6,219, 0, 7, 6,220, 0, 4, 0, 93, 0, 4, 2,103, 0, 4, 6,221,
- 0,230, 0, 6, 0,230, 0, 0, 0,230, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 6,222, 0, 2, 0, 57, 0,231, 0, 8,
- 0,231, 0, 0, 0,231, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 6,222, 0, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,130,
- 0,232, 0, 45, 0,232, 0, 0, 0,232, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 6,222, 0, 2, 0,212, 0, 2, 3,107,
- 0, 2, 6,223, 0, 7, 6,224, 0, 7, 0, 92, 0, 7, 2,153, 0, 4, 6,225, 0, 4, 0, 81, 0, 4, 2,105, 0, 7, 6,226,
- 0, 7, 6,227, 0, 7, 6,228, 0, 7, 6,229, 0, 7, 6,230, 0, 7, 6,231, 0, 7, 2,150, 0, 7, 0,254, 0, 7, 6,232,
- 0, 7, 6,233, 0, 7, 0, 37, 0, 7, 6,234, 0, 7, 6,235, 0, 7, 6,236, 0, 2, 6,237, 0, 2, 6,238, 0, 2, 6,239,
- 0, 2, 6,240, 0, 2, 6,241, 0, 2, 6,242, 0, 2, 6,243, 0, 2, 6,244, 0, 2, 5, 39, 0, 2, 6,245, 0, 2, 1,205,
- 0, 2, 6,246, 0, 0, 6,247, 0, 0, 6,248, 0, 7, 0,210, 0,233, 6,249, 0, 63, 1,157, 0,234, 0, 16, 0,234, 0, 0,
- 0,234, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 6,222, 0, 2, 0,212, 0, 7, 2,145, 0, 7, 2,146, 0, 7, 2,147,
- 0, 7, 1,246, 0, 7, 2,148, 0, 7, 2,149, 0, 7, 6,250, 0, 7, 2,150, 0, 7, 2,152, 0, 7, 2,153, 0,191, 0, 5,
- 0, 2, 0, 18, 0, 2, 6,142, 0, 2, 0, 20, 0, 2, 6,251, 0, 27, 5,158, 0,190, 0, 3, 0, 4, 0, 69, 0, 4, 6,252,
- 0,191, 0, 2, 0,235, 0, 12, 0,235, 0, 0, 0,235, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 3, 17, 0, 2, 1,220,
- 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 6,253, 0, 7, 6,254, 0, 27, 5,158, 0, 12, 6,255, 0,236, 0, 11, 0,236, 0, 0,
- 0,236, 0, 1, 0, 0, 0, 17, 0, 2, 0, 18, 0, 2, 7, 0, 0, 4, 0, 22, 0, 4, 7, 1, 0, 2, 0, 20, 0, 2, 0, 37,
- 0, 9, 7, 2, 0, 9, 7, 3, 0,237, 0, 5, 0, 0, 0, 17, 0, 7, 1, 16, 0, 7, 7, 4, 0, 4, 7, 5, 0, 4, 0, 37,
- 0,238, 0, 4, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 0, 43, 0, 2, 0, 70, 0,239, 0, 4, 0, 0, 0, 17, 0, 61, 7, 6,
- 0, 7, 1, 16, 0, 7, 0, 37, 0,240, 0, 6, 0, 2, 7, 7, 0, 2, 7, 8, 0, 2, 0, 18, 0, 2, 7, 9, 0, 0, 7, 10,
- 0, 0, 7, 11, 0,241, 0, 5, 0, 4, 0, 18, 0, 4, 0, 37, 0, 0, 0, 17, 0, 0, 7, 12, 0, 0, 7, 13, 0,242, 0, 3,
- 0, 4, 0, 18, 0, 4, 0, 37, 0, 0, 0, 17, 0,243, 0, 4, 0, 2, 7, 14, 0, 2, 7, 15, 0, 2, 0, 20, 0, 2, 0, 37,
- 0,244, 0, 6, 0, 0, 0, 17, 0, 0, 7, 16, 0, 2, 7, 17, 0, 2, 2,150, 0, 2, 1, 9, 0, 2, 0, 70, 0,245, 0, 5,
- 0, 0, 0, 17, 0, 7, 0,112, 0, 7, 3,184, 0, 2, 0, 20, 0, 2, 2,116, 0,246, 0, 3, 0, 0, 0, 17, 0, 4, 2,105,
- 0, 4, 7, 14, 0,247, 0, 7, 0, 0, 0, 17, 0, 7, 3,184, 0, 0, 7, 18, 0, 0, 7, 19, 0, 2, 1, 9, 0, 2, 0, 43,
- 0, 4, 7, 20, 0,248, 0, 3, 0, 32, 7, 21, 0, 0, 7, 22, 0, 0, 7, 23, 0,249, 0, 17, 0,249, 0, 0, 0,249, 0, 1,
- 0, 2, 0, 18, 0, 2, 7, 0, 0, 2, 0, 20, 0, 2, 7, 24, 0, 2, 7, 25, 0, 2, 7, 26, 0, 2, 0, 43, 0, 2, 0, 70,
- 0, 0, 0, 17, 0, 9, 0, 2, 0,250, 7, 27, 0, 32, 0, 45, 0, 2, 4,138, 0, 2, 6,186, 0, 4, 0, 37, 0,251, 0, 10,
- 0, 0, 0, 17, 0, 2, 0, 18, 0, 2, 7, 28, 0, 4, 2,116, 0, 4, 7, 29, 0, 4, 7, 30, 0, 4, 7, 31, 0, 4, 7, 32,
- 0, 4, 7, 33, 0, 4, 7, 34, 0,252, 0, 1, 0, 0, 7, 35, 0,253, 0, 1, 0, 42, 5,131, 0,250, 0, 18, 0,250, 0, 0,
- 0,250, 0, 1, 0,250, 7, 36, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 7, 37, 0, 2, 7, 26, 0, 2, 7, 0, 0, 2, 7, 38,
- 0, 2, 0, 70, 0, 2, 1, 8, 0, 0, 0, 17, 0, 9, 0, 2, 0,254, 7, 27, 0,249, 7, 39, 0, 2, 0, 15, 0, 2, 7, 40,
- 0, 4, 7, 41, 0,255, 0, 3, 0, 4, 2,176, 0, 4, 0, 37, 0, 32, 0, 45, 1, 0, 0, 12, 0,139, 7, 42, 0, 2, 0, 18,
- 0, 2, 0, 20, 0, 4, 6,224, 0, 4, 0, 92, 0, 0, 0, 17, 0, 0, 7, 43, 0, 2, 7, 44, 0, 2, 7, 45, 0, 2, 7, 46,
- 0, 2, 7, 47, 0, 7, 7, 48, 1, 1, 0, 10, 0, 2, 0, 20, 0, 2, 7, 49, 0, 4, 6,224, 0, 4, 0, 92, 0, 2, 7, 50,
- 0,221, 6,184, 0, 2, 0, 18, 0, 2, 7, 51, 0, 2, 7, 52, 0, 2, 7, 53, 1, 2, 0, 7, 0, 2, 0, 20, 0, 2, 7, 49,
- 0, 4, 6,224, 0, 4, 0, 92, 0, 2, 0, 18, 0, 2, 7, 54, 0, 7, 7, 55, 1, 3, 0, 11, 0, 4, 2,176, 0, 2, 0, 18,
- 0, 2, 0, 20, 0, 32, 0, 45, 0, 74, 7, 56, 0, 0, 0, 17, 0, 7, 7, 57, 0, 7, 7, 58, 0, 7, 0, 37, 0, 2, 7, 59,
- 0, 2, 7, 60, 1, 4, 0, 5, 0, 2, 0, 18, 0, 2, 0, 20, 0, 4, 0, 37, 0,171, 6, 78, 0, 32, 4,211, 1, 5, 0, 5,
- 0, 4, 0, 20, 0, 4, 0, 18, 0, 0, 0, 17, 0, 0, 7, 12, 0, 32, 0, 45, 1, 6, 0, 12, 0, 2, 0, 20, 0, 2, 0, 18,
- 0, 2, 7, 0, 0, 2, 3, 11, 0, 7, 7, 61, 0, 7, 7, 62, 0, 7, 1, 3, 0, 7, 1, 4, 0, 7, 2,242, 0, 7, 2,245,
- 0, 7, 7, 63, 0, 7, 7, 64, 1, 7, 0, 9, 0, 2, 0, 20, 0, 2, 0, 18, 0, 4, 6,224, 0, 4, 0, 92, 0, 0, 0, 17,
- 0, 2, 0, 43, 0, 2, 0, 64, 0, 2, 7, 65, 0, 2, 7, 66, 1, 8, 0, 8, 0, 32, 0, 45, 0, 7, 2,147, 0, 7, 7, 67,
- 0, 7, 7, 68, 0, 7, 2,142, 0, 2, 0, 20, 0, 2, 2,116, 0, 7, 7, 69, 1, 9, 0, 12, 0, 2, 0, 18, 0, 2, 1, 9,
- 0, 2, 0, 20, 0, 2, 2,150, 0, 2, 2,176, 0, 2, 7, 70, 0, 4, 0, 37, 0, 7, 7, 71, 0, 7, 7, 72, 0, 7, 7, 73,
- 0, 7, 7, 74, 0, 0, 7, 75, 1, 10, 0, 10, 0, 2, 0, 20, 0, 2, 0, 18, 0, 4, 6,224, 0, 4, 0, 92, 0, 0, 0, 17,
- 0, 2, 0,181, 0, 2, 0, 64, 0, 2, 7, 65, 0, 2, 7, 66, 0, 63, 1,157, 1, 11, 0, 7, 0, 4, 2,105, 0, 4, 7, 76,
- 0, 4, 7, 77, 0, 4, 7, 78, 0, 7, 7, 79, 0, 7, 7, 80, 0, 0, 7, 18, 1, 12, 0, 7, 0, 0, 7, 81, 0, 32, 7, 82,
- 0, 0, 7, 22, 0, 2, 7, 83, 0, 2, 0, 43, 0, 4, 0, 70, 0, 0, 7, 23, 1, 13, 0, 6, 0, 2, 0, 20, 0, 2, 0, 18,
- 0, 4, 6,224, 0, 4, 0, 92, 0, 0, 7, 84, 0, 0, 7, 85, 1, 14, 0, 1, 0, 4, 0, 20, 1, 15, 0, 6, 0, 0, 0, 95,
- 0, 2, 0, 18, 0, 2, 0, 20, 0, 4, 7, 86, 0, 7, 7, 87, 0, 42, 5,131, 1, 16, 0, 3, 0, 0, 0, 95, 0, 4, 0, 18,
- 0, 32, 0, 45, 1, 17, 0, 2, 0, 4, 0, 18, 0, 4, 5, 47, 0,254, 0, 10, 0,254, 0, 0, 0,254, 0, 1, 0,254, 7, 36,
- 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 7, 0, 0, 2, 7, 88, 0, 0, 0, 17, 0, 9, 0, 2, 0, 32, 0, 45, 1, 18, 0, 10,
- 0, 7, 3, 10, 0, 7, 7, 89, 0, 7, 7, 90, 0, 7, 7, 91, 0, 7, 7, 92, 0, 4, 0, 20, 0, 7, 7, 70, 0, 7, 7, 93,
- 0, 7, 7, 94, 0, 7, 0, 37, 0,221, 0, 20, 0, 27, 0, 31, 0, 0, 0,192, 1, 19, 7, 95, 0, 9, 7, 96, 0, 43, 0,152,
- 0, 43, 7, 97, 0, 9, 7, 98, 0, 36, 0, 79, 0, 7, 7, 55, 0, 7, 7, 99, 0, 7, 7,100, 0, 7, 7,101, 0, 7, 7,102,
- 0, 7, 7,103, 0, 7, 7,104, 0, 4, 0, 93, 0, 4, 7,105, 0, 0, 7,106, 0, 0, 7,107, 0, 0, 7,108, 1, 20, 0, 6,
- 0, 27, 0, 31, 0, 7, 7,109, 0, 7, 7,110, 0, 7, 7,111, 0, 2, 7,112, 0, 2, 7,113, 1, 21, 0, 14, 0,175, 0, 0,
- 0,175, 0, 1, 0, 4, 4,247, 0, 7, 4,248, 0,176, 4,249, 0,181, 5, 60, 0,221, 6,184, 0, 2, 1, 9, 0, 2, 7, 49,
- 0, 2, 2, 3, 0, 2, 2, 4, 0, 2, 0, 20, 0, 2, 5, 70, 0, 4, 0, 70, 1, 22, 0, 6, 1, 22, 0, 0, 1, 22, 0, 1,
- 0, 32, 0, 45, 0, 9, 7,114, 0, 4, 0,217, 0, 4, 0, 37, 0, 63, 0, 4, 0, 27, 0, 31, 0, 12, 7,115, 0, 4, 0,135,
- 0, 7, 7,116, 1, 23, 0, 25, 1, 23, 0, 0, 1, 23, 0, 1, 1, 23, 0, 38, 0, 12, 7,117, 0, 0, 0, 17, 0, 7, 7,118,
- 0, 7, 7,119, 0, 7, 7,120, 0, 7, 7,121, 0, 4, 0, 20, 0, 7, 7,122, 0, 7, 7,123, 0, 7, 7,124, 0, 7, 1, 16,
- 0, 7, 1,213, 0, 7, 7,125, 0, 7, 2,103, 0, 7, 7,126, 0, 7, 7,127, 0, 7, 7,128, 0, 7, 7,129, 0, 7, 7,130,
- 0, 7, 0,175, 0, 2, 0,135, 0, 2, 4,154, 1, 24, 0, 19, 0, 27, 0, 31, 0, 12, 7,131, 0, 12, 7,132, 0, 4, 0, 20,
- 0, 4, 3,226, 0, 2, 2,154, 0, 2, 7,133, 0, 2, 0,135, 0, 2, 7,134, 0, 2, 7,135, 0, 2, 7,136, 0, 2, 7,137,
- 0, 2, 7,138, 0, 4, 7,139, 0, 4, 7,140, 0, 4, 7,141, 0, 4, 7,142, 0, 4, 7,143, 0, 4, 7,144, 1, 25, 0, 34,
- 1, 25, 0, 0, 1, 25, 0, 1, 0, 12, 3, 34, 0, 0, 0, 17, 0, 2, 0, 20, 0, 2, 7,145, 0, 2, 7,146, 0, 2, 7,147,
- 0, 2, 2,255, 0, 2, 7,148, 0, 4, 1,244, 0, 4, 7,141, 0, 4, 7,142, 1, 23, 7,149, 1, 25, 0, 38, 1, 25, 7,150,
- 0, 12, 7,151, 0, 9, 7,152, 0, 9, 7,153, 0, 9, 7,154, 0, 7, 1, 3, 0, 7, 0,175, 0, 7, 1,195, 0, 7, 7,155,
- 0, 7, 7,156, 0, 7, 2,247, 0, 7, 7,157, 0, 7, 7,158, 0, 7, 7,159, 0, 7, 7,160, 0, 7, 7,161, 0, 7, 7,162,
- 0, 7, 1,241, 0, 32, 7,163, 0,140, 0, 9, 0, 12, 7,164, 0, 2, 0, 20, 0, 2, 7,165, 0, 7, 3, 9, 0, 7, 7,166,
- 0, 7, 7,167, 0, 12, 7,168, 0, 4, 7,169, 0, 4, 0, 37, 1, 26, 0, 7, 1, 26, 0, 0, 1, 26, 0, 1, 0, 12, 7,106,
- 0, 4, 0, 20, 0, 4, 7,170, 0, 0, 0, 17, 0,203, 7,171, 1, 27, 0, 8, 1, 27, 0, 0, 1, 27, 0, 1, 1, 26, 7,172,
- 0, 36, 0, 79, 0, 12, 2,239, 0, 4, 0, 20, 0, 0, 0, 17, 0, 4, 7,173, 0,139, 0, 6, 0, 27, 0, 31, 0, 12, 7,164,
- 0, 12, 7,174, 0, 12, 0,103, 0, 4, 7,175, 0, 4, 0, 37, 1, 28, 0, 16, 0,175, 0, 0, 0,175, 0, 1, 0, 4, 4,247,
- 0, 7, 4,248, 0,176, 4,249, 0, 2, 4,250, 0,181, 5, 60, 0,139, 2,236, 0, 0, 1, 9, 0, 0, 5,130, 0, 2, 0, 20,
- 0, 2, 7,176, 0, 2, 5, 67, 0, 2, 5, 70, 0, 2, 7,177, 0, 7, 7,178, 1, 29, 0, 5, 1, 29, 0, 0, 1, 29, 0, 1,
- 0, 36, 0, 79, 0, 2, 0, 20, 0, 0, 7,179, 1, 30, 0, 12, 1, 30, 0, 0, 1, 30, 0, 1, 0, 9, 0, 2, 0, 2, 0, 18,
- 0, 2, 0, 20, 0, 0, 7,180, 0, 0, 7,181, 0, 0, 7,179, 0, 7, 7,182, 0, 7, 7,183, 0, 4, 0, 37, 0, 36, 0, 79,
- 1, 31, 0, 9, 1, 31, 0, 0, 1, 31, 0, 1, 0, 32, 7,184, 0, 0, 7,185, 0, 7, 7,186, 0, 2, 7,187, 0, 2, 0, 20,
- 0, 2, 0, 18, 0, 2, 0, 37, 1, 32, 0, 7, 0, 42, 5,131, 0, 26, 7,188, 0, 4, 0, 20, 0, 4, 7,189, 0, 12, 7,190,
- 0, 32, 7,184, 0, 0, 7,185, 1, 33, 0, 12, 0, 32, 7,184, 0, 2, 7,191, 0, 2, 0, 20, 0, 2, 7,192, 0, 2, 7,193,
- 0, 0, 7,185, 0, 32, 7,194, 0, 0, 7,195, 0, 7, 7,196, 0, 7, 1,213, 0, 7, 7,197, 0, 7, 7,198, 1, 34, 0, 6,
- 0, 32, 7,184, 0, 4, 7,173, 0, 4, 7,199, 0, 4, 0, 93, 0, 4, 0, 37, 0, 0, 7,185, 1, 35, 0, 4, 0, 32, 7,184,
- 0, 4, 0, 20, 0, 4, 7,173, 0, 0, 7,185, 1, 36, 0, 4, 0, 32, 7,184, 0, 4, 0, 20, 0, 4, 7,173, 0, 0, 7,185,
- 1, 37, 0, 10, 0, 32, 7,184, 0, 4, 7,200, 0, 7, 0,129, 0, 4, 0, 20, 0, 2, 5,125, 0, 2, 7,201, 0, 2, 0, 43,
- 0, 2, 0, 70, 0, 7, 7,202, 0, 0, 7,185, 1, 38, 0, 4, 0, 32, 7,184, 0, 4, 0, 20, 0, 4, 7,173, 0, 0, 7,185,
- 1, 39, 0, 10, 0, 32, 7,184, 0, 2, 0, 18, 0, 2, 3,113, 0, 4, 0, 91, 0, 4, 0, 92, 0, 7, 7, 67, 0, 7, 7, 68,
- 0, 4, 0, 37, 0,139, 7, 42, 0, 0, 7,185, 1, 40, 0, 4, 0, 32, 7,184, 0, 4, 2,252, 0, 4, 7,203, 0, 0, 7,185,
- 1, 41, 0, 5, 0, 32, 7,184, 0, 7, 0,129, 0, 4, 7,204, 0, 4, 2,252, 0, 4, 2,253, 1, 42, 0, 6, 0, 32, 7,184,
- 0, 4, 7,205, 0, 4, 7,206, 0, 7, 7,207, 0, 7, 7,208, 0, 0, 7,185, 1, 43, 0, 16, 0, 32, 7,184, 0, 32, 7,150,
- 0, 4, 0, 18, 0, 7, 7,209, 0, 7, 7,210, 0, 7, 7,211, 0, 7, 7,212, 0, 7, 7,213, 0, 7, 7,214, 0, 7, 7,215,
- 0, 7, 7,216, 0, 7, 7,217, 0, 2, 0, 20, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 1, 44, 0, 3, 0, 32, 7,184,
- 0, 4, 0, 20, 0, 4, 5, 39, 1, 45, 0, 5, 0, 32, 7,184, 0, 4, 0, 20, 0, 4, 0, 37, 0, 7, 7,218, 0, 0, 7,185,
- 1, 46, 0, 10, 0, 32, 7,184, 0, 0, 7,185, 0, 2, 7,219, 0, 2, 7,220, 0, 0, 7,221, 0, 0, 7,222, 0, 7, 7,223,
- 0, 7, 7,224, 0, 7, 7,225, 0, 7, 7,226, 1, 47, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12,
- 0, 7, 7,227, 0, 7, 7,228, 0, 2, 0, 20, 0, 2, 5, 39, 1, 48, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11,
- 0, 7, 0, 12, 0, 7, 7,227, 0, 7, 7,228, 0, 2, 0, 20, 0, 2, 5, 39, 1, 49, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10,
- 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 7,227, 0, 7, 7,228, 0, 2, 0, 20, 0, 2, 5, 39, 1, 50, 0, 7, 0, 32, 7,184,
- 0, 0, 7,185, 0, 7, 1, 16, 0, 7, 1, 26, 0, 2, 0, 20, 0, 2, 1, 9, 0, 4, 0, 37, 1, 51, 0, 10, 1, 51, 0, 0,
- 1, 51, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 0, 7,229, 0, 7, 0,219, 0, 7, 0,220, 0, 2, 7,106, 0, 2, 7,230,
- 0, 32, 0, 45, 1, 52, 0, 22, 1, 52, 0, 0, 1, 52, 0, 1, 0, 2, 0, 20, 0, 2, 1, 9, 0, 2, 7,231, 0, 2, 7,232,
- 0, 36, 0, 79, 0,139, 7, 42, 0, 32, 0,167, 0, 7, 0, 91, 0, 7, 0, 92, 0, 7, 7,233, 0, 7, 7,234, 0, 7, 7,235,
- 0, 7, 7,236, 0, 7, 2,143, 0, 7, 1,185, 0, 7, 7, 44, 0, 7, 7,237, 0, 0, 7,238, 0, 0, 7,239, 0, 12, 2,241,
- 1, 53, 0, 8, 0, 7, 1,221, 0, 7, 7, 67, 0, 7, 7, 68, 0, 9, 0, 2, 0, 2, 7,240, 0, 2, 7,241, 0, 2, 7,242,
- 0, 2, 7,243, 1, 54, 0, 18, 1, 54, 0, 0, 1, 54, 0, 1, 1, 54, 7,244, 0, 0, 0, 17, 1, 53, 7,245, 0, 2, 0, 18,
- 0, 2, 0, 20, 0, 2, 7,246, 0, 2, 7,247, 0, 2, 7,248, 0, 2, 7,249, 0, 4, 0, 43, 0, 7, 7,250, 0, 7, 7,251,
- 0, 4, 7,252, 0, 4, 7,253, 1, 54, 7,254, 1, 55, 7,255, 1, 56, 0, 30, 1, 56, 0, 0, 1, 56, 0, 1, 1, 56, 8, 0,
- 0, 0, 0, 17, 0, 0, 8, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 6,152, 0, 2, 6,186, 0, 2, 8, 2, 0, 2, 0,137,
- 0, 2, 7,247, 0, 2, 6,142, 0, 12, 7, 37, 0, 12, 8, 3, 0, 27, 5,158, 0, 9, 8, 4, 0, 7, 7,250, 0, 7, 7,251,
- 0, 7, 1,246, 0, 7, 8, 5, 0, 2, 8, 6, 0, 2, 8, 7, 0, 2, 8, 8, 0, 2, 8, 9, 0, 24, 8, 10, 0, 24, 8, 11,
- 0, 24, 8, 12, 1, 57, 0,153, 1, 58, 8, 13, 1, 55, 0, 6, 1, 55, 0, 0, 1, 55, 0, 1, 1, 56, 8, 14, 1, 56, 8, 15,
- 1, 54, 8, 16, 1, 54, 7,254, 0, 62, 0, 16, 0, 27, 0, 31, 0, 12, 8, 17, 0, 12, 8, 18, 1, 53, 8, 19, 0, 12, 8, 20,
- 0, 4, 0, 18, 0, 4, 8, 21, 0, 4, 8, 22, 0, 4, 8, 23, 0, 12, 8, 24, 1, 58, 8, 25, 1, 54, 8, 26, 1, 54, 8, 27,
- 0, 9, 8, 28, 0, 9, 8, 29, 0, 4, 8, 30, 1, 59, 0, 6, 0, 4, 0,128, 0, 4, 0,130, 0, 4, 6,142, 0, 0, 8, 31,
- 0, 0, 8, 32, 0, 2, 0, 37, 1, 60, 0, 16, 0, 2, 6, 81, 0, 2, 6, 82, 0, 2, 8, 33, 0, 2, 7, 90, 0, 2, 8, 34,
- 0, 2, 0, 68, 0, 7, 2,142, 0, 7, 8, 35, 0, 7, 8, 36, 0, 2, 1, 30, 0, 0, 8, 37, 0, 0, 3,238, 0, 2, 8, 38,
- 0, 2, 0, 37, 0, 4, 8, 39, 0, 4, 8, 40, 1, 61, 0, 9, 0, 7, 8, 41, 0, 7, 8, 42, 0, 7, 7,104, 0, 7, 0,112,
- 0, 7, 8, 43, 0, 7, 4,243, 0, 2, 8, 44, 0, 0, 8, 45, 0, 0, 0, 37, 1, 62, 0, 4, 0, 7, 8, 46, 0, 7, 8, 47,
- 0, 2, 8, 44, 0, 2, 0, 37, 1, 63, 0, 3, 0, 7, 8, 48, 0, 7, 8, 49, 0, 7, 0, 15, 1, 64, 0, 7, 0, 0, 1,184,
- 0, 2, 4, 49, 0, 2, 4, 50, 0, 2, 4, 51, 0, 2, 4, 2, 0, 4, 0,130, 0, 4, 3,111, 1, 65, 0, 7, 0, 7, 8, 50,
- 0, 7, 8, 51, 0, 7, 8, 52, 0, 7, 1,255, 0, 7, 8, 53, 0, 7, 8, 54, 0, 7, 8, 55, 1, 66, 0, 4, 0, 2, 8, 56,
- 0, 2, 8, 57, 0, 2, 8, 58, 0, 2, 8, 59, 1, 67, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 1, 68, 0, 2, 0, 0, 0,169,
- 0, 0, 8, 60, 1, 69, 0, 1, 0, 0, 0, 17, 1, 70, 0, 10, 0, 0, 8, 61, 0, 0, 8, 62, 0, 0, 8, 63, 0, 0, 8, 64,
- 0, 2, 8, 33, 0, 2, 8, 65, 0, 7, 8, 66, 0, 7, 8, 67, 0, 7, 8, 68, 0, 7, 1,185, 1, 71, 0, 2, 0, 9, 8, 69,
- 0, 9, 8, 70, 1, 72, 0, 11, 0, 0, 4, 51, 0, 0, 0, 18, 0, 0, 8, 44, 0, 0, 0,112, 0, 0, 8, 71, 0, 0, 0,109,
- 0, 0, 2, 71, 0, 7, 8, 72, 0, 7, 8, 73, 0, 7, 8, 74, 0, 7, 8, 75, 1, 73, 0, 8, 0, 7, 7, 7, 0, 7, 0,129,
- 0, 7, 3,238, 0, 7, 2, 66, 0, 7, 8, 76, 0, 7, 0,206, 0, 7, 8, 77, 0, 4, 0, 18, 1, 74, 0, 4, 0, 2, 8, 78,
- 0, 2, 8, 79, 0, 2, 8, 80, 0, 2, 0, 37, 1, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 20, 0, 2, 8, 81,
- 1, 76, 0, 10, 0, 2, 3, 93, 0, 2, 0, 20, 0, 7, 3,184, 0, 7, 8, 82, 0, 7, 8, 83, 0, 7, 8, 84, 0, 7, 8, 85,
- 1, 75, 8, 86, 1, 75, 8, 87, 1, 75, 8, 88, 0, 59, 0, 9, 0, 4, 0, 20, 0, 4, 0, 64, 0, 24, 8, 89, 0, 24, 8, 90,
- 1, 76, 8, 91, 0, 7, 8, 92, 0, 7, 8, 93, 0, 7, 8, 94, 0, 7, 8, 95, 1, 77, 0, 4, 0, 46, 2,136, 0, 7, 8, 96,
- 0, 7, 1, 85, 0, 7, 0, 37, 0,163, 0, 13, 0, 27, 0, 31, 0, 2, 0, 20, 0, 2, 4,244, 0, 4, 0,109, 0, 7, 8, 97,
- 0, 7, 1,252, 0, 7, 8, 98, 0, 7, 8, 99, 0, 7, 1, 85, 0, 2, 1, 43, 0, 2, 0, 37, 0, 50, 1, 70, 1, 77, 8,100,
- 1, 78, 0, 8, 0, 4, 0, 18, 0, 4, 0,129, 0, 4, 0, 20, 0, 4, 3, 55, 0, 4, 8,101, 0, 0, 0, 95, 0, 0, 0, 17,
- 0, 9, 0, 2, 0, 84, 0, 6, 1, 78, 8,102, 0, 4, 8,103, 0, 4, 8,104, 0, 4, 8,105, 0, 4, 0, 37, 0, 9, 8,106,
- 1, 79, 0, 5, 0, 7, 2, 61, 0, 7, 2,176, 0, 7, 1,213, 0, 2, 8,107, 0, 2, 0, 37, 1, 80, 0, 5, 0, 7, 2, 61,
- 0, 7, 8,108, 0, 7, 8,109, 0, 7, 8,110, 0, 7, 2,176, 1, 81, 0, 7, 0, 4, 8,111, 0, 4, 8,112, 0, 4, 8,113,
- 0, 7, 8,114, 0, 7, 8,115, 0, 7, 8,116, 0, 7, 8,117, 1, 82, 0, 25, 0, 32, 8,118, 1, 80, 3, 51, 1, 79, 8,119,
- 1, 80, 6,249, 0, 7, 8,120, 0, 7, 8,121, 0, 7, 8,122, 0, 7, 8,123, 0, 7, 8,115, 0, 7, 8,116, 0, 7, 2,176,
- 0, 7, 2,153, 0, 7, 8,124, 0, 7, 8,125, 0, 7, 0,109, 0, 7, 8,126, 0, 4, 8,111, 0, 4, 8,127, 0, 4, 0, 37,
- 0, 4, 0, 81, 0, 4, 8,128, 0, 2, 0, 20, 0, 2, 8,129, 0, 2, 8,130, 0, 2, 3, 85, 1, 83, 0,112, 0, 27, 0, 31,
- 0, 4, 0, 20, 0, 2, 0, 18, 0, 2, 7,219, 0, 2, 8,131, 0, 2, 8,132, 0, 2, 8,133, 0, 2, 8,134, 0, 2, 8,135,
- 0, 2, 8,136, 0, 2, 8,137, 0, 2, 8,138, 0, 2, 8,139, 0, 2, 8,140, 0, 2, 8,141, 0, 2, 8,142, 0, 2, 8,143,
- 0, 2, 8,144, 0, 2, 8,145, 0, 2, 1,205, 0, 2, 6,242, 0, 2, 6,218, 0, 2, 8,146, 0, 2, 8,147, 0, 2, 3, 83,
- 0, 2, 3, 84, 0, 2, 8,148, 0, 2, 8,149, 0, 2, 8,150, 0, 2, 8,151, 0, 2, 8,152, 0, 2, 8,153, 0, 7, 8,154,
- 0, 7, 8,155, 0, 7, 8,156, 0, 2, 8,157, 0, 2, 8,158, 0, 7, 8,159, 0, 7, 8,160, 0, 7, 8,161, 0, 7, 6,224,
- 0, 7, 0, 92, 0, 7, 2,153, 0, 7, 6,230, 0, 7, 8,162, 0, 7, 8,163, 0, 7, 8,164, 0, 7, 8,165, 0, 7, 0, 57,
- 0, 4, 6,225, 0, 4, 6,223, 0, 4, 8,166, 0, 7, 6,226, 0, 7, 6,227, 0, 7, 6,228, 0, 7, 8,167, 0, 7, 8,168,
- 0, 7, 8,169, 0, 7, 8,170, 0, 7, 8,171, 0, 7, 8,172, 0, 7, 8,173, 0, 7, 8,174, 0, 7, 3, 10, 0, 7, 0,109,
- 0, 7, 8,175, 0, 7, 8,176, 0, 7, 8,177, 0, 7, 8,178, 0, 7, 8,179, 0, 7, 8,180, 0, 7, 2,103, 0, 7, 8,181,
- 0, 7, 8,182, 0, 4, 8,183, 0, 4, 8,184, 0, 7, 8,185, 0, 7, 8,186, 0, 7, 8,187, 0, 7, 8,188, 0, 7, 8,189,
- 0, 7, 8,190, 0, 7, 8,191, 0, 7, 8,192, 0, 7, 3, 79, 0, 7, 3, 77, 0, 7, 3, 78, 0, 7, 8,193, 0, 7, 8,194,
- 0, 7, 8,195, 0, 7, 8,196, 0, 7, 8,197, 0, 7, 8,198, 0, 7, 8,199, 0, 7, 8,200, 0, 7, 8,201, 0, 7, 8,202,
- 0, 7, 8,203, 0, 7, 8,204, 0, 7, 8,205, 0, 7, 8,206, 0, 7, 8,207, 0, 7, 8,208, 0, 7, 8,209, 0, 0, 8,210,
- 0, 63, 3, 40, 0, 63, 8,211, 0, 32, 8,212, 0, 32, 8,213, 0, 36, 0, 79, 0,141, 3, 38, 0,141, 8,214, 0,132, 0, 37,
- 0,132, 0, 0, 0,132, 0, 1, 1, 83, 8,215, 1, 82, 3, 92, 1, 81, 7,150, 1, 84, 8,216, 1, 85, 8,217, 1, 85, 8,218,
- 0, 12, 8,219, 0, 12, 8,220, 0,142, 3, 39, 0, 32, 8,221, 0, 32, 8,222, 0, 32, 8,223, 0, 12, 8,224, 0, 12, 8,225,
- 0, 7, 0,210, 0, 7, 4, 23, 0, 4, 2,105, 0, 4, 0, 20, 0, 4, 6,225, 0, 4, 8,226, 0, 4, 8,227, 0, 4, 8,228,
- 0, 4, 0, 57, 0, 2, 0,217, 0, 2, 8,229, 0, 2, 8,230, 0, 2, 8,231, 0, 2, 3, 32, 0, 2, 8,232, 0, 0, 8,233,
- 0, 2, 8,234, 0, 2, 8,235, 0, 2, 8,236, 0, 9, 8,237, 0,124, 3,132, 0,122, 0, 34, 1, 86, 8,238, 0, 7, 3,104,
- 0, 7, 8,239, 0, 7, 8,240, 0, 7, 3,187, 0, 7, 8,241, 0, 7, 3, 17, 0, 7, 3, 10, 0, 7, 8,242, 0, 7, 1,254,
- 0, 7, 8,243, 0, 7, 8,244, 0, 7, 8,245, 0, 7, 8,246, 0, 7, 8,247, 0, 7, 8,248, 0, 7, 3,105, 0, 7, 8,249,
- 0, 7, 8,250, 0, 7, 8,251, 0, 7, 3,106, 0, 7, 3,102, 0, 7, 3,103, 0, 4, 8,252, 0, 4, 0, 93, 0, 4, 8,253,
- 0, 4, 8,254, 0, 2, 8,255, 0, 2, 9, 0, 0, 2, 9, 1, 0, 2, 9, 2, 0, 2, 9, 3, 0, 2, 0, 37, 0, 4, 0, 70,
- 0,123, 0, 8, 1, 86, 9, 4, 0, 7, 9, 5, 0, 7, 9, 6, 0, 7, 1,158, 0, 7, 9, 7, 0, 4, 0, 93, 0, 2, 9, 8,
- 0, 2, 9, 9, 1, 87, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 9, 10, 1, 88, 0, 6, 1, 88, 0, 0,
- 1, 88, 0, 1, 1, 87, 9, 11, 0, 4, 9, 12, 0, 2, 9, 13, 0, 2, 0, 20, 1, 89, 0, 5, 1, 89, 0, 0, 1, 89, 0, 1,
- 0, 12, 9, 14, 0, 4, 9, 15, 0, 4, 0, 20, 1, 90, 0, 9, 1, 90, 0, 0, 1, 90, 0, 1, 0, 12, 0,128, 1, 89, 9, 16,
- 0, 4, 0, 20, 0, 2, 9, 13, 0, 2, 9, 17, 0, 7, 0, 94, 0, 0, 9, 18, 0,180, 0, 5, 0, 12, 4, 65, 0, 4, 0, 20,
- 0, 2, 9, 19, 0, 2, 9, 20, 0, 9, 9, 21, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 0, 0, 0, 96, 8,195,104,144, 0, 0, 0, 59,
+ 0, 0, 0, 24,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255, 0, 0, 80, 65, 0, 0, 1,224, 3,163,162, 32, 0, 0, 1, 48, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 80, 65, 80, 83,121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 2, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 6, 0, 0, 0, 0, 0, 4, 0, 6, 0, 8, 0, 5, 0, 5, 0, 3, 0,100, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2,
+ 0, 4, 0, 5, 0, 3, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,128,
+ 63,128, 0, 0, 61,204,204,205, 63, 76,204,205, 63,128, 0, 0, 66,200, 0, 0, 66, 72, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 63,128, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0, 0, 0, 0, 0, 10, 63,182, 41,128,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,189, 35,214,240, 0, 0, 0, 0,
+189,196,155,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+ 0, 0, 0, 10, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 62, 76,204,205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 62, 76,204,205, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63,128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 65, 32, 0, 0, 63,128, 0, 0,
+ 62, 76,204,205, 62,153,153,154, 63,128, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0,
+ 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49, 0, 0,173,128,
+ 7,223,224, 32, 0, 0, 0, 0, 0, 0, 0, 1, 83, 68, 78, 65, 78, 65, 77, 69, 0, 0, 9,113, 42,110,101,120,116, 0, 42,112,
+114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,
+109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,
+112, 0,118, 97,108, 0,118, 97,108, 50, 0,110, 97,109,101, 91, 51, 50, 93, 0,116,121,112,101, 0,115,117, 98,116,121,112,101,
+ 0,102,108, 97,103, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,
+101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,
+114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,
+110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0,
+ 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100,
+ 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,
+114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116,
+ 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114,
+ 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,
+120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,
+101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,
+112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,
+105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93,
+ 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,
+121, 0,115,108,117,114,112,104, 0, 42, 42,115, 99,114,105,112,116,115, 0, 42,102,108, 97,103, 0, 97, 99,116,115, 99,114,105,
+112,116, 0,116,111,116,115, 99,114,105,112,116, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,
+108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,
+112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0,
+ 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,
+102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,
+105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 97,110,103,
+108,101, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99,
+ 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,
+102,100,105,115,116, 0, 89, 70, 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95,
+ 98,107,104, 98,105, 97,115, 0, 89, 70, 95, 98,107,104,114,111,116, 0,115, 99,114,105,112,116,108,105,110,107, 0, 42,100,111,
+102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,
+102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,
+114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0,
+ 42, 97,110,105,109, 0, 42,114,114, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,
+102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,
+110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101,
+ 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,
+105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,
+120, 0, 97,115,112,121, 0, 42,118,110,111,100,101, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,
+101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101,
+ 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,
+102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108,
+ 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,
+105, 99,104, 95,111,117,116,112,117,116, 0,112, 97,100, 91, 50, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,
+114, 0, 99,111,108,102, 97, 99, 0,110,111,114,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119,
+ 97,114,112,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0,
+ 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,
+115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,
+105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,
+101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,
+109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,
+119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,
+108, 99, 0,108, 97,115,116,115,105,122,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,
+103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,
+101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116,
+ 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,
+110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51,
+ 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,
+112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,
+105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0,
+ 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,120,114,101,112,101,
+ 97,116, 0,121,114,101,112,101, 97,116, 0,101,120,116,101,110,100, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97,
+ 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42, 99,111, 98,
+ 97, 0, 42,101,110,118, 0,117,115,101, 95,110,111,100,101,115, 0,112, 97,100, 91, 55, 93, 0,108,111, 99, 91, 51, 93, 0,114,
+111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,112, 97,
+100, 51, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,
+115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,
+116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,
+102,102, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,
+115, 0,115,111,102,116, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,
+101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,
+114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,
+101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,
+121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,
+109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,
+110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,
+111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,
+101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116,
+ 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109,
+ 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,
+105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,
+107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,
+114,115,112, 97, 99,101, 0,112, 97,100, 52, 0, 89, 70, 95,110,117,109,112,104,111,116,111,110,115, 0, 89, 70, 95,110,117,109,
+115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104, 0, 89, 70, 95,117,115,101,113,109, 99, 0, 89, 70, 95, 98,
+117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99, 98,108,117,114, 0, 89, 70, 95,
+108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,110,116, 0, 89, 70, 95,103,108,111,119,111,102,115, 0, 89,
+ 70, 95,103,108,111,119,116,121,112,101, 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,115,112,101,
+ 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109,
+ 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114,
+ 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,
+115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,
+114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108,
+ 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,
+102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,
+101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,
+109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,
+116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,
+105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,
+114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99,
+ 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117,
+ 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,
+110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,
+114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,
+114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100,
+ 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95,
+ 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114,
+ 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,
+114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114,
+ 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,
+114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,
+112, 95,115,104,111,119, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0,
+ 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,
+116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93,
+ 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,
+115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,
+115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,
+101,115,101,116, 0, 89, 70, 95, 97,114, 0, 89, 70, 95, 97,103, 0, 89, 70, 95, 97, 98, 0, 89, 70, 95,100,115, 99, 97,108,101,
+ 0, 89, 70, 95,100,112,119,114, 0, 89, 70, 95,100,115,109,112, 0, 89, 70, 95,112,114,101,115,101,116, 0, 89, 70, 95,100,106,
+105,116, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99, 97,108,101, 0, 42,
+ 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108,
+ 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,
+114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42, 42,109,
+ 97,116, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,
+114,101,115,104, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,114, 97,100,105,117,
+115, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116,
+ 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,
+100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0,
+ 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,
+112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116,
+ 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0,
+ 98,101,118, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,
+101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0,115,112, 97, 99,101,
+109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,
+101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,
+111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,
+111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112,
+ 99,104, 97,114, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,
+115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,
+109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,
+103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,
+101,115,104, 0, 42,109,115,101,108,101, 99,116, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,
+111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,
+101, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,
+115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,
+103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,
+110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0,
+ 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91,
+ 51, 93, 0,110,111, 91, 51, 93, 0,112, 97,100, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,
+120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,
+115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,101,100,103,101, 95, 98,111,117,110,100, 97,114,
+121, 95,115,116, 97,116,101,115, 0, 42,118,101,114,116, 95,101,100,103,101, 95,109, 97,112, 0, 42,118,101,114,116, 95,102, 97,
+ 99,101, 95,109, 97,112, 0, 42,109, 97,112, 95,109,101,109, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,
+118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108,
+ 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,
+102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,
+100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,
+114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,
+101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112,
+ 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95,
+ 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111,
+ 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,
+109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0,
+ 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,
+115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,
+108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,
+102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,
+100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109,
+ 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,
+101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,
+109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,112,101,114,
+ 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,
+116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,
+114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,
+108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,
+111,115, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,
+120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0,
+ 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97,
+ 99,104,101, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119,
+ 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,
+117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,116,105,109,101,
+ 0, 42, 98,118,104,116,114,101,101, 0, 42,100,109, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,
+111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0,110,101,101,100, 98,105,110,100, 0, 42, 98,
+105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0,
+ 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,
+115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51,
+ 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,112,115,
+121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101,
+ 0,112,115,121,115, 0,114,116, 91, 50, 93, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101,
+ 99,116, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,
+112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,
+104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115,
+ 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,
+112,116,115, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,
+121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,
+100,119, 0, 42,100,101,102, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112,
+ 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,
+114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97,
+ 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 99,111,110,115,116,114, 97,105,110,116, 67,
+104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,100,108,111, 99, 91, 51,
+ 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,111, 98,109, 97,116,
+ 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,
+115, 0,116,114, 97,110,115,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,
+102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,105,112,111,119,105,110, 0,
+115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,
+111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0, 99,116,105,109,101,
+ 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114,
+ 0,114,100, 97,109,112,105,110,103, 0,115,105,122,101,102, 97, 99, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108,
+ 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,
+115,104,111,108,100, 0,100,116, 0,100,116,120, 0, 97, 99,116, 99,111,108, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,
+112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,
+101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,
+116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,
+103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,
+111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,
+108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,112,
+100, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,
+114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,
+101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,
+103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,
+108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,
+117,108, 97,109,112, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,100,101,102,108,101, 99,116, 0,102,111,
+114, 99,101,102,105,101,108,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,
+101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,102,
+ 95,115,116,114,101,110,103,116,104, 0,102, 95,112,111,119,101,114, 0,102, 95,100,105,115,116, 0,102, 95,100, 97,109,112, 0,
+109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,102, 95,
+112,111,119,101,114, 95,114, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,
+100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,
+110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101,
+ 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,
+107, 95, 97,120,105,115, 0,114,116, 50, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,115,105,109,102,114, 97,109,101,
+ 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108,
+105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,
+111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,
+114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95,
+ 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83,
+ 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,
+107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,
+105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,
+119,101,108,100,105,110,103, 0, 42,112, 97,114,116,105, 99,108,101,115, 0,116,111,116,112,111,105,110,116, 0,116,111,116,115,
+112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,110,111,100,101,109, 97,115,115, 0,
+103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,
+115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111,
+ 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,102,117,122,
+122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,101,102,114, 97, 0,105,110,116,
+101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,
+111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0,
+ 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,
+101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,
+118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,
+114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97,
+ 99,104,101, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,
+105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,
+105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,
+105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,
+111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0,
+ 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,
+101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,
+115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97,
+ 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,
+121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,
+105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97,
+ 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,
+111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,
+110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100,
+ 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,
+114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,
+102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115,
+ 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,
+111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101,
+ 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,
+101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,
+120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97,
+ 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,
+111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,
+111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,
+105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,
+114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,
+114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,
+111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,
+116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,
+100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116,
+ 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,
+112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0,
+ 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0,
+ 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97,
+ 98,108,101,115, 0,104,101,109,105,114,101,115, 0,109, 97,120,105,116,101,114, 0,100,114, 97,119,116,121,112,101, 0,115,117,
+ 98,115,104,111,111,116,112, 0,115,117, 98,115,104,111,111,116,101, 0,110,111,100,101,108,105,109, 0,109, 97,120,115,117, 98,
+108, 97,109,112, 0,112, 97,109, 97, 0,112, 97,109,105, 0,101,108,109, 97, 0,101,108,109,105, 0,109, 97,120,110,111,100,101,
+ 0, 99,111,110,118,101,114,103,101,110, 99,101, 0,114, 97,100,102, 97, 99, 0,103, 97,109,109, 97, 0,115,101,108, 99,111,108,
+ 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109,
+ 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119,
+ 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,
+101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,
+114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112,
+ 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99,
+ 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111,
+ 95, 98,105,116,114, 97,116,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99,
+ 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,
+107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0, 42,
+109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121,
+ 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114,
+ 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,102,102, 99,111,
+100,101, 99,100, 97,116, 97, 0, 99,102,114, 97, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,
+102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97,
+ 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,
+112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 49, 0,115,
+116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,
+115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,
+112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,
+105,116,121, 0,114,112, 97,100, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114,101,110,
+100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101,
+ 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116,
+ 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99,
+ 95, 98, 97,115,101, 0,103, 97,117,115,115, 0,112,111,115,116,109,117,108, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,
+115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98,
+ 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,
+107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,
+117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,
+100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97, 99,104,101, 0,
+ 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0, 89, 70, 95, 65,
+ 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,108, 97,109,112,
+114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,116,104, 0, 71,
+ 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,110,116, 0, 71,
+ 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89, 70, 95,114, 97,
+121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,101,115, 0,
+121,102,112, 97,100, 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114,101,102,105,110,101,109,
+101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, 70, 95,103, 97,109,109,
+ 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,105,
+120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99,107, 98,117,102, 91, 49,
+ 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100,
+ 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103,
+ 95,115,116, 97,109,112, 91, 52, 93, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,
+105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105,
+ 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0,
+ 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,
+101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,
+111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,
+102, 0, 42,100,111,109,101,116,101,120,116, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,
+102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114,
+ 0, 99,111,108, 91, 51, 93, 0,102,114, 97,109,101, 0,110, 97,109,101, 91, 54, 52, 93, 0, 42, 98,114,117,115,104, 0,116,111,
+111,108, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115,116,101,112, 0,
+105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,
+121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,100,114, 97,119, 95,116,105,
+109,101,100, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 99,111,114,110,101,114,116,121,112,
+101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,
+116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,115,101,103,109,101,110,116,
+115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108,
+ 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,
+109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,
+108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110,
+ 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104,
+ 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111,
+ 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118,
+ 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,
+116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,
+115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,
+120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110,
+ 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,
+115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,
+109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,
+101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,
+101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,
+105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111,
+ 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,
+105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,
+107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,
+101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,
+105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,
+111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,
+100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93,
+ 0,101,100,103,101, 95,109,111,100,101, 0,112, 97,100, 51, 91, 50, 93, 0,100,105,114, 0,118,105,101,119, 0, 42,115,101,115,
+115,105,111,110, 0, 42, 99,117,109, 97,112, 0,100,114, 97,119, 98,114,117,115,104, 0,115,109,111,111,116,104, 98,114,117,115,
+104, 0,112,105,110, 99,104, 98,114,117,115,104, 0,105,110,102,108, 97,116,101, 98,114,117,115,104, 0,103,114, 97, 98, 98,114,
+117,115,104, 0,108, 97,121,101,114, 98,114,117,115,104, 0,102,108, 97,116,116,101,110, 98,114,117,115,104, 0,112,105,118,111,
+116, 91, 51, 93, 0, 98,114,117,115,104, 95,116,121,112,101, 0,116,101,120,110,114, 0,116,101,120,114,101,112,116, 0,116,101,
+120,102, 97,100,101, 0,116,101,120,115,101,112, 0, 97,118,101,114, 97,103,105,110,103, 0,116, 97, 98,108,101,116, 95,115,105,
+122,101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0,115,121,109,109, 0,114, 97,107,101, 0, 97,120,105,
+115,108,111, 99,107, 0, 42, 99, 97,109,101,114, 97, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42,
+ 98, 97,115, 97, 99,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110,
+ 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,101,100,105,116, 98,117,116,115,105,122,101, 0,115,101,108,101, 99,116,109,
+111,100,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111,109,
+101,114,103,101, 0,112, 97,100, 53, 0,112, 97,100, 54, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 42,101,100, 0,
+ 42,114, 97,100,105,111, 0,102,114, 97,109,105,110,103, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 97,117,100,
+105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0,106,117,109,112,102,114, 97,109,101, 0,115,110,
+ 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0, 42,116,
+104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,115, 99,117,108,112,116,
+100, 97,116, 97, 0,102,114, 97,109,101, 95,115,116,101,112, 0,122,111,111,109, 0, 98,108,101,110,100, 0,120,105,109, 0,121,
+105,109, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 42, 97,114,101, 97, 0, 98,108,
+111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,
+105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91,
+ 52, 93, 91, 52, 93, 0,119,105,110,109, 97,116, 49, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 49, 91, 52, 93, 91,
+ 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0,108, 97,121, 95,117,115,101,100, 0,112,101,114,
+115,112, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42, 98,103,112,105, 99, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,
+105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0,111, 98, 95, 99,
+101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,108,111, 99, 97,108,118,105,101,119, 0,108, 97,121, 97, 99,116, 0,
+115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0, 99, 97,109,122,111,111,109, 0,112,105,118,111,116, 95,108,
+ 97,115,116, 0,103,114,105,100, 0,103,114,105,100,118,105,101,119, 0,112,105,120,115,105,122,101, 0,110,101, 97,114, 0,102,
+ 97,114, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,103,114,105,100,108,105,110,101,115, 0,118,105,101,119, 98,117,116,
+ 0,103,114,105,100,102,108, 97,103, 0,109,111,100,101,115,101,108,101, 99,116, 0,116,119,116,121,112,101, 0,116,119,109,111,
+100,101, 0,116,119,102,108, 97,103, 0,116,119,100,114, 97,119,102,108, 97,103, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93,
+ 0, 99,108,105,112, 91, 52, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,
+117,102, 0,120,114, 97,121, 0,102,108, 97,103, 50, 0,103,114,105,100,115,117, 98,100,105,118, 0,107,101,121,102,108, 97,103,
+115, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,
+115, 95,115,116,111,114, 97,103,101, 0, 42,103,112,100, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,
+115,112, 0,108,118,105,101,119, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,
+120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,107,101,101,112,
+116,111,116, 0,107,101,101,112, 97,115,112,101, 99,116, 0,107,101,101,112,122,111,111,109, 0,111,108,100,119,105,110,120, 0,
+111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0,114,111,119, 98,117,116, 0,118, 50,100, 0, 42,101,100,
+105,116,105,112,111, 0,105,112,111,107,101,121, 0, 97, 99,116,110, 97,109,101, 91, 51, 50, 93, 0, 99,111,110,115,116,110, 97,
+109,101, 91, 51, 50, 93, 0, 98,111,110,101,110, 97,109,101, 91, 51, 50, 93, 0,116,111,116,105,112,111, 0,112,105,110, 0, 98,
+117,116,111,102,115, 0, 99,104, 97,110,110,101,108, 0,108,111, 99,107, 0,109,101,100,105, 97,110, 91, 51, 93, 0, 99,117,114,
+115,101,110,115, 0, 99,117,114, 97, 99,116, 0, 97,108,105,103,110, 0,116, 97, 98,111, 0,109, 97,105,110, 98, 0,109, 97,105,
+110, 98,111, 0, 42,108,111, 99,107,112,111,105,110, 0,116,101,120,102,114,111,109, 0,115,104,111,119,103,114,111,117,112, 0,
+109,111,100,101,108,116,121,112,101, 0,115, 99,114,105,112,116, 98,108,111, 99,107, 0,114,101, 95, 97,108,105,103,110, 0,111,
+108,100,107,101,121,112,114,101,115,115, 0,116, 97, 98, 91, 55, 93, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104,
+ 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0, 42,102,105,108,101,108,105,115,116, 0,116,111,116,102,105,108,101, 0,
+116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,111,102,115, 0,
+115,111,114,116, 0,109, 97,120,110, 97,109,101,108,101,110, 0, 99,111,108,108,117,109,115, 0,102, 95,102,112, 0,102,112, 95,
+115,116,114, 91, 56, 93, 0, 42,108,105, 98,102,105,108,101,100, 97,116, 97, 0,114,101,116,118, 97,108, 0,109,101,110,117, 0,
+ 97, 99,116, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99,
+ 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42,
+ 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0,111,111,112,115, 0,
+118,105,115,105,102,108, 97,103, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,
+115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,
+103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0,100,101,112,115,
+ 95,102,108, 97,103,115, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,100,116,
+ 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0,112, 97,100, 91, 53, 93, 0, 99,
+101,110,116,120, 0, 99,101,110,116,121, 0, 97,117,116,111,115,110, 97,112, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,
+101,119,108,105,110,101,115, 0,102,111,110,116, 95,105,100, 0,108,104,101,105,103,104,116, 0,108,101,102,116, 0,115,104,111,
+119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0, 99,117,114,114,116, 97, 98, 95,115,101,116, 0,115,
+104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,112,105,120, 95,112,101,114, 95,108,105,110,101,
+ 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,
+103,105,110,115, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,
+111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,
+108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,
+115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115,
+ 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0, 42,101,100,
+105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0, 42,102,105,108,101,115, 0, 97, 99,116,105,118,101, 95,102,105,
+108,101, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,115,101,108,115,116, 97,116,101, 0,
+118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,
+115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0, 97, 99,116,105,118,101, 95, 98,
+111,111,107,109, 97,114,107, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 42,105,109,103, 0,111,117,116,108,105,110,101,
+ 91, 52, 93, 0,110,101,117,116,114, 97,108, 91, 52, 93, 0, 97, 99,116,105,111,110, 91, 52, 93, 0,115,101,116,116,105,110,103,
+ 91, 52, 93, 0,115,101,116,116,105,110,103, 49, 91, 52, 93, 0,115,101,116,116,105,110,103, 50, 91, 52, 93, 0,110,117,109, 91,
+ 52, 93, 0,116,101,120,116,102,105,101,108,100, 91, 52, 93, 0,116,101,120,116,102,105,101,108,100, 95,104,105, 91, 52, 93, 0,
+112,111,112,117,112, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,109,101,110,117,
+ 95, 98, 97, 99,107, 91, 52, 93, 0,109,101,110,117, 95,105,116,101,109, 91, 52, 93, 0,109,101,110,117, 95,104,105,108,105,116,
+101, 91, 52, 93, 0,109,101,110,117, 95,116,101,120,116, 91, 52, 93, 0,109,101,110,117, 95,116,101,120,116, 95,104,105, 91, 52,
+ 93, 0, 98,117,116, 95,100,114, 97,119,116,121,112,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107,
+ 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93,
+ 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,
+101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93,
+ 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,
+111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52,
+ 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101,
+ 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108,
+ 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,
+100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,
+111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,
+116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,
+111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,
+120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116,
+ 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52,
+ 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,
+114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,
+116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,
+118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,
+105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,
+118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,
+110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115,
+ 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 98,112, 97,100, 91, 52, 93, 0, 98,112,
+ 97,100, 49, 91, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,
+116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,
+100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,
+114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114,
+ 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,121,102,101,120,112,111,114,116,100,105,114, 91,
+ 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 0,118,114,109,108,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103,115,
+ 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101,
+ 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0, 99,111,110,115,111,108,101, 95, 98,117,102,102,101,
+114, 0, 99,111,110,115,111,108,101, 95,111,117,116, 0,109,105,120, 98,117,102,115,105,122,101, 0,102,111,110,116,115,105,122,
+101, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,
+108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,102,111,110,116,110, 97,109,101, 91, 50, 53, 54, 93,
+ 0,116,104,101,109,101,115, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,
+109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,
+112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,
+101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,
+112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,
+101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,109,101,109, 99,
+ 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,
+114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,
+100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,
+101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102,
+ 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0,112, 97,100, 91, 56, 93,
+ 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93,
+ 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0, 99,111, 98, 97, 95,119,
+101,105,103,104,116, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101,
+ 0, 42,115, 99,101,110,101, 0,101,110,100,120, 0,101,110,100,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,115, 99,
+101,110,101,110,114, 0,115, 99,114,101,101,110,110,114, 0,102,117,108,108, 0,109, 97,105,110,119,105,110, 0,119,105,110, 97,
+107,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0,
+112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,
+109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,111,108,
+100, 95,111,102,115,120, 0,111,108,100, 95,111,102,115,121, 0,115,111,114,116, 99,111,117,110,116,101,114, 0, 42,112, 97,110,
+101,108,116, 97, 98, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93,
+ 0,104,101, 97,100,114, 99,116, 0,119,105,110,114, 99,116, 0,104,101, 97,100,119,105,110, 0,119,105,110, 0,104,101, 97,100,
+101,114,116,121,112,101, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,119,105,110,120, 0,119,105,110,121, 0,104,101,
+ 97,100, 95,115,119, 97,112, 0,104,101, 97,100, 95,101,113,117, 97,108, 0,119,105,110, 95,115,119, 97,112, 0,119,105,110, 95,
+101,113,117, 97,108, 0,104,101, 97,100, 98,117,116,108,101,110, 0,104,101, 97,100, 98,117,116,111,102,115, 0, 99,117,114,115,
+111,114, 0,115,112, 97, 99,101,100, 97,116, 97, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0,115,117, 98,
+118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,
+111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0,100,105,115,112,108, 97,121,109,111,100,101, 0, 42, 99,117,
+114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98,
+ 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,
+101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,
+115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,
+115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,
+105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0,
+ 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0,
+ 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,
+108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116,
+ 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,
+101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101,
+ 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,
+110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,109,117,108, 0,104, 97,110,100,115,105,122,
+101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0,102, 97, 99,102, 48, 0,102, 97, 99,102,
+ 49, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,
+110,100, 0, 42,104,100, 97,117,100,105,111, 0,108,101,118,101,108, 0,112, 97,110, 0, 99,117,114,112,111,115, 0,115,116,114,
+111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,
+105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,
+116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,
+101,116, 97,115,116, 97, 99,107, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,
+121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,
+117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,
+110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110,
+ 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,
+108, 97,116,105,111,110, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,
+116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,
+116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,
+120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,
+109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93,
+ 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,
+115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120,
+ 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101,
+ 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102,
+ 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0,100,120, 0,100,121, 0,108,105,110,107, 0,111,116,121,112,
+101, 0,111,108,100, 0, 42,112,111,105,110, 0, 42,111,108,100,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108,
+ 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116,
+ 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50,
+ 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,
+116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,
+101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0, 42,102,114,111,109,
+ 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,112,117,108,115,
+101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,
+110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,
+116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0,109,111,100,117,108,101,
+ 91, 54, 52, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,
+108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101,
+ 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,
+115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,
+114, 0,112, 97,100, 49, 91, 50, 93, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 50,
+ 91, 49, 93, 0,116,114, 97, 99,107, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,
+ 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,
+105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101,
+ 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93,
+ 0, 42,114,101,102,101,114,101,110, 99,101, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,
+120, 0,118,105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,
+111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,
+112, 91, 51, 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116,
+ 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,
+111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101,
+ 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,
+116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110,
+ 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,
+101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0, 42,115, 97,109,112,108,101, 0, 42,115,
+116,114,101, 97,109, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 42,115,110,100, 95,115,111,117,110,100, 0,
+112, 97,110,110,105,110,103, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,112,105,116, 99,104, 0,109,105,110, 95,103, 97,
+105,110, 0,109, 97,120, 95,103, 97,105,110, 0,100,105,115,116, 97,110, 99,101, 0,115,116,114,101, 97,109,108,101,110, 0, 99,
+104, 97,110,110,101,108,115, 0,104,105,103,104,112,114,105,111, 0,112, 97,100, 91, 49, 48, 93, 0,103, 97,105,110, 0,100,111,
+112,112,108,101,114,102, 97, 99,116,111,114, 0,100,111,112,112,108,101,114,118,101,108,111, 99,105,116,121, 0,110,117,109,115,
+111,117,110,100,115, 98,108,101,110,100,101,114, 0,110,117,109,115,111,117,110,100,115,103, 97,109,101,101,110,103,105,110,101,
+ 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 99,
+104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,
+110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,
+108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104,
+ 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,
+111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0,112, 97,116,104,102,108, 97,103, 0,108, 97,121,101,114,
+ 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,
+115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,
+112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 99,111,110,115,
+116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,
+101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109,
+ 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,
+115, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,
+112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,
+105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,
+107,115,116,114,101,116, 99,104, 0, 42, 99,117,115,116,111,109, 0, 99,104, 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,
+108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,
+102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0, 99,117,115,
+116,111,109, 67,111,108, 0, 99,115, 0, 42,103,114,112, 0,114,101,115,101,114,118,101,100, 49, 0,103,114,111,117,112,115, 0,
+ 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 97, 99,116,110,114, 0, 97, 99,116,119,105,100,116,104, 0,116,105,109,
+101,115,108,105,100,101, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,
+101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0, 42,116, 97,114, 0,115,117, 98,116, 97,114,103,101,
+116, 91, 51, 50, 93, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0, 42,112,114,111,112, 0,116,
+ 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,
+101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116,
+ 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116,
+ 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,
+108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,
+111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,
+117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,
+109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,
+105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111,
+ 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91,
+ 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104,
+ 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,
+115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115,
+ 0,115,116,114,105,100,101,108,101,110, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,
+108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,
+111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,
+115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110,
+ 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,
+110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119,
+ 95,110,111,100,101, 0,117,115,101,114,110, 97,109,101, 91, 51, 50, 93, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115,
+ 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,
+111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,
+101, 99, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,
+109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,
+110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97,
+ 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,
+112,101, 0, 42,115,101,108,105,110, 0, 42,115,101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40,
+ 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40,
+ 41, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,
+112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0, 99,117,114,118,101,100, 0,105,
+109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,
+110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,105,116,101,114, 0,119,114, 97,112, 0,115,
+105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97,116, 0,116,
+ 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0,
+120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,
+111,116, 97,116,105,111,110, 0,112,114,101,118,105,101,119, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,
+116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0,
+ 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102,
+ 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,104,111,114,116,121, 0,109,105,110,116,
+ 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91,
+ 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0, 99,117,
+114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93,
+ 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,111,102,102,115,101,116, 91, 50, 93, 0,105,110,
+110,101,114,114, 97,100,105,117,115, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0, 99,108,111,110,101, 0, 97, 99,116,105,
+118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0,
+ 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,
+101, 0, 42,112,111,111,108, 0,101,100,105,116,102,108, 97,103, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,
+118,101, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91,
+ 52, 93, 0,102,111,102,102,115,101,116, 0,114, 97,110,100, 91, 51, 93, 0, 42,115,116,105, 99,107, 95,111, 98, 0,112,114,101,
+118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0,105, 95,114,111,116, 91, 52, 93, 0,114, 95,114,111,116, 91, 52, 93, 0,
+114, 95, 97,118,101, 91, 51, 93, 0,114, 95,118,101, 91, 51, 93, 0,100,105,101,116,105,109,101, 0, 98, 97,110,107, 0,115,105,
+122,101,109,117,108, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 98,112,105, 0, 97,108,105,118,101, 0,108,111,111,112,
+ 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0,114,111,116,109,111,100,101, 0, 97,118,101,109,111,100,101, 0,
+114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,
+101, 0, 99,104,105,108,100,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,114,101,110, 95,115,116,101,112, 0,104,
+ 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,
+100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0,110, 98,101,116,
+119,101,101,110, 0, 98,111,105,100,110,101,105,103,104, 98,111,117,114,115, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,
+117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116,
+ 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91,
+ 50, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,
+101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,
+105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,
+106,105,116,102, 97, 99, 0,107,101,121,101,100, 95,116,105,109,101, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,
+114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,
+116,102, 97, 99, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,
+114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101,
+ 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99,
+ 0, 97, 98,115,108,101,110,103,116,104, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,
+114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0,
+ 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116,
+ 0, 99,104,105,108,100,115,112,114,101, 97,100, 0, 99,108,117,109,112,102, 97, 99, 0, 99,108,117,109,112,112,111,119, 0,114,
+111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,
+115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,
+104, 95,101,110,100, 95,115,104, 97,112,101, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,
+110,101, 91, 50, 93, 0,109, 97,120, 95,108, 97,116, 95, 97, 99, 99, 0,109, 97,120, 95,116, 97,110, 95, 97, 99, 99, 0, 97,118,
+101,114, 97,103,101, 95,118,101,108, 0, 98, 97,110,107,105,110,103, 0,109, 97,120, 95, 98, 97,110,107, 0,103,114,111,117,110,
+100,122, 0, 98,111,105,100,102, 97, 99, 91, 56, 93, 0, 98,111,105,100,114,117,108,101, 91, 56, 93, 0, 42,101,102,102, 95,103,
+114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,
+101,100,105,116, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,
+116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42,116, 97,114,103,
+101,116, 95,111, 98, 0, 42,107,101,121,101,100, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,101,102,102,101, 99,116,111,
+114,115, 0,114,101, 97, 99,116,101,118,101,110,116,115, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,
+100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,107,101,121,101,
+100, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110,
+ 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51,
+ 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42, 99, 97, 99,104,101, 0, 67,100,105,115, 0, 67,118,105, 0, 91, 51, 93,
+ 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120,
+ 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110,
+ 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,
+105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,115,116,101,112,115, 80,101,114, 70,
+114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114,
+ 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,
+114,111,117,112, 95,115,116,114,117, 99,116, 0,112,114,101,115,101,116,115, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,
+105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,
+115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116,
+ 0,112,114,101,115,115,117,114,101, 0, 42,112,111,105,110,116,115, 0,116,111,116,112,111,105,110,116,115, 0,116,104,105, 99,
+107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101,
+ 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,
+117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 0, 0, 0, 84, 89, 80, 69, 0, 0, 1, 99,
+ 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103,
+ 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,
+110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,105, 0,118,101, 99, 50,
+102, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,
+118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121,
+ 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68,
+ 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,
+116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0,
+ 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 83, 99,114,105,112,116, 76,105,110,107, 0, 84,101,120,116, 76,105,110,101,
+ 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,
+114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,
+105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,
+101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102,
+ 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101,
+ 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,
+116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,
+116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,
+118,101, 0, 80, 97,116,104, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0,
+ 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,
+105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115,
+ 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116,
+ 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,
+116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,
+111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 67,111,108,
+ 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,
+108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,117,108,116,105,114,101,
+115, 77, 97,112, 78,111,100,101, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,
+105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,
+114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116,
+ 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114,
+ 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,
+116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0,
+ 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,
+105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114,
+ 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,
+101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107,
+ 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116,
+ 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,
+105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,
+110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86,
+ 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,
+100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,
+105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108,
+ 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101,
+ 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,
+109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,
+120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,
+105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,
+114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,
+102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 98, 65,
+ 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,
+101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 82, 78, 71, 0, 83, 66, 86,101,114,
+116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116,
+ 99,104, 0, 87,111,114,108,100, 0, 82, 97,100,105,111, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97,
+ 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68,
+ 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,
+101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 70,114, 97,109,
+105,110,103, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,
+115, 0, 66,114,117,115,104, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,
+108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,
+105,111,110, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 66,114,117,115,104, 68, 97,116, 97, 0, 83, 99,117,108,112,
+116, 68, 97,116, 97, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 83, 99,101,110,101, 0, 68, 97,103, 70,111,114,
+101,115,116, 0, 66, 71,112,105, 99, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 83, 99,114, 65,114,
+101, 97, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,
+119, 68,101,112,116,104,115, 0, 98, 71, 80,100, 97,116, 97, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111,
+ 0, 83,112, 97, 99,101, 73,112,111, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 83,112, 97,
+ 99,101, 70,105,108,101, 0,100,105,114,101,110,116,114,121, 0, 66,108,101,110,100, 72, 97,110,100,108,101, 0, 83,112, 97, 99,
+101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112,
+ 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,
+112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,
+100,101, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 70,105,108,101, 76,105,115,116, 0, 84,104,101,109,101, 85, 73, 0,
+ 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101,
+ 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 98, 83, 99,114,101,101,110, 0, 83, 99,114, 86,
+101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,
+105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,
+112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,
+105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101,
+ 0, 98, 83,111,117,110,100, 0,104,100, 97,117,100,105,111, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 69,100,105,116,105,110,
+103, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,
+115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,
+115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,
+108,101, 0, 87, 97,118,101, 69,102,102, 0, 79,111,112,115, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,
+101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0,
+ 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0,
+ 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,
+108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,
+111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,
+111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107,
+ 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,
+110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0,
+ 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 98,
+ 67, 68, 65, 99,116,117, 97,116,111,114, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98,
+ 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0,
+ 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,
+109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114,
+ 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0,
+ 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98,
+ 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,
+116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,
+117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 98, 83, 97,109,112,108,101, 0, 98, 83,111,117,110,100, 76,
+105,115,116,101,110,101,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,
+111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 98, 65, 99,116,105,
+111,110, 71,114,111,117,112, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 83,112, 97, 99,101, 65, 99,116,105,
+111,110, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,
+116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,
+114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,
+107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,
+105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,
+120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0,
+ 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,
+116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,
+114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,
+116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98,
+ 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,
+116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,
+105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,
+105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,
+119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98,
+ 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,
+101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,
+ 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114,
+ 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108,
+ 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,
+101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,
+108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108,
+ 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101,
+ 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 84,
+101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101,
+ 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 72,
+ 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101,
+ 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 80,
+ 97,114,116,105, 99,108,101, 69,100,105,116, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 76,105,110,
+107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,
+102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 84, 76, 69, 78, 0, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4,
+ 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16,
+ 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 2, 40, 0, 0, 0, 32, 0,140, 3, 80, 0, 92, 0, 36, 0, 56, 0, 84, 0,112,
+ 0,120, 0, 16, 0, 24, 0, 40, 0,120, 0, 20, 0,132, 0, 32, 1,128, 0, 0, 0, 0, 0, 0, 0,136, 1, 16, 1, 84, 0, 24,
+ 3, 8, 0,168, 0, 0, 0,124, 0,132, 1,128, 1, 8, 0, 56, 2,108, 0, 76, 1, 68, 0, 0, 0,108, 0,104, 0,136, 0, 56,
+ 0, 8, 0, 16, 1, 56, 0, 0, 1, 24, 0, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 24, 0, 76,
+ 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 1, 0, 0, 32, 0, 16, 0, 64, 0, 24, 0, 12, 0, 56, 0, 0, 0, 52,
+ 0, 68, 0, 88, 0, 96, 0, 68, 0, 96, 0,116, 0, 64, 0, 60, 0,108, 0, 60, 0,148, 0,152, 0, 60, 0, 92, 0,104, 0,184,
+ 0,100, 0,180, 0, 52, 0, 68, 0, 0, 0,132, 0, 28, 0, 20, 0,100, 0, 0, 0, 60, 0, 0, 0, 0, 0, 64, 0, 8, 0, 8,
+ 0,216, 0, 76, 1, 64, 0, 64, 0, 64, 0, 60, 1,164, 0,108, 0,104, 0,116, 0, 40, 0, 84, 0, 56, 0,120, 0,128, 0,152,
+ 0,208, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1,108, 0, 40, 0, 28, 0,176, 0,144, 0, 52, 0, 16, 0, 72, 3,208, 0, 56,
+ 0, 16, 0, 80, 0, 12, 0,184, 0, 8, 0, 72, 0, 80, 0,232, 0, 8, 0,168, 0, 0, 5,124, 0, 0, 0, 60, 3, 28, 0, 36,
+ 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 0,136, 0, 36, 1, 88, 0,220, 0,200, 1,200, 0, 0, 0, 0, 1, 8, 0, 12, 0, 12,
+ 1, 8, 0,180, 0,128, 2, 80, 0, 36, 0,164, 0,220, 2,132, 0, 0, 0,152, 0,208, 0, 16, 14, 56, 0, 56, 12, 32, 0,120,
+ 0, 20, 0, 24, 0,228, 0, 32, 0, 80, 0, 28, 0, 16, 0, 8, 0, 52, 0,244, 0,240, 1,168, 0,204, 1, 28, 0, 0, 0, 16,
+ 0, 28, 0, 12, 0, 24, 0, 48, 0, 16, 0, 20, 0, 16, 0, 24, 1, 56, 0, 0, 0, 56, 0, 44, 0, 64, 0, 48, 0, 8, 0, 44,
+ 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, 12,
+ 0, 92, 0, 28, 0, 20, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 60, 0, 56, 0,108, 0,140, 0, 4, 0, 20,
+ 0, 12, 0, 8, 0, 40, 0, 0, 0, 68, 0,176, 0, 24, 1, 4, 0,116, 1,152, 0, 72, 0, 64, 0,192, 0, 44, 0, 64, 0,116,
+ 0, 60, 0,104, 0, 52, 0, 44, 0, 44, 0, 68, 0, 44, 0, 64, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 28,
+ 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0,120, 0, 24, 0,204, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12,
+ 0, 12, 1, 16, 0, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 44, 0, 20,
+ 0, 68, 0, 24, 0, 56, 0, 72, 0,252, 1,224, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172, 0, 0, 83, 84, 82, 67,
+ 0, 0, 1, 57, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2,
+ 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 4, 0, 5,
+ 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3,
+ 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3,
+ 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8,
+ 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6,
+ 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4,
+ 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15,
+ 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 2, 0, 20,
+ 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25,
+ 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 20, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31,
+ 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 6,
+ 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, 31, 0, 6, 0, 32, 0, 45,
+ 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 18, 0, 2, 0, 20, 0, 0, 0, 48, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1,
+ 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 53, 0, 2, 0, 54,
+ 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 20, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 58, 0, 7, 0, 59,
+ 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, 24, 0, 64, 0, 2, 0, 46,
+ 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 67, 0, 7, 0, 61,
+ 0, 2, 0, 18, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 20, 0, 4, 0, 69, 0, 4, 0, 70, 0, 9, 0, 2, 0, 7, 0, 71,
+ 0, 0, 0, 17, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 12, 0, 27, 0, 31, 0, 37, 0, 75, 0, 0, 0, 76,
+ 0, 4, 0, 77, 0, 7, 0, 61, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 18, 0, 2, 0, 81, 0, 2, 0, 82,
+ 0, 2, 0, 20, 0, 39, 0, 5, 0, 27, 0, 83, 0, 2, 0, 84, 0, 2, 0, 85, 0, 2, 0, 86, 0, 4, 0, 37, 0, 40, 0, 6,
+ 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 87, 0, 0, 0, 88, 0, 4, 0, 23, 0, 4, 0, 89, 0, 41, 0, 10, 0, 41, 0, 0,
+ 0, 41, 0, 1, 0, 4, 0, 90, 0, 4, 0, 91, 0, 4, 0, 92, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 93, 0, 0, 0, 94,
+ 0, 0, 0, 95, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 96, 0, 4, 0, 93, 0, 4, 0, 97, 0, 12, 0, 98, 0, 40, 0, 99,
+ 0, 40, 0,100, 0, 4, 0,101, 0, 4, 0,102, 0, 12, 0,103, 0, 0, 0,104, 0, 4, 0,105, 0, 4, 0,106, 0, 9, 0,107,
+ 0, 8, 0,108, 0, 43, 0, 5, 0, 4, 0,109, 0, 4, 0,110, 0, 4, 0, 93, 0, 4, 0, 37, 0, 9, 0, 2, 0, 44, 0, 20,
+ 0, 27, 0, 31, 0, 2, 0, 18, 0, 2, 0, 20, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115,
+ 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,118, 0, 7, 0,119, 0, 7, 0,120, 0, 7, 0,121, 0, 2, 0,122, 0, 2, 0,123,
+ 0, 7, 0,124, 0, 36, 0, 79, 0, 39, 0,125, 0, 32, 0,126, 0, 45, 0, 12, 0, 4, 0,127, 0, 4, 0,128, 0, 4, 0,129,
+ 0, 4, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 2, 0, 20, 0, 2, 0,133, 0, 2, 0,134, 0, 2, 0,135, 0, 2, 0,136,
+ 0, 2, 0,137, 0, 46, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,138, 0, 47, 0,139, 0, 48, 0,140, 0, 49, 0,141,
+ 0, 2, 0,133, 0, 2, 0, 20, 0, 2, 0,142, 0, 2, 0, 18, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,143, 0, 2, 0,144,
+ 0, 2, 0,145, 0, 2, 0,146, 0, 2, 0,147, 0, 2, 0,148, 0, 2, 0,149, 0, 4, 0,150, 0, 4, 0,151, 0, 43, 0,152,
+ 0, 30, 0,153, 0, 7, 0,154, 0, 4, 0,155, 0, 2, 0,156, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 7, 0,160,
+ 0, 7, 0,161, 0, 9, 0,162, 0, 50, 0, 31, 0, 2, 0,163, 0, 2, 0,164, 0, 2, 0,165, 0, 2, 0,166, 0, 32, 0,167,
+ 0, 51, 0,168, 0, 0, 0,169, 0, 0, 0,170, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0,173, 0, 7, 0,174, 0, 7, 0,175,
+ 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 2, 0,180, 0, 2, 0,181, 0, 2, 0,182, 0, 7, 0,183,
+ 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0, 57, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190,
+ 0, 7, 0,191, 0, 7, 0,192, 0, 52, 0, 15, 0, 0, 0,193, 0, 9, 0,194, 0, 0, 0,195, 0, 0, 0,196, 0, 4, 0,197,
+ 0, 4, 0,198, 0, 9, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 4, 0,203, 0, 9, 0,204, 0, 9, 0,205,
+ 0, 4, 0,206, 0, 4, 0, 37, 0, 53, 0, 6, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,207, 0, 7, 0, 67,
+ 0, 4, 0, 64, 0, 54, 0, 5, 0, 2, 0, 20, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,208, 0, 53, 0,202, 0, 55, 0, 17,
+ 0, 32, 0,167, 0, 46, 0,209, 0, 56, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 2, 0, 18, 0, 2, 0,213, 0, 7, 0,113,
+ 0, 7, 0,114, 0, 7, 0,214, 0, 4, 0,215, 0, 2, 0,216, 0, 2, 0,217, 0, 4, 0,133, 0, 4, 0,143, 0, 2, 0,218,
+ 0, 2, 0,219, 0, 51, 0, 56, 0, 27, 0, 31, 0, 7, 0,220, 0, 7, 0,221, 0, 7, 0,222, 0, 7, 0,223, 0, 7, 0,224,
+ 0, 7, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 7, 0,232,
+ 0, 7, 0,233, 0, 7, 0,234, 0, 7, 0,235, 0, 7, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 7, 0,239, 0, 2, 0,240,
+ 0, 2, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 2, 0,244, 0, 2, 0,245, 0, 2, 0,246, 0, 2, 0, 20, 0, 2, 0, 18,
+ 0, 2, 0,213, 0, 7, 0,247, 0, 7, 0,248, 0, 7, 0,249, 0, 7, 0,250, 0, 2, 0,251, 0, 2, 0,252, 0, 2, 0,253,
+ 0, 2, 0,131, 0, 4, 0, 23, 0, 4, 0,128, 0, 4, 0,129, 0, 4, 0,130, 0, 7, 0,254, 0, 7, 0,255, 0, 7, 0,189,
+ 0, 45, 1, 0, 0, 57, 1, 1, 0, 36, 0, 79, 0, 46, 0,209, 0, 52, 1, 2, 0, 54, 1, 3, 0, 55, 1, 4, 0, 30, 0,153,
+ 0, 0, 1, 5, 0, 0, 1, 6, 0, 58, 0, 8, 0, 7, 1, 7, 0, 7, 1, 8, 0, 7, 0,175, 0, 4, 0, 20, 0, 7, 1, 9,
+ 0, 7, 1, 10, 0, 7, 1, 11, 0, 32, 0, 45, 0, 59, 0, 80, 0, 27, 0, 31, 0, 2, 0, 18, 0, 2, 1, 12, 0, 4, 1, 13,
+ 0, 2, 0,177, 0, 2, 1, 14, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 1, 15, 0, 7, 1, 16,
+ 0, 7, 1, 17, 0, 7, 1, 18, 0, 7, 1, 19, 0, 7, 1, 20, 0, 7, 1, 21, 0, 7, 1, 22, 0, 7, 1, 23, 0, 7, 1, 24,
+ 0, 7, 1, 25, 0, 60, 1, 26, 0, 2, 1, 27, 0, 2, 0, 70, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 1, 28, 0, 7, 1, 29,
+ 0, 7, 1, 30, 0, 2, 1, 31, 0, 2, 1, 32, 0, 2, 1, 33, 0, 2, 1, 34, 0, 0, 1, 35, 0, 0, 1, 36, 0, 2, 1, 37,
+ 0, 2, 1, 38, 0, 2, 1, 39, 0, 2, 1, 40, 0, 2, 1, 41, 0, 7, 1, 42, 0, 7, 1, 43, 0, 7, 1, 44, 0, 7, 1, 45,
+ 0, 2, 1, 46, 0, 2, 0, 43, 0, 2, 1, 47, 0, 2, 1, 48, 0, 2, 1, 49, 0, 2, 1, 50, 0, 7, 1, 51, 0, 7, 1, 52,
+ 0, 7, 1, 53, 0, 7, 1, 54, 0, 7, 1, 55, 0, 7, 1, 56, 0, 7, 1, 57, 0, 7, 1, 58, 0, 7, 1, 59, 0, 7, 1, 60,
+ 0, 7, 1, 61, 0, 7, 1, 62, 0, 2, 1, 63, 0, 2, 1, 64, 0, 4, 1, 65, 0, 4, 1, 66, 0, 2, 1, 67, 0, 2, 1, 68,
+ 0, 2, 1, 69, 0, 2, 1, 70, 0, 7, 1, 71, 0, 7, 1, 72, 0, 7, 1, 73, 0, 7, 1, 74, 0, 2, 1, 75, 0, 2, 1, 76,
+ 0, 50, 1, 77, 0, 36, 0, 79, 0, 30, 0,153, 0, 39, 0,125, 0, 61, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 62, 0,129,
+ 0, 27, 0, 31, 0, 2, 0,177, 0, 2, 0, 20, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 1, 78, 0, 7, 1, 79,
+ 0, 7, 1, 80, 0, 7, 1, 81, 0, 7, 1, 82, 0, 7, 1, 83, 0, 7, 1, 84, 0, 7, 1, 85, 0, 7, 1, 86, 0, 7, 1, 87,
+ 0, 7, 1, 88, 0, 7, 1, 89, 0, 7, 1, 90, 0, 7, 1, 91, 0, 7, 1, 92, 0, 7, 1, 93, 0, 7, 1, 94, 0, 7, 1, 95,
+ 0, 7, 1, 96, 0, 7, 1, 97, 0, 7, 1, 98, 0, 7, 1, 99, 0, 7, 1,100, 0, 7, 1,101, 0, 7, 1,102, 0, 7, 1,103,
+ 0, 7, 1,104, 0, 2, 1,105, 0, 2, 1,106, 0, 2, 1,107, 0, 0, 1,108, 0, 0, 1,109, 0, 7, 1,110, 0, 7, 1,111,
+ 0, 2, 1,112, 0, 2, 1,113, 0, 7, 1,114, 0, 7, 1,115, 0, 7, 1,116, 0, 7, 1,117, 0, 2, 1,118, 0, 2, 1,119,
+ 0, 4, 1, 13, 0, 4, 1,120, 0, 2, 1,121, 0, 2, 1,122, 0, 2, 1,123, 0, 2, 1,124, 0, 7, 1,125, 0, 7, 1,126,
+ 0, 7, 1,127, 0, 7, 1,128, 0, 7, 1,129, 0, 7, 1,130, 0, 7, 1,131, 0, 7, 1,132, 0, 7, 1,133, 0, 7, 1,134,
+ 0, 0, 1,135, 0, 7, 1,136, 0, 7, 1,137, 0, 7, 1,138, 0, 4, 1,139, 0, 0, 1,140, 0, 0, 1, 47, 0, 0, 1,141,
+ 0, 0, 1, 5, 0, 2, 1,142, 0, 2, 1,143, 0, 2, 1, 64, 0, 2, 1,144, 0, 2, 1,145, 0, 2, 1,146, 0, 7, 1,147,
+ 0, 7, 1,148, 0, 7, 1,149, 0, 7, 1,150, 0, 7, 1,151, 0, 2, 0,163, 0, 2, 0,164, 0, 54, 1,152, 0, 54, 1,153,
+ 0, 0, 1,154, 0, 0, 1,155, 0, 0, 1,156, 0, 0, 1,157, 0, 2, 1,158, 0, 2, 1, 12, 0, 7, 1,159, 0, 7, 1,160,
+ 0, 50, 1, 77, 0, 57, 1, 1, 0, 36, 0, 79, 0, 63, 1,161, 0, 30, 0,153, 0, 7, 1,162, 0, 7, 1,163, 0, 7, 1,164,
+ 0, 7, 1,165, 0, 7, 1,166, 0, 2, 1,167, 0, 2, 0, 70, 0, 7, 1,168, 0, 7, 1,169, 0, 7, 1,170, 0, 7, 1,171,
+ 0, 7, 1,172, 0, 7, 1,173, 0, 7, 1,174, 0, 7, 1,175, 0, 7, 1,176, 0, 2, 1,177, 0, 2, 1,178, 0, 7, 1,179,
+ 0, 7, 1,180, 0, 7, 1,181, 0, 7, 1,182, 0, 7, 1,183, 0, 4, 1,184, 0, 4, 1,185, 0, 4, 1,186, 0, 39, 0,125,
+ 0, 12, 1,187, 0, 64, 0, 6, 0, 27, 0, 31, 0, 0, 1,188, 0, 7, 1,189, 0, 7, 0, 37, 0, 65, 0, 2, 0, 43, 0,152,
+ 0, 66, 0, 26, 0, 66, 0, 0, 0, 66, 0, 1, 0, 67, 1,190, 0, 4, 1,191, 0, 4, 1,192, 0, 4, 1,193, 0, 4, 1,194,
+ 0, 4, 1,195, 0, 4, 1,196, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 1,197, 0, 2, 1,198, 0, 7, 0, 5, 0, 7, 0, 6,
+ 0, 7, 0, 7, 0, 7, 1,199, 0, 7, 1,200, 0, 7, 1,201, 0, 7, 1,202, 0, 7, 1,203, 0, 7, 1,204, 0, 7, 1,205,
+ 0, 7, 0, 23, 0, 7, 1,206, 0, 7, 1,207, 0, 68, 0, 15, 0, 27, 0, 31, 0, 67, 1,190, 0, 12, 1,208, 0, 12, 1,209,
+ 0, 36, 0, 79, 0, 62, 1,210, 0, 2, 0, 20, 0, 2, 1,211, 0, 4, 0,176, 0, 7, 1, 7, 0, 7, 0,175, 0, 7, 1, 8,
+ 0, 7, 1,212, 0, 7, 1,213, 0, 7, 1,214, 0, 35, 0, 10, 0, 7, 1,215, 0, 7, 1,216, 0, 7, 1,217, 0, 7, 1,218,
+ 0, 2, 1,219, 0, 2, 1,220, 0, 0, 1,221, 0, 0, 1,222, 0, 0, 1,223, 0, 0, 1,224, 0, 34, 0, 7, 0, 7, 1,225,
+ 0, 7, 1,216, 0, 7, 1,217, 0, 2, 1,221, 0, 2, 1,224, 0, 7, 1,218, 0, 7, 0, 37, 0, 69, 0, 21, 0, 69, 0, 0,
+ 0, 69, 0, 1, 0, 2, 0, 18, 0, 2, 1,226, 0, 2, 1,224, 0, 2, 0, 20, 0, 2, 1,227, 0, 2, 1,228, 0, 2, 1,229,
+ 0, 2, 1,230, 0, 2, 1,231, 0, 2, 1,232, 0, 2, 1,233, 0, 2, 1,234, 0, 7, 1,235, 0, 7, 1,236, 0, 34, 0, 49,
+ 0, 35, 0, 50, 0, 2, 1,237, 0, 2, 1,238, 0, 4, 1,239, 0, 70, 0, 5, 0, 2, 1,240, 0, 2, 1,226, 0, 0, 0, 20,
+ 0, 0, 0, 37, 0, 2, 0, 70, 0, 71, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 1,241, 0, 72, 0, 57,
+ 0, 27, 0, 31, 0, 67, 1,190, 0, 12, 1,242, 0, 12, 1,209, 0, 32, 1,243, 0, 32, 1,244, 0, 32, 1,245, 0, 36, 0, 79,
+ 0, 73, 1,246, 0, 38, 1,247, 0, 62, 1,210, 0, 12, 1,248, 0, 7, 1, 7, 0, 7, 0,175, 0, 7, 1, 8, 0, 4, 0,176,
+ 0, 2, 1,249, 0, 2, 1,211, 0, 2, 0, 20, 0, 2, 1,250, 0, 7, 1,251, 0, 7, 1,252, 0, 7, 1,253, 0, 2, 1,229,
+ 0, 2, 1,230, 0, 2, 1,254, 0, 2, 1,255, 0, 4, 0, 70, 0, 2, 0, 23, 0, 2, 0, 98, 0, 2, 0, 67, 0, 2, 2, 0,
+ 0, 7, 2, 1, 0, 7, 2, 2, 0, 7, 2, 3, 0, 7, 2, 4, 0, 7, 2, 5, 0, 7, 2, 6, 0, 7, 2, 7, 0, 7, 2, 8,
+ 0, 7, 2, 9, 0, 7, 2, 10, 0, 0, 2, 11, 0, 0, 2, 12, 0, 64, 2, 13, 0, 64, 2, 14, 0, 64, 2, 15, 0, 64, 2, 16,
+ 0, 4, 2, 17, 0, 4, 2, 18, 0, 4, 2, 19, 0, 4, 0, 37, 0, 71, 2, 20, 0, 4, 2, 21, 0, 4, 2, 22, 0, 70, 2, 23,
+ 0, 70, 2, 24, 0, 74, 0, 39, 0, 27, 0, 31, 0, 67, 1,190, 0, 12, 2, 25, 0, 36, 0, 79, 0, 38, 1,247, 0, 62, 1,210,
+ 0, 75, 2, 26, 0, 76, 2, 27, 0, 77, 2, 28, 0, 78, 2, 29, 0, 79, 2, 30, 0, 80, 2, 31, 0, 81, 2, 32, 0, 82, 2, 33,
+ 0, 74, 2, 34, 0, 83, 2, 35, 0, 84, 2, 36, 0, 84, 2, 37, 0, 84, 2, 38, 0, 4, 0, 54, 0, 4, 2, 39, 0, 4, 2, 40,
+ 0, 4, 2, 41, 0, 4, 2, 42, 0, 4, 0,176, 0, 7, 1, 7, 0, 7, 0,175, 0, 7, 1, 8, 0, 7, 2, 43, 0, 7, 0, 37,
+ 0, 2, 2, 44, 0, 2, 0, 20, 0, 2, 2, 45, 0, 2, 2, 46, 0, 2, 1,211, 0, 2, 2, 47, 0, 85, 2, 48, 0, 86, 2, 49,
+ 0, 9, 0,162, 0, 77, 0, 8, 0, 9, 2, 50, 0, 7, 2, 51, 0, 4, 2, 52, 0, 0, 0, 20, 0, 0, 2, 53, 0, 2, 1, 13,
+ 0, 2, 2, 54, 0, 2, 2, 55, 0, 75, 0, 8, 0, 4, 2, 56, 0, 4, 2, 57, 0, 4, 2, 58, 0, 4, 2, 59, 0, 0, 0, 37,
+ 0, 0, 1,226, 0, 0, 2, 60, 0, 0, 0, 20, 0, 79, 0, 5, 0, 4, 2, 56, 0, 4, 2, 57, 0, 0, 2, 61, 0, 0, 2, 62,
+ 0, 2, 0, 20, 0, 87, 0, 2, 0, 4, 2, 63, 0, 7, 1,217, 0, 80, 0, 3, 0, 87, 2, 64, 0, 4, 2, 65, 0, 4, 0, 20,
+ 0, 78, 0, 6, 0, 7, 2, 66, 0, 2, 2, 67, 0, 0, 0, 20, 0, 0, 1,226, 0, 0, 2, 62, 0, 0, 2, 68, 0, 81, 0, 4,
+ 0, 0, 0,207, 0, 0, 0,183, 0, 0, 0,184, 0, 0, 0,185, 0, 88, 0, 6, 0, 46, 2, 50, 0, 0, 0, 20, 0, 0, 2, 53,
+ 0, 2, 1, 13, 0, 2, 2, 54, 0, 2, 2, 55, 0, 89, 0, 1, 0, 7, 2, 69, 0, 90, 0, 5, 0, 0, 0,207, 0, 0, 0,183,
+ 0, 0, 0,184, 0, 0, 0,185, 0, 4, 0, 37, 0, 82, 0, 1, 0, 7, 2, 70, 0, 83, 0, 2, 0, 4, 2, 71, 0, 4, 0, 18,
+ 0, 76, 0, 7, 0, 7, 2, 51, 0, 46, 2, 50, 0, 0, 0, 20, 0, 0, 2, 53, 0, 2, 1, 13, 0, 2, 2, 54, 0, 2, 2, 55,
+ 0, 91, 0, 1, 0, 7, 2, 72, 0, 92, 0, 1, 0, 4, 2, 73, 0, 93, 0, 1, 0, 0, 2, 74, 0, 94, 0, 1, 0, 7, 2, 51,
+ 0, 95, 0, 4, 0, 7, 0,207, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 96, 0, 1, 0, 95, 2, 52, 0, 97, 0, 5,
+ 0, 4, 2, 75, 0, 4, 2, 76, 0, 0, 0, 20, 0, 0, 1,226, 0, 0, 0,182, 0, 98, 0, 2, 0, 4, 2, 77, 0, 4, 2, 76,
+ 0, 99, 0, 14, 0, 99, 0, 0, 0, 99, 0, 1, 0, 97, 2, 78, 0, 96, 2, 79, 0, 98, 2, 80, 0, 0, 2, 81, 0, 12, 2, 82,
+ 0, 12, 2, 83, 0,100, 2, 84, 0, 4, 0, 54, 0, 4, 2, 40, 0, 4, 2, 39, 0, 4, 0, 37, 0, 78, 2, 85, 0, 85, 0, 14,
+ 0, 12, 2, 86, 0, 78, 2, 85, 0, 0, 2, 87, 0, 0, 2, 88, 0, 0, 2, 89, 0, 0, 2, 90, 0, 0, 2, 91, 0, 0, 2, 92,
+ 0, 0, 2, 93, 0, 0, 0, 20, 0, 84, 2, 36, 0, 84, 2, 38, 0, 2, 2, 94, 0, 0, 2, 95, 0, 86, 0, 8, 0, 4, 2, 96,
+ 0, 4, 2, 97, 0, 75, 2, 98, 0, 79, 2, 99, 0, 4, 2, 40, 0, 4, 2, 39, 0, 4, 0, 54, 0, 4, 0, 37, 0,101, 0, 6,
+ 0,101, 0, 0, 0,101, 0, 1, 0, 4, 0, 18, 0, 4, 1, 13, 0, 0, 0, 17, 0, 0, 2,100, 0,102, 0, 7, 0,101, 2,101,
+ 0, 2, 2,102, 0, 2, 2, 86, 0, 2, 2,103, 0, 2, 0, 93, 0, 9, 2,104, 0, 9, 2,105, 0,103, 0, 3, 0,101, 2,101,
+ 0, 32, 0,167, 0, 0, 0, 17, 0,104, 0, 5, 0,101, 2,101, 0, 32, 0,167, 0, 0, 0, 17, 0, 2, 2,106, 0, 0, 2,107,
+ 0,105, 0, 5, 0,101, 2,101, 0, 7, 0, 91, 0, 7, 2,108, 0, 4, 2,109, 0, 4, 2,110, 0,106, 0, 5, 0,101, 2,101,
+ 0, 32, 2,111, 0, 0, 0, 72, 0, 4, 1, 13, 0, 4, 0, 20, 0,107, 0, 13, 0,101, 2,101, 0, 32, 2,112, 0, 32, 2,113,
+ 0, 32, 2,114, 0, 32, 2,115, 0, 7, 2,116, 0, 7, 2,117, 0, 7, 2,108, 0, 7, 2,118, 0, 4, 2,119, 0, 4, 2,120,
+ 0, 4, 0, 93, 0, 4, 2,121, 0,108, 0, 5, 0,101, 2,101, 0, 2, 2,122, 0, 2, 0, 20, 0, 7, 2,123, 0, 32, 2,124,
+ 0,109, 0, 3, 0,101, 2,101, 0, 7, 2,125, 0, 4, 0, 93, 0,110, 0, 10, 0,101, 2,101, 0, 7, 2,126, 0, 4, 2,127,
+ 0, 4, 0, 37, 0, 2, 0, 93, 0, 2, 2,128, 0, 2, 2,129, 0, 2, 2,130, 0, 7, 2,131, 0, 0, 2,132, 0,111, 0, 3,
+ 0,101, 2,101, 0, 7, 0, 37, 0, 4, 0, 18, 0,112, 0, 11, 0,101, 2,101, 0, 51, 2,133, 0, 7, 2,134, 0, 4, 2,135,
+ 0, 0, 2,132, 0, 7, 2,136, 0, 4, 2,137, 0, 32, 2,138, 0, 0, 2,139, 0, 4, 2,140, 0, 4, 0, 37, 0,113, 0, 10,
+ 0,101, 2,101, 0, 32, 2,141, 0, 46, 2,142, 0, 4, 0, 93, 0, 4, 2,143, 0, 7, 2,144, 0, 7, 2,145, 0, 0, 2,139,
+ 0, 4, 2,140, 0, 4, 0, 37, 0,114, 0, 3, 0,101, 2,101, 0, 7, 2,146, 0, 4, 2,147, 0,115, 0, 5, 0,101, 2,101,
+ 0, 7, 2,148, 0, 0, 2,132, 0, 2, 0, 20, 0, 2, 2,149, 0,116, 0, 8, 0,101, 2,101, 0, 32, 0,167, 0, 7, 2,148,
+ 0, 7, 1,218, 0, 7, 0,109, 0, 0, 2,132, 0, 2, 0, 20, 0, 2, 0, 18, 0,117, 0, 21, 0,101, 2,101, 0, 32, 2,150,
+ 0, 0, 2,132, 0, 51, 2,133, 0, 32, 2,138, 0, 2, 0, 20, 0, 2, 0, 37, 0, 7, 2,151, 0, 7, 2,152, 0, 7, 2,153,
+ 0, 7, 1,251, 0, 7, 2,154, 0, 7, 2,155, 0, 7, 2,156, 0, 7, 2,157, 0, 4, 2,137, 0, 4, 2,140, 0, 0, 2,139,
+ 0, 7, 2,158, 0, 7, 2,159, 0, 7, 0, 43, 0,118, 0, 7, 0,101, 2,101, 0, 2, 2,160, 0, 2, 2,161, 0, 4, 0, 70,
+ 0, 32, 0,167, 0, 7, 2,162, 0, 0, 2,132, 0,119, 0, 9, 0,101, 2,101, 0, 32, 0,167, 0, 7, 2,163, 0, 7, 2,164,
+ 0, 7, 2,157, 0, 4, 2,165, 0, 4, 2,166, 0, 7, 2,167, 0, 0, 0, 17, 0,120, 0, 1, 0,101, 2,101, 0,121, 0, 5,
+ 0,101, 2,101, 0,122, 2,168, 0,123, 2,169, 0,124, 2,170, 0,125, 2,171, 0,126, 0, 14, 0,101, 2,101, 0, 78, 2,172,
+ 0, 78, 2,173, 0, 78, 2,174, 0, 78, 2,175, 0, 78, 2,176, 0, 78, 2,177, 0, 75, 2,178, 0, 4, 2,179, 0, 4, 2,180,
+ 0, 2, 2,181, 0, 2, 0, 37, 0, 7, 2,182, 0,127, 2,183, 0,128, 0, 3, 0,101, 2,101, 0,129, 2,184, 0,130, 2,183,
+ 0,131, 0, 4, 0,101, 2,101, 0, 32, 0,167, 0, 4, 2,185, 0, 4, 0, 37, 0,132, 0, 2, 0, 4, 2,186, 0, 7, 1,217,
+ 0,133, 0, 2, 0, 4, 0,129, 0, 4, 2,187, 0,134, 0, 20, 0,101, 2,101, 0, 32, 0,167, 0, 0, 2,132, 0, 2, 2,188,
+ 0, 2, 2,189, 0, 2, 0, 20, 0, 2, 0, 37, 0, 7, 2,190, 0, 7, 2,191, 0, 4, 0, 54, 0, 4, 2,192, 0,133, 2,193,
+ 0,132, 2,194, 0, 4, 2,195, 0, 4, 2,196, 0, 4, 2,197, 0, 4, 2,187, 0, 7, 2,198, 0, 7, 2,199, 0, 7, 2,200,
+ 0,135, 0, 8, 0,101, 2,101, 0,136, 2,201, 0,129, 2,184, 0, 4, 2,202, 0, 4, 2,203, 0, 4, 2,204, 0, 2, 0, 20,
+ 0, 2, 0, 57, 0,137, 0, 5, 0,101, 2,101, 0, 32, 0, 45, 0, 2, 2,205, 0, 2, 0, 20, 0, 2, 2,206, 0,138, 0, 5,
+ 0,101, 2,101, 0, 4, 2,207, 0, 2, 0, 20, 0, 2, 2,208, 0, 7, 2,209, 0,139, 0, 3, 0,101, 2,101, 0,140, 2,210,
+ 0,125, 2,171, 0,141, 0, 10, 0,101, 2,101, 0, 32, 2,211, 0, 32, 2,212, 0, 0, 2,213, 0, 7, 2,214, 0, 2, 2,215,
+ 0, 2, 2,216, 0, 0, 2,217, 0, 0, 2,218, 0, 0, 2,107, 0,142, 0, 9, 0,101, 2,101, 0, 32, 2,219, 0, 0, 2,213,
+ 0, 7, 2,220, 0, 7, 2,221, 0, 0, 1, 13, 0, 0, 2,122, 0, 0, 2,222, 0, 0, 0, 37, 0,143, 0, 24, 0, 27, 0, 31,
+ 0, 2, 1,227, 0, 2, 1,228, 0, 2, 2,223, 0, 2, 0, 20, 0, 2, 2,224, 0, 2, 2,225, 0, 2, 2,226, 0, 2, 0, 70,
+ 0, 0, 2,227, 0, 0, 2,228, 0, 0, 2,229, 0, 0, 0, 18, 0, 4, 0, 37, 0, 7, 2,230, 0, 7, 2,231, 0, 7, 2,232,
+ 0, 7, 2,233, 0, 7, 2,234, 0, 7, 2,235, 0, 34, 2,236, 0, 36, 0, 79, 0, 38, 1,247, 0, 80, 2, 31, 0,144, 0, 3,
+ 0,144, 0, 0, 0,144, 0, 1, 0, 0, 0, 17, 0, 67, 0, 3, 0, 7, 2,237, 0, 4, 0, 20, 0, 4, 0, 37, 0, 32, 0,111,
+ 0, 27, 0, 31, 0, 2, 0, 18, 0, 2, 2,238, 0, 4, 2,239, 0, 4, 2,240, 0, 4, 2,241, 0, 0, 2,242, 0, 32, 0, 38,
+ 0, 32, 2,243, 0, 32, 2,244, 0, 32, 2,245, 0, 32, 2,246, 0, 36, 0, 79, 0, 73, 1,246, 0, 67, 1,190, 0,145, 2,247,
+ 0,145, 2,248, 0,146, 2,249, 0, 9, 0, 2, 0, 12, 2,250, 0, 12, 2, 25, 0, 12, 1,209, 0, 12, 2,251, 0, 12, 2,252,
+ 0, 62, 1,210, 0, 7, 1, 7, 0, 7, 2,253, 0, 7, 2,254, 0, 7, 0,175, 0, 7, 2,255, 0, 7, 1, 8, 0, 7, 3, 0,
+ 0, 7, 3, 1, 0, 7, 2,163, 0, 7, 3, 2, 0, 7, 0,211, 0, 4, 3, 3, 0, 2, 0, 20, 0, 2, 3, 4, 0, 2, 3, 5,
+ 0, 2, 3, 6, 0, 2, 3, 7, 0, 2, 3, 8, 0, 2, 3, 9, 0, 2, 3, 10, 0, 2, 3, 11, 0, 2, 3, 12, 0, 2, 3, 13,
+ 0, 2, 3, 14, 0, 4, 3, 15, 0, 4, 3, 16, 0, 4, 3, 17, 0, 4, 3, 18, 0, 7, 3, 19, 0, 7, 3, 20, 0, 7, 3, 21,
+ 0, 7, 3, 22, 0, 7, 3, 23, 0, 7, 3, 24, 0, 7, 3, 25, 0, 7, 3, 26, 0, 7, 3, 27, 0, 7, 3, 28, 0, 7, 3, 29,
+ 0, 7, 3, 30, 0, 0, 3, 31, 0, 0, 3, 32, 0, 0, 1,211, 0, 0, 3, 33, 0, 0, 3, 34, 0, 0, 3, 35, 0, 7, 3, 36,
+ 0, 7, 3, 37, 0, 39, 0,125, 0, 12, 3, 38, 0, 12, 3, 39, 0, 12, 3, 40, 0, 12, 3, 41, 0, 7, 3, 42, 0, 2, 2, 71,
+ 0, 2, 3, 43, 0, 7, 2, 52, 0, 4, 3, 44, 0, 4, 3, 45, 0,147, 3, 46, 0, 2, 3, 47, 0, 2, 0,218, 0, 7, 3, 48,
+ 0, 12, 3, 49, 0, 12, 3, 50, 0, 12, 3, 51, 0, 12, 3, 52, 0,148, 3, 53, 0,149, 3, 54, 0, 63, 3, 55, 0, 2, 3, 56,
+ 0, 2, 3, 57, 0, 2, 3, 58, 0, 2, 3, 59, 0, 7, 2, 44, 0, 2, 3, 60, 0, 2, 3, 61, 0,140, 3, 62, 0,129, 3, 63,
+ 0,129, 3, 64, 0, 4, 3, 65, 0, 4, 3, 66, 0, 4, 3, 67, 0, 4, 0, 70, 0, 9, 0,162, 0, 12, 3, 68, 0,150, 0, 14,
+ 0,150, 0, 0, 0,150, 0, 1, 0, 32, 0, 38, 0, 7, 2,163, 0, 7, 1, 9, 0, 7, 2,164, 0, 7, 2,157, 0, 0, 0, 17,
+ 0, 4, 2,165, 0, 4, 2,166, 0, 4, 3, 69, 0, 2, 0, 18, 0, 2, 3, 70, 0, 7, 2,167, 0,148, 0, 36, 0, 2, 3, 71,
+ 0, 2, 3, 72, 0, 2, 0, 20, 0, 2, 2,157, 0, 7, 3, 73, 0, 7, 3, 74, 0, 7, 3, 75, 0, 7, 3, 76, 0, 7, 3, 77,
+ 0, 7, 3, 78, 0, 7, 3, 79, 0, 7, 3, 80, 0, 7, 3, 81, 0, 7, 3, 82, 0, 7, 3, 83, 0, 7, 3, 84, 0, 7, 3, 85,
+ 0, 7, 3, 86, 0, 7, 3, 87, 0, 7, 3, 88, 0, 7, 3, 89, 0, 7, 3, 90, 0, 7, 3, 91, 0, 7, 3, 92, 0, 7, 3, 93,
+ 0, 7, 3, 94, 0, 7, 3, 95, 0, 7, 3, 96, 0, 2, 3, 97, 0, 2, 3, 98, 0, 2, 3, 99, 0, 2, 3,100, 0, 51, 0,168,
+ 0,151, 3,101, 0, 7, 3,102, 0, 4, 0, 37, 0,125, 0, 5, 0, 4, 0, 20, 0, 4, 3,103, 0, 4, 3,104, 0, 4, 3,105,
+ 0, 4, 3,106, 0,152, 0, 1, 0, 7, 1,225, 0,147, 0, 30, 0, 4, 0, 20, 0, 7, 3,107, 0, 7, 3,108, 0, 7, 3,109,
+ 0, 4, 3,110, 0, 4, 3,111, 0, 4, 3,112, 0, 4, 3,113, 0, 7, 3,114, 0, 7, 3,115, 0, 7, 3,116, 0, 7, 3,117,
+ 0, 7, 3,118, 0, 7, 3,119, 0, 7, 3,120, 0, 7, 3,121, 0, 7, 3,122, 0, 7, 3,123, 0, 7, 3,124, 0, 7, 3,125,
+ 0, 7, 3,126, 0, 7, 3,127, 0, 7, 3,128, 0, 7, 3,129, 0, 7, 3,130, 0, 7, 3,131, 0, 4, 3,132, 0, 4, 3,133,
+ 0, 7, 3,134, 0, 7, 3, 27, 0,149, 0, 44, 0,136, 3,135, 0, 4, 3,136, 0, 4, 3,137, 0,153, 3,138, 0,154, 3,139,
+ 0, 7, 0, 37, 0, 7, 3,140, 0, 7, 3,141, 0, 7, 3,142, 0, 7, 3,143, 0, 7, 3,144, 0, 7, 3,145, 0, 7, 3,146,
+ 0, 7, 3,147, 0, 7, 3,148, 0, 7, 3,149, 0, 2, 3,150, 0, 2, 3,151, 0, 7, 3,152, 0, 7, 3,153, 0, 4, 0,130,
+ 0, 4, 3,154, 0, 4, 3,155, 0, 2, 3,156, 0, 2, 3,157, 0,152, 3,158, 0, 4, 3,159, 0, 4, 0, 81, 0, 7, 3,160,
+ 0, 7, 3,161, 0, 7, 3,162, 0, 7, 3,163, 0, 2, 3,164, 0, 2, 3,165, 0, 2, 3,166, 0, 2, 3,167, 0, 2, 3,168,
+ 0, 2, 3,169, 0, 2, 3,170, 0, 2, 3,171, 0,155, 3,172, 0, 7, 3,173, 0, 7, 3,174, 0,125, 3,175, 0,140, 0, 48,
+ 0, 2, 0, 18, 0, 2, 3,176, 0, 2, 3,177, 0, 2, 3,178, 0, 7, 3,179, 0, 2, 3,180, 0, 2, 3,181, 0, 7, 3,182,
+ 0, 2, 3,183, 0, 2, 3,184, 0, 7, 3,185, 0, 7, 3,186, 0, 7, 3,187, 0, 7, 3,188, 0, 7, 3,189, 0, 7, 3,190,
+ 0, 4, 3,191, 0, 7, 3,192, 0, 7, 3,193, 0, 7, 3,194, 0, 74, 3,195, 0, 74, 3,196, 0, 74, 3,197, 0, 0, 3,198,
+ 0, 7, 3,199, 0, 7, 3,200, 0, 36, 0, 79, 0, 2, 3,201, 0, 0, 3,202, 0, 0, 3,203, 0, 7, 3,204, 0, 4, 3,205,
+ 0, 7, 3,206, 0, 7, 3,207, 0, 4, 3,208, 0, 4, 0, 20, 0, 7, 3,209, 0, 7, 3,210, 0, 7, 3,211, 0, 78, 3,212,
+ 0, 7, 3,213, 0, 7, 3,214, 0, 7, 3,215, 0, 7, 3,216, 0, 7, 3,217, 0, 7, 3,218, 0, 7, 3,219, 0, 4, 3,220,
+ 0,156, 0, 71, 0, 27, 0, 31, 0, 2, 0,177, 0, 2, 1, 14, 0, 2, 1, 47, 0, 2, 3,221, 0, 7, 3,222, 0, 7, 3,223,
+ 0, 7, 3,224, 0, 7, 3,225, 0, 7, 3,226, 0, 7, 3,227, 0, 7, 3,228, 0, 7, 3,229, 0, 7, 1, 84, 0, 7, 1, 86,
+ 0, 7, 1, 85, 0, 7, 3,230, 0, 4, 3,231, 0, 7, 3,232, 0, 7, 3,233, 0, 7, 3,234, 0, 7, 3,235, 0, 7, 3,236,
+ 0, 7, 3,237, 0, 7, 3,238, 0, 2, 3,239, 0, 2, 1, 13, 0, 2, 3,240, 0, 2, 3,241, 0, 2, 3,242, 0, 2, 3,243,
+ 0, 2, 3,244, 0, 2, 3,245, 0, 7, 3,246, 0, 7, 3,247, 0, 7, 3,248, 0, 7, 3,249, 0, 7, 3,250, 0, 7, 3,251,
+ 0, 7, 3,252, 0, 7, 3,253, 0, 7, 3,254, 0, 7, 3,255, 0, 7, 4, 0, 0, 7, 4, 1, 0, 2, 4, 2, 0, 2, 4, 3,
+ 0, 2, 4, 4, 0, 2, 4, 5, 0, 7, 4, 6, 0, 7, 4, 7, 0, 7, 4, 8, 0, 7, 4, 9, 0, 2, 4, 10, 0, 2, 4, 11,
+ 0, 2, 4, 12, 0, 2, 4, 13, 0, 7, 4, 14, 0, 7, 4, 15, 0, 7, 4, 16, 0, 7, 4, 17, 0, 2, 4, 18, 0, 2, 4, 19,
+ 0, 2, 4, 20, 0, 2, 0, 43, 0, 7, 4, 21, 0, 7, 4, 22, 0, 36, 0, 79, 0, 50, 1, 77, 0, 30, 0,153, 0, 39, 0,125,
+ 0,157, 0, 16, 0, 2, 4, 23, 0, 2, 4, 24, 0, 2, 4, 25, 0, 2, 0, 20, 0, 2, 4, 26, 0, 2, 4, 27, 0, 2, 4, 28,
+ 0, 2, 4, 29, 0, 2, 4, 30, 0, 2, 4, 31, 0, 2, 4, 32, 0, 2, 4, 33, 0, 4, 4, 34, 0, 7, 4, 35, 0, 7, 4, 36,
+ 0, 7, 4, 37, 0,158, 0, 8, 0,158, 0, 0, 0,158, 0, 1, 0, 4, 3, 3, 0, 4, 4, 38, 0, 4, 0, 20, 0, 2, 4, 39,
+ 0, 2, 4, 40, 0, 32, 0,167, 0,159, 0, 13, 0, 9, 4, 41, 0, 9, 4, 42, 0, 4, 4, 43, 0, 4, 4, 44, 0, 4, 4, 45,
+ 0, 4, 4, 46, 0, 4, 4, 47, 0, 4, 4, 48, 0, 4, 4, 49, 0, 4, 4, 50, 0, 4, 4, 51, 0, 4, 0, 37, 0, 0, 4, 52,
+ 0,160, 0, 5, 0, 9, 4, 53, 0, 9, 4, 54, 0, 4, 4, 55, 0, 4, 0, 70, 0, 0, 4, 56, 0,161, 0, 13, 0, 4, 0, 18,
+ 0, 4, 4, 57, 0, 4, 4, 58, 0, 4, 4, 59, 0, 4, 4, 60, 0, 4, 4, 61, 0, 4, 0, 93, 0, 4, 4, 62, 0, 4, 4, 63,
+ 0, 4, 4, 64, 0, 4, 4, 65, 0, 4, 4, 66, 0, 26, 0, 30, 0,162, 0, 4, 0, 4, 4, 67, 0, 7, 4, 68, 0, 2, 0, 20,
+ 0, 2, 2, 68, 0,163, 0, 11, 0,163, 0, 0, 0,163, 0, 1, 0, 0, 0, 17, 0, 62, 4, 69, 0, 63, 4, 70, 0, 4, 3, 3,
+ 0, 4, 4, 71, 0, 4, 4, 72, 0, 4, 0, 37, 0, 4, 4, 73, 0, 4, 4, 74, 0,164, 0,130, 0,159, 4, 75, 0,160, 4, 76,
+ 0,161, 4, 77, 0, 4, 4, 78, 0, 4, 0,130, 0, 4, 3,154, 0, 4, 4, 79, 0, 4, 4, 80, 0, 4, 4, 81, 0, 4, 4, 82,
+ 0, 2, 0, 20, 0, 2, 4, 83, 0, 7, 3, 20, 0, 7, 4, 84, 0, 7, 4, 85, 0, 7, 4, 86, 0, 7, 4, 87, 0, 7, 4, 88,
+ 0, 2, 4, 89, 0, 2, 4, 90, 0, 2, 4, 91, 0, 2, 4, 92, 0, 2, 0,217, 0, 2, 4, 93, 0, 2, 4, 94, 0, 2, 3,100,
+ 0, 2, 4, 95, 0, 2, 4, 96, 0, 2, 1, 34, 0, 2, 0,109, 0, 2, 4, 97, 0, 2, 4, 98, 0, 2, 4, 99, 0, 2, 4,100,
+ 0, 2, 4,101, 0, 2, 4,102, 0, 2, 4,103, 0, 2, 4,104, 0, 2, 4,105, 0, 2, 1, 35, 0, 2, 4,106, 0, 2, 4,107,
+ 0, 2, 4,108, 0, 2, 4,109, 0, 4, 4,110, 0, 4, 1, 13, 0, 2, 4,111, 0, 2, 4,112, 0, 2, 4,113, 0, 2, 4,114,
+ 0, 2, 4,115, 0, 2, 4,116, 0, 24, 4,117, 0, 24, 4,118, 0, 23, 4,119, 0, 12, 4,120, 0, 2, 4,121, 0, 2, 0, 37,
+ 0, 7, 4,122, 0, 7, 4,123, 0, 7, 4,124, 0, 7, 4,125, 0, 7, 4,126, 0, 7, 4,127, 0, 7, 4,128, 0, 7, 4,129,
+ 0, 7, 4,130, 0, 2, 4,131, 0, 2, 4,132, 0, 2, 4,133, 0, 2, 4,134, 0, 2, 4,135, 0, 2, 4,136, 0, 7, 4,137,
+ 0, 7, 4,138, 0, 7, 4,139, 0, 2, 4,140, 0, 2, 4,141, 0, 2, 4,142, 0, 2, 4,143, 0, 2, 4,144, 0, 2, 4,145,
+ 0, 2, 4,146, 0, 2, 4,147, 0, 2, 4,148, 0, 2, 4,149, 0, 4, 4,150, 0, 4, 4,151, 0, 4, 4,152, 0, 4, 4,153,
+ 0, 4, 4,154, 0, 7, 4,155, 0, 4, 4,156, 0, 4, 4,157, 0, 4, 4,158, 0, 4, 4,159, 0, 7, 4,160, 0, 7, 4,161,
+ 0, 7, 4,162, 0, 7, 4,163, 0, 7, 4,164, 0, 7, 4,165, 0, 7, 4,166, 0, 7, 4,167, 0, 7, 4,168, 0, 0, 4,169,
+ 0, 0, 4,170, 0, 4, 4,171, 0, 2, 4,172, 0, 2, 1, 12, 0, 0, 4,173, 0, 7, 4,174, 0, 7, 4,175, 0, 4, 4,176,
+ 0, 4, 4,177, 0, 7, 4,178, 0, 7, 4,179, 0, 2, 4,180, 0, 2, 4,181, 0, 7, 4,182, 0, 2, 4,183, 0, 2, 4,184,
+ 0, 4, 4,185, 0, 2, 4,186, 0, 2, 4,187, 0, 2, 4,188, 0, 2, 4,189, 0, 7, 4,190, 0, 7, 0, 70, 0, 42, 4,191,
+ 0,165, 0, 9, 0,165, 0, 0, 0,165, 0, 1, 0, 0, 0, 17, 0, 2, 4,192, 0, 2, 4,193, 0, 2, 4,194, 0, 2, 0, 43,
+ 0, 7, 4,195, 0, 7, 0, 70, 0,166, 0, 5, 0, 7, 4,196, 0, 0, 0, 18, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 1, 12,
+ 0,167, 0, 5, 0,167, 0, 0, 0,167, 0, 1, 0, 4, 4,197, 0, 0, 4,198, 0, 4, 0, 20, 0,168, 0, 5, 0,169, 4,199,
+ 0, 2, 0, 20, 0, 2, 4,200, 0, 2, 4,201, 0, 2, 4,202, 0,170, 0, 4, 0, 2, 0,109, 0, 2, 2,134, 0, 2, 4,203,
+ 0, 2, 4,204, 0,171, 0, 7, 0, 2, 0, 20, 0, 2, 4,205, 0, 2, 4,206, 0, 2, 4,207, 0,170, 4,208, 0, 7, 4,209,
+ 0, 4, 4,210, 0,172, 0, 4, 0,172, 0, 0, 0,172, 0, 1, 0, 0, 4,211, 0, 7, 4,212, 0,173, 0, 56, 0, 2, 4,213,
+ 0, 2, 4,214, 0, 7, 4,215, 0, 7, 4,216, 0, 2, 4,203, 0, 2, 4,217, 0, 7, 4,218, 0, 7, 4,219, 0, 2, 4,220,
+ 0, 2, 4,221, 0, 2, 4,222, 0, 2, 4,223, 0, 7, 4,224, 0, 7, 4,225, 0, 7, 4,226, 0, 7, 0, 37, 0, 2, 4,227,
+ 0, 2, 4,228, 0, 2, 4,229, 0, 2, 4,230, 0,168, 4,231, 0,171, 4,232, 0, 7, 4,233, 0, 7, 4,234, 0, 0, 4,235,
+ 0, 0, 4,236, 0, 0, 4,237, 0, 0, 4,238, 0, 0, 4,239, 0, 0, 4,240, 0, 2, 4,241, 0, 7, 4,242, 0, 7, 4,243,
+ 0, 7, 4,244, 0, 7, 4,245, 0, 7, 4,246, 0, 7, 4,247, 0, 7, 4,248, 0, 7, 4,249, 0, 7, 4,250, 0, 7, 4,251,
+ 0, 2, 4,252, 0, 0, 4,253, 0, 0, 4,254, 0, 0, 4,255, 0, 0, 5, 0, 0, 32, 5, 1, 0, 0, 5, 2, 0, 0, 5, 3,
+ 0, 0, 5, 4, 0, 0, 5, 5, 0, 0, 5, 6, 0, 0, 5, 7, 0, 0, 5, 8, 0, 0, 5, 9, 0, 0, 5, 10, 0,174, 0, 6,
+ 0, 2, 0,109, 0, 0, 2,134, 0, 0, 5, 11, 0, 0, 5, 12, 0, 0, 0, 20, 0, 0, 0,182, 0,175, 0, 26, 0,176, 5, 13,
+ 0, 50, 1, 77, 0, 60, 5, 14, 0,174, 5, 15, 0,174, 5, 16, 0,174, 5, 17, 0,174, 5, 18, 0,174, 5, 19, 0,174, 5, 20,
+ 0,174, 5, 21, 0, 7, 5, 22, 0, 2, 5, 23, 0, 2, 1, 47, 0, 2, 5, 24, 0, 2, 2, 1, 0, 0, 5, 25, 0, 0, 5, 26,
+ 0, 0, 5, 27, 0, 0, 5, 28, 0, 0, 0, 93, 0, 0, 5, 29, 0, 0, 5, 30, 0, 0, 5, 31, 0, 0, 5, 32, 0, 0, 5, 33,
+ 0, 0, 0,182, 0,177, 0, 43, 0, 27, 0, 31, 0, 32, 5, 34, 0,156, 5, 35, 0,177, 5, 36, 0, 46, 0,209, 0, 12, 5, 37,
+ 0,158, 5, 38, 0, 7, 5, 39, 0, 7, 5, 40, 0, 7, 5, 41, 0, 7, 5, 42, 0, 4, 3, 3, 0, 7, 5, 43, 0, 2, 5, 44,
+ 0, 2, 5, 45, 0, 2, 5, 46, 0, 2, 5, 47, 0, 2, 5, 48, 0, 2, 5, 49, 0, 2, 5, 50, 0, 2, 1, 5, 0, 57, 1, 1,
+ 0, 9, 5, 51, 0,157, 5, 52, 0,166, 5, 53, 0,173, 5, 54, 0,164, 0,183, 0,162, 5, 55, 0, 39, 0,125, 0, 12, 0,103,
+ 0, 12, 5, 56, 0, 2, 5, 57, 0, 2, 5, 58, 0, 2, 5, 59, 0, 2, 5, 60, 0,178, 5, 61, 0, 2, 5, 62, 0, 2, 5, 63,
+ 0, 2, 1, 64, 0, 2, 0,218, 0,175, 5, 64, 0, 4, 5, 65, 0, 4, 0, 37, 0,179, 0, 9, 0, 46, 0,209, 0, 45, 1, 0,
+ 0, 7, 2, 8, 0, 7, 2, 9, 0, 7, 0,109, 0, 7, 5, 66, 0, 7, 5, 67, 0, 2, 5, 68, 0, 2, 5, 69, 0,180, 0, 75,
+ 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0, 7, 5, 74, 0, 7, 5, 75,
+ 0, 7, 5, 76, 0, 7, 5, 77, 0, 7, 5, 78, 0, 7, 5, 79, 0, 7, 5, 80, 0, 7, 1, 20, 0, 7, 5, 81, 0, 4, 5, 82,
+ 0, 2, 5, 83, 0, 2, 5, 12, 0, 32, 5, 34, 0, 32, 5, 84, 0,179, 5, 85, 0,180, 5, 86, 0,183, 5, 87, 0,184, 5, 88,
+ 0,185, 5, 89, 0, 0, 5, 90, 0, 2, 4, 25, 0, 2, 5, 91, 0, 4, 3, 3, 0, 4, 5, 92, 0, 2, 5, 93, 0, 2, 5, 94,
+ 0, 2, 5, 95, 0, 0, 5, 96, 0, 0, 0, 43, 0, 7, 0,115, 0, 7, 5, 97, 0, 7, 5, 98, 0, 7, 5, 99, 0, 7, 5,100,
+ 0, 7, 5,101, 0, 7, 5,102, 0, 7, 5,103, 0, 7, 0,174, 0, 7, 5, 39, 0, 2, 5,104, 0, 2, 5,105, 0, 2, 5,106,
+ 0, 2, 5,107, 0, 2, 0,137, 0, 2, 5, 24, 0, 2, 5,108, 0, 2, 5,109, 0, 2, 5,110, 0, 2, 5,111, 0, 7, 5,112,
+ 0, 7, 5,113, 0, 67, 5,114, 0, 12, 5,115, 0, 2, 5,116, 0, 2, 2, 53, 0, 2, 5,117, 0, 2, 0, 20, 0, 2, 5,118,
+ 0, 2, 5,119, 0, 2, 5,120, 0, 0, 5,121, 0, 0, 5,122, 0, 9, 5,123, 0,186, 5,124, 0, 7, 5,125, 0, 2, 5,126,
+ 0, 2, 5,127, 0, 2, 5, 48, 0, 2, 5, 49, 0,187, 0, 19, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 5,128, 0, 23, 5,129,
+ 0, 23, 5,130, 0, 7, 5,131, 0, 7, 5,132, 0, 7, 5,133, 0, 7, 5,134, 0, 2, 5,135, 0, 2, 5,136, 0, 2, 5,137,
+ 0, 2, 5,138, 0, 2, 5,139, 0, 2, 5,140, 0, 4, 0, 20, 0, 7, 5,141, 0, 2, 5, 94, 0, 0, 2,107, 0,181, 0, 6,
+ 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0,188, 0, 6, 0,181, 0, 0,
+ 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0,189, 0, 27, 0,181, 0, 0, 0,181, 0, 1,
+ 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0, 4, 5,142, 0, 4, 0, 70, 0,187, 5,143, 0, 9, 5,144,
+ 0, 12, 5,145, 0, 36, 0, 79, 0, 27, 0, 80, 0, 0, 5,146, 0, 0, 5,147, 0, 0, 5,148, 0, 2, 5,149, 0, 2, 5,150,
+ 0, 2, 5,151, 0, 2, 5,152, 0, 2, 0, 65, 0, 2, 0, 46, 0, 2, 0,137, 0, 2, 5,153, 0, 4, 0, 20, 0, 7, 5,154,
+ 0, 24, 0, 36, 0,190, 0, 29, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0,183, 5, 87,
+ 0, 2, 5, 73, 0, 2, 5,155, 0, 2, 5,156, 0, 2, 5,157, 0, 2, 5,158, 0,187, 5,143, 0, 2, 5,159, 0, 2, 0,137,
+ 0, 2, 5,150, 0, 2, 5,160, 0, 9, 5,161, 0, 2, 5, 24, 0, 0, 5,162, 0, 0, 5,163, 0, 2, 5,164, 0, 2, 5,165,
+ 0, 2, 3, 12, 0, 2, 5,166, 0, 2, 5,167, 0, 0, 0, 37, 0, 0, 0, 20, 0, 0, 1, 47, 0, 0, 5,168, 0,191, 0, 16,
+ 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0,187, 5,143, 0, 7, 2, 8,
+ 0, 7, 2, 9, 0, 2, 5,159, 0, 2, 5,169, 0, 2, 5,170, 0, 2, 5,171, 0, 4, 0, 20, 0, 7, 5, 66, 0,186, 5,124,
+ 0,192, 0, 33, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0,193, 5,172,
+ 0, 4, 5,173, 0, 0, 5,174, 0, 0, 5,175, 0, 0, 5,176, 0, 2, 0, 18, 0, 2, 5,177, 0, 2, 0, 20, 0, 2, 5,178,
+ 0, 2, 5,179, 0, 2, 5,180, 0, 2, 5,181, 0, 2, 0, 43, 0, 4, 0, 70, 0, 0, 5,182, 0,194, 5,183, 0, 2, 5,184,
+ 0, 2, 5,185, 0, 2, 5,186, 0, 2, 0,208, 0, 9, 5,187, 0, 9, 5,188, 0, 9, 5,189, 0, 9, 5,190, 0, 9, 5,191,
+ 0, 2, 5,192, 0, 0, 5,193, 0,195, 0, 23, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72,
+ 0, 2, 5, 73, 0,187, 5,143, 0, 12, 5,194, 0, 2, 5,150, 0, 2, 5,195, 0, 2, 0, 20, 0, 2, 0, 57, 0, 9, 5,161,
+ 0, 12, 5,196, 0,196, 5,197, 0, 0, 5,198, 0,197, 5,199, 0, 4, 5,200, 0, 4, 5,201, 0, 2, 0, 18, 0, 2, 5,202,
+ 0, 2, 5,203, 0, 2, 5,204, 0,198, 0, 29, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72,
+ 0, 2, 5, 73, 0,187, 5,143, 0, 46, 2,142, 0, 45, 1, 0, 0, 60, 5, 14, 0, 2, 1, 13, 0, 2, 0,137, 0, 2, 5,205,
+ 0, 2, 5,206, 0, 4, 0, 20, 0, 2, 5, 44, 0, 2, 5,207, 0, 2, 5,153, 0, 2, 5,150, 0, 7, 5, 66, 0, 0, 5,208,
+ 0, 0, 5,209, 0, 0, 5,210, 0, 0, 5,211, 0, 7, 2, 8, 0, 7, 2, 9, 0, 7, 5,212, 0, 7, 5,213, 0,186, 5,124,
+ 0,199, 0, 11, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0, 2, 0,137,
+ 0, 2, 5,153, 0, 2, 5,214, 0, 2, 0, 20, 0,187, 5,143, 0,200, 0, 24, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70,
+ 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0, 42, 5,215, 0, 4, 5,216, 0, 4, 5,217, 0, 2, 0, 93, 0, 2, 0,137,
+ 0, 4, 5,218, 0, 4, 5,219, 0, 4, 5,220, 0, 4, 5,221, 0, 4, 5,222, 0, 4, 5,223, 0, 4, 5,224, 0, 4, 5,225,
+ 0, 7, 5,226, 0, 23, 5,227, 0, 23, 5,228, 0, 4, 5,229, 0, 4, 5,230, 0,201, 0, 10, 0, 27, 0, 31, 0, 9, 5,231,
+ 0, 9, 5,232, 0, 9, 5,233, 0, 9, 5,234, 0, 9, 5,235, 0, 4, 0, 93, 0, 4, 5,236, 0, 0, 5,237, 0, 0, 5,238,
+ 0,202, 0, 10, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0,201, 5,239, 0, 2, 0, 93,
+ 0, 2, 0,137, 0, 4, 0, 43, 0, 9, 5,240, 0,203, 0, 8, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71,
+ 0,182, 5, 72, 0,187, 5,143, 0, 4, 0, 20, 0, 4, 5,241, 0,204, 0, 21, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70,
+ 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0,187, 5,143, 0, 27, 5,242, 0, 27, 0, 80, 0, 2, 0, 20, 0, 2, 0,137,
+ 0, 7, 5,243, 0, 9, 5,244, 0, 7, 2, 8, 0, 7, 2, 9, 0, 57, 1, 1, 0, 57, 5,245, 0, 4, 5,246, 0, 2, 5,162,
+ 0, 2, 0, 37, 0,186, 5,124, 0,205, 0, 42, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72,
+ 0, 2, 5, 73, 0,187, 5,143, 0,206, 5,247, 0, 0, 5,174, 0, 0, 5,175, 0, 0, 5,176, 0, 2, 0, 18, 0, 2, 5,185,
+ 0, 2, 0, 20, 0, 2, 5,178, 0, 9, 5,244, 0, 4, 5,248, 0, 4, 5,249, 0, 4, 5,250, 0, 4, 5,251, 0, 23, 5,252,
+ 0, 23, 5,253, 0, 7, 5,254, 0, 7, 5,255, 0, 7, 6, 0, 0, 7, 5,243, 0, 2, 5,184, 0, 2, 0,208, 0, 2, 1,102,
+ 0, 2, 6, 1, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 6, 2, 0, 2, 6, 3, 0, 9, 5,187, 0, 9, 5,188, 0, 9, 5,189,
+ 0, 9, 5,190, 0, 9, 5,191, 0, 2, 5,192, 0, 0, 5,193, 0, 56, 6, 4, 0,207, 0, 20, 0, 0, 6, 5, 0, 0, 6, 6,
+ 0, 0, 6, 7, 0, 0, 6, 8, 0, 0, 6, 9, 0, 0, 6, 10, 0, 0, 6, 11, 0, 0, 6, 12, 0, 0, 6, 13, 0, 0, 6, 14,
+ 0, 0, 6, 15, 0, 0, 6, 16, 0, 0, 6, 17, 0, 0, 6, 18, 0, 0, 6, 19, 0, 0, 6, 20, 0, 0, 6, 21, 0, 0, 6, 22,
+ 0, 0, 2, 68, 0, 0, 6, 23, 0,208, 0, 54, 0, 0, 6, 24, 0, 0, 6, 15, 0, 0, 6, 16, 0, 0, 6, 25, 0, 0, 6, 26,
+ 0, 0, 6, 27, 0, 0, 6, 28, 0, 0, 6, 29, 0, 0, 6, 30, 0, 0, 6, 31, 0, 0, 6, 32, 0, 0, 6, 33, 0, 0, 6, 34,
+ 0, 0, 6, 35, 0, 0, 6, 36, 0, 0, 6, 37, 0, 0, 6, 38, 0, 0, 6, 39, 0, 0, 6, 40, 0, 0, 6, 41, 0, 0, 6, 42,
+ 0, 0, 6, 43, 0, 0, 6, 44, 0, 0, 6, 45, 0, 0, 6, 46, 0, 0, 6, 47, 0, 0, 6, 48, 0, 0, 6, 49, 0, 0, 6, 50,
+ 0, 0, 6, 51, 0, 0, 6, 52, 0, 0, 6, 53, 0, 0, 0, 95, 0, 0, 6, 54, 0, 0, 6, 55, 0, 0, 6, 56, 0, 0, 6, 57,
+ 0, 0, 6, 58, 0, 0, 6, 59, 0, 0, 6, 60, 0, 0, 6, 61, 0, 0, 6, 62, 0, 0, 6, 63, 0, 0, 6, 64, 0, 0, 6, 65,
+ 0, 0, 6, 66, 0, 0, 6, 67, 0, 0, 6, 68, 0, 0, 6, 69, 0, 0, 6, 70, 0, 0, 6, 71, 0, 0, 6, 72, 0, 0, 6, 73,
+ 0, 0, 6, 74, 0,209, 0, 5, 0, 0, 6, 75, 0, 0, 6, 32, 0, 0, 6, 34, 0, 2, 0, 20, 0, 2, 0, 37, 0,210, 0, 22,
+ 0,210, 0, 0, 0,210, 0, 1, 0, 0, 0, 17, 0,207, 6, 76, 0,208, 6, 77, 0,208, 6, 78, 0,208, 6, 79, 0,208, 6, 80,
+ 0,208, 6, 81, 0,208, 6, 82, 0,208, 6, 83, 0,208, 6, 84, 0,208, 6, 85, 0,208, 6, 86, 0,208, 6, 87, 0,208, 6, 88,
+ 0,208, 6, 89, 0,208, 6, 90, 0,208, 6, 91, 0,209, 6, 92, 0, 0, 6, 93, 0, 0, 6, 94, 0,211, 0, 5, 0, 4, 0, 20,
+ 0, 4, 0, 37, 0, 7, 2, 52, 0, 7, 6, 95, 0, 7, 1,225, 0,212, 0, 66, 0, 4, 0, 20, 0, 4, 6, 96, 0, 4, 6, 97,
+ 0, 0, 6, 98, 0, 0, 6, 99, 0, 0, 6,100, 0, 0, 6,101, 0, 0, 6,102, 0, 0, 6,103, 0, 0, 6,104, 0, 0, 6,105,
+ 0, 0, 6,106, 0, 2, 6,107, 0, 2, 6,108, 0, 4, 6,109, 0, 4, 6,110, 0, 4, 6,111, 0, 4, 6,112, 0, 2, 6,113,
+ 0, 2, 6,114, 0, 2, 6,115, 0, 2, 6,116, 0, 4, 6,117, 0, 4, 6,118, 0, 2, 6,119, 0, 2, 6,120, 0, 2, 6,121,
+ 0, 2, 6,122, 0, 0, 6,123, 0, 12, 6,124, 0, 2, 6,125, 0, 2, 6,126, 0, 2, 6,127, 0, 2, 6,128, 0, 2, 6,129,
+ 0, 2, 6,130, 0, 2, 6,131, 0, 2, 6,132, 0,211, 6,133, 0, 2, 6,134, 0, 2, 6,135, 0, 2, 6,136, 0, 2, 6,137,
+ 0, 4, 6,138, 0, 4, 6,139, 0, 4, 6,140, 0, 4, 6,141, 0, 2, 6,142, 0, 2, 6,143, 0, 2, 6,144, 0, 2, 6,145,
+ 0, 2, 6,146, 0, 2, 6,147, 0, 2, 6,148, 0, 2, 6,149, 0, 2, 6,150, 0, 2, 6,151, 0, 2, 6,152, 0, 2, 0, 37,
+ 0, 0, 6,153, 0, 0, 6,154, 0, 0, 6,155, 0, 7, 6,156, 0, 2, 5, 50, 0, 2, 6,157, 0, 54, 6,158, 0,213, 0, 18,
+ 0, 27, 0, 31, 0, 12, 6,159, 0, 12, 6,160, 0, 12, 6,161, 0,177, 6,162, 0, 2, 2,151, 0, 2, 6,163, 0, 2, 2,152,
+ 0, 2, 6,164, 0, 2, 6,165, 0, 2, 6,166, 0, 2, 6,167, 0, 2, 6,168, 0, 2, 6,169, 0, 2, 0, 37, 0, 2, 6,170,
+ 0, 2, 6,171, 0, 2, 6,172, 0,214, 0, 5, 0,214, 0, 0, 0,214, 0, 1, 0,214, 6,173, 0, 13, 6,174, 0, 4, 0, 20,
+ 0,215, 0, 7, 0,215, 0, 0, 0,215, 0, 1, 0,214, 6,175, 0,214, 6,176, 0, 2, 4,118, 0, 2, 0, 20, 0, 4, 0, 37,
+ 0,216, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 0, 6,177, 0, 0, 6,178, 0, 0, 6,179, 0, 2, 6,180, 0, 2, 6,181,
+ 0, 2, 6,165, 0, 2, 6,166, 0, 2, 0, 20, 0, 2, 3, 70, 0, 2, 6,182, 0, 2, 6,183, 0, 2, 6,184, 0, 2, 6,185,
+ 0, 4, 6,186, 0,216, 6,187, 0,182, 0, 30, 0,182, 0, 0, 0,182, 0, 1, 0,214, 6,175, 0,214, 6,176, 0,214, 6,188,
+ 0,214, 6,189, 0,213, 6,190, 0, 7, 6,191, 0, 23, 0, 52, 0, 23, 6,192, 0, 23, 6,193, 0, 2, 6,194, 0, 2, 6,195,
+ 0, 2, 6,196, 0, 0, 5, 70, 0, 0, 6,197, 0, 2, 6,198, 0, 2, 6,199, 0, 0, 6,200, 0, 0, 6,201, 0, 0, 6,202,
+ 0, 0, 6,203, 0, 2, 6,204, 0, 2, 6,205, 0, 2, 6,206, 0, 2, 0, 20, 0, 39, 0,125, 0, 12, 6,207, 0, 12, 6,208,
+ 0, 12, 6,209, 0,217, 0, 11, 0, 0, 6,210, 0, 2, 6,211, 0, 2, 6,212, 0, 2, 6,213, 0, 2, 6,214, 0, 2, 6,215,
+ 0, 2, 4,102, 0, 9, 6,216, 0, 9, 6,217, 0, 4, 6,218, 0, 4, 6,219, 0,218, 0, 1, 0, 0, 6,220, 0,219, 0, 8,
+ 0, 56, 6,221, 0, 56, 6,222, 0,219, 6,223, 0,219, 6,224, 0,219, 6,225, 0, 2, 0,133, 0, 2, 0, 20, 0, 4, 6,226,
+ 0,220, 0, 4, 0, 4, 5,216, 0, 4, 6,227, 0, 4, 5,220, 0, 4, 6,228, 0,221, 0, 2, 0, 4, 6,229, 0, 4, 6,230,
+ 0,222, 0, 7, 0, 7, 6,231, 0, 7, 6,232, 0, 7, 6,233, 0, 4, 0, 20, 0, 4, 0, 37, 0, 7, 3,232, 0, 7, 6,234,
+ 0,223, 0, 3, 0, 0, 6,235, 0, 0, 5,176, 0, 48, 0,140, 0,224, 0, 21, 0,224, 0, 0, 0,224, 0, 1, 0, 4, 0, 57,
+ 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 6,236, 0, 4, 6,237, 0, 4, 6,238, 0,218, 6,239, 0, 0, 6,235, 0, 4, 6,240,
+ 0, 4, 6,241, 0,223, 2,244, 0,220, 6,242, 0,221, 6,243, 0,222, 6,244, 0,219, 6,245, 0,219, 6,246, 0,219, 6,247,
+ 0, 56, 6,248, 0, 56, 6,249, 0,225, 0, 12, 0, 0, 1,188, 0, 9, 0,194, 0, 0, 0,195, 0, 4, 0,198, 0, 4, 0,206,
+ 0, 9, 0,199, 0, 7, 0,201, 0, 7, 0,202, 0, 9, 6,250, 0, 9, 6,251, 0, 9, 0,203, 0, 9, 0,205, 0,226, 0, 45,
+ 0,226, 0, 0, 0,226, 0, 1, 0, 9, 6,252, 0, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 20, 0, 4, 0, 18, 0, 4, 0, 23,
+ 0, 4, 0, 91, 0, 4, 6,253, 0, 4, 6,254, 0, 4, 6,237, 0, 4, 6,238, 0, 4, 6,255, 0, 4, 0,217, 0, 4, 7, 0,
+ 0, 4, 7, 1, 0, 7, 7, 2, 0, 7, 7, 3, 0, 4, 0,130, 0, 4, 7, 4, 0,224, 7, 5, 0, 36, 0, 79, 0,177, 6,162,
+ 0, 48, 0,140, 0, 7, 7, 6, 0, 7, 7, 7, 0,225, 1, 2, 0,226, 7, 8, 0,226, 7, 9, 0,226, 7, 10, 0, 12, 7, 11,
+ 0,227, 7, 12, 0,228, 7, 13, 0, 7, 7, 14, 0, 7, 7, 15, 0, 4, 7, 16, 0, 7, 7, 17, 0, 9, 7, 18, 0, 4, 7, 19,
+ 0, 4, 7, 20, 0, 4, 7, 21, 0, 7, 7, 22, 0, 4, 6,167, 0, 4, 0, 37, 0,229, 0, 4, 0,229, 0, 0, 0,229, 0, 1,
+ 0, 12, 7, 23, 0,226, 7, 24, 0,230, 0, 6, 0, 12, 7, 25, 0, 12, 7, 11, 0, 12, 7, 26, 0, 2, 0, 20, 0, 2, 0, 37,
+ 0, 4, 0, 57, 0,231, 0, 4, 0, 7, 7, 27, 0, 7, 0,112, 0, 2, 7, 28, 0, 2, 7, 29, 0,232, 0, 6, 0, 7, 7, 30,
+ 0, 7, 7, 31, 0, 7, 7, 32, 0, 7, 7, 33, 0, 4, 7, 34, 0, 4, 7, 35, 0,233, 0, 12, 0, 7, 7, 36, 0, 7, 7, 37,
+ 0, 7, 7, 38, 0, 7, 7, 39, 0, 7, 7, 40, 0, 7, 7, 41, 0, 7, 7, 42, 0, 7, 7, 43, 0, 7, 7, 44, 0, 7, 7, 45,
+ 0, 4, 2,146, 0, 4, 7, 46, 0,234, 0, 2, 0, 7, 4,196, 0, 7, 0, 37, 0,235, 0, 5, 0, 7, 7, 47, 0, 7, 7, 48,
+ 0, 4, 0, 93, 0, 4, 2,108, 0, 4, 7, 49, 0,236, 0, 6, 0,236, 0, 0, 0,236, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20,
+ 0, 2, 7, 50, 0, 2, 0, 57, 0,237, 0, 8, 0,237, 0, 0, 0,237, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 7, 50,
+ 0, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,130, 0,238, 0, 45, 0,238, 0, 0, 0,238, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20,
+ 0, 2, 7, 50, 0, 2, 0,213, 0, 2, 3,150, 0, 2, 7, 51, 0, 7, 7, 52, 0, 7, 0, 92, 0, 7, 2,159, 0, 4, 7, 53,
+ 0, 4, 0, 81, 0, 4, 2,110, 0, 7, 7, 54, 0, 7, 7, 55, 0, 7, 7, 56, 0, 7, 7, 57, 0, 7, 7, 58, 0, 7, 7, 59,
+ 0, 7, 2,156, 0, 7, 0,255, 0, 7, 7, 60, 0, 7, 7, 61, 0, 7, 0, 37, 0, 7, 7, 62, 0, 7, 7, 63, 0, 7, 7, 64,
+ 0, 2, 7, 65, 0, 2, 7, 66, 0, 2, 7, 67, 0, 2, 7, 68, 0, 2, 7, 69, 0, 2, 7, 70, 0, 2, 7, 71, 0, 2, 7, 72,
+ 0, 2, 5,118, 0, 2, 7, 73, 0, 2, 1,209, 0, 2, 7, 74, 0, 0, 7, 75, 0, 0, 7, 76, 0, 7, 0,211, 0,239, 7, 77,
+ 0, 63, 1,161, 0,240, 0, 16, 0,240, 0, 0, 0,240, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 7, 50, 0, 2, 0,213,
+ 0, 7, 2,151, 0, 7, 2,152, 0, 7, 2,153, 0, 7, 1,251, 0, 7, 2,154, 0, 7, 2,155, 0, 7, 7, 78, 0, 7, 2,156,
+ 0, 7, 2,158, 0, 7, 2,159, 0,197, 0, 5, 0, 2, 0, 18, 0, 2, 6,226, 0, 2, 0, 20, 0, 2, 7, 79, 0, 27, 5,242,
+ 0,196, 0, 3, 0, 4, 0, 69, 0, 4, 7, 80, 0,197, 0, 2, 0,241, 0, 12, 0,241, 0, 0, 0,241, 0, 1, 0, 2, 0, 18,
+ 0, 2, 0, 20, 0, 2, 3, 31, 0, 2, 1,224, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 7, 81, 0, 7, 7, 82, 0, 27, 5,242,
+ 0, 12, 7, 83, 0,242, 0, 11, 0,242, 0, 0, 0,242, 0, 1, 0, 0, 0, 17, 0, 2, 0, 18, 0, 2, 7, 84, 0, 4, 0, 22,
+ 0, 4, 7, 85, 0, 2, 0, 20, 0, 2, 0, 37, 0, 9, 7, 86, 0, 9, 7, 87, 0,243, 0, 5, 0, 0, 0, 17, 0, 7, 1, 20,
+ 0, 7, 7, 88, 0, 4, 7, 89, 0, 4, 0, 37, 0,244, 0, 4, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 0, 43, 0, 2, 0, 70,
+ 0,245, 0, 4, 0, 0, 0, 17, 0, 62, 7, 90, 0, 7, 1, 20, 0, 7, 0, 37, 0,246, 0, 6, 0, 2, 7, 91, 0, 2, 7, 92,
+ 0, 2, 0, 18, 0, 2, 7, 93, 0, 0, 7, 94, 0, 0, 7, 95, 0,247, 0, 5, 0, 4, 0, 18, 0, 4, 0, 37, 0, 0, 0, 17,
+ 0, 0, 7, 96, 0, 0, 7, 97, 0,248, 0, 3, 0, 4, 0, 18, 0, 4, 0, 37, 0, 0, 0, 17, 0,249, 0, 4, 0, 2, 7, 98,
+ 0, 2, 7, 99, 0, 2, 0, 20, 0, 2, 0, 37, 0,250, 0, 6, 0, 0, 0, 17, 0, 0, 7,100, 0, 2, 7,101, 0, 2, 2,156,
+ 0, 2, 1, 13, 0, 2, 0, 70, 0,251, 0, 5, 0, 0, 0, 17, 0, 7, 0,112, 0, 7, 3,234, 0, 2, 0, 20, 0, 2, 2,122,
+ 0,252, 0, 3, 0, 0, 0, 17, 0, 4, 2,110, 0, 4, 7, 98, 0,253, 0, 7, 0, 0, 0, 17, 0, 7, 3,234, 0, 0, 7,102,
+ 0, 0, 7,103, 0, 2, 1, 13, 0, 2, 0, 43, 0, 4, 7,104, 0,254, 0, 3, 0, 32, 7,105, 0, 0, 7,106, 0, 0, 7,107,
+ 0,255, 0, 18, 0,255, 0, 0, 0,255, 0, 1, 0, 2, 0, 18, 0, 2, 7, 84, 0, 2, 0, 20, 0, 2, 7,108, 0, 2, 7,109,
+ 0, 2, 7,110, 0, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 17, 0, 9, 0, 2, 1, 0, 7,111, 0, 32, 0, 45, 0, 2, 4,204,
+ 0, 2, 7, 14, 0, 2, 7,112, 0, 2, 0, 37, 1, 1, 0, 11, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 7,113, 0, 2, 0, 20,
+ 0, 2, 2,122, 0, 2, 7,114, 0, 4, 7,115, 0, 4, 7,116, 0, 4, 7,117, 0, 4, 7,118, 0, 4, 7,119, 1, 2, 0, 1,
+ 0, 0, 7,120, 1, 3, 0, 4, 0, 42, 5,215, 0, 0, 7,121, 0, 4, 1, 13, 0, 4, 0, 20, 1, 0, 0, 18, 1, 0, 0, 0,
+ 1, 0, 0, 1, 1, 0, 7,122, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 7,123, 0, 2, 7,110, 0, 2, 7, 84, 0, 2, 7,124,
+ 0, 2, 0, 70, 0, 2, 1, 12, 0, 0, 0, 17, 0, 9, 0, 2, 1, 4, 7,111, 0,255, 7,125, 0, 2, 0, 15, 0, 2, 7,126,
+ 0, 4, 7,127, 1, 5, 0, 3, 0, 4, 2,182, 0, 4, 0, 37, 0, 32, 0, 45, 1, 6, 0, 12, 0,145, 7,128, 0, 2, 0, 18,
+ 0, 2, 0, 20, 0, 4, 7, 52, 0, 4, 0, 92, 0, 0, 0, 17, 0, 0, 7,129, 0, 2, 7,130, 0, 2, 7,131, 0, 2, 7,132,
+ 0, 2, 7,133, 0, 7, 7,134, 1, 7, 0, 10, 0, 2, 0, 20, 0, 2, 7,135, 0, 4, 7, 52, 0, 4, 0, 92, 0, 2, 7,136,
+ 0,227, 7, 12, 0, 2, 0, 18, 0, 2, 7,137, 0, 2, 7,138, 0, 2, 7,139, 1, 8, 0, 7, 0, 2, 0, 20, 0, 2, 7,135,
+ 0, 4, 7, 52, 0, 4, 0, 92, 0, 2, 0, 18, 0, 2, 7,140, 0, 7, 3,109, 1, 9, 0, 11, 0, 4, 2,182, 0, 2, 0, 18,
+ 0, 2, 0, 20, 0, 32, 0, 45, 0, 74, 7,141, 0, 0, 0, 17, 0, 7, 7,142, 0, 7, 7,143, 0, 7, 3, 21, 0, 2, 7,144,
+ 0, 2, 7,145, 1, 10, 0, 5, 0, 2, 0, 18, 0, 2, 0, 20, 0, 4, 0, 37, 0,177, 6,162, 0, 32, 5, 34, 1, 11, 0, 5,
+ 0, 4, 0, 20, 0, 4, 0, 18, 0, 0, 0, 17, 0, 0, 7, 96, 0, 32, 0, 45, 1, 12, 0, 13, 0, 2, 0, 20, 0, 2, 0, 18,
+ 0, 2, 7, 84, 0, 2, 3, 22, 0, 7, 7,146, 0, 7, 7,147, 0, 7, 1, 7, 0, 7, 1, 8, 0, 7, 2,253, 0, 7, 3, 0,
+ 0, 7, 7,148, 0, 7, 7,149, 0, 32, 7,150, 1, 13, 0, 10, 0, 2, 0, 20, 0, 2, 0, 18, 0, 4, 7, 52, 0, 4, 0, 92,
+ 0, 0, 0, 17, 0, 0, 7,129, 0, 2, 0, 43, 0, 2, 0, 64, 0, 2, 7,151, 0, 2, 7,152, 1, 14, 0, 8, 0, 32, 0, 45,
+ 0, 7, 2,153, 0, 7, 7,153, 0, 7, 7,154, 0, 7, 2,148, 0, 2, 0, 20, 0, 2, 2,122, 0, 7, 7,155, 1, 15, 0, 12,
+ 0, 2, 0, 18, 0, 2, 1, 13, 0, 2, 0, 20, 0, 2, 2,156, 0, 2, 2,182, 0, 2, 7,156, 0, 4, 0, 37, 0, 7, 7,157,
+ 0, 7, 7,158, 0, 7, 7,159, 0, 7, 7,160, 0, 0, 7,161, 1, 16, 0, 10, 0, 2, 0, 20, 0, 2, 0, 18, 0, 4, 7, 52,
+ 0, 4, 0, 92, 0, 0, 0, 17, 0, 2, 2, 68, 0, 2, 0, 64, 0, 2, 7,151, 0, 2, 7,152, 0, 63, 1,161, 1, 17, 0, 7,
+ 0, 4, 2,110, 0, 4, 7,162, 0, 4, 7,163, 0, 4, 7,164, 0, 7, 7,165, 0, 7, 7,166, 0, 0, 7,102, 1, 18, 0, 7,
+ 0, 0, 7,167, 0, 32, 7,168, 0, 0, 7,106, 0, 2, 7,169, 0, 2, 0, 43, 0, 4, 0, 70, 0, 0, 7,107, 1, 19, 0, 6,
+ 0, 2, 0, 20, 0, 2, 0, 18, 0, 4, 7, 52, 0, 4, 0, 92, 0, 0, 7,170, 0, 0, 7,171, 1, 20, 0, 1, 0, 4, 0, 20,
+ 1, 21, 0, 6, 0, 0, 0, 95, 0, 2, 0, 18, 0, 2, 0, 20, 0, 4, 7,172, 0, 7, 7,173, 0, 42, 5,215, 1, 22, 0, 4,
+ 0, 0, 0,182, 0, 2, 0, 20, 0, 4, 0, 18, 0, 32, 0, 45, 1, 23, 0, 2, 0, 4, 0, 18, 0, 4, 5,130, 1, 4, 0, 10,
+ 1, 4, 0, 0, 1, 4, 0, 1, 1, 4, 7,122, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 7, 84, 0, 2, 7,174, 0, 0, 0, 17,
+ 0, 9, 0, 2, 0, 32, 0, 45, 1, 24, 0, 10, 0, 7, 3, 21, 0, 7, 7,175, 0, 7, 7,176, 0, 7, 7,177, 0, 7, 7,178,
+ 0, 4, 0, 20, 0, 7, 7,156, 0, 7, 7,179, 0, 7, 7,180, 0, 7, 0, 37, 0,227, 0, 20, 0, 27, 0, 31, 0, 0, 0,193,
+ 1, 25, 7,181, 0, 9, 7,182, 0, 43, 0,152, 0, 43, 7,183, 0, 9, 7,184, 0, 36, 0, 79, 0, 7, 3,109, 0, 7, 7,185,
+ 0, 7, 7,186, 0, 7, 7,187, 0, 7, 7,188, 0, 7, 7,189, 0, 7, 7,190, 0, 4, 0, 93, 0, 4, 7,191, 0, 0, 7,192,
+ 0, 0, 7,193, 0, 0, 7,194, 1, 26, 0, 6, 0, 27, 0, 31, 0, 7, 7,195, 0, 7, 7,196, 0, 7, 7,197, 0, 2, 7,198,
+ 0, 2, 7,199, 1, 27, 0, 14, 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0,187, 5,143,
+ 0,227, 7, 12, 0, 2, 1, 13, 0, 2, 7,135, 0, 2, 2, 8, 0, 2, 2, 9, 0, 2, 0, 20, 0, 2, 5,153, 0, 4, 0, 70,
+ 1, 28, 0, 6, 1, 28, 0, 0, 1, 28, 0, 1, 0, 32, 0, 45, 0, 9, 7,200, 0, 4, 0,218, 0, 4, 0, 37, 0, 63, 0, 4,
+ 0, 27, 0, 31, 0, 12, 7,201, 0, 4, 0,135, 0, 7, 7,202, 1, 29, 0, 25, 1, 29, 0, 0, 1, 29, 0, 1, 1, 29, 0, 38,
+ 0, 12, 7,203, 0, 0, 0, 17, 0, 7, 7,204, 0, 7, 7,205, 0, 7, 7,206, 0, 7, 7,207, 0, 4, 0, 20, 0, 7, 7,208,
+ 0, 7, 7,209, 0, 7, 7,210, 0, 7, 1, 20, 0, 7, 1,217, 0, 7, 7,211, 0, 7, 2,108, 0, 7, 7,212, 0, 7, 7,213,
+ 0, 7, 7,214, 0, 7, 7,215, 0, 7, 7,216, 0, 7, 0,175, 0, 2, 0,135, 0, 2, 4,220, 1, 30, 0, 19, 0, 27, 0, 31,
+ 0, 12, 7,217, 0, 12, 7,218, 0, 4, 0, 20, 0, 4, 4, 25, 0, 2, 2,160, 0, 2, 7,219, 0, 2, 0,135, 0, 2, 7,220,
+ 0, 2, 7,221, 0, 2, 7,222, 0, 2, 7,223, 0, 2, 7,224, 0, 4, 7,225, 0, 4, 7,226, 0, 4, 7,227, 0, 4, 7,228,
+ 0, 4, 7,229, 0, 4, 7,230, 1, 31, 0, 34, 1, 31, 0, 0, 1, 31, 0, 1, 0, 12, 3, 49, 0, 0, 0, 17, 0, 2, 0, 20,
+ 0, 2, 7,231, 0, 2, 7,232, 0, 2, 7,233, 0, 2, 3, 10, 0, 2, 7,234, 0, 4, 1,249, 0, 4, 7,227, 0, 4, 7,228,
+ 1, 29, 7,235, 1, 31, 0, 38, 1, 31, 7,236, 0, 12, 7,237, 0, 9, 7,238, 0, 9, 7,239, 0, 9, 7,240, 0, 7, 1, 7,
+ 0, 7, 0,175, 0, 7, 1,199, 0, 7, 7,241, 0, 7, 7,242, 0, 7, 3, 2, 0, 7, 7,243, 0, 7, 7,244, 0, 7, 7,245,
+ 0, 7, 7,246, 0, 7, 7,247, 0, 7, 7,248, 0, 7, 1,246, 0, 32, 7,249, 0,146, 0, 9, 0, 12, 7,250, 0, 2, 0, 20,
+ 0, 2, 7,251, 0, 7, 3, 20, 0, 7, 7,252, 0, 7, 7,253, 0, 12, 7,254, 0, 4, 7,255, 0, 4, 0, 37, 1, 32, 0, 7,
+ 1, 32, 0, 0, 1, 32, 0, 1, 0, 12, 7,192, 0, 4, 0, 20, 0, 4, 8, 0, 0, 0, 0, 17, 0,209, 8, 1, 1, 33, 0, 8,
+ 1, 33, 0, 0, 1, 33, 0, 1, 1, 32, 8, 2, 0, 36, 0, 79, 0, 12, 2,250, 0, 4, 0, 20, 0, 0, 0, 17, 0, 4, 8, 3,
+ 0,145, 0, 6, 0, 27, 0, 31, 0, 12, 7,250, 0, 12, 8, 4, 0, 12, 0,103, 0, 4, 8, 5, 0, 4, 0, 37, 1, 34, 0, 16,
+ 0,181, 0, 0, 0,181, 0, 1, 0, 4, 5, 70, 0, 7, 5, 71, 0,182, 5, 72, 0, 2, 5, 73, 0,187, 5,143, 0,145, 2,247,
+ 0, 0, 1, 13, 0, 0, 5,214, 0, 2, 0, 20, 0, 2, 8, 6, 0, 2, 5,150, 0, 2, 5,153, 0, 2, 8, 7, 0, 7, 8, 8,
+ 1, 35, 0, 5, 1, 35, 0, 0, 1, 35, 0, 1, 0, 36, 0, 79, 0, 2, 0, 20, 0, 0, 8, 9, 1, 36, 0, 12, 1, 36, 0, 0,
+ 1, 36, 0, 1, 0, 9, 0, 2, 0, 2, 0, 18, 0, 2, 0, 20, 0, 0, 8, 10, 0, 0, 8, 11, 0, 0, 8, 9, 0, 7, 8, 12,
+ 0, 7, 8, 13, 0, 4, 0, 37, 0, 36, 0, 79, 1, 37, 0, 9, 1, 37, 0, 0, 1, 37, 0, 1, 0, 32, 8, 14, 0, 0, 8, 15,
+ 0, 7, 8, 16, 0, 2, 8, 17, 0, 2, 0, 20, 0, 2, 0, 18, 0, 2, 0, 37, 1, 38, 0, 7, 0, 42, 5,215, 0, 26, 8, 18,
+ 0, 4, 0, 20, 0, 4, 8, 19, 0, 12, 8, 20, 0, 32, 8, 14, 0, 0, 8, 15, 1, 39, 0, 12, 0, 32, 8, 14, 0, 2, 8, 21,
+ 0, 2, 0, 20, 0, 2, 8, 22, 0, 2, 8, 23, 0, 0, 8, 15, 0, 32, 8, 24, 0, 0, 8, 25, 0, 7, 8, 26, 0, 7, 1,217,
+ 0, 7, 8, 27, 0, 7, 8, 28, 1, 40, 0, 6, 0, 32, 8, 14, 0, 4, 8, 3, 0, 4, 8, 29, 0, 4, 0, 93, 0, 4, 0, 37,
+ 0, 0, 8, 15, 1, 41, 0, 4, 0, 32, 8, 14, 0, 4, 0, 20, 0, 4, 8, 3, 0, 0, 8, 15, 1, 42, 0, 4, 0, 32, 8, 14,
+ 0, 4, 0, 20, 0, 4, 8, 3, 0, 0, 8, 15, 1, 43, 0, 10, 0, 32, 8, 14, 0, 4, 8, 30, 0, 7, 0,129, 0, 4, 0, 20,
+ 0, 2, 5,209, 0, 2, 8, 31, 0, 2, 0, 43, 0, 2, 0, 70, 0, 7, 8, 32, 0, 0, 8, 15, 1, 44, 0, 4, 0, 32, 8, 14,
+ 0, 4, 0, 20, 0, 4, 8, 3, 0, 0, 8, 15, 1, 45, 0, 10, 0, 32, 8, 14, 0, 2, 0, 18, 0, 2, 3,156, 0, 4, 0, 91,
+ 0, 4, 0, 92, 0, 7, 7,153, 0, 7, 7,154, 0, 4, 0, 37, 0,145, 7,128, 0, 0, 8, 15, 1, 46, 0, 4, 0, 32, 8, 14,
+ 0, 4, 3, 7, 0, 4, 8, 33, 0, 0, 8, 15, 1, 47, 0, 5, 0, 32, 8, 14, 0, 7, 0,129, 0, 4, 8, 34, 0, 4, 3, 7,
+ 0, 4, 3, 8, 1, 48, 0, 6, 0, 32, 8, 14, 0, 4, 8, 35, 0, 4, 8, 36, 0, 7, 8, 37, 0, 7, 8, 38, 0, 0, 8, 15,
+ 1, 49, 0, 16, 0, 32, 8, 14, 0, 32, 7,236, 0, 4, 0, 18, 0, 7, 8, 39, 0, 7, 8, 40, 0, 7, 8, 41, 0, 7, 8, 42,
+ 0, 7, 8, 43, 0, 7, 8, 44, 0, 7, 8, 45, 0, 7, 8, 46, 0, 7, 8, 47, 0, 2, 0, 20, 0, 2, 0, 37, 0, 2, 0, 43,
+ 0, 2, 0, 70, 1, 50, 0, 3, 0, 32, 8, 14, 0, 4, 0, 20, 0, 4, 5,118, 1, 51, 0, 5, 0, 32, 8, 14, 0, 4, 0, 20,
+ 0, 4, 0, 37, 0, 7, 8, 48, 0, 0, 8, 15, 1, 52, 0, 10, 0, 32, 8, 14, 0, 0, 8, 15, 0, 2, 8, 49, 0, 2, 8, 50,
+ 0, 0, 8, 51, 0, 0, 8, 52, 0, 7, 8, 53, 0, 7, 8, 54, 0, 7, 8, 55, 0, 7, 8, 56, 1, 53, 0, 8, 0, 7, 0, 9,
+ 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 8, 57, 0, 7, 8, 58, 0, 2, 0, 20, 0, 2, 5,118, 1, 54, 0, 8,
+ 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 8, 57, 0, 7, 8, 58, 0, 2, 0, 20, 0, 2, 5,118,
+ 1, 55, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 8, 57, 0, 7, 8, 58, 0, 2, 0, 20,
+ 0, 2, 5,118, 1, 56, 0, 7, 0, 32, 8, 14, 0, 0, 8, 15, 0, 7, 1, 20, 0, 7, 1, 30, 0, 2, 0, 20, 0, 2, 1, 13,
+ 0, 4, 0, 37, 1, 57, 0, 5, 0, 32, 2,211, 0, 7, 1, 20, 0, 2, 2,215, 0, 0, 2,217, 0, 0, 8, 59, 1, 58, 0, 10,
+ 1, 58, 0, 0, 1, 58, 0, 1, 0, 2, 0, 18, 0, 2, 0, 20, 0, 0, 8, 60, 0, 7, 0,220, 0, 7, 0,221, 0, 2, 7,192,
+ 0, 2, 8, 61, 0, 32, 0, 45, 1, 59, 0, 22, 1, 59, 0, 0, 1, 59, 0, 1, 0, 2, 0, 20, 0, 2, 1, 13, 0, 2, 8, 62,
+ 0, 2, 8, 63, 0, 36, 0, 79, 0,145, 7,128, 0, 32, 0,167, 0, 7, 0, 91, 0, 7, 0, 92, 0, 7, 8, 64, 0, 7, 8, 65,
+ 0, 7, 8, 66, 0, 7, 8, 67, 0, 7, 2,149, 0, 7, 1,189, 0, 7, 7,130, 0, 7, 8, 68, 0, 0, 8, 69, 0, 0, 8, 70,
+ 0, 12, 2,252, 1, 60, 0, 8, 0, 7, 1,225, 0, 7, 7,153, 0, 7, 7,154, 0, 9, 0, 2, 0, 2, 8, 71, 0, 2, 8, 72,
+ 0, 2, 8, 73, 0, 2, 8, 74, 1, 61, 0, 18, 1, 61, 0, 0, 1, 61, 0, 1, 1, 61, 8, 75, 0, 0, 0, 17, 1, 60, 8, 76,
+ 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 8, 77, 0, 2, 8, 78, 0, 2, 8, 79, 0, 2, 8, 80, 0, 4, 0, 43, 0, 7, 8, 81,
+ 0, 7, 8, 82, 0, 4, 8, 83, 0, 4, 8, 84, 1, 61, 8, 85, 1, 62, 8, 86, 1, 63, 0, 32, 1, 63, 0, 0, 1, 63, 0, 1,
+ 1, 63, 8, 87, 0, 0, 0, 17, 0, 0, 8, 88, 0, 2, 0, 18, 0, 2, 0, 20, 0, 2, 6,236, 0, 2, 7, 14, 0, 2, 8, 89,
+ 0, 2, 0,137, 0, 2, 8, 78, 0, 2, 6,226, 0, 12, 7,123, 0, 12, 8, 90, 0, 27, 5,242, 0, 9, 8, 91, 0, 7, 8, 81,
+ 0, 7, 8, 82, 0, 7, 1,251, 0, 7, 8, 92, 0, 2, 8, 93, 0, 2, 8, 94, 0, 7, 8, 95, 0, 7, 8, 96, 0, 2, 8, 97,
+ 0, 2, 8, 98, 0, 24, 8, 99, 0, 24, 8,100, 0, 24, 8,101, 1, 64, 0,153, 1, 65, 8,102, 1, 62, 0, 6, 1, 62, 0, 0,
+ 1, 62, 0, 1, 1, 63, 8,103, 1, 63, 8,104, 1, 61, 8,105, 1, 61, 8, 85, 0, 57, 0, 16, 0, 27, 0, 31, 0, 12, 8,106,
+ 0, 12, 8,107, 1, 60, 8,108, 0, 12, 8,109, 0, 4, 0, 18, 0, 4, 8,110, 0, 4, 8,111, 0, 4, 8,112, 0, 12, 8,113,
+ 1, 65, 8,114, 1, 61, 8,115, 1, 61, 8,116, 0, 9, 8,117, 0, 9, 8,118, 0, 4, 8,119, 1, 66, 0, 6, 0, 4, 0,128,
+ 0, 4, 0,130, 0, 4, 6,226, 0, 0, 8,120, 0, 0, 8,121, 0, 2, 0, 37, 1, 67, 0, 16, 0, 2, 6,165, 0, 2, 6,166,
+ 0, 2, 8,122, 0, 2, 7,176, 0, 2, 8,123, 0, 2, 0, 68, 0, 7, 2,148, 0, 7, 8,124, 0, 7, 8,125, 0, 2, 1, 34,
+ 0, 0, 8,126, 0, 0, 4, 37, 0, 2, 8,127, 0, 2, 0, 37, 0, 4, 8,128, 0, 4, 8,129, 1, 68, 0, 9, 0, 7, 8,130,
+ 0, 7, 8,131, 0, 7, 7,190, 0, 7, 0,112, 0, 7, 8,132, 0, 7, 5, 66, 0, 2, 8,133, 0, 0, 8,134, 0, 0, 0, 37,
+ 1, 69, 0, 4, 0, 7, 8,135, 0, 7, 8,136, 0, 2, 8,133, 0, 2, 0, 37, 1, 70, 0, 3, 0, 7, 8,137, 0, 7, 8,138,
+ 0, 7, 0, 15, 1, 71, 0, 7, 0, 0, 1,188, 0, 2, 4,104, 0, 2, 4,105, 0, 2, 4,106, 0, 2, 4, 57, 0, 4, 0,130,
+ 0, 4, 3,154, 1, 72, 0, 7, 0, 7, 8,139, 0, 7, 8,140, 0, 7, 8,141, 0, 7, 2, 4, 0, 7, 8,142, 0, 7, 8,143,
+ 0, 7, 8,144, 1, 73, 0, 4, 0, 2, 8,145, 0, 2, 8,146, 0, 2, 8,147, 0, 2, 8,148, 1, 74, 0, 2, 0, 7, 0, 5,
+ 0, 7, 0, 6, 1, 75, 0, 2, 0, 0, 0,169, 0, 0, 8,149, 1, 76, 0, 1, 0, 0, 0, 17, 1, 77, 0, 10, 0, 0, 8,150,
+ 0, 0, 8,151, 0, 0, 8,152, 0, 0, 8,153, 0, 2, 8,122, 0, 2, 8,154, 0, 7, 8,155, 0, 7, 8,156, 0, 7, 8,157,
+ 0, 7, 1,189, 1, 78, 0, 2, 0, 9, 8,158, 0, 9, 8,159, 1, 79, 0, 11, 0, 0, 4,106, 0, 0, 0, 18, 0, 0, 8,133,
+ 0, 0, 0,112, 0, 0, 8,160, 0, 0, 0,109, 0, 0, 0,182, 0, 7, 8,161, 0, 7, 8,162, 0, 7, 8,163, 0, 7, 8,164,
+ 1, 80, 0, 8, 0, 7, 7, 91, 0, 7, 0,129, 0, 7, 4, 37, 0, 7, 2, 72, 0, 7, 8,165, 0, 7, 0,207, 0, 7, 8,166,
+ 0, 4, 0, 18, 1, 81, 0, 4, 0, 2, 8,167, 0, 2, 8,168, 0, 2, 8,169, 0, 2, 0, 37, 1, 82, 0, 1, 0, 0, 0, 17,
+ 1, 83, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 20, 0, 2, 8,170, 1, 84, 0, 10, 0, 2, 3,136, 0, 2, 0, 20,
+ 0, 7, 3,234, 0, 7, 8,171, 0, 7, 8,172, 0, 7, 8,173, 0, 7, 8,174, 1, 83, 8,175, 1, 83, 8,176, 1, 83, 8,177,
+ 0, 60, 0, 9, 0, 4, 0, 20, 0, 4, 0, 64, 0, 24, 8,178, 0, 24, 8,179, 1, 84, 8,180, 0, 7, 8,181, 0, 7, 8,182,
+ 0, 7, 8,183, 0, 7, 8,184, 1, 85, 0, 4, 0, 46, 2,142, 0, 7, 8,185, 0, 7, 1, 92, 0, 7, 0, 37, 0,169, 0, 13,
+ 0, 27, 0, 31, 0, 2, 0, 20, 0, 2, 5, 67, 0, 4, 0,109, 0, 7, 8,186, 0, 7, 2, 1, 0, 7, 8,187, 0, 7, 8,188,
+ 0, 7, 1, 92, 0, 2, 1, 47, 0, 2, 0, 37, 0, 50, 1, 77, 1, 85, 8,189, 1, 86, 0, 10, 0, 4, 0, 18, 0, 4, 0,129,
+ 0, 4, 0, 20, 0, 4, 3, 70, 0, 4, 8,190, 0, 4, 8,191, 0, 4, 8,192, 0, 0, 0, 95, 0, 0, 0, 17, 0, 9, 0, 2,
+ 0, 84, 0, 6, 1, 86, 8,193, 0, 4, 8,194, 0, 4, 8,195, 0, 4, 8,196, 0, 4, 0, 37, 0, 9, 8,197, 1, 87, 0, 5,
+ 0, 7, 2, 66, 0, 7, 2,182, 0, 7, 1,217, 0, 2, 8,198, 0, 2, 0, 37, 1, 88, 0, 5, 0, 7, 2, 66, 0, 7, 8,199,
+ 0, 7, 8,200, 0, 7, 8,201, 0, 7, 2,182, 1, 89, 0, 7, 0, 4, 8,202, 0, 4, 8,203, 0, 4, 8,204, 0, 7, 8,205,
+ 0, 7, 8,206, 0, 7, 8,207, 0, 7, 8,208, 1, 90, 0, 26, 0, 32, 8,209, 1, 88, 3, 66, 1, 88, 8,210, 1, 87, 8,211,
+ 1, 88, 7, 77, 0, 7, 8,212, 0, 7, 8,213, 0, 7, 8,214, 0, 7, 8,215, 0, 7, 8,206, 0, 7, 8,207, 0, 7, 2,182,
+ 0, 7, 2,159, 0, 7, 8,216, 0, 7, 8,217, 0, 7, 0,109, 0, 7, 8,218, 0, 4, 8,202, 0, 4, 8,219, 0, 4, 0, 37,
+ 0, 4, 0, 81, 0, 4, 8,220, 0, 2, 0, 20, 0, 2, 8,221, 0, 2, 8,222, 0, 2, 3,100, 1, 91, 0,112, 0, 27, 0, 31,
+ 0, 4, 0, 20, 0, 2, 0, 18, 0, 2, 8, 49, 0, 2, 8,223, 0, 2, 8,224, 0, 2, 8,225, 0, 2, 8,226, 0, 2, 8,227,
+ 0, 2, 8,228, 0, 2, 8,229, 0, 2, 8,230, 0, 2, 8,231, 0, 2, 8,232, 0, 2, 8,233, 0, 2, 8,234, 0, 2, 8,235,
+ 0, 2, 8,236, 0, 2, 8,237, 0, 2, 1,209, 0, 2, 7, 70, 0, 2, 7, 46, 0, 2, 8,238, 0, 2, 8,239, 0, 2, 3, 98,
+ 0, 2, 3, 99, 0, 2, 8,240, 0, 2, 8,241, 0, 2, 8,242, 0, 2, 8,243, 0, 2, 8,244, 0, 2, 8,245, 0, 7, 8,246,
+ 0, 7, 8,247, 0, 7, 8,248, 0, 2, 8,249, 0, 2, 8,250, 0, 7, 8,251, 0, 7, 8,252, 0, 7, 8,253, 0, 7, 7, 52,
+ 0, 7, 0, 92, 0, 7, 2,159, 0, 7, 7, 58, 0, 7, 8,254, 0, 7, 8,255, 0, 7, 9, 0, 0, 7, 9, 1, 0, 7, 0, 57,
+ 0, 4, 7, 53, 0, 4, 7, 51, 0, 4, 9, 2, 0, 7, 7, 54, 0, 7, 7, 55, 0, 7, 7, 56, 0, 7, 9, 3, 0, 7, 9, 4,
+ 0, 7, 9, 5, 0, 7, 9, 6, 0, 7, 9, 7, 0, 7, 9, 8, 0, 7, 9, 9, 0, 7, 9, 10, 0, 7, 3, 21, 0, 7, 0,109,
+ 0, 7, 9, 11, 0, 7, 9, 12, 0, 7, 9, 13, 0, 7, 9, 14, 0, 7, 9, 15, 0, 7, 9, 16, 0, 7, 2,108, 0, 7, 9, 17,
+ 0, 7, 9, 18, 0, 4, 9, 19, 0, 4, 9, 20, 0, 7, 9, 21, 0, 7, 9, 22, 0, 7, 9, 23, 0, 7, 9, 24, 0, 7, 9, 25,
+ 0, 7, 9, 26, 0, 7, 9, 27, 0, 7, 9, 28, 0, 7, 3, 94, 0, 7, 3, 92, 0, 7, 3, 93, 0, 7, 9, 29, 0, 7, 9, 30,
+ 0, 7, 9, 31, 0, 7, 9, 32, 0, 7, 9, 33, 0, 7, 9, 34, 0, 7, 9, 35, 0, 7, 9, 36, 0, 7, 9, 37, 0, 7, 3, 28,
+ 0, 7, 9, 38, 0, 7, 9, 39, 0, 7, 9, 40, 0, 7, 9, 41, 0, 7, 9, 42, 0, 7, 9, 43, 0, 7, 9, 44, 0, 0, 9, 45,
+ 0, 63, 3, 55, 0, 63, 9, 46, 0, 32, 9, 47, 0, 32, 9, 48, 0, 36, 0, 79, 0,148, 3, 53, 0,148, 9, 49, 0,136, 0, 37,
+ 0,136, 0, 0, 0,136, 0, 1, 1, 91, 9, 50, 1, 90, 3,135, 1, 89, 7,236, 1, 92, 9, 51, 1, 93, 9, 52, 1, 93, 9, 53,
+ 0, 12, 9, 54, 0, 12, 9, 55, 0,149, 3, 54, 0, 32, 9, 56, 0, 32, 9, 57, 0, 32, 9, 58, 0, 12, 9, 59, 0, 12, 9, 60,
+ 0, 7, 0,211, 0, 7, 4, 78, 0, 4, 2,110, 0, 4, 0, 20, 0, 4, 7, 53, 0, 4, 9, 61, 0, 4, 9, 62, 0, 4, 9, 63,
+ 0, 4, 0, 57, 0, 2, 0,218, 0, 2, 9, 64, 0, 2, 9, 65, 0, 2, 9, 66, 0, 2, 3, 47, 0, 2, 9, 67, 0, 0, 9, 68,
+ 0, 2, 9, 69, 0, 2, 9, 70, 0, 2, 9, 71, 0, 9, 9, 72, 0,125, 3,175, 0,123, 0, 34, 1, 94, 9, 73, 0, 7, 3,147,
+ 0, 7, 9, 74, 0, 7, 9, 75, 0, 7, 3,237, 0, 7, 9, 76, 0, 7, 3, 31, 0, 7, 3, 21, 0, 7, 9, 77, 0, 7, 2, 3,
+ 0, 7, 9, 78, 0, 7, 9, 79, 0, 7, 9, 80, 0, 7, 9, 81, 0, 7, 9, 82, 0, 7, 9, 83, 0, 7, 3,148, 0, 7, 9, 84,
+ 0, 7, 9, 85, 0, 7, 9, 86, 0, 7, 3,149, 0, 7, 3,145, 0, 7, 3,146, 0, 4, 9, 87, 0, 4, 0, 93, 0, 4, 9, 88,
+ 0, 4, 9, 89, 0, 2, 9, 90, 0, 2, 9, 91, 0, 2, 9, 92, 0, 2, 9, 93, 0, 2, 9, 94, 0, 2, 0, 37, 0, 4, 0, 70,
+ 0,124, 0, 8, 1, 94, 9, 95, 0, 7, 9, 96, 0, 7, 9, 97, 0, 7, 1,162, 0, 7, 9, 98, 0, 4, 0, 93, 0, 2, 9, 99,
+ 0, 2, 9,100, 1, 95, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 9,101, 1, 96, 0, 6, 1, 96, 0, 0,
+ 1, 96, 0, 1, 1, 95, 9,102, 0, 4, 9,103, 0, 2, 9,104, 0, 2, 0, 20, 1, 97, 0, 5, 1, 97, 0, 0, 1, 97, 0, 1,
+ 0, 12, 9,105, 0, 4, 9,106, 0, 4, 0, 20, 1, 98, 0, 9, 1, 98, 0, 0, 1, 98, 0, 1, 0, 12, 0,128, 1, 97, 9,107,
+ 0, 4, 0, 20, 0, 2, 9,104, 0, 2, 9,108, 0, 7, 0, 94, 0, 0, 9,109, 0,186, 0, 5, 0, 12, 4,120, 0, 4, 0, 20,
+ 0, 2, 9,110, 0, 2, 9,111, 0, 9, 9,112, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index e5868338f75..735f1ffddb9 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -131,12 +131,14 @@ void gp_ui_delstroke_cb (void *gpd, void *gpl)
{
bGPDframe *gpf= gpencil_layer_getframe(gpl, CFRA, 0);
- if (gpf->framenum != CFRA) return;
+ if (gpf) {
+ if (gpf->framenum != CFRA) return;
- gpencil_layer_setactive(gpd, gpl);
- gpencil_frame_delete_laststroke(gpl, gpf);
-
- scrarea_queue_winredraw(curarea);
+ gpencil_layer_setactive(gpd, gpl);
+ gpencil_frame_delete_laststroke(gpl, gpf);
+
+ scrarea_queue_winredraw(curarea);
+ }
}
/* delete active frame of active layer */
diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index 7cbef4984d7..34aefa91225 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -35,7 +35,6 @@ struct SpaceFile;
#define FILE_IMGDISPLAY 3
typedef struct FileSelectParams {
- int type; /* the mode of the filebrowser, FILE_BLENDER, FILE_SPECIAL, FILE_MAIN or FILE_LOADLIB */
char title[24]; /* title, also used for the text of the execute button */
char dir[240]; /* directory */
char file[80]; /* file */
@@ -96,8 +95,8 @@ typedef struct FileLayout
FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile);
-short ED_fileselect_set_params(struct SpaceFile *sfile, int type, const char *title, const char *path,
- short flag, short display, short filter);
+short ED_fileselect_set_params(struct SpaceFile *sfile, const char *title, const char *path,
+ short flag, short display, short filter, short sort);
void ED_fileselect_reset_params(struct SpaceFile *sfile);
diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h
index 8ff716476ad..bfa819632c9 100644
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@ -35,10 +35,13 @@ struct bContext;
struct Base;
struct View3D;
struct bConstraint;
+struct bConstraintChannel;
struct KeyBlock;
struct Lattice;
struct Mesh;
struct Curve;
+struct ReportList;
+struct ModifierData;
/* object_edit.c */
void ED_operatortypes_object(void);
@@ -53,7 +56,7 @@ void ED_base_object_free_and_unlink(struct Scene *scene, struct Base *base);
void ED_object_apply_obmat(struct Object *ob);
/* single object duplicate, if dupflag==0, fully linked, else it uses U.dupflag */
-Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int usedupflag);
+struct Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int usedupflag);
/* bitflags for enter/exit editmode */
@@ -69,8 +72,20 @@ void ED_object_base_init_from_view(struct bContext *C, struct Base *base);
int object_data_is_libdata(struct Object *ob);
/* constraints */
-struct bConstraint *add_new_constraint (short type);
-void add_constraint_to_object (struct bConstraint *con, struct Object *ob);
+struct bConstraint *add_new_constraint(short type);
+void add_constraint_to_object(struct bConstraint *con, struct Object *ob);
+
+struct ListBase *get_active_constraints(struct Object *ob);
+struct bConstraint *get_active_constraint(struct Object *ob);
+struct bConstraintChannel *get_active_constraint_channel(struct Scene *scene, struct Object *ob);
+
+void object_test_constraints(struct Object *ob);
+
+void ED_object_constraint_rename(struct Object *ob, struct bConstraint *con, char *oldname);
+void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con);
+int ED_object_constraint_delete(struct ReportList *reports, struct Object *ob, struct bConstraint *con);
+int ED_object_constraint_move_down(struct ReportList *reports, struct Object *ob, struct bConstraint *con);
+int ED_object_constraint_move_up(struct ReportList *reports, struct Object *ob, struct bConstraint *con);
/* editlattice.c */
void mouse_lattice(struct bContext *C, short mval[2], int extend);
@@ -86,7 +101,13 @@ void latt_to_key(struct Lattice *lt, struct KeyBlock *kb);
void key_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb);
void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb);
-
+/* object_modifier.c */
+int ED_object_modifier_delete(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_move_down(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_move_up(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_convert(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_apply(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_copy(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
#endif /* ED_OBJECT_H */
diff --git a/source/blender/editors/include/ED_previewrender.h b/source/blender/editors/include/ED_previewrender.h
index e74f19af110..c74cb0f9958 100644
--- a/source/blender/editors/include/ED_previewrender.h
+++ b/source/blender/editors/include/ED_previewrender.h
@@ -75,5 +75,6 @@ void ED_preview_free_dbase(void);
void ED_preview_shader_job(const struct bContext *C, void *owner, struct ID *id, int sizex, int sizey);
+void ED_preview_draw(const struct bContext *C, void *idp, rcti *rect);
#endif
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 2484b558b04..c2beb34e7b5 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -89,7 +89,7 @@ void ED_screen_set(struct bContext *C, struct bScreen *sc);
void ED_screen_set_scene(struct bContext *C, struct Scene *scene);
void ED_screen_set_subwinactive(struct wmWindow *win, struct wmEvent *event);
void ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen *screen);
-void ED_screen_animation_timer(struct bContext *C, int enable);
+void ED_screen_animation_timer(struct bContext *C, int redraws, int enable);
int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type);
void ED_screen_full_prevspace(struct bContext *C);
diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h
index 7910351f318..37f2f4f051d 100644
--- a/source/blender/editors/include/ED_screen_types.h
+++ b/source/blender/editors/include/ED_screen_types.h
@@ -29,29 +29,29 @@
#ifndef ED_SCREEN_TYPES_H__
#define ED_SCREEN_TYPES_H__
+/* for animplayer */
+typedef struct ScreenAnimData {
+ ARegion *ar; /* do not read from this, only for comparing if region exists */
+ int redraws;
+} ScreenAnimData;
+
+
typedef struct AZone {
struct AZone *next, *prev;
+ ARegion *ar;
int type;
- short flag;
+ /* region-azone, which of the edges */
+ short edge;
+ /* internal */
short do_draw;
- int pos;
- short x1, y1, x2, y2;
+ /* for draw */
+ short x1, y1, x2, y2, x3, y3;
+ /* for clip */
+ rcti rect;
} AZone;
/* actionzone type */
-#define AZONE_TRI 1
-#define AZONE_QUAD 2
-
-/* actionzone flag */
-
-/* actionzone pos */
-#define AZONE_S 1
-#define AZONE_SW 2
-#define AZONE_W 3
-#define AZONE_NW 4
-#define AZONE_N 5
-#define AZONE_NE 6
-#define AZONE_E 7
-#define AZONE_SE 8
+#define AZONE_AREA 1
+#define AZONE_REGION 2
#endif /* ED_SCREEN_TYPES_H__ */
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 61fd6cb0b79..0604a5e27e1 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -52,6 +52,7 @@ struct rctf;
struct uiStyle;
struct uiFontStyle;
struct ColorBand;
+struct CurveMapping;
typedef struct uiBut uiBut;
typedef struct uiBlock uiBlock;
@@ -86,7 +87,7 @@ typedef struct uiLayout uiLayout;
#define UI_BLOCK_NUMSELECT 8
#define UI_BLOCK_ENTER_OK 16
#define UI_BLOCK_NOSHADOW 32
-#define UI_BLOCK_NO_HILITE 64 /* XXX 2.5 not implemented */
+#define UI_BLOCK_UNUSED 64
#define UI_BLOCK_MOVEMOUSE_QUIT 128
#define UI_BLOCK_KEEP_OPEN 256
#define UI_BLOCK_POPUP 512
@@ -127,11 +128,11 @@ typedef struct uiLayout uiLayout;
#define UI_BUT_ALIGN_DOWN (1<<17)
#define UI_BUT_DISABLED (1<<18)
- /* dont draw hilite on mouse over */
-#define UI_NO_HILITE (1<<19)
+#define UI_BUT_UNUSED (1<<19)
#define UI_BUT_ANIMATED (1<<20)
#define UI_BUT_ANIMATED_KEY (1<<21)
#define UI_BUT_DRIVEN (1<<22)
+#define UI_BUT_INACTIVE (1<<23)
#define UI_PANEL_WIDTH 340
#define UI_COMPACT_PANEL_WIDTH 160
@@ -177,19 +178,22 @@ typedef struct uiLayout uiLayout;
#define INLINK (23<<9)
#define KEYEVT (24<<9)
#define ICONTEXTROW (25<<9)
-#define HSVCUBE (26<<9)
-#define PULLDOWN (27<<9)
-#define ROUNDBOX (28<<9)
-#define CHARTAB (29<<9)
+#define HSVCUBE (26<<9)
+#define PULLDOWN (27<<9)
+#define ROUNDBOX (28<<9)
+#define CHARTAB (29<<9)
#define BUT_COLORBAND (30<<9)
-#define BUT_NORMAL (31<<9)
-#define BUT_CURVE (32<<9)
+#define BUT_NORMAL (31<<9)
+#define BUT_CURVE (32<<9)
#define BUT_TOGDUAL (33<<9)
-#define ICONTOGN (34<<9)
-#define FTPREVIEW (35<<9)
-#define NUMABS (36<<9)
-#define HMENU (37<<9)
-#define TOGBUT (38<<9)
+#define ICONTOGN (34<<9)
+#define FTPREVIEW (35<<9)
+#define NUMABS (36<<9)
+#define TOGBUT (37<<9)
+#define OPTION (38<<9)
+#define OPTIONN (39<<9)
+#define SEARCH_MENU (40<<9)
+#define BUT_EXTRA (41<<9)
#define BUTTYPE (63<<9)
/* Drawing
@@ -240,6 +244,7 @@ typedef uiBlock* (*uiBlockCreateFunc)(struct bContext *C, struct ARegion *ar, vo
void uiPupBlock(struct bContext *C, uiBlockCreateFunc func, void *arg);
void uiPupBlockO(struct bContext *C, uiBlockCreateFunc func, void *arg, char *opname, int opcontext);
+void uiPupBlockOperator(struct bContext *C, uiBlockCreateFunc func, struct wmOperator *op, int opcontext);
/* Blocks
*
@@ -394,11 +399,15 @@ uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str,
uiBut *uiDefIconTextMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip);
uiBut *uiDefBlockBut(uiBlock *block, uiBlockCreateFunc func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip);
+uiBut *uiDefBlockButN(uiBlock *block, uiBlockCreateFunc func, void *argN, char *str, short x1, short y1, short x2, short y2, char *tip);
+
uiBut *uiDefIconBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg, int retval, int icon, short x1, short y1, short x2, short y2, char *tip);
uiBut *uiDefIconTextBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip);
void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *spoin, char *tip);
+uiBut *uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxlen, short x1, short y1, short x2, short y2, char *tip);
+
void uiBlockPickerButtons(struct uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval);
void uiBlockColorbandButtons(struct uiBlock *block, struct ColorBand *coba, struct rctf *butr, int event);
@@ -423,26 +432,40 @@ uiBut *uiFindInlink(uiBlock *block, void *poin);
*
* uiButSetCompleteFunc is for tab completion.
*
+ * uiButSearchFunc is for name buttons, showing a popup with matches
+ *
* uiBlockSetFunc and uiButSetFunc are callbacks run when a button is used,
* in case events, operators or RNA are not sufficient to handle the button.
*
* uiButSetNFunc will free the argument with MEM_freeN. */
+typedef struct uiSearchItems uiSearchItems;
+
typedef void (*uiButHandleFunc)(struct bContext *C, void *arg1, void *arg2);
+typedef void (*uiButHandleRenameFunc)(struct bContext *C, void *arg, char *origstr);
typedef void (*uiButHandleNFunc)(struct bContext *C, void *argN, void *arg2);
typedef void (*uiButCompleteFunc)(struct bContext *C, char *str, void *arg);
+typedef void (*uiButSearchFunc)(const struct bContext *C, void *arg, char *str, uiSearchItems *items);
typedef void (*uiBlockHandleFunc)(struct bContext *C, void *arg, int event);
+
+ /* use inside searchfunc to add items */
+int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin);
+ /* bfunc gets search item *poin as arg2, or if NULL the old string */
+void uiButSetSearchFunc (uiBut *but, uiButSearchFunc sfunc, void *arg1, uiButHandleFunc bfunc);
+ /* height in pixels, it's using hardcoded values still */
+int uiSearchBoxhHeight(void);
void uiBlockSetHandleFunc(uiBlock *block, uiBlockHandleFunc func, void *arg);
void uiBlockSetButmFunc (uiBlock *block, uiMenuHandleFunc func, void *arg);
void uiBlockSetFunc (uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2);
+void uiBlockSetRenameFunc(uiBlock *block, uiButHandleRenameFunc func, void *arg1);
void uiButSetFunc (uiBut *but, uiButHandleFunc func, void *arg1, void *arg2);
void uiButSetNFunc (uiBut *but, uiButHandleNFunc func, void *argN, void *arg2);
void uiButSetCompleteFunc(uiBut *but, uiButCompleteFunc func, void *arg);
-void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(struct bContext *C, uiBlock *block));
+void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const struct bContext *C, void *, struct rcti *rect));
/* Autocomplete
*
@@ -495,9 +518,9 @@ void test_imapoin_but(struct bContext *C, char *name, struct ID **idpp);
void autocomplete_bone(struct bContext *C, char *str, void *arg_v);
void autocomplete_vgroup(struct bContext *C, char *str, void *arg_v);
-struct CurveMapping;
struct rctf;
void curvemap_buttons(uiBlock *block, struct CurveMapping *cumap, char labeltype, short event, short redraw, struct rctf *rect);
+void colorband_buttons(uiBlock *block, struct ColorBand *coba, struct rctf *rect, int small);
/* Module
@@ -533,18 +556,42 @@ uiBut *uiDefMenuTogR(uiBlock *block, struct PointerRNA *ptr, char *propname, cha
#define UI_LAYOUT_PANEL 0
#define UI_LAYOUT_HEADER 1
#define UI_LAYOUT_MENU 2
+
+#define UI_UNIT_X 20
+#define UI_UNIT_Y 20
-#define UI_UNIT_X 20
-#define UI_UNIT_Y 20
+#define UI_LAYOUT_ALIGN_EXPAND 0
+#define UI_LAYOUT_ALIGN_LEFT 1
+#define UI_LAYOUT_ALIGN_CENTER 2
+#define UI_LAYOUT_ALIGN_RIGHT 3
uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int size, int em, struct uiStyle *style);
void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout);
void uiBlockLayoutResolve(const struct bContext *C, uiBlock *block, int *x, int *y);
-float uiBlockAspect(uiBlock *block); /* temporary */
-void uiLayoutContext(uiLayout *layout, int opcontext);
-void uiLayoutFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
-uiBlock *uiLayoutBlock(uiLayout *layout);
+uiBlock *uiLayoutGetBlock(uiLayout *layout);
+
+void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext);
+void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
+void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA *ptr);
+
+void uiLayoutSetActive(uiLayout *layout, int active);
+void uiLayoutSetEnabled(uiLayout *layout, int enabled);
+void uiLayoutSetRedAlert(uiLayout *layout, int redalert);
+void uiLayoutSetAlignment(uiLayout *layout, int alignment);
+void uiLayoutSetKeepAspect(uiLayout *layout, int keepaspect);
+void uiLayoutSetScaleX(uiLayout *layout, float scale);
+void uiLayoutSetScaleY(uiLayout *layout, float scale);
+
+
+int uiLayoutGetOperatorContext(uiLayout *layout);
+int uiLayoutGetActive(uiLayout *layout);
+int uiLayoutGetEnabled(uiLayout *layout);
+int uiLayoutGetRedAlert(uiLayout *layout);
+int uiLayoutGetAlignment(uiLayout *layout);
+int uiLayoutGetKeepAspect(uiLayout *layout);
+float uiLayoutGetScaleX(uiLayout *layout);
+float uiLayoutGetScaleY(uiLayout *layout);
/* layout specifiers */
uiLayout *uiLayoutRow(uiLayout *layout, int align);
@@ -552,18 +599,24 @@ uiLayout *uiLayoutColumn(uiLayout *layout, int align);
uiLayout *uiLayoutColumnFlow(uiLayout *layout, int number, int align);
uiLayout *uiLayoutBox(uiLayout *layout);
uiLayout *uiLayoutFree(uiLayout *layout, int align);
-uiLayout *uiLayoutSplit(uiLayout *layout);
+uiLayout *uiLayoutSplit(uiLayout *layout, float percentage);
uiBlock *uiLayoutFreeBlock(uiLayout *layout);
/* templates */
void uiTemplateHeader(uiLayout *layout, struct bContext *C);
-void uiTemplateHeaderID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
+void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
char *newop, char *openop, char *unlinkop);
+uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);
+uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
+void uiTemplatePreview(uiLayout *layout, struct ID *id);
+void uiTemplateColorRamp(uiLayout *layout, struct ColorBand *coba, int expand);
+void uiTemplateCurveMapping(uiLayout *layout, struct CurveMapping *cumap, int type);
/* items */
void uiItemO(uiLayout *layout, char *name, int icon, char *opname);
void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value);
+void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value);
void uiItemsEnumO(uiLayout *layout, char *opname, char *propname);
void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value);
void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value);
@@ -571,8 +624,8 @@ void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *pr
void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value);
void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, struct IDProperty *properties, int context);
-void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int expand, int slider);
-void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int expand, int slider);
+void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int expand, int slider, int toggle);
+void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int expand, int slider, int toggle);
void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value);
void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname);
diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h
index 09635f3d914..6fa0eb90c5f 100644
--- a/source/blender/editors/include/UI_resources.h
+++ b/source/blender/editors/include/UI_resources.h
@@ -40,14 +40,14 @@ typedef enum {
#define BIFICONID_FIRST (ICON_BLENDER)
/* ui */
ICON_BLENDER,
- ICON_HELP,
+ ICON_QUESTION,
ICON_ERROR,
ICON_BLANK1, // XXX this is used lots, it's not actually 'blank'
ICON_TRIA_RIGHT,
ICON_TRIA_DOWN,
ICON_TRIA_LEFT,
ICON_TRIA_UP,
- ICON_BLANK002,
+ ICON_ARROW_LEFTRIGHT,
ICON_PLUS,
ICON_DISCLOSURE_TRI_DOWN,
ICON_DISCLOSURE_TRI_RIGHT,
@@ -83,8 +83,8 @@ typedef enum {
ICON_CHECKBOX_HLT,
ICON_UNLOCKED,
ICON_LOCKED,
- ICON_BLANK013,
- ICON_BLANK014,
+ ICON_PINNED,
+ ICON_UNPINNED,
ICON_BLANK015,
ICON_RIGHTARROW,
ICON_DOWNARROW_HLT,
@@ -94,22 +94,22 @@ typedef enum {
ICON_INLINK,
ICON_BLANK012b,
- /* available */
- ICON_BLANK016,
- ICON_BLANK017,
- ICON_BLANK018,
- ICON_BLANK019,
- ICON_BLANK020,
- ICON_BLANK021,
- ICON_BLANK022,
- ICON_BLANK023,
- ICON_BLANK024,
- ICON_BLANK025,
- ICON_BLANK026,
- ICON_BLANK027,
- ICON_BLANK028,
- ICON_BLANK029,
- ICON_BLANK030,
+ /* various ui */
+ ICON_HELP,
+ ICON_GHOSTDRAW,
+ ICON_COLOR,
+ ICON_LINKED,
+ ICON_UNLINKED,
+ ICON_HAND,
+ ICON_ZOOM_ALL,
+ ICON_ZOOM_SELECTED,
+ ICON_ZOOM_PREVIOUS,
+ ICON_ZOOM_IN,
+ ICON_ZOOM_OUT,
+ ICON_RENDER_REGION,
+ ICON_BORDER_RECT,
+ ICON_BORDER_LASSO,
+ ICON_FREEZE,
ICON_BLANK031,
ICON_BLANK032,
ICON_BLANK033,
@@ -228,7 +228,7 @@ typedef enum {
ICON_BONE_DATA,
ICON_CONSTRAINT,
ICON_SHAPEKEY_DATA,
- ICON_VGROUP,
+ ICON_BLANK079a,
ICON_BLANK079,
ICON_PACKAGE,
ICON_UGLYPACKAGE,
@@ -248,15 +248,15 @@ typedef enum {
ICON_BLANK080E,
ICON_BLANK080F,
ICON_BLANK080,
- ICON_BLANK081,
+ ICON_STRANDS,
ICON_LIBRARY_DATA_INDIRECT,
ICON_BLANK082,
ICON_BLANK083,
ICON_BLANK084,
- ICON_BLANK085,
- ICON_BLANK086,
- ICON_BLANK087,
- ICON_BLANK088,
+ ICON_GROUP_BONE,
+ ICON_GROUP_VERTEX,
+ ICON_GROUP_VCOL,
+ ICON_GROUP_UVS,
ICON_BLANK089,
ICON_BLANK090,
ICON_RNA,
@@ -327,9 +327,9 @@ typedef enum {
ICON_OUTLINER_DATA_LAMP,
ICON_OUTLINER_DATA_CAMERA,
ICON_OUTLINER_DATA_ARMATURE,
+ ICON_OUTLINER_DATA_FONT,
+ ICON_OUTLINER_DATA_SURFACE,
ICON_OUTLINER_DATA_POSE,
- ICON_OUTLINER_DATA_GENERIC,
- ICON_BLANK128b,
ICON_BLANK129,
ICON_BLANK130,
ICON_BLANK131,
@@ -346,6 +346,174 @@ typedef enum {
ICON_BLANK142,
ICON_BLANK142b,
+ /* PRIMITIVES */
+ ICON_MESH_PLANE,
+ ICON_MESH_CUBE,
+ ICON_MESH_CIRCLE,
+ ICON_MESH_UVSPHERE,
+ ICON_MESH_ICOSPHERE,
+ ICON_MESH_GRID,
+ ICON_MESH_MONKEY,
+ ICON_MESH_TUBE,
+ ICON_MESH_DONUT,
+ ICON_MESH_CONE,
+ ICON_BLANK610,
+ ICON_BLANK611,
+ ICON_LAMP_POINT,
+ ICON_LAMP_SUN,
+ ICON_LAMP_SPOT,
+ ICON_LAMP_HEMI,
+ ICON_LAMP_AREA,
+ ICON_BLANK617,
+ ICON_BLANK618,
+ ICON_BLANK619,
+ ICON_META_PLANE,
+ ICON_META_CUBE,
+ ICON_META_BALL,
+ ICON_META_ELLIPSOID,
+ ICON_META_TUBE,
+ ICON_BLANK625,
+
+ /* PRIMITIVES */
+ ICON_SURFACE_NCURVE,
+ ICON_SURFACE_NCIRCLE,
+ ICON_SURFACE_NSURFACE,
+ ICON_SURFACE_NTUBE,
+ ICON_SURFACE_NSPHERE,
+ ICON_SURFACE_NDONUT,
+ ICON_BLANK636,
+ ICON_BLANK637,
+ ICON_BLANK638,
+ ICON_CURVE_BEZCURVE,
+ ICON_CURVE_BEZCIRCLE,
+ ICON_CURVE_NCURVE,
+ ICON_CURVE_NCIRCLE,
+ ICON_CURVE_PATH,
+ ICON_BLANK644,
+ ICON_BLANK645,
+ ICON_BLANK646,
+ ICON_BLANK647,
+ ICON_BLANK648,
+ ICON_BLANK649,
+ ICON_BLANK650,
+ ICON_BLANK651,
+ ICON_BLANK652,
+ ICON_BLANK653,
+ ICON_BLANK654,
+ ICON_BLANK655,
+
+ /* EMPTY */
+ ICON_BLANK660,
+ ICON_BLANK661,
+ ICON_BLANK662,
+ ICON_BLANK663,
+ ICON_BLANK664,
+ ICON_BLANK665,
+ ICON_BLANK666,
+ ICON_BLANK667,
+ ICON_BLANK668,
+ ICON_BLANK669,
+ ICON_BLANK670,
+ ICON_BLANK671,
+ ICON_BLANK672,
+ ICON_BLANK673,
+ ICON_BLANK674,
+ ICON_BLANK675,
+ ICON_BLANK676,
+ ICON_BLANK677,
+ ICON_BLANK678,
+ ICON_BLANK679,
+ ICON_BLANK680,
+ ICON_BLANK681,
+ ICON_BLANK682,
+ ICON_BLANK683,
+ ICON_BLANK684,
+ ICON_BLANK685,
+
+ /* EMPTY */
+ ICON_BLANK690,
+ ICON_BLANK691,
+ ICON_BLANK692,
+ ICON_BLANK693,
+ ICON_BLANK694,
+ ICON_BLANK695,
+ ICON_BLANK696,
+ ICON_BLANK697,
+ ICON_BLANK698,
+ ICON_BLANK699,
+ ICON_BLANK700,
+ ICON_BLANK701,
+ ICON_BLANK702,
+ ICON_BLANK703,
+ ICON_BLANK704,
+ ICON_BLANK705,
+ ICON_BLANK706,
+ ICON_BLANK707,
+ ICON_BLANK708,
+ ICON_BLANK709,
+ ICON_BLANK710,
+ ICON_BLANK711,
+ ICON_BLANK712,
+ ICON_BLANK713,
+ ICON_BLANK714,
+ ICON_BLANK715,
+
+ /* EMPTY */
+ ICON_BLANK720,
+ ICON_BLANK721,
+ ICON_BLANK722,
+ ICON_BLANK733,
+ ICON_BLANK734,
+ ICON_BLANK735,
+ ICON_BLANK736,
+ ICON_BLANK737,
+ ICON_BLANK738,
+ ICON_BLANK739,
+ ICON_BLANK740,
+ ICON_BLANK741,
+ ICON_BLANK742,
+ ICON_BLANK743,
+ ICON_BLANK744,
+ ICON_BLANK745,
+ ICON_BLANK746,
+ ICON_BLANK747,
+ ICON_BLANK748,
+ ICON_BLANK749,
+ ICON_BLANK750,
+ ICON_BLANK751,
+ ICON_BLANK752,
+ ICON_BLANK753,
+ ICON_BLANK754,
+ ICON_BLANK755,
+
+ /* EMPTY */
+ ICON_BLANK760,
+ ICON_BLANK761,
+ ICON_BLANK762,
+ ICON_BLANK763,
+ ICON_BLANK764,
+ ICON_BLANK765,
+ ICON_BLANK766,
+ ICON_BLANK767,
+ ICON_BLANK768,
+ ICON_BLANK769,
+ ICON_BLANK770,
+ ICON_BLANK771,
+ ICON_BLANK772,
+ ICON_BLANK773,
+ ICON_BLANK774,
+ ICON_BLANK775,
+ ICON_BLANK776,
+ ICON_BLANK777,
+ ICON_BLANK778,
+ ICON_BLANK779,
+ ICON_BLANK780,
+ ICON_BLANK781,
+ ICON_BLANK782,
+ ICON_BLANK783,
+ ICON_BLANK784,
+ ICON_BLANK785,
+
/* MODIFIERS */
ICON_MODIFIER,
ICON_MOD_WAVE,
@@ -507,8 +675,8 @@ typedef enum {
ICON_BLANK219,
ICON_SNAP_PEEL_OBJECT,
ICON_BLANK221,
- ICON_BLANK222,
- ICON_BLANK223,
+ ICON_GRID,
+ ICON_GEARS,
ICON_BLANK224,
ICON_BLANK225,
ICON_BLANK226,
@@ -930,9 +1098,6 @@ void UI_ColorPtrBlendShade3ubv(char *cp1, char *cp2, float fac, int offset);
// get a 3 byte color, blended and shaded between two other char color pointers
void UI_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, int offset);
-// get pointer from RNA pointer
-int UI_GetIconRNA(struct PointerRNA *ptr);
-
// internal (blender) usage only, for init and set active
void UI_SetTheme(int spacetype, int regionid);
diff --git a/source/blender/editors/include/UI_view2d.h b/source/blender/editors/include/UI_view2d.h
index 7ff312151c5..4813b695795 100644
--- a/source/blender/editors/include/UI_view2d.h
+++ b/source/blender/editors/include/UI_view2d.h
@@ -129,6 +129,7 @@ struct View2DScrollers;
struct wmWindowManager;
struct bScreen;
struct ScrArea;
+struct ARegion;
struct bContext;
struct rctf;
@@ -181,6 +182,10 @@ void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
short UI_view2d_mouse_in_scrollers(const struct bContext *C, struct View2D *v2d, int x, int y);
+/* cached text drawing in v2d, to allow pixel-aligned draw as post process */
+void UI_view2d_text_cache_add(struct View2D *v2d, float x, float y, char *str);
+void UI_view2d_text_cache_rectf(struct View2D *v2d, struct rctf *rect, char *str);
+void UI_view2d_text_cache_draw(struct ARegion *ar);
/* operators */
void ui_view2d_operatortypes(void);
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index b4c2969c955..79e32d4a5f1 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -432,6 +432,7 @@ static void ui_draw_links(uiBlock *block)
/* ************** BLOCK ENDING FUNCTION ************* */
+/* NOTE: if but->poin is allocated memory for every defbut, things fail... */
static int ui_but_equals_old(uiBut *but, uiBut *oldbut)
{
/* various properties are being compared here, hopfully sufficient
@@ -537,10 +538,17 @@ void uiEndBlock(const bContext *C, uiBlock *block)
/* temp? Proper check for greying out */
if(but->optype) {
wmOperatorType *ot= but->optype;
+
+ if(but->context)
+ CTX_store_set((bContext*)C, but->context);
+
if(ot==NULL || (ot->poll && ot->poll((bContext *)C)==0)) {
but->flag |= UI_BUT_DISABLED;
but->lock = 1;
}
+
+ if(but->context)
+ CTX_store_set((bContext*)C, NULL);
}
/* only update soft range while not editing */
@@ -655,12 +663,10 @@ void uiDrawBlock(const bContext *C, uiBlock *block)
else if(block->panel)
ui_draw_aligned_panel(ar, &style, block, &rect);
- if(block->drawextra) block->drawextra(C, block);
-
/* widgets */
for(but= block->buttons.first; but; but= but->next) {
ui_but_to_pixelrect(&rect, ar, block, but);
- ui_draw_but(ar, &style, but, &rect);
+ ui_draw_but(C, ar, &style, but, &rect);
}
/* restore matrix */
@@ -679,7 +685,7 @@ static void ui_is_but_sel(uiBut *but)
value= ui_get_but_val(but);
- if( but->type==TOGN || but->type==ICONTOGN) true= 0;
+ if(ELEM3(but->type, TOGN, ICONTOGN, OPTIONN)) true= 0;
if( but->bit ) {
lvalue= (int)value;
@@ -700,10 +706,12 @@ static void ui_is_but_sel(uiBut *but)
case TOG3:
case BUT_TOGDUAL:
case ICONTOG:
+ case OPTION:
if(value!=but->hardmin) push= 1;
break;
case ICONTOGN:
case TOGN:
+ case OPTIONN:
if(value==0.0) push= 1;
break;
case ROW:
@@ -1357,7 +1365,7 @@ int ui_get_but_string_max_length(uiBut *but)
void ui_get_but_string(uiBut *but, char *str, int maxlen)
{
- if(but->rnaprop && ELEM(but->type, TEX, IDPOIN)) {
+ if(but->rnaprop && ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) {
PropertyType type;
char *buf= NULL;
@@ -1400,6 +1408,11 @@ void ui_get_but_string(uiBut *but, char *str, int maxlen)
BLI_strncpy(str, but->poin, maxlen);
return;
}
+ else if(but->type == SEARCH_MENU) {
+ /* string */
+ BLI_strncpy(str, but->poin, maxlen);
+ return;
+ }
else {
/* number */
double value;
@@ -1439,9 +1452,9 @@ static void ui_rna_ID_collection(bContext *C, uiBut *but, PointerRNA *ptr, Prope
/* if it's a collection and has same pointer type, we've got it */
if(RNA_property_type(iprop) == PROP_COLLECTION) {
- srna= RNA_property_pointer_type(iprop);
+ srna= RNA_property_pointer_type(ptr, iprop);
- if(RNA_property_pointer_type(but->rnaprop) == srna) {
+ if(RNA_property_pointer_type(ptr, but->rnaprop) == srna) {
*prop= iprop;
break;
}
@@ -1489,7 +1502,7 @@ static void ui_rna_ID_autocomplete(bContext *C, char *str, void *arg_but)
int ui_set_but_string(bContext *C, uiBut *but, const char *str)
{
- if(but->rnaprop && ELEM(but->type, TEX, IDPOIN)) {
+ if(but->rnaprop && ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) {
if(RNA_property_editable(&but->rnapoin, but->rnaprop)) {
PropertyType type;
@@ -1509,7 +1522,12 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str)
* custom collection too for bones, vertex groups, .. */
ui_rna_ID_collection(C, but, &ptr, &prop);
- if(prop && RNA_property_collection_lookup_string(&ptr, prop, str, &rptr)) {
+ if(str == NULL || str[0] == '\0') {
+ memset(&rptr, 0, sizeof(rptr));
+ RNA_property_pointer_set(&but->rnapoin, but->rnaprop, rptr);
+ return 1;
+ }
+ else if(prop && RNA_property_collection_lookup_string(&ptr, prop, str, &rptr)) {
RNA_property_pointer_set(&but->rnapoin, but->rnaprop, rptr);
return 1;
}
@@ -1528,6 +1546,11 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str)
BLI_strncpy(but->poin, str, but->hardmax);
return 1;
}
+ else if(but->type == SEARCH_MENU) {
+ /* string */
+ BLI_strncpy(but->poin, str, but->hardmax);
+ return 1;
+ }
else {
double value;
@@ -1685,6 +1708,8 @@ void uiFreeBlock(const bContext *C, uiBlock *block)
ui_free_but(C, but);
}
+ CTX_store_free_list(&block->contexts);
+
BLI_freelistN(&block->saferct);
MEM_freeN(block);
@@ -1808,11 +1833,11 @@ void ui_check_but(uiBut *but)
/* if something changed in the button */
double value;
float okwidth;
- int transopts= ui_translate_buttons();
+// int transopts= ui_translate_buttons();
ui_is_but_sel(but);
- if(but->type==TEX || but->type==IDPOIN) transopts= 0;
+// if(but->type==TEX || but->type==IDPOIN) transopts= 0;
/* test for min and max, icon sliders, etc */
switch( but->type ) {
@@ -1917,6 +1942,7 @@ void ui_check_but(uiBut *but)
case IDPOIN:
case TEX:
+ case SEARCH_MENU:
if(!but->editstr) {
char str[UI_MAX_DRAW_STR];
@@ -1987,7 +2013,7 @@ void uiBlockEndAlign(uiBlock *block)
int ui_but_can_align(uiBut *but)
{
- return !ELEM(but->type, LABEL, ROUNDBOX);
+ return !ELEM3(but->type, LABEL, OPTION, OPTIONN);
}
static void ui_block_do_align_but(uiBlock *block, uiBut *first, int nr)
@@ -2221,8 +2247,6 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short
}
but->flag |= (block->flag & UI_BUT_ALIGN);
- if(block->flag & UI_BLOCK_NO_HILITE)
- but->flag |= UI_NO_HILITE;
if (but->lock) {
if (but->lockstr) {
@@ -2230,12 +2254,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short
}
}
- if(but->type == ROUNDBOX) {
- but->flag |= UI_NO_HILITE;
- BLI_addhead(&block->buttons, but);
- }
- else
- BLI_addtail(&block->buttons, but);
+ BLI_addtail(&block->buttons, but);
if(block->curlayout)
ui_layout_add_but(block->curlayout, but);
@@ -2943,7 +2962,12 @@ void uiBlockSetFunc(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2
block->func_arg2= arg2;
}
-void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)())
+void uiBlockSetRenameFunc(uiBlock *block, uiButHandleRenameFunc func, void *arg1)
+{
+
+}
+
+void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const bContext *C, void *idv, rcti *rect))
{
block->drawextra= func;
}
@@ -2989,6 +3013,16 @@ uiBut *uiDefBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg, char *st
return but;
}
+uiBut *uiDefBlockButN(uiBlock *block, uiBlockCreateFunc func, void *argN, char *str, short x1, short y1, short x2, short y2, char *tip)
+{
+ uiBut *but= ui_def_but(block, BLOCK, 0, str, x1, y1, x2, y2, NULL, 0.0, 0.0, 0.0, 0.0, tip);
+ but->block_create_func= func;
+ but->func_argN= argN;
+ ui_check_but(but);
+ return but;
+}
+
+
uiBut *uiDefPulldownBut(uiBlock *block, uiBlockCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip)
{
uiBut *but= ui_def_but(block, PULLDOWN, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
@@ -2999,7 +3033,7 @@ uiBut *uiDefPulldownBut(uiBlock *block, uiBlockCreateFunc func, void *arg, char
uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip)
{
- uiBut *but= ui_def_but(block, HMENU, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
+ uiBut *but= ui_def_but(block, PULLDOWN, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
but->menu_create_func= func;
ui_check_but(but);
return but;
@@ -3007,7 +3041,7 @@ uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str,
uiBut *uiDefIconTextMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip)
{
- uiBut *but= ui_def_but(block, HMENU, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
+ uiBut *but= ui_def_but(block, PULLDOWN, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
but->icon= (BIFIconID) icon;
but->flag|= UI_HAS_ICON;
@@ -3063,6 +3097,31 @@ void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1,
ui_check_but(but);
}
+/* arg is pointer to string/name, use uiButSetSearchFunc() below to make this work */
+uiBut *uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxlen, short x1, short y1, short x2, short y2, char *tip)
+{
+ uiBut *but= ui_def_but(block, SEARCH_MENU, retval, "", x1, y1, x2, y2, arg, 0.0, maxlen, 0.0, 0.0, tip);
+
+ but->icon= (BIFIconID) icon;
+ but->flag|= UI_HAS_ICON;
+
+ but->flag|= UI_ICON_LEFT|UI_TEXT_LEFT;
+
+ ui_check_but(but);
+
+ return but;
+}
+
+/* arg is user value, searchfunc and handlefunc both get it as arg */
+void uiButSetSearchFunc(uiBut *but, uiButSearchFunc sfunc, void *arg, uiButHandleFunc bfunc)
+{
+ but->search_func= sfunc;
+ but->search_arg= arg;
+
+ uiButSetFunc(but, bfunc, arg, NULL);
+}
+
+
/* Program Init/Exit */
void UI_init(void)
diff --git a/source/blender/editors/interface/interface_api.c b/source/blender/editors/interface/interface_api.c
index b593aef2208..60bfe4e79ad 100644
--- a/source/blender/editors/interface/interface_api.c
+++ b/source/blender/editors/interface/interface_api.c
@@ -54,6 +54,12 @@ void RNA_api_ui_layout(StructRNA *srna)
FunctionRNA *func;
PropertyRNA *parm;
+ static EnumPropertyItem curve_type_items[] = {
+ {0, "NONE", "None", ""},
+ {'v', "VECTOR", "Vector", ""},
+ {'c', "COLOR", "Color", ""},
+ {0, NULL, NULL, NULL}};
+
/* simple layout specifiers */
func= RNA_def_function(srna, "row", "uiLayoutRow");
parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
@@ -80,6 +86,7 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "split", "uiLayoutSplit");
parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
RNA_def_function_return(func, parm);
+ RNA_def_float(func, "percentage", 0.5f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
/* items */
func= RNA_def_function(srna, "itemR", "uiItemR");
@@ -89,7 +96,8 @@ void RNA_api_ui_layout(StructRNA *srna)
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in data.");
RNA_def_property_flag(parm, PROP_REQUIRED);
RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
- RNA_def_boolean(func, "slider", 0, "", "Use slider for numeric values.");
+ RNA_def_boolean(func, "slider", 0, "", "Use slider widget for numeric values.");
+ RNA_def_boolean(func, "toggle", 0, "", "Use toggle widget for boolean values.");
func= RNA_def_function(srna, "items_enumR", "uiItemsEnumR");
parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
@@ -116,12 +124,12 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "itemO", "uiItemO");
api_ui_item_op_common(func);
- /*func= RNA_def_function(srna, "item_enumO", "uiItemEnumO");
+ func= RNA_def_function(srna, "item_enumO", "uiItemEnumO_string");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
- RNA_def_property_flag(parm, PROP_REQUIRED);*/
+ RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "items_enumO", "uiItemsEnumO");
parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator.");
@@ -174,12 +182,19 @@ void RNA_api_ui_layout(StructRNA *srna)
func= RNA_def_function(srna, "itemS", "uiItemS");
+ /* context */
+ func= RNA_def_function(srna, "set_context_pointer", "uiLayoutSetContextPointer");
+ parm= RNA_def_string(func, "name", "", 0, "Name", "Name of entry in the context.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_pointer(func, "data", "AnyType", "", "Pointer to put in context.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
/* templates */
func= RNA_def_function(srna, "template_header", "uiTemplateHeader");
parm= RNA_def_pointer(func, "context", "Context", "", "Current context.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- func= RNA_def_function(srna, "template_header_ID", "uiTemplateHeaderID");
+ func= RNA_def_function(srna, "template_ID", "uiTemplateID");
parm= RNA_def_pointer(func, "context", "Context", "", "Current context.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
@@ -189,5 +204,31 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_string(func, "new", "", 0, "", "Operator identifier to create a new ID block.");
RNA_def_string(func, "open", "", 0, "", "Operator identifier to open a new ID block.");
RNA_def_string(func, "unlink", "", 0, "", "Operator identifier to unlink the ID block.");
+
+ func= RNA_def_function(srna, "template_modifier", "uiTemplateModifier");
+ parm= RNA_def_pointer(func, "data", "AnyType", "", "Modifier data.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
+ RNA_def_function_return(func, parm);
+
+ func= RNA_def_function(srna, "template_constraint", "uiTemplateConstraint");
+ parm= RNA_def_pointer(func, "data", "AnyType", "", "Constraint data.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
+ RNA_def_function_return(func, parm);
+
+ func= RNA_def_function(srna, "template_preview", "uiTemplatePreview");
+ parm= RNA_def_pointer(func, "id", "ID", "", "ID datablock.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+ func= RNA_def_function(srna, "template_curve_mapping", "uiTemplateCurveMapping");
+ parm= RNA_def_pointer(func, "curvemap", "CurveMapping", "", "Curve mapping pointer.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_enum(func, "type", curve_type_items, 0, "Type", "Type of curves to display.");
+
+ func= RNA_def_function(srna, "template_color_ramp", "uiTemplateColorRamp");
+ parm= RNA_def_pointer(func, "ramp", "ColorRamp", "", "Color ramp pointer.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
}
diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index 955abe1aecd..6d6d4ab9299 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -806,7 +806,8 @@ void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect)
glEnable(GL_LIGHT7);
glEnable(GL_LIGHTING);
- VECCOPY(dir, (float *)but->poin);
+ ui_get_but_vectorf(but, dir);
+
dir[3]= 0.0f; /* glLight needs 4 args, 0.0 is sun */
glLightfv(GL_LIGHT7, GL_POSITION, dir);
glLightfv(GL_LIGHT7, GL_DIFFUSE, diffn);
@@ -817,7 +818,12 @@ void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect)
/* transform to button */
glPushMatrix();
glTranslatef(rect->xmin + 0.5f*(rect->xmax-rect->xmin), rect->ymin+ 0.5f*(rect->ymax-rect->ymin), 0.0f);
- size= (rect->xmax-rect->xmin)/200.f;
+
+ if( rect->xmax-rect->xmin < rect->ymax-rect->ymin)
+ size= (rect->xmax-rect->xmin)/200.f;
+ else
+ size= (rect->ymax-rect->ymin)/200.f;
+
glScalef(size, size, size);
if(displist==0) {
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index ea5eb354b54..74559b36c60 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -97,7 +97,7 @@ typedef struct uiHandleButtonData {
/* overall state */
uiHandleButtonState state;
- int cancel, retval;
+ int cancel, escapecancel, retval;
int applied, appliedinteractive;
wmTimer *flashtimer;
@@ -127,6 +127,9 @@ typedef struct uiHandleButtonData {
/* menu open */
uiPopupBlockHandle *menu;
int menuretval;
+
+ /* search box */
+ ARegion *searchbox;
/* post activate */
uiButtonActivateType posttype;
@@ -139,7 +142,8 @@ typedef struct uiAfterFunc {
uiButHandleFunc func;
void *func_arg1;
void *func_arg2;
-
+ void *func_arg3;
+
uiButHandleNFunc funcN;
void *func_argN;
@@ -157,6 +161,8 @@ typedef struct uiAfterFunc {
PointerRNA rnapoin;
PropertyRNA *rnaprop;
+
+ bContextStore *context;
} uiAfterFunc;
static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state);
@@ -228,6 +234,7 @@ static void ui_apply_but_func(bContext *C, uiBut *but)
after->func= but->func;
after->func_arg1= but->func_arg1;
after->func_arg2= but->func_arg2;
+ after->func_arg3= but->func_arg3;
after->funcN= but->funcN;
after->func_argN= but->func_argN;
@@ -249,6 +256,9 @@ static void ui_apply_but_func(bContext *C, uiBut *but)
after->rnapoin= but->rnapoin;
after->rnaprop= but->rnaprop;
+ if(but->context)
+ after->context= CTX_store_copy(but->context);
+
but->optype= NULL;
but->opcontext= 0;
but->opptr= NULL;
@@ -270,6 +280,9 @@ static void ui_apply_but_funcs_after(bContext *C)
after= *afterf; /* copy to avoid memleak on exit() */
BLI_freelinkN(&funcs, afterf);
+ if(after.context)
+ CTX_store_set(C, after.context);
+
if(after.func)
after.func(C, after.func_arg1, after.func_arg2);
if(after.funcN)
@@ -289,6 +302,11 @@ static void ui_apply_but_funcs_after(bContext *C)
if(after.rnapoin.data)
RNA_property_update(C, &after.rnapoin, after.rnaprop);
+
+ if(after.context) {
+ CTX_store_set(C, NULL);
+ CTX_store_free(after.context);
+ }
}
}
@@ -364,7 +382,7 @@ static void ui_apply_but_TOG(bContext *C, uiBlock *block, uiBut *but, uiHandleBu
if(value==0.0) push= 1;
else push= 0;
- if(but->type==TOGN || but->type==ICONTOGN) push= !push;
+ if(ELEM3(but->type, TOGN, ICONTOGN, OPTIONN)) push= !push;
ui_set_but_val(but, (double)push);
if(but->type==ICONTOG || but->type==ICONTOGN) ui_check_but(but);
}
@@ -402,9 +420,10 @@ static void ui_apply_but_TEX(bContext *C, uiBut *but, uiHandleButtonData *data)
/* give butfunc the original text too */
/* feature used for bone renaming, channels, etc */
- if(but->func_arg2==NULL) but->func_arg2= data->origstr;
+ /* XXX goes via uiButHandleRenameFunc now */
+// if(but->func_arg2==NULL) but->func_arg2= data->origstr;
ui_apply_but_func(C, but);
- if(but->func_arg2==data->origstr) but->func_arg2= NULL;
+// if(but->func_arg2==data->origstr) but->func_arg2= NULL;
data->retval= but->retval;
data->applied= 1;
@@ -431,13 +450,6 @@ static void ui_apply_but_NUM(bContext *C, uiBut *but, uiHandleButtonData *data)
data->applied= 1;
}
-static void ui_apply_but_LABEL(bContext *C, uiBut *but, uiHandleButtonData *data)
-{
- ui_apply_but_func(C, but);
- data->retval= but->retval;
- data->applied= 1;
-}
-
static void ui_apply_but_TOG3(bContext *C, uiBut *but, uiHandleButtonData *data)
{
if(but->pointype==SHO ) {
@@ -564,6 +576,7 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
ui_apply_but_BUT(C, but, data);
break;
case TEX:
+ case SEARCH_MENU:
ui_apply_but_TEX(C, but, data);
break;
case TOGBUT:
@@ -573,6 +586,8 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
case ICONTOGN:
case TOGN:
case BUT_TOGDUAL:
+ case OPTION:
+ case OPTIONN:
ui_apply_but_TOG(C, block, but, data);
break;
case ROW:
@@ -590,10 +605,6 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
break;
case HSVSLI:
break;
- case ROUNDBOX:
- case LABEL:
- ui_apply_but_LABEL(C, but, data);
- break;
case TOG3:
ui_apply_but_TOG3(C, but, data);
break;
@@ -602,7 +613,6 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
case ICONTEXTROW:
case BLOCK:
case PULLDOWN:
- case HMENU:
case COL:
ui_apply_but_BLOCK(C, but, data);
break;
@@ -630,6 +640,8 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
case LINK:
case INLINK:
break;
+ default:
+ break;
}
but->editstr= editstr;
@@ -814,6 +826,7 @@ static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data)
static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x)
{
uiStyle *style= U.uistyles.first; // XXX pass on as arg
+ int startx= but->x1;
char *origstr;
uiStyleFontSet(&style->widget);
@@ -823,7 +836,11 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
BLI_strncpy(origstr, but->drawstr, data->maxlen+1);
but->pos= strlen(origstr)-but->ofs;
- while((BLF_width(origstr+but->ofs) + but->x1) > x) {
+ /* XXX solve generic */
+ if(but->type==NUM || but->type==NUMSLI)
+ startx += 20;
+
+ while((BLF_width(origstr+but->ofs) + startx) > x) {
if (but->pos <= 0) break;
but->pos--;
origstr[but->pos+but->ofs] = 0;
@@ -874,7 +891,7 @@ static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char asc
}
}
- return WM_UI_HANDLER_BREAK;
+ return changed;
}
void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, int jump)
@@ -1033,7 +1050,7 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio
else { /* backspace */
if(len!=0) {
if ((but->selend - but->selsta) > 0) {
- ui_textedit_delete_selection(but, data);
+ changed= ui_textedit_delete_selection(but, data);
}
else if(but->pos>0) {
for(x=but->pos; x<len; x++)
@@ -1127,7 +1144,7 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
return changed;
}
-static void ui_textedit_begin(uiBut *but, uiHandleButtonData *data)
+static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
{
if(data->str) {
MEM_freeN(data->str);
@@ -1149,13 +1166,27 @@ static void ui_textedit_begin(uiBut *but, uiHandleButtonData *data)
but->selsta= 0;
but->selend= strlen(but->drawstr) - strlen(but->str);
+ /* optional searchbox */
+ if(but->type==SEARCH_MENU) {
+ data->searchbox= ui_searchbox_create(C, data->region, but);
+ ui_searchbox_update(C, data->searchbox, but, 1); /* 1= reset */
+ }
+
ui_check_but(but);
}
-static void ui_textedit_end(uiBut *but, uiHandleButtonData *data)
+static void ui_textedit_end(bContext *C, uiBut *but, uiHandleButtonData *data)
{
if(but) {
- but->editstr= 0;
+ if(data->searchbox) {
+ if(data->cancel==0)
+ ui_searchbox_apply(but, data->searchbox);
+
+ ui_searchbox_free(C, data->searchbox);
+ data->searchbox= NULL;
+ }
+
+ but->editstr= NULL;
but->pos= -1;
}
}
@@ -1208,18 +1239,32 @@ static void ui_textedit_prev_but(uiBlock *block, uiBut *actbut, uiHandleButtonDa
}
}
+
static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
- int mx, my, changed= 0, retval= WM_UI_HANDLER_CONTINUE;
+ int mx, my, changed= 0, inbox=0, retval= WM_UI_HANDLER_CONTINUE;
switch(event->type) {
+ case WHEELUPMOUSE:
+ case WHEELDOWNMOUSE:
+ case MOUSEMOVE:
+ if(data->searchbox)
+ ui_searchbox_event(C, data->searchbox, but, event);
+
+ break;
case RIGHTMOUSE:
case ESCKEY:
data->cancel= 1;
+ data->escapecancel= 1;
button_activate_state(C, but, BUTTON_STATE_EXIT);
retval= WM_UI_HANDLER_BREAK;
break;
case LEFTMOUSE: {
+
+ /* exit on LMB only on RELEASE for searchbox, to mimic other popups, and allow multiple menu levels */
+ if(data->searchbox)
+ inbox= BLI_in_rcti(&data->searchbox->winrct, event->x, event->y);
+
if(event->val==KM_PRESS) {
mx= event->x;
my= event->y;
@@ -1233,11 +1278,18 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
button_activate_state(C, but, BUTTON_STATE_TEXT_SELECTING);
retval= WM_UI_HANDLER_BREAK;
}
- else {
+ else if(inbox==0) {
+ /* if searchbox, click outside will cancel */
+ if(data->searchbox)
+ data->cancel= data->escapecancel= 1;
button_activate_state(C, but, BUTTON_STATE_EXIT);
retval= WM_UI_HANDLER_BREAK;
}
}
+ else if(inbox) {
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ retval= WM_UI_HANDLER_BREAK;
+ }
break;
}
}
@@ -1267,11 +1319,21 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
retval= WM_UI_HANDLER_BREAK;
break;
case DOWNARROWKEY:
+ if(data->searchbox) {
+ ui_searchbox_event(C, data->searchbox, but, event);
+ break;
+ }
+ /* pass on purposedly */
case ENDKEY:
ui_textedit_move_end(but, data, 1, event->shift);
retval= WM_UI_HANDLER_BREAK;
break;
case UPARROWKEY:
+ if(data->searchbox) {
+ ui_searchbox_event(C, data->searchbox, but, event);
+ break;
+ }
+ /* pass on purposedly */
case HOMEKEY:
ui_textedit_move_end(but, data, 0, event->shift);
retval= WM_UI_HANDLER_BREAK;
@@ -1319,6 +1381,9 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
if(changed) {
if(data->interactive) ui_apply_button(C, block, but, data, 1);
else ui_check_but(but);
+
+ if(data->searchbox)
+ ui_searchbox_update(C, data->searchbox, but, 1); /* 1 = reset */
}
if(changed || (retval == WM_UI_HANDLER_BREAK))
@@ -1423,20 +1488,28 @@ static void ui_blockopen_begin(bContext *C, uiBut *but, uiHandleButtonData *data
switch(but->type) {
case BLOCK:
case PULLDOWN:
- func= but->block_create_func;
- arg= but->poin;
- break;
- case HMENU:
- menufunc= but->menu_create_func;
- arg= but->poin;
+ if(but->menu_create_func) {
+ menufunc= but->menu_create_func;
+ arg= but->poin;
+ }
+ else {
+ func= but->block_create_func;
+ arg= but->poin?but->poin:but->func_argN;
+ }
break;
case MENU:
- data->origvalue= ui_get_but_val(but);
- data->value= data->origvalue;
- but->editval= &data->value;
+ if(but->menu_create_func) {
+ menufunc= but->menu_create_func;
+ arg= but->poin;
+ }
+ else {
+ data->origvalue= ui_get_but_val(but);
+ data->value= data->origvalue;
+ but->editval= &data->value;
- handlefunc= ui_block_func_MENU;
- arg= but;
+ handlefunc= ui_block_func_MENU;
+ arg= but;
+ }
break;
case ICONROW:
handlefunc= ui_block_func_ICONROW;
@@ -1544,7 +1617,7 @@ static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, w
static int ui_do_but_TEX(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
if(data->state == BUTTON_STATE_HIGHLIGHT) {
- if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) {
+ if(ELEM4(event->type, LEFTMOUSE, PADENTER, RETKEY, EVT_BUT_OPEN) && event->val==KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
return WM_UI_HANDLER_BREAK;
}
@@ -1689,7 +1762,16 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
ui_window_to_block(data->region, block, &mx, &my);
if(data->state == BUTTON_STATE_HIGHLIGHT) {
- if(event->val==KM_PRESS) {
+ /* XXX hardcoded keymap check.... */
+ if(event->type == WHEELDOWNMOUSE && event->alt) {
+ mx= but->x1;
+ click= 1;
+ }
+ else if(event->type == WHEELUPMOUSE && event->alt) {
+ mx= but->x2;
+ click= 1;
+ }
+ else if(event->val==KM_PRESS) {
if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->shift) {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
retval= WM_UI_HANDLER_BREAK;
@@ -1703,9 +1785,15 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
else if(ELEM(event->type, PADENTER, RETKEY) && event->val==KM_PRESS)
click= 1;
}
+
}
else if(data->state == BUTTON_STATE_NUM_EDITING) {
- if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
+ if(event->type == ESCKEY) {
+ data->cancel= 1;
+ data->escapecancel= 1;
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ }
+ else if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
if(data->dragchange)
button_activate_state(C, but, BUTTON_STATE_EXIT);
else
@@ -1885,7 +1973,16 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
ui_window_to_block(data->region, block, &mx, &my);
if(data->state == BUTTON_STATE_HIGHLIGHT) {
- if(event->val==KM_PRESS) {
+ /* XXX hardcoded keymap check.... */
+ if(event->type == WHEELDOWNMOUSE && event->alt) {
+ mx= but->x1;
+ click= 2;
+ }
+ else if(event->type == WHEELUPMOUSE && event->alt) {
+ mx= but->x2;
+ click= 2;
+ }
+ else if(event->val==KM_PRESS) {
if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->shift) {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
retval= WM_UI_HANDLER_BREAK;
@@ -1901,7 +1998,12 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
}
}
else if(data->state == BUTTON_STATE_NUM_EDITING) {
- if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
+ if(event->type == ESCKEY) {
+ data->cancel= 1;
+ data->escapecancel= 1;
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ }
+ else if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
if(data->dragchange)
button_activate_state(C, but, BUTTON_STATE_EXIT);
else
@@ -1923,7 +2025,7 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
}
if(click) {
- if (event->ctrl) {
+ if (event->ctrl || click==2) {
/* nudge slider to the left or right */
float f, tempf, softmin, softmax, softrange;
int temp;
@@ -1976,11 +2078,27 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
static int ui_do_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
+
if(data->state == BUTTON_STATE_HIGHLIGHT) {
if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_MENU_OPEN);
return WM_UI_HANDLER_BREAK;
}
+ else if(ELEM3(but->type, MENU, ICONROW, ICONTEXTROW)) {
+
+ if(event->type == WHEELDOWNMOUSE && event->alt) {
+ data->value= ui_step_name_menu(but, -1);
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ ui_apply_button(C, but->block, but, data, 1);
+ return WM_UI_HANDLER_BREAK;
+ }
+ else if(event->type == WHEELUPMOUSE && event->alt) {
+ data->value= ui_step_name_menu(but, 1);
+ button_activate_state(C, but, BUTTON_STATE_EXIT);
+ ui_apply_button(C, but->block, but, data, 1);
+ return WM_UI_HANDLER_BREAK;
+ }
+ }
}
return WM_UI_HANDLER_CONTINUE;
@@ -2669,6 +2787,8 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
case ICONTOGN:
case TOGN:
case BUT_TOGDUAL:
+ case OPTION:
+ case OPTIONN:
retval= ui_do_but_TOG(C, but, data, event);
break;
#if 0
@@ -2695,20 +2815,14 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
break;
case TEX:
case IDPOIN:
+ case SEARCH_MENU:
retval= ui_do_but_TEX(C, block, but, data, event);
break;
case MENU:
- retval= ui_do_but_BLOCK(C, but, data, event);
- break;
case ICONROW:
- retval= ui_do_but_BLOCK(C, but, data, event);
- break;
case ICONTEXTROW:
- retval= ui_do_but_BLOCK(C, but, data, event);
- break;
case BLOCK:
case PULLDOWN:
- case HMENU:
retval= ui_do_but_BLOCK(C, but, data, event);
break;
case BUTM:
@@ -2841,9 +2955,7 @@ static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y)
ui_window_to_block(ar, block, &mx, &my);
for(but=block->buttons.first; but; but= but->next) {
- if(but->flag & UI_NO_HILITE)
- continue;
- if(but->type==LABEL)
+ if(ELEM3(but->type, LABEL, ROUNDBOX, SEPR))
continue;
if(ui_but_contains_pt(but, mx, my))
@@ -2896,7 +3008,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
button_tooltip_timer_reset(but);
/* automatic open pulldown block timer */
- if(ELEM4(but->type, BLOCK, PULLDOWN, HMENU, ICONTEXTROW)) {
+ if(ELEM3(but->type, BLOCK, PULLDOWN, ICONTEXTROW)) {
if(!data->autoopentimer) {
int time;
@@ -2930,9 +3042,9 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
/* text editing */
if(state == BUTTON_STATE_TEXT_EDITING && data->state != BUTTON_STATE_TEXT_SELECTING)
- ui_textedit_begin(but, data);
+ ui_textedit_begin(C, but, data);
else if(data->state == BUTTON_STATE_TEXT_EDITING && state != BUTTON_STATE_TEXT_SELECTING)
- ui_textedit_end(but, data);
+ ui_textedit_end(C, but, data);
/* number editing */
if(state == BUTTON_STATE_NUM_EDITING)
@@ -2984,7 +3096,9 @@ static void button_activate_init(bContext *C, ARegion *ar, uiBut *but, uiButtonA
data= MEM_callocN(sizeof(uiHandleButtonData), "uiHandleButtonData");
data->window= CTX_wm_window(C);
data->region= ar;
- data->interactive= but->type==BUT_CURVE?0:1; // XXX temp
+ if( ELEM(but->type, BUT_CURVE, SEARCH_MENU) ); // XXX curve is temp
+ else data->interactive= 1;
+
data->state = BUTTON_STATE_INIT;
/* activate button */
@@ -2999,7 +3113,7 @@ static void button_activate_init(bContext *C, ARegion *ar, uiBut *but, uiButtonA
but->block->auto_open= 0;
button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
-
+
if(type == BUTTON_ACTIVATE_OPEN) {
button_activate_state(C, but, BUTTON_STATE_MENU_OPEN);
@@ -3037,12 +3151,14 @@ static void button_activate_exit(bContext *C, uiHandleButtonData *data, uiBut *b
/* if this button is in a menu, this will set the button return
* value to the button value and the menu return value to ok, the
* menu return value will be picked up and the menu will close */
- if(block->handle && !(block->flag & UI_BLOCK_KEEP_OPEN) && !data->cancel) {
- uiPopupBlockHandle *menu;
+ if(block->handle && !(block->flag & UI_BLOCK_KEEP_OPEN)) {
+ if(!data->cancel || data->escapecancel) {
+ uiPopupBlockHandle *menu;
- menu= block->handle;
- menu->butretval= data->retval;
- menu->menuretval= UI_RETURN_OK;
+ menu= block->handle;
+ menu->butretval= data->retval;
+ menu->menuretval= (data->cancel)? UI_RETURN_CANCEL: UI_RETURN_OK;
+ }
}
/* disable tooltips until mousemove */
@@ -3086,16 +3202,35 @@ void ui_button_active_cancel(const bContext *C, uiBut *but)
/************** handle activating a button *************/
+static uiBut *uit_but_find_open_event(ARegion *ar, wmEvent *event)
+{
+ uiBlock *block;
+ uiBut *but;
+
+ for(block=ar->uiblocks.first; block; block=block->next) {
+ for(but=block->buttons.first; but; but= but->next)
+ if(but==event->customdata)
+ return but;
+ }
+ return NULL;
+}
+
static int ui_handle_button_over(bContext *C, wmEvent *event, ARegion *ar)
{
uiBut *but;
if(event->type == MOUSEMOVE) {
but= ui_but_find_mouse_over(ar, event->x, event->y);
-
if(but)
button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER);
}
+ else if(event->type == EVT_BUT_OPEN) {
+ but= uit_but_find_open_event(ar, event);
+ if(but) {
+ button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER);
+ ui_do_button(C, but->block, but, event);
+ }
+ }
return WM_UI_HANDLER_CONTINUE;
}
@@ -3134,6 +3269,7 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
if(data->state == BUTTON_STATE_HIGHLIGHT) {
switch(event->type) {
+
case MOUSEMOVE:
/* verify if we are still over the button, if not exit */
if(!ui_mouse_inside_button(ar, but, event->x, event->y)) {
@@ -3167,6 +3303,15 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
retval= WM_UI_HANDLER_CONTINUE;
break;
+ case WHEELUPMOUSE:
+ case WHEELDOWNMOUSE:
+ case MIDDLEMOUSE:
+ /* XXX hardcoded keymap check... but anyway, while view changes, tooltips should be removed */
+ if(data->tooltiptimer) {
+ WM_event_remove_window_timer(data->window, data->tooltiptimer);
+ data->tooltiptimer= NULL;
+ }
+ /* pass on purposedly */
default:
/* handle button type specific events */
retval= ui_do_button(C, block, but, event);
@@ -3378,7 +3523,9 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu,
if(block->miny <= my && block->maxy >= my)
inside= 1;
- if((but=ui_but_find_activated(ar)) && button_modal_state(but->active->state)) {
+ /* if there's an active modal button, don't check events or outside, except for search menu */
+ but= ui_but_find_activated(ar);
+ if(but && button_modal_state(but->active->state) && but->type!=SEARCH_MENU) {
/* if a button is activated modal, always reset the start mouse
* position of the towards mechanism to avoid loosing focus,
* and don't handle events */
@@ -3389,125 +3536,128 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu,
if(event->type == MOUSEMOVE)
ui_mouse_motion_towards_init(menu, mx, my, 0);
- switch(event->type) {
- /* closing sublevels of pulldowns */
- case LEFTARROWKEY:
- if(event->val==KM_PRESS && (block->flag & UI_BLOCK_LOOP))
- if(BLI_countlist(&block->saferct) > 0)
- menu->menuretval= UI_RETURN_OUT;
-
- retval= WM_UI_HANDLER_BREAK;
- break;
-
- /* opening sublevels of pulldowns */
- case RIGHTARROWKEY:
- if(event->val==KM_PRESS && (block->flag & UI_BLOCK_LOOP)) {
- but= ui_but_find_activated(ar);
-
- if(!but) {
- /* no item active, we make first active */
- if(block->direction & UI_TOP) but= ui_but_last(block);
- else but= ui_but_first(block);
- }
+ /* events not for active search menu button */
+ if(but==NULL || but->type!=SEARCH_MENU) {
+ switch(event->type) {
+ /* closing sublevels of pulldowns */
+ case LEFTARROWKEY:
+ if(event->val==KM_PRESS && (block->flag & UI_BLOCK_LOOP))
+ if(BLI_countlist(&block->saferct) > 0)
+ menu->menuretval= UI_RETURN_OUT;
- if(but && ELEM(but->type, BLOCK, HMENU))
- ui_handle_button_activate(C, ar, but, BUTTON_ACTIVATE_OPEN);
- }
+ retval= WM_UI_HANDLER_BREAK;
+ break;
- retval= WM_UI_HANDLER_BREAK;
- break;
-
- case UPARROWKEY:
- case DOWNARROWKEY:
- case WHEELUPMOUSE:
- case WHEELDOWNMOUSE:
- /* arrowkeys: only handle for block_loop blocks */
- if(inside || (block->flag & UI_BLOCK_LOOP)) {
- if(event->val==KM_PRESS) {
+ /* opening sublevels of pulldowns */
+ case RIGHTARROWKEY:
+ if(event->val==KM_PRESS && (block->flag & UI_BLOCK_LOOP)) {
but= ui_but_find_activated(ar);
- if(but) {
- if(ELEM(event->type, DOWNARROWKEY, WHEELDOWNMOUSE)) {
- if(block->direction & UI_TOP) but= ui_but_prev(but);
- else but= ui_but_next(but);
- }
- else {
- if(block->direction & UI_TOP) but= ui_but_next(but);
- else but= ui_but_prev(but);
- }
- if(but)
- ui_handle_button_activate(C, ar, but, BUTTON_ACTIVATE);
+ if(!but) {
+ /* no item active, we make first active */
+ if(block->direction & UI_TOP) but= ui_but_last(block);
+ else but= ui_but_first(block);
}
- if(!but) {
- if(ELEM(event->type, UPARROWKEY, WHEELUPMOUSE)) {
- if(block->direction & UI_TOP) bt= ui_but_first(block);
- else bt= ui_but_last(block);
- }
- else {
- if(block->direction & UI_TOP) bt= ui_but_last(block);
- else bt= ui_but_first(block);
+ if(but && ELEM(but->type, BLOCK, PULLDOWN))
+ ui_handle_button_activate(C, ar, but, BUTTON_ACTIVATE_OPEN);
+ }
+
+ retval= WM_UI_HANDLER_BREAK;
+ break;
+
+ case UPARROWKEY:
+ case DOWNARROWKEY:
+ case WHEELUPMOUSE:
+ case WHEELDOWNMOUSE:
+ /* arrowkeys: only handle for block_loop blocks */
+ if(inside || (block->flag & UI_BLOCK_LOOP)) {
+ if(event->val==KM_PRESS) {
+ but= ui_but_find_activated(ar);
+ if(but) {
+ if(ELEM(event->type, DOWNARROWKEY, WHEELDOWNMOUSE)) {
+ if(block->direction & UI_TOP) but= ui_but_prev(but);
+ else but= ui_but_next(but);
+ }
+ else {
+ if(block->direction & UI_TOP) but= ui_but_next(but);
+ else but= ui_but_prev(but);
+ }
+
+ if(but)
+ ui_handle_button_activate(C, ar, but, BUTTON_ACTIVATE);
}
- if(bt)
- ui_handle_button_activate(C, ar, bt, BUTTON_ACTIVATE);
+ if(!but) {
+ if(ELEM(event->type, UPARROWKEY, WHEELUPMOUSE)) {
+ if(block->direction & UI_TOP) bt= ui_but_first(block);
+ else bt= ui_but_last(block);
+ }
+ else {
+ if(block->direction & UI_TOP) bt= ui_but_last(block);
+ else bt= ui_but_first(block);
+ }
+
+ if(bt)
+ ui_handle_button_activate(C, ar, bt, BUTTON_ACTIVATE);
+ }
}
}
- }
- retval= WM_UI_HANDLER_BREAK;
- break;
+ retval= WM_UI_HANDLER_BREAK;
+ break;
- case ONEKEY: case PAD1:
- act= 1;
- case TWOKEY: case PAD2:
- if(act==0) act= 2;
- case THREEKEY: case PAD3:
- if(act==0) act= 3;
- case FOURKEY: case PAD4:
- if(act==0) act= 4;
- case FIVEKEY: case PAD5:
- if(act==0) act= 5;
- case SIXKEY: case PAD6:
- if(act==0) act= 6;
- case SEVENKEY: case PAD7:
- if(act==0) act= 7;
- case EIGHTKEY: case PAD8:
- if(act==0) act= 8;
- case NINEKEY: case PAD9:
- if(act==0) act= 9;
- case ZEROKEY: case PAD0:
- if(act==0) act= 10;
-
- if(block->flag & UI_BLOCK_NUMSELECT) {
- if(event->alt) act+= 10;
-
- count= 0;
- for(but= block->buttons.first; but; but= but->next) {
- int doit= 0;
+ case ONEKEY: case PAD1:
+ act= 1;
+ case TWOKEY: case PAD2:
+ if(act==0) act= 2;
+ case THREEKEY: case PAD3:
+ if(act==0) act= 3;
+ case FOURKEY: case PAD4:
+ if(act==0) act= 4;
+ case FIVEKEY: case PAD5:
+ if(act==0) act= 5;
+ case SIXKEY: case PAD6:
+ if(act==0) act= 6;
+ case SEVENKEY: case PAD7:
+ if(act==0) act= 7;
+ case EIGHTKEY: case PAD8:
+ if(act==0) act= 8;
+ case NINEKEY: case PAD9:
+ if(act==0) act= 9;
+ case ZEROKEY: case PAD0:
+ if(act==0) act= 10;
+
+ if(block->flag & UI_BLOCK_NUMSELECT) {
+ if(event->alt) act+= 10;
- if(but->type!=LABEL && but->type!=SEPR)
- count++;
+ count= 0;
+ for(but= block->buttons.first; but; but= but->next) {
+ int doit= 0;
+
+ if(but->type!=LABEL && but->type!=SEPR)
+ count++;
- /* exception for menus like layer buts, with button aligning they're not drawn in order */
- if(but->type==TOGR) {
- if(but->bitnr==act-1)
- doit= 1;
- }
- else if(count==act)
- doit=1;
-
- if(doit) {
- ui_handle_button_activate(C, ar, but, BUTTON_ACTIVATE_APPLY);
- break;
+ /* exception for menus like layer buts, with button aligning they're not drawn in order */
+ if(but->type==TOGR) {
+ if(but->bitnr==act-1)
+ doit= 1;
+ }
+ else if(count==act)
+ doit=1;
+
+ if(doit) {
+ ui_handle_button_activate(C, ar, but, BUTTON_ACTIVATE_APPLY);
+ break;
+ }
}
}
- }
- retval= WM_UI_HANDLER_BREAK;
- break;
+ retval= WM_UI_HANDLER_BREAK;
+ break;
+ }
}
-
+
/* here we check return conditions for menus */
if(block->flag & UI_BLOCK_LOOP) {
/* if we click outside the block, verify if we clicked on the
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index 1b23967a32d..df069069a33 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -65,10 +65,10 @@
#include "ED_datafiles.h"
#define ICON_IMAGE_W 600
-#define ICON_IMAGE_H 512
+#define ICON_IMAGE_H 640
#define ICON_GRID_COLS 26
-#define ICON_GRID_ROWS 24
+#define ICON_GRID_ROWS 30
#define ICON_GRID_MARGIN 5
#define ICON_GRID_W 16
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 13c9d09aff1..18423434eef 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -43,6 +43,7 @@ struct wmWindow;
struct uiStyle;
struct uiWidgetColors;
struct uiLayout;
+struct bContextStore;
/* ****************** general defines ************** */
@@ -76,7 +77,8 @@ typedef enum {
UI_WTYPE_ICON,
UI_WTYPE_SWATCH,
UI_WTYPE_RGB_PICKER,
- UI_WTYPE_NORMAL
+ UI_WTYPE_NORMAL,
+ UI_WTYPE_BOX
} uiWidgetTypeEnum;
@@ -162,16 +164,22 @@ struct uiBut {
uiButHandleFunc func;
void *func_arg1;
void *func_arg2;
+ void *func_arg3;
uiButHandleNFunc funcN;
void *func_argN;
+ struct bContextStore *context;
+
void (*embossfunc)(int , int , float, float, float, float, float, int);
void (*sliderfunc)(int , float, float, float, float, float, float, int);
uiButCompleteFunc autocomplete_func;
void *autofunc_arg;
+ uiButSearchFunc search_func;
+ void *search_arg;
+
uiLink *link;
char *tip, *lockstr;
@@ -188,7 +196,7 @@ struct uiBut {
/* BLOCK data */
uiBlockCreateFunc block_create_func;
- /* HMENU data */
+ /* PULLDOWN/MENU data */
uiMenuCreateFunc menu_create_func;
/* RNA data */
@@ -224,6 +232,8 @@ struct uiBlock {
ListBase layouts;
struct uiLayout *curlayout;
+
+ ListBase contexts;
char name[UI_MAX_NAME_STR];
@@ -245,7 +255,7 @@ struct uiBlock {
void *handle_func_arg;
/* extra draw function for custom blocks */
- void (*drawextra)();
+ void (*drawextra)(const struct bContext *C, void *idv, rcti *rect);
int afterval, flag;
@@ -345,6 +355,13 @@ uiBlock *ui_block_func_COL(struct bContext *C, uiPopupBlockHandle *handle, void
struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
+/* searchbox for string button */
+ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
+void ui_searchbox_update(struct bContext *C, struct ARegion *ar, uiBut *but, int reset);
+void ui_searchbox_event(struct bContext *C, struct ARegion *ar, uiBut *but, struct wmEvent *event);
+void ui_searchbox_apply(uiBut *but, struct ARegion *ar);
+void ui_searchbox_free(struct bContext *C, struct ARegion *ar);
+
typedef uiBlock* (*uiBlockHandleCreateFunc)(struct bContext *C, struct uiPopupBlockHandle *handle, void *arg1);
uiPopupBlockHandle *ui_popup_block_create(struct bContext *C, struct ARegion *butregion, uiBut *but,
@@ -354,6 +371,7 @@ uiPopupBlockHandle *ui_popup_menu_create(struct bContext *C, struct ARegion *but
void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle);
void ui_set_name_menu(uiBut *but, int value);
+int ui_step_name_menu(uiBut *but, int step);
struct AutoComplete;
struct AutoComplete *autocomplete_begin(char *startname, int maxlen);
@@ -383,11 +401,15 @@ extern int ui_button_is_active(struct ARegion *ar);
/* interface_widgets.c */
void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3);
void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
-extern void ui_draw_but(ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
+void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
+
+extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
/* theme color init */
struct ThemeUI;
void ui_widget_color_init(struct ThemeUI *tui);
+void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, char *name, int state);
+
/* interface_style.c */
void uiStyleInit(void);
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 56183bfb314..723e48e5970 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -51,8 +51,6 @@
#include "UI_resources.h"
#include "UI_view2d.h"
-#include "BIF_gl.h"
-
#include "ED_util.h"
#include "ED_types.h"
#include "ED_screen.h"
@@ -115,6 +113,7 @@ typedef enum uiItemType {
typedef struct uiItem {
void *next, *prev;
uiItemType type;
+ int flag;
} uiItem;
typedef struct uiButtonItem {
@@ -126,11 +125,18 @@ struct uiLayout {
uiItem item;
uiLayoutRoot *root;
+ bContextStore *context;
ListBase items;
int x, y, w, h;
- int space;
- int align;
+ float scale[2];
+ short space;
+ char align;
+ char active;
+ char enabled;
+ char redalert;
+ char keepaspect;
+ char alignment;
};
typedef struct uiLayoutItemFlow {
@@ -139,16 +145,16 @@ typedef struct uiLayoutItemFlow {
int totcol;
} uiLayoutItemFlow;
-typedef struct uiLayoutItemSplt {
- uiLayout litem;
- int number;
- int lr;
-} uiLayoutItemSplt;
-
typedef struct uiLayoutItemBx {
uiLayout litem;
+ uiBut *roundbox;
} uiLayoutItemBx;
+typedef struct uiLayoutItemSplt {
+ uiLayout litem;
+ float percentage;
+} uiLayoutItemSplt;
+
typedef struct uiLayoutItemRoot {
uiLayout litem;
} uiLayoutItemRoot;
@@ -169,26 +175,29 @@ static char *ui_item_name_add_colon(char *name, char namestr[UI_MAX_NAME_STR])
return name;
}
-#define UI_FIT_EXPAND 1
-
-static int ui_item_fit(int item, int pos, int all, int available, int spacing, int last, int flag)
+static int ui_item_fit(int item, int pos, int all, int available, int last, int alignment, int *offset)
{
/* available == 0 is unlimited */
-
- if(available != 0 && all > available-spacing) {
+ if(available == 0)
+ return item;
+
+ if(offset)
+ *offset= 0;
+
+ if(all > available) {
/* contents is bigger than available space */
if(last)
return available-pos;
else
- return (item*(available-spacing))/all;
+ return (item*available)/all;
}
else {
/* contents is smaller or equal to available space */
- if(available != 0 && (flag & UI_FIT_EXPAND)) {
+ if(alignment == UI_LAYOUT_ALIGN_EXPAND) {
if(last)
return available-pos;
else
- return (item*(available-spacing))/all;
+ return (item*available)/all;
}
else
return item;
@@ -201,7 +210,7 @@ static int ui_item_fit(int item, int pos, int all, int available, int spacing, i
static int ui_layout_vary_direction(uiLayout *layout)
{
- return (layout->root->type == UI_LAYOUT_HEADER)? UI_ITEM_VARY_X: UI_ITEM_VARY_Y;
+ return (layout->root->type == UI_LAYOUT_HEADER || layout->alignment != UI_LAYOUT_ALIGN_EXPAND)? UI_ITEM_VARY_X: UI_ITEM_VARY_Y;
}
/* estimated size of text + icon */
@@ -212,9 +221,9 @@ static int ui_text_icon_width(uiLayout *layout, char *name, int icon)
if(icon && strcmp(name, "") == 0)
return UI_UNIT_X; /* icon only */
else if(icon)
- return (variable)? UI_GetStringWidth(name) + UI_UNIT_X: 10*UI_UNIT_X; /* icon + text */
+ return (variable)? UI_GetStringWidth(name) + 4 + UI_UNIT_X: 10*UI_UNIT_X; /* icon + text */
else
- return (variable)? UI_GetStringWidth(name) + UI_UNIT_X: 10*UI_UNIT_X; /* text only */
+ return (variable)? UI_GetStringWidth(name) + 4 + UI_UNIT_X: 10*UI_UNIT_X; /* text only */
}
static void ui_item_size(uiItem *item, int *r_w, int *r_h)
@@ -586,6 +595,41 @@ void uiItemsEnumO(uiLayout *layout, char *opname, char *propname)
}
}
+/* for use in cases where we have */
+void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value_str)
+{
+ PointerRNA ptr;
+
+ /* for getting the enum */
+ PropertyRNA *prop;
+ const EnumPropertyItem *item;
+ int totitem;
+ int value;
+
+ WM_operator_properties_create(&ptr, opname);
+
+ /* enum lookup */
+ if((prop= RNA_struct_find_property(&ptr, propname))) {
+ RNA_property_enum_items(&ptr, prop, &item, &totitem);
+ if(RNA_enum_value_from_id(item, value_str, &value)==0) {
+ printf("uiItemEnumO_string: %s.%s, enum %s not found.\n", RNA_struct_identifier(ptr.type), propname, value_str);
+ return;
+ }
+ }
+ else {
+ printf("uiItemEnumO_string: %s.%s not found.\n", RNA_struct_identifier(ptr.type), propname);
+ return;
+ }
+
+ RNA_property_enum_set(&ptr, prop, value);
+
+ /* same as uiItemEnumO */
+ if(!name)
+ name= ui_menu_enumpropname(opname, propname, value);
+
+ uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext);
+}
+
void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value)
{
PointerRNA ptr;
@@ -647,9 +691,6 @@ static void ui_item_rna_size(uiLayout *layout, char *name, int icon, PropertyRNA
subtype= RNA_property_subtype(prop);
len= RNA_property_array_length(prop);
- if(type == PROP_STRING)
- w += 10*UI_UNIT_X;
-
/* increase height for arrays */
if(index == RNA_NO_INDEX && len > 0) {
if(strcmp(name, "") == 0 && icon == 0)
@@ -671,7 +712,7 @@ static void ui_item_rna_size(uiLayout *layout, char *name, int icon, PropertyRNA
*r_h= h;
}
-void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int value, int expand, int slider)
+void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int value, int expand, int slider, int toggle)
{
uiBlock *block= layout->root->block;
uiBut *but;
@@ -733,10 +774,13 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper
if(slider && but->type==NUM)
but->type= NUMSLI;
+
+ if(toggle && but->type==OPTION)
+ but->type= TOG;
}
}
-void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider)
+void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle)
{
PropertyRNA *prop;
@@ -751,7 +795,7 @@ void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *prop
return;
}
- uiItemFullR(layout, name, icon, ptr, prop, RNA_NO_INDEX, 0, expand, slider);
+ uiItemFullR(layout, name, icon, ptr, prop, RNA_NO_INDEX, 0, expand, slider, toggle);
}
void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value)
@@ -769,7 +813,7 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr,
return;
}
- uiItemFullR(layout, name, icon, ptr, prop, RNA_ENUM_VALUE, value, 0, 0);
+ uiItemFullR(layout, name, icon, ptr, prop, RNA_ENUM_VALUE, value, 0, 0, 0);
}
void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname)
@@ -839,6 +883,8 @@ static void ui_item_menu(uiLayout *layout, char *name, int icon, uiMenuCreateFun
if(layout->root->type == UI_LAYOUT_HEADER)
uiBlockSetEmboss(block, UI_EMBOSS);
+ else if(layout->root->type == UI_LAYOUT_PANEL)
+ but->type= MENU;
}
void uiItemM(uiLayout *layout, bContext *C, char *name, int icon, char *menuname)
@@ -939,7 +985,7 @@ static void menu_item_enum_opname_menu(bContext *C, uiLayout *layout, void *arg)
{
MenuItemLevel *lvl= (MenuItemLevel*)(((uiBut*)arg)->func_argN);
- uiLayoutContext(layout, WM_OP_EXEC_REGION_WIN);
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN);
uiItemsEnumO(layout, lvl->opname, lvl->propname);
}
@@ -970,7 +1016,7 @@ static void menu_item_enum_rna_menu(bContext *C, uiLayout *layout, void *arg)
{
MenuItemLevel *lvl= (MenuItemLevel*)(((uiBut*)arg)->func_argN);
- uiLayoutContext(layout, lvl->opcontext);
+ uiLayoutSetOperatorContext(layout, lvl->opcontext);
uiItemsEnumR(layout, &lvl->rnapoin, lvl->propname);
}
@@ -1020,14 +1066,22 @@ static void ui_litem_estimate_row(uiLayout *litem)
}
}
+static int ui_litem_min_width(int itemw)
+{
+ return MIN2(UI_UNIT_X, itemw);
+}
+
static void ui_litem_layout_row(uiLayout *litem)
{
uiItem *item;
- int neww, itemw, itemh, x, y, w, tot= 0, totw= 0, extra=0, available=0;
+ int x, y, w, tot, totw, neww, itemw, minw, itemh, offset;
+ int fixedw, freew, fixedx, freex, flag= 0, lastw= 0;
x= litem->x;
y= litem->y;
w= litem->w;
+ totw= 0;
+ tot= 0;
for(item=litem->items.first; item; item=item->next) {
ui_item_size(item, &itemw, &itemh);
@@ -1038,40 +1092,81 @@ static void ui_litem_layout_row(uiLayout *litem)
if(totw == 0)
return;
- /* two step to enforce minimum button with .. could be better */
- for(item=litem->items.first; item; item=item->next) {
- ui_item_size(item, &itemw, &itemh);
+ if(w != 0)
+ w -= (tot-1)*litem->space;
+ fixedw= 0;
- itemw= ui_item_fit(itemw, x-litem->x, totw, w, (tot-1)*litem->space, !item->next, UI_FIT_EXPAND);
- x += itemw;
+ /* keep clamping items to fixed minimum size until all are done */
+ do {
+ freew= 0;
+ x= 0;
+ flag= 0;
- if(itemw < UI_UNIT_X)
- extra += UI_UNIT_X - itemw;
- else
- available += itemw - UI_UNIT_X;
+ for(item=litem->items.first; item; item=item->next) {
+ if(item->flag)
+ continue;
- if(item->next)
- x += litem->space;
- }
+ ui_item_size(item, &itemw, &itemh);
+ minw= ui_litem_min_width(itemw);
+
+ if(w - lastw > 0)
+ neww= ui_item_fit(itemw, x, totw, w-lastw, !item->next, litem->alignment, NULL);
+ else
+ neww= 0; /* no space left, all will need clamping to minimum size */
+
+ x += neww;
+
+ if((neww < minw || itemw == minw) && w != 0) {
+ /* fixed size */
+ item->flag= 1;
+ fixedw += minw;
+ flag= 1;
+ totw -= itemw;
+ }
+ else {
+ /* keep free size */
+ item->flag= 0;
+ freew += itemw;
+ }
+ }
+
+ lastw= fixedw;
+ } while(flag);
+ freex= 0;
+ fixedx= 0;
x= litem->x;
for(item=litem->items.first; item; item=item->next) {
ui_item_size(item, &itemw, &itemh);
+ minw= ui_litem_min_width(itemw);
- neww= ui_item_fit(itemw, x-litem->x, totw, w, (tot-1)*litem->space, !item->next, UI_FIT_EXPAND);
- if(neww < UI_UNIT_X) {
- if(item->next)
- itemw= UI_UNIT_X;
- else
- itemw= litem->w - (x-litem->x);
+ if(item->flag) {
+ /* fixed minimum size items */
+ itemw= ui_item_fit(minw, fixedx, fixedw, MIN2(w, fixedw), !item->next, litem->alignment, NULL);
+ fixedx += itemw;
+ }
+ else {
+ /* free size item */
+ itemw= ui_item_fit(itemw, freex, freew, w-fixedw, !item->next, litem->alignment, NULL);
+ freex += itemw;
}
- else
- itemw= ui_item_fit(itemw, x-litem->x, totw, w-extra, (tot-1)*litem->space, !item->next, UI_FIT_EXPAND);
- ui_item_position(item, x, y-itemh, itemw, itemh);
- x += itemw;
+ /* align right/center */
+ offset= 0;
+ if(litem->alignment == UI_LAYOUT_ALIGN_RIGHT) {
+ if(fixedw == 0 && freew < w-fixedw)
+ offset= (w - fixedw) - freew;
+ }
+ else if(litem->alignment == UI_LAYOUT_ALIGN_CENTER) {
+ if(fixedw == 0 && freew < w-fixedw)
+ offset= ((w - fixedw) - freew)/2;
+ }
+
+ /* position item */
+ ui_item_position(item, x+offset, y-itemh, itemw, itemh);
+ x += itemw;
if(item->next)
x += litem->space;
}
@@ -1146,12 +1241,14 @@ static void ui_litem_estimate_box(uiLayout *litem)
ui_litem_estimate_column(litem);
litem->w += 2*style->boxspace;
- litem->h += 2*style->boxspace;
+ litem->h += style->boxspace;
}
static void ui_litem_layout_box(uiLayout *litem)
{
+ uiLayoutItemBx *box= (uiLayoutItemBx*)litem;
uiStyle *style= litem->root->style;
+ uiBut *but;
int w, h;
w= litem->w;
@@ -1169,10 +1266,14 @@ static void ui_litem_layout_box(uiLayout *litem)
litem->y -= style->boxspace;
if(w != 0) litem->w += 2*style->boxspace;
- if(h != 0) litem->h += 2*style->boxspace;
+ if(h != 0) litem->h += style->boxspace;
/* roundbox around the sublayout */
- uiDefBut(litem->root->block, ROUNDBOX, 0, "", litem->x, litem->y, litem->w, litem->h, NULL, 7.0, 0.0, 3, 20, "");
+ but= box->roundbox;
+ but->x1= litem->x;
+ but->y1= litem->y;
+ but->x2= litem->x+litem->w;
+ but->y2= litem->y+litem->h;
}
/* multi-column layout, automatically flowing to the next */
@@ -1244,7 +1345,7 @@ static void ui_litem_layout_column_flow(uiLayout *litem)
uiLayoutItemFlow *flow= (uiLayoutItemFlow*)litem;
uiItem *item;
int col, x, y, w, emh, emy, miny, itemw, itemh;
- int toth, totitem;
+ int toth, totitem, offset;
/* compute max needed width and total height */
toth= 0;
@@ -1261,18 +1362,18 @@ static void ui_litem_layout_column_flow(uiLayout *litem)
emy= 0;
miny= 0;
- w= litem->w;
+ w= litem->w - (flow->totcol-1)*style->columnspace;
emh= toth/flow->totcol;
/* create column per column */
col= 0;
for(item=litem->items.first; item; item=item->next) {
ui_item_size(item, NULL, &itemh);
- itemw= ui_item_fit(1, x-litem->x, flow->totcol, w, (flow->totcol-1)*style->columnspace, col == flow->totcol-1, UI_FIT_EXPAND);
+ itemw= ui_item_fit(1, x-litem->x, flow->totcol, w, col == flow->totcol-1, litem->alignment, &offset);
y -= itemh;
emy -= itemh;
- ui_item_position(item, x, y, itemw, itemh);
+ ui_item_position(item, x+offset, y, itemw, itemh);
y -= style->buttonspacey;
miny= MIN2(miny, y);
@@ -1381,12 +1482,12 @@ static void ui_litem_estimate_split(uiLayout *litem)
static void ui_litem_layout_split(uiLayout *litem)
{
+ uiLayoutItemSplt *split= (uiLayoutItemSplt*)litem;
uiItem *item;
int itemh, x, y, w, tot=0, colw=0;
x= litem->x;
y= litem->y;
- w= litem->w;
for(item=litem->items.first; item; item=item->next)
tot++;
@@ -1394,7 +1495,8 @@ static void ui_litem_layout_split(uiLayout *litem)
if(tot == 0)
return;
- colw= (litem->w - (tot-1)*litem->space)/tot;
+ w= (litem->w - (tot-1)*litem->space);
+ colw= w*split->percentage;
colw= MAX2(colw, 0);
for(item=litem->items.first; item; item=item->next) {
@@ -1403,8 +1505,12 @@ static void ui_litem_layout_split(uiLayout *litem)
ui_item_position(item, x, y-itemh, colw, itemh);
x += colw;
- if(item->next)
+ if(item->next) {
+ colw= (w - (w*split->percentage))/(tot-1);
+ colw= MAX2(colw, 0);
+
x += litem->space;
+ }
}
litem->w= x - litem->x;
@@ -1422,6 +1528,9 @@ uiLayout *uiLayoutRow(uiLayout *layout, int align)
litem->item.type= ITEM_LAYOUT_ROW;
litem->root= layout->root;
litem->align= align;
+ litem->active= 1;
+ litem->enabled= 1;
+ litem->context= layout->context;
litem->space= (align)? 0: layout->root->style->buttonspacex;
BLI_addtail(&layout->items, litem);
@@ -1438,6 +1547,9 @@ uiLayout *uiLayoutColumn(uiLayout *layout, int align)
litem->item.type= ITEM_LAYOUT_COLUMN;
litem->root= layout->root;
litem->align= align;
+ litem->active= 1;
+ litem->enabled= 1;
+ litem->context= layout->context;
litem->space= (litem->align)? 0: layout->root->style->buttonspacey;
BLI_addtail(&layout->items, litem);
@@ -1454,6 +1566,9 @@ uiLayout *uiLayoutColumnFlow(uiLayout *layout, int number, int align)
flow->litem.item.type= ITEM_LAYOUT_COLUMN_FLOW;
flow->litem.root= layout->root;
flow->litem.align= align;
+ flow->litem.active= 1;
+ flow->litem.enabled= 1;
+ flow->litem.context= layout->context;
flow->litem.space= (flow->litem.align)? 0: layout->root->style->columnspace;
flow->number= number;
BLI_addtail(&layout->items, flow);
@@ -1470,11 +1585,16 @@ uiLayout *uiLayoutBox(uiLayout *layout)
box= MEM_callocN(sizeof(uiLayoutItemBx), "uiLayoutItemBx");
box->litem.item.type= ITEM_LAYOUT_BOX;
box->litem.root= layout->root;
+ box->litem.active= 1;
+ box->litem.enabled= 1;
+ box->litem.context= layout->context;
box->litem.space= layout->root->style->columnspace;
BLI_addtail(&layout->items, box);
uiBlockSetCurLayout(layout->root->block, &box->litem);
+ box->roundbox= uiDefBut(layout->root->block, ROUNDBOX, 0, "", 0, 0, 0, 0, NULL, 0.0, 0.0, 0, 0, "");
+
return &box->litem;
}
@@ -1486,6 +1606,9 @@ uiLayout *uiLayoutFree(uiLayout *layout, int align)
litem->item.type= ITEM_LAYOUT_FREE;
litem->root= layout->root;
litem->align= align;
+ litem->active= 1;
+ litem->enabled= 1;
+ litem->context= layout->context;
BLI_addtail(&layout->items, litem);
uiBlockSetCurLayout(layout->root->block, litem);
@@ -1497,28 +1620,126 @@ uiBlock *uiLayoutFreeBlock(uiLayout *layout)
{
uiBlock *block;
- block= uiLayoutBlock(layout);
+ block= uiLayoutGetBlock(layout);
uiLayoutFree(layout, 0);
return block;
}
-uiLayout *uiLayoutSplit(uiLayout *layout)
+uiLayout *uiLayoutSplit(uiLayout *layout, float percentage)
{
- uiLayout *litem;
+ uiLayoutItemSplt *split;
- litem= uiLayoutRow(layout, 0);
- litem->item.type = ITEM_LAYOUT_SPLIT;
- litem->root= layout->root;
- litem->space= layout->root->style->columnspace;
+ split= MEM_callocN(sizeof(uiLayoutItemSplt), "uiLayoutItemSplt");
+ split->litem.item.type= ITEM_LAYOUT_SPLIT;
+ split->litem.root= layout->root;
+ split->litem.active= 1;
+ split->litem.enabled= 1;
+ split->litem.context= layout->context;
+ split->litem.space= layout->root->style->columnspace;
+ split->percentage= (percentage == 0.0f)? 0.5f: percentage;
+ BLI_addtail(&layout->items, split);
- uiBlockSetCurLayout(layout->root->block, litem);
+ uiBlockSetCurLayout(layout->root->block, &split->litem);
- return litem;
+ return &split->litem;
+}
+
+void uiLayoutSetActive(uiLayout *layout, int active)
+{
+ layout->active= active;
+}
+
+void uiLayoutSetEnabled(uiLayout *layout, int enabled)
+{
+ layout->enabled= enabled;
+}
+
+void uiLayoutSetRedAlert(uiLayout *layout, int redalert)
+{
+ layout->redalert= redalert;
+}
+
+void uiLayoutSetKeepAspect(uiLayout *layout, int keepaspect)
+{
+ layout->keepaspect= keepaspect;
+}
+
+void uiLayoutSetAlignment(uiLayout *layout, int alignment)
+{
+ layout->alignment= alignment;
+}
+
+void uiLayoutSetScaleX(uiLayout *layout, float scale)
+{
+ layout->scale[0]= scale;
+}
+
+void uiLayoutSetScaleY(uiLayout *layout, float scale)
+{
+ layout->scale[1]= scale;
+}
+
+int uiLayoutGetActive(uiLayout *layout)
+{
+ return layout->active;
+}
+
+int uiLayoutGetEnabled(uiLayout *layout)
+{
+ return layout->enabled;
+}
+
+int uiLayoutGetRedAlert(uiLayout *layout)
+{
+ return layout->redalert;
+}
+
+int uiLayoutGetKeepAspect(uiLayout *layout)
+{
+ return layout->keepaspect;
+}
+
+int uiLayoutGetAlignment(uiLayout *layout)
+{
+ return layout->alignment;
+}
+
+float uiLayoutGetScaleX(uiLayout *layout)
+{
+ return layout->scale[0];
+}
+
+float uiLayoutGetScaleY(uiLayout *layout)
+{
+ return layout->scale[0];
}
/********************** Layout *******************/
+static void ui_item_scale(uiLayout *litem, float scale[2])
+{
+ uiItem *item;
+ int x, y, w, h;
+
+ for(item=litem->items.last; item; item=item->prev) {
+ ui_item_size(item, &w, &h);
+ ui_item_offset(item, &x, &y);
+
+ if(scale[0] != 0.0f) {
+ x *= scale[0];
+ w *= scale[0];
+ }
+
+ if(scale[1] != 0.0f) {
+ y *= scale[1];
+ h *= scale[1];
+ }
+
+ ui_item_position(item, x, y, w, h);
+ }
+}
+
static void ui_item_estimate(uiItem *item)
{
uiItem *subitem;
@@ -1532,6 +1753,9 @@ static void ui_item_estimate(uiItem *item)
if(litem->items.first == NULL)
return;
+ if(litem->scale[0] != 0.0f || litem->scale[1] != 0.0f)
+ ui_item_scale(litem, litem->scale);
+
switch(litem->item.type) {
case ITEM_LAYOUT_COLUMN:
ui_litem_estimate_column(litem);
@@ -1564,19 +1788,43 @@ static void ui_item_align(uiLayout *litem, int nr)
{
uiItem *item;
uiButtonItem *bitem;
+ uiLayoutItemBx *box;
- for(item=litem->items.first; item; item=item->next) {
+ for(item=litem->items.last; item; item=item->prev) {
if(item->type == ITEM_BUTTON) {
bitem= (uiButtonItem*)item;
if(ui_but_can_align(bitem->but))
- bitem->but->alignnr= nr;
+ if(!bitem->but->alignnr)
+ bitem->but->alignnr= nr;
+ }
+ else if(item->type == ITEM_LAYOUT_FREE);
+ else if(item->type == ITEM_LAYOUT_BOX) {
+ box= (uiLayoutItemBx*)item;
+ box->roundbox->alignnr= nr;
+ BLI_remlink(&litem->root->block->buttons, box->roundbox);
+ BLI_addhead(&litem->root->block->buttons, box->roundbox);
}
else
ui_item_align((uiLayout*)item, nr);
}
}
-static void ui_item_layout(uiItem *item, int align)
+static void ui_item_flag(uiLayout *litem, int flag)
+{
+ uiItem *item;
+ uiButtonItem *bitem;
+
+ for(item=litem->items.last; item; item=item->prev) {
+ if(item->type == ITEM_BUTTON) {
+ bitem= (uiButtonItem*)item;
+ bitem->but->flag |= flag;
+ }
+ else
+ ui_item_flag((uiLayout*)item, flag);
+ }
+}
+
+static void ui_item_layout(uiItem *item)
{
uiItem *subitem;
@@ -1586,8 +1834,12 @@ static void ui_item_layout(uiItem *item, int align)
if(litem->items.first == NULL)
return;
- if(litem->align && !align)
+ if(litem->align)
ui_item_align(litem, ++litem->root->block->alignnr);
+ if(!litem->active)
+ ui_item_flag(litem, UI_BUT_INACTIVE);
+ if(!litem->enabled)
+ ui_item_flag(litem, UI_BUT_DISABLED);
switch(litem->item.type) {
case ITEM_LAYOUT_COLUMN:
@@ -1616,14 +1868,14 @@ static void ui_item_layout(uiItem *item, int align)
}
for(subitem=litem->items.first; subitem; subitem=subitem->next)
- ui_item_layout(subitem, litem->align || align);
+ ui_item_layout(subitem);
}
}
static void ui_layout_items(const bContext *C, uiBlock *block, uiLayout *layout)
{
ui_item_estimate(&layout->item);
- ui_item_layout(&layout->item, 0);
+ ui_item_layout(&layout->item);
}
static void ui_layout_end(const bContext *C, uiBlock *block, uiLayout *layout, int *x, int *y)
@@ -1671,6 +1923,9 @@ uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int siz
layout->y= y;
layout->root= root;
layout->space= style->templatespace;
+ layout->active= 1;
+ layout->enabled= 1;
+ layout->context= NULL;
if(type == UI_LAYOUT_MENU)
layout->space= 0;
@@ -1691,11 +1946,17 @@ uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int siz
return layout;
}
-uiBlock *uiLayoutBlock(uiLayout *layout)
+uiBlock *uiLayoutGetBlock(uiLayout *layout)
{
return layout->root->block;
}
+int uiLayoutGetOperatorContext(uiLayout *layout)
+{
+ return layout->root->opcontext;
+}
+
+
void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout)
{
block->curlayout= layout;
@@ -1709,14 +1970,19 @@ void ui_layout_add_but(uiLayout *layout, uiBut *but)
bitem->item.type= ITEM_BUTTON;
bitem->but= but;
BLI_addtail(&layout->items, bitem);
+
+ if(layout->context) {
+ but->context= layout->context;
+ but->context->used= 1;
+ }
}
-void uiLayoutContext(uiLayout *layout, int opcontext)
+void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext)
{
layout->root->opcontext= opcontext;
}
-void uiLayoutFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv)
+void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv)
{
layout->root->handlefunc= handlefunc;
layout->root->argv= argv;
@@ -1747,8 +2013,9 @@ void uiBlockLayoutResolve(const bContext *C, uiBlock *block, int *x, int *y)
}
}
-float uiBlockAspect(uiBlock *block)
+void uiLayoutSetContextPointer(uiLayout *layout, char *name, PointerRNA *ptr)
{
- return block->aspect; /* temporary */
+ uiBlock *block= layout->root->block;
+ layout->context= CTX_store_add(&block->contexts, name, ptr);
}
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 539f18c2cd8..278f7c026b1 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -119,7 +119,7 @@ static int panels_re_align(ScrArea *sa, ARegion *ar, Panel **r_pa)
SpaceButs *sbuts= sa->spacedata.first;
if(sbuts->align)
- if(sbuts->re_align || sbuts->mainbo!=sbuts->mainb || sbuts->tabo!=sbuts->tab[sbuts->mainb])
+ if(sbuts->re_align || sbuts->mainbo!=sbuts->mainb)
return 1;
}
else if(ar->regiontype==RGN_TYPE_UI)
@@ -580,7 +580,7 @@ void ui_draw_aligned_panel(ARegion *ar, uiStyle *style, uiBlock *block, rcti *re
else uiSetRoundBox(3);
UI_ThemeColorShade(TH_BACK, -120);
- uiRoundRect(rect->xmin, rect->ymin, rect->xmax, headrect.ymax+1, 8);
+ uiRoundRect(0.5f + rect->xmin, 0.5f + rect->ymin, 0.5f + rect->xmax, 0.5f + headrect.ymax+1, 8);
}
if(panel->flag & PNL_OVERLAP) {
if(panel->control & UI_PNL_SOLID) uiSetRoundBox(15);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 847c0a02ee4..f4b606dac72 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -56,6 +56,7 @@
#include "BIF_gl.h"
#include "UI_interface.h"
+#include "UI_interface_icons.h"
#include "UI_view2d.h"
#include "BLF_api.h"
@@ -224,6 +225,44 @@ void ui_set_name_menu(uiBut *but, int value)
menudata_free(md);
}
+int ui_step_name_menu(uiBut *but, int step)
+{
+ MenuData *md;
+ int value= ui_get_but_val(but);
+ int i;
+
+ md= decompose_menu_string(but->str);
+ for (i=0; i<md->nitems; i++)
+ if (md->items[i].retval==value)
+ break;
+
+ if(step==1) {
+ /* skip separators */
+ for(; i<md->nitems-1; i++) {
+ if(md->items[i+1].retval != -1) {
+ value= md->items[i+1].retval;
+ break;
+ }
+ }
+ }
+ else {
+ if(i>0) {
+ /* skip separators */
+ for(; i>0; i--) {
+ if(md->items[i-1].retval != -1) {
+ value= md->items[i-1].retval;
+ break;
+ }
+ }
+ }
+ }
+
+ menudata_free(md);
+
+ return value;
+}
+
+
/******************** Creating Temporary regions ******************/
ARegion *ui_add_temporary_region(bScreen *sc)
@@ -353,8 +392,8 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
}
}
if(y1 < 0) {
- y1 += 36;
- y2 += 36;
+ y1 += 56*aspect;
+ y2 += 56*aspect;
}
/* widget rect, in region coords */
@@ -383,6 +422,373 @@ void ui_tooltip_free(bContext *C, ARegion *ar)
ui_remove_temporary_region(C, CTX_wm_screen(C), ar);
}
+
+/************************* Creating Search Box **********************/
+
+struct uiSearchItems {
+ int maxitem, totitem, maxstrlen;
+
+ int offset, offset_i; /* offset for inserting in array */
+ int more; /* flag indicating there are more items */
+
+ char **names;
+ void **pointers;
+
+};
+
+typedef struct uiSearchboxData {
+ rcti bbox;
+ uiFontStyle fstyle;
+ uiSearchItems items;
+ int active; /* index in items array */
+ int noback; /* when menu opened with enough space for this */
+} uiSearchboxData;
+
+#define SEARCH_ITEMS 10
+
+/* exported for use by search callbacks */
+/* returns zero if nothing to add */
+int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin)
+{
+
+ if(items->totitem>=items->maxitem) {
+ items->more= 1;
+ return 0;
+ }
+
+ /* skip first items in list */
+ if(items->offset_i > 0) {
+ items->offset_i--;
+ return 1;
+ }
+
+ BLI_strncpy(items->names[items->totitem], name, items->maxstrlen);
+ items->pointers[items->totitem]= poin;
+
+ items->totitem++;
+
+ return 1;
+}
+
+int uiSearchBoxhHeight(void)
+{
+ return SEARCH_ITEMS*MENU_BUTTON_HEIGHT + 2*MENU_TOP;
+}
+
+/* ar is the search box itself */
+static void ui_searchbox_select(bContext *C, ARegion *ar, uiBut *but, int step)
+{
+ uiSearchboxData *data= ar->regiondata;
+
+ /* apply step */
+ data->active+= step;
+
+ if(data->items.totitem==0)
+ data->active= 0;
+ else if(data->active > data->items.totitem) {
+ if(data->items.more) {
+ data->items.offset++;
+ data->active= data->items.totitem;
+ ui_searchbox_update(C, ar, but, 0);
+ }
+ else
+ data->active= data->items.totitem;
+ }
+ else if(data->active < 1) {
+ if(data->items.offset) {
+ data->items.offset--;
+ data->active= 1;
+ ui_searchbox_update(C, ar, but, 0);
+ }
+ else if(data->active < 0)
+ data->active= 0;
+ }
+
+ ED_region_tag_redraw(ar);
+}
+
+static void ui_searchbox_butrect(rcti *rect, uiSearchboxData *data, int itemnr)
+{
+ int buth= (data->bbox.ymax-data->bbox.ymin - 2*MENU_TOP)/SEARCH_ITEMS;
+
+ *rect= data->bbox;
+ rect->xmin= data->bbox.xmin + 3.0f;
+ rect->xmax= data->bbox.xmax - 3.0f;
+
+ rect->ymax= data->bbox.ymax - MENU_TOP - itemnr*buth;
+ rect->ymin= rect->ymax - buth;
+
+}
+
+/* string validated to be of correct length (but->hardmax) */
+void ui_searchbox_apply(uiBut *but, ARegion *ar)
+{
+ uiSearchboxData *data= ar->regiondata;
+
+ but->func_arg2= NULL;
+
+ if(data->active) {
+ char *name= data->items.names[data->active-1];
+ char *cpoin= strchr(name, '|');
+
+ if(cpoin) cpoin[0]= 0;
+ BLI_strncpy(but->editstr, name, data->items.maxstrlen);
+ if(cpoin) cpoin[0]= '|';
+
+ but->func_arg2= data->items.pointers[data->active-1];
+ }
+}
+
+void ui_searchbox_event(bContext *C, ARegion *ar, uiBut *but, wmEvent *event)
+{
+ uiSearchboxData *data= ar->regiondata;
+
+ switch(event->type) {
+ case WHEELUPMOUSE:
+ case UPARROWKEY:
+ ui_searchbox_select(C, ar, but, -1);
+ break;
+ case WHEELDOWNMOUSE:
+ case DOWNARROWKEY:
+ ui_searchbox_select(C, ar, but, 1);
+ break;
+ case MOUSEMOVE:
+ if(BLI_in_rcti(&ar->winrct, event->x, event->y)) {
+ rcti rect;
+ int a;
+
+ for(a=0; a<data->items.totitem; a++) {
+ ui_searchbox_butrect(&rect, data, a);
+ if(BLI_in_rcti(&rect, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin)) {
+ if( data->active!= a+1) {
+ data->active= a+1;
+ ui_searchbox_select(C, ar, but, 0);
+ break;
+ }
+ }
+ }
+ }
+ break;
+ }
+}
+
+/* ar is the search box itself */
+void ui_searchbox_update(bContext *C, ARegion *ar, uiBut *but, int reset)
+{
+ uiSearchboxData *data= ar->regiondata;
+
+ /* reset vars */
+ data->items.totitem= 0;
+ data->items.more= 0;
+ if(reset==0)
+ data->items.offset_i= data->items.offset;
+ else {
+ data->items.offset_i= data->items.offset= 0;
+ data->active= 0;
+ }
+
+ /* callback */
+ if(but->search_func)
+ but->search_func(C, but->search_arg, but->editstr, &data->items);
+
+ if(reset) {
+ int a;
+ /* handle case where editstr is equal to one of items */
+ for(a=0; a<data->items.totitem; a++) {
+ char *cpoin= strchr(data->items.names[a], '|');
+
+ if(cpoin) cpoin[0]= 0;
+ if(0==strcmp(but->editstr, data->items.names[a]))
+ data->active= a+1;
+ if(cpoin) cpoin[0]= '|';
+ }
+ if(data->items.totitem==1)
+ data->active= 1;
+ }
+
+ /* validate selected item */
+ ui_searchbox_select(C, ar, but, 0);
+
+ ED_region_tag_redraw(ar);
+}
+
+static void ui_searchbox_region_draw(const bContext *C, ARegion *ar)
+{
+ uiSearchboxData *data= ar->regiondata;
+
+ /* pixel space */
+ wmOrtho2(-0.01f, ar->winx-0.01f, -0.01f, ar->winy-0.01f);
+
+ if(!data->noback)
+ ui_draw_search_back(U.uistyles.first, NULL, &data->bbox);
+
+ /* draw text */
+ if(data->items.totitem) {
+ rcti rect;
+ int a;
+
+ /* draw items */
+ for(a=0; a<data->items.totitem; a++) {
+ ui_searchbox_butrect(&rect, data, a);
+
+ ui_draw_menu_item(&data->fstyle, &rect, data->items.names[a], (a+1)==data->active?UI_ACTIVE:0);
+
+ }
+ /* indicate more */
+ if(data->items.more) {
+ glEnable(GL_BLEND);
+ UI_icon_draw((data->bbox.xmax-data->bbox.xmin)/2, 8, ICON_TRIA_DOWN);
+ glDisable(GL_BLEND);
+ }
+ if(data->items.offset) {
+ glEnable(GL_BLEND);
+ UI_icon_draw((data->bbox.xmax-data->bbox.xmin)/2, data->bbox.ymax-13, ICON_TRIA_UP);
+ glDisable(GL_BLEND);
+ }
+ }
+}
+
+static void ui_searchbox_region_free(ARegion *ar)
+{
+ uiSearchboxData *data= ar->regiondata;
+ int a;
+
+ /* free search data */
+ for(a=0; a<SEARCH_ITEMS; a++)
+ MEM_freeN(data->items.names[a]);
+ MEM_freeN(data->items.names);
+ MEM_freeN(data->items.pointers);
+
+ MEM_freeN(data);
+ ar->regiondata= NULL;
+}
+
+ARegion *ui_searchbox_create(bContext *C, ARegion *butregion, uiBut *but)
+{
+ uiStyle *style= U.uistyles.first; // XXX pass on as arg
+ static ARegionType type;
+ ARegion *ar;
+ uiSearchboxData *data;
+ float aspect= but->block->aspect;
+ float x1f, x2f, y1f, y2f;
+ int x1, x2, y1, y2, winx, winy;
+
+ /* create area region */
+ ar= ui_add_temporary_region(CTX_wm_screen(C));
+
+ memset(&type, 0, sizeof(ARegionType));
+ type.draw= ui_searchbox_region_draw;
+ type.free= ui_searchbox_region_free;
+ ar->type= &type;
+
+ /* create searchbox data */
+ data= MEM_callocN(sizeof(uiSearchboxData), "uiSearchboxData");
+
+ /* set font, get bb */
+ data->fstyle= style->widget; /* copy struct */
+ data->fstyle.align= UI_STYLE_TEXT_CENTER;
+ ui_fontscale(&data->fstyle.points, aspect);
+ uiStyleFontSet(&data->fstyle);
+
+ ar->regiondata= data;
+
+ /* special case, hardcoded feature, not draw backdrop when called from menus,
+ assume for design that popup already added it */
+ if(but->block->flag & UI_BLOCK_LOOP)
+ data->noback= 1;
+
+ /* compute position */
+
+ x1f= but->x1 - 5; /* align text with button */
+ x2f= but->x2 + 5; /* symmetrical */
+ if(but->block->flag & UI_BLOCK_LOOP) {
+ /* check if button is lower half */
+ if( but->y2 < (but->block->minx+but->block->maxx)/2 ) {
+ y1f= but->y2;
+ y2f= y1f + uiSearchBoxhHeight();
+ }
+ else {
+ y2f= but->y1;
+ y1f= y2f - uiSearchBoxhHeight();
+ }
+ }
+ else {
+ y2f= but->y1;
+ y1f= y2f - uiSearchBoxhHeight();
+ }
+
+ /* minimal width */
+ if(x2f - x1f < 150) x2f= x1f+150; // XXX arbitrary
+
+ /* copy to int, gets projected if possible too */
+ x1= x1f; y1= y1f; x2= x2f; y2= y2f;
+
+ if(butregion) {
+ if(butregion->v2d.cur.xmin != butregion->v2d.cur.xmax) {
+ UI_view2d_to_region_no_clip(&butregion->v2d, x1f, y1f, &x1, &y1);
+ UI_view2d_to_region_no_clip(&butregion->v2d, x2f, y2f, &x2, &y2);
+ }
+
+ x1 += butregion->winrct.xmin;
+ x2 += butregion->winrct.xmin;
+ y1 += butregion->winrct.ymin;
+ y2 += butregion->winrct.ymin;
+ }
+
+ wm_window_get_size(CTX_wm_window(C), &winx, &winy);
+
+ if(x2 > winx) {
+ /* super size */
+ if(x2 > winx + x1) {
+ x2= winx;
+ x1= 0;
+ }
+ else {
+ x1 -= x2-winx;
+ x2= winx;
+ }
+ }
+ if(y1 < 0) {
+ y1 += 36;
+ y2 += 36;
+ }
+
+ /* widget rect, in region coords */
+ data->bbox.xmin= MENU_SHADOW_SIDE;
+ data->bbox.xmax= x2-x1 + MENU_SHADOW_SIDE;
+ data->bbox.ymin= MENU_SHADOW_BOTTOM;
+ data->bbox.ymax= y2-y1 + MENU_SHADOW_BOTTOM;
+
+ /* region bigger for shadow */
+ ar->winrct.xmin= x1 - MENU_SHADOW_SIDE;
+ ar->winrct.xmax= x2 + MENU_SHADOW_SIDE;
+ ar->winrct.ymin= y1 - MENU_SHADOW_BOTTOM;
+ ar->winrct.ymax= y2;
+
+ /* adds subwindow */
+ ED_region_init(C, ar);
+
+ /* notify change and redraw */
+ ED_region_tag_redraw(ar);
+
+ /* prepare search data */
+ data->items.maxitem= SEARCH_ITEMS;
+ data->items.maxstrlen= but->hardmax;
+ data->items.totitem= 0;
+ data->items.names= MEM_callocN(SEARCH_ITEMS*sizeof(void *), "search names");
+ data->items.pointers= MEM_callocN(SEARCH_ITEMS*sizeof(void *), "search pointers");
+ for(x1=0; x1<SEARCH_ITEMS; x1++)
+ data->items.names[x1]= MEM_callocN(but->hardmax+1, "search pointers");
+
+ return ar;
+}
+
+void ui_searchbox_free(bContext *C, ARegion *ar)
+{
+ ui_remove_temporary_region(C, CTX_wm_screen(C), ar);
+}
+
+
/************************* Creating Menu Blocks **********************/
/* position block relative to but, result is in window space */
@@ -654,7 +1060,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
/* if this is being created from a button */
if(but) {
- if(ELEM3(but->type, BLOCK, PULLDOWN, HMENU))
+ if(ELEM(but->type, BLOCK, PULLDOWN))
block->xofs = -2; /* for proper alignment */
/* only used for automatic toolbox, so can set the shift flag */
@@ -703,8 +1109,6 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
/* get winmat now that we actually have the subwindow */
wmSubWindowSet(window, ar->swinid);
- // XXX ton, AA pixel space...
- wmOrtho2(0.0, (float)ar->winrct.xmax-ar->winrct.xmin+1, 0.0, (float)ar->winrct.ymax-ar->winrct.ymin+1);
wm_subwindow_getmatrix(window, ar->swinid, block->winmat);
@@ -716,7 +1120,9 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
void ui_popup_block_free(bContext *C, uiPopupBlockHandle *handle)
{
- ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
+ /* XXX ton added, chrash on load file with popup open... need investigate */
+ if(CTX_wm_screen(C))
+ ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
MEM_freeN(handle);
}
@@ -753,7 +1159,7 @@ uiBlock *ui_block_func_MENU(bContext *C, uiPopupBlockHandle *handle, void *arg_b
rows++;
/* prevent scaling up of pupmenu */
- aspect= but->aspect;
+ aspect= but->block->aspect;
if(aspect < 1.0f)
aspect = 1.0f;
@@ -776,7 +1182,7 @@ uiBlock *ui_block_func_MENU(bContext *C, uiPopupBlockHandle *handle, void *arg_b
width = (but->x2 - but->x1);
if(width<50)
width=50;
-
+
boxh= MENU_BUTTON_HEIGHT;
height= rows*boxh;
@@ -1819,7 +2225,7 @@ uiPopupBlockHandle *ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut
pup= MEM_callocN(sizeof(uiPopupMenu), "menu dummy");
pup->block= uiBeginBlock(C, NULL, "ui_popup_menu_create", UI_EMBOSSP);
pup->layout= uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 0, 0, 200, 0, style);
- uiLayoutContext(pup->layout, WM_OP_INVOKE_REGION_WIN);
+ uiLayoutSetOperatorContext(pup->layout, WM_OP_INVOKE_REGION_WIN);
/* create in advance so we can let buttons point to retval already */
pup->block->handle= MEM_callocN(sizeof(uiPopupBlockHandle), "uiPopupBlockHandle");
@@ -1851,7 +2257,7 @@ uiPopupMenu *uiPupMenuBegin(bContext *C, const char *title, int icon)
pup->block= uiBeginBlock(C, NULL, "uiPupMenuBegin", UI_EMBOSSP);
pup->layout= uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 0, 0, 200, 0, style);
- uiLayoutContext(pup->layout, WM_OP_EXEC_REGION_WIN);
+ uiLayoutSetOperatorContext(pup->layout, WM_OP_EXEC_REGION_WIN);
/* create in advance so we can let buttons point to retval already */
pup->block->handle= MEM_callocN(sizeof(uiPopupBlockHandle), "uiPopupBlockHandle");
@@ -1982,7 +2388,7 @@ void uiPupMenuOkee(bContext *C, char *opname, char *str, ...)
va_list ap;
char titlestr[256];
- sprintf(titlestr, "OK? %%i%d", ICON_HELP);
+ sprintf(titlestr, "OK? %%i%d", ICON_QUESTION);
va_start(ap, str);
vconfirm_opname(C, opname, titlestr, str, ap);
@@ -2080,3 +2486,20 @@ void uiPupBlock(bContext *C, uiBlockCreateFunc func, void *arg)
uiPupBlockO(C, func, arg, NULL, 0);
}
+void uiPupBlockOperator(bContext *C, uiBlockCreateFunc func, wmOperator *op, int opcontext)
+{
+ wmWindow *window= CTX_wm_window(C);
+ uiPopupBlockHandle *handle;
+
+ handle= ui_popup_block_create(C, NULL, NULL, func, NULL, op);
+ handle->popup= 1;
+ handle->retvalue= 1;
+
+ handle->popup_arg= op;
+ handle->popup_func= operator_cb;
+ handle->cancel_func= confirm_cancel_operator;
+ handle->opcontext= opcontext;
+
+ UI_add_popup_handlers(C, &window->handlers, handle);
+ WM_event_add_mousemove(C);
+}
diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c
index 34f4d7294ee..62a4c01bc6c 100644
--- a/source/blender/editors/interface/interface_style.c
+++ b/source/blender/editors/interface/interface_style.c
@@ -164,16 +164,16 @@ void uiStyleFontDraw(uiFontStyle *fs, rcti *rect, char *str)
uiStyleFontSet(fs);
- height= BLF_height("A");
+ height= BLF_height("2"); /* correct offset is on baseline, the j is below that */
yofs= floor( 0.5f*(rect->ymax - rect->ymin - height));
if(fs->align==UI_STYLE_TEXT_CENTER)
xofs= floor( 0.5f*(rect->xmax - rect->xmin - BLF_width(str)));
else if(fs->align==UI_STYLE_TEXT_RIGHT)
- xofs= rect->xmax - rect->xmin - BLF_width(str);
+ xofs= rect->xmax - rect->xmin - BLF_width(str) - 1;
/* clip is very strict, so we give it some space */
- BLF_clipping(rect->xmin-4, rect->ymin-4, rect->xmax+4, rect->ymax+4);
+ BLF_clipping(rect->xmin-1, rect->ymin-4, rect->xmax+1, rect->ymax+4);
BLF_enable(BLF_CLIPPING);
if(fs->shadow)
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 8969e2b69ae..020d442bfe6 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -23,6 +23,7 @@
*/
#include <stdlib.h>
+#include <string.h>
#include "MEM_guardedalloc.h"
@@ -33,6 +34,7 @@
#include "BKE_utildefines.h"
#include "ED_screen.h"
+#include "ED_previewrender.h"
#include "RNA_access.h"
@@ -58,7 +60,7 @@ void uiTemplateHeader(uiLayout *layout, bContext *C)
/******************* Header ID Template ************************/
-typedef struct TemplateHeaderID {
+typedef struct TemplateID {
PointerRNA ptr;
PropertyRNA *prop;
@@ -68,14 +70,16 @@ typedef struct TemplateHeaderID {
char newop[256];
char openop[256];
char unlinkop[256];
-} TemplateHeaderID;
+
+ short idtype;
+} TemplateID;
-static void template_header_id_cb(bContext *C, void *arg_litem, void *arg_event)
+static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
{
- TemplateHeaderID *template= (TemplateHeaderID*)arg_litem;
+ TemplateID *template= (TemplateID*)arg_litem;
PointerRNA idptr= RNA_property_pointer_get(&template->ptr, template->prop);
ID *idtest, *id= idptr.data;
- ListBase *lb= wich_libbase(CTX_data_main(C), ID_TXT);
+ ListBase *lb= wich_libbase(CTX_data_main(C), template->idtype);
int nr, event= GET_INT_FROM_POINTER(arg_event);
if(event == UI_ID_BROWSE && template->browse == 32767)
@@ -109,9 +113,10 @@ static void template_header_id_cb(bContext *C, void *arg_litem, void *arg_event)
}
break;
}
-#if 0
case UI_ID_DELETE:
- id= NULL;
+ memset(&idptr, 0, sizeof(idptr));
+ RNA_property_pointer_set(&template->ptr, template->prop, idptr);
+ RNA_property_update(C, &template->ptr, template->prop);
break;
case UI_ID_FAKE_USER:
if(id) {
@@ -120,7 +125,6 @@ static void template_header_id_cb(bContext *C, void *arg_litem, void *arg_event)
}
else return;
break;
-#endif
case UI_ID_PIN:
break;
case UI_ID_ADD_NEW:
@@ -144,22 +148,26 @@ static void template_header_id_cb(bContext *C, void *arg_litem, void *arg_event)
}
}
-static void template_header_ID(bContext *C, uiBlock *block, TemplateHeaderID *template)
+static void template_header_ID(bContext *C, uiBlock *block, TemplateID *template, StructRNA *type)
{
uiBut *but;
- TemplateHeaderID *duptemplate;
+ TemplateID *duptemplate;
PointerRNA idptr;
ListBase *lb;
- int x= 0, y= 0;
idptr= RNA_property_pointer_get(&template->ptr, template->prop);
- lb= wich_libbase(CTX_data_main(C), ID_TXT);
+ lb= wich_libbase(CTX_data_main(C), template->idtype);
+
+ if(idptr.type)
+ type= idptr.type;
+ if(type)
+ uiDefIconBut(block, LABEL, 0, RNA_struct_ui_icon(type), 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
uiBlockBeginAlign(block);
if(template->flag & UI_ID_BROWSE) {
char *extrastr, *str;
- if((template->flag & UI_ID_ADD_NEW) && (template->flag && UI_ID_OPEN))
+ if((template->flag & UI_ID_ADD_NEW) && (template->flag & UI_ID_OPEN))
extrastr= "OPEN NEW %x 32766 |ADD NEW %x 32767";
else if(template->flag & UI_ID_ADD_NEW)
extrastr= "ADD NEW %x 32767";
@@ -171,9 +179,8 @@ static void template_header_ID(bContext *C, uiBlock *block, TemplateHeaderID *te
duptemplate= MEM_dupallocN(template);
IDnames_to_pupstring(&str, NULL, extrastr, lb, idptr.data, &duptemplate->browse);
- but= uiDefButS(block, MENU, 0, str, x, y, UI_UNIT_X, UI_UNIT_Y, &duptemplate->browse, 0, 0, 0, 0, "Browse existing choices, or add new");
- uiButSetNFunc(but, template_header_id_cb, duptemplate, SET_INT_IN_POINTER(UI_ID_BROWSE));
- x+= UI_UNIT_X;
+ but= uiDefButS(block, MENU, 0, str, 0, 0, UI_UNIT_X, UI_UNIT_Y, &duptemplate->browse, 0, 0, 0, 0, "Browse existing choices, or add new");
+ uiButSetNFunc(but, template_id_cb, duptemplate, SET_INT_IN_POINTER(UI_ID_BROWSE));
MEM_freeN(str);
}
@@ -182,40 +189,46 @@ static void template_header_ID(bContext *C, uiBlock *block, TemplateHeaderID *te
if(idptr.data) {
char name[64];
- text_idbutton(idptr.data, name);
- but= uiDefButR(block, TEX, 0, name, x, y, UI_UNIT_X*6, UI_UNIT_Y, &idptr, "name", -1, 0, 0, -1, -1, NULL);
- uiButSetNFunc(but, template_header_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_RENAME));
- x += UI_UNIT_X*6;
+ //text_idbutton(idptr.data, name);
+ name[0]= '\0';
+ but= uiDefButR(block, TEX, 0, name, 0, 0, UI_UNIT_X*6, UI_UNIT_Y, &idptr, "name", -1, 0, 0, -1, -1, NULL);
+ uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_RENAME));
/* delete button */
if(template->flag & UI_ID_DELETE) {
- but= uiDefIconButO(block, BUT, template->unlinkop, WM_OP_EXEC_REGION_WIN, ICON_X, x, y, UI_UNIT_X, UI_UNIT_Y, NULL);
- x += UI_UNIT_X;
+ if(template->unlinkop[0]) {
+ but= uiDefIconButO(block, BUT, template->unlinkop, WM_OP_EXEC_REGION_WIN, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL);
+ }
+ else {
+ but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
+ uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_DELETE));
+ }
}
}
uiBlockEndAlign(block);
}
-void uiTemplateHeaderID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop)
+void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop)
{
- TemplateHeaderID *template;
+ TemplateID *template;
uiBlock *block;
PropertyRNA *prop;
+ StructRNA *type;
if(!ptr->data)
return;
prop= RNA_struct_find_property(ptr, propname);
- if(!prop) {
- printf("uiTemplateHeaderID: property not found: %s\n", propname);
+ if(!prop || RNA_property_type(prop) != PROP_POINTER) {
+ printf("uiTemplateID: pointer property not found: %s\n", propname);
return;
}
- template= MEM_callocN(sizeof(TemplateHeaderID), "TemplateHeaderID");
+ template= MEM_callocN(sizeof(TemplateID), "TemplateID");
template->ptr= *ptr;
template->prop= prop;
- template->flag= UI_ID_BROWSE|UI_ID_RENAME;
+ template->flag= UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE;
if(newop) {
template->flag |= UI_ID_ADD_NEW;
@@ -225,14 +238,1142 @@ void uiTemplateHeaderID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *pr
template->flag |= UI_ID_OPEN;
BLI_strncpy(template->openop, openop, sizeof(template->openop));
}
- if(unlinkop) {
- template->flag |= UI_ID_DELETE;
+ if(unlinkop)
BLI_strncpy(template->unlinkop, unlinkop, sizeof(template->unlinkop));
- }
- block= uiLayoutFreeBlock(layout);
- template_header_ID(C, block, template);
+ type= RNA_property_pointer_type(ptr, prop);
+ template->idtype = RNA_type_to_ID_code(type);
+
+ if(template->idtype) {
+ uiLayoutRow(layout, 1);
+ block= uiLayoutGetBlock(layout);
+ template_header_ID(C, block, template, type);
+ }
MEM_freeN(template);
}
+/************************ Modifier Template *************************/
+
+#define ERROR_LIBDATA_MESSAGE "Can't edit external libdata"
+
+#include <string.h>
+
+#include "DNA_object_force.h"
+#include "DNA_object_types.h"
+#include "DNA_modifier_types.h"
+#include "DNA_scene_types.h"
+
+#include "BKE_depsgraph.h"
+#include "BKE_DerivedMesh.h"
+#include "BKE_global.h"
+#include "BKE_modifier.h"
+#include "BKE_object.h"
+#include "BKE_particle.h"
+#include "BKE_report.h"
+
+#include "UI_resources.h"
+#include "ED_util.h"
+
+#include "BLI_arithb.h"
+#include "BLI_listbase.h"
+
+#include "ED_object.h"
+
+static void modifiers_del(bContext *C, void *ob_v, void *md_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
+ ReportList reports;
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ if(ED_object_modifier_delete(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ ED_undo_push(C, "Delete modifier");
+ }
+ else
+ uiPupMenuReports(C, &reports);
+
+ BKE_reports_clear(&reports);
+}
+
+static void modifiers_moveUp(bContext *C, void *ob_v, void *md_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
+ ReportList reports;
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ if(ED_object_modifier_move_up(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ ED_undo_push(C, "Move modifier");
+ }
+ else
+ uiPupMenuReports(C, &reports);
+
+ BKE_reports_clear(&reports);
+}
+
+static void modifiers_moveDown(bContext *C, void *ob_v, void *md_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
+ ReportList reports;
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ if(ED_object_modifier_move_down(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ ED_undo_push(C, "Move modifier");
+ }
+ else
+ uiPupMenuReports(C, &reports);
+
+ BKE_reports_clear(&reports);
+}
+
+static void modifiers_convertParticles(bContext *C, void *obv, void *mdv)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= obv;
+ ReportList reports;
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ if(ED_object_modifier_convert(&reports, scene, obv, mdv)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ ED_undo_push(C, "Convert particles to mesh object(s).");
+ }
+ else
+ uiPupMenuReports(C, &reports);
+
+ BKE_reports_clear(&reports);
+}
+
+static void modifiers_applyModifier(bContext *C, void *obv, void *mdv)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= obv;
+ ReportList reports;
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ if(ED_object_modifier_apply(&reports, scene, obv, mdv)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ ED_undo_push(C, "Apply modifier");
+ }
+ else
+ uiPupMenuReports(C, &reports);
+
+ BKE_reports_clear(&reports);
+}
+
+static void modifiers_copyModifier(bContext *C, void *ob_v, void *md_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
+ ReportList reports;
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ if(ED_object_modifier_copy(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ ED_undo_push(C, "Copy modifier");
+ }
+ else
+ uiPupMenuReports(C, &reports);
+
+ BKE_reports_clear(&reports);
+}
+
+static void modifiers_setOnCage(bContext *C, void *ob_v, void *md_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob = ob_v;
+ ModifierData *md;
+
+ int i, cageIndex = modifiers_getCageIndex(ob, NULL );
+
+ for(i = 0, md=ob->modifiers.first; md; ++i, md=md->next) {
+ if(md == md_v) {
+ if(i >= cageIndex)
+ md->mode ^= eModifierMode_OnCage;
+ break;
+ }
+ }
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+}
+
+static void modifiers_convertToReal(bContext *C, void *ob_v, void *md_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob = ob_v;
+ ModifierData *md = md_v;
+ ModifierData *nmd = modifier_new(md->type);
+
+ modifier_copyData(md, nmd);
+ nmd->mode &= ~eModifierMode_Virtual;
+
+ BLI_addhead(&ob->modifiers, nmd);
+
+ ob->partype = PAROBJECT;
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ ED_undo_push(C, "Modifier convert to real");
+}
+
+static int modifier_can_delete(ModifierData *md)
+{
+ // deletion over the deflection panel
+ // fluid particle modifier can't be deleted here
+
+ if(md->type==eModifierType_Fluidsim)
+ return 0;
+ if(md->type==eModifierType_Collision)
+ return 0;
+ if(md->type==eModifierType_Surface)
+ return 0;
+ if(md->type == eModifierType_ParticleSystem)
+ if(((ParticleSystemModifierData *)md)->psys->part->type == PART_FLUID)
+ return 0;
+
+ return 1;
+}
+
+static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, int index, int cageIndex, int lastCageIndex)
+{
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ PointerRNA ptr;
+ uiBut *but;
+ uiBlock *block;
+ uiLayout *column, *row, *subrow, *result= NULL;
+ int isVirtual = md->mode&eModifierMode_Virtual;
+ // XXX short color = md->error?TH_REDALERT:TH_BUT_NEUTRAL;
+ short width = 295, buttonWidth = width-120-10;
+ char str[128];
+
+ RNA_pointer_create(&ob->id, &RNA_Modifier, md, &ptr);
+
+ column= uiLayoutColumn(layout, 1);
+ uiLayoutSetContextPointer(column, "modifier", &ptr);
+
+ /* rounded header */
+ /* XXX uiBlockSetCol(block, color); */
+ /* roundbox 4 free variables: corner-rounding, nop, roundbox type, shade */
+
+ row= uiLayoutRow(uiLayoutBox(column), 0);
+ block= uiLayoutGetBlock(row);
+
+ subrow= uiLayoutRow(row, 0);
+ uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
+
+ //uiDefBut(block, ROUNDBOX, 0, "", x-10, y-4, width, 25, NULL, 7.0, 0.0,
+ // (!isVirtual && (md->mode&eModifierMode_Expanded))?3:15, 20, "");
+ /* XXX uiBlockSetCol(block, TH_AUTO); */
+
+ /* open/close icon */
+ if (!isVirtual) {
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+ uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, 0, ICON_TRIA_RIGHT, 0, 0, UI_UNIT_X, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
+ }
+
+ uiBlockSetEmboss(block, UI_EMBOSS);
+
+ if (isVirtual) {
+ sprintf(str, "%s parent deform", md->name);
+ uiDefBut(block, LABEL, 0, str, 0, 0, 185, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Modifier name");
+
+ but = uiDefBut(block, BUT, 0, "Make Real", 0, 0, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Convert virtual modifier to a real modifier");
+ uiButSetFunc(but, modifiers_convertToReal, ob, md);
+ } else {
+ uiBlockBeginAlign(block);
+ uiDefBut(block, TEX, 0, "", 0, 0, buttonWidth-60, UI_UNIT_Y, md->name, 0.0, sizeof(md->name)-1, 0.0, 0.0, "Modifier name");
+
+ /* Softbody not allowed in this situation, enforce! */
+ if (((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) && (md->type!=eModifierType_Surface)) {
+ uiDefIconButBitI(block, TOG, eModifierMode_Render, 0, ICON_SCENE, 0, 0, 19, UI_UNIT_Y,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
+ but= uiDefIconButBitI(block, TOG, eModifierMode_Realtime, 0, ICON_VIEW3D, 0, 0, 19, UI_UNIT_Y,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
+ if (mti->flags&eModifierTypeFlag_SupportsEditmode) {
+ uiDefIconButBitI(block, TOG, eModifierMode_Editmode, 0, ICON_EDITMODE_HLT, 0, 0, 19, UI_UNIT_Y,&md->mode, 0, 0, 1, 0, "Enable modifier during Editmode (only if enabled for display)");
+ }
+ }
+ uiBlockEndAlign(block);
+
+ /* XXX uiBlockSetEmboss(block, UI_EMBOSSR); */
+
+ if (ob->type==OB_MESH && modifier_couldBeCage(md) && index<=lastCageIndex) {
+ int icon; //, color;
+
+ if (index==cageIndex) {
+ // XXX color = TH_BUT_SETTING;
+ icon = VICON_EDITMODE_HLT;
+ } else if (index<cageIndex) {
+ // XXX color = TH_BUT_NEUTRAL;
+ icon = VICON_EDITMODE_DEHLT;
+ } else {
+ // XXX color = TH_BUT_NEUTRAL;
+ icon = ICON_BLANK1;
+ }
+ /* XXX uiBlockSetCol(block, color); */
+ but = uiDefIconBut(block, BUT, 0, icon, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
+ uiButSetFunc(but, modifiers_setOnCage, ob, md);
+ /* XXX uiBlockSetCol(block, TH_AUTO); */
+ }
+ }
+
+ subrow= uiLayoutRow(row, 0);
+ uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
+
+ if(!isVirtual) {
+ /* XXX uiBlockSetCol(block, TH_BUT_ACTION); */
+
+ but = uiDefIconBut(block, BUT, 0, VICON_MOVE_UP, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Move modifier up in stack");
+ uiButSetFunc(but, modifiers_moveUp, ob, md);
+
+ but = uiDefIconBut(block, BUT, 0, VICON_MOVE_DOWN, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Move modifier down in stack");
+ uiButSetFunc(but, modifiers_moveDown, ob, md);
+
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
+ if(modifier_can_delete(md)) {
+ but = uiDefIconBut(block, BUT, 0, VICON_X, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Delete modifier");
+ uiButSetFunc(but, modifiers_del, ob, md);
+ }
+ /* XXX uiBlockSetCol(block, TH_AUTO); */
+ }
+
+ uiBlockSetEmboss(block, UI_EMBOSS);
+
+ if(!isVirtual && (md->mode&eModifierMode_Expanded)) {
+ uiLayout *box;
+
+ box= uiLayoutBox(column);
+ row= uiLayoutRow(box, 1);
+
+ if (!isVirtual && (md->type!=eModifierType_Collision) && (md->type!=eModifierType_Surface)) {
+ uiBlockSetButLock(block, object_data_is_libdata(ob), ERROR_LIBDATA_MESSAGE); /* only here obdata, the rest of modifiers is ob level */
+
+ if (md->type==eModifierType_ParticleSystem) {
+ ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys;
+
+ if(!(G.f & G_PARTICLEEDIT)) {
+ if(ELEM3(psys->part->draw_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache) {
+ but = uiDefBut(block, BUT, 0, "Convert", 0,0,60,19, 0, 0, 0, 0, 0, "Convert the current particles to a mesh object");
+ uiButSetFunc(but, modifiers_convertParticles, ob, md);
+ }
+ }
+ }
+ else{
+ but = uiDefBut(block, BUT, 0, "Apply", 0,0,60,19, 0, 0, 0, 0, 0, "Apply the current modifier and remove from the stack");
+ uiButSetFunc(but, modifiers_applyModifier, ob, md);
+ }
+
+ uiBlockClearButLock(block);
+ uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE);
+
+ if (md->type!=eModifierType_Fluidsim && md->type!=eModifierType_Softbody && md->type!=eModifierType_ParticleSystem && (md->type!=eModifierType_Cloth)) {
+ but = uiDefBut(block, BUT, 0, "Copy", 0,0,60,19, 0, 0, 0, 0, 0, "Duplicate the current modifier at the same position in the stack");
+ uiButSetFunc(but, modifiers_copyModifier, ob, md);
+ }
+ }
+
+ result= uiLayoutColumn(box, 0);
+ block= uiLayoutFreeBlock(box);
+ }
+
+ if (md->error) {
+ row = uiLayoutRow(uiLayoutBox(column), 0);
+
+ /* XXX uiBlockSetCol(block, color); */
+ uiItemL(row, md->error, ICON_ERROR);
+ /* XXX uiBlockSetCol(block, TH_AUTO); */
+ }
+
+ return result;
+}
+
+uiLayout *uiTemplateModifier(uiLayout *layout, PointerRNA *ptr)
+{
+ Object *ob;
+ ModifierData *md, *vmd;
+ int i, lastCageIndex, cageIndex;
+
+ /* verify we have valid data */
+ if(!RNA_struct_is_a(ptr->type, &RNA_Modifier)) {
+ printf("uiTemplateModifier: expected modifier on object.\n");
+ return NULL;
+ }
+
+ ob= ptr->id.data;
+ md= ptr->data;
+
+ if(!ob || !(GS(ob->id.name) == ID_OB)) {
+ printf("uiTemplateModifier: expected modifier on object.\n");
+ return NULL;
+ }
+
+ uiBlockSetButLock(uiLayoutGetBlock(layout), (ob && ob->id.lib), ERROR_LIBDATA_MESSAGE);
+
+ /* find modifier and draw it */
+ cageIndex = modifiers_getCageIndex(ob, &lastCageIndex);
+
+ // XXX virtual modifiers are not accesible for python
+ vmd = modifiers_getVirtualModifierList(ob);
+
+ for(i=0; vmd; i++, vmd=vmd->next) {
+ if(md == vmd)
+ return draw_modifier(layout, ob, md, i, cageIndex, lastCageIndex);
+ else if(vmd->mode&eModifierMode_Virtual)
+ i--;
+ }
+
+ return NULL;
+}
+
+/************************ Constraint Template *************************/
+
+#include "DNA_action_types.h"
+#include "DNA_constraint_types.h"
+
+#include "BKE_action.h"
+#include "BKE_constraint.h"
+
+#define REDRAWIPO 1
+#define REDRAWNLA 2
+#define REDRAWBUTSOBJECT 3
+#define REDRAWACTION 4
+#define B_CONSTRAINT_TEST 5
+#define B_CONSTRAINT_CHANGETARGET 6
+#define B_CONSTRAINT_INF 7
+#define REMAKEIPO 8
+#define B_DIFF 9
+
+void do_constraint_panels(bContext *C, void *arg, int event)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+
+ switch(event) {
+ case B_CONSTRAINT_TEST:
+ // XXX allqueue(REDRAWVIEW3D, 0);
+ // XXX allqueue(REDRAWBUTSOBJECT, 0);
+ // XXX allqueue(REDRAWBUTSEDIT, 0);
+ break; // no handling
+ case B_CONSTRAINT_INF:
+ /* influence; do not execute actions for 1 dag_flush */
+ if (ob->pose)
+ ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK);
+ break;
+ case B_CONSTRAINT_CHANGETARGET:
+ if (ob->pose) ob->pose->flag |= POSE_RECALC; // checks & sorts pose channels
+ DAG_scene_sort(scene);
+ break;
+ default:
+ break;
+ }
+
+ object_test_constraints(ob);
+
+ if(ob->pose) update_pose_constraint_flags(ob->pose);
+
+ if(ob->type==OB_ARMATURE) DAG_object_flush_update(scene, ob, OB_RECALC_DATA|OB_RECALC_OB);
+ else DAG_object_flush_update(scene, ob, OB_RECALC_OB);
+
+ // XXX allqueue(REDRAWVIEW3D, 0);
+ // XXX allqueue(REDRAWBUTSOBJECT, 0);
+ // XXX allqueue(REDRAWBUTSEDIT, 0);
+}
+
+static void constraint_active_func(bContext *C, void *ob_v, void *con_v)
+{
+ ED_object_constraint_set_active(ob_v, con_v);
+}
+
+static void del_constraint_func (bContext *C, void *ob_v, void *con_v)
+{
+ if(ED_object_constraint_delete(NULL, ob_v, con_v))
+ ED_undo_push(C, "Delete Constraint");
+}
+
+static void verify_constraint_name_func (bContext *C, void *con_v, void *name_v)
+{
+ Object *ob= CTX_data_active_object(C);
+ bConstraint *con= con_v;
+ char oldname[32];
+
+ if (!con)
+ return;
+
+ /* put on the stack */
+ BLI_strncpy(oldname, (char *)name_v, 32);
+
+ ED_object_constraint_rename(ob, con, oldname);
+ ED_object_constraint_set_active(ob, con);
+ // XXX allqueue(REDRAWACTION, 0);
+}
+
+static void constraint_moveUp(bContext *C, void *ob_v, void *con_v)
+{
+ if(ED_object_constraint_move_up(NULL, ob_v, con_v))
+ ED_undo_push(C, "Move Constraint");
+}
+
+static void constraint_moveDown(bContext *C, void *ob_v, void *con_v)
+{
+ if(ED_object_constraint_move_down(NULL, ob_v, con_v))
+ ED_undo_push(C, "Move Constraint");
+}
+
+/* some commonly used macros in the constraints drawing code */
+#define is_armature_target(target) (target && target->type==OB_ARMATURE)
+#define is_armature_owner(ob) ((ob->type == OB_ARMATURE) && (ob->flag & OB_POSEMODE))
+#define is_geom_target(target) (target && (ELEM(target->type, OB_MESH, OB_LATTICE)) )
+
+/* Helper function for draw constraint - draws constraint space stuff
+ * This function should not be called if no menus are required
+ * owner/target: -1 = don't draw menu; 0= not posemode, 1 = posemode
+ */
+static void draw_constraint_spaceselect (uiBlock *block, bConstraint *con, short xco, short yco, short owner, short target)
+{
+ short tarx, ownx, iconx;
+ short bwidth;
+ short iconwidth = 20;
+
+ /* calculate sizes and placement of menus */
+ if (owner == -1) {
+ bwidth = 125;
+ tarx = 120;
+ ownx = 0;
+ }
+ else if (target == -1) {
+ bwidth = 125;
+ tarx = 0;
+ ownx = 120;
+ }
+ else {
+ bwidth = 100;
+ tarx = 85;
+ iconx = tarx + bwidth + 5;
+ ownx = tarx + bwidth + iconwidth + 10;
+ }
+
+
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Convert:", xco, yco, 80,18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+
+ /* Target-Space */
+ if (target == 1) {
+ uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Pose Space %x2|Local with Parent %x3|Local Space %x1",
+ tarx, yco, bwidth, 18, &con->tarspace, 0, 0, 0, 0, "Choose space that target is evaluated in");
+ }
+ else if (target == 0) {
+ uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Local (Without Parent) Space %x1",
+ tarx, yco, bwidth, 18, &con->tarspace, 0, 0, 0, 0, "Choose space that target is evaluated in");
+ }
+
+ if ((target != -1) && (owner != -1))
+ uiDefIconBut(block, LABEL, 0, ICON_ARROW_LEFTRIGHT,
+ iconx, yco, 20, 20, NULL, 0.0, 0.0, 0.0, 0.0, "");
+
+ /* Owner-Space */
+ if (owner == 1) {
+ uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Owner Space %t|World Space %x0|Pose Space %x2|Local with Parent %x3|Local Space %x1",
+ ownx, yco, bwidth, 18, &con->ownspace, 0, 0, 0, 0, "Choose space that owner is evaluated in");
+ }
+ else if (owner == 0) {
+ uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Owner Space %t|World Space %x0|Local (Without Parent) Space %x1",
+ ownx, yco, bwidth, 18, &con->ownspace, 0, 0, 0, 0, "Choose space that owner is evaluated in");
+ }
+}
+
+/* draw panel showing settings for a constraint */
+static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con)
+{
+ bPoseChannel *pchan= get_active_posechannel(ob);
+ bConstraintTypeInfo *cti;
+ uiBlock *block;
+ uiLayout *result= NULL, *col, *box, *row, *subrow;
+ uiBut *but;
+ PointerRNA ptr;
+ char typestr[32];
+ short width = 265;
+ short proxy_protected, xco=0, yco=0;
+ int rb_col;
+
+ /* get constraint typeinfo */
+ cti= constraint_get_typeinfo(con);
+ if (cti == NULL) {
+ /* exception for 'Null' constraint - it doesn't have constraint typeinfo! */
+ if (con->type == CONSTRAINT_TYPE_NULL)
+ strcpy(typestr, "Null");
+ else
+ strcpy(typestr, "Unknown");
+ }
+ else
+ strcpy(typestr, cti->name);
+
+ /* determine whether constraint is proxy protected or not */
+ if (proxylocked_constraints_owner(ob, pchan))
+ proxy_protected= (con->flag & CONSTRAINT_PROXY_LOCAL)==0;
+ else
+ proxy_protected= 0;
+
+ /* unless button has own callback, it adds this callback to button */
+ block= uiLayoutGetBlock(layout);
+ uiBlockSetHandleFunc(block, do_constraint_panels, NULL);
+ uiBlockSetFunc(block, constraint_active_func, ob, con);
+
+ RNA_pointer_create(&ob->id, &RNA_Constraint, con, &ptr);
+
+ col= uiLayoutColumn(layout, 1);
+ uiLayoutSetContextPointer(col, "constraint", &ptr);
+
+ box= uiLayoutBox(col);
+ row= uiLayoutRow(box, 0);
+
+ block= uiLayoutFreeBlock(box);
+
+ subrow= uiLayoutRow(row, 0);
+ uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
+
+ /* Draw constraint header */
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
+ /* rounded header */
+ rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20;
+
+ /* open/close */
+ uiDefIconButBitS(block, ICONTOG, CONSTRAINT_EXPAND, B_CONSTRAINT_TEST, ICON_TRIA_RIGHT, xco-10, yco, 20, 20, &con->flag, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Constraint");
+
+ /* name */
+ if ((con->flag & CONSTRAINT_EXPAND) && (proxy_protected==0)) {
+ /* XXX if (con->flag & CONSTRAINT_DISABLE)
+ uiBlockSetCol(block, TH_REDALERT);*/
+
+ uiBlockSetEmboss(block, UI_EMBOSS);
+
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+
+ but = uiDefBut(block, TEX, B_CONSTRAINT_TEST, "", xco+120, yco, 85, 18, con->name, 0.0, 29.0, 0.0, 0.0, "Constraint name");
+ uiButSetFunc(but, verify_constraint_name_func, con, NULL);
+ }
+ else {
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
+ /* XXX if (con->flag & CONSTRAINT_DISABLE)
+ uiBlockSetCol(block, TH_REDALERT);*/
+
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, con->name, xco+120, yco-1, 135, 19, NULL, 0.0, 0.0, 0.0, 0.0, "");
+ }
+
+ // XXX uiBlockSetCol(block, TH_AUTO);
+
+ subrow= uiLayoutRow(row, 0);
+ uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
+
+ /* proxy-protected constraints cannot be edited, so hide up/down + close buttons */
+ if (proxy_protected) {
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
+ /* draw a ghost icon (for proxy) and also a lock beside it, to show that constraint is "proxy locked" */
+ uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_GHOST, xco+244, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, "Proxy Protected");
+ uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_LOCKED, xco+262, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, "Proxy Protected");
+
+ uiBlockSetEmboss(block, UI_EMBOSS);
+ }
+ else {
+ short prev_proxylock, show_upbut, show_downbut;
+
+ /* Up/Down buttons:
+ * Proxy-constraints are not allowed to occur after local (non-proxy) constraints
+ * as that poses problems when restoring them, so disable the "up" button where
+ * it may cause this situation.
+ *
+ * Up/Down buttons should only be shown (or not greyed - todo) if they serve some purpose.
+ */
+ if (proxylocked_constraints_owner(ob, pchan)) {
+ if (con->prev) {
+ prev_proxylock= (con->prev->flag & CONSTRAINT_PROXY_LOCAL) ? 0 : 1;
+ }
+ else
+ prev_proxylock= 0;
+ }
+ else
+ prev_proxylock= 0;
+
+ show_upbut= ((prev_proxylock == 0) && (con->prev));
+ show_downbut= (con->next) ? 1 : 0;
+
+ if (show_upbut || show_downbut) {
+ uiBlockBeginAlign(block);
+ uiBlockSetEmboss(block, UI_EMBOSS);
+
+ if (show_upbut) {
+ but = uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, VICON_MOVE_UP, xco+width-50, yco, 16, 18, NULL, 0.0, 0.0, 0.0, 0.0, "Move constraint up in constraint stack");
+ uiButSetFunc(but, constraint_moveUp, ob, con);
+ }
+
+ if (show_downbut) {
+ but = uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, VICON_MOVE_DOWN, xco+width-50+18, yco, 16, 18, NULL, 0.0, 0.0, 0.0, 0.0, "Move constraint down in constraint stack");
+ uiButSetFunc(but, constraint_moveDown, ob, con);
+ }
+ uiBlockEndAlign(block);
+ }
+
+
+ /* Close 'button' - emboss calls here disable drawing of 'button' behind X */
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+
+ but = uiDefIconBut(block, BUT, B_CONSTRAINT_CHANGETARGET, ICON_X, xco+262, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, "Delete constraint");
+ uiButSetFunc(but, del_constraint_func, ob, con);
+
+ uiBlockSetEmboss(block, UI_EMBOSS);
+ }
+
+ /* Set but-locks for protected settings (magic numbers are used here!) */
+ if (proxy_protected)
+ uiBlockSetButLock(block, 1, "Cannot edit Proxy-Protected Constraint");
+
+ /* Draw constraint data */
+ if ((con->flag & CONSTRAINT_EXPAND) == 0) {
+ (yco) -= 21;
+ }
+ else {
+ box= uiLayoutBox(col);
+ block= uiLayoutFreeBlock(box);
+
+ switch (con->type) {
+#ifndef DISABLE_PYTHON
+ case CONSTRAINT_TYPE_PYTHON:
+ {
+ bPythonConstraint *data = con->data;
+ bConstraintTarget *ct;
+ // uiBut *but2;
+ int tarnum, theight;
+ // static int pyconindex=0;
+ // char *menustr;
+
+ theight = (data->tarnum)? (data->tarnum * 38) : (38);
+
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Script:", xco+60, yco-24, 55, 18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+
+ /* do the scripts menu */
+ /* XXX menustr = buildmenu_pyconstraints(data->text, &pyconindex);
+ but2 = uiDefButI(block, MENU, B_CONSTRAINT_TEST, menustr,
+ xco+120, yco-24, 150, 20, &pyconindex,
+ 0, 0, 0, 0, "Set the Script Constraint to use");
+ uiButSetFunc(but2, validate_pyconstraint_cb, data, &pyconindex);
+ MEM_freeN(menustr); */
+
+ /* draw target(s) */
+ if (data->flag & PYCON_USETARGETS) {
+ /* Draw target parameters */
+ for (ct=data->targets.first, tarnum=1; ct; ct=ct->next, tarnum++) {
+ char tarstr[32];
+ short yoffset= ((tarnum-1) * 38);
+
+ /* target label */
+ sprintf(tarstr, "Target %d:", tarnum);
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, tarstr, xco+45, yco-(48+yoffset), 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+
+ /* target space-selector - per target */
+ if (is_armature_target(ct->tar)) {
+ uiDefButS(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Pose Space %x3|Local with Parent %x4|Local Space %x1",
+ xco+10, yco-(66+yoffset), 100, 18, &ct->space, 0, 0, 0, 0, "Choose space that target is evaluated in");
+ }
+ else {
+ uiDefButS(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Local (Without Parent) Space %x1",
+ xco+10, yco-(66+yoffset), 100, 18, &ct->space, 0, 0, 0, 0, "Choose space that target is evaluated in");
+ }
+
+ uiBlockBeginAlign(block);
+ /* target object */
+ uiDefIDPoinBut(block, test_obpoin_but, ID_OB, B_CONSTRAINT_CHANGETARGET, "OB:", xco+120, yco-(48+yoffset), 150, 18, &ct->tar, "Target Object");
+
+ /* subtarget */
+ if (is_armature_target(ct->tar)) {
+ but= uiDefBut(block, TEX, B_CONSTRAINT_CHANGETARGET, "BO:", xco+120, yco-(66+yoffset),150,18, &ct->subtarget, 0, 24, 0, 0, "Subtarget Bone");
+ uiButSetCompleteFunc(but, autocomplete_bone, (void *)ct->tar);
+ }
+ else if (is_geom_target(ct->tar)) {
+ but= uiDefBut(block, TEX, B_CONSTRAINT_CHANGETARGET, "VG:", xco+120, yco-(66+yoffset),150,18, &ct->subtarget, 0, 24, 0, 0, "Name of Vertex Group defining 'target' points");
+ uiButSetCompleteFunc(but, autocomplete_vgroup, (void *)ct->tar);
+ }
+ else {
+ strcpy(ct->subtarget, "");
+ }
+ uiBlockEndAlign(block);
+ }
+ }
+ else {
+ /* Draw indication that no target needed */
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Target:", xco+60, yco-48, 55, 18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Not Applicable", xco+120, yco-48, 150, 18, NULL, 0.0, 0.0, 0.0, 0.0, "");
+ }
+
+ /* settings */
+ uiBlockBeginAlign(block);
+ but=uiDefBut(block, BUT, B_CONSTRAINT_TEST, "Options", xco, yco-(52+theight), (width/2),18, NULL, 0, 24, 0, 0, "Change some of the constraint's settings.");
+ // XXX uiButSetFunc(but, BPY_pyconstraint_settings, data, NULL);
+
+ but=uiDefBut(block, BUT, B_CONSTRAINT_TEST, "Refresh", xco+((width/2)+10), yco-(52+theight), (width/2),18, NULL, 0, 24, 0, 0, "Force constraint to refresh it's settings");
+ uiBlockEndAlign(block);
+
+ /* constraint space settings */
+ draw_constraint_spaceselect(block, con, xco, yco-(73+theight), is_armature_owner(ob), -1);
+ }
+ break;
+#endif /* DISABLE_PYTHON */
+ /*case CONSTRAINT_TYPE_CHILDOF:
+ {
+ // Inverse options
+ uiBlockBeginAlign(block);
+ but=uiDefBut(block, BUT, B_CONSTRAINT_TEST, "Set Offset", xco, yco-151, (width/2),18, NULL, 0, 24, 0, 0, "Calculate current Parent-Inverse Matrix (i.e. restore offset from parent)");
+ // XXX uiButSetFunc(but, childof_const_setinv, con, NULL);
+
+ but=uiDefBut(block, BUT, B_CONSTRAINT_TEST, "Clear Offset", xco+((width/2)+10), yco-151, (width/2),18, NULL, 0, 24, 0, 0, "Clear Parent-Inverse Matrix (i.e. clear offset from parent)");
+ // XXX uiButSetFunc(but, childof_const_clearinv, con, NULL);
+ uiBlockEndAlign(block);
+ }
+ break;
+ */
+
+ /*case CONSTRAINT_TYPE_RIGIDBODYJOINT:
+ {
+ if (data->type==CONSTRAINT_RB_GENERIC6DOF) {
+ // Draw Pairs of LimitToggle+LimitValue
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 1, B_CONSTRAINT_TEST, "LinMinX", xco, yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+togButWidth, yco-offsetY, (textButWidth-5), 18, &(data->minLimit[0]), -extremeLin, extremeLin, 0.1,0.5,"min x limit");
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 1, B_CONSTRAINT_TEST, "LinMaxX", xco+(width-(textButWidth-5)-togButWidth), yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+(width-textButWidth-5), yco-offsetY, (textButWidth), 18, &(data->maxLimit[0]), -extremeLin, extremeLin, 0.1,0.5,"max x limit");
+ uiBlockEndAlign(block);
+
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 2, B_CONSTRAINT_TEST, "LinMinY", xco, yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+togButWidth, yco-offsetY, (textButWidth-5), 18, &(data->minLimit[1]), -extremeLin, extremeLin, 0.1,0.5,"min y limit");
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 2, B_CONSTRAINT_TEST, "LinMaxY", xco+(width-(textButWidth-5)-togButWidth), yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+(width-textButWidth-5), yco-offsetY, (textButWidth), 18, &(data->maxLimit[1]), -extremeLin, extremeLin, 0.1,0.5,"max y limit");
+ uiBlockEndAlign(block);
+
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 4, B_CONSTRAINT_TEST, "LinMinZ", xco, yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+togButWidth, yco-offsetY, (textButWidth-5), 18, &(data->minLimit[2]), -extremeLin, extremeLin, 0.1,0.5,"min z limit");
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 4, B_CONSTRAINT_TEST, "LinMaxZ", xco+(width-(textButWidth-5)-togButWidth), yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+(width-textButWidth-5), yco-offsetY, (textButWidth), 18, &(data->maxLimit[2]), -extremeLin, extremeLin, 0.1,0.5,"max z limit");
+ uiBlockEndAlign(block);
+ offsetY += 20;
+ }
+ if ((data->type==CONSTRAINT_RB_GENERIC6DOF) || (data->type==CONSTRAINT_RB_CONETWIST)) {
+ // Draw Pairs of LimitToggle+LimitValue /
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 8, B_CONSTRAINT_TEST, "AngMinX", xco, yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+togButWidth, yco-offsetY, (textButWidth-5), 18, &(data->minLimit[3]), -extremeAngX, extremeAngX, 0.1,0.5,"min x limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 8, B_CONSTRAINT_TEST, "AngMaxX", xco+(width-(textButWidth-5)-togButWidth), yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+(width-textButWidth-5), yco-offsetY, (textButWidth), 18, &(data->maxLimit[3]), -extremeAngX, extremeAngX, 0.1,0.5,"max x limit");
+ uiBlockEndAlign(block);
+
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 16, B_CONSTRAINT_TEST, "AngMinY", xco, yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+togButWidth, yco-offsetY, (textButWidth-5), 18, &(data->minLimit[4]), -extremeAngY, extremeAngY, 0.1,0.5,"min y limit");
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 16, B_CONSTRAINT_TEST, "AngMaxY", xco+(width-(textButWidth-5)-togButWidth), yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+(width-textButWidth-5), yco-offsetY, (textButWidth), 18, &(data->maxLimit[4]), -extremeAngY, extremeAngY, 0.1,0.5,"max y limit");
+ uiBlockEndAlign(block);
+
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 32, B_CONSTRAINT_TEST, "AngMinZ", xco, yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+togButWidth, yco-offsetY, (textButWidth-5), 18, &(data->minLimit[5]), -extremeAngZ, extremeAngZ, 0.1,0.5,"min z limit");
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 32, B_CONSTRAINT_TEST, "AngMaxZ", xco+(width-(textButWidth-5)-togButWidth), yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", xco+(width-textButWidth-5), yco-offsetY, (textButWidth), 18, &(data->maxLimit[5]), -extremeAngZ, extremeAngZ, 0.1,0.5,"max z limit");
+ uiBlockEndAlign(block);
+ }
+
+ }
+ break;
+ */
+
+ case CONSTRAINT_TYPE_NULL:
+ {
+ uiItemL(box, "", 0);
+ }
+ break;
+ default:
+ result= box;
+ break;
+ }
+ }
+
+ /* clear any locks set up for proxies/lib-linking */
+ uiBlockClearButLock(block);
+
+ return result;
+}
+
+uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr)
+{
+ Object *ob;
+ bConstraint *con;
+
+ /* verify we have valid data */
+ if(!RNA_struct_is_a(ptr->type, &RNA_Constraint)) {
+ printf("uiTemplateConstraint: expected constraint on object.\n");
+ return NULL;
+ }
+
+ ob= ptr->id.data;
+ con= ptr->data;
+
+ if(!ob || !(GS(ob->id.name) == ID_OB)) {
+ printf("uiTemplateConstraint: expected constraint on object.\n");
+ return NULL;
+ }
+
+ uiBlockSetButLock(uiLayoutGetBlock(layout), (ob && ob->id.lib), ERROR_LIBDATA_MESSAGE);
+
+ /* hrms, the temporal constraint should not draw! */
+ if(con->type==CONSTRAINT_TYPE_KINEMATIC) {
+ bKinematicConstraint *data= con->data;
+ if(data->flag & CONSTRAINT_IK_TEMP)
+ return NULL;
+ }
+
+ return draw_constraint(layout, ob, con);
+}
+
+/************************* Group Template ***************************/
+
+#if 0
+static void do_add_groupmenu(void *arg, int event)
+{
+ Object *ob= OBACT;
+
+ if(ob) {
+
+ if(event== -1) {
+ Group *group= add_group( "Group" );
+ add_to_group(group, ob);
+ }
+ else
+ add_to_group(BLI_findlink(&G.main->group, event), ob);
+
+ ob->flag |= OB_FROMGROUP;
+ BASACT->flag |= OB_FROMGROUP;
+ allqueue(REDRAWBUTSOBJECT, 0);
+ allqueue(REDRAWVIEW3D, 0);
+ }
+}
+
+static uiBlock *add_groupmenu(void *arg_unused)
+{
+ uiBlock *block;
+ Group *group;
+ short xco=0, yco= 0, index=0;
+ char str[32];
+
+ block= uiNewBlock(&curarea->uiblocks, "add_constraintmenu", UI_EMBOSSP, UI_HELV, curarea->win);
+ uiBlockSetButmFunc(block, do_add_groupmenu, NULL);
+
+ uiDefBut(block, BUTM, B_NOP, "ADD NEW", 0, 20, 160, 19, NULL, 0.0, 0.0, 1, -1, "");
+ for(group= G.main->group.first; group; group= group->id.next, index++) {
+
+ /*if(group->id.lib) strcpy(str, "L ");*/ /* we cant allow adding objects inside linked groups, it wont be saved anyway */
+ if(group->id.lib==0) {
+ strcpy(str, " ");
+ strcat(str, group->id.name+2);
+ uiDefBut(block, BUTM, B_NOP, str, xco*160, -20*yco, 160, 19, NULL, 0.0, 0.0, 1, index, "");
+
+ yco++;
+ if(yco>24) {
+ yco= 0;
+ xco++;
+ }
+ }
+ }
+
+ uiTextBoundsBlock(block, 50);
+ uiBlockSetDirection(block, UI_DOWN);
+
+ return block;
+}
+
+static void group_ob_rem(void *gr_v, void *ob_v)
+{
+ Object *ob= OBACT;
+
+ if(rem_from_group(gr_v, ob) && find_group(ob, NULL)==NULL) {
+ ob->flag &= ~OB_FROMGROUP;
+ BASACT->flag &= ~OB_FROMGROUP;
+ }
+ allqueue(REDRAWBUTSOBJECT, 0);
+ allqueue(REDRAWVIEW3D, 0);
+
+}
+
+static void group_local(void *gr_v, void *unused)
+{
+ Group *group= gr_v;
+
+ group->id.lib= NULL;
+
+ allqueue(REDRAWBUTSOBJECT, 0);
+ allqueue(REDRAWVIEW3D, 0);
+
+}
+
+uiLayout *uiTemplateGroup(uiLayout *layout, Object *ob, Group *group)
+{
+ uiSetButLock(1, NULL);
+ uiDefBlockBut(block, add_groupmenu, NULL, "Add to Group", 10,150,150,20, "Add Object to a new Group");
+
+ /* all groups */
+ if(group->id.lib) {
+ uiLayoutRow()
+ uiBlockBeginAlign(block);
+ uiSetButLock(GET_INT_FROM_POINTER(group->id.lib), ERROR_LIBDATA_MESSAGE); /* We cant actually use this button */
+ uiDefBut(block, TEX, B_IDNAME, "GR:", 10, 120-yco, 100, 20, group->id.name+2, 0.0, 21.0, 0, 0, "Displays Group name. Click to change.");
+ uiClearButLock();
+
+ but= uiDefIconBut(block, BUT, B_NOP, ICON_PARLIB, 110, 120-yco, 20, 20, NULL, 0.0, 0.0, 0.0, 0.0, "Make Group local");
+ uiButSetFunc(but, group_local, group, NULL);
+ uiBlockEndAlign(block);
+ } else {
+ but = uiDefBut(block, TEX, B_IDNAME, "GR:", 10, 120-yco, 120, 20, group->id.name+2, 0.0, 21.0, 0, 0, "Displays Group name. Click to change.");
+ uiButSetFunc(but, test_idbutton_cb, group->id.name, NULL);
+ }
+
+ xco = 290;
+ if(group->id.lib==0) { /* cant remove objects from linked groups */
+ but = uiDefIconBut(block, BUT, B_NOP, VICON_X, xco, 120-yco, 20, 20, NULL, 0.0, 0.0, 0.0, 0.0, "Remove Group membership");
+ uiButSetFunc(but, group_ob_rem, group, ob);
+ }
+}
+#endif
+
+/************************* Preview Template ***************************/
+
+#include "DNA_material_types.h"
+
+#define B_MATPRV 1
+
+
+static void do_preview_buttons(bContext *C, void *arg, int event)
+{
+ switch(event) {
+ case B_MATPRV:
+ WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, arg);
+ break;
+ }
+}
+
+void uiTemplatePreview(uiLayout *layout, ID *id)
+{
+ uiLayout *row, *col;
+ uiBlock *block;
+ Material *ma;
+
+ if(!id || !ELEM4(GS(id->name), ID_MA, ID_TE, ID_WO, ID_LA)) {
+ printf("uiTemplatePreview: expected ID of type material, texture, lamp or world.\n");
+ return;
+ }
+
+ block= uiLayoutGetBlock(layout);
+
+ row= uiLayoutRow(layout, 0);
+
+ col= uiLayoutColumn(row, 0);
+ uiLayoutSetKeepAspect(col, 1);
+
+ uiDefBut(block, BUT_EXTRA, 0, "", 0, 0, UI_UNIT_X*6, UI_UNIT_Y*6, id, 0.0, 0.0, 0, 0, "");
+ uiBlockSetDrawExtraFunc(block, ED_preview_draw);
+
+ uiBlockSetHandleFunc(block, do_preview_buttons, NULL);
+
+ if(id) {
+ if(GS(id->name) == ID_MA) {
+ ma= (Material*)id;
+
+ uiLayoutColumn(row, 1);
+
+ uiDefIconButC(block, ROW, B_MATPRV, ICON_MATPLANE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_FLAT, 0, 0, "Preview type: Flat XY plane");
+ uiDefIconButC(block, ROW, B_MATPRV, ICON_MATSPHERE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_SPHERE, 0, 0, "Preview type: Sphere");
+ uiDefIconButC(block, ROW, B_MATPRV, ICON_MATCUBE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_CUBE, 0, 0, "Preview type: Cube");
+ uiDefIconButC(block, ROW, B_MATPRV, ICON_MONKEY, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_MONKEY, 0, 0, "Preview type: Monkey");
+ uiDefIconButC(block, ROW, B_MATPRV, ICON_HAIR, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_HAIR, 0, 0, "Preview type: Hair strands");
+ uiDefIconButC(block, ROW, B_MATPRV, ICON_MATSPHERE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_SPHERE_A, 0, 0, "Preview type: Large sphere with sky");
+ }
+ }
+}
+
+/********************** ColorRamp Template **************************/
+
+void uiTemplateColorRamp(uiLayout *layout, ColorBand *coba, int expand)
+{
+ uiBlock *block;
+ rctf rect;
+
+ if(coba) {
+ rect.xmin= 0; rect.xmax= 200;
+ rect.ymin= 0; rect.ymax= 190;
+
+ block= uiLayoutFreeBlock(layout);
+ colorband_buttons(block, coba, &rect, !expand);
+ }
+}
+
+/********************* CurveMapping Template ************************/
+
+#include "DNA_color_types.h"
+
+void uiTemplateCurveMapping(uiLayout *layout, CurveMapping *cumap, int type)
+{
+ uiBlock *block;
+ rctf rect;
+
+ if(cumap) {
+ rect.xmin= 0; rect.xmax= 200;
+ rect.ymin= 0; rect.ymax= 190;
+
+ block= uiLayoutFreeBlock(layout);
+ curvemap_buttons(block, cumap, type, 0, 0, &rect);
+ }
+}
+
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index 4521bd57a3a..e08aeb1b371 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -35,13 +35,17 @@
#include "DNA_material_types.h"
#include "DNA_object_types.h"
#include "DNA_screen_types.h"
+#include "DNA_texture_types.h"
#include "DNA_windowmanager_types.h"
+#include "BLI_blenlib.h"
+
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_idprop.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_texture.h"
#include "BKE_utildefines.h"
#include "RNA_access.h"
@@ -63,186 +67,6 @@
/*************************** RNA Utilities ******************************/
-int UI_GetIconRNA(PointerRNA *ptr)
-{
- StructRNA *rnatype= ptr->type;
-
- if(rnatype == &RNA_Scene)
- return ICON_SCENE_DATA;
- else if(rnatype == &RNA_World)
- return ICON_WORLD_DATA;
- else if(rnatype == &RNA_Object)
- return ICON_OBJECT_DATA;
- else if(rnatype == &RNA_Mesh)
- return ICON_MESH_DATA;
- else if(rnatype == &RNA_MeshVertex)
- return ICON_VERTEXSEL;
- else if(rnatype == &RNA_MeshEdge)
- return ICON_EDGESEL;
- else if(rnatype == &RNA_MeshFace)
- return ICON_FACESEL;
- else if(rnatype == &RNA_MeshTextureFace)
- return ICON_FACESEL_HLT;
- else if(rnatype == &RNA_VertexGroup)
- return ICON_VGROUP;
- else if(rnatype == &RNA_VertexGroupElement)
- return ICON_VGROUP;
- else if(rnatype == &RNA_Curve)
- return ICON_CURVE_DATA;
- else if(rnatype == &RNA_MetaBall)
- return ICON_META_DATA;
- else if(rnatype == &RNA_MetaElement)
- return ICON_OUTLINER_DATA_META;
- else if(rnatype == &RNA_Lattice)
- return ICON_LATTICE_DATA;
- else if(rnatype == &RNA_Armature)
- return ICON_ARMATURE_DATA;
- else if(rnatype == &RNA_Bone)
- return ICON_BONE_DATA;
- else if(rnatype == &RNA_Camera)
- return ICON_CAMERA_DATA;
- else if(rnatype == &RNA_LocalLamp)
- return ICON_LAMP_DATA;
- else if(rnatype == &RNA_AreaLamp)
- return ICON_LAMP_DATA;
- else if(rnatype == &RNA_SpotLamp)
- return ICON_LAMP_DATA;
- else if(rnatype == &RNA_SunLamp)
- return ICON_LAMP_DATA;
- else if(rnatype == &RNA_HemiLamp)
- return ICON_LAMP_DATA;
- else if(rnatype == &RNA_Lamp)
- return ICON_LAMP_DATA;
- else if(rnatype == &RNA_Group)
- return ICON_GROUP;
- else if(rnatype == &RNA_ParticleSystem)
- return ICON_PARTICLE_DATA;
- else if(rnatype == &RNA_ParticleSettings)
- return ICON_PARTICLE_DATA;
- else if(rnatype == &RNA_Material)
- return ICON_MATERIAL_DATA;
- else if(rnatype == &RNA_Texture)
- return ICON_TEXTURE_DATA;
- else if(rnatype == &RNA_TextureSlot)
- return ICON_TEXTURE_DATA;
- else if(rnatype == &RNA_WorldTextureSlot)
- return ICON_TEXTURE_DATA;
- else if(rnatype == &RNA_MaterialTextureSlot)
- return ICON_TEXTURE_DATA;
- else if(rnatype == &RNA_Image)
- return ICON_IMAGE_DATA;
- else if(rnatype == &RNA_Screen)
- return ICON_SPLITSCREEN;
- else if(rnatype == &RNA_NodeTree)
- return ICON_NODE;
- else if(rnatype == &RNA_Text)
- return ICON_TEXT;
- else if(rnatype == &RNA_Sound)
- return ICON_SOUND;
- else if(rnatype == &RNA_Brush)
- return ICON_BRUSH_DATA;
- else if(rnatype == &RNA_VectorFont)
- return ICON_FONT_DATA;
- else if(rnatype == &RNA_Library)
- return ICON_LIBRARY_DATA_DIRECT;
- else if(rnatype == &RNA_Action)
- return ICON_ACTION;
- else if(rnatype == &RNA_FCurve)
- return ICON_ANIM_DATA;
- //else if(rnatype == &RNA_Ipo)
- // return ICON_ANIM_DATA;
- else if(rnatype == &RNA_Key)
- return ICON_SHAPEKEY_DATA;
- else if(rnatype == &RNA_Main)
- return ICON_BLENDER;
- else if(rnatype == &RNA_Struct)
- return ICON_RNA;
- else if(rnatype == &RNA_Property)
- return ICON_RNA;
- else if(rnatype == &RNA_BooleanProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_IntProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_FloatProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_StringProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_EnumProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_EnumPropertyItem)
- return ICON_RNA;
- else if(rnatype == &RNA_PointerProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_CollectionProperty)
- return ICON_RNA;
- else if(rnatype == &RNA_GameObjectSettings)
- return ICON_GAME;
- else if(rnatype == &RNA_ScriptLink)
- return ICON_PYTHON;
-
- /* modifiers */
- else if(rnatype == &RNA_SubsurfModifier)
- return ICON_MOD_SUBSURF;
- else if(rnatype == &RNA_ArmatureModifier)
- return ICON_MOD_ARMATURE;
- else if(rnatype == &RNA_LatticeModifier)
- return ICON_MOD_LATTICE;
- else if(rnatype == &RNA_CurveModifier)
- return ICON_MOD_CURVE;
- else if(rnatype == &RNA_BuildModifier)
- return ICON_MOD_BUILD;
- else if(rnatype == &RNA_MirrorModifier)
- return ICON_MOD_MIRROR;
- else if(rnatype == &RNA_DecimateModifier)
- return ICON_MOD_DECIM;
- else if(rnatype == &RNA_WaveModifier)
- return ICON_MOD_WAVE;
- else if(rnatype == &RNA_HookModifier)
- return ICON_HOOK;
- else if(rnatype == &RNA_SoftbodyModifier)
- return ICON_MOD_SOFT;
- else if(rnatype == &RNA_BooleanModifier)
- return ICON_MOD_BOOLEAN;
- else if(rnatype == &RNA_ParticleInstanceModifier)
- return ICON_MOD_PARTICLES;
- else if(rnatype == &RNA_ParticleSystemModifier)
- return ICON_MOD_PARTICLES;
- else if(rnatype == &RNA_EdgeSplitModifier)
- return ICON_MOD_EDGESPLIT;
- else if(rnatype == &RNA_ArrayModifier)
- return ICON_MOD_ARRAY;
- else if(rnatype == &RNA_UVProjectModifier)
- return ICON_MOD_UVPROJECT;
- else if(rnatype == &RNA_DisplaceModifier)
- return ICON_MOD_DISPLACE;
- else if(rnatype == &RNA_ShrinkwrapModifier)
- return ICON_MOD_SHRINKWRAP;
- else if(rnatype == &RNA_CastModifier)
- return ICON_MOD_CAST;
- else if(rnatype == &RNA_MeshDeformModifier)
- return ICON_MOD_MESHDEFORM;
- else if(rnatype == &RNA_BevelModifier)
- return ICON_MOD_BEVEL;
- else if(rnatype == &RNA_SmoothModifier)
- return ICON_MOD_SMOOTH;
- else if(rnatype == &RNA_SimpleDeformModifier)
- return ICON_MOD_SIMPLEDEFORM;
- else if(rnatype == &RNA_MaskModifier)
- return ICON_MOD_MASK;
- else if(rnatype == &RNA_ClothModifier)
- return ICON_MOD_CLOTH;
- else if(rnatype == &RNA_ExplodeModifier)
- return ICON_MOD_EXPLODE;
- else if(rnatype == &RNA_CollisionModifier)
- return ICON_MOD_PHYSICS;
- else if(rnatype == &RNA_FluidSimulationModifier)
- return ICON_MOD_FLUIDSIM;
- else if(rnatype == &RNA_MultiresModifier)
- return ICON_MOD_MULTIRES;
- else
- return ICON_DOT;
-}
-
uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int index, char *name, int icon, int x1, int y1, int x2, int y2)
{
uiBut *but=NULL;
@@ -268,7 +92,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
else if(icon)
but= uiDefIconTextButR(block, ICONTOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
else
- but= uiDefButR(block, TOG, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+ but= uiDefButR(block, OPTION, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
break;
}
case PROP_INT:
@@ -294,8 +118,8 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
pptr= RNA_property_pointer_get(ptr, prop);
if(!pptr.type)
- pptr.type= RNA_property_pointer_type(prop);
- icon= UI_GetIconRNA(&pptr);
+ pptr.type= RNA_property_pointer_type(ptr, prop);
+ icon= RNA_struct_ui_icon(pptr.type);
but= uiDefIconTextButR(block, IDPOIN, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
break;
@@ -333,12 +157,12 @@ void uiDefAutoButsRNA(const bContext *C, uiLayout *layout, PointerRNA *ptr)
if(strcmp(RNA_property_identifier(prop), "rna_type") == 0)
continue;
- split = uiLayoutSplit(layout);
+ split = uiLayoutSplit(layout, 0.5f);
name= (char*)RNA_property_ui_name(prop);
uiItemL(uiLayoutColumn(split, 0), name, 0);
- uiItemFullR(uiLayoutColumn(split, 0), "", 0, ptr, prop, -1, 0, 0, 0);
+ uiItemFullR(uiLayoutColumn(split, 0), "", 0, ptr, prop, -1, 0, 0, 0, 0);
}
RNA_property_collection_end(&iter);
@@ -366,16 +190,23 @@ void uiDefAutoButsRNA_single(const bContext *C, uiLayout *layout, PointerRNA *pt
name= (char*)RNA_property_ui_name(prop);
col= uiLayoutColumn(layout, 1);
uiItemL(col, name, 0);
- uiItemFullR(col, "", 0, ptr, prop, -1, 0, 0, 0);
+
+ /* temp hack to show normal button for spin/screw */
+ if(strcmp(name, "Axis")==0) {
+ uiDefButR(uiLayoutGetBlock(layout), BUT_NORMAL, 0, name, 0, 0, 100, 100, ptr, "axis", -1, 0, 0, -1, -1, NULL);
+ }
+ else uiItemFullR(col, "", 0, ptr, prop, -1, 0, 0, 0, 0);
}
RNA_property_collection_end(&iter);
}
+
/***************************** ID Utilities *******************************/
typedef struct uiIDPoinParams {
uiIDPoinFunc func;
+ ListBase *lb;
ID *id;
short id_code;
short browsenr;
@@ -383,16 +214,12 @@ typedef struct uiIDPoinParams {
static void idpoin_cb(bContext *C, void *arg_params, void *arg_event)
{
- Main *bmain;
- ListBase *lb;
uiIDPoinParams *params= (uiIDPoinParams*)arg_params;
+ ListBase *lb= params->lb;
uiIDPoinFunc func= params->func;
ID *id= params->id, *idtest;
int nr, event= GET_INT_FROM_POINTER(arg_event);
- bmain= CTX_data_main(C);
- lb= wich_libbase(bmain, params->id_code);
-
if(event == UI_ID_BROWSE && params->browsenr == 32767)
event= UI_ID_ADD_NEW;
else if(event == UI_ID_BROWSE && params->browsenr == 32766)
@@ -459,22 +286,84 @@ static void idpoin_cb(bContext *C, void *arg_params, void *arg_event)
func(C, id, event);
}
+/* ***************************** ID Search browse menu ********************** */
+
+static void id_search_call_cb(struct bContext *C, void *arg_params, void *item)
+{
+ uiIDPoinParams *params= (uiIDPoinParams*)arg_params;
+
+ if(item && params->func)
+ params->func(C, item, UI_ID_BROWSE);
+
+}
+
+static void id_search_cb(const struct bContext *C, void *arg_params, char *str, uiSearchItems *items)
+{
+ uiIDPoinParams *params= (uiIDPoinParams*)arg_params;
+ ID *id;
+
+ for(id= params->lb->first; id; id= id->next) {
+
+ if(BLI_strcasestr(id->name+2, str)) {
+ if(0==uiSearchItemAdd(items, id->name+2, id))
+ break;
+ }
+ }
+}
+
+static uiBlock *id_search_menu(bContext *C, ARegion *ar, void *arg_params)
+{
+ static char search[256];
+ static uiIDPoinParams params;
+ wmEvent event;
+ wmWindow *win= CTX_wm_window(C);
+ uiBlock *block;
+ uiBut *but;
+
+ /* clear initial search string, then all items show */
+ search[0]= 0;
+ /* params is malloced, can be freed by parent button */
+ params= *((uiIDPoinParams*)arg_params);
+
+ 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, 19, "");
+ uiButSetSearchFunc(but, id_search_cb, &params, id_search_call_cb);
+
+ 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;
+}
+
+/* ****************** */
+
int uiDefIDPoinButs(uiBlock *block, Main *bmain, ID *parid, ID *id, int id_code, short *pin_p, int x, int y, uiIDPoinFunc func, int events)
{
- ListBase *lb;
uiBut *but;
uiIDPoinParams *params, *dup_params;
- char *str=NULL, str1[10];
+ char str1[10];
int len, add_addbutton=0;
/* setup struct that we will pass on with the buttons */
params= MEM_callocN(sizeof(uiIDPoinParams), "uiIDPoinParams");
+ params->lb= wich_libbase(bmain, id_code);
params->id= id;
params->id_code= id_code;
params->func= func;
- lb= wich_libbase(bmain, id_code);
-
/* create buttons */
uiBlockBeginAlign(block);
@@ -495,45 +384,11 @@ int uiDefIDPoinButs(uiBlock *block, Main *bmain, ID *parid, ID *id, int id_code,
/* browse menu */
if(events & UI_ID_BROWSE) {
- char *extrastr= NULL;
-
- if(ELEM4(id_code, ID_MA, ID_TE, ID_BR, ID_PA))
- add_addbutton= 1;
-
- if(ELEM8(id_code, ID_SCE, ID_SCR, ID_MA, ID_TE, ID_WO, ID_IP, ID_AC, ID_BR) || id_code == ID_PA)
- extrastr= "ADD NEW %x 32767";
- else if(id_code==ID_TXT)
- extrastr= "OPEN NEW %x 32766 |ADD NEW %x 32767";
- else if(id_code==ID_SO)
- extrastr= "OPEN NEW %x 32766";
-
- /* XXX should be moved out of this function
- uiBlockSetButLock(block, G.scene->id.lib!=0, "Can't edit external libdata");
- if( id_code==ID_SCE || id_code==ID_SCR ) uiBlockClearButLock(block); */
-
- /* XXX should be moved out of this function
- if(curarea->spacetype==SPACE_BUTS)
- uiBlockSetButLock(block, id_code!=ID_SCR && G.obedit!=0 && G.buts->mainb==CONTEXT_EDITING, "Cannot perform in EditMode"); */
-
- if(parid)
- uiBlockSetButLock(block, parid->lib!=0, "Can't edit external libdata");
-
- if(lb) {
- if(id_code!=ID_IM || (events & UI_ID_BROWSE_RENDER))
- IDnames_to_pupstring(&str, NULL, extrastr, lb, id, &params->browsenr);
- else
- IMAnames_to_pupstring(&str, NULL, extrastr, lb, id, &params->browsenr);
- }
-
- dup_params= MEM_dupallocN(params);
- but= uiDefButS(block, MENU, 0, str, x, y, DEF_ICON_BUT_WIDTH, DEF_BUT_HEIGHT, &dup_params->browsenr, 0, 0, 0, 0, "Browse existing choices, or add new");
- uiButSetNFunc(but, idpoin_cb, dup_params, SET_INT_IN_POINTER(UI_ID_BROWSE));
+ uiDefBlockButN(block, id_search_menu, MEM_dupallocN(params), "", x, y, DEF_ICON_BUT_WIDTH, DEF_BUT_HEIGHT, "Browse ID data");
x+= DEF_ICON_BUT_WIDTH;
-
- uiBlockClearButLock(block);
-
- MEM_freeN(str);
}
+
+
/* text button with name */
if(id) {
@@ -1093,3 +948,128 @@ void curvemap_buttons(uiBlock *block, CurveMapping *cumap, char labeltype, short
cumap, 0.0f, 1.0f, 0, 0, "");
}
+#define B_BANDCOL 1
+
+static int vergcband(const void *a1, const void *a2)
+{
+ const CBData *x1=a1, *x2=a2;
+
+ if( x1->pos > x2->pos ) return 1;
+ else if( x1->pos < x2->pos) return -1;
+ return 0;
+}
+
+static void colorband_pos_cb(bContext *C, void *coba_v, void *unused_v)
+{
+ ColorBand *coba= coba_v;
+ int a;
+
+ if(coba->tot<2) return;
+
+ for(a=0; a<coba->tot; a++) coba->data[a].cur= a;
+ qsort(coba->data, coba->tot, sizeof(CBData), vergcband);
+ for(a=0; a<coba->tot; a++) {
+ if(coba->data[a].cur==coba->cur) {
+ // XXX if(coba->cur!=a) addqueue(curarea->win, REDRAW, 0); /* button cur */
+ coba->cur= a;
+ break;
+ }
+ }
+}
+
+static void colorband_add_cb(bContext *C, void *coba_v, void *unused_v)
+{
+ ColorBand *coba= coba_v;
+
+ if(coba->tot < MAXCOLORBAND-1) coba->tot++;
+ coba->cur= coba->tot-1;
+
+ colorband_pos_cb(C, coba, NULL);
+ ED_undo_push(C, "Add colorband");
+}
+
+static void colorband_del_cb(bContext *C, void *coba_v, void *unused_v)
+{
+ ColorBand *coba= coba_v;
+ int a;
+
+ if(coba->tot<2) return;
+
+ for(a=coba->cur; a<coba->tot; a++) {
+ coba->data[a]= coba->data[a+1];
+ }
+ if(coba->cur) coba->cur--;
+ coba->tot--;
+
+ ED_undo_push(C, "Delete colorband");
+ // XXX BIF_preview_changed(ID_TE);
+}
+
+
+/* offset aligns from bottom, standard width 300, height 115 */
+static void colorband_buttons_large(uiBlock *block, ColorBand *coba, int xoffs, int yoffs, int redraw)
+{
+ CBData *cbd;
+ uiBut *bt;
+
+ if(coba==NULL) return;
+
+ bt= uiDefBut(block, BUT, redraw, "Add", 80+xoffs,95+yoffs,37,20, 0, 0, 0, 0, 0, "Adds a new color position to the colorband");
+ uiButSetFunc(bt, colorband_add_cb, coba, NULL);
+ uiDefButS(block, NUM, redraw, "Cur:", 117+xoffs,95+yoffs,81,20, &coba->cur, 0.0, (float)(coba->tot-1), 0, 0, "Displays the active color from the colorband");
+ bt= uiDefBut(block, BUT, redraw, "Del", 199+xoffs,95+yoffs,37,20, 0, 0, 0, 0, 0, "Deletes the active position");
+ uiButSetFunc(bt, colorband_del_cb, coba, NULL);
+
+ uiDefButS(block, MENU, redraw, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4",
+ 236+xoffs, 95+yoffs, 64, 20, &coba->ipotype, 0.0, 0.0, 0, 0, "Sets interpolation type");
+
+ uiDefBut(block, BUT_COLORBAND, redraw, "", xoffs,65+yoffs,300,30, coba, 0, 0, 0, 0, "");
+
+ cbd= coba->data + coba->cur;
+
+ uiBlockBeginAlign(block);
+ bt= uiDefButF(block, NUM, redraw, "Pos", xoffs,40+yoffs,110,20, &cbd->pos, 0.0, 1.0, 10, 0, "Sets the position of the active color");
+ uiButSetFunc(bt, colorband_pos_cb, coba, NULL);
+ uiDefButF(block, COL, redraw, "", xoffs,20+yoffs,110,20, &(cbd->r), 0, 0, 0, B_BANDCOL, "");
+ uiDefButF(block, NUMSLI, redraw, "A ", xoffs,yoffs,110,20, &cbd->a, 0.0, 1.0, 10, 0, "Sets the alpha value for this position");
+
+ uiBlockBeginAlign(block);
+ uiDefButF(block, NUMSLI, redraw, "R ", 115+xoffs,40+yoffs,185,20, &cbd->r, 0.0, 1.0, B_BANDCOL, 0, "Sets the red value for the active color");
+ uiDefButF(block, NUMSLI, redraw, "G ", 115+xoffs,20+yoffs,185,20, &cbd->g, 0.0, 1.0, B_BANDCOL, 0, "Sets the green value for the active color");
+ uiDefButF(block, NUMSLI, redraw, "B ", 115+xoffs,yoffs,185,20, &cbd->b, 0.0, 1.0, B_BANDCOL, 0, "Sets the blue value for the active color");
+ uiBlockEndAlign(block);
+}
+
+static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr, int event)
+{
+ CBData *cbd;
+ uiBut *bt;
+ float unit= (butr->xmax-butr->xmin)/14.0f;
+ float xs= butr->xmin;
+
+ cbd= coba->data + coba->cur;
+
+ uiBlockBeginAlign(block);
+ uiDefButF(block, COL, event, "", xs,butr->ymin+20.0f,2.0f*unit,20, &(cbd->r), 0, 0, 0, B_BANDCOL, "");
+ uiDefButF(block, NUM, event, "A:", xs+2.0f*unit,butr->ymin+20.0f,4.0f*unit,20, &(cbd->a), 0.0f, 1.0f, 10, 2, "");
+ bt= uiDefBut(block, BUT, event, "Add", xs+6.0f*unit,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Adds a new color position to the colorband");
+ uiButSetFunc(bt, colorband_add_cb, coba, NULL);
+ bt= uiDefBut(block, BUT, event, "Del", xs+8.0f*unit,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Deletes the active position");
+ uiButSetFunc(bt, colorband_del_cb, coba, NULL);
+
+ uiDefButS(block, MENU, event, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4",
+ xs+10.0f*unit, butr->ymin+20.0f, unit*4, 20, &coba->ipotype, 0.0, 0.0, 0, 0, "Sets interpolation type");
+
+ uiDefBut(block, BUT_COLORBAND, event, "", xs,butr->ymin,butr->xmax-butr->xmin,20.0f, coba, 0, 0, 0, 0, "");
+ uiBlockEndAlign(block);
+
+}
+
+void colorband_buttons(uiBlock *block, ColorBand *coba, rctf *butr, int small)
+{
+ if(small)
+ colorband_buttons_small(block, coba, butr, 0);
+ else
+ colorband_buttons_large(block, coba, 0, 0, 0);
+}
+
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 18b39518ee6..ab8569bf47e 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -279,13 +279,11 @@ static int round_box_shadow_edges(float (*vert)[2], rcti *rect, float rad, int r
return tot;
}
-
-
-static void round_box_edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, float rad)
+/* this call has 1 extra arg to allow mask outline */
+static void round_box__edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, float rad, float radi)
{
float vec[9][2], veci[9][2];
float minx= rect->xmin, miny= rect->ymin, maxx= rect->xmax, maxy= rect->ymax;
- float radi; /* rad inner */
float minxi= minx + 1.0f; /* boundbox inner */
float maxxi= maxx - 1.0f;
float minyi= miny + 1.0f;
@@ -297,7 +295,8 @@ static void round_box_edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, flo
if(2.0f*rad > rect->ymax-rect->ymin)
rad= 0.5f*(rect->ymax-rect->ymin);
- radi= rad - 1.0f;
+ if(2.0f*(radi+1.0f) > rect->ymax-rect->ymin)
+ radi= 0.5f*(rect->ymax-rect->ymin) - 1.0f;
/* mult */
for(a=0; a<9; a++) {
@@ -422,6 +421,12 @@ static void round_box_edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, flo
wt->totvert= tot;
}
+static void round_box_edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, float rad)
+{
+ round_box__edges(wt, roundboxalign, rect, rad, rad-1.0f);
+}
+
+
/* based on button rect, return scaled array of triangles */
static void widget_num_tria(uiWidgetTrias *tria, rcti *rect, float triasize, char where)
{
@@ -536,6 +541,21 @@ static void round_box_shade_col4(char *col1, char *col2, float fac)
glColor4ubv(col);
}
+static void widgetbase_outline(uiWidgetBase *wtb)
+{
+ int a;
+
+ /* outline */
+ glBegin(GL_QUAD_STRIP);
+ for(a=0; a<wtb->totvert; a++) {
+ glVertex2fv(wtb->outer_v[a]);
+ glVertex2fv(wtb->inner_v[a]);
+ }
+ glVertex2fv(wtb->outer_v[0]);
+ glVertex2fv(wtb->inner_v[0]);
+ glEnd();
+}
+
static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
{
int j, a;
@@ -545,12 +565,14 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
/* backdrop non AA */
if(wtb->inner) {
if(wcol->shaded==0) {
+
/* filled center, solid */
glColor4ubv(wcol->inner);
glBegin(GL_POLYGON);
for(a=0; a<wtb->totvert; a++)
glVertex2fv(wtb->inner_v[a]);
glEnd();
+
}
else {
char col1[4], col2[4];
@@ -630,7 +652,8 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
static void widget_draw_icon(uiBut *but, BIFIconID icon, int blend, rcti *rect)
{
- float xs=0, ys=0, aspect, height;
+ int xs=0, ys=0;
+ float aspect, height;
/* this icon doesn't need draw... */
if(icon==ICON_BLANK1 && (but->flag & UI_ICON_SUBMENU)==0) return;
@@ -663,33 +686,36 @@ static void widget_draw_icon(uiBut *but, BIFIconID icon, int blend, rcti *rect)
if(but->flag & UI_ICON_LEFT) {
if (but->type==BUT_TOGDUAL) {
if (but->drawstr[0]) {
- xs= rect->xmin-1.0;
+ xs= rect->xmin-1;
} else {
- xs= (rect->xmin+rect->xmax- height)/2.0;
+ xs= (rect->xmin+rect->xmax- height)/2;
}
}
else if (but->block->flag & UI_BLOCK_LOOP) {
- xs= rect->xmin+1.0;
+ if(but->type==SEARCH_MENU)
+ xs= rect->xmin+4;
+ else
+ xs= rect->xmin+1;
}
else if ((but->type==ICONROW) || (but->type==ICONTEXTROW)) {
- xs= rect->xmin+3.0;
+ xs= rect->xmin+3;
}
else {
- xs= rect->xmin+4.0;
+ xs= rect->xmin+4;
}
- ys= (rect->ymin+rect->ymax- height)/2.0;
+ ys= (rect->ymin+rect->ymax- height)/2;
}
else {
- xs= (rect->xmin+rect->xmax- height)/2.0;
- ys= (rect->ymin+rect->ymax- height)/2.0;
+ xs= (rect->xmin+rect->xmax- height)/2;
+ ys= (rect->ymin+rect->ymax- height)/2;
}
UI_icon_draw_aspect_blended(xs, ys, icon, aspect, blend);
}
if(but->flag & UI_ICON_SUBMENU) {
- xs= rect->xmax-17.0;
- ys= (rect->ymin+rect->ymax- height)/2.0;
+ xs= rect->xmax-17;
+ ys= (rect->ymin+rect->ymax- height)/2;
UI_icon_draw_aspect_blended(xs, ys, ICON_RIGHTARROW_THIN, aspect, blend);
}
@@ -732,12 +758,69 @@ static void ui_text_leftclip(uiFontStyle *fstyle, uiBut *but, rcti *rect)
}
}
-static void widget_draw_text(uiFontStyle *fstyle, uiBut *but, rcti *rect)
+static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *but, rcti *rect)
{
// int transopts;
char *cpoin = NULL;
-// ui_rasterpos_safe(x, y, but->aspect);
+ uiStyleFontSet(fstyle);
+
+ if(but->editstr || (but->flag & UI_TEXT_LEFT))
+ fstyle->align= UI_STYLE_TEXT_LEFT;
+ else
+ fstyle->align= UI_STYLE_TEXT_CENTER;
+
+ /* text button selection and cursor */
+ if(but->editstr && but->pos != -1) {
+ short t, pos, ch;
+ short selsta_tmp, selend_tmp, selsta_draw, selwidth_draw;
+
+ if ((but->selend - but->selsta) > 0) {
+ /* XXX weak, why is this? (ton) */
+ t= but->str[0]?1:-2;
+
+ /* text button selection */
+ selsta_tmp = but->selsta + strlen(but->str);
+ selend_tmp = but->selend + strlen(but->str);
+
+ if(but->drawstr[0]!=0) {
+ ch= but->drawstr[selsta_tmp];
+ but->drawstr[selsta_tmp]= 0;
+
+ selsta_draw = BLF_width(but->drawstr+but->ofs) + t;
+
+ but->drawstr[selsta_tmp]= ch;
+
+ ch= but->drawstr[selend_tmp];
+ but->drawstr[selend_tmp]= 0;
+
+ selwidth_draw = BLF_width(but->drawstr+but->ofs) + t;
+
+ but->drawstr[selend_tmp]= ch;
+
+ glColor3ubv(wcol->item);
+ glRects(rect->xmin+selsta_draw+1, rect->ymin+2, rect->xmin+selwidth_draw+1, rect->ymax-2);
+ }
+ } else {
+ /* text cursor */
+ pos= but->pos+strlen(but->str);
+ if(pos >= but->ofs) {
+ if(but->drawstr[0]!=0) {
+ ch= but->drawstr[pos];
+ but->drawstr[pos]= 0;
+
+ t= BLF_width(but->drawstr+but->ofs) + 1;
+
+ but->drawstr[pos]= ch;
+ }
+ else t= 1;
+
+ glColor3ub(255,0,0);
+ glRects(rect->xmin+t, rect->ymin+2, rect->xmin+t+2, rect->ymax-2);
+ }
+ }
+ }
+ // ui_rasterpos_safe(x, y, but->aspect);
// if(but->type==IDPOIN) transopts= 0; // no translation, of course!
// else transopts= ui_translate_buttons();
@@ -747,11 +830,7 @@ static void widget_draw_text(uiFontStyle *fstyle, uiBut *but, rcti *rect)
if(cpoin) *cpoin= 0;
}
- if(but->editstr || (but->flag & UI_TEXT_LEFT))
- fstyle->align= UI_STYLE_TEXT_LEFT;
- else
- fstyle->align= UI_STYLE_TEXT_CENTER;
-
+ glColor3ubv(wcol->text);
uiStyleFontDraw(fstyle, rect, but->drawstr+but->ofs);
/* part text right aligned */
@@ -766,8 +845,6 @@ static void widget_draw_text(uiFontStyle *fstyle, uiBut *but, rcti *rect)
/* draws text and icons for buttons */
static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *but, rcti *rect)
{
- short t, pos, ch;
- short selsta_tmp, selend_tmp, selsta_draw, selwidth_draw;
if(but==NULL) return;
@@ -782,58 +859,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
widget_draw_icon(but, (BIFIconID) (but->icon+but->iconadd), 0, rect);
}
else {
-
- /* text button selection and cursor */
- if(but->editstr && but->pos != -1) {
-
- if ((but->selend - but->selsta) > 0) {
- /* text button selection */
- selsta_tmp = but->selsta + strlen(but->str);
- selend_tmp = but->selend + strlen(but->str);
- if(but->drawstr[0]!=0) {
- ch= but->drawstr[selsta_tmp];
- but->drawstr[selsta_tmp]= 0;
-
- uiStyleFontSet(fstyle);
-
- selsta_draw = BLF_width(but->drawstr+but->ofs) + 3;
-
- but->drawstr[selsta_tmp]= ch;
-
-
- ch= but->drawstr[selend_tmp];
- but->drawstr[selend_tmp]= 0;
-
- selwidth_draw = BLF_width(but->drawstr+but->ofs) + 3;
-
- but->drawstr[selend_tmp]= ch;
-
- glColor3ubv(wcol->item);
- glRects(rect->xmin+selsta_draw+1, rect->ymin+2, rect->xmin+selwidth_draw+1, rect->ymax-2);
- }
- } else {
- /* text cursor */
- pos= but->pos+strlen(but->str);
- if(pos >= but->ofs) {
- if(but->drawstr[0]!=0) {
- ch= but->drawstr[pos];
- but->drawstr[pos]= 0;
-
- uiStyleFontSet(fstyle);
-
- t= BLF_width(but->drawstr+but->ofs) + 3;
-
- but->drawstr[pos]= ch;
- }
- else t= 3;
-
- glColor3ub(255,0,0);
- glRects(rect->xmin+t, rect->ymin+2, rect->xmin+t+2, rect->ymax-2);
- }
- }
- }
-
if(but->type==BUT_TOGDUAL) {
int dualset= 0;
if(but->pointype==SHO)
@@ -844,30 +870,23 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
widget_draw_icon(but, ICON_DOT, dualset?0:-100, rect);
}
- if(but->drawstr[0]!=0) {
+ /* If there's an icon too (made with uiDefIconTextBut) then draw the icon
+ and offset the text label to accomodate it */
+
+ if (but->flag & UI_HAS_ICON) {
+ widget_draw_icon(but, but->icon, 0, rect);
- /* If there's an icon too (made with uiDefIconTextBut) then draw the icon
- and offset the text label to accomodate it */
+ rect->xmin += UI_icon_get_width(but->icon);
- if (but->flag & UI_HAS_ICON) {
- widget_draw_icon(but, but->icon, 0, rect);
-
- rect->xmin += UI_icon_get_width(but->icon);
-
- if(but->editstr || (but->flag & UI_TEXT_LEFT))
- rect->xmin += 5;
- }
- else if(but->flag & UI_TEXT_LEFT)
+ if(but->editstr || (but->flag & UI_TEXT_LEFT))
rect->xmin += 5;
-
- glColor3ubv(wcol->text);
- widget_draw_text(fstyle, but, rect);
-
- }
- /* if there's no text label, then check to see if there's an icon only and draw it */
- else if( but->flag & UI_HAS_ICON ) {
- widget_draw_icon(but, (BIFIconID) (but->icon+but->iconadd), 0, rect);
}
+ else if(but->flag & UI_TEXT_LEFT)
+ rect->xmin += 5;
+
+ /* always draw text for textbutton cursor */
+ widget_draw_text(fstyle, wcol, but, rect);
+
}
}
@@ -1005,11 +1024,11 @@ static struct uiWidgetColors wcol_menu_item= {
static struct uiWidgetColors wcol_menu_back= {
{0, 0, 0, 255},
{25, 25, 25, 230},
- {46, 124, 217, 204},
+ {45, 45, 45, 230},
{255, 255, 255, 255},
{255, 255, 255, 255},
- {0, 0, 0, 255},
+ {255, 255, 255, 255},
0,
25, -20
@@ -1055,6 +1074,20 @@ static struct uiWidgetColors wcol_tool= {
25, -25
};
+static struct uiWidgetColors wcol_box= {
+ {25, 25, 25, 255},
+ {128, 128, 128, 255},
+ {100, 100, 100, 255},
+ {25, 25, 25, 255},
+
+ {0, 0, 0, 255},
+ {255, 255, 255, 255},
+
+ 0,
+ 0, 0
+};
+
+
/* called for theme init (new theme) and versions */
void ui_widget_color_init(ThemeUI *tui)
{
@@ -1070,6 +1103,7 @@ void ui_widget_color_init(ThemeUI *tui)
tui->wcol_pulldown= wcol_pulldown;
tui->wcol_menu_back= wcol_menu_back;
tui->wcol_menu_item= wcol_menu_item;
+ tui->wcol_box= wcol_box;
tui->iconfile[0]= 0;
}
@@ -1145,7 +1179,7 @@ static void widget_state_menu_item(uiWidgetType *wt, int state)
{
wt->wcol= *(wt->wcol_theme);
- if(state & UI_BUT_DISABLED) {
+ if(state & (UI_BUT_DISABLED|UI_BUT_INACTIVE)) {
wt->wcol.text[0]= 0.5f*(wt->wcol.text[0]+wt->wcol.text_sel[0]);
wt->wcol.text[1]= 0.5f*(wt->wcol.text[1]+wt->wcol.text_sel[1]);
wt->wcol.text[2]= 0.5f*(wt->wcol.text[2]+wt->wcol.text_sel[2]);
@@ -1206,8 +1240,8 @@ static void widget_menu_back(uiWidgetColors *wcol, rcti *rect, int flag, int dir
/* menu is 2nd level or deeper */
if (flag & UI_BLOCK_POPUP) {
- rect->ymin -= 4.0;
- rect->ymax += 4.0;
+ //rect->ymin -= 4.0;
+ //rect->ymax += 4.0;
}
else if (direction == UI_DOWN) {
roundboxalign= 12;
@@ -1230,6 +1264,71 @@ static void widget_menu_back(uiWidgetColors *wcol, rcti *rect, int flag, int dir
/* ************ custom buttons, old stuff ************** */
+static void ui_hsvcircle_to_val(float *valrad, float *valdist, rcti *rect, float mx, float my)
+{
+ /* duplication of code... well, simple is better now */
+ float centx= (float)(rect->xmin + rect->xmax)/2;
+ float centy= (float)(rect->ymin + rect->ymax)/2;
+ float radius, dist;
+
+ if( rect->xmax-rect->xmin > rect->ymax-rect->ymin )
+ radius= (float)(rect->ymax - rect->ymin)/2;
+ else
+ radius= (float)(rect->xmax - rect->xmin)/2;
+
+ mx-= centx;
+ my-= centy;
+ dist= sqrt( mx*mx + my*my);
+ if(dist < radius)
+ *valdist= dist/radius;
+ else
+ *valdist= 1.0f;
+
+ *valrad= atan2(mx, my)/(2.0f*M_PI) + 0.5f;
+}
+
+void ui_draw_but_HSVCIRCLE(uiBut *but, rcti *rect)
+{
+ /* gouraud triangle fan */
+ float radstep, ang= 0.0f;
+ float centx, centy, radius;
+ float hsv[3], col[3], colcent[3];
+ int a, tot= 32;
+
+ radstep= 2.0f*M_PI/(float)tot;
+ centx= (float)(rect->xmin + rect->xmax)/2;
+ centy= (float)(rect->ymin + rect->ymax)/2;
+
+ if( rect->xmax-rect->xmin > rect->ymax-rect->ymin )
+ radius= (float)(rect->ymax - rect->ymin)/2;
+ else
+ radius= (float)(rect->xmax - rect->xmin)/2;
+
+ /* color */
+ VECCOPY(hsv, but->hsv);
+ hsv[0]= hsv[1]= 0.0f;
+ hsv_to_rgb(hsv[0], hsv[1], hsv[2], colcent, colcent+1, colcent+2);
+
+ glShadeModel(GL_SMOOTH);
+
+ glBegin(GL_TRIANGLE_FAN);
+ glColor3fv(colcent);
+ glVertex2f( centx, centy);
+
+ for(a=0; a<=tot; a++, ang+=radstep) {
+ float si= sin(ang);
+ float co= cos(ang);
+
+ ui_hsvcircle_to_val(hsv, hsv+1, rect, centx + co*radius, centy + si*radius);
+ hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2);
+ glColor3fv(col);
+ glVertex2f( centx + co*radius, centy + si*radius);
+ }
+ glEnd();
+
+ glShadeModel(GL_FLAT);
+}
+
/* draws in resolution of 20x4 colors */
static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect)
{
@@ -1352,11 +1451,12 @@ static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect)
static void widget_numbut(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
{
uiWidgetBase wtb;
+ float rad= 0.5f*(rect->ymax - rect->ymin);
widget_init(&wtb);
/* fully rounded */
- round_box_edges(&wtb, roundboxalign, rect, 0.5f*(rect->ymax - rect->ymin));
+ round_box_edges(&wtb, roundboxalign, rect, rad);
/* decoration */
if(!(state & UI_TEXTINPUT)) {
@@ -1378,7 +1478,6 @@ static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int s
double value;
float offs, fac;
char outline[3];
- int slideralign;
widget_init(&wtb);
widget_init(&wtb1);
@@ -1393,20 +1492,30 @@ static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int s
widgetbase_draw(&wtb, wcol);
/* slider part */
+ VECCOPY(outline, wcol->outline);
+ VECCOPY(wcol->outline, wcol->item);
+ VECCOPY(wcol->inner, wcol->item);
+ SWAP(short, wcol->shadetop, wcol->shadedown);
+
rect1= *rect;
value= ui_get_but_val(but);
fac= (value-but->softmin)*(rect1.xmax - rect1.xmin - offs)/(but->softmax - but->softmin);
- rect1.xmax= rect1.xmin + fac + offs;
- slideralign = roundboxalign;
- slideralign &= ~(2|4);
- round_box_edges(&wtb1, slideralign, &rect1, offs);
+ /* left part of slider, always rounded */
+ rect1.xmax= rect1.xmin + ceil(offs+1.0f);
+ round_box_edges(&wtb1, roundboxalign & ~6, &rect1, offs);
+ wtb1.outline= 0;
+ widgetbase_draw(&wtb1, wcol);
- VECCOPY(outline, wcol->outline);
- VECCOPY(wcol->outline, wcol->item);
- VECCOPY(wcol->inner, wcol->item);
- SWAP(short, wcol->shadetop, wcol->shadedown);
+ /* right part of slider, interpolate roundness */
+ rect1.xmax= rect1.xmin + fac + offs;
+ rect1.xmin+= floor(offs-1.0f);
+ if(rect1.xmax + offs > rect->xmax)
+ offs*= (rect1.xmax + offs - rect->xmax)/offs;
+ else
+ offs= 0.0f;
+ round_box_edges(&wtb1, roundboxalign & ~9, &rect1, offs);
widgetbase_draw(&wtb1, wcol);
VECCOPY(wcol->outline, outline);
@@ -1417,6 +1526,10 @@ static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int s
wtb.inner= 0;
widgetbase_draw(&wtb, wcol);
+ /* text space */
+ rect->xmin += (rect->ymax-rect->ymin);
+ rect->xmax -= (rect->ymax-rect->ymin);
+
}
static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
@@ -1446,7 +1559,7 @@ static void widget_textbut(uiWidgetColors *wcol, rcti *rect, int state, int roun
widget_init(&wtb);
/* half rounded */
- round_box_edges(&wtb, roundboxalign, rect, 4.0f);
+ round_box_edges(&wtb, roundboxalign, rect, 5.0f);
widgetbase_draw(&wtb, wcol);
@@ -1476,11 +1589,12 @@ static void widget_pulldownbut(uiWidgetColors *wcol, rcti *rect, int state, int
{
if(state & UI_ACTIVE) {
uiWidgetBase wtb;
+ float rad= 0.5f*(rect->ymax - rect->ymin);
widget_init(&wtb);
/* fully rounded */
- round_box_edges(&wtb, roundboxalign, rect, 0.5f*(rect->ymax - rect->ymin));
+ round_box_edges(&wtb, roundboxalign, rect, rad);
widgetbase_draw(&wtb, wcol);
}
@@ -1562,15 +1676,47 @@ static void widget_but(uiWidgetColors *wcol, rcti *rect, int state, int roundbox
static void widget_roundbut(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
{
uiWidgetBase wtb;
+ float rad= 0.5f*(rect->ymax - rect->ymin);
widget_init(&wtb);
/* fully rounded */
- round_box_edges(&wtb, roundboxalign, rect, 0.5f*(rect->ymax - rect->ymin));
+ round_box_edges(&wtb, roundboxalign, rect, rad);
widgetbase_draw(&wtb, wcol);
}
+static void widget_draw_extra_mask(const bContext *C, uiBut *but, uiWidgetType *wt, rcti *rect)
+{
+ uiWidgetBase wtb;
+ char col[4];
+
+ /* state copy! */
+ wt->wcol= *(wt->wcol_theme);
+
+ widget_init(&wtb);
+
+ if(but->block->drawextra) {
+ /* note: drawextra can change rect +1 or -1, to match round errors of existing previews */
+ but->block->drawextra(C, but->poin, rect);
+
+ /* make mask to draw over image */
+ UI_GetThemeColor3ubv(TH_BACK, col);
+ glColor3ubv(col);
+
+ round_box__edges(&wtb, 15, rect, 0.0f, 4.0);
+ widgetbase_outline(&wtb);
+ }
+
+ /* outline */
+ round_box_edges(&wtb, 15, rect, 5.0f);
+ wtb.outline= 1;
+ wtb.inner= 0;
+ widgetbase_draw(&wtb, &wt->wcol);
+
+}
+
+
static void widget_disabled(rcti *rect)
{
float col[4];
@@ -1688,6 +1834,10 @@ static uiWidgetType *widget_type(uiWidgetTypeEnum type)
wt.custom= widget_swatch;
break;
+ case UI_WTYPE_BOX:
+ wt.wcol_theme= &btheme->tui.wcol_box;
+ break;
+
case UI_WTYPE_RGB_PICKER:
break;
@@ -1745,7 +1895,7 @@ static int widget_roundbox_set(uiBut *but, rcti *rect)
}
/* conversion from old to new buttons, so still messy */
-void ui_draw_but(ARegion *ar, uiStyle *style, uiBut *but, rcti *rect)
+void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rcti *rect)
{
bTheme *btheme= U.themes.first;
ThemeUI *tui= &btheme->tui;
@@ -1798,12 +1948,19 @@ void ui_draw_but(ARegion *ar, uiStyle *style, uiBut *but, rcti *rect)
case TEX:
wt= widget_type(UI_WTYPE_NAME);
break;
- case TOGBUT:
- wt= widget_type(UI_WTYPE_TOGGLE);
+ case SEARCH_MENU:
+ wt= widget_type(UI_WTYPE_NAME);
+ if(but->block->flag & UI_BLOCK_LOOP)
+ wt->wcol_theme= &btheme->tui.wcol_menu_back;
break;
+ case TOGBUT:
case TOG:
case TOGN:
case TOG3:
+ wt= widget_type(UI_WTYPE_TOGGLE);
+ break;
+ case OPTION:
+ case OPTIONN:
if (!(but->flag & UI_HAS_ICON)) {
wt= widget_type(UI_WTYPE_OPTION);
but->flag |= UI_TEXT_LEFT;
@@ -1818,7 +1975,6 @@ void ui_draw_but(ARegion *ar, uiStyle *style, uiBut *but, rcti *rect)
break;
case PULLDOWN:
- case HMENU:
wt= widget_type(UI_WTYPE_PULLDOWN);
break;
@@ -1829,7 +1985,15 @@ void ui_draw_but(ARegion *ar, uiStyle *style, uiBut *but, rcti *rect)
case COL:
wt= widget_type(UI_WTYPE_SWATCH);
break;
+
+ case ROUNDBOX:
+ wt= widget_type(UI_WTYPE_BOX);
+ break;
+ case BUT_EXTRA:
+ widget_draw_extra_mask(C, but, widget_type(UI_WTYPE_BOX), rect);
+ break;
+
// XXX four old button types
case HSVCUBE:
ui_draw_but_HSVCUBE(but, rect);
@@ -1864,7 +2028,7 @@ void ui_draw_but(ARegion *ar, uiStyle *style, uiBut *but, rcti *rect)
wt->draw(&wt->wcol, rect, state, roundboxalign);
wt->text(fstyle, &wt->wcol, but, rect);
- if(state & UI_BUT_DISABLED)
+ if(state & (UI_BUT_DISABLED|UI_BUT_INACTIVE))
if(but->dt!=UI_EMBOSSP)
widget_disabled(&disablerect);
}
@@ -1882,4 +2046,60 @@ void ui_draw_menu_back(uiStyle *style, uiBlock *block, rcti *rect)
}
+void ui_draw_search_back(uiStyle *style, uiBlock *block, rcti *rect)
+{
+ uiWidgetType *wt= widget_type(UI_WTYPE_BOX);
+
+ glEnable(GL_BLEND);
+ widget_softshadow(rect, 15, 5.0f, 8.0f);
+ glDisable(GL_BLEND);
+
+ wt->state(wt, 0);
+ if(block)
+ wt->draw(&wt->wcol, rect, block->flag, 15);
+ else
+ wt->draw(&wt->wcol, rect, 0, 15);
+
+}
+
+
+/* helper call to draw a menu item without button */
+/* state: UI_ACTIVE or 0 */
+void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, char *name, int state)
+{
+ uiWidgetType *wt= widget_type(UI_WTYPE_MENU_ITEM);
+ rcti _rect= *rect;
+ char *cpoin;
+
+ wt->state(wt, state);
+ wt->draw(&wt->wcol, rect, 0, 0);
+
+ uiStyleFontSet(fstyle);
+ fstyle->align= UI_STYLE_TEXT_LEFT;
+
+ /* text location offset */
+ rect->xmin+=5;
+
+ /* cut string in 2 parts? */
+ cpoin= strchr(name, '|');
+ if(cpoin) {
+ *cpoin= 0;
+ rect->xmax -= BLF_width(cpoin+1) + 10;
+ }
+
+ glColor3ubv(wt->wcol.text);
+ uiStyleFontDraw(fstyle, rect, name);
+
+ /* part text right aligned */
+ if(cpoin) {
+ fstyle->align= UI_STYLE_TEXT_RIGHT;
+ rect->xmax= _rect.xmax - 5;
+ uiStyleFontDraw(fstyle, rect, cpoin+1);
+ *cpoin= '|';
+ }
+
+ /* restore rect, was messed with */
+ *rect= _rect;
+
+}
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index f2fc2deefbb..4621be6eda0 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -1289,12 +1289,16 @@ static void scroll_printstr(View2DScrollers *scrollers, Scene *scene, float x, f
/* get string to print */
if (unit == V2D_UNIT_SECONDS) {
- /* SMPTE timecode style:
+ /* Timecode:
* - In general, minutes and seconds should be shown, as most clips will be
* within this length. Hours will only be included if relevant.
* - Only show frames when zoomed in enough for them to be relevant
- * (using separator convention of ';' for frames, ala QuickTime).
+ * (using separator of '!' for frames).
* When showing frames, use slightly different display to avoid confusion with mm:ss format
+ * TODO: factor into reusable function.
+ * Meanwhile keep in sync:
+ * source/blender/editors/animation/anim_draw.c
+ * source/blender/editors/interface/view2d.c
*/
int hours=0, minutes=0, seconds=0, frames=0;
char neg[2]= "";
@@ -1335,9 +1339,9 @@ static void scroll_printstr(View2DScrollers *scrollers, Scene *scene, float x, f
/* print timecode to temp string buffer */
if (power <= 0) {
/* include "frames" in display */
- if (hours) sprintf(str, "%s%02d:%02d:%02d;%02d", neg, hours, minutes, seconds, frames);
- else if (minutes) sprintf(str, "%s%02d:%02d;%02d", neg, minutes, seconds, frames);
- else sprintf(str, "%s%d;%02d", neg, seconds, frames);
+ if (hours) sprintf(str, "%s%02d:%02d:%02d!%02d", neg, hours, minutes, seconds, frames);
+ else if (minutes) sprintf(str, "%s%02d:%02d!%02d", neg, minutes, seconds, frames);
+ else sprintf(str, "%s%d!%02d", neg, seconds, frames);
}
else {
/* don't include 'frames' in display */
@@ -1939,3 +1943,85 @@ short UI_view2d_mouse_in_scrollers (const bContext *C, View2D *v2d, int x, int y
return 0;
}
+/* ******************* view2d text drawing cache ******************** */
+
+/* assumes caches are used correctly, so for time being no local storage in v2d */
+static ListBase strings= {NULL, NULL};
+
+typedef struct View2DString {
+ struct View2DString *next, *prev;
+ float col[4];
+ char str[128];
+ short mval[2];
+ rcti rect;
+} View2DString;
+
+
+void UI_view2d_text_cache_add(View2D *v2d, float x, float y, char *str)
+{
+ int mval[2];
+
+ UI_view2d_view_to_region(v2d, x, y, mval, mval+1);
+
+ if(mval[0]!=V2D_IS_CLIPPED && mval[1]!=V2D_IS_CLIPPED) {
+ /* use calloc, rect has to be zeroe'd */
+ View2DString *v2s= MEM_callocN(sizeof(View2DString), "View2DString");
+
+ BLI_addtail(&strings, v2s);
+ BLI_strncpy(v2s->str, str, 128);
+ v2s->mval[0]= mval[0];
+ v2s->mval[1]= mval[1];
+ glGetFloatv(GL_CURRENT_COLOR, v2s->col);
+ }
+}
+
+/* no clip (yet) */
+void UI_view2d_text_cache_rectf(View2D *v2d, rctf *rect, char *str)
+{
+ View2DString *v2s= MEM_callocN(sizeof(View2DString), "View2DString");
+
+ UI_view2d_to_region_no_clip(v2d, rect->xmin, rect->ymin, &v2s->rect.xmin, &v2s->rect.ymin);
+ UI_view2d_to_region_no_clip(v2d, rect->xmax, rect->ymax, &v2s->rect.xmax, &v2s->rect.ymax);
+
+ BLI_addtail(&strings, v2s);
+ BLI_strncpy(v2s->str, str, 128);
+ glGetFloatv(GL_CURRENT_COLOR, v2s->col);
+}
+
+
+void UI_view2d_text_cache_draw(ARegion *ar)
+{
+ View2DString *v2s;
+
+ // wmPushMatrix();
+ ED_region_pixelspace(ar);
+
+ for(v2s= strings.first; v2s; v2s= v2s->next) {
+ glColor3fv(v2s->col);
+ if(v2s->rect.xmin==v2s->rect.xmax)
+ BLF_draw_default((float)v2s->mval[0], (float)v2s->mval[1], 0.0, v2s->str);
+ else {
+ int xofs=0, yofs;
+
+ yofs= ceil( 0.5f*(v2s->rect.ymax - v2s->rect.ymin - BLF_height_default("28")));
+ if(yofs<1) yofs= 1;
+
+ BLF_clipping(v2s->rect.xmin-4, v2s->rect.ymin-4, v2s->rect.xmax+4, v2s->rect.ymax+4);
+ BLF_enable(BLF_CLIPPING);
+
+ BLF_draw_default(v2s->rect.xmin+xofs, v2s->rect.ymin+yofs, 0.0f, v2s->str);
+
+ BLF_disable(BLF_CLIPPING);
+ }
+ }
+
+ // wmPopMatrix();
+
+ if(strings.first)
+ BLI_freelistN(&strings);
+}
+
+
+/* ******************************************************** */
+
+
diff --git a/source/blender/editors/mesh/editdeform.c b/source/blender/editors/mesh/editdeform.c
index 3019aabf371..3ccd4d56ece 100644
--- a/source/blender/editors/mesh/editdeform.c
+++ b/source/blender/editors/mesh/editdeform.c
@@ -223,11 +223,10 @@ void duplicate_defgroup ( Object *ob )
bDeformGroup *dg, *cdg;
char name[32], s[32];
MDeformWeight *org, *cpy;
- MDeformVert *dvert;
- Mesh *me;
- int i, idg, icdg;
+ MDeformVert *dvert, *dvert_array;
+ int i, idg, icdg, dvert_tot;
- if (ob->type != OB_MESH)
+ if (ob->type != OB_MESH && ob->type != OB_LATTICE)
return;
dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
@@ -258,16 +257,28 @@ void duplicate_defgroup ( Object *ob )
ob->actdef = BLI_countlist (&ob->defbase);
icdg = (ob->actdef-1);
- me = get_mesh (ob);
- if (!me->dvert)
+ if(ob->type == OB_MESH) {
+ Mesh *me = get_mesh (ob);
+ dvert_array= me->dvert;
+ dvert_tot= me->totvert;
+ }
+ else if (ob->type == OB_LATTICE) {
+ Lattice *lt= (Lattice *)ob->data;
+ dvert_array= lt->dvert;
+ dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+ }
+
+ if (!dvert_array)
return;
- for (i = 0; i < me->totvert; i++) {
- dvert = me->dvert+i;
+ for (i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array+i;
org = get_defweight (dvert, idg);
if (org) {
+ float weight = org->weight;
+ /* verify_defweight re-allocs org so need to store the weight first */
cpy = verify_defweight (dvert, icdg);
- cpy->weight = org->weight;
+ cpy->weight = weight;
}
}
}
@@ -335,29 +346,39 @@ static void del_defgroup_update_users(Object *ob, int id)
void del_defgroup_in_object_mode ( Object *ob )
{
bDeformGroup *dg;
- MDeformVert *dvert;
- Mesh *me;
- int i, e;
+ MDeformVert *dvert_array, *dvert;
+
+ int i, e, dvert_tot;
- if ((!ob) || (ob->type != OB_MESH))
+ if ((!ob) || (ob->type != OB_MESH && ob->type != OB_LATTICE))
return;
+ if(ob->type == OB_MESH) {
+ Mesh *me = get_mesh (ob);
+ dvert_array= me->dvert;
+ dvert_tot= me->totvert;
+ }
+ else if (ob->type == OB_LATTICE) {
+ Lattice *lt= (Lattice *)ob->data;
+ dvert_array= lt->dvert;
+ dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+ }
+
dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
if (!dg)
return;
-
- me = get_mesh (ob);
- if (me->dvert) {
- for (i = 0; i < me->totvert; i++) {
- dvert = me->dvert + i;
+
+ if (dvert_array) {
+ for (i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array + i;
if (dvert) {
if (get_defweight (dvert, (ob->actdef-1)))
remove_vert_defgroup (ob, dg, i);
}
}
- for (i = 0; i < me->totvert; i++) {
- dvert = me->dvert+i;
+ for (i = 0; i < dvert_tot; i++) {
+ dvert = dvert_array+i;
if (dvert) {
for (e = 0; e < dvert->totweight; e++) {
if (dvert->dw[e].def_nr > (ob->actdef-1))
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index de4e1f67482..2f4c3d1890e 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -859,27 +859,26 @@ void MESH_OT_extrude_repeat(wmOperatorType *ot)
}
#endif
/* ************************** spin operator ******************** */
-
-static int spin_mesh(bContext *C, float *dvec, int steps, float degr, int dupli )
+
+
+static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float degr, int dupli )
{
Object *obedit= CTX_data_edit_object(C);
- View3D *v3d = CTX_wm_view3d(C);
Scene *scene = CTX_data_scene(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
EditVert *eve,*nextve;
float nor[3]= {0.0f, 0.0f, 0.0f};
- float *curs, si, n[3], q[4], cmat[3][3], imat[3][3], tmat[3][3];
+ float si, n[3], q[4], cmat[3][3], imat[3][3], tmat[3][3];
float cent[3], bmat[3][3];
float phi;
short a, ok= 1;
+ RNA_float_get_array(op->ptr, "center", cent);
+
/* imat and center and size */
Mat3CpyMat4(bmat, obedit->obmat);
Mat3Inv(imat,bmat);
- curs= give_cursor(scene, v3d);
- VECCOPY(cent, curs);
cent[0]-= obedit->obmat[3][0];
cent[1]-= obedit->obmat[3][1];
cent[2]-= obedit->obmat[3][2];
@@ -889,15 +888,7 @@ static int spin_mesh(bContext *C, float *dvec, int steps, float degr, int dupli
phi/= steps;
if(scene->toolsettings->editbutflag & B_CLOCKWISE) phi= -phi;
- if(dvec) {
- n[0]= rv3d->viewinv[1][0];
- n[1]= rv3d->viewinv[1][1];
- n[2]= rv3d->viewinv[1][2];
- } else {
- n[0]= rv3d->viewinv[2][0];
- n[1]= rv3d->viewinv[2][1];
- n[2]= rv3d->viewinv[2][2];
- }
+ RNA_float_get_array(op->ptr, "axis", n);
Normalize(n);
q[0]= (float)cos(phi);
@@ -959,7 +950,7 @@ static int spin_mesh_exec(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- ok= spin_mesh(C, NULL, RNA_int_get(op->ptr,"steps"), RNA_float_get(op->ptr,"degrees"), RNA_boolean_get(op->ptr,"dupli"));
+ ok= spin_mesh(C, op, NULL, RNA_int_get(op->ptr,"steps"), RNA_float_get(op->ptr,"degrees"), RNA_boolean_get(op->ptr,"dupli"));
if(ok==0) {
BKE_report(op->reports, RPT_ERROR, "No valid vertices are selected");
return OPERATOR_CANCELLED;
@@ -967,6 +958,19 @@ static int spin_mesh_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+/* get center and axis, in global coords */
+static int spin_mesh_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ Scene *scene = CTX_data_scene(C);
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+
+ RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d));
+ RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[2]);
+
+ return spin_mesh_exec(C, op);
+}
+
void MESH_OT_spin(wmOperatorType *ot)
{
/* identifiers */
@@ -974,16 +978,21 @@ void MESH_OT_spin(wmOperatorType *ot)
ot->idname= "MESH_OT_spin";
/* api callbacks */
+ ot->invoke= spin_mesh_invoke;
ot->exec= spin_mesh_exec;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /*props */
+ /* props */
RNA_def_int(ot->srna, "steps", 9, 0, INT_MAX, "Steps", "Steps", 0, INT_MAX);
RNA_def_boolean(ot->srna, "dupli", 0, "Dupli", "Make Duplicates");
RNA_def_float(ot->srna, "degrees", 90.0f, -FLT_MAX, FLT_MAX, "Degrees", "Degrees", -360.0f, 360.0f);
+
+ RNA_def_float_vector(ot->srna, "center", 3, NULL, -FLT_MAX, FLT_MAX, "Center", "Center in global view space", -FLT_MAX, FLT_MAX);
+ RNA_def_float_vector(ot->srna, "axis", 3, NULL, -1.0f, 1.0f, "Axis", "Axis in global view space", -FLT_MAX, FLT_MAX);
+
}
static int screw_mesh_exec(bContext *C, wmOperator *op)
@@ -1042,7 +1051,7 @@ static int screw_mesh_exec(bContext *C, wmOperator *op)
dvec[2]= -dvec[2];
}
- if(spin_mesh(C, dvec, turns*steps, 360.0f*turns, 0)) {
+ if(spin_mesh(C, op, dvec, turns*steps, 360.0f*turns, 0)) {
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
@@ -1056,6 +1065,19 @@ static int screw_mesh_exec(bContext *C, wmOperator *op)
BKE_mesh_end_editmesh(obedit->data, em);
}
+/* get center and axis, in global coords */
+static int screw_mesh_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ Scene *scene = CTX_data_scene(C);
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+
+ RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d));
+ RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[1]);
+
+ return screw_mesh_exec(C, op);
+}
+
void MESH_OT_screw(wmOperatorType *ot)
{
/* identifiers */
@@ -1063,6 +1085,7 @@ void MESH_OT_screw(wmOperatorType *ot)
ot->idname= "MESH_OT_screw";
/* api callbacks */
+ ot->invoke= screw_mesh_invoke;
ot->exec= screw_mesh_exec;
ot->poll= ED_operator_editmesh;
@@ -1072,6 +1095,9 @@ void MESH_OT_screw(wmOperatorType *ot)
/*props */
RNA_def_int(ot->srna, "steps", 9, 0, INT_MAX, "Steps", "Steps", 0, 256);
RNA_def_int(ot->srna, "turns", 1, 0, INT_MAX, "Turns", "Turns", 0, 256);
+
+ RNA_def_float_vector(ot->srna, "center", 3, NULL, -FLT_MAX, FLT_MAX, "Center", "Center in global view space", -FLT_MAX, FLT_MAX);
+ RNA_def_float_vector(ot->srna, "axis", 3, NULL, -1.0f, 1.0f, "Axis", "Axis in global view space", -FLT_MAX, FLT_MAX);
}
static void erase_edges(EditMesh *em, ListBase *l)
@@ -1128,7 +1154,6 @@ static int delete_mesh(Object *obedit, wmOperator *op, int event, Scene *scene)
EditVert *eve,*nextve;
EditEdge *eed,*nexted;
int count;
- char *str="Erase";
if(event<1) return OPERATOR_CANCELLED;
@@ -1136,7 +1161,7 @@ static int delete_mesh(Object *obedit, wmOperator *op, int event, Scene *scene)
em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
if(event==10 ) {
- str= "Erase Vertices";
+ //"Erase Vertices";
erase_edges(em, &em->edges);
erase_faces(em, &em->faces);
erase_vertices(em, &em->verts);
@@ -1145,22 +1170,22 @@ static int delete_mesh(Object *obedit, wmOperator *op, int event, Scene *scene)
BKE_mesh_end_editmesh(obedit->data, em);
}
else if(event==7) {
+ //"Dissolve Verts"
if (!EDBM_CallOpf(bem, op, "dissolveverts verts=%hv",BM_SELECT))
return OPERATOR_CANCELLED;
}
else if(event==6) {
+ //"Erase Edge Loop";
if(!EdgeLoopDelete(em, op)) {
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
}
- str= "Erase Edge Loop";
-
EM_fgon_flags(em); // redo flags and indices for fgons
BKE_mesh_end_editmesh(obedit->data, em);
}
else if(event==4) {
- str= "Erase Edges & Faces";
+ //"Erase Edges & Faces";
efa= em->faces.first;
while(efa) {
nextvl= efa->next;
@@ -1205,7 +1230,7 @@ static int delete_mesh(Object *obedit, wmOperator *op, int event, Scene *scene)
BKE_mesh_end_editmesh(obedit->data, em);
}
else if(event==1) {
- str= "Erase Edges";
+ //"Erase Edges";
// faces first
efa= em->faces.first;
while(efa) {
@@ -1252,14 +1277,14 @@ static int delete_mesh(Object *obedit, wmOperator *op, int event, Scene *scene)
BKE_mesh_end_editmesh(obedit->data, em);
}
else if(event==2) {
- str="Erase Faces";
+ //"Erase Faces";
delfaceflag(em, SELECT);
EM_fgon_flags(em); // redo flags and indices for fgons
BKE_mesh_end_editmesh(obedit->data, em);
}
else if(event==3) {
- str= "Erase All";
+ //"Erase All";
if(em->verts.first) free_vertlist(em, &em->verts);
if(em->edges.first) free_edgelist(em, &em->edges);
if(em->faces.first) free_facelist(em, &em->faces);
@@ -1269,10 +1294,10 @@ static int delete_mesh(Object *obedit, wmOperator *op, int event, Scene *scene)
BKE_mesh_end_editmesh(obedit->data, em);
}
else if(event==5) {
+ //"Erase Only Faces";
if (!EDBM_CallOpf(bem, op, "del geom=%hf context=%d",
BM_SELECT, DEL_ONLYFACES))
return OPERATOR_CANCELLED;
- str= "Erase Only Faces";
}
DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c
index 5dbb402f8b4..56417ec4c08 100644
--- a/source/blender/editors/mesh/meshtools.c
+++ b/source/blender/editors/mesh/meshtools.c
@@ -616,9 +616,9 @@ static void mesh_octree_add_nodes(MocNode **basetable, float *co, float *offs, f
float fx, fy, fz;
int vx, vy, vz;
- if (isnan(co[0]) || !finite(co[0]) ||
- isnan(co[1]) || !finite(co[1]) ||
- isnan(co[2]) || !finite(co[2])
+ if (!finite(co[0]) ||
+ !finite(co[1]) ||
+ !finite(co[2])
) {
return;
}
@@ -839,9 +839,9 @@ BMVert *editmesh_get_x_mirror_vert(Object *ob, BMEditMesh *em, float *co)
intptr_t poinval;
/* ignore nan verts */
- if (isnan(co[0]) || !finite(co[0]) ||
- isnan(co[1]) || !finite(co[1]) ||
- isnan(co[2]) || !finite(co[2])
+ if (!finite(co[0]) ||
+ !finite(co[1]) ||
+ !finite(co[2])
)
return NULL;
diff --git a/source/blender/editors/object/editconstraint.c b/source/blender/editors/object/editconstraint.c
index d0e487f98c7..ff2f79e7cdb 100644
--- a/source/blender/editors/object/editconstraint.c
+++ b/source/blender/editors/object/editconstraint.c
@@ -49,17 +49,27 @@
#include "BKE_action.h"
#include "BKE_armature.h"
#include "BKE_constraint.h"
+#include "BKE_context.h"
#include "BKE_depsgraph.h"
#include "BKE_global.h"
#include "BKE_main.h"
#include "BKE_object.h"
+#include "BKE_report.h"
#include "BKE_utildefines.h"
#ifndef DISABLE_PYTHON
#include "BPY_extern.h"
#endif
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+#include "RNA_enum_types.h"
+
#include "ED_object.h"
+#include "ED_screen.h"
#include "object_intern.h"
@@ -589,55 +599,6 @@ void ob_clear_constraints (Scene *scene)
BIF_undo_push("Clear Constraint(s)");
}
-/* Rename the given constraint
- * - con already has the new name
- */
-void rename_constraint (Object *ob, bConstraint *con, char *oldname)
-{
- bConstraint *tcon;
- ListBase *conlist= NULL;
- int from_object= 0;
- char *channame="";
-
- /* get context by searching for con (primitive...) */
- for (tcon= ob->constraints.first; tcon; tcon= tcon->next) {
- if (tcon==con)
- break;
- }
-
- if (tcon) {
- conlist= &ob->constraints;
- channame= "Object";
- from_object= 1;
- }
- else if (ob->pose) {
- bPoseChannel *pchan;
-
- for (pchan=ob->pose->chanbase.first; pchan; pchan=pchan->next) {
- for (tcon= pchan->constraints.first; tcon; tcon= tcon->next) {
- if (tcon==con)
- break;
- }
- if (tcon)
- break;
- }
-
- if (tcon) {
- conlist= &pchan->constraints;
- channame= pchan->name;
- }
- }
-
- if (conlist==NULL) {
- printf("rename constraint failed\n"); /* should not happen in UI */
- return;
- }
-
- /* first make sure it's a unique name within context */
- unique_constraint_name (con, conlist);
-}
-
-
/* ------------- Constraint Sanity Testing ------------------- */
/* checks validity of object pointers, and NULLs,
@@ -889,3 +850,237 @@ void childof_const_clearinv (void *conv, void *unused)
/* simply clear the matrix */
Mat4One(data->invmat);
}
+
+/***************************** BUTTONS ****************************/
+
+/* Rename the given constraint, con already has the new name */
+void ED_object_constraint_rename(Object *ob, bConstraint *con, char *oldname)
+{
+ bConstraint *tcon;
+ ListBase *conlist= NULL;
+ int from_object= 0;
+ char *channame="";
+
+ /* get context by searching for con (primitive...) */
+ for (tcon= ob->constraints.first; tcon; tcon= tcon->next) {
+ if (tcon==con)
+ break;
+ }
+
+ if (tcon) {
+ conlist= &ob->constraints;
+ channame= "Object";
+ from_object= 1;
+ }
+ else if (ob->pose) {
+ bPoseChannel *pchan;
+
+ for (pchan=ob->pose->chanbase.first; pchan; pchan=pchan->next) {
+ for (tcon= pchan->constraints.first; tcon; tcon= tcon->next) {
+ if (tcon==con)
+ break;
+ }
+ if (tcon)
+ break;
+ }
+
+ if (tcon) {
+ conlist= &pchan->constraints;
+ channame= pchan->name;
+ }
+ }
+
+ if (conlist==NULL) {
+ printf("rename constraint failed\n"); /* should not happen in UI */
+ return;
+ }
+
+ /* first make sure it's a unique name within context */
+ unique_constraint_name (con, conlist);
+}
+
+
+
+
+void ED_object_constraint_set_active(Object *ob, bConstraint *con)
+{
+ ListBase *lb;
+ bConstraint *origcon= con;
+
+ /* lets be nice and escape if its active already */
+ if(con && (con->flag & CONSTRAINT_ACTIVE))
+ return ;
+
+ lb= get_active_constraints(ob);
+ if(lb == NULL)
+ return;
+
+ for(con= lb->first; con; con= con->next) {
+ if(con==origcon) con->flag |= CONSTRAINT_ACTIVE;
+ else con->flag &= ~CONSTRAINT_ACTIVE;
+ }
+
+ /* make sure ipowin and buttons shows it */
+ if(ob->ipowin==ID_CO) {
+ // XXX allqueue(REDRAWIPO, ID_CO);
+ // XXX allspace(REMAKEIPO, 0);
+ // XXX allqueue(REDRAWNLA, 0);
+ }
+ // XXX allqueue(REDRAWBUTSOBJECT, 0);
+}
+
+int ED_object_constraint_delete(ReportList *reports, Object *ob, bConstraint *con)
+{
+ bConstraintChannel *chan;
+ ListBase *lb;
+
+ /* remove ipo channel */
+ lb= NULL; // XXX get_active_constraint_channels(ob, 0);
+ if(lb) {
+ chan = NULL; // XXX get_constraint_channel(lb, con->name);
+ if(chan) {
+ if(chan->ipo) chan->ipo->id.us--;
+ BLI_freelinkN(lb, chan);
+ }
+ }
+
+ /* remove constraint itself */
+ lb= get_active_constraints(ob);
+ free_constraint_data(con);
+ BLI_freelinkN(lb, con);
+
+ ED_object_constraint_set_active(ob, NULL);
+
+ return 1;
+}
+
+int ED_object_constraint_move_down(ReportList *reports, Object *ob, bConstraint *constr)
+{
+ bConstraint *con;
+ ListBase *conlist;
+
+ if(constr->next) {
+ conlist = get_active_constraints(ob);
+ for(con= conlist->first; con; con= con->next) {
+ if(con==constr) {
+ BLI_remlink(conlist, con);
+ BLI_insertlink(conlist, con->next, con);
+ return 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+int ED_object_constraint_move_up(ReportList *reports, Object *ob, bConstraint *constr)
+{
+ bConstraint *con;
+ ListBase *conlist;
+
+ if(constr->prev) {
+ conlist = get_active_constraints(ob);
+ for(con= conlist->first; con; con= con->next) {
+ if(con==constr) {
+ BLI_remlink(conlist, con);
+ BLI_insertlink(conlist, con->prev->prev, con);
+ return 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+/***************************** OPERATORS ****************************/
+
+/************************ add constraint operator *********************/
+
+static int constraint_add_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob = CTX_data_active_object(C);
+ bConstraint *con, *coniter;
+ ListBase *list= get_active_constraints(ob);
+ bPoseChannel *pchan= get_active_posechannel(ob);
+ int type= RNA_enum_get(op->ptr, "type");
+
+ con = add_new_constraint(type);
+
+ if(list) {
+ unique_constraint_name(con, list);
+ BLI_addtail(list, con);
+
+ if(proxylocked_constraints_owner(ob, pchan))
+ con->flag |= CONSTRAINT_PROXY_LOCAL;
+
+ con->flag |= CONSTRAINT_ACTIVE;
+ for(coniter= con->prev; coniter; coniter= coniter->prev)
+ coniter->flag &= ~CONSTRAINT_ACTIVE;
+ }
+
+ switch(type) {
+ case CONSTRAINT_TYPE_CHILDOF:
+ {
+ /* if this constraint is being added to a posechannel, make sure
+ * the constraint gets evaluated in pose-space */
+ if(ob->flag & OB_POSEMODE) {
+ con->ownspace = CONSTRAINT_SPACE_POSE;
+ con->flag |= CONSTRAINT_SPACEONCE;
+ }
+ }
+ break;
+ case CONSTRAINT_TYPE_RIGIDBODYJOINT:
+ {
+ bRigidBodyJointConstraint *data;
+
+ /* set selected first object as target - moved from new_constraint_data */
+ data = (bRigidBodyJointConstraint*)con->data;
+
+ CTX_DATA_BEGIN(C, Object*, selob, selected_objects) {
+ if(selob != ob) {
+ data->tar= selob;
+ break;
+ }
+ }
+ CTX_DATA_END;
+ }
+ break;
+ default:
+ break;
+ }
+
+ object_test_constraints(ob);
+
+ if(ob->pose)
+ update_pose_constraint_flags(ob->pose);
+
+ if(ob->type==OB_ARMATURE)
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA|OB_RECALC_OB);
+ else
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_constraint_add(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Add Constraint";
+ ot->description = "Add a constraint to the active object.";
+ ot->idname= "OBJECT_OT_constraint_add";
+
+ /* api callbacks */
+ ot->invoke= WM_menu_invoke;
+ ot->exec= constraint_add_exec;
+
+ ot->poll= ED_operator_object_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", "");
+}
+
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 99314cf55b2..18ed6dc1e10 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -204,21 +204,6 @@ void ED_base_object_activate(bContext *C, Base *base)
}
-/*
- * Returns true if the Object data is a from an external blend file (libdata)
- */
-int object_data_is_libdata(Object *ob)
-{
- if (!ob) return 0;
- if (ob->proxy) return 0;
- if (ob->id.lib) return 1;
- if (!ob->data) return 0;
- if (((ID *)ob->data)->lib) return 1;
- return 0;
-}
-
-
-
/* exported */
void ED_object_base_init_from_view(bContext *C, Base *base)
{
@@ -297,12 +282,12 @@ static Object *object_add_type(bContext *C, int type)
ob= add_object(scene, type);
/* editor level activate, notifiers */
ED_base_object_activate(C, BASACT);
-
+
/* more editor stuff */
ED_object_base_init_from_view(C, BASACT);
-
+
DAG_scene_sort(scene);
-
+
return ob;
}
@@ -2627,7 +2612,7 @@ static int parent_set_invoke(bContext *C, wmOperator *op, wmEvent *event)
uiPopupMenu *pup= uiPupMenuBegin(C, "Set Parent To", 0);
uiLayout *layout= uiPupMenuLayout(pup);
- uiLayoutContext(layout, WM_OP_EXEC_DEFAULT);
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_OBJECT);
/* ob becomes parent, make the associated menus */
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 7203f56b40f..1eb867e19a0 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -86,6 +86,11 @@ void GROUP_OT_objects_remove_active(struct wmOperatorType *ot);
/* object_modifier.c */
void OBJECT_OT_modifier_add(struct wmOperatorType *ot);
+void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot);
+void OBJECT_OT_modifier_mdef_bind(struct wmOperatorType *ot);
+
+/* editconstraint.c */
+void OBJECT_OT_constraint_add(struct wmOperatorType *ot);
#endif /* ED_OBJECT_INTERN_H */
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index b430cdd67bc..4bcfcc4d5ab 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -28,15 +28,31 @@
#include <stdio.h>
#include <stdlib.h>
+#include "MEM_guardedalloc.h"
+
+#include "DNA_curve_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_listbase.h"
+#include "BKE_curve.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
+#include "BKE_displist.h"
+#include "BKE_DerivedMesh.h"
+#include "BKE_global.h"
+#include "BKE_lattice.h"
+#include "BKE_mesh.h"
#include "BKE_modifier.h"
+#include "BKE_multires.h"
+#include "BKE_report.h"
+#include "BKE_object.h"
+#include "BKE_particle.h"
+#include "BKE_utildefines.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -49,7 +65,265 @@
#include "object_intern.h"
-/********************* add modifier operator ********************/
+/******************************** API ****************************/
+
+int ED_object_modifier_delete(ReportList *reports, Object *ob, ModifierData *md)
+{
+ ModifierData *obmd;
+
+ /* It seems on rapid delete it is possible to
+ * get called twice on same modifier, so make
+ * sure it is in list. */
+ for (obmd=ob->modifiers.first; obmd; obmd=obmd->next)
+ if (obmd==md)
+ break;
+
+ if (!obmd)
+ return 0;
+
+ if(md->type == eModifierType_ParticleSystem) {
+ ParticleSystemModifierData *psmd=(ParticleSystemModifierData*)md;
+
+ BLI_remlink(&ob->particlesystem, psmd->psys);
+ psys_free(ob, psmd->psys);
+ }
+
+ BLI_remlink(&ob->modifiers, md);
+
+ modifier_free(md);
+
+ return 1;
+}
+
+int ED_object_modifier_move_up(ReportList *reports, Object *ob, ModifierData *md)
+{
+ if(md->prev) {
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ if(mti->type!=eModifierTypeType_OnlyDeform) {
+ ModifierTypeInfo *nmti = modifierType_getInfo(md->prev->type);
+
+ if(nmti->flags&eModifierTypeFlag_RequiresOriginalData)
+ BKE_report(reports, RPT_WARNING, "Cannot move above a modifier requiring original data.");
+ return 0;
+ }
+
+ BLI_remlink(&ob->modifiers, md);
+ BLI_insertlink(&ob->modifiers, md->prev->prev, md);
+ }
+
+ return 1;
+}
+
+int ED_object_modifier_move_down(ReportList *reports, Object *ob, ModifierData *md)
+{
+ if(md->next) {
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ if(mti->flags&eModifierTypeFlag_RequiresOriginalData) {
+ ModifierTypeInfo *nmti = modifierType_getInfo(md->next->type);
+
+ if(nmti->type!=eModifierTypeType_OnlyDeform) {
+ BKE_report(reports, RPT_WARNING, "Cannot move beyond a non-deforming modifier.");
+ return 0;
+ }
+ }
+
+ BLI_remlink(&ob->modifiers, md);
+ BLI_insertlink(&ob->modifiers, md->next, md);
+ }
+
+ return 1;
+}
+
+int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
+{
+ Object *obn;
+ ParticleSystem *psys;
+ ParticleCacheKey *key, **cache;
+ ParticleSettings *part;
+ Mesh *me;
+ MVert *mvert;
+ MEdge *medge;
+ int a, k, kmax;
+ int totvert=0, totedge=0, cvert=0;
+ int totpart=0, totchild=0;
+
+ if(md->type != eModifierType_ParticleSystem) return 0;
+ if(G.f & G_PARTICLEEDIT) return 0;
+
+ psys=((ParticleSystemModifierData *)md)->psys;
+ part= psys->part;
+
+ if(part->draw_as == PART_DRAW_GR || part->draw_as == PART_DRAW_OB) {
+ ; // XXX make_object_duplilist_real(NULL);
+ }
+ else {
+ if(part->draw_as != PART_DRAW_PATH || psys->pathcache == 0)
+ return 0;
+
+ totpart= psys->totcached;
+ totchild= psys->totchildcache;
+
+ if(totchild && (part->draw&PART_DRAW_PARENT)==0)
+ totpart= 0;
+
+ /* count */
+ cache= psys->pathcache;
+ for(a=0; a<totpart; a++) {
+ key= cache[a];
+ totvert+= key->steps+1;
+ totedge+= key->steps;
+ }
+
+ cache= psys->childcache;
+ for(a=0; a<totchild; a++) {
+ key= cache[a];
+ totvert+= key->steps+1;
+ totedge+= key->steps;
+ }
+
+ if(totvert==0) return 0;
+
+ /* add new mesh */
+ obn= add_object(scene, OB_MESH);
+ me= obn->data;
+
+ me->totvert= totvert;
+ me->totedge= totedge;
+
+ me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert);
+ me->medge= CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, totedge);
+ me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0);
+
+ mvert= me->mvert;
+ medge= me->medge;
+
+ /* copy coordinates */
+ cache= psys->pathcache;
+ for(a=0; a<totpart; a++) {
+ key= cache[a];
+ kmax= key->steps;
+ for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
+ VECCOPY(mvert->co,key->co);
+ if(k) {
+ medge->v1= cvert-1;
+ medge->v2= cvert;
+ medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
+ medge++;
+ }
+ }
+ }
+
+ cache=psys->childcache;
+ for(a=0; a<totchild; a++) {
+ key=cache[a];
+ kmax=key->steps;
+ for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
+ VECCOPY(mvert->co,key->co);
+ if(k) {
+ medge->v1=cvert-1;
+ medge->v2=cvert;
+ medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
+ medge++;
+ }
+ }
+ }
+ }
+
+ DAG_scene_sort(scene);
+
+ return 1;
+}
+
+int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md)
+{
+ DerivedMesh *dm;
+ Mesh *me = ob->data;
+ int converted = 0;
+
+ if (scene->obedit) {
+ BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode");
+ return 0;
+ } else if (((ID*) ob->data)->us>1) {
+ BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data");
+ return 0;
+ }
+
+ if (md!=ob->modifiers.first)
+ BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected.");
+
+ if (ob->type==OB_MESH) {
+ if(me->key) {
+ BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys");
+ return 0;
+ }
+
+ mesh_pmv_off(ob, me);
+
+ dm = mesh_create_derived_for_modifier(scene, ob, md);
+ if (!dm) {
+ BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply");
+ return 0;
+ }
+
+ DM_to_mesh(dm, me);
+ converted = 1;
+
+ dm->release(dm);
+ }
+ else if (ELEM(ob->type, OB_CURVE, OB_SURF)) {
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ Curve *cu = ob->data;
+ int numVerts;
+ float (*vertexCos)[3];
+
+ BKE_report(reports, RPT_INFO, "Applied modifier only changed CV points, not tesselated/bevel vertices");
+
+ if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md))) {
+ BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
+ return 0;
+ }
+
+ vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts);
+ mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0);
+ curve_applyVertexCos(cu, &cu->nurb, vertexCos);
+
+ converted = 1;
+
+ MEM_freeN(vertexCos);
+
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ }
+ else {
+ BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type");
+ return 0;
+ }
+
+ if (converted) {
+ BLI_remlink(&ob->modifiers, md);
+ modifier_free(md);
+
+ return 1;
+ }
+
+ return 0;
+}
+
+int ED_object_modifier_copy(ReportList *reports, Object *ob, ModifierData *md)
+{
+ ModifierData *nmd;
+
+ nmd = modifier_new(md->type);
+ modifier_copyData(md, nmd);
+ BLI_insertlink(&ob->modifiers, md, nmd);
+
+ return 1;
+}
+
+/***************************** OPERATORS ****************************/
+
+/************************ add modifier operator *********************/
static int modifier_add_exec(bContext *C, wmOperator *op)
{
@@ -96,3 +370,265 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot)
RNA_def_enum(ot->srna, "type", modifier_type_items, 0, "Type", "");
}
+/****************** multires subdivide operator *********************/
+
+static int multires_subdivide_exec(bContext *C, wmOperator *op)
+{
+ Object *ob = CTX_data_active_object(C);
+ PointerRNA ptr = CTX_data_pointer_get(C, "modifier");
+ MultiresModifierData *mmd = (RNA_struct_is_a(ptr.type, &RNA_Modifier))? ptr.data: NULL;
+
+ if(mmd) {
+ multiresModifier_subdivide(mmd, ob, 1, 0, mmd->simple);
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_multires_subdivide(wmOperatorType *ot)
+{
+ ot->name= "Multires Subdivide";
+ ot->description= "Add a new level of subdivision.";
+ ot->idname= "OBJECT_OT_multires_subdivide";
+ ot->poll= ED_operator_object_active;
+
+ ot->exec= multires_subdivide_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/************************ mdef bind operator *********************/
+
+static int modifier_mdef_bind_poll(bContext *C)
+{
+ PointerRNA ptr= CTX_data_pointer_get(C, "modifier");
+ return RNA_struct_is_a(ptr.type, &RNA_MeshDeformModifier);
+}
+
+static int modifier_mdef_bind_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ PointerRNA ptr= CTX_data_pointer_get(C, "modifier");
+ Object *ob= ptr.id.data;
+ MeshDeformModifierData *mmd= ptr.data;
+
+ if(mmd->bindcos) {
+ if(mmd->bindweights) MEM_freeN(mmd->bindweights);
+ if(mmd->bindcos) MEM_freeN(mmd->bindcos);
+ if(mmd->dyngrid) MEM_freeN(mmd->dyngrid);
+ if(mmd->dyninfluences) MEM_freeN(mmd->dyninfluences);
+ if(mmd->dynverts) MEM_freeN(mmd->dynverts);
+ mmd->bindweights= NULL;
+ mmd->bindcos= NULL;
+ mmd->dyngrid= NULL;
+ mmd->dyninfluences= NULL;
+ mmd->dynverts= NULL;
+ mmd->totvert= 0;
+ mmd->totcagevert= 0;
+ mmd->totinfluence= 0;
+ }
+ else {
+ DerivedMesh *dm;
+ int mode= mmd->modifier.mode;
+
+ /* force modifier to run, it will call binding routine */
+ mmd->needbind= 1;
+ mmd->modifier.mode |= eModifierMode_Realtime;
+
+ if(ob->type == OB_MESH) {
+ dm= mesh_create_derived_view(scene, ob, 0);
+ dm->release(dm);
+ }
+ else if(ob->type == OB_LATTICE) {
+ lattice_calc_modifiers(scene, ob);
+ }
+ else if(ob->type==OB_MBALL) {
+ makeDispListMBall(scene, ob);
+ }
+ else if(ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
+ makeDispListCurveTypes(scene, ob, 0);
+ }
+
+ mmd->needbind= 0;
+ mmd->modifier.mode= mode;
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_modifier_mdef_bind(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Mesh Deform Bind";
+ ot->description = "Bind mesh to cage in mesh deform modifier.";
+ ot->idname= "OBJECT_OT_modifier_mdef_bind";
+
+ /* api callbacks */
+ ot->poll= modifier_mdef_bind_poll;
+ ot->exec= modifier_mdef_bind_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+#if 0
+static void modifiers_add(void *ob_v, int type)
+{
+ Object *ob = ob_v;
+ ModifierTypeInfo *mti = modifierType_getInfo(type);
+
+ if (mti->flags&eModifierTypeFlag_RequiresOriginalData) {
+ ModifierData *md = ob->modifiers.first;
+
+ while (md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform) {
+ md = md->next;
+ }
+
+ BLI_insertlinkbefore(&ob->modifiers, md, modifier_new(type));
+ } else {
+ BLI_addtail(&ob->modifiers, modifier_new(type));
+ }
+ ED_undo_push("Add modifier");
+}
+
+typedef struct MenuEntry {
+ char *name;
+ int ID;
+} MenuEntry;
+
+static int menuEntry_compare_names(const void *entry1, const void *entry2)
+{
+ return strcmp(((MenuEntry *)entry1)->name, ((MenuEntry *)entry2)->name);
+}
+
+static uiBlock *modifiers_add_menu(void *ob_v)
+{
+ Object *ob = ob_v;
+ uiBlock *block;
+ int i, yco=0;
+ int numEntries = 0;
+ MenuEntry entries[NUM_MODIFIER_TYPES];
+
+ block= uiNewBlock(&curarea->uiblocks, "modifier_add_menu",
+ UI_EMBOSSP, UI_HELV, curarea->win);
+ uiBlockSetButmFunc(block, modifiers_add, ob);
+
+ for (i=eModifierType_None+1; i<NUM_MODIFIER_TYPES; i++) {
+ ModifierTypeInfo *mti = modifierType_getInfo(i);
+
+ /* Only allow adding through appropriate other interfaces */
+ if(ELEM3(i, eModifierType_Softbody, eModifierType_Hook, eModifierType_ParticleSystem)) continue;
+
+ if(ELEM4(i, eModifierType_Cloth, eModifierType_Collision, eModifierType_Surface, eModifierType_Fluidsim)) continue;
+
+ if((mti->flags&eModifierTypeFlag_AcceptsCVs) ||
+ (ob->type==OB_MESH && (mti->flags&eModifierTypeFlag_AcceptsMesh))) {
+ entries[numEntries].name = mti->name;
+ entries[numEntries].ID = i;
+
+ ++numEntries;
+ }
+ }
+
+ qsort(entries, numEntries, sizeof(*entries), menuEntry_compare_names);
+
+
+ for(i = 0; i < numEntries; ++i)
+ uiDefBut(block, BUTM, B_MODIFIER_RECALC, entries[i].name,
+ 0, yco -= 20, 160, 19, NULL, 0, 0, 1, entries[i].ID, "");
+
+ uiTextBoundsBlock(block, 50);
+ uiBlockSetDirection(block, UI_DOWN);
+
+ return block;
+}
+#endif
+
+#if 0
+static void modifiers_clearHookOffset(bContext *C, void *ob_v, void *md_v)
+{
+ Object *ob = ob_v;
+ ModifierData *md = md_v;
+ HookModifierData *hmd = (HookModifierData*) md;
+
+ if (hmd->object) {
+ Mat4Invert(hmd->object->imat, hmd->object->obmat);
+ Mat4MulSerie(hmd->parentinv, hmd->object->imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
+ ED_undo_push(C, "Clear hook offset");
+ }
+}
+
+static void modifiers_cursorHookCenter(bContext *C, void *ob_v, void *md_v)
+{
+ /* XXX
+ Object *ob = ob_v;
+ ModifierData *md = md_v;
+ HookModifierData *hmd = (HookModifierData*) md;
+
+ if(G.vd) {
+ float *curs = give_cursor();
+ float bmat[3][3], imat[3][3];
+
+ where_is_object(ob);
+
+ Mat3CpyMat4(bmat, ob->obmat);
+ Mat3Inv(imat, bmat);
+
+ curs= give_cursor();
+ hmd->cent[0]= curs[0]-ob->obmat[3][0];
+ hmd->cent[1]= curs[1]-ob->obmat[3][1];
+ hmd->cent[2]= curs[2]-ob->obmat[3][2];
+ Mat3MulVecfl(imat, hmd->cent);
+
+ ED_undo_push(C, "Hook cursor center");
+ }*/
+}
+
+static void modifiers_selectHook(bContext *C, void *ob_v, void *md_v)
+{
+ /* XXX ModifierData *md = md_v;
+ HookModifierData *hmd = (HookModifierData*) md;
+
+ hook_select(hmd);*/
+}
+
+static void modifiers_reassignHook(bContext *C, void *ob_v, void *md_v)
+{
+ /* XXX ModifierData *md = md_v;
+ HookModifierData *hmd = (HookModifierData*) md;
+ float cent[3];
+ int *indexar, tot, ok;
+ char name[32];
+
+ ok= hook_getIndexArray(&tot, &indexar, name, cent);
+
+ if (!ok) {
+ uiPupMenuError(C, "Requires selected vertices or active Vertex Group");
+ } else {
+ if (hmd->indexar) {
+ MEM_freeN(hmd->indexar);
+ }
+
+ VECCOPY(hmd->cent, cent);
+ hmd->indexar = indexar;
+ hmd->totindex = tot;
+ }*/
+}
+
+void modifiers_explodeFacepa(bContext *C, void *arg1, void *arg2)
+{
+ ExplodeModifierData *emd=arg1;
+
+ emd->flag |= eExplodeFlag_CalcFaces;
+}
+
+void modifiers_explodeDelVg(bContext *C, void *arg1, void *arg2)
+{
+ ExplodeModifierData *emd=arg1;
+ emd->vgroup = 0;
+}
+#endif
+
+
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index e668c494fba..cfee6a55152 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -100,6 +100,10 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_primitive_add);
WM_operatortype_append(OBJECT_OT_modifier_add);
+ WM_operatortype_append(OBJECT_OT_multires_subdivide);
+ WM_operatortype_append(OBJECT_OT_modifier_mdef_bind);
+
+ WM_operatortype_append(OBJECT_OT_constraint_add);
}
void ED_keymap_object(wmWindowManager *wm)
diff --git a/source/blender/editors/physics/editparticle.c b/source/blender/editors/physics/editparticle.c
index 232082855cb..6d5b6768ceb 100644
--- a/source/blender/editors/physics/editparticle.c
+++ b/source/blender/editors/physics/editparticle.c
@@ -2455,13 +2455,16 @@ static void PE_mirror_x(Scene *scene, Object *ob, int tagged)
new_pars= MEM_callocN(newtotpart*sizeof(ParticleData), "ParticleData new");
new_keys= MEM_callocN(newtotpart*sizeof(ParticleEditKey*), "ParticleEditKey new");
- memcpy(new_pars, psys->particles, totpart*sizeof(ParticleData));
- memcpy(new_keys, edit->keys, totpart*sizeof(ParticleEditKey*));
-
- if(psys->particles) MEM_freeN(psys->particles);
+ if(psys->particles) {
+ memcpy(new_pars, psys->particles, totpart*sizeof(ParticleData));
+ MEM_freeN(psys->particles);
+ }
psys->particles= new_pars;
- if(edit->keys) MEM_freeN(edit->keys);
+ if(edit->keys) {
+ memcpy(new_keys, edit->keys, totpart*sizeof(ParticleEditKey*));
+ MEM_freeN(edit->keys);
+ }
edit->keys= new_keys;
if(edit->mirror_cache) {
@@ -3759,7 +3762,7 @@ static int set_editable_exec(bContext *C, wmOperator *op)
PE_free_particle_edit(psys);
psys->flag &= ~PSYS_EDITED;
- psys->recalc |= PSYS_RECALC_HAIR;
+ psys->recalc |= PSYS_RECALC_RESET;
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
}
diff --git a/source/blender/editors/preview/previewrender.c b/source/blender/editors/preview/previewrender.c
index 1d5d809a9ee..3ed4fa6bd0f 100644
--- a/source/blender/editors/preview/previewrender.c
+++ b/source/blender/editors/preview/previewrender.c
@@ -44,6 +44,7 @@
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
+#include "BLI_threads.h"
#include "DNA_texture_types.h"
#include "DNA_world_types.h"
@@ -88,6 +89,7 @@
#include "WM_types.h"
#include "ED_anim_api.h"
+#include "ED_previewrender.h"
#include "ED_view3d.h"
#include "UI_interface.h"
@@ -113,6 +115,7 @@ typedef struct ShaderPreview {
int sizex, sizey;
int pr_method;
+
} ShaderPreview;
@@ -249,6 +252,12 @@ void BIF_preview_changed(short id_code)
GPU_lamp_free(ob);
}
}
+
+ for(ma=G.main->mat.first; ma; ma=ma->id.next) {
+ if(ma->gpumaterial.first) {
+ GPU_material_free(ma);
+ }
+ }
} else if(OBACT) {
Object *ob = OBACT;
@@ -586,7 +595,7 @@ void BIF_previewrender_buts(Scene *scene, SpaceButs *sbuts)
sbuts->lockpoin= id;
if(sbuts->mainb==CONTEXT_SHADING) {
- int tab= sbuts->tab[CONTEXT_SHADING];
+ int tab= TAB_SHADING_MAT; // XXX sbuts->tab[CONTEXT_SHADING];
if(tab==TAB_SHADING_MAT)
idshow = sbuts->lockpoin;
@@ -620,45 +629,44 @@ void BIF_previewrender_buts(Scene *scene, SpaceButs *sbuts)
}
}
-
-/* is panel callback, supposed to be called with correct panel offset matrix */
-void BIF_previewdraw(ScrArea *sa, uiBlock *block)
+/* new UI convention: draw is in pixel space already. */
+/* uses ROUNDBOX button in block to get the rect */
+void ED_preview_draw(const bContext *C, void *idp, rcti *rect)
{
- ARegion *ar= NULL; // XXX
+ ScrArea *sa= CTX_wm_area(C);
SpaceButs *sbuts= sa->spacedata.first;
- short id_code= 0;
+ RenderResult rres;
+ int newx= rect->xmax-rect->xmin, newy= rect->ymax-rect->ymin;
+ int ok= 0;
+ char name[32];
- if(sbuts->lockpoin) {
- ID *id= sbuts->lockpoin;
- id_code= GS(id->name);
+ sprintf(name, "Preview %p", sa);
+ BLI_lock_malloc_thread();
+ RE_GetResultImage(RE_GetRender(name), &rres);
+
+ if(rres.rectf) {
+
+ if( ABS(rres.rectx-newx)<2 && ABS(rres.recty-newy)<2 ) {
+ /* correct size, then black outline matches */
+ rect->xmax= rect->xmin + rres.rectx;
+ rect->ymax= rect->ymin + rres.recty;
+
+ glaDrawPixelsSafe(rect->xmin, rect->ymin, rres.rectx, rres.recty, rres.rectx, GL_RGBA, GL_FLOAT, rres.rectf);
+ ok= 1;
+ }
}
-
- if (!sbuts->ri) {
- sbuts->ri= MEM_callocN(sizeof(RenderInfo), "butsrenderinfo");
- sbuts->ri->tottile = 10000;
+ BLI_unlock_malloc_thread();
+
+ /* check for spacetype... */
+ if(sbuts->spacetype==SPACE_BUTS && sbuts->preview) {
+ sbuts->preview= 0;
+ ok= 0;
}
- if (sbuts->ri->rect==NULL) BIF_preview_changed(id_code);
- else {
- RenderInfo *ri= sbuts->ri;
- int oldx= ri->pr_rectx, oldy= ri->pr_recty;
-
- /* we now do scalable previews! */
- set_previewrect(sa, ri);
- if( ABS(oldx-ri->pr_rectx)<2 && ABS(oldy-ri->pr_recty)<2 ) {
- /* restore old values for drawing! */
- ri->pr_rectx= oldx;
- ri->pr_recty= oldy;
- glaDrawPixelsSafe(ri->disprect.xmin, ri->disprect.ymin, ri->pr_rectx, ri->pr_recty, ri->pr_rectx, GL_RGBA, GL_UNSIGNED_BYTE, ri->rect);
- }
- else {
- MEM_freeN(ri->rect);
- ri->rect= NULL;
- sbuts->ri->curtile= 0;
- }
- end_previewrect(ar);
+ if(ok==0) {
+ printf("added shader job\n");
+ ED_preview_shader_job(C, sa, idp, newx, newy);
}
- if(sbuts->ri->curtile==0) BIF_preview_changed(id_code);
}
@@ -975,7 +983,7 @@ void BIF_view3d_previewdraw(struct ScrArea *sa, struct uiBlock *block)
/* **************************** New preview system ****************** */
-/* called by renderer, sets job update value */
+/* inside thread, called by renderer, sets job update value */
static void shader_preview_draw(void *spv, RenderResult *rr, volatile struct rcti *rect)
{
ShaderPreview *sp= spv;
@@ -991,12 +999,20 @@ static int shader_preview_break(void *spv)
return *(sp->stop);
}
+/* outside thread, called before redraw notifiers, it moves finished preview over */
+static void shader_preview_updatejob(void *spv)
+{
+// ShaderPreview *sp= spv;
+
+}
+/* runs inside thread */
static void shader_preview_startjob(void *customdata, short *stop, short *do_update)
{
ShaderPreview *sp= customdata;
Render *re;
Scene *sce;
+ float oldlens;
char name [32];
sp->stop= stop;
@@ -1010,35 +1026,40 @@ static void shader_preview_startjob(void *customdata, short *stop, short *do_upd
re= RE_GetRender(name);
/* full refreshed render from first tile */
- if(re==NULL) {
+ if(re==NULL)
re= RE_NewRender(name);
- /* sce->r gets copied in RE_InitState! */
- if(sp->pr_method==PR_DO_RENDER) {
- sce->r.scemode |= R_NODE_PREVIEW;
- sce->r.scemode &= ~R_NO_IMAGE_LOAD;
- }
- else { /* PR_ICON_RENDER */
- sce->r.scemode &= ~R_NODE_PREVIEW;
- sce->r.scemode |= R_NO_IMAGE_LOAD;
- }
-
- /* allocates render result */
- RE_InitState(re, NULL, &sce->r, sp->sizex, sp->sizey, NULL);
+ /* sce->r gets copied in RE_InitState! */
+ if(sp->pr_method==PR_DO_RENDER) {
+ sce->r.scemode |= R_NODE_PREVIEW;
+ sce->r.scemode &= ~R_NO_IMAGE_LOAD;
+ sce->r.mode |= R_OSA;
}
-
+ else { /* PR_ICON_RENDER */
+ sce->r.scemode &= ~R_NODE_PREVIEW;
+ sce->r.scemode |= R_NO_IMAGE_LOAD;
+ }
+
+ /* allocates or re-uses render result */
+ RE_InitState(re, NULL, &sce->r, sp->sizex, sp->sizey, NULL);
+
/* callbacs are cleared on GetRender() */
if(sp->pr_method==PR_DO_RENDER) {
RE_display_draw_cb(re, sp, shader_preview_draw);
RE_test_break_cb(re, sp, shader_preview_break);
}
+ /* lens adjust */
+ oldlens= ((Camera *)sce->camera->data)->lens;
+ if(sp->sizex > sp->sizey)
+ ((Camera *)sce->camera->data)->lens *= (float)sp->sizey/(float)sp->sizex;
/* entire cycle for render engine */
RE_SetCamera(re, sce->camera);
RE_Database_FromScene(re, sce, 1);
- RE_TileProcessor(re, 0, 0); // actual render engine
+ RE_TileProcessor(re, 0, 1); // actual render engine
RE_Database_Free(re);
+ ((Camera *)sce->camera->data)->lens= oldlens;
*do_update= 1;
/* handle results */
@@ -1047,6 +1068,12 @@ static void shader_preview_startjob(void *customdata, short *stop, short *do_upd
// ri->rect= MEM_mallocN(sizeof(int)*ri->pr_rectx*ri->pr_recty, "BIF_previewrender");
//RE_ResultGet32(re, ri->rect);
}
+ else {
+ /* validate owner */
+ //if(ri->rect==NULL)
+ // ri->rect= MEM_mallocN(sizeof(int)*ri->pr_rectx*ri->pr_recty, "BIF_previewrender");
+ //RE_ResultGet32(re, ri->rect);
+ }
/* unassign the pointers, reset vars */
preview_prepare_scene(sp->scene, GS(sp->id->name), NULL);
@@ -1062,8 +1089,15 @@ static void shader_preview_free(void *customdata)
void ED_preview_shader_job(const bContext *C, void *owner, ID *id, int sizex, int sizey)
{
- wmJob *steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner);
- ShaderPreview *sp= MEM_callocN(sizeof(ShaderPreview), "shader preview");
+ wmJob *steve;
+ ShaderPreview *sp;
+
+ /* XXX ugly global still, but we can't do preview while rendering */
+ if(G.rendering)
+ return;
+
+ steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner);
+ sp= MEM_callocN(sizeof(ShaderPreview), "shader preview");
/* customdata for preview thread */
sp->scene= CTX_data_scene(C);
@@ -1076,9 +1110,9 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, int sizex, in
/* setup job */
WM_jobs_customdata(steve, sp, shader_preview_free);
WM_jobs_timer(steve, 0.1, NC_MATERIAL, NC_MATERIAL);
- WM_jobs_callbacks(steve, shader_preview_startjob, NULL, NULL);
+ WM_jobs_callbacks(steve, shader_preview_startjob, NULL, shader_preview_updatejob);
- WM_jobs_start(steve);
+ WM_jobs_start(CTX_wm_manager(C), steve);
}
diff --git a/source/blender/editors/preview/previewrender_intern.h b/source/blender/editors/preview/previewrender_intern.h
index 7d42727914b..74a3aeee754 100644
--- a/source/blender/editors/preview/previewrender_intern.h
+++ b/source/blender/editors/preview/previewrender_intern.h
@@ -32,38 +32,6 @@
/* internal exports only */
-typedef void (*VectorDrawFunc)(int x, int y, int w, int h, float alpha);
-
-/* stores rendered preview - is also used for icons */
-typedef struct RenderInfo {
- int pr_rectx;
- int pr_recty;
- short curtile, tottile, status;
- rcti disprect; /* storage for view3d preview rect */
- unsigned int* rect;
- struct Render *re; /* persistant render */
-} RenderInfo;
-
-/* ri->status */
-#define PR_DBASE 1
-#define PR_DISPRECT 2
-#define PR_PROJECTED 4
-#define PR_ROTATED 8
-
-/* Render the preview
-
-pr_method:
-- PR_DRAW_RENDER: preview is rendered and drawn, as indicated by called context (buttons panel)
-- PR_ICON_RENDER: the preview is not drawn and the function is not dynamic,
- so no events are processed. Hopefully fast enough for at least 32x32
-- PR_DO_RENDER: preview is rendered, not drawn, but events are processed for afterqueue,
- in use for node editor now.
- */
-
-#define PR_DRAW_RENDER 0
-#define PR_ICON_RENDER 1
-#define PR_DO_RENDER 2
-
#endif /* PREVIEWRENDER_INTERN_H */
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index cf72eaf2cdd..81b63b694ba 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -157,7 +157,16 @@ void ED_area_overdraw_flush(bContext *C, ScrArea *sa, ARegion *ar)
AZone *az;
for(az= sa->actionzones.first; az; az= az->next) {
- int xs= (az->x1+az->x2)/2, ys= (az->y1+az->y2)/2;
+ int xs, ys;
+
+ if(az->type==AZONE_AREA) {
+ xs= (az->x1+az->x2)/2;
+ ys= (az->y1+az->y2)/2;
+ }
+ else {
+ xs= az->x3;
+ ys= az->y3;
+ }
/* test if inside */
if(BLI_in_rcti(&ar->winrct, xs, ys)) {
@@ -187,6 +196,28 @@ static void area_draw_azone(short x1, short y1, short x2, short y2)
fdrawline(xmin, ymax-2*dy+1, xmax-2*dx+1, ymin);
}
+static void region_draw_azone(ScrArea *sa, AZone *az)
+{
+ if(az->ar==NULL) return;
+
+ UI_SetTheme(sa->spacetype, az->ar->type->regionid);
+
+ UI_ThemeColor(TH_BACK);
+ glBegin(GL_TRIANGLES);
+ glVertex2s(az->x1, az->y1);
+ glVertex2s(az->x2, az->y2);
+ glVertex2s(az->x3, az->y3);
+ glEnd();
+
+ UI_ThemeColorShade(TH_BACK, 50);
+ sdrawline(az->x1, az->y1, az->x3, az->y3);
+
+ UI_ThemeColorShade(TH_BACK, -50);
+ sdrawline(az->x2, az->y2, az->x3, az->y3);
+
+}
+
+
/* only exported for WM */
void ED_area_overdraw(bContext *C)
{
@@ -204,9 +235,11 @@ void ED_area_overdraw(bContext *C)
AZone *az;
for(az= sa->actionzones.first; az; az= az->next) {
if(az->do_draw) {
- if(az->type==AZONE_TRI) {
+ if(az->type==AZONE_AREA)
area_draw_azone(az->x1, az->y1, az->x2, az->y2);
- }
+ else if(az->type==AZONE_REGION)
+ region_draw_azone(sa, az);
+
az->do_draw= 0;
}
}
@@ -360,8 +393,124 @@ void ED_area_headerprint(ScrArea *sa, const char *str)
}
}
+/* ************************************************************ */
+
+
+#define AZONESPOT 12
+static void area_azone_initialize(ScrArea *sa)
+{
+ AZone *az;
+
+ /* reinitalize entirely, regions add azones too */
+ BLI_freelistN(&sa->actionzones);
+
+ /* set area action zones */
+ az= (AZone *)MEM_callocN(sizeof(AZone), "actionzone");
+ BLI_addtail(&(sa->actionzones), az);
+ az->type= AZONE_AREA;
+ az->x1= sa->totrct.xmin;
+ az->y1= sa->totrct.ymin;
+ az->x2= sa->totrct.xmin + AZONESPOT-1;
+ az->y2= sa->totrct.ymin + AZONESPOT-1;
+ BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y2);
+
+ az= (AZone *)MEM_callocN(sizeof(AZone), "actionzone");
+ BLI_addtail(&(sa->actionzones), az);
+ az->type= AZONE_AREA;
+ az->x1= sa->totrct.xmax+1;
+ az->y1= sa->totrct.ymax+1;
+ az->x2= sa->totrct.xmax-AZONESPOT+1;
+ az->y2= sa->totrct.ymax-AZONESPOT+1;
+ BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y2);
+}
+
+static void region_azone_initialize(ScrArea *sa, ARegion *ar, char edge)
+{
+ AZone *az, *azt;
+
+ az= (AZone *)MEM_callocN(sizeof(AZone), "actionzone");
+ BLI_addtail(&(sa->actionzones), az);
+ az->type= AZONE_REGION;
+ az->ar= ar;
+ az->edge= edge;
+
+ if(edge=='t') {
+ az->x1= ar->winrct.xmin+AZONESPOT;
+ az->y1= ar->winrct.ymax;
+ az->x2= ar->winrct.xmin+2*AZONESPOT;
+ az->y2= ar->winrct.ymax;
+ az->x3= (az->x1+az->x2)/2;
+ az->y3= az->y2+AZONESPOT/2;
+ BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y3);
+ }
+ else if(edge=='b') {
+ az->x1= ar->winrct.xmin+AZONESPOT;
+ az->y1= ar->winrct.ymin;
+ az->x2= ar->winrct.xmin+2*AZONESPOT;
+ az->y2= ar->winrct.ymin;
+ az->x3= (az->x1+az->x2)/2;
+ az->y3= az->y2-AZONESPOT/2;
+ BLI_init_rcti(&az->rect, az->x1, az->x2, az->y3, az->y1);
+ }
+ else if(edge=='l') {
+ az->x1= ar->winrct.xmin;
+ az->y1= ar->winrct.ymax-AZONESPOT;
+ az->x2= ar->winrct.xmin;
+ az->y2= ar->winrct.ymax-2*AZONESPOT;
+ az->x3= az->x2-AZONESPOT/2;
+ az->y3= (az->y1+az->y2)/2;
+ BLI_init_rcti(&az->rect, az->x3, az->x1, az->y1, az->y2);
+ }
+ else { // if(edge=='r') {
+ az->x1= ar->winrct.xmax;
+ az->y1= ar->winrct.ymax-AZONESPOT;
+ az->x2= ar->winrct.xmax;
+ az->y2= ar->winrct.ymax-2*AZONESPOT;
+ az->x3= az->x2+AZONESPOT/2;
+ az->y3= (az->y1+az->y2)/2;
+ BLI_init_rcti(&az->rect, az->x1, az->x3, az->y1, az->y2);
+ }
+
+ /* if more azones on 1 spot, set offset */
+ for(azt= sa->actionzones.first; azt; azt= azt->next) {
+ if(az!=azt) {
+ if(az->x1==azt->x1 && az->y1==azt->y1) {
+ if(edge=='t' || edge=='b') {
+ az->x1+= AZONESPOT;
+ az->x2+= AZONESPOT;
+ az->x3+= AZONESPOT;
+ BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y3);
+ }
+ else {
+ az->y1-= AZONESPOT;
+ az->y2-= AZONESPOT;
+ az->y3-= AZONESPOT;
+ BLI_init_rcti(&az->rect, az->x1, az->x3, az->y1, az->y2);
+ }
+ }
+ }
+ }
+
+}
+
+
/* *************************************************************** */
+static void region_azone_add(ScrArea *sa, ARegion *ar, int alignment)
+{
+ /* edge code (t b l r) is where azone will be drawn */
+
+ if(alignment==RGN_ALIGN_TOP)
+ region_azone_initialize(sa, ar, 'b');
+ else if(alignment==RGN_ALIGN_BOTTOM)
+ region_azone_initialize(sa, ar, 't');
+ else if(ELEM(alignment, RGN_ALIGN_RIGHT, RGN_OVERLAP_RIGHT))
+ region_azone_initialize(sa, ar, 'l');
+ else if(ELEM(alignment, RGN_ALIGN_LEFT, RGN_OVERLAP_LEFT))
+ region_azone_initialize(sa, ar, 'r');
+
+}
+
/* dir is direction to check, not the splitting edge direction! */
static int rct_fits(rcti *rect, char dir, int size)
{
@@ -373,7 +522,7 @@ static int rct_fits(rcti *rect, char dir, int size)
}
}
-static void region_rect_recursive(ARegion *ar, rcti *remainder, int quad)
+static void region_rect_recursive(ScrArea *sa, ARegion *ar, rcti *remainder, int quad)
{
rcti *remainder_prev= remainder;
int prefsizex, prefsizey;
@@ -382,6 +531,7 @@ static void region_rect_recursive(ARegion *ar, rcti *remainder, int quad)
if(ar==NULL)
return;
+ /* no returns in function, winrct gets set in the end again */
BLI_init_rcti(&ar->winrct, 0, 0, 0, 0);
/* for test; allow split of previously defined region */
@@ -540,20 +690,41 @@ static void region_rect_recursive(ARegion *ar, rcti *remainder, int quad)
ar->prev->winy= ar->prev->winrct.ymax - ar->prev->winrct.ymin + 1;
}
}
- region_rect_recursive(ar->next, remainder, quad);
+
+ /* set winrect for azones */
+ if(ar->flag & (RGN_FLAG_HIDDEN|RGN_FLAG_TOO_SMALL)) {
+ ar->winrct= *remainder;
+
+ if(alignment==RGN_ALIGN_TOP)
+ ar->winrct.ymin= ar->winrct.ymax;
+ else if(alignment==RGN_ALIGN_BOTTOM)
+ ar->winrct.ymax= ar->winrct.ymin;
+ else if(ELEM(alignment, RGN_ALIGN_RIGHT, RGN_OVERLAP_RIGHT))
+ ar->winrct.xmin= ar->winrct.xmax;
+ else if(ELEM(alignment, RGN_ALIGN_LEFT, RGN_OVERLAP_LEFT))
+ ar->winrct.xmax= ar->winrct.xmin;
+ else /* prevent winrct to be valid */
+ ar->winrct.xmax= ar->winrct.xmin;
+ }
+ /* in end, add azones, where appropriate */
+ region_azone_add(sa, ar, alignment);
+
+
+ region_rect_recursive(sa, ar->next, remainder, quad);
}
static void area_calc_totrct(ScrArea *sa, int sizex, int sizey)
{
-
- if(sa->v1->vec.x>0) sa->totrct.xmin= sa->v1->vec.x+1;
+ short rt= CLAMPIS(G.rt, 0, 16);
+
+ if(sa->v1->vec.x>0) sa->totrct.xmin= sa->v1->vec.x+1+rt;
else sa->totrct.xmin= sa->v1->vec.x;
- if(sa->v4->vec.x<sizex-1) sa->totrct.xmax= sa->v4->vec.x-1;
+ if(sa->v4->vec.x<sizex-1) sa->totrct.xmax= sa->v4->vec.x-1-rt;
else sa->totrct.xmax= sa->v4->vec.x;
- if(sa->v1->vec.y>0) sa->totrct.ymin= sa->v1->vec.y+1;
+ if(sa->v1->vec.y>0) sa->totrct.ymin= sa->v1->vec.y+1+rt;
else sa->totrct.ymin= sa->v1->vec.y;
- if(sa->v2->vec.y<sizey-1) sa->totrct.ymax= sa->v2->vec.y-1;
+ if(sa->v2->vec.y<sizey-1) sa->totrct.ymax= sa->v2->vec.y-1-rt;
else sa->totrct.ymax= sa->v2->vec.y;
/* for speedup */
@@ -562,40 +733,6 @@ static void area_calc_totrct(ScrArea *sa, int sizex, int sizey)
}
-#define AZONESPOT 12
-void area_azone_initialize(ScrArea *sa)
-{
- AZone *az;
- if(sa->actionzones.first==NULL) {
- /* set action zones - should these actually be ARegions? With these we can easier check area hotzones */
- /* (ton) for time being just area, ARegion split is not foreseen on user level */
- az= (AZone *)MEM_callocN(sizeof(AZone), "actionzone");
- BLI_addtail(&(sa->actionzones), az);
- az->type= AZONE_TRI;
- az->pos= AZONE_SW;
-
- az= (AZone *)MEM_callocN(sizeof(AZone), "actionzone");
- BLI_addtail(&(sa->actionzones), az);
- az->type= AZONE_TRI;
- az->pos= AZONE_NE;
- }
-
- for(az= sa->actionzones.first; az; az= az->next) {
- if(az->pos==AZONE_SW) {
- az->x1= sa->v1->vec.x+1;
- az->y1= sa->v1->vec.y+1;
- az->x2= sa->v1->vec.x+AZONESPOT;
- az->y2= sa->v1->vec.y+AZONESPOT;
- }
- else if (az->pos==AZONE_NE) {
- az->x1= sa->v3->vec.x;
- az->y1= sa->v3->vec.y;
- az->x2= sa->v3->vec.x-AZONESPOT;
- az->y2= sa->v3->vec.y-AZONESPOT;
- }
- }
-}
-
/* used for area initialize below */
static void region_subwindow(wmWindowManager *wm, wmWindow *win, ARegion *ar)
{
@@ -658,9 +795,12 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa)
/* area sizes */
area_calc_totrct(sa, win->sizex, win->sizey);
+ /* clear all azones, add the area triange widgets */
+ area_azone_initialize(sa);
+
/* region rect sizes */
rect= sa->totrct;
- region_rect_recursive(sa->regionbase.first, &rect, 0);
+ region_rect_recursive(sa, sa->regionbase.first, &rect, 0);
/* default area handlers */
ed_default_handlers(wm, &sa->handlers, sa->type->keymapflag);
@@ -685,7 +825,6 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa)
}
}
- area_azone_initialize(sa);
}
/* externally called for floating regions like menus */
@@ -698,6 +837,11 @@ void ED_region_init(bContext *C, ARegion *ar)
ar->winx= ar->winrct.xmax - ar->winrct.xmin + 1;
ar->winy= ar->winrct.ymax - ar->winrct.ymin + 1;
+
+ /* UI convention */
+ wmLoadIdentity();
+ wmOrtho2(-0.01f, ar->winx-0.01f, -0.01f, ar->winy-0.01f);
+
}
@@ -993,7 +1137,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
for(pt= ar->type->paneltypes.first; pt; pt= pt->next) {
/* verify context */
if(context)
- if(!pt->context || strcmp(context, pt->context) != 0)
+ if(pt->context[0] && strcmp(context, pt->context) != 0)
continue;
/* draw panel */
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 51515f18623..4e08310240c 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -868,30 +868,47 @@ static void scrarea_draw_shape_light(ScrArea *sa, char dir)
glDisable(GL_BLEND);
}
-/** screen edges drawing **/
-static void drawscredge_area(ScrArea *sa)
+static void drawscredge_area_draw(int sizex, int sizey, short x1, short y1, short x2, short y2, short a)
{
- short x1= sa->v1->vec.x;
- short y1= sa->v1->vec.y;
- short x2= sa->v3->vec.x;
- short y2= sa->v3->vec.y;
-
- cpack(0x0);
-
/* right border area */
- sdrawline(x2, y1, x2, y2);
+ if(x2<sizex-1)
+ sdrawline(x2+a, y1, x2+a, y2);
/* left border area */
- if(x1>0) { /* otherwise it draws the emboss of window over */
- sdrawline(x1, y1, x1, y2);
- }
+ if(x1>0) /* otherwise it draws the emboss of window over */
+ sdrawline(x1+a, y1, x1+a, y2);
/* top border area */
- sdrawline(x1, y2, x2, y2);
+ if(y2<sizey-1)
+ sdrawline(x1, y2+a, x2, y2+a);
/* bottom border area */
- sdrawline(x1, y1, x2, y1);
+ if(y1>0)
+ sdrawline(x1, y1+a, x2, y1+a);
+
+}
+
+/** screen edges drawing **/
+static void drawscredge_area(ScrArea *sa, int sizex, int sizey, int center)
+{
+ short x1= sa->v1->vec.x;
+ short y1= sa->v1->vec.y;
+ short x2= sa->v3->vec.x;
+ short y2= sa->v3->vec.y;
+ short a, rt;
+
+ rt= CLAMPIS(G.rt, 0, 16);
+ if(center==0) {
+ cpack(0x505050);
+ for(a=-rt; a<=rt; a++)
+ if(a!=0)
+ drawscredge_area_draw(sizex, sizey, x1, y1, x2, y2, a);
+ }
+ else {
+ cpack(0x0);
+ drawscredge_area_draw(sizex, sizey, x1, y1, x2, y2, 0);
+ }
}
/* ****************** EXPORTED API TO OTHER MODULES *************************** */
@@ -971,9 +988,11 @@ void ED_screen_draw(wmWindow *win)
for(sa= win->screen->areabase.first; sa; sa= sa->next) {
if (sa->flag & AREA_FLAG_DRAWJOINFROM) sa1 = sa;
if (sa->flag & AREA_FLAG_DRAWJOINTO) sa2 = sa;
- drawscredge_area(sa);
+ drawscredge_area(sa, win->sizex, win->sizey, 0);
}
-
+ for(sa= win->screen->areabase.first; sa; sa= sa->next)
+ drawscredge_area(sa, win->sizex, win->sizey, 1);
+
/* blended join arrow */
if (sa1 && sa2) {
dir = area_getorientation(win->screen, sa1, sa2);
@@ -1116,14 +1135,22 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen)
/* case when on area-edge or in azones, or outside window */
static void screen_cursor_set(wmWindow *win, wmEvent *event)
{
+ AZone *az= NULL;
ScrArea *sa;
for(sa= win->screen->areabase.first; sa; sa= sa->next)
- if(is_in_area_actionzone(sa, event->x, event->y))
+ if((az=is_in_area_actionzone(sa, event->x, event->y)))
break;
if(sa) {
- WM_cursor_set(win, CURSOR_EDIT);
+ if(az->type==AZONE_AREA)
+ WM_cursor_set(win, CURSOR_EDIT);
+ else if(az->type==AZONE_REGION) {
+ if(az->x1==az->x2)
+ WM_cursor_set(win, CURSOR_X_MOVE);
+ else
+ WM_cursor_set(win, CURSOR_Y_MOVE);
+ }
}
else {
ScrEdge *actedge= screen_find_active_scredge(win->screen, event->x, event->y);
@@ -1256,6 +1283,9 @@ void ED_screen_set(bContext *C, bScreen *sc)
ED_screen_refresh(CTX_wm_manager(C), CTX_wm_window(C));
WM_event_add_notifier(C, NC_WINDOW, NULL);
+
+ /* makes button hilites work */
+ WM_event_add_mousemove(C);
}
}
@@ -1430,7 +1460,8 @@ void ED_screen_full_prevspace(bContext *C)
ed_screen_fullarea(C, sa);
}
-void ED_screen_animation_timer(bContext *C, int enable)
+/* redraws: uses defines from stime->redraws */
+void ED_screen_animation_timer(bContext *C, int redraws, int enable)
{
bScreen *screen= CTX_wm_screen(C);
wmWindow *win= CTX_wm_window(C);
@@ -1440,8 +1471,17 @@ void ED_screen_animation_timer(bContext *C, int enable)
WM_event_remove_window_timer(win, screen->animtimer);
screen->animtimer= NULL;
- if(enable)
+ if(enable) {
+ struct ScreenAnimData *sad= MEM_mallocN(sizeof(ScreenAnimData), "ScreenAnimData");
+
screen->animtimer= WM_event_add_window_timer(win, TIMER0, (1.0/FPS));
+ sad->ar= CTX_wm_region(C);
+ sad->redraws= redraws;
+ screen->animtimer->customdata= sad;
+
+ }
+ /* notifier catched by top header, for button */
+ WM_event_add_notifier(C, NC_SCREEN|ND_ANIMPLAY, screen);
}
unsigned int ED_screen_view3d_layers(bScreen *screen)
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index e7b2b01ebfc..646c77ec5b5 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -226,7 +226,8 @@ int ED_operator_uvedit(bContext *C)
return 1;
}
- BKE_mesh_end_editmesh(obedit->data, em);
+ if(obedit)
+ BKE_mesh_end_editmesh(obedit->data, em);
return 0;
}
@@ -243,7 +244,8 @@ int ED_operator_uvmap(bContext *C)
return 1;
}
- BKE_mesh_end_editmesh(obedit->data, em);
+ if(obedit)
+ BKE_mesh_end_editmesh(obedit->data, em);
return 0;
}
@@ -324,46 +326,51 @@ static ScrArea *screen_areahascursor(bScreen *scr, int x, int y)
return sa;
}
+/* quick poll to save operators to be created and handled */
+static int actionzone_area_poll(bContext *C)
+{
+ wmWindow *win= CTX_wm_window(C);
+ ScrArea *sa= CTX_wm_area(C);
+
+ if(sa && win) {
+ AZone *az;
+ int x= win->eventstate->x;
+ int y= win->eventstate->y;
+
+ for(az= sa->actionzones.first; az; az= az->next)
+ if(BLI_in_rcti(&az->rect, x, y))
+ return 1;
+ }
+ return 0;
+}
AZone *is_in_area_actionzone(ScrArea *sa, int x, int y)
{
AZone *az= NULL;
- int i= 0;
- for(az= sa->actionzones.first, i= 0; az; az= az->next, i++) {
- if(az->type == AZONE_TRI) {
- if(IsPointInTri2DInts(az->x1, az->y1, az->x2, az->y2, x, y))
- break;
- }
- if(az->type == AZONE_QUAD) {
- if(az->x1 < x && x < az->x2 && az->y1 < y && y < az->y2)
- break;
+ for(az= sa->actionzones.first; az; az= az->next) {
+ if(BLI_in_rcti(&az->rect, x, y)) {
+ if(az->type == AZONE_AREA) {
+ if(IsPointInTri2DInts(az->x1, az->y1, az->x2, az->y2, x, y))
+ break;
+ }
+ else if(az->type == AZONE_REGION) {
+ float v1[2], v2[2], v3[2], pt[2];
+
+ v1[0]= az->x1; v1[1]= az->y1;
+ v2[0]= az->x2; v2[1]= az->y2;
+ v3[0]= az->x3; v3[1]= az->y3;
+ pt[0]= x; pt[1]=y;
+
+ if(IsPointInTri2D(v1, v2, v3, pt))
+ break;
+ }
}
}
return az;
}
-static int actionzone_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- AZone *az= is_in_area_actionzone(CTX_wm_area(C), event->x, event->y);
- sActionzoneData *sad;
-
- /* quick escape */
- if(az==NULL)
- return OPERATOR_PASS_THROUGH;
-
- /* ok we do the actionzone */
- sad= op->customdata= MEM_callocN(sizeof(sActionzoneData), "sActionzoneData");
- sad->sa1= CTX_wm_area(C);
- sad->az= az;
- sad->x= event->x; sad->y= event->y;
-
- /* add modal handler */
- WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
-
- return OPERATOR_RUNNING_MODAL;
-}
static void actionzone_exit(bContext *C, wmOperator *op)
{
@@ -373,15 +380,19 @@ static void actionzone_exit(bContext *C, wmOperator *op)
}
/* send EVT_ACTIONZONE event */
-static void actionzone_apply(bContext *C, wmOperator *op)
+static void actionzone_apply(bContext *C, wmOperator *op, int type)
{
wmEvent event;
wmWindow *win= CTX_wm_window(C);
sActionzoneData *sad= op->customdata;
+
sad->modifier= RNA_int_get(op->ptr, "modifier");
event= *(win->eventstate); /* XXX huh huh? make api call */
- event.type= EVT_ACTIONZONE;
+ if(type==AZONE_AREA)
+ event.type= EVT_ACTIONZONE_AREA;
+ else
+ event.type= EVT_ACTIONZONE_REGION;
event.customdata= op->customdata;
event.customdatafree= TRUE;
op->customdata= NULL;
@@ -389,10 +400,41 @@ static void actionzone_apply(bContext *C, wmOperator *op)
wm_event_add(win, &event);
}
+static int actionzone_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ AZone *az= is_in_area_actionzone(CTX_wm_area(C), event->x, event->y);
+ sActionzoneData *sad;
+
+ /* quick escape */
+ if(az==NULL)
+ return OPERATOR_PASS_THROUGH;
+
+ /* ok we do the actionzone */
+ sad= op->customdata= MEM_callocN(sizeof(sActionzoneData), "sActionzoneData");
+ sad->sa1= CTX_wm_area(C);
+ sad->az= az;
+ sad->x= event->x; sad->y= event->y;
+
+ /* region azone directly reacts on mouse clicks */
+ if(sad->az->type==AZONE_REGION) {
+ actionzone_apply(C, op, AZONE_REGION);
+ actionzone_exit(C, op);
+ return OPERATOR_FINISHED;
+ }
+ else {
+ /* add modal handler */
+ WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
+
+ return OPERATOR_RUNNING_MODAL;
+ }
+}
+
+
static int actionzone_modal(bContext *C, wmOperator *op, wmEvent *event)
{
sActionzoneData *sad= op->customdata;
int deltax, deltay;
+ int mindelta= sad->az->type==AZONE_REGION?1:12;
switch(event->type) {
case MOUSEMOVE:
@@ -401,30 +443,33 @@ static int actionzone_modal(bContext *C, wmOperator *op, wmEvent *event)
deltay= (event->y - sad->y);
if(deltay > ABS(deltax))
- sad->gesture_dir= AZONE_N;
+ sad->gesture_dir= 'n';
else if(deltax > ABS(deltay))
- sad->gesture_dir= AZONE_E;
+ sad->gesture_dir= 'e';
else if(deltay < -ABS(deltax))
- sad->gesture_dir= AZONE_S;
+ sad->gesture_dir= 's';
else
- sad->gesture_dir= AZONE_W;
+ sad->gesture_dir= 'w';
/* gesture is large enough? */
- if(ABS(deltax) > 12 || ABS(deltay) > 12) {
+ if(ABS(deltax) > mindelta || ABS(deltay) > mindelta) {
/* second area, for join */
sad->sa2= screen_areahascursor(CTX_wm_screen(C), event->x, event->y);
/* apply sends event */
- actionzone_apply(C, op);
+ actionzone_apply(C, op, sad->az->type);
actionzone_exit(C, op);
return OPERATOR_FINISHED;
}
break;
case ESCKEY:
- case LEFTMOUSE:
actionzone_exit(C, op);
return OPERATOR_CANCELLED;
+ case LEFTMOUSE:
+ actionzone_exit(C, op);
+ return OPERATOR_CANCELLED;
+
}
return OPERATOR_RUNNING_MODAL;
@@ -439,7 +484,7 @@ void SCREEN_OT_actionzone(wmOperatorType *ot)
ot->invoke= actionzone_invoke;
ot->modal= actionzone_modal;
- ot->poll= ED_operator_areaactive;
+ ot->poll= actionzone_area_poll;
RNA_def_int(ot->srna, "modifier", 0, 0, 2, "modifier", "modifier state", 0, 2);
}
@@ -545,7 +590,7 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_RUNNING_MODAL;
}
-void SCREEN_OT_area_swap(wmOperatorType *ot)
+static void SCREEN_OT_area_swap(wmOperatorType *ot)
{
ot->name= "Swap areas";
ot->idname= "SCREEN_OT_area_swap";
@@ -564,18 +609,25 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event)
bScreen *newsc, *sc;
ScrArea *sa;
rcti rect;
- sActionzoneData *sad= event->customdata;
-
- if(sad==NULL)
- return OPERATOR_PASS_THROUGH;
win= CTX_wm_window(C);
sc= CTX_wm_screen(C);
- sa= sad->sa1;
+ sa= CTX_wm_area(C);
+
+ /* XXX hrmf! */
+ if(event->type==EVT_ACTIONZONE_AREA) {
+ sActionzoneData *sad= event->customdata;
+ if(sad==NULL)
+ return OPERATOR_PASS_THROUGH;
+
+ sa= sad->sa1;
+ }
+
/* poll() checks area context, but we don't accept full-area windows */
if(sc->full != SCREENNORMAL) {
- actionzone_exit(C, op);
+ if(event->type==EVT_ACTIONZONE_AREA)
+ actionzone_exit(C, op);
return OPERATOR_CANCELLED;
}
@@ -594,12 +646,13 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* screen, areas init */
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
- actionzone_exit(C, op);
+ if(event->type==EVT_ACTIONZONE_AREA)
+ actionzone_exit(C, op);
return OPERATOR_FINISHED;
}
-void SCREEN_OT_area_dupli(wmOperatorType *ot)
+static void SCREEN_OT_area_dupli(wmOperatorType *ot)
{
ot->name= "Duplicate Area into New Window";
ot->idname= "SCREEN_OT_area_dupli";
@@ -1016,7 +1069,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
sAreaSplitData *sd;
- if(event->type==EVT_ACTIONZONE) {
+ if(event->type==EVT_ACTIONZONE_AREA) {
sActionzoneData *sad= event->customdata;
int dir;
@@ -1024,6 +1077,10 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_PASS_THROUGH;
}
+ /* no full window splitting allowed */
+ if(CTX_wm_area(C)->full)
+ return OPERATOR_PASS_THROUGH;
+
/* verify *sad itself */
if(sad==NULL || sad->sa1==NULL || sad->az==NULL)
return OPERATOR_PASS_THROUGH;
@@ -1033,7 +1090,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_PASS_THROUGH;
/* prepare operator state vars */
- if(sad->gesture_dir==AZONE_N || sad->gesture_dir==AZONE_S) {
+ if(sad->gesture_dir=='n' || sad->gesture_dir=='s') {
dir= 'h';
RNA_float_set(op->ptr, "factor", ((float)(event->x - sad->sa1->v1->vec.x)) / (float)sad->sa1->winx);
}
@@ -1157,6 +1214,119 @@ void SCREEN_OT_area_split(wmOperatorType *ot)
RNA_def_float(ot->srna, "factor", 0.5f, 0.0, 1.0, "Factor", "", 0.0, 1.0);
}
+
+
+/* ************** scale region edge operator *********************************** */
+
+typedef struct RegionMoveData {
+ ARegion *ar;
+ int bigger, smaller, origval;
+ int origx, origy;
+ char edge;
+
+} RegionMoveData;
+
+static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ sActionzoneData *sad= event->customdata;
+ AZone *az= sad->az;
+
+ if(az->ar) {
+ RegionMoveData *rmd= MEM_callocN(sizeof(RegionMoveData), "RegionMoveData");
+
+ op->customdata= rmd;
+
+ rmd->ar= az->ar;
+ rmd->edge= az->edge;
+ rmd->origx= event->x;
+ rmd->origy= event->y;
+ if(rmd->edge=='l' || rmd->edge=='r')
+ rmd->origval= rmd->ar->type->minsizex;
+ else
+ rmd->origval= rmd->ar->type->minsizey;
+
+ /* add temp handler */
+ WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
+
+ return OPERATOR_RUNNING_MODAL;
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+ RegionMoveData *rmd= op->customdata;
+ int delta;
+
+ /* execute the events */
+ switch(event->type) {
+ case MOUSEMOVE:
+
+ if(rmd->edge=='l' || rmd->edge=='r') {
+ delta= event->x - rmd->origx;
+ if(rmd->edge=='l') delta= -delta;
+ rmd->ar->type->minsizex= rmd->origval + delta;
+ CLAMP(rmd->ar->type->minsizex, 0, 1000);
+ if(rmd->ar->type->minsizex < 10) {
+ rmd->ar->type->minsizex= 10;
+ rmd->ar->flag |= RGN_FLAG_HIDDEN;
+ }
+ else
+ rmd->ar->flag &= ~RGN_FLAG_HIDDEN;
+ }
+ else {
+ delta= event->y - rmd->origy;
+ if(rmd->edge=='b') delta= -delta;
+ rmd->ar->type->minsizey= rmd->origval + delta;
+ CLAMP(rmd->ar->type->minsizey, 0, 1000);
+ if(rmd->ar->type->minsizey < 10) {
+ rmd->ar->type->minsizey= 10;
+ rmd->ar->flag |= RGN_FLAG_HIDDEN;
+ }
+ else
+ rmd->ar->flag &= ~RGN_FLAG_HIDDEN;
+ }
+
+ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+
+ break;
+
+ case LEFTMOUSE:
+ if(event->val==0) {
+
+ if(ABS(event->x - rmd->origx) < 2 && ABS(event->y - rmd->origy) < 2) {
+ rmd->ar->flag ^= RGN_FLAG_HIDDEN;
+ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
+ }
+ MEM_freeN(op->customdata);
+ op->customdata = NULL;
+
+ return OPERATOR_FINISHED;
+ }
+ break;
+
+ case ESCKEY:
+ ;
+ }
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+
+static void SCREEN_OT_region_scale(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Scale Region Size";
+ ot->idname= "SCREEN_OT_region_scale";
+
+ ot->invoke= region_scale_invoke;
+ ot->modal= region_scale_modal;
+
+ ot->poll= ED_operator_areaactive;
+}
+
+
/* ************** frame change operator ***************************** */
@@ -1384,7 +1554,7 @@ static int area_join_exec(bContext *C, wmOperator *op)
static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- if(event->type==EVT_ACTIONZONE) {
+ if(event->type==EVT_ACTIONZONE_AREA) {
sActionzoneData *sad= event->customdata;
if(sad->modifier>0) {
@@ -1811,37 +1981,6 @@ static int region_flip_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static void testfunc(bContext *C, void *argv, int arg)
-{
- printf("arg %d\n", arg);
-}
-
-static void newlevel1(bContext *C, uiLayout *layout, void *arg)
-{
- uiLayoutFunc(layout, testfunc, NULL);
-
- uiItemV(layout, "First", ICON_PROP_ON, 1);
- uiItemV(layout, "Second", ICON_PROP_CON, 2);
- uiItemV(layout, "Third", ICON_SMOOTHCURVE, 3);
- uiItemV(layout, "Fourth", ICON_SHARPCURVE, 4);
-}
-
-static int testing123(bContext *C, wmOperator *op, wmEvent *event)
-{
- uiPopupMenu *pup= uiPupMenuBegin(C, "Hello world", 0);
- uiLayout *layout= uiPupMenuLayout(pup);
-
- uiLayoutContext(layout, WM_OP_EXEC_DEFAULT);
- uiItemO(layout, NULL, ICON_PROP_ON, "SCREEN_OT_region_flip");
- uiItemO(layout, NULL, ICON_PROP_CON, "SCREEN_OT_screen_full_area");
- uiItemO(layout, NULL, ICON_SMOOTHCURVE, "SCREEN_OT_region_foursplit");
- uiItemMenuF(layout, "Submenu", 0, newlevel1);
-
- uiPupMenuEnd(C, pup);
-
- /* this operator is only for a menu, not used further */
- return OPERATOR_CANCELLED;
-}
void SCREEN_OT_region_flip(wmOperatorType *ot)
{
@@ -1850,27 +1989,72 @@ void SCREEN_OT_region_flip(wmOperatorType *ot)
ot->idname= "SCREEN_OT_region_flip";
/* api callbacks */
- ot->invoke= testing123; // XXX WM_operator_confirm;
ot->exec= region_flip_exec;
ot->poll= ED_operator_areaactive;
ot->flag= OPTYPE_REGISTER;
-
- RNA_def_int(ot->srna, "test", 0, INT_MIN, INT_MAX, "test", "", INT_MIN, INT_MAX);
}
-/* ****************** anim player, typically with timer ***************** */
+/* ****************** anim player, with timer ***************** */
-static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
+static int match_region_with_redraws(int spacetype, int regiontype, int redraws)
+{
+ if(regiontype==RGN_TYPE_WINDOW) {
+
+ switch (spacetype) {
+ case SPACE_VIEW3D:
+ if(redraws & TIME_ALL_3D_WIN)
+ return 1;
+ break;
+ case SPACE_IPO:
+ case SPACE_ACTION:
+ case SPACE_NLA:
+ if(redraws & TIME_ALL_ANIM_WIN)
+ return 1;
+ break;
+ case SPACE_TIME:
+ /* if only 1 window or 3d windows, we do timeline too */
+ if(redraws & (TIME_ALL_ANIM_WIN|TIME_REGION|TIME_ALL_3D_WIN))
+ return 1;
+ break;
+ case SPACE_BUTS:
+ if(redraws & TIME_ALL_BUTS_WIN)
+ return 1;
+ break;
+ case SPACE_SEQ:
+ if(redraws & (TIME_SEQ|TIME_ALL_ANIM_WIN))
+ return 1;
+ break;
+ case SPACE_IMAGE:
+ if(redraws & TIME_ALL_IMAGE_WIN)
+ return 1;
+ break;
+
+ }
+ }
+ else if(regiontype==RGN_TYPE_UI) {
+ if(redraws & TIME_ALL_BUTS_WIN)
+ return 1;
+ }
+ else if(regiontype==RGN_TYPE_HEADER) {
+ if(spacetype==SPACE_TIME)
+ return 1;
+ }
+ return 0;
+}
+
+static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event)
{
bScreen *screen= CTX_wm_screen(C);
if(screen->animtimer==event->customdata) {
Scene *scene= CTX_data_scene(C);
+ wmTimer *wt= screen->animtimer;
+ ScreenAnimData *sad= wt->customdata;
+ ScrArea *sa;
if(scene->audio.flag & AUDIO_SYNC) {
- wmTimer *wt= screen->animtimer;
int step = floor(wt->duration * FPS);
scene->r.cfra += step;
wt->duration -= ((float)step)/FPS;
@@ -1887,13 +2071,65 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
scene->r.cfra= scene->r.sfra;
}
- WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
+ /* since we follow drawflags, we can't send notifier but tag regions ourselves */
+ ED_update_for_newframe(C, 1);
+
+ for(sa= screen->areabase.first; sa; sa= sa->next) {
+ ARegion *ar;
+ for(ar= sa->regionbase.first; ar; ar= ar->next) {
+ if(ar==sad->ar)
+ ED_region_tag_redraw(ar);
+ else
+ if(match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws))
+ ED_region_tag_redraw(ar);
+ }
+ }
+
+ //WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
return OPERATOR_FINISHED;
}
return OPERATOR_PASS_THROUGH;
}
+static void SCREEN_OT_animation_step(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Animation Step";
+ ot->idname= "SCREEN_OT_animation_step";
+
+ /* api callbacks */
+ ot->invoke= screen_animation_step;
+
+ ot->poll= ED_operator_screenactive;
+
+}
+
+/* ****************** anim player, starts or ends timer ***************** */
+
+/* toggle operator */
+static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
+{
+ bScreen *screen= CTX_wm_screen(C);
+
+ if(screen->animtimer) {
+ ED_screen_animation_timer(C, 0, 0);
+ }
+ else {
+ /* todo: RNA properties to define play types */
+ ED_screen_animation_timer(C, TIME_REGION|TIME_ALL_3D_WIN, 1);
+
+ if(screen->animtimer) {
+ wmTimer *wt= screen->animtimer;
+ ScreenAnimData *sad= wt->customdata;
+
+ sad->ar= CTX_wm_region(C);
+ }
+ }
+
+ return OPERATOR_FINISHED;
+}
+
void SCREEN_OT_animation_play(wmOperatorType *ot)
{
/* identifiers */
@@ -1905,6 +2141,7 @@ void SCREEN_OT_animation_play(wmOperatorType *ot)
ot->poll= ED_operator_screenactive;
+
}
/* ************** border select operator (template) ***************************** */
@@ -2305,7 +2542,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
// BKE_report in render!
// RE_error_cb(re, error_cb);
- WM_jobs_start(steve);
+ WM_jobs_start(CTX_wm_manager(C), steve);
G.afbreek= 0;
@@ -2394,6 +2631,7 @@ void ED_operatortypes_screen(void)
WM_operatortype_append(SCREEN_OT_region_split);
WM_operatortype_append(SCREEN_OT_region_foursplit);
WM_operatortype_append(SCREEN_OT_region_flip);
+ WM_operatortype_append(SCREEN_OT_region_scale);
WM_operatortype_append(SCREEN_OT_screen_set);
WM_operatortype_append(SCREEN_OT_screen_full_area);
WM_operatortype_append(SCREEN_OT_screenshot);
@@ -2401,6 +2639,7 @@ void ED_operatortypes_screen(void)
/*frame changes*/
WM_operatortype_append(SCREEN_OT_frame_offset);
+ WM_operatortype_append(SCREEN_OT_animation_step);
WM_operatortype_append(SCREEN_OT_animation_play);
/* render */
@@ -2419,18 +2658,21 @@ void ED_keymap_screen(wmWindowManager *wm)
ListBase *keymap= WM_keymap_listbase(wm, "Screen", 0, 0);
/* standard timers */
- WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", TIMER0, KM_ANY, KM_ANY, 0);
+ WM_keymap_add_item(keymap, "SCREEN_OT_animation_step", TIMER0, KM_ANY, KM_ANY, 0);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "modifier", 0);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "modifier", 1);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "modifier", 2);
/* screen tools */
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE_AREA, 0, 0, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE_AREA, 0, 0, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_dupli", EVT_ACTIONZONE_AREA, 0, KM_SHIFT, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_swap", EVT_ACTIONZONE_AREA, 0, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_region_scale", EVT_ACTIONZONE_REGION, 0, 0, 0);
+ /* area move after action zones */
WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE, 0, 0, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE, 0, 0, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_dupli", EVT_ACTIONZONE, 0, KM_SHIFT, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_swap", EVT_ACTIONZONE, 0, KM_ALT, 0);
+
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1);
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", UPARROWKEY, KM_PRESS, KM_CTRL, 0);
@@ -2465,12 +2707,13 @@ void ED_keymap_screen(wmWindowManager *wm)
WM_keymap_add_item(keymap, "SCREEN_OT_render", F12KEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_render_view_cancel", ESCKEY, KM_PRESS, 0, 0);
- /* frame offsets */
+ /* frame offsets & play */
keymap= WM_keymap_listbase(wm, "Frames", 0, 0);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", UPARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", 10);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -10);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -1);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", 1);
+ WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT, 0);
}
diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c
index 75b85b9499f..81da74217ec 100644
--- a/source/blender/editors/screen/screendump.c
+++ b/source/blender/editors/screen/screendump.c
@@ -309,7 +309,7 @@ static int screencast_exec(bContext *C, wmOperator *op)
WM_jobs_timer(steve, 0.1, 0, NC_SCREEN|ND_SCREENCAST);
WM_jobs_callbacks(steve, screenshot_startjob, NULL, screenshot_updatejob);
- WM_jobs_start(steve);
+ WM_jobs_start(CTX_wm_manager(C), steve);
WM_event_add_notifier(C, NC_SCREEN|ND_SCREENCAST, screen);
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 5e830af5c08..2a97c0ba1b0 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -189,7 +189,7 @@ typedef struct ImagePaintPartialRedraw {
// #define PROJ_BUCKET_CLONE_INIT 1<<1
/* used for testing doubles, if a point is on a line etc */
-#define PROJ_GEOM_TOLERANCE 0.0002f
+#define PROJ_GEOM_TOLERANCE 0.00075f
/* vert flags */
#define PROJ_VERT_CULL 1
@@ -238,8 +238,8 @@ typedef struct ProjPaintState {
char *faceSeamFlags; /* store info about faces, if they are initialized etc*/
float (*faceSeamUVs)[4][2]; /* expanded UVs for faces to use as seams */
LinkNode **vertFaces; /* Only needed for when seam_bleed_px is enabled, use to find UV seams */
- char *vertFlags; /* store options per vert, now only store if the vert is pointing away from the view */
#endif
+ char *vertFlags; /* store options per vert, now only store if the vert is pointing away from the view */
int buckets_x; /* The size of the bucket grid, the grid span's screenMin/screenMax so you can paint outsize the screen or with 2 brushes at once */
int buckets_y;
@@ -341,7 +341,7 @@ typedef struct UndoTile {
typedef struct UndoElem {
struct UndoElem *next, *prev;
char name[MAXUNDONAME];
- unsigned long undosize;
+ uintptr_t undosize;
ImBuf *ibuf;
ListBase tiles;
@@ -485,12 +485,12 @@ static void undo_imagepaint_push_begin(char *name)
static void undo_imagepaint_push_end()
{
UndoElem *uel;
- unsigned long totmem, maxmem;
+ uintptr_t totmem, maxmem;
if(U.undomemory != 0) {
/* limit to maximum memory (afterwards, we can't know in advance) */
totmem= 0;
- maxmem= ((unsigned long)U.undomemory)*1024*1024;
+ maxmem= ((uintptr_t)U.undomemory)*1024*1024;
uel= undobase.last;
while(uel) {
@@ -716,8 +716,8 @@ static int project_paint_PickFace(const ProjPaintState *ps, float pt[2], float w
static void uvco_to_wrapped_pxco(float uv[2], int ibuf_x, int ibuf_y, float *x, float *y)
{
/* use */
- *x = (float)fmod(uv[0], 1.0f);
- *y = (float)fmod(uv[1], 1.0f);
+ *x = (float)fmodf(uv[0], 1.0f);
+ *y = (float)fmodf(uv[1], 1.0f);
if (*x < 0.0f) *x += 1.0f;
if (*y < 0.0f) *y += 1.0f;
@@ -751,7 +751,7 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float
Vec2Weightf(uv, tf->uv[0], tf->uv[2], tf->uv[3], w);
}
- ibuf = BKE_image_get_ibuf((Image *)tf->tpage, NULL); /* TODO - this may be slow, the only way around it is to have an ibuf index per face */
+ ibuf = tf->tpage->ibufs.first; /* we must have got the imbuf before getting here */
if (!ibuf) return 0;
if (interp) {
@@ -760,21 +760,21 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float
if (ibuf->rect_float) {
if (rgba_fp) {
- bilinear_interpolation_color(ibuf, NULL, rgba_fp, x, y);
+ bilinear_interpolation_color_wrap(ibuf, NULL, rgba_fp, x, y);
}
else {
float rgba_tmp_f[4];
- bilinear_interpolation_color(ibuf, NULL, rgba_tmp_f, x, y);
+ bilinear_interpolation_color_wrap(ibuf, NULL, rgba_tmp_f, x, y);
IMAPAINT_FLOAT_RGBA_TO_CHAR(rgba, rgba_tmp_f);
}
}
else {
if (rgba) {
- bilinear_interpolation_color(ibuf, rgba, NULL, x, y);
+ bilinear_interpolation_color_wrap(ibuf, rgba, NULL, x, y);
}
else {
unsigned char rgba_tmp[4];
- bilinear_interpolation_color(ibuf, rgba_tmp, NULL, x, y);
+ bilinear_interpolation_color_wrap(ibuf, rgba_tmp, NULL, x, y);
IMAPAINT_CHAR_RGBA_TO_FLOAT(rgba_fp, rgba_tmp);
}
}
@@ -911,7 +911,7 @@ static int project_bucket_point_occluded(const ProjPaintState *ps, LinkNode *buc
else
isect_ret = project_paint_occlude_ptv(pixelScreenCo, ps->screenCoords[mf->v1], ps->screenCoords[mf->v3], ps->screenCoords[mf->v4], w, ps->is_ortho);
}
- if (isect_ret==1) {
+ if (isect_ret>=1) {
/* TODO - we may want to cache the first hit,
* it is not possible to swap the face order in the list anymore */
return 1;
@@ -939,7 +939,7 @@ static int line_isect_y(const float p1[2], const float p2[2], const float y_leve
return ISECT_TRUE_P2;
}
- y_diff= fabs(p1[1]-p2[1]); /* yuck, horizontal line, we cant do much here */
+ y_diff= fabsf(p1[1]-p2[1]); /* yuck, horizontal line, we cant do much here */
if (y_diff < 0.000001f) {
*x_isect = (p1[0]+p2[0]) * 0.5f;
@@ -972,7 +972,7 @@ static int line_isect_x(const float p1[2], const float p2[2], const float x_leve
return ISECT_TRUE_P2;
}
- x_diff= fabs(p1[0]-p2[0]); /* yuck, horizontal line, we cant do much here */
+ x_diff= fabsf(p1[0]-p2[0]); /* yuck, horizontal line, we cant do much here */
if (x_diff < 0.000001) { /* yuck, vertical line, we cant do much here */
*y_isect = (p1[0]+p2[0]) * 0.5f;
@@ -996,14 +996,15 @@ static int line_isect_x(const float p1[2], const float p2[2], const float x_leve
* Its possible this gives incorrect results, when the UVs for 1 face go into the next
* tile, but do not do this for the adjacent face, it could return a false positive.
* This is so unlikely that Id not worry about it. */
+#ifndef PROJ_DEBUG_NOSEAMBLEED
static int cmp_uv(const float vec2a[2], const float vec2b[2])
{
/* if the UV's are not between 0.0 and 1.0 */
- float xa = (float)fmod(vec2a[0], 1.0f);
- float ya = (float)fmod(vec2a[1], 1.0f);
+ float xa = (float)fmodf(vec2a[0], 1.0f);
+ float ya = (float)fmodf(vec2a[1], 1.0f);
- float xb = (float)fmod(vec2b[0], 1.0f);
- float yb = (float)fmod(vec2b[1], 1.0f);
+ float xb = (float)fmodf(vec2b[0], 1.0f);
+ float yb = (float)fmodf(vec2b[1], 1.0f);
if (xa < 0.0f) xa += 1.0f;
if (ya < 0.0f) ya += 1.0f;
@@ -1011,12 +1012,13 @@ static int cmp_uv(const float vec2a[2], const float vec2b[2])
if (xb < 0.0f) xb += 1.0f;
if (yb < 0.0f) yb += 1.0f;
- return ((fabs(xa-xb) < PROJ_GEOM_TOLERANCE) && (fabs(ya-yb) < PROJ_GEOM_TOLERANCE)) ? 1:0;
+ return ((fabsf(xa-xb) < PROJ_GEOM_TOLERANCE) && (fabsf(ya-yb) < PROJ_GEOM_TOLERANCE)) ? 1:0;
}
-
+#endif
/* set min_px and max_px to the image space bounds of the UV coords
* return zero if there is no area in the returned rectangle */
+#ifndef PROJ_DEBUG_NOSEAMBLEED
static int pixel_bounds_uv(
const float uv1[2], const float uv2[2], const float uv3[2], const float uv4[2],
rcti *bounds_px,
@@ -1044,6 +1046,7 @@ static int pixel_bounds_uv(
/* face uses no UV area when quantized to pixels? */
return (bounds_px->xmin == bounds_px->xmax || bounds_px->ymin == bounds_px->ymax) ? 0 : 1;
}
+#endif
static int pixel_bounds_array(float (* uv)[2], rcti *bounds_px, const int ibuf_x, const int ibuf_y, int tot)
{
@@ -1151,7 +1154,7 @@ static float angleToLength(float angle)
return 1.0f;
}
else {
- return fabs(1.0f / cos(angle * (M_PI/180.0f)));
+ return fabsf(1.0f / cosf(angle * (M_PI/180.0f)));
}
}
@@ -1384,10 +1387,10 @@ static void project_face_pixel(const MTFace *tf_other, ImBuf *ibuf_other, const
if (ibuf_other->rect_float) { /* from float to float */
- bilinear_interpolation_color(ibuf_other, NULL, rgba_f, x, y);
+ bilinear_interpolation_color_wrap(ibuf_other, NULL, rgba_f, x, y);
}
else { /* from char to float */
- bilinear_interpolation_color(ibuf_other, rgba_ub, NULL, x, y);
+ bilinear_interpolation_color_wrap(ibuf_other, rgba_ub, NULL, x, y);
}
}
@@ -1407,7 +1410,7 @@ float project_paint_uvpixel_mask(
ImBuf *ibuf_other;
const MTFace *tf_other = ps->dm_mtface_mask + face_index;
- if (tf_other->tpage && (ibuf_other = BKE_image_get_ibuf((Image *)tf_other->tpage, NULL))) {
+ if (tf_other->tpage && (ibuf_other = BKE_image_get_ibuf(tf_other->tpage, NULL))) {
/* BKE_image_get_ibuf - TODO - this may be slow */
unsigned char rgba_ub[4];
float rgba_f[4];
@@ -1563,7 +1566,7 @@ static ProjPixel *project_paint_uvpixel_init(
ImBuf *ibuf_other;
const MTFace *tf_other = ps->dm_mtface_clone + face_index;
- if (tf_other->tpage && (ibuf_other = BKE_image_get_ibuf((Image *)tf_other->tpage, NULL))) {
+ if (tf_other->tpage && (ibuf_other = BKE_image_get_ibuf(tf_other->tpage, NULL))) {
/* BKE_image_get_ibuf - TODO - this may be slow */
if (ibuf->rect_float) {
@@ -1632,7 +1635,7 @@ static int line_clip_rect2f(
{
/* first account for horizontal, then vertical lines */
/* horiz */
- if (fabs(l1[1]-l2[1]) < PROJ_GEOM_TOLERANCE) {
+ if (fabsf(l1[1]-l2[1]) < PROJ_GEOM_TOLERANCE) {
/* is the line out of range on its Y axis? */
if (l1[1] < rect->ymin || l1[1] > rect->ymax) {
return 0;
@@ -1643,7 +1646,7 @@ static int line_clip_rect2f(
}
- if (fabs(l1[0]-l2[0]) < PROJ_GEOM_TOLERANCE) { /* this is a single point (or close to)*/
+ if (fabsf(l1[0]-l2[0]) < PROJ_GEOM_TOLERANCE) { /* this is a single point (or close to)*/
if (BLI_in_rctf(rect, l1[0], l1[1])) {
VECCOPY2D(l1_clip, l1);
VECCOPY2D(l2_clip, l2);
@@ -1660,7 +1663,7 @@ static int line_clip_rect2f(
CLAMP(l2_clip[0], rect->xmin, rect->xmax);
return 1;
}
- else if (fabs(l1[0]-l2[0]) < PROJ_GEOM_TOLERANCE) {
+ else if (fabsf(l1[0]-l2[0]) < PROJ_GEOM_TOLERANCE) {
/* is the line out of range on its X axis? */
if (l1[0] < rect->xmin || l1[0] > rect->xmax) {
return 0;
@@ -1671,7 +1674,7 @@ static int line_clip_rect2f(
return 0;
}
- if (fabs(l1[1]-l2[1]) < PROJ_GEOM_TOLERANCE) { /* this is a single point (or close to)*/
+ if (fabsf(l1[1]-l2[1]) < PROJ_GEOM_TOLERANCE) { /* this is a single point (or close to)*/
if (BLI_in_rctf(rect, l1[0], l1[1])) {
VECCOPY2D(l1_clip, l1);
VECCOPY2D(l2_clip, l2);
@@ -2015,7 +2018,6 @@ static void project_bucket_clip_face(
const int flip = ((SIDE_OF_LINE(v1coSS, v2coSS, v3coSS) > 0.0f) != (SIDE_OF_LINE(uv1co, uv2co, uv3co) > 0.0f));
float bucket_bounds_ss[4][2];
- float w[3];
/* get the UV space bounding box */
inside_bucket_flag |= BLI_in_rctf(bucket_bounds, v1coSS[0], v1coSS[1]);
@@ -2086,6 +2088,7 @@ static void project_bucket_clip_face(
/* Maximum possible 6 intersections when using a rectangle and triangle */
float isectVCosSS[8][3]; /* The 3rd float is used to store angle for qsort(), NOT as a Z location */
float v1_clipSS[2], v2_clipSS[2];
+ float w[3];
/* calc center*/
float cent[2] = {0.0f, 0.0f};
@@ -2128,6 +2131,7 @@ static void project_bucket_clip_face(
if ((*tot) < 3) { /* no intersections to speak of */
*tot = 0;
+ return;
}
/* now we have all points we need, collect their angles and sort them clockwise */
@@ -2156,16 +2160,15 @@ static void project_bucket_clip_face(
for(i=0; i<(*tot); i++) {
v2_clipSS[0] = isectVCosSS[i][0] - cent[0];
v2_clipSS[1] = isectVCosSS[i][1] - cent[1];
- isectVCosSS[i][2] = atan2(v1_clipSS[0]*v2_clipSS[1] - v1_clipSS[1]*v2_clipSS[0], v1_clipSS[0]*v2_clipSS[0]+v1_clipSS[1]*v2_clipSS[1]);
+ isectVCosSS[i][2] = atan2f(v1_clipSS[0]*v2_clipSS[1] - v1_clipSS[1]*v2_clipSS[0], v1_clipSS[0]*v2_clipSS[0]+v1_clipSS[1]*v2_clipSS[1]);
}
if (flip) qsort(isectVCosSS, *tot, sizeof(float)*3, float_z_sort_flip);
else qsort(isectVCosSS, *tot, sizeof(float)*3, float_z_sort);
-
/* remove doubles */
/* first/last check */
- if (fabs(isectVCosSS[0][0]-isectVCosSS[(*tot)-1][0]) < PROJ_GEOM_TOLERANCE && fabs(isectVCosSS[0][1]-isectVCosSS[(*tot)-1][1]) < PROJ_GEOM_TOLERANCE) {
+ if (fabsf(isectVCosSS[0][0]-isectVCosSS[(*tot)-1][0]) < PROJ_GEOM_TOLERANCE && fabsf(isectVCosSS[0][1]-isectVCosSS[(*tot)-1][1]) < PROJ_GEOM_TOLERANCE) {
(*tot)--;
}
@@ -2180,8 +2183,8 @@ static void project_bucket_clip_face(
while (doubles==TRUE) {
doubles = FALSE;
for(i=1; i<(*tot); i++) {
- if (fabs(isectVCosSS[i-1][0]-isectVCosSS[i][0]) < PROJ_GEOM_TOLERANCE &&
- fabs(isectVCosSS[i-1][1]-isectVCosSS[i][1]) < PROJ_GEOM_TOLERANCE)
+ if (fabsf(isectVCosSS[i-1][0]-isectVCosSS[i][0]) < PROJ_GEOM_TOLERANCE &&
+ fabsf(isectVCosSS[i-1][1]-isectVCosSS[i][1]) < PROJ_GEOM_TOLERANCE)
{
int j;
for(j=i+1; j<(*tot); j++) {
@@ -2309,6 +2312,19 @@ int IsectPoly2Df(const float pt[2], float uv[][2], const int tot)
return 1;
}
+static int IsectPoly2Df_twoside(const float pt[2], float uv[][2], const int tot)
+{
+ int i;
+ int side = (SIDE_OF_LINE(uv[tot-1], uv[0], pt) > 0.0f);
+
+ for (i=1; i<tot; i++) {
+ if ((SIDE_OF_LINE(uv[i-1], uv[i], pt) > 0.0f) != side)
+ return 0;
+
+ }
+
+ return 1;
+}
/* One of the most important function for projectiopn painting, since it selects the pixels to be added into each bucket.
* initialize pixels from this face where it intersects with the bucket_index, optionally initialize pixels for removing seams */
@@ -2352,6 +2368,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
float uv_clip[8][2];
int uv_clip_tot;
const short is_ortho = ps->is_ortho;
+ const short do_backfacecull = ps->do_backfacecull;
vCo[0] = ps->dm_mvert[mf->v1].co;
vCo[1] = ps->dm_mvert[mf->v2].co;
@@ -2361,9 +2378,20 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
/* Use tf_uv_pxoffset instead of tf->uv so we can offset the UV half a pixel
* this is done so we can avoid offseting all the pixels by 0.5 which causes
* problems when wrapping negative coords */
- xhalfpx = 0.5f / ibuf_xf;
- yhalfpx = 0.5f / ibuf_yf;
-
+ xhalfpx = (0.5f+ (PROJ_GEOM_TOLERANCE/3.0f) ) / ibuf_xf;
+ yhalfpx = (0.5f+ (PROJ_GEOM_TOLERANCE/4.0f) ) / ibuf_yf;
+
+ /* Note about (PROJ_GEOM_TOLERANCE/x) above...
+ Needed to add this offset since UV coords are often quads aligned to pixels.
+ In this case pixels can be exactly between 2 triangles causing nasty
+ artifacts.
+
+ This workaround can be removed and painting will still work on most cases
+ but since the first thing most people try is painting onto a quad- better make it work.
+ */
+
+
+
tf_uv_pxoffset[0][0] = tf->uv[0][0] - xhalfpx;
tf_uv_pxoffset[0][1] = tf->uv[0][1] - yhalfpx;
@@ -2399,8 +2427,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
v1coSS = ps->screenCoords[ (*(&mf->v1 + i1)) ];
v2coSS = ps->screenCoords[ (*(&mf->v1 + i2)) ];
v3coSS = ps->screenCoords[ (*(&mf->v1 + i3)) ];
-
-
+
/* This funtion gives is a concave polyline in UV space from the clipped quad and tri*/
project_bucket_clip_face(
is_ortho, bucket_bounds,
@@ -2408,8 +2435,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
uv1co, uv2co, uv3co,
uv_clip, &uv_clip_tot
);
-
-
+
/* sometimes this happens, better just allow for 8 intersectiosn even though there should be max 6 */
/*
if (uv_clip_tot>6) {
@@ -2431,7 +2457,10 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
//uv[0] = (((float)x) + 0.5f) / ibuf->x;
uv[0] = (float)x / ibuf_xf; /* use pixel offset UV coords instead */
- if (IsectPoly2Df(uv, uv_clip, uv_clip_tot)) {
+ /* Note about IsectPoly2Df_twoside, checking the face or uv flipping doesnt work,
+ * could check the poly direction but better to do this */
+ if( (do_backfacecull && IsectPoly2Df(uv, uv_clip, uv_clip_tot)) ||
+ (do_backfacecull==0 && IsectPoly2Df_twoside(uv, uv_clip, uv_clip_tot))) {
has_x_isect = has_isect = 1;
@@ -2518,7 +2547,6 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
float (*outset_uv)[2] = ps->faceSeamUVs[face_index];
float insetCos[4][3]; /* inset face coords. NOTE!!! ScreenSace for ortho, Worldspace in prespective view */
- float *uv_seam_quad[4];
float fac;
float *vCoSS[4]; /* vertex screenspace coords */
@@ -2574,16 +2602,11 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
fac1 = Vec2Lenf(vCoSS[fidx1], bucket_clip_edges[0]) / ftot;
fac2 = Vec2Lenf(vCoSS[fidx1], bucket_clip_edges[1]) / ftot;
- uv_seam_quad[0] = tf_uv_pxoffset[fidx1];
- uv_seam_quad[1] = tf_uv_pxoffset[fidx2];
- uv_seam_quad[2] = outset_uv[fidx2];
- uv_seam_quad[3] = outset_uv[fidx1];
-
- Vec2Lerpf(seam_subsection[0], uv_seam_quad[0], uv_seam_quad[1], fac1);
- Vec2Lerpf(seam_subsection[1], uv_seam_quad[0], uv_seam_quad[1], fac2);
-
- Vec2Lerpf(seam_subsection[2], uv_seam_quad[3], uv_seam_quad[2], fac2);
- Vec2Lerpf(seam_subsection[3], uv_seam_quad[3], uv_seam_quad[2], fac1);
+ Vec2Lerpf(seam_subsection[0], tf_uv_pxoffset[fidx1], tf_uv_pxoffset[fidx2], fac1);
+ Vec2Lerpf(seam_subsection[1], tf_uv_pxoffset[fidx1], tf_uv_pxoffset[fidx2], fac2);
+
+ Vec2Lerpf(seam_subsection[2], outset_uv[fidx1], outset_uv[fidx2], fac2);
+ Vec2Lerpf(seam_subsection[3], outset_uv[fidx1], outset_uv[fidx2], fac1);
/* if the bucket_clip_edges values Z values was kept we could avoid this
* Inset needs to be added so occlusion tests wont hit adjacent faces */
@@ -2636,14 +2659,28 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i
/* Only bother calculating the weights if we intersect */
if (ps->do_mask_normal || ps->dm_mtface_clone) {
- /* TODO, this is not QUITE correct since UV is not inside the UV's but good enough for seams */
+#if 0
+ /* This is not QUITE correct since UV is not inside the UV's but good enough for seams */
if (side) {
BarycentricWeights2f(uv, tf_uv_pxoffset[0], tf_uv_pxoffset[2], tf_uv_pxoffset[3], w);
}
else {
BarycentricWeights2f(uv, tf_uv_pxoffset[0], tf_uv_pxoffset[1], tf_uv_pxoffset[2], w);
}
-
+#endif
+#if 1
+ /* Cheat, we know where we are along the edge so work out the weights from that */
+ fac = fac1 + (fac * (fac2-fac1));
+ w[0]=w[1]=w[2]= 0.0;
+ if (side) {
+ w[fidx1?fidx1-1:0] = fac;
+ w[fidx2?fidx2-1:0] = 1.0-fac;
+ }
+ else {
+ w[fidx1] = fac;
+ w[fidx2] = 1.0-fac;
+ }
+#endif
}
/* a pitty we need to get the worldspace pixel location here */
@@ -3076,7 +3113,7 @@ static void project_paint_begin(ProjPaintState *ps)
ps->buckets_x = (int)(ps->screen_width / (((float)ps->brush->size) / PROJ_BUCKET_BRUSH_DIV));
ps->buckets_y = (int)(ps->screen_height / (((float)ps->brush->size) / PROJ_BUCKET_BRUSH_DIV));
- printf("\tscreenspace bucket division x:%d y:%d\n", ps->buckets_x, ps->buckets_y);
+ /* printf("\tscreenspace bucket division x:%d y:%d\n", ps->buckets_x, ps->buckets_y); */
/* really high values could cause problems since it has to allocate a few
* (ps->buckets_x*ps->buckets_y) sized arrays */
@@ -3232,7 +3269,7 @@ static void project_paint_begin(ProjPaintState *ps)
image_index = BLI_linklist_index(image_LinkList, tf->tpage);
- if (image_index==-1 && BKE_image_get_ibuf((Image *)tf->tpage, NULL)) { /* MemArena dosnt have an append func */
+ if (image_index==-1 && BKE_image_get_ibuf(tf->tpage, NULL)) { /* MemArena dosnt have an append func */
BLI_linklist_append(&image_LinkList, tf->tpage);
image_index = ps->image_tot;
ps->image_tot++;
@@ -3254,10 +3291,10 @@ static void project_paint_begin(ProjPaintState *ps)
for (node= image_LinkList, i=0; node; node= node->next, i++, projIma++) {
projIma->ima = node->link;
- // calloced - projIma->touch = 0;
+ projIma->touch = 0;
projIma->ibuf = BKE_image_get_ibuf(projIma->ima, NULL);
projIma->partRedrawRect = BLI_memarena_alloc(arena, sizeof(ImagePaintPartialRedraw) * PROJ_BOUNDBOX_SQUARED);
- // calloced - memset(projIma->partRedrawRect, 0, sizeof(ImagePaintPartialRedraw) * PROJ_BOUNDBOX_SQUARED);
+ memset(projIma->partRedrawRect, 0, sizeof(ImagePaintPartialRedraw) * PROJ_BOUNDBOX_SQUARED);
}
/* we have built the array, discard the linked list */
@@ -3308,6 +3345,7 @@ static void project_paint_end(ProjPaintState *ps)
int size = sizeof(UndoTile **) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->x) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->y);
last_projIma->undoRect = (UndoTile **) BLI_memarena_alloc(arena, size);
memset(last_projIma->undoRect, 0, size);
+ last_projIma->ibuf->userflags |= IB_BITMAPDIRTY;
}
for (bucket_index = 0; bucket_index < bucket_tot; bucket_index++) {
@@ -3375,15 +3413,16 @@ static void project_paint_end(ProjPaintState *ps)
MEM_freeN(ps->bucketFaces);
MEM_freeN(ps->bucketFlags);
+#ifndef PROJ_DEBUG_NOSEAMBLEED
if (ps->seam_bleed_px > 0.0f) {
MEM_freeN(ps->vertFaces);
MEM_freeN(ps->faceSeamFlags);
MEM_freeN(ps->faceSeamUVs);
}
+#endif
if (ps->vertFlags) MEM_freeN(ps->vertFlags);
-
for (a=0; a<ps->thread_tot; a++) {
BLI_memarena_free(ps->arena_mt[a]);
}
@@ -3411,7 +3450,7 @@ static void partial_redraw_array_init(ImagePaintPartialRedraw *pr)
static int partial_redraw_array_merge(ImagePaintPartialRedraw *pr, ImagePaintPartialRedraw *pr_other, int tot)
{
- int touch;
+ int touch= 0;
while (tot--) {
pr->x1 = MIN2(pr->x1, pr_other->x1);
pr->y1 = MIN2(pr->y1, pr_other->y1);
@@ -3539,6 +3578,7 @@ static void blend_color_mix(unsigned char *cp, const unsigned char *cp1, const u
cp[0]= (mfac*cp1[0]+fac*cp2[0])/255;
cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
+ cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
}
static void blend_color_mix_float(float *cp, const float *cp1, const float *cp2, const float fac)
@@ -3547,6 +3587,7 @@ static void blend_color_mix_float(float *cp, const float *cp1, const float *cp2,
cp[0]= mfac*cp1[0] + fac*cp2[0];
cp[1]= mfac*cp1[1] + fac*cp2[1];
cp[2]= mfac*cp1[2] + fac*cp2[2];
+ cp[3]= mfac*cp1[3] + fac*cp2[3];
}
static void do_projectpaint_clone(ProjPaintState *ps, ProjPixel *projPixel, float *rgba, float alpha, float mask)
@@ -3583,8 +3624,8 @@ static void do_projectpaint_smear(ProjPaintState *ps, ProjPixel *projPixel, floa
if (project_paint_PickColor(ps, co, NULL, rgba_ub, 1)==0)
return;
-
- ((ProjPixelClone *)projPixel)->clonepx.uint = IMB_blend_color(*projPixel->pixel.uint_pt, *((unsigned int *)rgba_ub), (int)(alpha*mask*255), ps->blend);
+ /* ((ProjPixelClone *)projPixel)->clonepx.uint = IMB_blend_color(*projPixel->pixel.uint_pt, *((unsigned int *)rgba_ub), (int)(alpha*mask*255), ps->blend); */
+ blend_color_mix(((ProjPixelClone *)projPixel)->clonepx.ch, projPixel->pixel.ch_pt, rgba_ub, (int)(alpha*mask*255));
BLI_linklist_prepend_arena(smearPixels, (void *)projPixel, smearArena);
}
@@ -3597,7 +3638,8 @@ static void do_projectpaint_smear_f(ProjPaintState *ps, ProjPixel *projPixel, fl
return;
IMAPAINT_FLOAT_RGBA_TO_CHAR(rgba_smear, projPixel->pixel.f_pt);
- ((ProjPixelClone *)projPixel)->clonepx.uint = IMB_blend_color(*((unsigned int *)rgba_smear), *((unsigned int *)rgba_ub), (int)(alpha*mask*255), ps->blend);
+ /* (ProjPixelClone *)projPixel)->clonepx.uint = IMB_blend_color(*((unsigned int *)rgba_smear), *((unsigned int *)rgba_ub), (int)(alpha*mask*255), ps->blend); */
+ blend_color_mix(((ProjPixelClone *)projPixel)->clonepx.ch, rgba_smear, (rgba_ub), (int)(alpha*mask*255));
BLI_linklist_prepend_arena(smearPixels_f, (void *)projPixel, smearArena);
}
@@ -3708,12 +3750,12 @@ static void *do_projectpaint_thread(void *ph_v)
projPixel = (ProjPixel *)node->link;
- /*dist = Vec2Lenf(projPixel->projCoSS, pos);*/ /* correct but uses a sqrt */
+ /*dist = Vec2Lenf(projPixel->projCoSS, pos);*/ /* correct but uses a sqrtf */
dist_nosqrt = Vec2Lenf_nosqrt(projPixel->projCoSS, pos);
- /*if (dist < s->brush->size) {*/ /* correct but uses a sqrt */
+ /*if (dist < s->brush->size) {*/ /* correct but uses a sqrtf */
if (dist_nosqrt < brush_size_sqared) {
- falloff = brush_sample_falloff_noalpha(ps->brush, sqrt(dist_nosqrt));
+ falloff = brush_sample_falloff_noalpha(ps->brush, sqrtf(dist_nosqrt));
if (falloff > 0.0f) {
if (ps->is_texbrush) {
brush_sample_tex(ps->brush, projPixel->projCoSS, rgba);
@@ -3802,10 +3844,9 @@ static void *do_projectpaint_thread(void *ph_v)
*projPixel->pixel.uint_pt = ((ProjPixelClone *)projPixel)->clonepx.uint;
}
- for (node= smearPixels_f; node; node= node->next) { /* this wont run for a float image */
+ for (node= smearPixels_f; node; node= node->next) {
projPixel = node->link;
IMAPAINT_CHAR_RGBA_TO_FLOAT(projPixel->pixel.f_pt, ((ProjPixelClone *)projPixel)->clonepx.ch);
- node = node->next;
}
BLI_memarena_free(smearArena);
@@ -4261,7 +4302,7 @@ static int imapaint_paint_stroke(ViewContext *vc, ImagePaintState *s, BrushPaint
) {
ImBuf *ibuf;
- newimage = (Image*)((s->me->mtface+newfaceindex)->tpage);
+ newimage = (s->me->mtface+newfaceindex)->tpage;
ibuf= BKE_image_get_ibuf(newimage, s->sima? &s->sima->iuser: NULL);
if(ibuf && ibuf->rect)
@@ -4399,6 +4440,7 @@ typedef struct PaintOperation {
int first;
int prevmouse[2];
+ int brush_size_orig;
double starttime;
ViewContext vc;
@@ -4485,6 +4527,8 @@ static int paint_init(bContext *C, wmOperator *op)
pop->ps.brush = pop->s.brush;
pop->ps.tool = pop->s.tool;
pop->ps.blend = pop->s.blend;
+
+ pop->brush_size_orig = pop->ps.brush->size; /* not nice hack because 1 size brushes always fail with projection paint */
}
if(pop->mode != PAINT_MODE_2D) {
@@ -4504,6 +4548,10 @@ static int paint_init(bContext *C, wmOperator *op)
return 0;
}
+
+ /* Dont allow brush size below 2 */
+ if (pop->ps.brush->size<=1)
+ pop->ps.brush->size = 2;
}
/* note, if we have no UVs on the derived mesh, then we must return here */
@@ -4602,8 +4650,10 @@ static void paint_exit(bContext *C, wmOperator *op)
imapaint_canvas_free(&pop->s);
brush_painter_free(pop->painter);
- if(pop->mode == PAINT_MODE_3D_PROJECT)
+ if(pop->mode == PAINT_MODE_3D_PROJECT) {
+ pop->ps.brush->size = pop->brush_size_orig;
project_paint_end(&pop->ps);
+ }
paint_redraw(C, &pop->s, 1);
undo_imagepaint_push_end();
@@ -5186,3 +5236,4 @@ void PAINT_OT_texture_paint_radial_control(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 0c20c0cc1cf..0710079301b 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1274,7 +1274,7 @@ static void wpaint_exit(bContext *C, wmOperator *op)
for(psys= ob->particlesystem.first; psys; psys= psys->next) {
for(i=0; i<PSYS_TOT_VG; i++) {
if(psys->vgroup[i]==ob->actdef) {
- psys->recalc |= PSYS_RECALC_HAIR;
+ psys->recalc |= PSYS_RECALC_RESET;
break;
}
}
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index cdac40e6cd9..0ae39a661c1 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -1064,6 +1064,7 @@ static void sculpt_update_mesh_elements(bContext *C)
{
SculptSession *ss = CTX_data_tool_settings(C)->sculpt->session;
Object *ob = CTX_data_active_object(C);
+ int oldtotvert = ss->totvert;
if((ss->multires = sculpt_multires_active(ob))) {
DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH);
@@ -1082,7 +1083,10 @@ static void sculpt_update_mesh_elements(bContext *C)
ss->face_normals = NULL;
}
- if(ss->totvert != ss->fmap_size) {
+ if(ss->totvert != oldtotvert) {
+ if(ss->projverts) MEM_freeN(ss->projverts);
+ ss->projverts = NULL;
+
if(ss->fmap) MEM_freeN(ss->fmap);
if(ss->fmap_mem) MEM_freeN(ss->fmap_mem);
create_vert_face_map(&ss->fmap, &ss->fmap_mem, ss->mface, ss->totvert, ss->totface);
@@ -1517,6 +1521,7 @@ static void sculpt_flush_update(bContext *C)
mmd->undo_verts = s->session->mvert;
mmd->undo_verts_tot = s->session->totvert;
+ multires_mark_as_modified(CTX_data_active_object(C));
}
ED_region_tag_redraw(ar);
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
new file mode 100644
index 00000000000..255bee1bf5a
--- /dev/null
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -0,0 +1,695 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_armature_types.h"
+#include "DNA_lamp_types.h"
+#include "DNA_material_types.h"
+#include "DNA_modifier_types.h"
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
+#include "DNA_particle_types.h"
+#include "DNA_texture_types.h"
+#include "DNA_world_types.h"
+
+#include "BLI_listbase.h"
+
+#include "BKE_context.h"
+#include "BKE_material.h"
+#include "BKE_modifier.h"
+#include "BKE_particle.h"
+#include "BKE_screen.h"
+#include "BKE_utildefines.h"
+#include "BKE_world.h"
+
+#include "RNA_access.h"
+
+#include "ED_screen.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+#include "buttons_intern.h" // own include
+
+typedef struct ButsContextPath {
+ PointerRNA ptr[8];
+ int len;
+ int worldtex;
+} ButsContextPath;
+
+static int set_pointer_type(ButsContextPath *path, bContextDataResult *result, StructRNA *type)
+{
+ PointerRNA *ptr;
+ int a;
+
+ for(a=0; a<path->len; a++) {
+ ptr= &path->ptr[a];
+
+ if(RNA_struct_is_a(ptr->type, type)) {
+ CTX_data_pointer_set(result, ptr->id.data, ptr->type, ptr->data);
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static PointerRNA *get_pointer_type(ButsContextPath *path, StructRNA *type)
+{
+ PointerRNA *ptr;
+ int a;
+
+ for(a=0; a<path->len; a++) {
+ ptr= &path->ptr[a];
+
+ if(RNA_struct_is_a(ptr->type, type))
+ return ptr;
+ }
+
+ return NULL;
+}
+
+/************************* Creating the Path ************************/
+
+static int buttons_context_path_scene(ButsContextPath *path)
+{
+ PointerRNA *ptr= &path->ptr[path->len-1];
+
+ /* this one just verifies */
+ return RNA_struct_is_a(ptr->type, &RNA_Scene);
+}
+
+static int buttons_context_path_world(ButsContextPath *path)
+{
+ Scene *scene;
+ PointerRNA *ptr= &path->ptr[path->len-1];
+
+ /* if we already have a (pinned) world, we're done */
+ if(RNA_struct_is_a(ptr->type, &RNA_World)) {
+ return 1;
+ }
+ /* if we have a scene, use the scene's world */
+ else if(buttons_context_path_scene(path)) {
+ scene= path->ptr[path->len-1].data;
+
+ RNA_id_pointer_create(&scene->world->id, &path->ptr[path->len]);
+ path->len++;
+
+ return 1;
+ }
+
+ /* no path to a world possible */
+ return 0;
+}
+
+
+static int buttons_context_path_object(ButsContextPath *path)
+{
+ Scene *scene;
+ Object *ob;
+ PointerRNA *ptr= &path->ptr[path->len-1];
+
+ /* if we already have a (pinned) object, we're done */
+ if(RNA_struct_is_a(ptr->type, &RNA_Object)) {
+ return 1;
+ }
+ /* if we have a scene, use the scene's active object */
+ else if(buttons_context_path_scene(path)) {
+ scene= path->ptr[path->len-1].data;
+ ob= (scene->basact)? scene->basact->object: NULL;
+
+ if(ob) {
+ RNA_id_pointer_create(&ob->id, &path->ptr[path->len]);
+ path->len++;
+
+ return 1;
+ }
+ }
+
+ /* no path to a object possible */
+ return 0;
+}
+
+static int buttons_context_path_data(ButsContextPath *path, int type)
+{
+ Object *ob;
+ PointerRNA *ptr= &path->ptr[path->len-1];
+
+ /* if we already have a data, we're done */
+ if(RNA_struct_is_a(ptr->type, &RNA_Mesh) && (type == -1 || type == OB_MESH)) return 1;
+ else if(RNA_struct_is_a(ptr->type, &RNA_Curve) && (type == -1 || ELEM3(type, OB_CURVE, OB_SURF, OB_FONT))) return 1;
+ else if(RNA_struct_is_a(ptr->type, &RNA_Armature) && (type == -1 || type == OB_ARMATURE)) return 1;
+ else if(RNA_struct_is_a(ptr->type, &RNA_MetaBall) && (type == -1 || type == OB_MBALL)) return 1;
+ else if(RNA_struct_is_a(ptr->type, &RNA_Lattice) && (type == -1 || type == OB_LATTICE)) return 1;
+ else if(RNA_struct_is_a(ptr->type, &RNA_Camera) && (type == -1 || type == OB_CAMERA)) return 1;
+ else if(RNA_struct_is_a(ptr->type, &RNA_Lamp) && (type == -1 || type == OB_LAMP)) return 1;
+ /* try to get an object in the path, no pinning supported here */
+ else if(buttons_context_path_object(path)) {
+ ob= path->ptr[path->len-1].data;
+
+ if(ob && (type == -1 || type == ob->type)) {
+ RNA_id_pointer_create(ob->data, &path->ptr[path->len]);
+ path->len++;
+
+ return 1;
+ }
+ }
+
+ /* no path to data possible */
+ return 0;
+}
+
+static int buttons_context_path_modifier(ButsContextPath *path)
+{
+ Object *ob;
+
+ if(buttons_context_path_object(path)) {
+ ob= path->ptr[path->len-1].data;
+
+ if(ob && ELEM4(ob->type, OB_MESH, OB_CURVE, OB_FONT, OB_SURF))
+ return 1;
+ }
+
+ return 0;
+}
+
+static int buttons_context_path_material(ButsContextPath *path)
+{
+ Object *ob;
+ PointerRNA *ptr= &path->ptr[path->len-1];
+ Material *ma;
+
+ /* if we already have a (pinned) material, we're done */
+ if(RNA_struct_is_a(ptr->type, &RNA_Material)) {
+ return 1;
+ }
+ /* if we have an object, use the object material slot */
+ else if(buttons_context_path_object(path)) {
+ ob= path->ptr[path->len-1].data;
+
+ if(ob && ob->type && (ob->type<OB_LAMP)) {
+ ma= give_current_material(ob, ob->actcol);
+ RNA_id_pointer_create(&ma->id, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+
+ /* no path to a material possible */
+ return 0;
+}
+
+static Bone *find_active_bone(Bone *bone)
+{
+ Bone *active;
+
+ for(; bone; bone=bone->next) {
+ if(bone->flag & BONE_ACTIVE)
+ return bone;
+
+ active= find_active_bone(bone->childbase.first);
+ if(active)
+ return active;
+ }
+
+ return NULL;
+}
+
+static int buttons_context_path_bone(ButsContextPath *path)
+{
+ bArmature *arm;
+ Bone *bone;
+
+ /* if we have an armature, get the active bone */
+ if(buttons_context_path_data(path, OB_ARMATURE)) {
+ arm= path->ptr[path->len-1].data;
+ bone= find_active_bone(arm->bonebase.first);
+
+ if(bone) {
+ RNA_pointer_create(&arm->id, &RNA_Bone, bone, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+
+ /* no path to a bone possible */
+ return 0;
+}
+
+static int buttons_context_path_particle(ButsContextPath *path)
+{
+ Object *ob;
+ ParticleSystem *psys;
+
+ /* if we have an object, get the active particle system */
+ if(buttons_context_path_object(path)) {
+ ob= path->ptr[path->len-1].data;
+
+ if(ob && ob->type == OB_MESH) {
+ psys= psys_get_current(ob);
+
+ RNA_pointer_create(&ob->id, &RNA_ParticleSystem, psys, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+
+ /* no path to a particle system possible */
+ return 0;
+}
+
+static int buttons_context_path_texture(ButsContextPath *path)
+{
+ Material *ma;
+ Lamp *la;
+ World *wo;
+ MTex *mtex;
+ Tex *tex;
+ PointerRNA *ptr= &path->ptr[path->len-1];
+
+ /* if we already have a (pinned) texture, we're done */
+ if(RNA_struct_is_a(ptr->type, &RNA_Texture)) {
+ return 1;
+ }
+ /* try world */
+ else if(path->worldtex && buttons_context_path_world(path)) {
+ wo= path->ptr[path->len-1].data;
+
+ if(wo) {
+ mtex= wo->mtex[(int)wo->texact];
+ tex= (mtex)? mtex->tex: NULL;
+
+ RNA_id_pointer_create(&tex->id, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+ /* try material */
+ else if(buttons_context_path_material(path)) {
+ ma= path->ptr[path->len-1].data;
+
+ if(ma) {
+ mtex= ma->mtex[(int)ma->texact];
+ tex= (mtex)? mtex->tex: NULL;
+
+ RNA_id_pointer_create(&tex->id, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+ /* try lamp */
+ else if(buttons_context_path_data(path, OB_LAMP)) {
+ la= path->ptr[path->len-1].data;
+
+ if(la) {
+ mtex= la->mtex[(int)la->texact];
+ tex= (mtex)? mtex->tex: NULL;
+
+ RNA_id_pointer_create(&tex->id, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
+ /* TODO: material nodes, brush */
+
+ /* no path to a particle system possible */
+ return 0;
+}
+
+static int buttons_context_path(const bContext *C, ButsContextPath *path, int mainb, int worldtex)
+{
+ SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
+ ID *id;
+ int found;
+
+ memset(path, 0, sizeof(*path));
+ path->worldtex= worldtex;
+
+ /* if some ID datablock is pinned, set the root pointer */
+ if(sbuts->pinid) {
+ id= sbuts->pinid;
+
+ RNA_id_pointer_create(id, &path->ptr[0]);
+ path->len++;
+ }
+
+ /* no pinned root, use scene as root */
+ if(path->len == 0) {
+ id= (ID*)CTX_data_scene(C);
+ RNA_id_pointer_create(id, &path->ptr[0]);
+ path->len++;
+ }
+
+ /* now for each buttons context type, we try to construct a path,
+ * tracing back recursively */
+ switch(mainb) {
+ case BCONTEXT_SCENE:
+ found= buttons_context_path_scene(path);
+ break;
+ case BCONTEXT_WORLD:
+ found= buttons_context_path_world(path);
+ break;
+ case BCONTEXT_OBJECT:
+ case BCONTEXT_PHYSICS:
+ case BCONTEXT_CONSTRAINT:
+ found= buttons_context_path_object(path);
+ break;
+ case BCONTEXT_MODIFIER:
+ found= buttons_context_path_modifier(path);
+ break;
+ case BCONTEXT_DATA:
+ found= buttons_context_path_data(path, -1);
+ break;
+ case BCONTEXT_PARTICLE:
+ found= buttons_context_path_particle(path);
+ break;
+ case BCONTEXT_MATERIAL:
+ found= buttons_context_path_material(path);
+ break;
+ case BCONTEXT_TEXTURE:
+ found= buttons_context_path_texture(path);
+ break;
+ case BCONTEXT_BONE:
+ found= buttons_context_path_bone(path);
+ break;
+ default:
+ found= 0;
+ break;
+ }
+
+ return found;
+}
+
+void buttons_context_compute(const bContext *C, SpaceButs *sbuts)
+{
+ ButsContextPath *path;
+ PointerRNA *ptr;
+ int a, worldtex, flag= 0;
+
+ if(!sbuts->path)
+ sbuts->path= MEM_callocN(sizeof(ButsContextPath), "ButsContextPath");
+
+ path= sbuts->path;
+ worldtex= (sbuts->flag & SB_WORLD_TEX);
+
+ /* for each context, see if we can compute a valid path to it, if
+ * this is the case, we know we have to display the button */
+ for(a=0; a<BCONTEXT_TOT; a++) {
+ if(buttons_context_path(C, path, a, worldtex)) {
+ flag |= (1<<a);
+
+ /* setting icon for data context */
+ if(a == BCONTEXT_DATA) {
+ ptr= &path->ptr[path->len-1];
+
+ if(ptr->type)
+ sbuts->dataicon= RNA_struct_ui_icon(ptr->type);
+ else
+ sbuts->dataicon= ICON_EMPTY_DATA;
+ }
+ }
+ }
+
+ /* in case something becomes invalid, change */
+ if((flag & (1 << sbuts->mainb)) == 0) {
+ if(flag & BCONTEXT_OBJECT) {
+ sbuts->mainb= BCONTEXT_OBJECT;
+ }
+ else {
+ for(a=0; a<BCONTEXT_TOT; a++) {
+ if(flag & (1 << a)) {
+ sbuts->mainb= a;
+ break;
+ }
+ }
+ }
+ }
+
+ buttons_context_path(C, path, sbuts->mainb, worldtex);
+
+ if(!(flag & (1 << sbuts->mainb))) {
+ if(flag & (1 << BCONTEXT_OBJECT))
+ sbuts->mainb= BCONTEXT_OBJECT;
+ else
+ sbuts->mainb= BCONTEXT_SCENE;
+ }
+
+ sbuts->pathflag= flag;
+}
+
+/************************* Context Callback ************************/
+
+int buttons_context(const bContext *C, const char *member, bContextDataResult *result)
+{
+ SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
+ ButsContextPath *path= sbuts?sbuts->path:NULL;
+
+ if(!path)
+ return 0;
+
+ /* here we handle context, getting data from precomputed path */
+
+ if(CTX_data_equals(member, "world")) {
+ set_pointer_type(path, result, &RNA_World);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "object")) {
+ set_pointer_type(path, result, &RNA_Object);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "mesh")) {
+ set_pointer_type(path, result, &RNA_Mesh);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "armature")) {
+ set_pointer_type(path, result, &RNA_Armature);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "lattice")) {
+ set_pointer_type(path, result, &RNA_Lattice);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "curve")) {
+ set_pointer_type(path, result, &RNA_Curve);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "meta_ball")) {
+ set_pointer_type(path, result, &RNA_MetaBall);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "lamp")) {
+ set_pointer_type(path, result, &RNA_Lamp);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "camera")) {
+ set_pointer_type(path, result, &RNA_Camera);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "material")) {
+ set_pointer_type(path, result, &RNA_Material);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "texture")) {
+ set_pointer_type(path, result, &RNA_Texture);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "material_slot")) {
+ PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
+
+ if(ptr) {
+ Object *ob= ptr->data;
+
+ if(ob && ob->type && (ob->type<OB_LAMP))
+ CTX_data_pointer_set(result, &ob->id, &RNA_MaterialSlot, ob->mat+ob->actcol-1);
+ }
+
+ return 1;
+ }
+ else if(CTX_data_equals(member, "texture_slot")) {
+ PointerRNA *ptr;
+
+ if((ptr=get_pointer_type(path, &RNA_Material))) {
+ Material *ma= ptr->data;
+
+ if(ma)
+ CTX_data_pointer_set(result, &ma->id, &RNA_MaterialTextureSlot, ma->mtex[(int)ma->texact]);
+ }
+ else if((ptr=get_pointer_type(path, &RNA_Lamp))) {
+ Lamp *la= ptr->data;
+
+ if(la)
+ CTX_data_pointer_set(result, &la->id, &RNA_LampTextureSlot, la->mtex[(int)la->texact]);
+ }
+ else if((ptr=get_pointer_type(path, &RNA_World))) {
+ World *wo= ptr->data;
+
+ if(wo)
+ CTX_data_pointer_set(result, &wo->id, &RNA_WorldTextureSlot, wo->mtex[(int)wo->texact]);
+ }
+ else if((ptr=get_pointer_type(path, &RNA_Brush))) { /* how to get this into context? */
+ Brush *br= ptr->data;
+
+ if(br)
+ CTX_data_pointer_set(result, &br->id, &RNA_TextureSlot, br->mtex[(int)br->texact]);
+ }
+
+ return 1;
+ }
+ else if(CTX_data_equals(member, "bone")) {
+ set_pointer_type(path, result, &RNA_Bone);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "particle_system")) {
+ set_pointer_type(path, result, &RNA_ParticleSystem);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "cloth")) {
+ set_pointer_type(path, result, &RNA_ClothModifier);
+ return 1;
+ }
+ else if(CTX_data_equals(member, "soft_body")) {
+ PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
+
+ if(ptr && ptr->data) {
+ Object *ob= ptr->data;
+ CTX_data_pointer_set(result, &ob->id, &RNA_SoftBodySettings, ob->soft);
+ return 1;
+ }
+ }
+ else if(CTX_data_equals(member, "fluid")) {
+ PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
+
+ if(ptr && ptr->data) {
+ Object *ob= ptr->data;
+ ModifierData *md= modifiers_findByType(ob, eModifierType_Fluidsim);
+ CTX_data_pointer_set(result, &ob->id, &RNA_FluidSimulationModifier, md);
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+/************************* Drawing the Path ************************/
+
+static void pin_cb(bContext *C, void *arg1, void *arg2)
+{
+ SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
+ ButsContextPath *path= sbuts->path;
+ PointerRNA *ptr;
+ int a;
+
+ if(sbuts->flag & SB_PIN_CONTEXT) {
+ if(path->len) {
+ for(a=path->len-1; a>=0; a--) {
+ ptr= &path->ptr[a];
+
+ if(ptr->id.data) {
+ sbuts->pinid= ptr->id.data;
+ break;
+ }
+ }
+ }
+ }
+ else
+ sbuts->pinid= NULL;
+
+ ED_area_tag_redraw(CTX_wm_area(C));
+}
+
+void buttons_context_draw(const bContext *C, uiLayout *layout)
+{
+ SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
+ ButsContextPath *path= sbuts->path;
+ uiLayout *row;
+ uiBlock *block;
+ uiBut *but;
+ PointerRNA *ptr;
+ PropertyRNA *nameprop;
+ char namebuf[128], *name;
+ int a, icon;
+
+ if(!path)
+ return;
+
+ row= uiLayoutRow(layout, 0);
+ uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_LEFT);
+
+ block= uiLayoutGetBlock(row);
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+ but= uiDefIconButBitC(block, ICONTOG, SB_PIN_CONTEXT, 0, (sbuts->flag & SB_PIN_CONTEXT)? ICON_PINNED: ICON_UNPINNED, 0, 0, UI_UNIT_X, UI_UNIT_Y, &sbuts->flag, 0, 0, 0, 0, "Follow context or keep fixed datablock displayed.");
+ uiButSetFunc(but, pin_cb, NULL, NULL);
+
+ for(a=0; a<path->len; a++) {
+ ptr= &path->ptr[a];
+
+ if(ptr->data) {
+ icon= RNA_struct_ui_icon(ptr->type);
+ nameprop= RNA_struct_name_property(ptr->type);
+
+#if 0
+ if(sbuts->mainb != BCONTEXT_SCENE && ptr->type == &RNA_Scene) {
+ uiItemL(row, "", icon); /* save some space */
+ }
+ else
+#endif
+ if(nameprop) {
+ name= RNA_property_string_get_alloc(ptr, nameprop, namebuf, sizeof(namebuf));
+
+ uiItemL(row, name, icon);
+
+ if(name != namebuf)
+ MEM_freeN(name);
+ }
+ else
+ uiItemL(row, "", icon);
+ }
+ }
+}
+
+static void buttons_panel_context(const bContext *C, Panel *pa)
+{
+ buttons_context_draw(C, pa->layout);
+}
+
+void buttons_context_register(ARegionType *art)
+{
+ PanelType *pt;
+
+ pt= MEM_callocN(sizeof(PanelType), "spacetype buttons panel context");
+ strcpy(pt->idname, "BUTTONS_PT_context");
+ strcpy(pt->label, "Context");
+ pt->draw= buttons_panel_context;
+ BLI_addtail(&art->paneltypes, pt);
+}
+
diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c
index 03b2ce9d11c..79284ada483 100644
--- a/source/blender/editors/space_buttons/buttons_header.c
+++ b/source/blender/editors/space_buttons/buttons_header.c
@@ -114,6 +114,8 @@ static uiBlock *dummy_viewmenu(bContext *C, ARegion *ar, void *arg_unused)
static void do_buttons_buttons(bContext *C, void *arg, int event)
{
+ SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
+
switch(event) {
case B_NEWFRAME:
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, NULL);
@@ -121,18 +123,26 @@ static void do_buttons_buttons(bContext *C, void *arg, int event)
case B_CONTEXT_SWITCH:
case B_BUTSPREVIEW:
ED_area_tag_redraw(CTX_wm_area(C));
+
+ /* silly exception */
+ if(sbuts->mainb == BCONTEXT_WORLD)
+ sbuts->flag |= SB_WORLD_TEX;
+ else if(sbuts->mainb != BCONTEXT_TEXTURE)
+ sbuts->flag &= ~SB_WORLD_TEX;
+
+ sbuts->preview= 1;
break;
}
}
-
void buttons_header_buttons(const bContext *C, ARegion *ar)
{
ScrArea *sa= CTX_wm_area(C);
SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
- Object *ob= CTX_data_active_object(C);
uiBlock *block;
- int xco, yco= 3, dataicon= ICON_OBJECT_DATA;
+ int xco, yco= 3;
+
+ buttons_context_compute(C, sbuts);
block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
uiBlockSetHandleFunc(block, do_buttons_buttons, NULL);
@@ -148,68 +158,36 @@ void buttons_header_buttons(const bContext *C, ARegion *ar)
xco+=xmax;
}
- // DATA Icons
- if(ob) {
- switch(ob->type) {
- case OB_EMPTY: dataicon= ICON_EMPTY_DATA; break;
- case OB_MESH: dataicon= ICON_MESH_DATA; break;
- case OB_CURVE: dataicon= ICON_CURVE_DATA; break;
- case OB_SURF: dataicon= ICON_SURFACE_DATA; break;
- case OB_FONT: dataicon= ICON_FONT_DATA; break;
- case OB_MBALL: dataicon= ICON_META_DATA; break;
- case OB_LAMP: dataicon= ICON_LAMP_DATA; break;
- case OB_CAMERA: dataicon= ICON_CAMERA_DATA; break;
- case OB_LATTICE: dataicon= ICON_LATTICE_DATA; break;
- case OB_ARMATURE: dataicon= ICON_ARMATURE_DATA; break;
- default: break;
- }
- }
uiBlockSetEmboss(block, UI_EMBOSS);
- // if object selection changed, validate button selection
- if(ob && (ob->type == OB_LAMP) && ELEM3(sbuts->mainb, (float)BCONTEXT_MATERIAL, (float)BCONTEXT_PARTICLE, (float)BCONTEXT_PHYSICS))
- sbuts->mainb = (float)BCONTEXT_DATA;
-
- if(ob && (ob->type == OB_EMPTY) && ELEM3(sbuts->mainb, (float)BCONTEXT_MATERIAL, (float)BCONTEXT_TEXTURE, (float)BCONTEXT_PARTICLE))
- sbuts->mainb = (float)BCONTEXT_DATA;
-
- if((ob && ELEM(ob->type, OB_CAMERA, OB_ARMATURE)) && ELEM4(sbuts->mainb, (float)BCONTEXT_MATERIAL, (float)BCONTEXT_TEXTURE, (float)BCONTEXT_PARTICLE, (float)BCONTEXT_PHYSICS))
- sbuts->mainb = (float)BCONTEXT_DATA;
-
- if((ob && (ob->type != OB_ARMATURE)) && (sbuts->mainb == (float)BCONTEXT_BONE))
- sbuts->mainb = (float)BCONTEXT_DATA;
-
- if(!ob && !ELEM(sbuts->mainb, (float)BCONTEXT_SCENE, (float)BCONTEXT_WORLD))
- sbuts->mainb = (float)BCONTEXT_WORLD;
-
- if((ob && ELEM5(ob->type, OB_EMPTY, OB_MBALL, OB_LAMP, OB_CAMERA, OB_ARMATURE)) && (sbuts->mainb == (float) BCONTEXT_MODIFIER))
- sbuts->mainb = (float)BCONTEXT_DATA;
+ xco -= XIC;
// Default panels
uiBlockBeginAlign(block);
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE, xco, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_SCENE, 0, 0, "Scene");
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_WORLD, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_WORLD, 0, 0, "World");
-
- // Specific panels, check on active object seletion
- if(ob) {
+ if(sbuts->pathflag & (1<<BCONTEXT_SCENE))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_SCENE, 0, 0, "Scene");
+ if(sbuts->pathflag & (1<<BCONTEXT_WORLD))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_WORLD, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_WORLD, 0, 0, "World");
+ if(sbuts->pathflag & (1<<BCONTEXT_OBJECT))
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_OBJECT_DATA, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_OBJECT, 0, 0, "Object");
-
- if(ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE))
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MODIFIER, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_MODIFIER, 0, 0, "Modifier");
-
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, dataicon, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_DATA, 0, 0, "Object Data");
- if((ob->type == OB_ARMATURE))
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_BONE_DATA, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_BONE, 0, 0, "Bone");
- if(ELEM5(ob->type, OB_MESH, OB_SURF, OB_MBALL, OB_CURVE, OB_FONT))
- uiDefIconButS(block, ROW, B_BUTSPREVIEW, ICON_MATERIAL, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_MATERIAL, 0, 0, "Material");
- if(ELEM6(ob->type, OB_MESH, OB_SURF, OB_MBALL, OB_CURVE, OB_FONT, OB_LAMP))
- uiDefIconButS(block, ROW, B_BUTSPREVIEW, ICON_TEXTURE, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_TEXTURE, 0, 0, "Texture");
- if(ELEM5(ob->type, OB_MESH, OB_SURF, OB_MBALL, OB_CURVE, OB_FONT))
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_PARTICLES, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_PARTICLE, 0, 0, "Particles");
- if(ELEM6(ob->type, OB_MESH, OB_SURF, OB_MBALL, OB_CURVE, OB_FONT, OB_EMPTY))
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_PHYSICS, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_PHYSICS, 0, 0, "Physics");
- }
+ if(sbuts->pathflag & (1<<BCONTEXT_CONSTRAINT))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_CONSTRAINT, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_CONSTRAINT, 0, 0, "Constraint");
+ if(sbuts->pathflag & (1<<BCONTEXT_MODIFIER))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MODIFIER, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_MODIFIER, 0, 0, "Modifier");
+ if(sbuts->pathflag & (1<<BCONTEXT_DATA))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, sbuts->dataicon, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_DATA, 0, 0, "Object Data");
+ if(sbuts->pathflag & (1<<BCONTEXT_BONE))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_BONE_DATA, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_BONE, 0, 0, "Bone");
+ if(sbuts->pathflag & (1<<BCONTEXT_MATERIAL))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MATERIAL, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_MATERIAL, 0, 0, "Material");
+ if(sbuts->pathflag & (1<<BCONTEXT_TEXTURE))
+ uiDefIconButS(block, ROW, B_BUTSPREVIEW, ICON_TEXTURE, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_TEXTURE, 0, 0, "Texture");
+ if(sbuts->pathflag & (1<<BCONTEXT_PARTICLE))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_PARTICLES, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_PARTICLE, 0, 0, "Particles");
+ if(sbuts->pathflag & (1<<BCONTEXT_PHYSICS))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_PHYSICS, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_PHYSICS, 0, 0, "Physics");
+
xco+= XIC;
uiBlockEndAlign(block);
@@ -218,11 +196,6 @@ void buttons_header_buttons(const bContext *C, ARegion *ar)
uiDefButI(block, NUM, B_NEWFRAME, "", (xco+20),yco,60,YIC, &(CTX_data_scene(C)->r.cfra), 1.0, MAXFRAMEF, 0, 0, "Displays Current Frame of animation. Click to change.");
xco+= 80;
-// XXX buttons_active_id(&id, &idfrom);
-// sbuts->lockpoin= id;
-
-
-
/* always as last */
UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
diff --git a/source/blender/editors/space_buttons/buttons_intern.h b/source/blender/editors/space_buttons/buttons_intern.h
index 6050b4f0562..196647a3750 100644
--- a/source/blender/editors/space_buttons/buttons_intern.h
+++ b/source/blender/editors/space_buttons/buttons_intern.h
@@ -31,20 +31,10 @@
struct ARegion;
struct ARegionType;
struct bContext;
-
-/* warning: the values of these defines are used in sbuts->tabs[8] */
-/* buts->mainb new */
-#define BCONTEXT_SCENE 0
-#define BCONTEXT_WORLD 1
-#define BCONTEXT_OBJECT 2
-#define BCONTEXT_DATA 3
-#define BCONTEXT_MATERIAL 4
-#define BCONTEXT_TEXTURE 5
-#define BCONTEXT_PARTICLE 6
-#define BCONTEXT_PHYSICS 7
-#define BCONTEXT_GAME 8
-#define BCONTEXT_BONE 9
-#define BCONTEXT_MODIFIER 10
+struct bContextDataResult;
+struct SpaceButs;
+struct uiLayout;
+struct wmOperatorType;
/* buts->scaflag */
#define BUTS_SENS_SEL 1
@@ -61,8 +51,19 @@ struct bContext;
/* internal exports only */
-/* image_header.c */
+/* buttons_header.c */
void buttons_header_buttons(const struct bContext *C, struct ARegion *ar);
+/* buttons_context.c */
+void buttons_context_compute(const struct bContext *C, struct SpaceButs *sbuts);
+int buttons_context(const struct bContext *C, const char *member, struct bContextDataResult *result);
+void buttons_context_draw(const struct bContext *C, struct uiLayout *layout);
+void buttons_context_register(struct ARegionType *art);
+
+/* buttons_ops.c */
+void MATERIAL_OT_new(struct wmOperatorType *ot);
+void TEXTURE_OT_new(struct wmOperatorType *ot);
+void WORLD_OT_new(struct wmOperatorType *ot);
+
#endif /* ED_BUTTONS_INTERN_H */
diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c
new file mode 100644
index 00000000000..63469a8294d
--- /dev/null
+++ b/source/blender/editors/space_buttons/buttons_ops.c
@@ -0,0 +1,194 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_object_types.h"
+#include "DNA_material_types.h"
+#include "DNA_texture_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_world_types.h"
+
+#include "BKE_context.h"
+#include "BKE_library.h"
+#include "BKE_material.h"
+#include "BKE_texture.h"
+#include "BKE_world.h"
+
+#include "RNA_access.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "buttons_intern.h" // own include
+
+/********************** new material operator *********************/
+
+static int new_material_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ Material *ma;
+ Object *ob;
+ int index;
+
+ /* add or copy material */
+ ptr= CTX_data_pointer_get(C, "material");
+ ma= (RNA_struct_is_a(ptr.type, &RNA_Material))? ptr.data: NULL;
+
+ if(ma)
+ ma= copy_material(ma);
+ else
+ ma= add_material("Material");
+
+ ma->id.us--; /* compensating for us++ in assign_material */
+
+ /* attempt to assign to material slot */
+ ptr= CTX_data_pointer_get(C, "material_slot");
+
+ if(RNA_struct_is_a(ptr.type, &RNA_MaterialSlot)) {
+ ob= ptr.id.data;
+ index= (Material**)ptr.data - ob->mat;
+
+ assign_material(ob, ma, index+1);
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void MATERIAL_OT_new(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "New Material";
+ ot->idname= "MATERIAL_OT_new";
+
+ /* api callbacks */
+ ot->exec= new_material_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/********************** new texture operator *********************/
+
+static int new_texture_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ ID *id;
+ Tex *tex;
+ MTex *mtex;
+
+ /* add or copy texture */
+ ptr= CTX_data_pointer_get(C, "texture");
+ tex= (RNA_struct_is_a(ptr.type, &RNA_Texture))? ptr.data: NULL;
+
+ if(tex)
+ tex= copy_texture(tex);
+ else
+ tex= add_texture("Texture");
+
+ id_us_min(&tex->id);
+
+ /* attempt to assign to texture slot */
+ ptr= CTX_data_pointer_get(C, "texture_slot");
+
+ if(RNA_struct_is_a(ptr.type, &RNA_TextureSlot)) {
+ id= ptr.id.data;
+ mtex= ptr.data;
+
+ if(mtex) {
+ if(mtex->tex)
+ id_us_min(&mtex->tex->id);
+ mtex->tex= tex;
+ id_us_plus(&tex->id);
+ }
+
+ /* XXX nodes, notifier .. */
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXTURE_OT_new(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "New Texture";
+ ot->idname= "TEXTURE_OT_new";
+
+ /* api callbacks */
+ ot->exec= new_texture_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/********************** new world operator *********************/
+
+static int new_world_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ Scene *scene;
+ World *wo;
+
+ /* add or copy world */
+ ptr= CTX_data_pointer_get(C, "world");
+ wo= (RNA_struct_is_a(ptr.type, &RNA_World))? ptr.data: NULL;
+
+ if(wo)
+ wo= copy_world(wo);
+ else
+ wo= add_world("World");
+
+ /* assign to scene */
+ scene= CTX_data_scene(C);
+
+ if(scene->world)
+ id_us_min(&scene->world->id);
+ scene->world= wo;
+
+ // XXX notifier
+
+ return OPERATOR_FINISHED;
+}
+
+void WORLD_OT_new(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "New World";
+ ot->idname= "WORLD_OT_new";
+
+ /* api callbacks */
+ ot->exec= new_world_exec;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index 9f5e0f5974a..38ce88019ed 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -33,6 +33,7 @@
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
#include "MEM_guardedalloc.h"
@@ -79,6 +80,14 @@ static SpaceLink *buttons_new(const bContext *C)
ar->regiontype= RGN_TYPE_HEADER;
ar->alignment= RGN_ALIGN_BOTTOM;
+#if 0
+ /* context area */
+ ar= MEM_callocN(sizeof(ARegion), "context area for buts");
+ BLI_addtail(&sbuts->regionbase, ar);
+ ar->regiontype= RGN_TYPE_CHANNELS;
+ ar->alignment= RGN_ALIGN_TOP;
+#endif
+
/* main area */
ar= MEM_callocN(sizeof(ARegion), "main area for buts");
@@ -122,9 +131,10 @@ static void buttons_free(SpaceLink *sl)
if (sbuts->ri->rect) MEM_freeN(sbuts->ri->rect);
MEM_freeN(sbuts->ri);
}
-
-}
+ if(sbuts->path)
+ MEM_freeN(sbuts->path);
+}
/* spacetype; init callback */
static void buttons_init(struct wmWindowManager *wm, ScrArea *sa)
@@ -146,6 +156,7 @@ static SpaceLink *buttons_duplicate(SpaceLink *sl)
/* clear or remove stuff from old */
sbutsn->ri= NULL;
+ sbutsn->path= NULL;
return (SpaceLink *)sbutsn;
}
@@ -168,6 +179,8 @@ static void buttons_main_area_draw(const bContext *C, ARegion *ar)
SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
int vertical= (sbuts->align == BUT_VERTICAL);
+ buttons_context_compute(C, sbuts);
+
if(sbuts->mainb == BCONTEXT_SCENE)
ED_region_panels(C, ar, vertical, "scene");
else if(sbuts->mainb == BCONTEXT_WORLD)
@@ -188,15 +201,18 @@ static void buttons_main_area_draw(const bContext *C, ARegion *ar)
ED_region_panels(C, ar, vertical, "bone");
else if(sbuts->mainb == BCONTEXT_MODIFIER)
ED_region_panels(C, ar, vertical, "modifier");
+ else if (sbuts->mainb == BCONTEXT_CONSTRAINT)
+ ED_region_panels(C, ar, vertical, "constraint");
sbuts->re_align= 0;
sbuts->mainbo= sbuts->mainb;
- sbuts->tabo= sbuts->tab[sbuts->mainb];
}
void buttons_operatortypes(void)
{
-
+ WM_operatortype_append(MATERIAL_OT_new);
+ WM_operatortype_append(TEXTURE_OT_new);
+ WM_operatortype_append(WORLD_OT_new);
}
void buttons_keymap(struct wmWindowManager *wm)
@@ -232,16 +248,74 @@ static void buttons_header_area_draw(const bContext *C, ARegion *ar)
UI_view2d_view_restore(C);
}
+#if 0
+/* add handlers, stuff you only do once or on area/region changes */
+static void buttons_context_area_init(wmWindowManager *wm, ARegion *ar)
+{
+ UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
+}
+
+#define CONTEXTY 30
+
+static void buttons_context_area_draw(const bContext *C, ARegion *ar)
+{
+ SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
+ uiStyle *style= U.uistyles.first;
+ uiBlock *block;
+ uiLayout *layout;
+ View2D *v2d= &ar->v2d;
+ float col[3];
+ int x, y, w, h;
+
+ buttons_context_compute(C, sbuts);
+
+ w= v2d->cur.xmax - v2d->cur.xmin;
+ h= v2d->cur.ymax - v2d->cur.ymin;
+ UI_view2d_view_ortho(C, v2d);
+
+ /* create UI */
+ block= uiBeginBlock(C, ar, "buttons_context", UI_EMBOSS);
+ layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_PANEL,
+ style->panelspace, h - (h-UI_UNIT_Y)/2, w, 20, style);
+
+ buttons_context_draw(C, layout);
+
+ uiBlockLayoutResolve(C, block, &x, &y);
+ uiEndBlock(C, block);
+
+ /* draw */
+ UI_SetTheme(SPACE_BUTS, RGN_TYPE_WINDOW); /* XXX */
+
+ UI_GetThemeColor3fv(TH_BACK, col);
+ glClearColor(col[0], col[1], col[2], 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ UI_view2d_totRect_set(v2d, x, -y);
+ UI_view2d_view_ortho(C, v2d);
+
+ uiDrawBlock(C, block);
+
+ /* restore view matrix */
+ UI_view2d_view_restore(C);
+}
+#endif
+
/* reused! */
-static void buttons_area_listener(ARegion *ar, wmNotifier *wmn)
+static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
{
+ SpaceButs *sbuts= sa->spacedata.first;
+
/* context changes */
switch(wmn->category) {
case NC_SCENE:
switch(wmn->data) {
case ND_FRAME:
+ ED_area_tag_redraw(sa);
+ break;
+
case ND_OB_ACTIVE:
- ED_region_tag_redraw(ar);
+ ED_area_tag_redraw(sa);
+ sbuts->preview= 1;
break;
}
break;
@@ -251,10 +325,31 @@ static void buttons_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_BONE_ACTIVE:
case ND_BONE_SELECT:
case ND_GEOM_SELECT:
- ED_region_tag_redraw(ar);
+ ED_area_tag_redraw(sa);
break;
}
break;
+ case NC_MATERIAL:
+ ED_area_tag_redraw(sa);
+
+ switch(wmn->data) {
+ case ND_SHADING:
+ case ND_SHADING_DRAW:
+ /* currently works by redraws... if preview is set, it (re)starts job */
+ sbuts->preview= 1;
+ printf("shader notifier \n");
+ break;
+ }
+ break;
+ case NC_WORLD:
+ ED_area_tag_redraw(sa);
+ sbuts->preview= 1;
+ case NC_LAMP:
+ ED_area_tag_redraw(sa);
+ sbuts->preview= 1;
+ case NC_TEXTURE:
+ ED_area_tag_redraw(sa);
+ sbuts->preview= 1;
}
}
@@ -272,15 +367,18 @@ void ED_spacetype_buttons(void)
st->duplicate= buttons_duplicate;
st->operatortypes= buttons_operatortypes;
st->keymap= buttons_keymap;
+ st->listener= buttons_area_listener;
+ st->context= buttons_context;
/* regions: main window */
art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region");
art->regionid = RGN_TYPE_WINDOW;
art->init= buttons_main_area_init;
art->draw= buttons_main_area_draw;
- art->listener= buttons_area_listener;
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
BLI_addhead(&st->regiontypes, art);
+
+ buttons_context_register(art);
/* regions: header */
art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region");
@@ -290,19 +388,20 @@ void ED_spacetype_buttons(void)
art->init= buttons_header_area_init;
art->draw= buttons_header_area_draw;
- art->listener= buttons_area_listener;
BLI_addhead(&st->regiontypes, art);
-
- /* regions: channels */
+
+#if 0
+ /* regions: context */
art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region");
art->regionid = RGN_TYPE_CHANNELS;
- art->minsizex= 80;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
-
-// art->init= buttons_channel_area_init;
-// art->draw= buttons_channel_area_draw;
+ art->minsizey= CONTEXTY;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
+ art->init= buttons_context_area_init;
+ art->draw= buttons_context_area_draw;;
+ art->listener= buttons_area_listener;
BLI_addhead(&st->regiontypes, art);
+#endif
BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 55b2910f769..6ed8f87d987 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -182,12 +182,17 @@ static float shorten_string(char* string, float w, int flag)
float sw = 0;
float pad = 0;
+ if (w <= 0) {
+ *string = '\0';
+ return 0.0;
+ }
+
sw = file_string_width(string);
if (flag == FILE_SHORTEN_FRONT) {
char *s = string;
BLI_strncpy(temp, "...", 4);
pad = file_string_width(temp);
- while (s && (sw+pad>w)) {
+ while ((*s) && (sw+pad>w)) {
s++;
sw = file_string_width(s);
shortened = 1;
@@ -206,6 +211,7 @@ static float shorten_string(char* string, float w, int flag)
sw = file_string_width(s);
shortened = 1;
}
+
if (shortened) {
int slen = strlen(string);
if (slen > 3) {
@@ -438,13 +444,11 @@ void file_draw_list(const bContext *C, ARegion *ar)
int colorid = 0;
short sx, sy;
int offset;
- short type;
int i;
float sw, spos;
numfiles = filelist_numfiles(files);
- type = filelist_gettype(files);
-
+
sx = ar->v2d.tot.xmin + layout->tile_border_x/2;
sy = ar->v2d.cur.ymax - layout->tile_border_y;
diff --git a/source/blender/editors/space_file/file_header.c b/source/blender/editors/space_file/file_header.c
index bfa0a553334..4799003d6c7 100644
--- a/source/blender/editors/space_file/file_header.c
+++ b/source/blender/editors/space_file/file_header.c
@@ -63,6 +63,7 @@
#define B_SORTIMASELLIST 1
#define B_RELOADIMASELDIR 2
#define B_FILTERIMASELDIR 3
+#define B_HIDEDOTFILES 4
/* ************************ header area region *********************** */
@@ -88,6 +89,14 @@ static void do_file_header_buttons(bContext *C, void *arg, int event)
}
}
WM_event_add_notifier(C, NC_WINDOW, NULL);
+ break;
+ case B_HIDEDOTFILES:
+ if(sfile->params) {
+ filelist_free(sfile->files);
+ filelist_hidedot(sfile->files, sfile->params->flag & FILE_HIDE_DOT);
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ }
+ break;
}
}
@@ -126,15 +135,14 @@ void file_header_buttons(const bContext *C, ARegion *ar)
xco += 5;
- if (sfile->params->type != FILE_MAIN) {
- uiBlockBeginAlign(block);
- uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_SHORTDISPLAY, xco+=XIC, yco, XIC,YIC, &params->display, 1.0, FILE_SHORTDISPLAY, 0, 0, "Displays short file description");
- uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_LONGDISPLAY, xco+=XIC, yco, XIC,YIC, &params->display, 1.0, FILE_LONGDISPLAY, 0, 0, "Displays long file description");
- uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_IMGDISPLAY, xco+=XIC, yco, XIC,YIC, &params->display, 1.0, FILE_IMGDISPLAY, 0, 0, "Displays files as thumbnails");
- uiBlockEndAlign(block);
-
- xco+=XIC;
- }
+ uiBlockBeginAlign(block);
+ uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_SHORTDISPLAY, xco+=XIC, yco, XIC,YIC, &params->display, 1.0, FILE_SHORTDISPLAY, 0, 0, "Displays short file description");
+ uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_LONGDISPLAY, xco+=XIC, yco, XIC,YIC, &params->display, 1.0, FILE_LONGDISPLAY, 0, 0, "Displays long file description");
+ uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_IMGDISPLAY, xco+=XIC, yco, XIC,YIC, &params->display, 1.0, FILE_IMGDISPLAY, 0, 0, "Displays files as thumbnails");
+ uiBlockEndAlign(block);
+
+ xco+=XIC;
+
uiBlockBeginAlign(block);
uiDefIconButS(block, ROW, B_SORTIMASELLIST, ICON_SORTALPHA, xco+=XIC, yco, XIC,YIC, &params->sort, 1.0, 0.0, 0, 0, "Sorts files alphabetically");
@@ -144,17 +152,8 @@ void file_header_buttons(const bContext *C, ARegion *ar)
uiBlockEndAlign(block);
xco+=XIC;
-
- /* replace with consistent sub-region collapsing
- if (sfile->params->type != FILE_MAIN) {
- uiBlockBeginAlign(block);
- // uiDefIconButBitS(block, TOG, FILE_BOOKMARKS, B_RELOADIMASELDIR, ICON_BOOKMARKS,xco+=XIC,0,XIC,YIC, &params->flag, 0, 0, 0, 0, "Toggles Bookmarks on/off");
- uiDefIconButO(block, TOG, "FILE_OT_bookmark_toggle", WM_OP_INVOKE_DEFAULT, ICON_BOOKMARKS, xco+XIC,yco,20,20, "Toggle Bookmarks");
- uiBlockEndAlign(block);
- xco+=XIC;
- }
- */
-
+ uiDefIconButBitS(block, TOG, FILE_HIDE_DOT, B_HIDEDOTFILES, ICON_GHOST,xco+=XIC,yco,XIC,YIC, &params->flag, 0, 0, 0, 0, "Hide dot files");
+ xco+=XIC;
uiDefIconButBitS(block, TOG, FILE_FILTER, B_FILTERIMASELDIR, ICON_FILTER,xco+=XIC,yco,XIC,YIC, &params->flag, 0, 0, 0, 0, "Filter files");
if (params->flag & FILE_FILTER) {
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 94c023207f5..0c6cadc05c1 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -66,7 +66,7 @@
/* ---------- FILE SELECTION ------------ */
-static int find_file_mouse(SpaceFile *sfile, struct ARegion* ar, short x, short y)
+static int find_file_mouse(SpaceFile *sfile, struct ARegion* ar, short x, short y, short clamp)
{
float fx,fy;
int active_file = -1;
@@ -77,10 +77,15 @@ static int find_file_mouse(SpaceFile *sfile, struct ARegion* ar, short x, short
active_file = ED_fileselect_layout_offset(sfile->layout, v2d->tot.xmin + fx, v2d->tot.ymax - fy);
- if ( (active_file < 0) || (active_file >= numfiles) )
- {
- active_file = -1;
+ if(active_file < 0) {
+ if(clamp) active_file= 0;
+ else active_file= -1;
}
+ else if(active_file >= numfiles) {
+ if(clamp) active_file= numfiles-1;
+ else active_file= -1;
+ }
+
return active_file;
}
@@ -105,13 +110,13 @@ static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short v
int act_file;
short selecting = (val == LEFTMOUSE);
FileSelectParams *params = ED_fileselect_get_params(sfile);
- FileLayout *layout = ED_fileselect_get_layout(sfile, ar);
+ // FileLayout *layout = ED_fileselect_get_layout(sfile, ar);
int numfiles = filelist_numfiles(sfile->files);
params->selstate = NOTACTIVE;
- first_file = find_file_mouse(sfile, ar, rect->xmin, rect->ymax);
- last_file = find_file_mouse(sfile, ar, rect->xmax, rect->ymin);
+ first_file = find_file_mouse(sfile, ar, rect->xmin, rect->ymax, 1);
+ last_file = find_file_mouse(sfile, ar, rect->xmax, rect->ymin, 1);
/* select all valid files between first and last indicated */
if ( (first_file >= 0) && (first_file < numfiles) && (last_file >= 0) && (last_file < numfiles) ) {
@@ -125,7 +130,7 @@ static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short v
}
/* make the last file active */
- if (last_file >= 0 && last_file < numfiles) {
+ if (selecting && (last_file >= 0 && last_file < numfiles)) {
struct direntry* file = filelist_file(sfile->files, last_file);
params->active_file = last_file;
@@ -185,6 +190,8 @@ static int file_border_select_exec(bContext *C, wmOperator *op)
rect.xmax= RNA_int_get(op->ptr, "xmax");
rect.ymax= RNA_int_get(op->ptr, "ymax");
+ BLI_isect_rctf(&(ar->v2d.mask), &rect, &rect);
+
file_select(sfile, ar, &rect, val );
WM_event_add_notifier(C, NC_WINDOW, NULL);
return OPERATOR_FINISHED;
@@ -412,7 +419,7 @@ int file_hilight_set(SpaceFile *sfile, ARegion *ar, int mx, int my)
numfiles = filelist_numfiles(sfile->files);
params = ED_fileselect_get_params(sfile);
- actfile = find_file_mouse(sfile, ar, mx , my);
+ actfile = find_file_mouse(sfile, ar, mx , my, 0);
if (params && (actfile >= 0) && (actfile < numfiles) ) {
params->active_file=actfile;
@@ -480,6 +487,36 @@ int file_exec(bContext *C, wmOperator *unused)
strcat(name, sfile->params->file);
RNA_string_set(op->ptr, "filename", name);
+ /* some ops have multiple files to select */
+ {
+ PointerRNA itemptr;
+ int i, numfiles = filelist_numfiles(sfile->files);
+ struct direntry *file;
+ if(RNA_struct_find_property(op->ptr, "files")) {
+ for (i=0; i<numfiles; i++) {
+ file = filelist_file(sfile->files, i);
+ if(file->flags & ACTIVE) {
+ if ((file->type & S_IFDIR)==0) {
+ RNA_collection_add(op->ptr, "files", &itemptr);
+ RNA_string_set(&itemptr, "name", file->relname);
+ }
+ }
+ }
+ }
+
+ if(RNA_struct_find_property(op->ptr, "dirs")) {
+ for (i=0; i<numfiles; i++) {
+ file = filelist_file(sfile->files, i);
+ if(file->flags & ACTIVE) {
+ if ((file->type & S_IFDIR)) {
+ RNA_collection_add(op->ptr, "dirs", &itemptr);
+ RNA_string_set(&itemptr, "name", file->relname);
+ }
+ }
+ }
+ }
+ }
+
fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1);
BLI_make_file_string(G.sce, name, BLI_gethome(), ".Bfs");
fsmenu_write_file(fsmenu_get(), name);
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 01cdf559c58..766dec7c064 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -113,7 +113,6 @@ typedef struct FileList
int numfiles;
int numfiltered;
char dir[FILE_MAX];
- short type;
int has_func;
short prv_w;
short prv_h;
@@ -171,7 +170,7 @@ static int compare_name(const void *a1, const void *a2)
if( strcmp(entry1->relname, "..")==0 ) return (-1);
if( strcmp(entry2->relname, "..")==0 ) return (1);
- return (BLI_strcasecmp(entry1->relname,entry2->relname));
+ return (BLI_natstrcmp(entry1->relname,entry2->relname));
}
static int compare_date(const void *a1, const void *a2)
@@ -202,7 +201,7 @@ static int compare_date(const void *a1, const void *a2)
if ( entry1->s.st_mtime < entry2->s.st_mtime) return 1;
if ( entry1->s.st_mtime > entry2->s.st_mtime) return -1;
- else return BLI_strcasecmp(entry1->relname,entry2->relname);
+ else return BLI_natstrcmp(entry1->relname,entry2->relname);
}
static int compare_size(const void *a1, const void *a2)
@@ -232,7 +231,7 @@ static int compare_size(const void *a1, const void *a2)
if ( entry1->s.st_size < entry2->s.st_size) return 1;
if ( entry1->s.st_size > entry2->s.st_size) return -1;
- else return BLI_strcasecmp(entry1->relname,entry2->relname);
+ else return BLI_natstrcmp(entry1->relname,entry2->relname);
}
static int compare_extension(const void *a1, const void *a2) {
@@ -358,12 +357,6 @@ void filelist_free_icons()
struct FileList* filelist_new()
{
FileList* p = MEM_callocN( sizeof(FileList), "filelist" );
- p->filelist = 0;
- p->numfiles = 0;
- p->dir[0] = '\0';
- p->type = 0;
- p->has_func = 0;
- p->filter = 0;
return p;
}
@@ -373,7 +366,6 @@ struct FileList* filelist_copy(struct FileList* filelist)
BLI_strncpy(p->dir, filelist->dir, FILE_MAX);
p->filelist = NULL;
p->fidx = NULL;
- p->type = filelist->type;
return p;
}
@@ -413,6 +405,7 @@ void filelist_free(struct FileList* filelist)
filelist->filelist = 0;
filelist->filter = 0;
filelist->numfiltered =0;
+ filelist->hide_dot =0;
}
int filelist_numfiles(struct FileList* filelist)
@@ -510,48 +503,46 @@ void filelist_loadimage(struct FileList* filelist, int index)
if (!filelist->filelist[fidx].image)
{
- if (filelist->type != FILE_MAIN)
- {
- if ( (filelist->filelist[fidx].flags & IMAGEFILE) || (filelist->filelist[fidx].flags & MOVIEFILE) ) {
- imb = IMB_thumb_read(filelist->dir, filelist->filelist[fidx].relname, THB_NORMAL);
- }
- if (imb) {
- if (imb->x > imb->y) {
- scaledx = (float)imgwidth;
- scaledy = ( (float)imb->y/(float)imb->x )*imgwidth;
- }
- else {
- scaledy = (float)imgheight;
- scaledx = ( (float)imb->x/(float)imb->y )*imgheight;
- }
- ex = (short)scaledx;
- ey = (short)scaledy;
-
- dx = imgwidth - ex;
- dy = imgheight - ey;
-
- // IMB_scaleImBuf(imb, ex, ey);
- filelist->filelist[fidx].image = imb;
- } else {
- /* prevent loading image twice */
- FileImage* limg = filelist->loadimages.first;
- short found= 0;
- while(limg) {
- if (limg->index == fidx) {
- found= 1;
- break;
- }
- limg= limg->next;
- }
- if (!found) {
- FileImage* limg = MEM_callocN(sizeof(struct FileImage), "loadimage");
- limg->index= fidx;
- limg->lock= 0;
- limg->filelist= filelist;
- BLI_addtail(&filelist->loadimages, limg);
+
+ if ( (filelist->filelist[fidx].flags & IMAGEFILE) || (filelist->filelist[fidx].flags & MOVIEFILE) ) {
+ imb = IMB_thumb_read(filelist->dir, filelist->filelist[fidx].relname, THB_NORMAL);
+ }
+ if (imb) {
+ if (imb->x > imb->y) {
+ scaledx = (float)imgwidth;
+ scaledy = ( (float)imb->y/(float)imb->x )*imgwidth;
+ }
+ else {
+ scaledy = (float)imgheight;
+ scaledx = ( (float)imb->x/(float)imb->y )*imgheight;
+ }
+ ex = (short)scaledx;
+ ey = (short)scaledy;
+
+ dx = imgwidth - ex;
+ dy = imgheight - ey;
+
+ // IMB_scaleImBuf(imb, ex, ey);
+ filelist->filelist[fidx].image = imb;
+ } else {
+ /* prevent loading image twice */
+ FileImage* limg = filelist->loadimages.first;
+ short found= 0;
+ while(limg) {
+ if (limg->index == fidx) {
+ found= 1;
+ break;
}
- }
- }
+ limg= limg->next;
+ }
+ if (!found) {
+ FileImage* limg = MEM_callocN(sizeof(struct FileImage), "loadimage");
+ limg->index= fidx;
+ limg->lock= 0;
+ limg->filelist= filelist;
+ BLI_addtail(&filelist->loadimages, limg);
+ }
+ }
}
}
@@ -826,16 +817,6 @@ void filelist_swapselect(struct FileList* filelist)
}
}
-void filelist_settype(struct FileList* filelist, int type)
-{
- filelist->type = type;
-}
-
-short filelist_gettype(struct FileList* filelist)
-{
- return filelist->type;
-}
-
void filelist_sort(struct FileList* filelist, short sort)
{
struct direntry *file;
diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h
index 4aa8359b068..f10c89926d6 100644
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@ -70,8 +70,7 @@ void filelist_readdir(struct FileList* filelist);
int filelist_empty(struct FileList* filelist);
void filelist_parent(struct FileList* filelist);
void filelist_setfiletypes(struct FileList* filelist, short has_quicktime);
-void filelist_settype(struct FileList* filelist, int type);
-short filelist_gettype(struct FileList* filelist);
+
#ifdef __cplusplus
}
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index cbd1457e562..d57fc7f90bc 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -84,13 +84,13 @@
FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile)
{
if (!sfile->params) {
- ED_fileselect_set_params(sfile, FILE_UNIX, "", "/", 0, FILE_SHORTDISPLAY, 0);
+ ED_fileselect_set_params(sfile, "", "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORTALPHA);
}
return sfile->params;
}
-short ED_fileselect_set_params(SpaceFile *sfile, int type, const char *title, const char *path,
- short flag, short display, short filter)
+short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *path,
+ short flag, short display, short filter, short sort)
{
char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX];
FileSelectParams *params;
@@ -101,39 +101,26 @@ short ED_fileselect_set_params(SpaceFile *sfile, int type, const char *title, co
params = sfile->params;
- params->type = type;
params->flag = flag;
params->display = display;
params->filter = filter;
+ params->sort = sort;
BLI_strncpy(params->title, title, sizeof(params->title));
BLI_strncpy(name, path, sizeof(name));
BLI_convertstringcode(name, G.sce);
-
- switch(type) {
- case FILE_MAIN:
- break;
- case FILE_LOADLIB:
- break;
- case FILE_BLENDER:
- case FILE_LOADFONT:
- default:
- {
- BLI_split_dirfile(name, dir, file);
- BLI_strncpy(params->file, file, sizeof(params->file));
- BLI_strncpy(params->dir, dir, sizeof(params->dir));
- BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
- }
- break;
- }
+
+ BLI_split_dirfile(name, dir, file);
+ BLI_strncpy(params->file, file, sizeof(params->file));
+ BLI_strncpy(params->dir, dir, sizeof(params->dir));
+ BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
return 1;
}
void ED_fileselect_reset_params(SpaceFile *sfile)
{
- sfile->params->type = FILE_UNIX;
sfile->params->flag = 0;
sfile->params->title[0] = '\0';
}
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 084fcf1e5f6..37d8f2bffa4 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -156,7 +156,6 @@ static SpaceLink *file_duplicate(SpaceLink *sl)
sfilen->params= MEM_dupallocN(sfileo->params);
filelist_setdir(sfilen->files, sfilen->params->dir);
- filelist_settype(sfilen->files, sfilen->params->type);
}
if (sfileo->layout) {
sfilen->layout= MEM_dupallocN(sfileo->layout);
@@ -193,7 +192,6 @@ static void file_main_area_draw(const bContext *C, ARegion *ar)
if (!sfile->files) {
sfile->files = filelist_new();
filelist_setdir(sfile->files, params->dir);
- filelist_settype(sfile->files, params->type);
params->active_file = -1; // added this so it opens nicer (ton)
}
diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c
index f6d9406e7da..acf712d0147 100644
--- a/source/blender/editors/space_graph/graph_draw.c
+++ b/source/blender/editors/space_graph/graph_draw.c
@@ -748,7 +748,7 @@ void graph_draw_ghost_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, Vie
FCurve *fcu;
/* draw with thick dotted lines */
- setlinestyle(1);
+ setlinestyle(10);
glLineWidth(3.0f);
/* anti-aliased lines for less jagged appearance */
diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c
index 9c887edc50d..9451a22fe6f 100644
--- a/source/blender/editors/space_image/image_header.c
+++ b/source/blender/editors/space_image/image_header.c
@@ -141,18 +141,13 @@ static void image_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
show_uvedit= ED_space_image_show_uvedit(sima, CTX_data_edit_object(C));
/* create menu */
- uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_view_properties_panel"); // View Properties...
- uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_image_properties_panel"); // Image Properties...|N
- uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_realtime_properties_panel"); // Real-time properties...
- if(show_paint) uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_paint_panel"); // Paint Tool...|C
- uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_curves_panel"); // Curves Tool...
- if(show_render) uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_compositing_preview_panel"); // Compositing Preview...|Shift P
- uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_grease_pencil_panel"); // Grease Pencil...
+ uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_properties");
+ //if(show_render) uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_compositing_preview_panel"); // Compositing Preview...|Shift P
uiItemS(layout);
- uiItemR(layout, NULL, 0, &spaceptr, "update_automatically", 0, 0);
- // XXX if(show_uvedit) uiItemR(layout, NULL, 0, &uvptr, "local_view", 0, 0); // "UV Local View", Numpad /
+ uiItemR(layout, NULL, 0, &spaceptr, "update_automatically", 0, 0, 0);
+ // XXX if(show_uvedit) uiItemR(layout, NULL, 0, &uvptr, "local_view", 0, 0, 0); // "UV Local View", Numpad /
uiItemS(layout);
@@ -235,7 +230,7 @@ static void image_imagemenu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemS(layout);
- uiItemR(layout, NULL, 0, &spaceptr, "image_painting", 0, 0);
+ uiItemR(layout, NULL, 0, &spaceptr, "image_painting", 0, 0, 0);
/* move to realtime properties panel */
RNA_id_pointer_create(&ima->id, &imaptr);
@@ -339,12 +334,12 @@ static void image_uvsmenu(bContext *C, uiLayout *layout, void *arg_unused)
RNA_id_pointer_create(&scene->id, &sceneptr);
/* create menu */
- uiItemR(layout, NULL, 0, &uvptr, "snap_to_pixels", 0, 0);
- uiItemR(layout, NULL, 0, &uvptr, "constrain_to_image_bounds", 0, 0);
+ uiItemR(layout, NULL, 0, &uvptr, "snap_to_pixels", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &uvptr, "constrain_to_image_bounds", 0, 0, 0);
uiItemS(layout);
- uiItemR(layout, NULL, 0, &uvptr, "live_unwrap", 0, 0);
+ uiItemR(layout, NULL, 0, &uvptr, "live_unwrap", 0, 0, 0);
uiItemO(layout, NULL, 0, "UV_OT_unwrap");
uiItemBooleanO(layout, "Unpin", 0, "UV_OT_pin", "clear", 1);
uiItemO(layout, NULL, 0, "UV_OT_pin");
@@ -364,7 +359,7 @@ static void image_uvsmenu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemS(layout);
- uiItemR(layout, NULL, 0, &sceneptr, "proportional_editing", 0, 0);
+ uiItemR(layout, NULL, 0, &sceneptr, "proportional_editing", 0, 0, 0);
uiItemMenuEnumR(layout, NULL, 0, &sceneptr, "proportional_editing_falloff");
uiItemS(layout);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 6efd508c335..378d91c8e32 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -579,7 +579,7 @@ void IMAGE_OT_view_zoom_ratio(wmOperatorType *ot)
static char *filesel_imagetype_string(Image *ima)
{
- char *strp, *str= MEM_callocN(14*32, "menu for filesel");
+ char *strp, *str= MEM_callocN(15*32, "menu for filesel");
strp= str;
str += sprintf(str, "Save Image as: %%t|");
@@ -588,6 +588,9 @@ static char *filesel_imagetype_string(Image *ima)
str += sprintf(str, "PNG %%x%d|", R_PNG);
str += sprintf(str, "BMP %%x%d|", R_BMP);
str += sprintf(str, "Jpeg %%x%d|", R_JPEG90);
+#ifdef WITH_OPENJPEG
+ str += sprintf(str, "Jpeg 2000 %%x%d|", R_JP2);
+#endif
str += sprintf(str, "Iris %%x%d|", R_IRIS);
if(G.have_libtiff)
str += sprintf(str, "Tiff %%x%d|", R_TIFF);
@@ -1133,7 +1136,7 @@ static int pack_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_CANCELLED;
if(!as_png && (ibuf && (ibuf->userflags & IB_BITMAPDIRTY))) {
- pup= uiPupMenuBegin(C, "OK", ICON_HELP);
+ pup= uiPupMenuBegin(C, "OK", ICON_QUESTION);
layout= uiPupMenuLayout(pup);
uiItemBooleanO(layout, "Can't pack edited image from disk. Pack as internal PNG?", 0, op->idname, "as_png", 1);
uiPupMenuEnd(C, pup);
diff --git a/source/blender/editors/space_info/info_header.c b/source/blender/editors/space_info/info_header.c
index af792d0b22c..c8dd3df8425 100644
--- a/source/blender/editors/space_info/info_header.c
+++ b/source/blender/editors/space_info/info_header.c
@@ -72,8 +72,9 @@ static int error() {return 0;}
/* ************************ header area region *********************** */
-#define B_STOPRENDER 1
-#define B_STOPCAST 2
+#define B_STOPRENDER 1
+#define B_STOPCAST 2
+#define B_STOPANIM 3
static void do_viewmenu(bContext *C, void *arg, int event)
{
@@ -261,18 +262,18 @@ uiBlock *info_externalfiles(bContext *C, ARegion *ar, void *arg_unused)
static void info_filemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiLayoutContext(layout, WM_OP_EXEC_AREA);
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_AREA);
uiItemO(layout, NULL, 0, "WM_OT_read_homefile");
- uiLayoutContext(layout, WM_OP_INVOKE_AREA);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_AREA);
uiItemO(layout, NULL, 0, "WM_OT_open_mainfile");
// uiDefIconTextBlockBut(block, info_openrecentmenu, NULL, ICON_RIGHTARROW_THIN, "Open Recent",0, yco-=20, 120, 19, "");
// uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Recover Last Session", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
uiItemS(layout);
- uiLayoutContext(layout, WM_OP_EXEC_AREA);
+ uiLayoutSetOperatorContext(layout, WM_OP_EXEC_AREA);
uiItemO(layout, NULL, 0, "WM_OT_save_mainfile");
- uiLayoutContext(layout, WM_OP_INVOKE_AREA);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_AREA);
uiItemO(layout, NULL, 0, "WM_OT_save_as_mainfile");
#if 0
@@ -328,6 +329,9 @@ static void do_info_buttons(bContext *C, void *arg, int event)
case B_STOPCAST:
WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C));
break;
+ case B_STOPANIM:
+ ED_screen_animation_timer(C, 0, 0);
+ break;
}
}
@@ -383,6 +387,40 @@ static void scene_idpoin_handle(bContext *C, ID *id, int event)
}
}
+static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
+{
+ wmOperatorType *ot= arg2;
+
+ if(ot)
+ WM_operator_name_call(C, ot->idname, WM_OP_INVOKE_DEFAULT, NULL);
+}
+
+static void operator_search_cb(const struct bContext *C, void *arg, char *str, uiSearchItems *items)
+{
+ wmOperatorType *ot = WM_operatortype_first();
+
+ for(; ot; ot= ot->next) {
+
+ if(BLI_strcasestr(ot->name, str)) {
+ if(ot->poll==NULL || ot->poll((bContext *)C)) {
+ char name[256];
+ int len= strlen(ot->name);
+
+ /* display name for menu, can hold hotkey */
+ BLI_strncpy(name, ot->name, 256);
+
+ /* check for hotkey */
+ if(len < 256-6) {
+ if(WM_key_event_operator_string(C, ot->idname, WM_OP_EXEC_DEFAULT, NULL, &name[len+1], 256-len-1))
+ name[len]= '|';
+ }
+
+ if(0==uiSearchItemAdd(items, name, ot))
+ break;
+ }
+ }
+ }
+}
void info_header_buttons(const bContext *C, ARegion *ar)
{
@@ -444,6 +482,20 @@ void info_header_buttons(const bContext *C, ARegion *ar)
uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_REC, "Capture", xco+5,yco,85,19, NULL, 0.0f, 0.0f, 0, 0, "Stop screencast");
xco+= 90;
}
+ if(screen->animtimer) {
+ uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_REC, "Anim Player", xco+5,yco,85,19, NULL, 0.0f, 0.0f, 0, 0, "Stop animation playback");
+ xco+= 90;
+ }
+
+ {
+ static char search[256]= "";
+ uiBut *but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, xco+5, yco, 120, 19, "");
+
+ uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb);
+
+ xco+= 125;
+ }
+
/* always as last */
UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c
index 12f23f03e66..d72ecd60da9 100644
--- a/source/blender/editors/space_info/space_info.c
+++ b/source/blender/editors/space_info/space_info.c
@@ -43,6 +43,7 @@
#include "BKE_context.h"
#include "BKE_colortools.h"
#include "BKE_screen.h"
+#include "BKE_utildefines.h"
#include "ED_space_api.h"
#include "ED_screen.h"
@@ -196,7 +197,7 @@ static void info_header_listener(ARegion *ar, wmNotifier *wmn)
/* context changes */
switch(wmn->category) {
case NC_SCREEN:
- if(wmn->data==ND_SCREENCAST)
+ if(ELEM(wmn->data, ND_SCREENCAST, ND_ANIMPLAY))
ED_region_tag_redraw(ar);
break;
case NC_SCENE:
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 56d7a649eb1..f7f637670b5 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -35,6 +35,7 @@
#include "MEM_guardedalloc.h"
#include "DNA_action_types.h"
+#include "DNA_brush_types.h"
#include "DNA_color_types.h"
#include "DNA_image_types.h"
#include "DNA_ipo_types.h"
@@ -183,7 +184,7 @@ void snode_composite_job(const bContext *C, ScrArea *sa)
WM_jobs_timer(steve, 0.1, NC_SCENE, NC_SCENE|ND_COMPO_RESULT);
WM_jobs_callbacks(steve, compo_startjob, compo_initjob, compo_updatejob);
- WM_jobs_start(steve);
+ WM_jobs_start(CTX_wm_manager(C), steve);
}
@@ -211,7 +212,7 @@ void snode_handle_recalc(bContext *C, SpaceNode *snode)
else if(snode->treetype==NTREE_COMPOSIT)
WM_event_add_notifier(C, NC_SCENE|ND_NODES, snode->id);
else if(snode->treetype==NTREE_TEXTURE) {
- // ntreeTexUpdatePreviews(snode->nodetree);
+ // ntreeTexUpdatePreviews(snode->nodetree); /* XXX texture nodes should follow shader node methods (ton) */
// XXX BIF_preview_changed(ID_TE);
}
}
@@ -573,7 +574,7 @@ void node_texture_default(Tex *tx)
nodeAddLink(tx->nodetree, in, fromsock, out, tosock);
ntreeSolveOrder(tx->nodetree); /* needed for pointers */
- ntreeTexUpdatePreviews(tx->nodetree);
+ ntreeTexUpdatePreviews(tx->nodetree); /* XXX texture nodes should follow shader node methods (ton) */
}
/* Here we set the active tree(s), even called for each redraw now, so keep it fast :) */
@@ -607,13 +608,42 @@ void snode_set_context(SpaceNode *snode, Scene *scene)
snode->nodetree= scene->nodetree;
}
else if(snode->treetype==NTREE_TEXTURE) {
- if(ob) {
- Tex *tx= give_current_texture(ob, ob->actcol);
- if(tx) {
- snode->from= (ID*)ob; /* please check this; i have no idea what 'from' is. */
- snode->id= &tx->id;
- snode->nodetree= tx->nodetree;
+ Tex *tx= NULL;
+
+ if(snode->texfrom==SNODE_TEX_OBJECT) {
+ if(ob) {
+ tx= give_current_texture(ob, ob->actcol);
+ snode->from= (ID *)ob;
+ }
+ }
+ else if(snode->texfrom==SNODE_TEX_WORLD) {
+ tx= give_current_world_texture(scene);
+ snode->from= (ID *)scene->world;
+ }
+ else {
+ MTex *mtex= NULL;
+
+ if(G.f & G_SCULPTMODE) {
+ Sculpt *sd= scene->toolsettings->sculpt;
+ if(sd && sd->brush)
+ if(sd->brush->texact != -1)
+ mtex= sd->brush->mtex[sd->brush->texact];
}
+ else {
+ Brush *br= scene->toolsettings->imapaint.brush;
+ if(br)
+ mtex= br->mtex[br->texact];
+ }
+
+ if(mtex) {
+ snode->from= (ID *)scene;
+ tx= mtex->tex;
+ }
+ }
+
+ if(tx) {
+ snode->id= &tx->id;
+ snode->nodetree= tx->nodetree;
}
}
@@ -1080,7 +1110,7 @@ static int node_resize_modal(bContext *C, wmOperator *op, wmEvent *event)
}
// XXX
if(snode->nodetree->type == NTREE_TEXTURE)
- ntreeTexUpdatePreviews(snode->nodetree);
+ ntreeTexUpdatePreviews(snode->nodetree); /* XXX texture nodes should follow shader node methods (ton) */
ED_region_tag_redraw(ar);
@@ -1626,7 +1656,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
if(snode->nodetree->type==NTREE_TEXTURE) {
ntreeTexCheckCyclics(snode->edittree);
- ntreeTexUpdatePreviews(snode->edittree);
+ ntreeTexUpdatePreviews(snode->edittree); /* XXX texture nodes should follow shader node methods (ton) */
}
return node;
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index 7104fad1767..16748af39d5 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -1750,7 +1750,7 @@ static int tree_element_active_texture(Scene *scene, SpaceOops *soops, TreeEleme
if(set) {
if(sbuts) {
- sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
+ // XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
sbuts->texfrom= 1;
}
// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture
@@ -1764,7 +1764,7 @@ static int tree_element_active_texture(Scene *scene, SpaceOops *soops, TreeEleme
Lamp *la= (Lamp *)tselemp->id;
if(set) {
if(sbuts) {
- sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
+ // XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
sbuts->texfrom= 2;
}
// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture
@@ -3524,7 +3524,7 @@ static void tselem_draw_icon(float x, float y, TreeStoreElem *tselem, TreeElemen
case TSE_NLA_ACTION:
UI_icon_draw(x, y, ICON_ACTION); break;
case TSE_DEFGROUP_BASE:
- UI_icon_draw(x, y, ICON_VGROUP); break;
+ UI_icon_draw(x, y, ICON_GROUP_VERTEX); break;
case TSE_BONE:
case TSE_EBONE:
UI_icon_draw(x, y, ICON_BONE_DATA); break;
@@ -3643,7 +3643,7 @@ static void tselem_draw_icon(float x, float y, TreeStoreElem *tselem, TreeElemen
UI_icon_draw(x, y, ICON_OBJECT_DATA);
break;
case TSE_RNA_STRUCT:
- UI_icon_draw(x, y, UI_GetIconRNA(&te->rnaptr));
+ UI_icon_draw(x, y, RNA_struct_ui_icon(te->rnaptr.type));
break;
default:
UI_icon_draw(x, y, ICON_DOT); break;
@@ -3688,7 +3688,25 @@ static void tselem_draw_icon(float x, float y, TreeStoreElem *tselem, TreeElemen
case ID_LT:
UI_icon_draw(x, y, ICON_OUTLINER_DATA_LATTICE); break;
case ID_LA:
- UI_icon_draw(x, y, ICON_OUTLINER_DATA_LAMP); break;
+ {
+ Lamp *la= (Lamp *)tselem->id;
+
+ switch(la->type) {
+ case LA_LOCAL:
+ UI_icon_draw(x, y, ICON_LAMP_POINT); break;
+ case LA_SUN:
+ UI_icon_draw(x, y, ICON_LAMP_SUN); break;
+ case LA_SPOT:
+ UI_icon_draw(x, y, ICON_LAMP_SPOT); break;
+ case LA_HEMI:
+ UI_icon_draw(x, y, ICON_LAMP_HEMI); break;
+ case LA_AREA:
+ UI_icon_draw(x, y, ICON_LAMP_AREA); break;
+ default:
+ UI_icon_draw(x, y, ICON_OUTLINER_DATA_LAMP); break;
+ }
+ break;
+ }
case ID_MA:
UI_icon_draw(x, y, ICON_MATERIAL_DATA); break;
case ID_TE:
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 8e30db584af..4ddb586beb4 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -143,14 +143,23 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
/* ************************ header outliner area region *********************** */
+//#define PY_HEADER
+
/* add handlers, stuff you only do once or on area/region changes */
static void outliner_header_area_init(wmWindowManager *wm, ARegion *ar)
{
+#ifdef PY_HEADER
+ ED_region_header_init(ar);
+#else
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
+#endif
}
static void outliner_header_area_draw(const bContext *C, ARegion *ar)
{
+#ifdef PY_HEADER
+ ED_region_header(C, ar);
+#else
float col[3];
if(ED_screen_area_active(C))
@@ -165,6 +174,7 @@ static void outliner_header_area_draw(const bContext *C, ARegion *ar)
UI_view2d_view_ortho(C, &ar->v2d);
outliner_header_buttons(C, ar);
+#endif
}
static void outliner_header_area_free(ARegion *ar)
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index 6e38ff053be..f6cf6de4b00 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -338,6 +338,10 @@ static int sequencer_add_sound_strip_exec(bContext *C, wmOperator *op)
RNA_string_get(op->ptr, "filename", filename);
+ /* XXX if(sfile->flag & FILE_STRINGCODE) {
+ BLI_makestringcode(G.sce, str);
+ }*/
+
// XXX sound= sound_new_sound(filename);
sound= NULL;
@@ -423,9 +427,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, TRUE);
-
- int tot_images= 1; //XXX FIXME, we need string arrays!
- //int a;
+ int tot_images;
char filename[FILE_MAX];
@@ -440,26 +442,30 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
RNA_string_get(op->ptr, "filename", filename);
- seq = alloc_sequence(ed->seqbasep, start_frame, channel);
-
+ seq = alloc_sequence(ed->seqbasep, start_frame, channel);
seq->type= SEQ_IMAGE;
/* basic defaults */
seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
- strip->len = seq->len = tot_images;
+ BLI_split_dirfile_basic(filename, strip->dir, NULL);
+
+ tot_images= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files"));
+
+ strip->len = seq->len = tot_images?tot_images:1;
strip->us= 1;
strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
-
- BLI_split_dirfile_basic(filename, strip->dir, se->name); // XXX se->name assignment should be moved into the loop below
-
-#if 0 // XXX
- for(a=0; a<seq->len; a++) {
- strncpy(se->name, name, FILE_MAXFILE-1);
- se++;
+ if(tot_images) {
+ RNA_BEGIN(op->ptr, itemptr, "files") {
+ RNA_string_get(&itemptr, "name", se->name);
+ se++;
+ }
+ RNA_END;
+ }
+ else {
+ BLI_split_dirfile_basic(filename, NULL, se->name);
}
-#endif
RNA_string_get(op->ptr, "name", seq->name);
@@ -507,6 +513,8 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILENAME);
+
+ RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
}
diff --git a/source/blender/editors/space_sequencer/sequencer_buttons.c b/source/blender/editors/space_sequencer/sequencer_buttons.c
new file mode 100644
index 00000000000..f127ab4b0cf
--- /dev/null
+++ b/source/blender/editors/space_sequencer/sequencer_buttons.c
@@ -0,0 +1,136 @@
+/**
+ * $Id: sequencer_buttons.c 20279 2009-05-19 17:13:33Z blendix $
+ *
+ * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2009 by Blender Foundation
+ * All rights reserved.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+
+#include <string.h>
+#include <stdio.h>
+
+#include "DNA_object_types.h"
+#include "DNA_space_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_blenlib.h"
+
+#include "BKE_context.h"
+#include "BKE_global.h"
+#include "BKE_main.h"
+#include "BKE_screen.h"
+#include "BKE_utildefines.h"
+
+#include "IMB_imbuf.h"
+#include "IMB_imbuf_types.h"
+
+#include "ED_screen.h"
+#include "ED_sequencer.h"
+#include "ED_util.h"
+
+#include "RNA_access.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+#include "UI_view2d.h"
+
+#include "sequencer_intern.h"
+
+
+static void do_sequencer_panel_events(bContext *C, void *arg, int event)
+{
+
+}
+
+
+static void sequencer_panel_view_properties(const bContext *C, Panel *pa)
+{
+ uiBlock *block;
+
+ block= uiLayoutFreeBlock(pa->layout);
+ uiBlockSetHandleFunc(block, do_sequencer_panel_events, NULL);
+
+}
+
+
+static void sequencer_panel_properties(const bContext *C, Panel *pa)
+{
+ uiBlock *block;
+
+ block= uiLayoutFreeBlock(pa->layout);
+ uiBlockSetHandleFunc(block, do_sequencer_panel_events, NULL);
+
+}
+
+void sequencer_buttons_register(ARegionType *art)
+{
+ PanelType *pt;
+
+ pt= MEM_callocN(sizeof(PanelType), "spacetype sequencer strip properties");
+ strcpy(pt->idname, "SEQUENCER_PT_properties");
+ strcpy(pt->label, "Strip Properties");
+ pt->draw= sequencer_panel_properties;
+ BLI_addtail(&art->paneltypes, pt);
+
+ pt= MEM_callocN(sizeof(PanelType), "spacetype sequencer view properties");
+ strcpy(pt->idname, "SEQUENCER_PT_view_properties");
+ strcpy(pt->label, "View Properties");
+ pt->draw= sequencer_panel_view_properties;
+ BLI_addtail(&art->paneltypes, pt);
+
+}
+
+/* **************** operator to open/close properties view ************* */
+
+static int sequencer_properties(bContext *C, wmOperator *op)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= sequencer_has_buttons_region(sa);
+
+ if(ar) {
+ ar->flag ^= RGN_FLAG_HIDDEN;
+ ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
+
+ ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
+ ED_area_tag_redraw(sa);
+ }
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_properties(wmOperatorType *ot)
+{
+ ot->name= "Properties";
+ ot->idname= "SEQUENCER_OT_properties";
+
+ ot->exec= sequencer_properties;
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= 0;
+}
+
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 5e07689f536..bd31d8d86ff 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -55,7 +55,6 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
-#include "BLF_api.h"
#include "ED_anim_api.h"
#include "ED_space_api.h"
@@ -72,6 +71,7 @@
#define SEQ_LEFTHANDLE 1
#define SEQ_RIGHTHANDLE 2
+
/* Note, Dont use WHILE_SEQ while drawing! - it messes up transform, - Campbell */
int no_rightbox=0, no_leftbox= 0;
@@ -329,7 +329,7 @@ static void drawseqwave(Scene *scene, View2D *v2d, Sequence *seq, float x1, floa
}
/* draw a handle, for each end of a sequence strip */
-static void draw_seq_handle(SpaceSeq *sseq, Sequence *seq, float pixelx, short direction)
+static void draw_seq_handle(View2D *v2d, Sequence *seq, float pixelx, short direction)
{
float v1[2], v2[2], v3[2], rx1=0, rx2=0; //for triangles and rect
float x1, x2, y1, y2;
@@ -337,7 +337,6 @@ static void draw_seq_handle(SpaceSeq *sseq, Sequence *seq, float pixelx, short d
float minhandle, maxhandle;
char str[32];
unsigned int whichsel=0;
- View2D *v2d;
x1= seq->startdisp;
x2= seq->enddisp;
@@ -345,8 +344,6 @@ static void draw_seq_handle(SpaceSeq *sseq, Sequence *seq, float pixelx, short d
y1= seq->machine+SEQ_STRIP_OFSBOTTOM;
y2= seq->machine+SEQ_STRIP_OFSTOP;
- v2d = &sseq->v2d;
-
/* clamp handles to defined size in pixel space */
handsize = seq->handsize;
minhandle = 7;
@@ -404,13 +401,13 @@ static void draw_seq_handle(SpaceSeq *sseq, Sequence *seq, float pixelx, short d
if (direction == SEQ_LEFTHANDLE) {
sprintf(str, "%d", seq->startdisp);
x1= rx1;
- y1 -= 0.15;
+ y1 -= 0.45;
} else {
sprintf(str, "%d", seq->enddisp - 1);
- x1= x2 - BLF_width_default(str) * pixelx;
+ x1= x2 - handsize*0.75;
y1= y2 + 0.05;
}
- BLF_draw_default(x1, y1, 0.0f, str);
+ UI_view2d_text_cache_add(v2d, x1, y1, str);
}
}
@@ -520,25 +517,13 @@ static void draw_seq_extensions(Scene *scene, SpaceSeq *sseq, Sequence *seq)
/* draw info text on a sequence strip */
static void draw_seq_text(View2D *v2d, Sequence *seq, float x1, float x2, float y1, float y2, char *background_col)
{
- float v1[2], v2[2];
- int len, size;
- char str[32 + FILE_MAXDIR+FILE_MAXFILE], *strp;
- int mval[2];
-
- v1[1]= y1;
- v2[1]= y2;
-
- v1[0]= x1;
- UI_view2d_to_region_no_clip(v2d, v1[0], v1[1], mval, mval+1);
- x1= mval[0];
- v2[0]= x2;
- UI_view2d_to_region_no_clip(v2d, v2[0], v2[1], mval, mval+1);
- x2= mval[0];
- size= x2-x1;
+ rctf rect;
+ char str[32 + FILE_MAXDIR+FILE_MAXFILE];
if(seq->name[2]) {
sprintf(str, "%d | %s: %s", seq->len, give_seqname(seq), seq->name+2);
- }else{
+ }
+ else{
if(seq->type == SEQ_META) {
sprintf(str, "%d | %s", seq->len, give_seqname(seq));
}
@@ -572,19 +557,6 @@ static void draw_seq_text(View2D *v2d, Sequence *seq, float x1, float x2, float
}
}
- strp= str;
- // XXX
- /* The correct thing is used a Styla and set the clipping region. */
- while( (len= BLF_width_default(strp)) > size) {
- if(len < 10) break;
- if(strp[1]==0) break;
- strp++;
- }
-
- mval[0]= (x1+x2-len+1)/2;
- mval[1]= 1;
- UI_view2d_region_to_view(v2d, mval[0], mval[1], &x1, &x2);
-
if(seq->flag & SELECT){
cpack(0xFFFFFF);
}else if ((((int)background_col[0] + (int)background_col[1] + (int)background_col[2]) / 3) < 50){
@@ -592,7 +564,12 @@ static void draw_seq_text(View2D *v2d, Sequence *seq, float x1, float x2, float
}else{
cpack(0);
}
- BLF_draw_default(x1, y1+SEQ_STRIP_OFSBOTTOM, 0.0, strp);
+
+ rect.xmin= x1;
+ rect.ymin= y1;
+ rect.xmax= x2;
+ rect.ymax= y2;
+ UI_view2d_text_cache_rectf(v2d, &rect, str);
}
/* draws a shaded strip, made from gradient + flat color + gradient */
@@ -693,8 +670,8 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence *
if (!is_single_image)
draw_seq_extensions(scene, sseq, seq);
- draw_seq_handle(sseq, seq, pixelx, SEQ_LEFTHANDLE);
- draw_seq_handle(sseq, seq, pixelx, SEQ_RIGHTHANDLE);
+ draw_seq_handle(v2d, seq, pixelx, SEQ_LEFTHANDLE);
+ draw_seq_handle(v2d, seq, pixelx, SEQ_RIGHTHANDLE);
/* draw the strip outline */
x1= seq->startdisp;
@@ -764,12 +741,21 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
static int recursive= 0;
float zoom;
float zoomx, zoomy;
+ int render_size = 0;
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
- rectx= (scene->r.size*scene->r.xsch)/100;
- recty= (scene->r.size*scene->r.ysch)/100;
+ render_size = sseq->render_size;
+ if (render_size == 0) {
+ render_size = scene->r.size;
+ }
+ if (render_size < 0) {
+ return;
+ }
+
+ rectx= (render_size*scene->r.xsch)/100;
+ recty= (render_size*scene->r.ysch)/100;
/* BIG PROBLEM: the give_ibuf_seq() can call a rendering, which in turn calls redraws...
this shouldn't belong in a window drawing....
@@ -781,13 +767,13 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
else {
recursive= 1;
if (special_seq_update) {
- ibuf= give_ibuf_seq_direct(scene, rectx, recty, (scene->r.cfra), special_seq_update);
+ ibuf= give_ibuf_seq_direct(scene, rectx, recty, (scene->r.cfra), render_size, special_seq_update);
}
else if (!U.prefetchframes) { // XXX || (G.f & G_PLAYANIM) == 0) {
- ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, (scene->r.cfra), sseq->chanshown);
+ ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, (scene->r.cfra), sseq->chanshown, render_size);
}
else {
- ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, (scene->r.cfra), sseq->chanshown);
+ ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, (scene->r.cfra), sseq->chanshown, render_size);
}
recursive= 0;
@@ -838,6 +824,7 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq)
zoom= SEQ_ZOOM_FAC(sseq->zoom);
if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
+ zoom /= render_size / 100.0;
zoomx = zoom * ((float)scene->r.xasp / (float)scene->r.yasp);
zoomy = zoom;
} else {
@@ -972,13 +959,21 @@ void seq_viewmove(Scene *scene, ARegion *ar, SpaceSeq *sseq)
void drawprefetchseqspace(Scene *scene, ARegion *ar, SpaceSeq *sseq)
{
int rectx, recty;
+ int render_size = sseq->render_size;
+ if (render_size == 0) {
+ render_size = scene->r.size;
+ }
+ if (render_size < 0) {
+ return;
+ }
- rectx= (scene->r.size*scene->r.xsch)/100;
- recty= (scene->r.size*scene->r.ysch)/100;
+ rectx= (render_size*scene->r.xsch)/100;
+ recty= (render_size*scene->r.ysch)/100;
if(sseq->mainb != SEQ_DRAW_SEQUENCE) {
give_ibuf_prefetch_request(
- rectx, recty, (scene->r.cfra), sseq->chanshown);
+ rectx, recty, (scene->r.cfra), sseq->chanshown,
+ render_size);
}
}
@@ -994,8 +989,6 @@ void drawseqspace(const bContext *C, ARegion *ar)
float col[3];
int i;
-
-
if(sseq->mainb != SEQ_DRAW_SEQUENCE) {
draw_image_seq(scene, ar, sseq);
return;
@@ -1082,6 +1075,9 @@ void drawseqspace(const bContext *C, ARegion *ar)
}
}
+ /* text draw cached, in pixelspace now */
+ UI_view2d_text_cache_draw(ar);
+
/* Draw markers */
// draw_markers_timespace(SCE_MARKERS, DRAW_MARKERS_LINES);
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index f6391666cd8..20ad1b61981 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -112,7 +112,7 @@ EnumPropertyItem sequencer_prop_effect_types[] = {
{SEQ_ALPHAUNDER, "ALPHA_UNDER", "Alpha Under", "Alpha Under effect strip type"},
{SEQ_GAMCROSS, "GAMMA_CROSS", "Gamma Cross", "Gamma Cross effect strip type"},
{SEQ_MUL, "MULTIPLY", "Multiply", "Multiply effect strip type"},
- {SEQ_OVERDROP, "ALPHA_OVER_DROP", "Alpha Over Drop", "Alpha Over Drop effect strip type"},
+ {SEQ_OVERDROP, "OVER_DROP", "Alpha Over Drop", "Alpha Over Drop effect strip type"},
{SEQ_PLUGIN, "PLUGIN", "Plugin", "Plugin effect strip type"},
{SEQ_WIPE, "WIPE", "Wipe", "Wipe effect strip type"},
{SEQ_GLOW, "GLOW", "Glow", "Glow effect strip type"},
@@ -160,7 +160,7 @@ void set_last_seq(Scene *scene, Sequence *seq)
ed->act_seq= seq;
}
-Sequence *get_forground_frame_seq(Scene *scene, int frame)
+Sequence *get_foreground_frame_seq(Scene *scene, int frame)
{
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq, *best_seq=NULL;
@@ -879,12 +879,33 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de
static Sequence *dupli_seq(Sequence *seq)
{
Sequence *seqn = MEM_dupallocN(seq);
+ // XXX animato: ID *id;
seq->tmp = seqn;
seqn->strip= MEM_dupallocN(seq->strip);
- if(seqn->ipo) seqn->ipo->id.us++;
+ // XXX animato
+#if 0
+ if (seqn->ipo) {
+ if (U.dupflag & USER_DUP_IPO) {
+ id= (ID *)seqn->ipo;
+ seqn->ipo= copy_ipo(seqn->ipo);
+ /* we don't need to decrease the number
+ * of the ipo because we never increase it,
+ * for example, adduplicate need decrease
+ * the number but only because copy_object
+ * call id_us_plus for the ipo block and
+ * single_ipo_users only work if id->us > 1.
+ *
+ * need call ipo_idnew here, for drivers ??
+ * - Diego
+ */
+ }
+ else
+ seqn->ipo->id.us++;
+ }
+#endif
seqn->strip->tstripdata = 0;
seqn->strip->tstripdata_startstill = 0;
@@ -1367,13 +1388,20 @@ static int seq_get_snaplimit(View2D *v2d)
}
#endif
-void seq_snap(Scene *scene, short event)
+/* Operator functions */
+
+/* snap operator*/
+static int sequencer_snap_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
+
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq;
-
+ int snap_frame;
- if(ed==NULL) return;
+ if(ed==NULL) return OPERATOR_CANCELLED;
+
+ snap_frame= RNA_int_get(op->ptr, "frame");
/* problem: contents of meta's are all shifted to the same position... */
@@ -1382,12 +1410,12 @@ void seq_snap(Scene *scene, short event)
if (seq->flag & SELECT && !(seq->depth==0 && seq->flag & SEQ_LOCK) &&
seq_tx_test(seq)) {
if((seq->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL))==0) {
- seq->start= CFRA-seq->startofs+seq->startstill;
+ seq->start= snap_frame-seq->startofs+seq->startstill;
} else {
if(seq->flag & SEQ_LEFTSEL) {
- seq_tx_set_final_left(seq, CFRA);
+ seq_tx_set_final_left(seq, snap_frame);
} else { /* SEQ_RIGHTSEL */
- seq_tx_set_final_right(seq, CFRA);
+ seq_tx_set_final_right(seq, snap_frame);
}
seq_tx_handle_xlimits(seq, seq->flag & SEQ_LEFTSEL, seq->flag & SEQ_RIGHTSEL);
}
@@ -1417,21 +1445,43 @@ void seq_snap(Scene *scene, short event)
/* as last: */
sort_seq(scene);
-
+
+ ED_area_tag_redraw(CTX_wm_area(C));
+
+ return OPERATOR_FINISHED;
}
-void seq_snap_menu(Scene *scene)
+static int sequencer_snap_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- short event;
+ Scene *scene = CTX_data_scene(C);
- event= pupmenu("Snap %t|To Current Frame%x1");
- if(event < 1) return;
+ int snap_frame;
- seq_snap(scene, event);
+ snap_frame= CFRA;
+
+ RNA_int_set(op->ptr, "frame", snap_frame);
+ return sequencer_snap_exec(C, op);
}
-/* Operator functions */
+void SEQUENCER_OT_snap(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Snap strips";
+ ot->idname= "SEQUENCER_OT_snap";
+
+ /* api callbacks */
+ ot->invoke= sequencer_snap_invoke;
+ ot->exec= sequencer_snap_exec;
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_int(ot->srna, "frame", 0, INT_MIN, INT_MAX, "Frame", "Frame where selected strips will snaped", INT_MIN, INT_MAX);
+}
+
+/* mute operator */
static int sequencer_mute_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
diff --git a/source/blender/editors/space_sequencer/sequencer_header.c b/source/blender/editors/space_sequencer/sequencer_header.c
deleted file mode 100644
index 0e9a9d7130b..00000000000
--- a/source/blender/editors/space_sequencer/sequencer_header.c
+++ /dev/null
@@ -1,454 +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2008 Blender Foundation.
- * All rights reserved.
- *
- *
- * Contributor(s): Blender Foundation
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include <string.h>
-#include <stdio.h>
-
-#include "DNA_space_types.h"
-#include "DNA_sequence_types.h"
-#include "DNA_scene_types.h"
-#include "DNA_screen_types.h"
-#include "DNA_windowmanager_types.h"
-
-#include "MEM_guardedalloc.h"
-
-#include "BLI_blenlib.h"
-
-#include "BKE_utildefines.h"
-#include "BKE_context.h"
-#include "BKE_screen.h"
-#include "BKE_sequence.h"
-
-#include "ED_screen.h"
-#include "ED_types.h"
-#include "ED_util.h"
-
-#include "WM_api.h"
-#include "WM_types.h"
-
-#include "RNA_access.h"
-
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
-#include "BIF_transform.h"
-
-#include "UI_interface.h"
-#include "UI_resources.h"
-#include "UI_view2d.h"
-
-#include "sequencer_intern.h"
-
-
-/* ************************ header area region *********************** */
-
-#define B_FULL 1
-#define B_VIEW2DZOOM 2
-#define B_REDR 3
-#define B_IPOBORDER 4
-#define B_SEQCLEAR 5
-
-static uiBlock *seq_viewmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- ScrArea *sa= CTX_wm_area(C);
- SpaceSeq *sseq= sa->spacedata.first;
- View2D *v2d= UI_view2d_fromcontext(C);
-
- uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP);
- short yco= 0, menuwidth=120;
-
- if (sseq->mainb == SEQ_DRAW_SEQUENCE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Play Back Animation "
- "in all Sequence Areas|Alt A", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- }
- else {
- uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL,
- "Grease Pencil...", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefMenuSep(block);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Play Back Animation "
- "in this window|Alt A", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- }
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Play Back Animation in all "
- "3D Views and Sequence Areas|Alt Shift A",
- 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
-
- uiDefMenuSep(block);
-
- uiDefMenuButO(block, "SEQUENCER_OT_view_all", NULL);
- uiDefMenuButO(block, "SEQUENCER_OT_view_selected", NULL);
-
- uiDefMenuSep(block);
-
- /* Lock Time */
- uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT,
- "Lock Time to Other Windows|", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
- /* Draw time or frames.*/
- uiDefMenuSep(block);
-
- if(sseq->flag & SEQ_DRAWFRAMES)
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Seconds|Ctrl T", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- else
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Frames|Ctrl T", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
-
- if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, "");
- else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
-
-
- if(sa->headertype==HEADERTOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- uiEndBlock(C, block);
-
- return block;
-}
-
-//static uiBlock *seq_selectmenu(bContext *C, ARegion *ar, void *arg_unused)
-static void seq_selectmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiLayoutContext(layout, WM_OP_INVOKE_REGION_WIN);
-
- uiItemEnumO(layout, "Strips to the Left", 0, "SEQUENCER_OT_select_active_side", "side", SEQ_SIDE_LEFT);
- uiItemEnumO(layout, "Strips to the Right", 0, "SEQUENCER_OT_select_active_side", "side", SEQ_SIDE_RIGHT);
- uiItemS(layout);
- uiItemEnumO(layout, "Surrounding Handles", 0, "SEQUENCER_OT_select_handles", "side", SEQ_SIDE_BOTH);
- uiItemEnumO(layout, "Left Handles", 0, "SEQUENCER_OT_select_handles", "side", SEQ_SIDE_LEFT);
- uiItemEnumO(layout, "Right Handles", 0, "SEQUENCER_OT_select_handles", "side", SEQ_SIDE_RIGHT);
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_select_linked");
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_select_linked");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_select_all_toggle");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_select_invert");
-}
-
-static uiBlock *seq_markermenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- ScrArea *sa= CTX_wm_area(C);
- SpaceSeq *sseq= sa->spacedata.first;
-
-
- uiBlock *block= uiBeginBlock(C, ar, "seq_markermenu", UI_EMBOSSP);
- short yco= 0, menuwidth=120;
-
-
-
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Marker|Ctrl Alt M", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate Marker|Ctrl Shift D", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Marker|Shift X", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefMenuSep(block);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "(Re)Name Marker|Ctrl M", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Marker|Ctrl G", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
- uiDefMenuSep(block);
-
- uiDefIconTextBut(block, BUTM, 1, (sseq->flag & SEQ_MARKER_TRANS)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT,
- "Transform Markers", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
-
- if(sa->headertype==HEADERTOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- uiEndBlock(C, block);
-
- return block;
-}
-
-//static uiBlock *seq_addmenu_effectmenu(bContext *C, ARegion *ar, void *arg_unused)
-static void seq_addmenu_effectmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiLayoutContext(layout, WM_OP_INVOKE_REGION_WIN);
-
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_ADD);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_SUB);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_MUL);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_CROSS);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_GAMCROSS);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_ALPHAOVER);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_ALPHAUNDER);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_OVERDROP);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_WIPE);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_GLOW);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_TRANSFORM);
- /* Color is an effect but moved to the other menu since its not that exciting */
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_SPEED);
- uiItemS(layout);
- uiItemEnumO(layout, NULL, 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_PLUGIN);
-}
-
-
-//static uiBlock *seq_addmenu(bContext *C, ARegion *ar, void *arg_unused)
-static void seq_addmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemMenuF(layout, "Effects...", 0, seq_addmenu_effectmenu);
- uiItemS(layout);
-
- uiLayoutContext(layout, WM_OP_INVOKE_REGION_WIN);
-
-#ifdef WITH_FFMPEG
- uiItemBooleanO(layout, "Audio (RAM)", 0, "SEQUENCER_OT_sound_strip_add", "hd", FALSE);
- uiItemBooleanO(layout, "Audio (HD)", 0, "SEQUENCER_OT_sound_strip_add", "hd", TRUE);
-#else
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_sound_strip_add");
-#endif
- uiItemEnumO(layout, "Add Color Strip", 0, "SEQUENCER_OT_effect_strip_add", "type", SEQ_COLOR);
-
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_image_strip_add");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_movie_strip_add");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_scene_strip_add");
-#ifdef WITH_FFMPEG
- uiItemBooleanO(layout, "Movie and Sound", 0, "SEQUENCER_OT_movie_strip_add", "sound", TRUE);
-#endif
-}
-
-//static uiBlock *seq_editmenu(bContext *C, ARegion *ar, void *arg_unused)
-static void seq_editmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- Scene *scene= CTX_data_scene(C);
- Editing *ed= seq_give_editing(scene, FALSE);
-
- uiLayoutContext(layout, WM_OP_INVOKE_REGION_WIN);
-
- uiItemEnumO(layout, NULL, 0, "TFM_OT_transform", "mode", TFM_TRANSLATION);
- uiItemEnumO(layout, NULL, 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND);
-
- // uiItemO(layout, NULL, 0, "SEQUENCER_OT_strip_snap"); // TODO - add this operator
-
- uiItemEnumO(layout, "Cut Hard", 0, "SEQUENCER_OT_cut", "type", SEQ_CUT_HARD);
- uiItemEnumO(layout, "Cut Soft", 0, "SEQUENCER_OT_cut", "type", SEQ_CUT_SOFT);
-
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_images_separate");
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_duplicate_add");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_delete");
-
- if (ed && ed->act_seq) {
- switch(ed->act_seq->type) {
- case SEQ_EFFECT:
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_effect_change");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_effect_reassign_inputs");
- break;
- case SEQ_IMAGE:
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_image_change"); // Change Scene...
- break;
- case SEQ_SCENE:
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_scene_change"); // Remap Paths...
- break;
- case SEQ_MOVIE:
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_movie_change"); // Remap Paths...
- break;
- }
- }
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_meta_make");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_meta_separate");
-
- if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) {
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_meta_toggle");
- }
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_reload");
- uiItemS(layout);
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_lock");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_unlock");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_mute");
- uiItemO(layout, NULL, 0, "SEQUENCER_OT_unmute");
-
- uiItemEnumO(layout, "Mute Deselected Strips", 0, "SEQUENCER_OT_mute", "type", SEQ_UNSELECTED);
-}
-
-void sequencer_header_buttons(const bContext *C, ARegion *ar)
-{
- ScrArea *sa= CTX_wm_area(C);
- SpaceSeq *sseq= sa->spacedata.first;
- Scene *scene= CTX_data_scene(C);
- Editing *ed= seq_give_editing(scene, FALSE);
-
- uiBlock *block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
- int xco=3, yco= 3;
-
- xco= ED_area_header_standardbuttons(C, block, yco);
-
- if((sa->flag & HEADER_NO_PULLDOWN)==0) {
- int xmax;
-
- xmax= GetButStringLength("View");
-
- //uiDefMenuBut(block, seq_viewmenu, NULL, "View", xco, 0, xmax-3, 24, ""); // TODO
- uiDefPulldownBut(block, seq_viewmenu, sa, "View", xco, 0, xmax-3, 24, "");
- xco+=xmax;
-
- xmax= GetButStringLength("Select");
- uiDefMenuBut(block, seq_selectmenu, NULL, "Select", xco, 0, xmax-3, 24, "");
- //uiDefPulldownBut(block, seq_selectmenu, sa, "Select", xco, 0, xmax-3, 24, "");
- xco+=xmax;
-
- xmax= GetButStringLength("Marker");
- //uiDefMenuBut(block, seq_markermenu, NULL, "Marker", xco, 0, xmax-3, 24, "");
- uiDefPulldownBut(block, seq_markermenu, sa, "Marker", xco, 0, xmax-3, 24, ""); // TODO
- xco+=xmax;
-
- xmax= GetButStringLength("Add");
- uiDefMenuBut(block, seq_addmenu, NULL, "Add", xco, 0, xmax-3, 24, "");
- //uiDefPulldownBut(block, seq_addmenu, sa, "Add", xco, 0, xmax-3, 24, "");
- xco+=xmax;
-
- xmax= GetButStringLength("Strip");
- uiDefMenuBut(block, seq_editmenu, NULL, "Strip", xco, 0, xmax-3, 24, "");
- //uiDefPulldownBut(block, seq_editmenu, sa, "Strip", xco, 0, xmax-3, 24, "");
- xco+=xmax;
- }
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* IMAGE */
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SEQ_SEQUENCER,
- "Image Preview: %t"
- "|Sequence %x0"
- "|Image Preview %x1"
- "|Luma Waveform %x2"
- "|Chroma Vectorscope %x3"
- "|Histogram %x4",
- xco,yco,XIC+10,YIC, &sseq->mainb, 0.0, 3.0,
- 0, 0,
- "Shows the sequence output image preview");
-
- xco+= 8 + XIC+10;
-
- if(sseq->mainb != SEQ_DRAW_SEQUENCE) {
- int minchan = 0;
-
- /* CHANNEL shown in image preview */
-
- if (ed && ed->metastack.first)
- minchan = -BLI_countlist(&ed->metastack);
-
- uiDefButS(block, NUM, B_REDR, "Chan:",
- xco, yco, 3.5 * XIC,YIC,
- &sseq->chanshown, minchan, MAXSEQ, 0, 0,
- "The channel number shown in the image preview. 0 is the result of all strips combined.");
-
- xco+= 8 + XIC*3.5;
-
- if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
- uiDefButS(block, MENU, B_REDR,
- "Show zebra: %t"
- "|Z 110 %x110"
- "|Z 100 %x100"
- "|Z 95 %x95"
- "|Z 90 %x90"
- "|Z 70 %x70"
- "|Z Off %x0",
- xco,yco,3.0 * XIC, YIC, &sseq->zebra,
- 0,0,0,0,
- "Show overexposed "
- "areas with zebra stripes");
-
- xco+= 8 + XIC*3.0;
-
- uiDefButBitI(block, TOG, SEQ_DRAW_SAFE_MARGINS,
- B_REDR, "T",
- xco,yco,XIC,YIC, &sseq->flag,
- 0, 0, 0, 0,
- "Draw title safe margins in preview");
- xco+= 8 + XIC;
- }
-
- if (sseq->mainb == SEQ_DRAW_IMG_WAVEFORM) {
- uiDefButBitI(block, TOG, SEQ_DRAW_COLOR_SEPERATED,
- B_REDR, "CS",
- xco,yco,XIC,YIC, &sseq->flag,
- 0, 0, 0, 0,
- "Seperate color channels in preview");
- xco+= 8 + XIC;
- }
- } else {
- /* ZOOM and BORDER */
- static int viewmovetemp; // XXX dummy var
-
- uiBlockBeginAlign(block);
- uiDefIconButI(block, TOG, B_VIEW2DZOOM,
- ICON_VIEWZOOM,
- xco,yco,XIC,YIC, &viewmovetemp,
- 0, 0, 0, 0,
- "Zooms view in and out (Ctrl MiddleMouse)");
- xco += XIC;
- uiDefIconButO(block, BUT, "VIEW2D_OT_zoom_border", WM_OP_INVOKE_REGION_WIN, ICON_BORDERMOVE, xco,yco,XIC,YIC, "Zooms view to fit area");
-
- uiBlockEndAlign(block);
- xco += 8 + XIC;
- }
-
- uiDefButO(block, BUT, "SEQUENCER_OT_refresh_all", WM_OP_EXEC_DEFAULT, "Refresh", xco, yco, 3*XIC, YIC, "Clears all buffered images in memory");
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* always as last */
- UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
-
- uiEndBlock(C, block);
- uiDrawBlock(C, block);
-}
-
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index df6a848696f..6d61f743917 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -37,11 +37,16 @@ struct Sequence;
struct bContext;
struct rctf;
struct SpaceSeq;
+struct ScrArea;
struct ARegion;
+struct ARegionType;
struct Scene;
+/* space_sequencer.c */
+struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa);
+
/* sequencer_header.c */
-void sequencer_header_buttons(const struct bContext *C, struct ARegion *ar);
+// void sequencer_header_buttons(const struct bContext *C, struct ARegion *ar);
/* sequencer_draw.c */
void drawseqspace(const struct bContext *C, struct ARegion *ar);
@@ -84,6 +89,7 @@ void SEQUENCER_OT_images_separate(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_make(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_separate(struct wmOperatorType *ot);
+void SEQUENCER_OT_snap(struct wmOperatorType *ot);
void SEQUENCER_OT_view_all(struct wmOperatorType *ot);
void SEQUENCER_OT_view_selected(struct wmOperatorType *ot);
@@ -140,5 +146,10 @@ struct ImBuf *make_vectorscope_view_from_ibuf(struct ImBuf * ibuf);
struct ImBuf *make_zebra_view_from_ibuf(struct ImBuf * ibuf, float perc);
struct ImBuf *make_histogram_view_from_ibuf(struct ImBuf * ibuf);
+/* sequencer_buttons.c */
+
+void SEQUENCER_OT_properties(struct wmOperatorType *ot);
+void sequencer_buttons_register(struct ARegionType *art);
+
#endif /* ED_SEQUENCER_INTERN_H */
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index b131061782a..c6e5fbe39a4 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -77,6 +77,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_meta_toggle);
WM_operatortype_append(SEQUENCER_OT_meta_make);
WM_operatortype_append(SEQUENCER_OT_meta_separate);
+ WM_operatortype_append(SEQUENCER_OT_snap);
WM_operatortype_append(SEQUENCER_OT_view_all);
WM_operatortype_append(SEQUENCER_OT_view_selected);
@@ -99,6 +100,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_sound_strip_add);
WM_operatortype_append(SEQUENCER_OT_image_strip_add);
WM_operatortype_append(SEQUENCER_OT_effect_strip_add);
+ WM_operatortype_append(SEQUENCER_OT_properties);
}
@@ -107,6 +109,8 @@ void sequencer_keymap(wmWindowManager *wm)
ListBase *keymap= WM_keymap_listbase(wm, "Sequencer", SPACE_SEQ, 0);
wmKeymapItem *kmi;
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0);
+
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c
index 76273f24441..c7c92b71861 100644
--- a/source/blender/editors/space_sequencer/space_sequencer.c
+++ b/source/blender/editors/space_sequencer/space_sequencer.c
@@ -61,6 +61,36 @@
#include "sequencer_intern.h" // own include
+/* ******************** manage regions ********************* */
+
+ARegion *sequencer_has_buttons_region(ScrArea *sa)
+{
+ ARegion *ar, *arnew;
+
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_UI)
+ return ar;
+
+ /* add subdiv level; after header */
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_HEADER)
+ break;
+
+ /* is error! */
+ if(ar==NULL) return NULL;
+
+ arnew= MEM_callocN(sizeof(ARegion), "buttons for sequencer");
+
+ BLI_insertlinkafter(&sa->regionbase, ar, arnew);
+ arnew->regiontype= RGN_TYPE_UI;
+ arnew->alignment= RGN_ALIGN_RIGHT;
+
+ arnew->flag = RGN_FLAG_HIDDEN;
+
+ return arnew;
+}
+
+
/* ******************** default callbacks for sequencer space ***************** */
static SpaceLink *sequencer_new(const bContext *C)
@@ -82,6 +112,14 @@ static SpaceLink *sequencer_new(const bContext *C)
ar->regiontype= RGN_TYPE_HEADER;
ar->alignment= RGN_ALIGN_BOTTOM;
+ /* buttons/list view */
+ ar= MEM_callocN(sizeof(ARegion), "buttons for sequencer");
+
+ BLI_addtail(&sseq->regionbase, ar);
+ ar->regiontype= RGN_TYPE_UI;
+ ar->alignment= RGN_ALIGN_RIGHT;
+ ar->flag = RGN_FLAG_HIDDEN;
+
/* main area */
ar= MEM_callocN(sizeof(ARegion), "main area for sequencer");
@@ -160,29 +198,12 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void sequencer_header_area_init(wmWindowManager *wm, ARegion *ar)
{
- UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
+ ED_region_header_init(ar);
}
static void sequencer_header_area_draw(const bContext *C, ARegion *ar)
{
- float col[3];
-
- /* clear */
- if(ED_screen_area_active(C))
- UI_GetThemeColor3fv(TH_HEADER, col);
- else
- UI_GetThemeColor3fv(TH_HEADERDESEL, col);
-
- glClearColor(col[0], col[1], col[2], 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- /* set view2d view matrix for scrolling (without scrollers) */
- UI_view2d_view_ortho(C, &ar->v2d);
-
- sequencer_header_buttons(C, ar);
-
- /* restore view matrix? */
- UI_view2d_view_restore(C);
+ ED_region_header(C, ar);
}
static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn)
@@ -201,6 +222,30 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn)
}
}
+/* *********************** buttons region ************************ */
+
+/* add handlers, stuff you only do once or on area/region changes */
+static void sequencer_buttons_area_init(wmWindowManager *wm, ARegion *ar)
+{
+
+ ED_region_panels_init(wm, ar);
+
+}
+
+static void sequencer_buttons_area_draw(const bContext *C, ARegion *ar)
+{
+ ED_region_panels(C, ar, 1, NULL);
+}
+
+static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
+{
+ /* context changes */
+ switch(wmn->category) {
+
+ }
+}
+/* ************************************* */
+
/* only called once, from space/spacetypes.c */
void ED_spacetype_sequencer(void)
{
@@ -226,6 +271,20 @@ void ED_spacetype_sequencer(void)
BLI_addhead(&st->regiontypes, art);
+ /* regions: listview/buttons */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
+ art->regionid = RGN_TYPE_UI;
+ art->minsizex= 220; // XXX
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
+ art->listener= sequencer_buttons_area_listener;
+ art->init= sequencer_buttons_area_init;
+ art->draw= sequencer_buttons_area_draw;
+ BLI_addhead(&st->regiontypes, art);
+
+ /* Keep as python only for now
+ sequencer_buttons_register(art);
+ */
+
/* regions: header */
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_HEADER;
@@ -237,7 +296,6 @@ void ED_spacetype_sequencer(void)
BLI_addhead(&st->regiontypes, art);
-
BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c
index 456060d77a7..0dfe7c9e660 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -119,8 +119,8 @@ static void flatten_string_append(FlattenString *fs, char c, int accum)
if(olen) fs->len*= 2;
else fs->len= 256;
- nbuf= MEM_mallocN(sizeof(*fs->buf)*fs->len, "fs->buf");
- naccum= MEM_mallocN(sizeof(*fs->accum)*fs->len, "fs->accum");
+ nbuf= MEM_callocN(sizeof(*fs->buf)*fs->len, "fs->buf");
+ naccum= MEM_callocN(sizeof(*fs->accum)*fs->len, "fs->accum");
if(olen) {
memcpy(nbuf, fs->buf, olen);
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
index 5f974e7bcbb..065b4ffcc48 100644
--- a/source/blender/editors/space_text/text_ops.c
+++ b/source/blender/editors/space_text/text_ops.c
@@ -1709,7 +1709,7 @@ static int scroll_exec(bContext *C, wmOperator *op)
screen_skip(st, lines*U.wheellinescroll);
- WM_event_add_notifier(C, NC_TEXT|NA_EDITED, st->text);
+ ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c
index 3df57208bbd..c4ca4d8522f 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -207,6 +207,10 @@ static void time_header_area_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
switch(wmn->category) {
+ case NC_SCREEN:
+ if(wmn->data==ND_ANIMPLAY)
+ ED_region_tag_redraw(ar);
+ break;
case NC_SCENE:
switch (wmn->data) {
case ND_FRAME:
diff --git a/source/blender/editors/space_time/time_header.c b/source/blender/editors/space_time/time_header.c
index f26e632eb87..cf9c12f3dff 100644
--- a/source/blender/editors/space_time/time_header.c
+++ b/source/blender/editors/space_time/time_header.c
@@ -46,6 +46,7 @@
#include "ED_keyframing.h"
#include "ED_screen.h"
+#include "ED_screen_types.h"
#include "ED_types.h"
#include "ED_util.h"
@@ -66,17 +67,46 @@
/* ************************ header time area region *********************** */
+static ARegion *time_top_left_3dwindow(bScreen *screen)
+{
+ ARegion *aret= NULL;
+ ScrArea *sa;
+ int min= 10000;
+
+ for(sa= screen->areabase.first; sa; sa= sa->next) {
+ if(sa->spacetype==SPACE_VIEW3D) {
+ ARegion *ar;
+ for(ar= sa->regionbase.first; ar; ar= ar->next) {
+ if(ar->regiontype==RGN_TYPE_WINDOW) {
+ if(ar->winrct.xmin - ar->winrct.ymin < min) {
+ aret= ar;
+ min= ar->winrct.xmin - ar->winrct.ymin;
+ }
+ }
+ }
+ }
+ }
+ return aret;
+}
static void do_time_redrawmenu(bContext *C, void *arg, int event)
{
- SpaceTime *stime= (SpaceTime*)CTX_wm_space_data(C);
if(event < 1001) {
+ bScreen *screen= CTX_wm_screen(C);
+ SpaceTime *stime= (SpaceTime*)CTX_wm_space_data(C);
stime->redraws ^= event;
- /* update handler when it's running */
-// if(has_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM))
-// start_animated_screen(stime);
+
+ if(screen->animtimer) {
+ wmTimer *wt= screen->animtimer;
+ ScreenAnimData *sad= wt->customdata;
+
+ sad->redraws= stime->redraws;
+ sad->ar= NULL;
+ if(stime->redraws & TIME_REGION)
+ sad->ar= time_top_left_3dwindow(screen);
+ }
}
else {
if(event==1001) {
@@ -98,9 +128,9 @@ static uiBlock *time_redrawmenu(bContext *C, ARegion *ar, void *arg_unused)
block= uiBeginBlock(C, ar, "header time_redrawmenu", UI_EMBOSSP);
uiBlockSetButmFunc(block, do_time_redrawmenu, NULL);
- if(stime->redraws & TIME_LEFTMOST_3D_WIN) icon= ICON_CHECKBOX_HLT;
+ if(stime->redraws & TIME_REGION) icon= ICON_CHECKBOX_HLT;
else icon= ICON_CHECKBOX_DEHLT;
- uiDefIconTextBut(block, BUTM, 1, icon, "Top-Left 3D Window", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, TIME_LEFTMOST_3D_WIN, "");
+ uiDefIconTextBut(block, BUTM, 1, icon, "Top-Left 3D Window", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, TIME_REGION, "");
if(stime->redraws & TIME_ALL_3D_WIN) icon= ICON_CHECKBOX_HLT;
else icon= ICON_CHECKBOX_DEHLT;
@@ -358,7 +388,8 @@ static uiBlock *time_framemenu(bContext *C, ARegion *ar, void *arg_unused)
void do_time_buttons(bContext *C, void *arg, int event)
{
-// SpaceTime *stime= (SpaceTime*)CTX_wm_space_data(C);
+ bScreen *screen= CTX_wm_screen(C);
+ SpaceTime *stime= (SpaceTime*)CTX_wm_space_data(C);
Scene *scene= CTX_data_scene(C);
switch(event) {
@@ -374,10 +405,19 @@ void do_time_buttons(bContext *C, void *arg, int event)
//update_for_newframe();
break;
case B_TL_PLAY:
- ED_screen_animation_timer(C, 1);
+ ED_screen_animation_timer(C, stime->redraws, 1);
+
+ /* update region if TIME_REGION was set, to leftmost 3d window */
+ if(screen->animtimer && (stime->redraws & TIME_REGION)) {
+ wmTimer *wt= screen->animtimer;
+ ScreenAnimData *sad= wt->customdata;
+
+ sad->ar= time_top_left_3dwindow(screen);
+ }
+
break;
case B_TL_STOP:
- ED_screen_animation_timer(C, 0);
+ ED_screen_animation_timer(C, 0, 0);
break;
case B_TL_FF:
/* end frame */
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index ffece48dc95..72594c6fa94 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -3073,7 +3073,11 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
}
totpart=psys->totpart;
- draw_as=part->draw_as;
+
+ if(part->draw_as==PART_DRAW_REND)
+ draw_as = part->ren_as;
+ else
+ draw_as = part->draw_as;
if(part->flag&PART_GLOB_TIME)
cfra=bsystem_time(scene, 0, (float)CFRA, 0.0f);
@@ -3520,7 +3524,6 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glColorPointer(3, GL_FLOAT, 0, cdata);
}
-
/* draw created data arrays */
switch(draw_as){
case PART_DRAW_AXIS:
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 3b3fd5109cf..6e33b1dcaab 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -393,7 +393,9 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_GEOM_DATA:
case ND_DRAW:
case ND_MODIFIER:
+ case ND_CONSTRAINT:
case ND_KEYS:
+ case ND_PARTICLE:
ED_region_tag_redraw(ar);
break;
}
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index 4f3207f5cda..acb29ada619 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -1502,6 +1502,7 @@ static void view3d_panel_preview(bContext *C, ARegion *ar, short cntrl) // VIEW3
}
#endif
+#if 0
static void view3d_panel_gpencil(const bContext *C, Panel *pa)
{
View3D *v3d= CTX_wm_view3d(C);
@@ -1526,6 +1527,7 @@ static void view3d_panel_gpencil(const bContext *C, Panel *pa)
uiDefBut(block, LABEL, 1, " ", 160, 180, 150, 20, NULL, 0.0, 0.0, 0, 0, "");
}
}
+#endif
static void delete_sketch_armature(bContext *C, void *arg1, void *arg2)
{
@@ -1574,7 +1576,7 @@ static void view3d_panel_bonesketch_spaces(const bContext *C, Panel *pa)
uiBlockBeginAlign(block);
/* use real flag instead of 1 */
- uiDefButBitC(block, TOG, BONE_SKETCHING, B_REDR, "Use Bone Sketching", 10, yco, 160, 20, &scene->toolsettings->bone_sketching, 0, 0, 0, 0, "Use sketching to create and edit bones");
+ uiDefButBitC(block, TOG, BONE_SKETCHING, B_REDR, "Use Bone Sketching", 10, yco, 160, 20, &scene->toolsettings->bone_sketching, 0, 0, 0, 0, "Use sketching to create and edit bones, (Ctrl snaps to mesh volume)");
uiDefButBitC(block, TOG, BONE_SKETCHING_ADJUST, B_REDR, "A", 170, yco, 20, 20, &scene->toolsettings->bone_sketching, 0, 0, 0, 0, "Adjust strokes by drawing near them");
uiDefButBitC(block, TOG, BONE_SKETCHING_QUICK, B_REDR, "Q", 190, yco, 20, 20, &scene->toolsettings->bone_sketching, 0, 0, 0, 0, "Automatically convert and delete on stroke end");
yco -= 20;
@@ -1687,7 +1689,7 @@ static void view3d_panel_operator_redo(const bContext *C, Panel *pa)
PointerRNA ptr;
uiBlock *block;
- block= uiLayoutBlock(pa->layout);
+ block= uiLayoutGetBlock(pa->layout);
/* only for operators that are registered and did an undo push */
for(op= wm->operators.last; op; op= op->prev)
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index bbf0279692a..54696fc4508 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -36,6 +36,7 @@
#include "DNA_customdata_types.h"
#include "DNA_group_types.h"
#include "DNA_key_types.h"
+#include "DNA_lamp_types.h"
#include "DNA_object_types.h"
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
@@ -1052,7 +1053,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
int m;
#endif
- if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT);
+ if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT || (FACESEL_PAINT_TEST));
else if((G.f & G_TEXTUREPAINT) && scene->toolsettings && (scene->toolsettings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE));
else if((G.f & G_PARTICLEEDIT) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
else if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
@@ -1727,12 +1728,14 @@ typedef struct View3DShadow {
static void gpu_render_lamp_update(Scene *scene, View3D *v3d, Object *ob, Object *par, float obmat[][4], ListBase *shadows)
{
GPULamp *lamp;
+ Lamp *la = (Lamp*)ob->data;
View3DShadow *shadow;
lamp = GPU_lamp_from_blender(scene, ob, par);
if(lamp) {
GPU_lamp_update(lamp, ob->lay, obmat);
+ GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->energy);
if((ob->lay & v3d->lay) && GPU_lamp_has_shadow_buffer(lamp)) {
shadow= MEM_callocN(sizeof(View3DShadow), "View3DShadow");
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 63e8ae61124..f3c4c1170d1 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -681,7 +681,7 @@ static void view3d_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemS(layout);
- uiLayoutContext(layout, WM_OP_INVOKE_REGION_WIN);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
uiItemO(layout, NULL, 0, "VIEW3D_OT_clipping");
uiItemO(layout, NULL, 0, "VIEW3D_OT_zoom_border");
@@ -3360,7 +3360,7 @@ static void view3d_edit_curvemenu(bContext *C, uiLayout *layout, void *arg_unuse
uiItemS(layout);
- uiItemR(layout, NULL, 0, &sceneptr, "proportional_editing", 0, 0); // |O
+ uiItemR(layout, NULL, 0, &sceneptr, "proportional_editing", 0, 0, 0); // |O
uiItemMenuEnumR(layout, NULL, 0, &sceneptr, "proportional_editing_falloff");
uiItemS(layout);
@@ -4534,12 +4534,12 @@ static void view3d_sculpt_menu(bContext *C, uiLayout *layout, void *arg_unused)
RNA_pointer_create(&sc->id, &RNA_Sculpt, s, &rna);
- uiItemR(layout, NULL, 0, &rna, "symmetry_x", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "symmetry_y", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "symmetry_z", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "lock_x", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "lock_y", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "lock_z", 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "symmetry_x", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "symmetry_y", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "symmetry_z", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "lock_x", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "lock_y", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "lock_z", 0, 0, 0);
/* Brush settings */
RNA_pointer_create(&sc->id, &RNA_Brush, s->brush, &rna);
@@ -4552,12 +4552,12 @@ static void view3d_sculpt_menu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemS(layout);
- uiItemR(layout, NULL, 0, &rna, "airbrush", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "rake", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "anchored", 0, 0);
- uiItemR(layout, NULL, 0, &rna, "space", 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "airbrush", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "rake", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "anchored", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "space", 0, 0, 0);
- uiItemR(layout, NULL, 0, &rna, "flip_direction", 0, 0);
+ uiItemR(layout, NULL, 0, &rna, "flip_direction", 0, 0, 0);
}
uiBlock *view3d_sculptmenu(bContext *C, ARegion *ar, void *arg_unused)
@@ -5262,6 +5262,19 @@ static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay)
return ICON_BLANK1;
}
+static void header_xco_step(ARegion *ar, int *xco, int *yco, int *maxco, int step)
+{
+ *xco += step;
+ if(*maxco < *xco) *maxco = *xco;
+
+ if(ar->winy > *yco + 44) {
+ if(*xco > ar->winrct.xmax) {
+ *xco= 8;
+ *yco+= 22;
+ }
+ }
+}
+
void view3d_header_buttons(const bContext *C, ARegion *ar)
{
ScrArea *sa= CTX_wm_area(C);
@@ -5270,7 +5283,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
Object *ob= OBACT;
Object *obedit = CTX_data_edit_object(C);
uiBlock *block;
- int a, xco, yco= 3;
+ int a, xco, maxco=0, yco= 3;
block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL);
@@ -5307,14 +5320,12 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiDefIconTextButS(block, MENU, B_MODESELECT, (v3d->modeselect),view3d_modeselect_pup(scene) ,
xco,yco,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)");
-
- xco+= 126+8;
+ header_xco_step(ar, &xco, &yco, &maxco, 126+8);
/* DRAWTYPE */
uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_BBOX, drawtype_pup(), xco,yco,XIC+10,YIC, &(v3d->drawtype), 1.0, 5.0, 0, 0, "Viewport Shading (Hotkeys: Z, Shift Z, Alt Z)");
- /* around */
- xco+= XIC+18;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC+18);
uiBlockBeginAlign(block);
@@ -5324,38 +5335,37 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
ToolSettings *ts= scene->toolsettings;
uiDefButC(block,ROW,B_REDR,"Pen",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_PEN,0,0,"");
- xco+=40;
+ xco+= 40;
uiDefButC(block,ROW,B_REDR,"Line",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_LINE,0,0,"");
- xco+=40;
+ xco+= 40;
uiDefButC(block,ROW,B_REDR,"Ellipse",xco,yco,60,20,&ts->retopo_paint_tool,6.0,RETOPO_ELLIPSE,0,0,"");
- xco+=65;
+ xco+= 65;
uiBlockBeginAlign(block);
if(ts->retopo_paint_tool == RETOPO_PEN) {
uiDefButC(block,TOG,B_NOP,"Hotspot",xco,yco,60,20, &ts->retopo_hotspot, 0,0,0,0,"Show hotspots at line ends to allow line continuation");
- xco+=80;
+ xco+= 80;
}
else if(ts->retopo_paint_tool == RETOPO_LINE) {
uiDefButC(block,NUM,B_NOP,"LineDiv",xco,yco,80,20,&ts->line_div,1,50,0,0,"Subdivisions per retopo line");
- xco+=80;
+ xco+= 80;
}
else if(ts->retopo_paint_tool == RETOPO_ELLIPSE) {
uiDefButC(block,NUM,B_NOP,"EllDiv",xco,yco,80,20,&ts->ellipse_div,3,50,0,0,"Subdivisions per retopo ellipse");
- xco+=80;
+ xco+= 80;
}
- xco+=5;
+ header_xco_step(ar, &xco, &yco, &maxco, 5);
uiBlockEndAlign(block);
}
} else {
if (obedit==NULL && (G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT))) {
uiDefIconButBitI(block, TOG, G_FACESELECT, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &G.f, 0, 0, 0, 0, "Painting Mask (FKey)");
- xco+= XIC+10;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
} else {
- /* Manipulators arnt used in weight paint mode */
+ /* Manipulators aren't used in weight paint mode */
char *str_menu;
uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(C), xco,yco,XIC+10,YIC, &(v3d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period, Ctrl Period, Alt Period)");
-
xco+= XIC+10;
uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN,
@@ -5363,14 +5373,13 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
&v3d->flag, 0, 0, 0, 0, "Move object centers only");
uiBlockEndAlign(block);
- xco+= XIC+8;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC+8);
uiBlockBeginAlign(block);
/* NDOF */
if (G.ndofdevice ==0 ) {
uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), xco,yco,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode");
-
xco+= XIC+10;
uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM,
@@ -5378,7 +5387,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
&v3d->ndoffilter, 0, 1, 0, 0, "dominant axis");
uiBlockEndAlign(block);
- xco+= XIC+8;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC+8);
}
uiBlockEndAlign(block);
@@ -5386,7 +5395,6 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiBlockBeginAlign(block);
uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,yco,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)");
xco+= XIC;
-
if(v3d->twflag & V3D_USE_MANIPULATOR) {
uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)");
@@ -5405,9 +5413,8 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiDefButS(block, MENU, B_MAN_MODE, str_menu,xco,yco,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)");
MEM_freeN(str_menu);
- xco+= 70;
+ header_xco_step(ar, &xco, &yco, &maxco, 78);
uiBlockEndAlign(block);
- xco+= 8;
}
/* LAYERS */
@@ -5434,7 +5441,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
/* LOCK */
uiDefIconButS(block, ICONTOG, B_SCENELOCK, ICON_LOCKVIEW_OFF, xco+=XIC,yco,XIC,YIC, &(v3d->scenelock), 0, 0, 0, 0, "Locks Active Camera and layers to Scene (Ctrl `)");
- xco+= XIC+10;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
}
@@ -5450,7 +5457,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
xco+= XIC+10;
}
uiBlockEndAlign(block);
- xco+= 10;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC+10);
}
/* Snap */
@@ -5458,7 +5465,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiBlockBeginAlign(block);
if (scene->snap_flag & SCE_SNAP) {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Use Snap or Grid (Shift Tab)");
+ uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
xco+= XIC;
uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target");
xco+= XIC;
@@ -5469,14 +5476,14 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(scene->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode");
xco+= XIC;
uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &scene->snap_target, 0, 0, 0, 0, "Snap Target Mode");
- xco+= 70;
+ xco+= XIC+70;
} else {
uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
xco+= XIC;
}
uiBlockEndAlign(block);
- xco+= 10;
+ header_xco_step(ar, &xco, &yco, &maxco, 10);
}
/* selection modus */
@@ -5496,7 +5503,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
xco+= XIC;
}
uiBlockEndAlign(block);
- xco+= 20;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC);
}
else if(G.f & G_PARTICLEEDIT) {
uiBlockBeginAlign(block);
@@ -5507,12 +5514,13 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiDefIconButBitS(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Tip select mode");
xco+= XIC;
uiBlockEndAlign(block);
+
if(v3d->drawtype > OB_WIRE) {
uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Limit selection to visible (clipped with depth buffer)");
xco+= XIC;
}
uiBlockEndAlign(block);
- xco+= 20;
+ header_xco_step(ar, &xco, &yco, &maxco, XIC);
}
uiDefIconBut(block, BUT, B_VIEWRENDER, ICON_SCENE, xco,yco,XIC,YIC, NULL, 0, 1.0, 0, 0, "Render this window (Ctrl Click for anim)");
@@ -5523,22 +5531,26 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiBlockBeginAlign(block);
uiDefIconBut(block, BUT, B_ACTCOPY, ICON_COPYDOWN,
- xco+=XIC,yco,XIC,YIC, 0, 0, 0, 0, 0,
+ xco,yco,XIC,YIC, 0, 0, 0, 0, 0,
"Copies the current pose to the buffer");
uiBlockSetButLock(block, object_data_is_libdata(ob), "Can't edit external libdata");
+ xco+= XIC;
+
uiDefIconBut(block, BUT, B_ACTPASTE, ICON_PASTEDOWN,
- xco+=XIC,yco,XIC,YIC, 0, 0, 0, 0, 0,
+ xco,yco,XIC,YIC, 0, 0, 0, 0, 0,
"Pastes the pose from the buffer");
+ xco+= XIC;
uiDefIconBut(block, BUT, B_ACTPASTEFLIP, ICON_PASTEFLIPDOWN,
- xco+=XIC,yco,XIC,YIC, 0, 0, 0, 0, 0,
+ xco,yco,XIC,YIC, 0, 0, 0, 0, 0,
"Pastes the mirrored pose from the buffer");
-
uiBlockEndAlign(block);
+ header_xco_step(ar, &xco, &yco, &maxco, XIC);
+
}
}
/* always as last */
- UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
+ UI_view2d_totRect_set(&ar->v2d, maxco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
uiEndBlock(C, block);
uiDrawBlock(C, block);
diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c
index c7cd5a92ebf..1e55f2e4a9a 100644
--- a/source/blender/editors/space_view3d/view3d_toolbar.c
+++ b/source/blender/editors/space_view3d/view3d_toolbar.c
@@ -127,7 +127,7 @@ static void view3d_panel_operator_redo(const bContext *C, Panel *pa)
PointerRNA ptr;
uiBlock *block;
- block= uiLayoutBlock(pa->layout);
+ block= uiLayoutGetBlock(pa->layout);
/* only for operators that are registered and did an undo push */
for(op= wm->operators.last; op; op= op->prev)
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 06e5f69bbdf..e1a6f32aa41 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -203,6 +203,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo
struct SmoothViewStore sms;
/* initialize sms */
+ memset(&sms,0,sizeof(struct SmoothViewStore));
VECCOPY(sms.new_ofs, rv3d->ofs);
QUATCOPY(sms.new_quat, rv3d->viewquat);
sms.new_dist= rv3d->dist;
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 5cc471ebc22..20f74085e52 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -4374,11 +4374,11 @@ void param_pack(ParamHandle *handle, float margin)
}
box = boxarray+(i-unpacked);
- trans[0] = margin * area;
- trans[1] = margin * area;
+ trans[0] = margin;
+ trans[1] = margin;
p_chart_uv_translate(chart, trans);
- box->w += (margin * area) *2;
- box->h += (margin * area) *2;
+ box->w += margin*2;
+ box->h += margin*2;
}
}
diff --git a/source/blender/gpu/GPU_material.h b/source/blender/gpu/GPU_material.h
index ccc687858f4..49c0dc166c1 100644
--- a/source/blender/gpu/GPU_material.h
+++ b/source/blender/gpu/GPU_material.h
@@ -159,6 +159,7 @@ void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize
void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4]);
+void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy);
int GPU_lamp_shadow_layer(GPULamp *lamp);
#ifdef __cplusplus
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index 0e123d872fe..f8d0957f70d 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -79,29 +79,24 @@ void GPU_render_text(MTFace *tface, int mode,
const char *textstr, int textlen, unsigned int *col,
float *v1, float *v2, float *v3, float *v4, int glattrib)
{
- if (mode & TF_BMFONT) {
- Image* ima;
- int characters, index, character;
+ if ((mode & TF_BMFONT) && (textlen>0) && tface->tpage) {
+ Image* ima = (Image*)tface->tpage;
+ int index, character;
float centerx, centery, sizex, sizey, transx, transy, movex, movey, advance;
float advance_tab;
-
/* multiline */
- float line_start= 0.0f, line_height;
+ float line_start= 0.0f, line_height;
+
if (v4)
line_height= MAX4(v1[1], v2[1], v3[1], v4[2]) - MIN4(v1[1], v2[1], v3[1], v4[2]);
else
line_height= MAX3(v1[1], v2[1], v3[1]) - MIN3(v1[1], v2[1], v3[1]);
line_height *= 1.2; /* could be an option? */
/* end multiline */
-
- characters = textlen;
- ima = (Image*)tface->tpage;
- if (ima == NULL)
- characters = 0;
-
- // color has been set
+
+ /* color has been set */
if (tface->mode & TF_OBCOL)
col= NULL;
else if (!col)
@@ -116,7 +111,7 @@ void GPU_render_text(MTFace *tface, int mode,
advance_tab= advance * 4; /* tab width could also be an option */
- for (index = 0; index < characters; index++) {
+ for (index = 0; index < textlen; index++) {
float uv[4][2];
// lets calculate offset stuff
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c
index 87703bc73bf..818b67170c7 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -1306,6 +1306,16 @@ void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4])
Mat4Invert(lamp->imat, mat);
}
+void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy)
+{
+ lamp->energy = energy;
+ if(lamp->mode & LA_NEG) lamp->energy= -lamp->energy;
+
+ lamp->col[0]= r* lamp->energy;
+ lamp->col[1]= g* lamp->energy;
+ lamp->col[2]= b* lamp->energy;
+}
+
static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *la, GPULamp *lamp)
{
float temp, angle, pixsize, wsize;
diff --git a/source/blender/imbuf/IMB_imbuf.h b/source/blender/imbuf/IMB_imbuf.h
index 8bc1439fd09..1d8035a2358 100644
--- a/source/blender/imbuf/IMB_imbuf.h
+++ b/source/blender/imbuf/IMB_imbuf.h
@@ -410,6 +410,7 @@ void bilinear_interpolation(struct ImBuf *in, struct ImBuf *out, float u, float
void bicubic_interpolation_color(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);
void neareast_interpolation_color(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);
void bilinear_interpolation_color(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);
+void bilinear_interpolation_color_wrap(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);
/**
* Change the ordering of the color bytes pointed to by rect from
diff --git a/source/blender/imbuf/intern/anim.c b/source/blender/imbuf/intern/anim.c
index 30f24d9bbf3..a2dbdfbe483 100644
--- a/source/blender/imbuf/intern/anim.c
+++ b/source/blender/imbuf/intern/anim.c
@@ -1046,10 +1046,11 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position) {
char head[256], tail[256];
unsigned short digits;
int pic;
- int filter_y = (anim->ib_flags & IB_animdeinterlace);
-
+ int filter_y;
if (anim == NULL) return(0);
+ filter_y = (anim->ib_flags & IB_animdeinterlace);
+
if (anim->curtype == 0) {
ibuf = anim_getnew(anim);
if (ibuf == NULL) {
diff --git a/source/blender/imbuf/intern/imageprocess.c b/source/blender/imbuf/intern/imageprocess.c
index fe7e26eac2b..e4977c77155 100644
--- a/source/blender/imbuf/intern/imageprocess.c
+++ b/source/blender/imbuf/intern/imageprocess.c
@@ -294,10 +294,79 @@ void bilinear_interpolation_color(struct ImBuf *in, unsigned char *outI, float *
b= v-floor(v);
a_b= a*b; ma_b= (1.0f-a)*b; a_mb= a*(1.0f-b); ma_mb= (1.0f-a)*(1.0f-b);
- outI[0]= ma_mb*row1I[0] + a_mb*row3I[0] + ma_b*row2I[0]+ a_b*row4I[0];
- outI[1]= ma_mb*row1I[1] + a_mb*row3I[1] + ma_b*row2I[1]+ a_b*row4I[1];
- outI[2]= ma_mb*row1I[2] + a_mb*row3I[2] + ma_b*row2I[2]+ a_b*row4I[2];
- outI[3]= ma_mb*row1I[3] + a_mb*row3I[3] + ma_b*row2I[3]+ a_b*row4I[3];
+ /* need to add 0.5 to avoid rounding down (causes darken with the smear brush)
+ * tested with white images and this should not wrap back to zero */
+ outI[0]= (ma_mb*row1I[0] + a_mb*row3I[0] + ma_b*row2I[0]+ a_b*row4I[0]) + 0.5f;
+ outI[1]= (ma_mb*row1I[1] + a_mb*row3I[1] + ma_b*row2I[1]+ a_b*row4I[1]) + 0.5f;
+ outI[2]= (ma_mb*row1I[2] + a_mb*row3I[2] + ma_b*row2I[2]+ a_b*row4I[2]) + 0.5f;
+ outI[3]= (ma_mb*row1I[3] + a_mb*row3I[3] + ma_b*row2I[3]+ a_b*row4I[3]) + 0.5f;
+ }
+}
+
+/* function assumes out to be zero'ed, only does RGBA */
+/* BILINEAR INTERPOLATION */
+
+/* Note about wrapping, the u/v still needs to be within the image bounds,
+ * just the interpolation is wrapped.
+ * This the same as bilinear_interpolation_color except it wraps rather then using empty and emptyI */
+void bilinear_interpolation_color_wrap(struct ImBuf *in, unsigned char *outI, float *outF, float u, float v)
+{
+ float *row1, *row2, *row3, *row4, a, b;
+ unsigned char *row1I, *row2I, *row3I, *row4I;
+ float a_b, ma_b, a_mb, ma_mb;
+ int y1, y2, x1, x2;
+
+
+ /* ImBuf in must have a valid rect or rect_float, assume this is alredy checked */
+
+ x1= (int)floor(u);
+ x2= (int)ceil(u);
+ y1= (int)floor(v);
+ y2= (int)ceil(v);
+
+ // sample area entirely outside image?
+ if (x2<0 || x1>in->x-1 || y2<0 || y1>in->y-1) return;
+
+ /* wrap interpolation pixels - main difference from bilinear_interpolation_color */
+ if(x1<0)x1= in->x+x1;
+ if(y1<0)y1= in->y+y1;
+
+ if(x2>=in->x)x2= x2-in->x;
+ if(y2>=in->y)y2= y2-in->y;
+
+ if (outF) {
+ // sample including outside of edges of image
+ row1= (float *)in->rect_float + in->x * y1 * 4 + 4*x1;
+ row2= (float *)in->rect_float + in->x * y2 * 4 + 4*x1;
+ row3= (float *)in->rect_float + in->x * y1 * 4 + 4*x2;
+ row4= (float *)in->rect_float + in->x * y2 * 4 + 4*x2;
+
+ a= u-floor(u);
+ b= v-floor(v);
+ a_b= a*b; ma_b= (1.0f-a)*b; a_mb= a*(1.0f-b); ma_mb= (1.0f-a)*(1.0f-b);
+
+ outF[0]= ma_mb*row1[0] + a_mb*row3[0] + ma_b*row2[0]+ a_b*row4[0];
+ outF[1]= ma_mb*row1[1] + a_mb*row3[1] + ma_b*row2[1]+ a_b*row4[1];
+ outF[2]= ma_mb*row1[2] + a_mb*row3[2] + ma_b*row2[2]+ a_b*row4[2];
+ outF[3]= ma_mb*row1[3] + a_mb*row3[3] + ma_b*row2[3]+ a_b*row4[3];
+ }
+ if (outI) {
+ // sample including outside of edges of image
+ row1I= (unsigned char *)in->rect + in->x * y1 * 4 + 4*x1;
+ row2I= (unsigned char *)in->rect + in->x * y2 * 4 + 4*x1;
+ row3I= (unsigned char *)in->rect + in->x * y1 * 4 + 4*x2;
+ row4I= (unsigned char *)in->rect + in->x * y2 * 4 + 4*x2;
+
+ a= u-floor(u);
+ b= v-floor(v);
+ a_b= a*b; ma_b= (1.0f-a)*b; a_mb= a*(1.0f-b); ma_mb= (1.0f-a)*(1.0f-b);
+
+ /* need to add 0.5 to avoid rounding down (causes darken with the smear brush)
+ * tested with white images and this should not wrap back to zero */
+ outI[0]= (ma_mb*row1I[0] + a_mb*row3I[0] + ma_b*row2I[0]+ a_b*row4I[0]) + 0.5f;
+ outI[1]= (ma_mb*row1I[1] + a_mb*row3I[1] + ma_b*row2I[1]+ a_b*row4I[1]) + 0.5f;
+ outI[2]= (ma_mb*row1I[2] + a_mb*row3I[2] + ma_b*row2I[2]+ a_b*row4I[2]) + 0.5f;
+ outI[3]= (ma_mb*row1I[3] + a_mb*row3I[3] + ma_b*row2I[3]+ a_b*row4I[3]) + 0.5f;
}
}
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp
index e723609f3ae..32d97d79bd7 100644
--- a/source/blender/imbuf/intern/openexr/openexr_api.cpp
+++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp
@@ -570,13 +570,17 @@ void IMB_exr_write_channels(void *handle)
FrameBuffer frameBuffer;
ExrChannel *echan;
- for(echan= (ExrChannel *)data->channels.first; echan; echan= echan->next)
- frameBuffer.insert (echan->name, Slice (FLOAT, (char *)echan->rect,
- echan->xstride*sizeof(float), echan->ystride*sizeof(float)));
-
- data->ofile->setFrameBuffer (frameBuffer);
- data->ofile->writePixels (data->height);
-
+ if(data->channels.first) {
+ for(echan= (ExrChannel *)data->channels.first; echan; echan= echan->next)
+ frameBuffer.insert (echan->name, Slice (FLOAT, (char *)echan->rect,
+ echan->xstride*sizeof(float), echan->ystride*sizeof(float)));
+
+ data->ofile->setFrameBuffer (frameBuffer);
+ data->ofile->writePixels (data->height);
+ }
+ else {
+ printf("Error: attempt to save MultiLayer without layers.\n");
+ }
}
void IMB_exr_read_channels(void *handle)
@@ -861,6 +865,7 @@ static const char *exr_rgba_channelname(InputFile *file, const char *chan)
for (ChannelList::ConstIterator i = channels.begin(); i != channels.end(); ++i)
{
+ /* const Channel &channel = i.channel(); */ /* Not used yet */
const char *str= i.name();
int len= strlen(str);
if(len) {
diff --git a/source/blender/imbuf/intern/rotate.c b/source/blender/imbuf/intern/rotate.c
index c04987b3e71..732c06907df 100644
--- a/source/blender/imbuf/intern/rotate.c
+++ b/source/blender/imbuf/intern/rotate.c
@@ -30,6 +30,7 @@
*/
#include "BLI_blenlib.h"
+#include "BKE_utildefines.h"
#include "imbuf.h"
#include "imbuf_patch.h"
@@ -94,7 +95,6 @@ void IMB_flipy(struct ImBuf * ibuf)
void IMB_flipx(struct ImBuf * ibuf)
{
short x, y, xr, xl, yi;
- unsigned int px;
float px_f[4];
if (ibuf == NULL) return;
@@ -105,9 +105,7 @@ void IMB_flipx(struct ImBuf * ibuf)
if (ibuf->rect) {
for(yi=y-1;yi>=0;yi--) {
for(xr=x-1, xl=0; xr>=xl; xr--, xl++) {
- px = ibuf->rect[(x*yi)+xr];
- ibuf->rect[(x*yi)+xr] = ibuf->rect[(x*yi)+xl];
- ibuf->rect[(x*yi)+xl] = px;
+ SWAP(unsigned int, ibuf->rect[(x*yi)+xr], ibuf->rect[(x*yi)+xl]);
}
}
}
diff --git a/source/blender/imbuf/intern/scaling.c b/source/blender/imbuf/intern/scaling.c
index 807b0c84e90..1ccdad05deb 100644
--- a/source/blender/imbuf/intern/scaling.c
+++ b/source/blender/imbuf/intern/scaling.c
@@ -596,12 +596,12 @@ static void shrink_picture_byte(
y_counter = 65536;
for (y_src = 0; y_src < src_height; y_src++) {
unsigned char* line = src + y_src * 4 * src_width;
- uintptr_t weight1y = 65536 - (y_dst & 0xffff);
- uintptr_t weight2y = 65536 - weight1y;
+ uintptr_t weight1y = 65535 - (y_dst & 0xffff);
+ uintptr_t weight2y = 65535 - weight1y;
x_dst = 0;
for (x_src = 0; x_src < src_width; x_src++) {
- uintptr_t weight1x = 65536 - (x_dst & 0xffff);
- uintptr_t weight2x = 65536 - weight1x;
+ uintptr_t weight1x = 65535 - (x_dst & 0xffff);
+ uintptr_t weight2x = 65535 - weight1x;
uintptr_t x = x_dst >> 16;
@@ -609,34 +609,35 @@ static void shrink_picture_byte(
w = (weight1y * weight1x) >> 16;
- dst_line1[x].r += (line[0] * w) >> 16;
- dst_line1[x].g += (line[1] * w) >> 16;
- dst_line1[x].b += (line[2] * w) >> 16;
- dst_line1[x].a += (line[3] * w) >> 16;
+ /* ensure correct rounding, without this you get ugly banding, or too low color values (ton) */
+ dst_line1[x].r += (line[0] * w + 32767) >> 16;
+ dst_line1[x].g += (line[1] * w + 32767) >> 16;
+ dst_line1[x].b += (line[2] * w + 32767) >> 16;
+ dst_line1[x].a += (line[3] * w + 32767) >> 16;
dst_line1[x].weight += w;
w = (weight2y * weight1x) >> 16;
- dst_line2[x].r += (line[0] * w) >> 16;
- dst_line2[x].g += (line[1] * w) >> 16;
- dst_line2[x].b += (line[2] * w) >> 16;
- dst_line2[x].a += (line[3] * w) >> 16;
+ dst_line2[x].r += (line[0] * w + 32767) >> 16;
+ dst_line2[x].g += (line[1] * w + 32767) >> 16;
+ dst_line2[x].b += (line[2] * w + 32767) >> 16;
+ dst_line2[x].a += (line[3] * w + 32767) >> 16;
dst_line2[x].weight += w;
w = (weight1y * weight2x) >> 16;
- dst_line1[x+1].r += (line[0] * w) >> 16;
- dst_line1[x+1].g += (line[1] * w) >> 16;
- dst_line1[x+1].b += (line[2] * w) >> 16;
- dst_line1[x+1].a += (line[3] * w) >> 16;
+ dst_line1[x+1].r += (line[0] * w + 32767) >> 16;
+ dst_line1[x+1].g += (line[1] * w + 32767) >> 16;
+ dst_line1[x+1].b += (line[2] * w + 32767) >> 16;
+ dst_line1[x+1].a += (line[3] * w + 32767) >> 16;
dst_line1[x+1].weight += w;
w = (weight2y * weight2x) >> 16;
- dst_line2[x+1].r += (line[0] * w) >> 16;
- dst_line2[x+1].g += (line[1] * w) >> 16;
- dst_line2[x+1].b += (line[2] * w) >> 16;
- dst_line2[x+1].a += (line[3] * w) >> 16;
+ dst_line2[x+1].r += (line[0] * w + 32767) >> 16;
+ dst_line2[x+1].g += (line[1] * w + 32767) >> 16;
+ dst_line2[x+1].b += (line[2] * w + 32767) >> 16;
+ dst_line2[x+1].a += (line[3] * w + 32767) >> 16;
dst_line2[x+1].weight += w;
x_dst += dx_dst;
@@ -646,18 +647,18 @@ static void shrink_picture_byte(
y_dst += dy_dst;
y_counter -= dy_dst;
if (y_counter < 0) {
+ int val;
uintptr_t x;
struct scale_outpix_byte * temp;
y_counter += 65536;
for (x=0; x < dst_width; x++) {
- uintptr_t f = 0x80000000UL
- / dst_line1[x].weight;
- *dst++ = (dst_line1[x].r * f) >> 15;
- *dst++ = (dst_line1[x].g * f) >> 15;
- *dst++ = (dst_line1[x].b * f) >> 15;
- *dst++ = (dst_line1[x].a * f) >> 15;
+ uintptr_t f = 0x80000000UL / dst_line1[x].weight;
+ *dst++ = (val= (dst_line1[x].r * f) >> 15) > 255 ? 255: val;
+ *dst++ = (val= (dst_line1[x].g * f) >> 15) > 255 ? 255: val;
+ *dst++ = (val= (dst_line1[x].b * f) >> 15) > 255 ? 255: val;
+ *dst++ = (val= (dst_line1[x].a * f) >> 15) > 255 ? 255: val;
}
memset(dst_line1, 0, dst_width *
sizeof(struct scale_outpix_byte));
@@ -667,13 +668,14 @@ static void shrink_picture_byte(
}
}
if (dst - dst_begin < dst_width * dst_height * 4) {
+ int val;
uintptr_t x;
for (x = 0; x < dst_width; x++) {
uintptr_t f = 0x80000000UL / dst_line1[x].weight;
- *dst++ = (dst_line1[x].r * f) >> 15;
- *dst++ = (dst_line1[x].g * f) >> 15;
- *dst++ = (dst_line1[x].b * f) >> 15;
- *dst++ = (dst_line1[x].a * f) >> 15;
+ *dst++ = (val= (dst_line1[x].r * f) >> 15) > 255 ? 255: val;
+ *dst++ = (val= (dst_line1[x].g * f) >> 15) > 255 ? 255: val;
+ *dst++ = (val= (dst_line1[x].b * f) >> 15) > 255 ? 255: val;
+ *dst++ = (val= (dst_line1[x].a * f) >> 15) > 255 ? 255: val;
}
}
MEM_freeN(dst_line1);
@@ -911,6 +913,8 @@ static void q_scale_float(float* in, float* out, int in_width,
Should be comparable in speed to the ImBuf ..._fast functions at least
for byte-buffers.
+ NOTE: disabled, due to inacceptable inaccuracy and quality loss, see bug #18609 (ton)
+
*/
static int q_scale_linear_interpolation(
struct ImBuf *ibuf, int newx, int newy)
@@ -1583,7 +1587,8 @@ struct ImBuf *IMB_scaleImBuf(struct ImBuf * ibuf, short newx, short newy)
scalefast_Z_ImBuf(ibuf, newx, newy);
/* try to scale common cases in a fast way */
- if (q_scale_linear_interpolation(ibuf, newx, newy)) {
+ /* disabled, quality loss is inacceptable, see report #18609 (ton) */
+ if (0 && q_scale_linear_interpolation(ibuf, newx, newy)) {
return ibuf;
}
diff --git a/source/blender/makesdna/CMakeLists.txt b/source/blender/makesdna/CMakeLists.txt
index a1afa37e5e6..1f8ab831ba6 100644
--- a/source/blender/makesdna/CMakeLists.txt
+++ b/source/blender/makesdna/CMakeLists.txt
@@ -24,4 +24,4 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(intern)
+ADD_SUBDIRECTORY(intern)
diff --git a/source/blender/makesdna/DNA_actuator_types.h b/source/blender/makesdna/DNA_actuator_types.h
index aeabae42adf..f713b4a8acc 100644
--- a/source/blender/makesdna/DNA_actuator_types.h
+++ b/source/blender/makesdna/DNA_actuator_types.h
@@ -107,6 +107,7 @@ typedef struct bObjectActuator {
float loc[3], rot[3];
float dloc[3], drot[3];
float linearvelocity[3], angularvelocity[3];
+ struct Object *reference;
} bObjectActuator;
typedef struct bIpoActuator {
@@ -214,7 +215,8 @@ typedef struct bTwoDFilterActuator{
}bTwoDFilterActuator;
typedef struct bParentActuator {
- char pad[4];
+ char pad[2];
+ short flag;
int type;
struct Object *ob;
} bParentActuator;
@@ -482,6 +484,11 @@ typedef struct FreeCamera {
/* parentactuator->type */
#define ACT_PARENT_SET 0
#define ACT_PARENT_REMOVE 1
+
+/* parentactuator->flag */
+#define ACT_PARENT_COMPOUND 1
+#define ACT_PARENT_GHOST 2
+
#endif
diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h
index f30cd63242a..bf6b9bed5a1 100644
--- a/source/blender/makesdna/DNA_anim_types.h
+++ b/source/blender/makesdna/DNA_anim_types.h
@@ -321,8 +321,10 @@ enum {
/* skip evaluation, as RNA-path cannot be resolved (similar to muting, but cannot be set by user) */
FCURVE_DISABLED = (1<<10),
- /* curve can only have whole-number values (int or boolean types) */
+ /* curve can only have whole-number values (integer types) */
FCURVE_INT_VALUES = (1<<11),
+ /* curve can only have certain discrete-number values (no interpolation at all, for enums/booleans) */
+ FCURVE_DISCRETE_VALUES = (1<<12),
} eFCurve_Flags;
/* extrapolation modes (only simple value 'extending') */
diff --git a/source/blender/makesdna/DNA_controller_types.h b/source/blender/makesdna/DNA_controller_types.h
index 376f95b0145..599bbf9653a 100644
--- a/source/blender/makesdna/DNA_controller_types.h
+++ b/source/blender/makesdna/DNA_controller_types.h
@@ -43,6 +43,9 @@ typedef struct bExpressionCont {
typedef struct bPythonCont {
struct Text *text;
+ char module[64];
+ int mode;
+ int flag; /* only used for debug now */
} bPythonCont;
typedef struct bController {
@@ -76,6 +79,10 @@ typedef struct bController {
#define CONT_DEL 2
#define CONT_NEW 4
#define CONT_MASK 8
+#define CONT_PRIO 16
+
+/* pyctrl->flag */
+#define CONT_PY_DEBUG 1
#endif
diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h
index 49435000820..718d1a17834 100644
--- a/source/blender/makesdna/DNA_object_force.h
+++ b/source/blender/makesdna/DNA_object_force.h
@@ -69,7 +69,7 @@ typedef struct PartDeflect {
struct Tex *tex; /* Texture of the texture effector */
struct RNG *rng; /* random noise generator for e.g. wind */
float f_noise; /* noise of force (currently used for wind) */
- int pad;
+ int seed; /* wind noise random seed */
} PartDeflect;
typedef struct PointCache {
@@ -119,7 +119,8 @@ typedef struct BulletSoftBody {
float kAHR; /* Anchors hardness [0,1] */
int collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */
int numclusteriterations; /* number of iterations to refine collision clusters*/
-
+ float welding; /* welding limit to remove duplicate/nearby vertices, 0.0..0.01 */
+ float margin; /* margin specific to softbody */
} BulletSoftBody;
/* BulletSoftBody.flag */
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index 60ca659c19c..febf2fe59cd 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -161,7 +161,7 @@ typedef struct Object {
float margin;
float max_vel; /* clamp the maximum velocity 0.0 is disabled */
float min_vel; /* clamp the maximum velocity 0.0 is disabled */
- float pad3; /* clamp the maximum velocity 0.0 is disabled */
+ float m_contactProcessingThreshold;
char dt, dtx;
char totcol; /* copy of mesh or curve or meta */
@@ -427,6 +427,7 @@ extern Object workob;
#define OB_COLLISION 65536
#define OB_SOFT_BODY 0x20000
#define OB_OCCLUDER 0x40000
+#define OB_SENSOR 0x80000
/* ob->gameflag2 */
#define OB_NEVER_DO_ACTIVITY_CULLING 1
@@ -446,6 +447,7 @@ extern Object workob;
#define OB_BODY_TYPE_RIGID 3
#define OB_BODY_TYPE_SOFT 4
#define OB_BODY_TYPE_OCCLUDER 5
+#define OB_BODY_TYPE_SENSOR 6
/* ob->scavisflag */
#define OB_VIS_SENS 1
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 575fcfd8ac7..6805082d094 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -106,6 +106,7 @@ typedef struct ParticleSettings {
/* physics modes */
short phystype, rotmode, avemode, reactevent;
short draw, draw_as, draw_size, childtype;
+ short ren_as, rt2[3];
/* number of path segments, power of 2 except */
short draw_step, ren_step;
short hair_step, keys_step;
@@ -302,12 +303,12 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
/* part->draw */
#define PART_DRAW_VEL 1
-#define PART_DRAW_ANG 2
+//#define PART_DRAW_PATH_LEN 2
#define PART_DRAW_SIZE 4
#define PART_DRAW_EMITTER 8 /* render emitter also */
-//#define PART_DRAW_KEYS 16 /* not used anywhere */
-#define PART_DRAW_ADAPT 32
-#define PART_DRAW_COS 64
+//#define PART_DRAW_HEALTH 16
+//#define PART_DRAW_TIMED_PATH 32
+//#define PART_DRAW_CACHED_PATH 64
#define PART_DRAW_BB_LOCK 128
#define PART_DRAW_PARENT 256
#define PART_DRAW_NUM 512
@@ -341,9 +342,11 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_BB_OFF_LINEAR 1
#define PART_BB_OFF_RANDOM 2
-/* part->draw as */
+/* part->draw_as */
+/* part->ren_as*/
#define PART_DRAW_NOT 0
#define PART_DRAW_DOT 1
+#define PART_DRAW_HALO 1
#define PART_DRAW_CIRC 2
#define PART_DRAW_CROSS 3
#define PART_DRAW_AXIS 4
@@ -352,6 +355,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_DRAW_OB 7
#define PART_DRAW_GR 8
#define PART_DRAW_BB 9
+#define PART_DRAW_REND 10
/* part->integrator */
#define PART_INT_EULER 0
@@ -382,11 +386,10 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_CHILD_FACES 2
/* psys->recalc */
-#define PSYS_INIT 1
-#define PSYS_DISTR 2
-#define PSYS_ALLOC 4
-#define PSYS_TYPE 8
-#define PSYS_RECALC_HAIR 16
+#define PSYS_RECALC_REDO 1 /* only do pathcache etc */
+#define PSYS_RECALC_RESET 2 /* reset everything including pointcache */
+#define PSYS_RECALC_TYPE 4 /* handle system type change */
+#define PSYS_RECALC_CHILD 16 /* only child settings changed */
/* psys->flag */
#define PSYS_CURRENT 1
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 6f88a98fee8..7391201776e 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -320,9 +320,9 @@ typedef struct RenderData {
/* Dome variables */
short domeres, domemode;
- short domeangle, pad9;
- float domesize;
+ short domeangle, dometilt;
float domeresbuf;
+ float pad2;
struct Text *dometext;
} RenderData;
@@ -679,6 +679,7 @@ typedef struct Scene {
#define R_STAMP_INFO 0x4000
#define R_FULL_SAMPLE 0x8000
#define R_COMP_RERENDER 0x10000
+#define R_RECURS_PROTECTION 0x20000
/* r->stamp */
#define R_STAMP_TIME 0x0001
@@ -762,7 +763,7 @@ typedef struct Scene {
#define MAXFRAMEF 300000.0f
#define MINFRAME 1
-#define MINFRAMEF 1.0
+#define MINFRAMEF 1.0f
/* depricate this! */
#define TESTBASE(v3d, base) ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
@@ -835,6 +836,7 @@ typedef struct Scene {
/* return flag next_object function */
+#define F_ERROR -1
#define F_START 0
#define F_SCENE 1
#define F_SET 2
diff --git a/source/blender/makesdna/DNA_sensor_types.h b/source/blender/makesdna/DNA_sensor_types.h
index 7a358ad0694..8b29ce1338d 100644
--- a/source/blender/makesdna/DNA_sensor_types.h
+++ b/source/blender/makesdna/DNA_sensor_types.h
@@ -158,7 +158,8 @@ typedef struct bSensor {
/* just add here, to avoid align errors... */
short invert; /* Whether or not to invert the output. */
short level; /* Whether the sensor is level base (edge by default) */
- int pad;
+ short tap;
+ short pad;
} bSensor;
typedef struct bJoystickSensor {
diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h
index a5a25adf37b..7fa26aa7572 100644
--- a/source/blender/makesdna/DNA_sequence_types.h
+++ b/source/blender/makesdna/DNA_sequence_types.h
@@ -78,6 +78,8 @@ typedef struct StripColorBalance {
typedef struct StripProxy {
char dir[160];
+ char file[80];
+ struct anim *anim;
} StripProxy;
typedef struct Strip {
@@ -262,6 +264,7 @@ typedef struct SpeedControlVars {
#define SEQ_USE_CROP 131072
#define SEQ_USE_COLOR_BALANCE 262144
#define SEQ_USE_PROXY_CUSTOM_DIR 524288
+#define SEQ_USE_PROXY_CUSTOM_FILE 2097152
/* deprecated, dont use a flag anymore*/
/*#define SEQ_ACTIVE 1048576*/
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 0d88e3eb6e8..3864bcd0a21 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -121,7 +121,7 @@ typedef struct SpaceButs {
struct RenderInfo *ri;
short cursens, curact;
- short align, tabo; /* align for panels, tab is old tab */
+ short align, preview; /* align for panels, preview is signal to refresh */
View2D v2d; /* depricated, copied to region */
short mainb, menunr; /* texnr and menunr have to remain shorts */
@@ -139,8 +139,9 @@ typedef struct SpaceButs {
short oldkeypress; /* for keeping track of the sub tab key cycling */
char flag, texact;
- char tab[8]; /* storing tabs for each context */
-
+ void *path; /* runtime */
+ int pathflag, dataicon; /* runtime */
+ ID *pinid;
} SpaceButs;
typedef struct SpaceSeq {
@@ -154,7 +155,8 @@ typedef struct SpaceSeq {
View2D v2d; /* depricated, copied to region */
float xof, yof; /* offset for drawing the image preview */
- short mainb, pad;
+ short mainb;
+ short render_size;
short chanshown;
short zebra;
int flag;
@@ -343,7 +345,8 @@ typedef struct SpaceNode {
float mx, my; /* mousepos for drawing socketless link */
struct bNodeTree *nodetree, *edittree;
- int treetype, pad; /* treetype: as same nodetree->type */
+ int treetype; /* treetype: as same nodetree->type */
+ short texfrom, pad; /* texfrom object, world or brush */
struct bGPdata *gpd; /* grease-pencil data */
} SpaceNode;
@@ -352,6 +355,11 @@ typedef struct SpaceNode {
#define SNODE_BACKDRAW 2
#define SNODE_DISPGP 4
+/* snode->texfrom */
+#define SNODE_TEX_OBJECT 0
+#define SNODE_TEX_WORLD 1
+#define SNODE_TEX_BRUSH 2
+
typedef struct SpaceImaSel {
SpaceLink *next, *prev;
ListBase regionbase; /* storage of regions for inactive spaces */
@@ -463,8 +471,26 @@ typedef struct SpaceImaSel {
#define TAB_SCENE_SOUND 3
#define TAB_SCENE_SEQUENCER 4
+
+/* buts->mainb new */
+#define BCONTEXT_SCENE 0
+#define BCONTEXT_WORLD 1
+#define BCONTEXT_OBJECT 2
+#define BCONTEXT_DATA 3
+#define BCONTEXT_MATERIAL 4
+#define BCONTEXT_TEXTURE 5
+#define BCONTEXT_PARTICLE 6
+#define BCONTEXT_PHYSICS 7
+#define BCONTEXT_GAME 8
+#define BCONTEXT_BONE 9
+#define BCONTEXT_MODIFIER 10
+#define BCONTEXT_CONSTRAINT 12
+#define BCONTEXT_TOT 13
+
/* sbuts->flag */
#define SB_PRV_OSA 1
+#define SB_PIN_CONTEXT 2
+#define SB_WORLD_TEX 4
/* sbuts->align */
#define BUT_FREE 0
@@ -684,7 +710,7 @@ enum {
#define TIME_ONLYACTSEL 4
/* time->redraws */
-#define TIME_LEFTMOST_3D_WIN 1
+#define TIME_REGION 1
#define TIME_ALL_3D_WIN 2
#define TIME_ALL_ANIM_WIN 4
#define TIME_ALL_BUTS_WIN 8
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index c7a74fe5358..022e1cef840 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -124,6 +124,7 @@ typedef struct ThemeUI {
uiWidgetColors wcol_regular, wcol_tool, wcol_radio, wcol_text, wcol_option;
uiWidgetColors wcol_num, wcol_numslider;
uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item;
+ uiWidgetColors wcol_box;
char iconfile[80]; // FILE_MAXFILE length
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index e546038902f..5cd78670e71 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -65,8 +65,7 @@ struct wmTimer;
typedef struct BGpic {
struct Image *ima;
struct ImageUser iuser;
- float xof, yof, size, zoom, blend;
- short xim, yim;
+ float xof, yof, size, blend;
} BGpic;
/* ********************************* */
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index ba423334cce..7d6b5ec8764 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -97,7 +97,7 @@ typedef struct wmWindow {
short active; /* set to 1 if an active window, for quick rejects */
short cursor; /* current mouse cursor type */
short lastcursor; /* for temp waitcursor */
- short pad2;
+ short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */
int pad3;
struct wmEvent *eventstate; /* storage for event system */
diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h
index 8216a0fb800..608a4ca982e 100644
--- a/source/blender/makesdna/DNA_world_types.h
+++ b/source/blender/makesdna/DNA_world_types.h
@@ -92,6 +92,7 @@ typedef struct World {
short mode;
short occlusionRes; /* resolution of occlusion Z buffer in pixel */
short physicsEngine; /* here it's aligned */
+ short ticrate, maxlogicstep, physubstep, maxphystep;
float misi, miststa, mistdist, misthi;
diff --git a/source/blender/makesrna/CMakeLists.txt b/source/blender/makesrna/CMakeLists.txt
index 879ebccc223..75f79fbdc3b 100644
--- a/source/blender/makesrna/CMakeLists.txt
+++ b/source/blender/makesrna/CMakeLists.txt
@@ -24,4 +24,4 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(intern)
+ADD_SUBDIRECTORY(intern)
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 36026cbf28c..d827d10ec27 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -43,6 +43,7 @@ struct Main;
extern BlenderRNA BLENDER_RNA;
extern StructRNA RNA_Action;
+extern StructRNA RNA_ActionConstraint;
extern StructRNA RNA_ActionGroup;
extern StructRNA RNA_Actuator;
extern StructRNA RNA_ActuatorSensor;
@@ -55,10 +56,11 @@ extern StructRNA RNA_AreaLamp;
extern StructRNA RNA_Armature;
extern StructRNA RNA_ArmatureModifier;
extern StructRNA RNA_ArrayModifier;
+extern StructRNA RNA_BackgroundImage;
extern StructRNA RNA_BevelModifier;
extern StructRNA RNA_BezierCurvePoint;
-extern StructRNA RNA_BlenderRNA;
extern StructRNA RNA_BlendTexture;
+extern StructRNA RNA_BlenderRNA;
extern StructRNA RNA_Bone;
extern StructRNA RNA_BooleanModifier;
extern StructRNA RNA_BooleanProperty;
@@ -66,6 +68,9 @@ extern StructRNA RNA_Brush;
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;
@@ -77,10 +82,73 @@ 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_CompositorNodeChroma;
+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_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_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_CompositorNodeValToRGB;
+extern StructRNA RNA_CompositorNodeValue;
+extern StructRNA RNA_CompositorNodeVecBlur;
+extern StructRNA RNA_CompositorNodeViewer;
+extern StructRNA RNA_CompositorNodeZcombine;
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_Curve;
extern StructRNA RNA_CurveMap;
extern StructRNA RNA_CurveMapPoint;
@@ -104,11 +172,21 @@ extern StructRNA RNA_ExplodeModifier;
extern StructRNA RNA_ExpressionController;
extern StructRNA RNA_FCurve;
extern StructRNA RNA_FModifier;
+extern StructRNA RNA_FModifierCycles;
+extern StructRNA RNA_FModifierEnvelope;
+extern StructRNA RNA_FModifierGenerator;
+extern StructRNA RNA_FModifierGenerator_Function;
+extern StructRNA RNA_FModifierGenerator_PolyExpanded;
+extern StructRNA RNA_FModifierLimits;
+extern StructRNA RNA_FModifierNoise;
+extern StructRNA RNA_FModifierPython;
extern StructRNA RNA_FieldSettings;
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_GameBooleanProperty;
extern StructRNA RNA_GameFloatProperty;
@@ -120,6 +198,7 @@ extern StructRNA RNA_GameStringProperty;
extern StructRNA RNA_GameTimerProperty;
extern StructRNA RNA_GlowSequence;
extern StructRNA RNA_Group;
+extern StructRNA RNA_Header;
extern StructRNA RNA_HemiLamp;
extern StructRNA RNA_HookModifier;
extern StructRNA RNA_ID;
@@ -136,6 +215,7 @@ extern StructRNA RNA_Key;
extern StructRNA RNA_KeyboardSensor;
extern StructRNA RNA_KeyingSet;
extern StructRNA RNA_KeyingSetPath;
+extern StructRNA RNA_KinematicConstraint;
extern StructRNA RNA_Lamp;
extern StructRNA RNA_LampSkySettings;
extern StructRNA RNA_LampTextureSlot;
@@ -143,7 +223,12 @@ 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_LocalLamp;
+extern StructRNA RNA_LockedTrackConstraint;
extern StructRNA RNA_MagicTexture;
extern StructRNA RNA_Main;
extern StructRNA RNA_MarbleTexture;
@@ -152,9 +237,11 @@ extern StructRNA RNA_Material;
extern StructRNA RNA_MaterialHalo;
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_Menu;
extern StructRNA RNA_Mesh;
extern StructRNA RNA_MeshColor;
extern StructRNA RNA_MeshColorLayer;
@@ -165,7 +252,6 @@ extern StructRNA RNA_MeshFloatProperty;
extern StructRNA RNA_MeshFloatPropertyLayer;
extern StructRNA RNA_MeshIntProperty;
extern StructRNA RNA_MeshIntPropertyLayer;
-extern StructRNA RNA_MeshMultires;
extern StructRNA RNA_MeshSticky;
extern StructRNA RNA_MeshStringProperty;
extern StructRNA RNA_MeshStringPropertyLayer;
@@ -188,9 +274,11 @@ extern StructRNA RNA_Node;
extern StructRNA RNA_NodeTree;
extern StructRNA RNA_NoiseTexture;
extern StructRNA RNA_NorController;
+extern StructRNA RNA_Nurb;
extern StructRNA RNA_Object;
extern StructRNA RNA_ObstacleFluidSettings;
extern StructRNA RNA_Operator;
+extern StructRNA RNA_OperatorFileListElement;
extern StructRNA RNA_OperatorMousePath;
extern StructRNA RNA_OperatorProperties;
extern StructRNA RNA_OperatorStrokeElement;
@@ -198,8 +286,11 @@ extern StructRNA RNA_OrController;
extern StructRNA RNA_OutflowFluidSettings;
extern StructRNA RNA_PackedFile;
extern StructRNA RNA_Panel;
+extern StructRNA RNA_Particle;
extern StructRNA RNA_ParticleFluidSettings;
+extern StructRNA RNA_ParticleHairKey;
extern StructRNA RNA_ParticleInstanceModifier;
+extern StructRNA RNA_ParticleKey;
extern StructRNA RNA_ParticleSettings;
extern StructRNA RNA_ParticleSystem;
extern StructRNA RNA_ParticleSystemModifier;
@@ -211,12 +302,14 @@ extern StructRNA RNA_Pose;
extern StructRNA RNA_PoseChannel;
extern StructRNA RNA_Property;
extern StructRNA RNA_PropertySensor;
+extern StructRNA RNA_PythonConstraint;
extern StructRNA RNA_PythonController;
extern StructRNA RNA_RadarSensor;
extern StructRNA RNA_Radiosity;
extern StructRNA RNA_RandomSensor;
extern StructRNA RNA_RaySensor;
extern StructRNA RNA_Region;
+extern StructRNA RNA_RigidBodyJointConstraint;
extern StructRNA RNA_Scene;
extern StructRNA RNA_SceneRenderData;
extern StructRNA RNA_SceneSequence;
@@ -231,10 +324,34 @@ 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_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_SmoothModifier;
@@ -243,53 +360,96 @@ extern StructRNA RNA_SoftbodyModifier;
extern StructRNA RNA_Sound;
extern StructRNA RNA_SoundSequence;
extern StructRNA RNA_Space;
+extern StructRNA RNA_Space3DView;
+extern StructRNA RNA_SpaceButtonsWindow;
extern StructRNA RNA_SpaceImageEditor;
-extern StructRNA RNA_SpaceUVEditor;
+extern StructRNA RNA_SpaceOutliner;
+extern StructRNA RNA_SpaceSequenceEditor;
extern StructRNA RNA_SpaceTextEditor;
+extern StructRNA RNA_SpaceUVEditor;
extern StructRNA RNA_SpeedControlSequence;
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_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_TextureNodeValToNor;
+extern StructRNA RNA_TextureNodeValToRGB;
+extern StructRNA RNA_TextureNodeViewer;
extern StructRNA RNA_TextureSlot;
extern StructRNA RNA_Theme;
-extern StructRNA RNA_ThemeDopeSheetEditor;
extern StructRNA RNA_ThemeAudioWindow;
extern StructRNA RNA_ThemeBoneColorSet;
extern StructRNA RNA_ThemeButtonsWindow;
+extern StructRNA RNA_ThemeDopeSheet;
extern StructRNA RNA_ThemeFileBrowser;
-extern StructRNA RNA_ThemeImageEditor;
+extern StructRNA RNA_ThemeFontStyle;
extern StructRNA RNA_ThemeGraphEditor;
+extern StructRNA RNA_ThemeImageEditor;
extern StructRNA RNA_ThemeNLAEditor;
extern StructRNA RNA_ThemeNodeEditor;
extern StructRNA RNA_ThemeOutliner;
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_TimelineMarker;
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_UVProjectModifier;
extern StructRNA RNA_UnknownType;
extern StructRNA RNA_UserPreferences;
+extern StructRNA RNA_UserPreferencesAutosave;
+extern StructRNA RNA_UserPreferencesEdit;
+extern StructRNA RNA_UserPreferencesFilePaths;
+extern StructRNA RNA_UserPreferencesLanguage;
+extern StructRNA RNA_UserPreferencesSystem;
+extern StructRNA RNA_UserPreferencesView;
extern StructRNA RNA_UserSolidLight;
+extern StructRNA RNA_VPaint;
extern StructRNA RNA_VectorFont;
extern StructRNA RNA_VertexGroup;
-extern StructRNA RNA_VoronoiTexture;
-extern StructRNA RNA_VPaint;
extern StructRNA RNA_VertexGroupElement;
+extern StructRNA RNA_VoronoiTexture;
extern StructRNA RNA_WaveModifier;
extern StructRNA RNA_WindowManager;
extern StructRNA RNA_WipeSequence;
@@ -324,6 +484,7 @@ void RNA_blender_rna_pointer_create(PointerRNA *r_ptr);
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);
PropertyRNA *RNA_struct_name_property(StructRNA *type);
PropertyRNA *RNA_struct_iterator_property(StructRNA *type);
@@ -362,7 +523,6 @@ int RNA_property_flag(PropertyRNA *prop);
int RNA_property_array_length(PropertyRNA *prop);
-StructRNA *RNA_property_pointer_type(PropertyRNA *prop);
int RNA_property_string_maxlength(PropertyRNA *prop);
const char *RNA_property_ui_name(PropertyRNA *prop);
@@ -380,6 +540,8 @@ void RNA_property_enum_items(PointerRNA *ptr, PropertyRNA *prop, const EnumPrope
int RNA_property_enum_value(PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value);
int RNA_property_enum_identifier(PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);
+StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop);
+
int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop);
@@ -429,7 +591,9 @@ int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, co
/* to create ID property groups */
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);
+void RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key);
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop);
/* Path
@@ -493,8 +657,8 @@ void RNA_enum_set(PointerRNA *ptr, const char *name, int value);
int RNA_enum_is_equal(PointerRNA *ptr, const char *name, const char *enumname);
/* lower level functions that donr use a PointerRNA */
-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_value_from_id(const EnumPropertyItem *item, const char *identifier, int *value);
+int RNA_enum_id_from_value(const EnumPropertyItem *item, int value, const char **identifier);
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);
@@ -525,6 +689,7 @@ int RNA_property_is_set(PointerRNA *ptr, const char *name);
/* python compatible string representation of this property, (must be freed!) */
char *RNA_property_as_string(PointerRNA *ptr, PropertyRNA *prop);
+char *RNA_pointer_as_string(PointerRNA *ptr);
/* Function */
@@ -559,6 +724,11 @@ int RNA_function_call_direct_lookup(PointerRNA *ptr, const char *identifier, con
int RNA_function_call_direct_va(PointerRNA *ptr, FunctionRNA *func, const char *format, va_list args);
int RNA_function_call_direct_va_lookup(PointerRNA *ptr, const char *identifier, const char *format, va_list args);
+/* ID */
+
+short RNA_type_to_ID_code(StructRNA *type);
+StructRNA *ID_code_to_RNA_type(short idcode);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h
index 5777553ed58..c40f50c34fc 100644
--- a/source/blender/makesrna/RNA_define.h
+++ b/source/blender/makesrna/RNA_define.h
@@ -52,12 +52,14 @@ void RNA_def_struct_sdna_from(StructRNA *srna, const char *structname, const cha
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop);
void RNA_def_struct_nested(BlenderRNA *brna, StructRNA *srna, const char *structname);
void RNA_def_struct_flag(StructRNA *srna, int flag);
+void RNA_def_struct_clear_flag(StructRNA *srna, int flag);
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine);
void RNA_def_struct_idproperties_func(StructRNA *srna, const char *refine);
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg);
void RNA_def_struct_path_func(StructRNA *srna, const char *path);
void RNA_def_struct_identifier(StructRNA *srna, const char *identifier);
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description);
+void RNA_def_struct_ui_icon(StructRNA *srna, int icon);
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna);
/* Compact Property Definitions */
@@ -141,9 +143,9 @@ void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable);
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set);
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range);
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range);
-void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set);
+void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item);
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set);
-void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set);
+void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *typef);
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring);
/* Function */
diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h
index 2262c73a9af..c679d9fc544 100644
--- a/source/blender/makesrna/RNA_enum_types.h
+++ b/source/blender/makesrna/RNA_enum_types.h
@@ -33,6 +33,7 @@ extern EnumPropertyItem prop_mode_items[];
extern EnumPropertyItem space_type_items[];
extern EnumPropertyItem region_type_items[];
extern EnumPropertyItem modifier_type_items[];
+extern EnumPropertyItem constraint_type_items[];
extern EnumPropertyItem beztriple_handle_type_items[];
extern EnumPropertyItem beztriple_interpolation_mode_items[];
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h
index 0a8836327c3..7e62ea6d823 100644
--- a/source/blender/makesrna/RNA_types.h
+++ b/source/blender/makesrna/RNA_types.h
@@ -99,6 +99,9 @@ typedef enum PropertyFlag {
PROP_REGISTER = 16,
PROP_REGISTER_OPTIONAL = 16|32,
+ /* pointers */
+ PROP_ID_REFCOUNT = 64,
+
/* internal flags */
PROP_BUILTIN = 128,
PROP_EXPORT = 256,
@@ -172,12 +175,13 @@ typedef struct FunctionRNA FunctionRNA;
/* Struct */
typedef enum StructFlag {
- /* indicates that this struct is an ID struct */
+ /* indicates that this struct is an ID struct, and to use refcounting */
STRUCT_ID = 1,
+ STRUCT_ID_REFCOUNT = 2,
/* internal flags */
- STRUCT_RUNTIME = 2,
- STRUCT_GENERATED = 4
+ STRUCT_RUNTIME = 4,
+ STRUCT_GENERATED = 8
} StructFlag;
typedef int (*StructValidateFunc)(struct PointerRNA *ptr, void *data, int *have_function);
diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt
index 0971727cbf6..bc3be44aec9 100644
--- a/source/blender/makesrna/intern/CMakeLists.txt
+++ b/source/blender/makesrna/intern/CMakeLists.txt
@@ -41,6 +41,26 @@ SET(SRC
INCLUDE_DIRECTORIES(../../../../intern/guardedalloc .. ../../makesdna ../../blenkernel ../../blenlib ../../windowmanager ../../editors/include .)
FILE(GLOB INC_FILES ../*.h ../../makesdna/*.h)
+IF(WITH_OPENEXR)
+ ADD_DEFINITIONS(-DWITH_OPENEXR)
+ENDIF(WITH_OPENEXR)
+
+IF(WITH_OPENJPEG)
+ ADD_DEFINITIONS(-DWITH_OPENJPEG)
+ENDIF(WITH_OPENJPEG)
+
+IF(WITH_DDS)
+ ADD_DEFINITIONS(-DWITH_DDS)
+ENDIF(WITH_DDS)
+
+IF(WITH_QUICKTIME)
+ ADD_DEFINITIONS(-DWITH_QUICKTIME)
+ENDIF(WITH_QUICKTIME)
+
+IF(WITH_FFMPEG)
+ ADD_DEFINITIONS(-DWITH_FFMPEG)
+ENDIF(WITH_FFMPEG)
+
# Build makesrna executable
ADD_EXECUTABLE(makesrna ${SRC} ${INC_FILES})
TARGET_LINK_LIBRARIES(makesrna bf_dna)
diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile
index 241067692ff..cd1f27f43b7 100644
--- a/source/blender/makesrna/intern/Makefile
+++ b/source/blender/makesrna/intern/Makefile
@@ -53,6 +53,26 @@ CPPFLAGS += -I../../editors/include
CPPFLAGS += -I..
CPPFLAGS += -I.
+ifeq ($(WITH_FFMPEG),true)
+ CPPFLAGS += -DWITH_FFMPEG
+endif
+
+ifeq ($(WITH_OPENEXR), true)
+ CPPFLAGS += -DWITH_OPENEXR
+endif
+
+ifeq ($(WITH_DDS), true)
+ CPPFLAGS += -DWITH_DDS
+endif
+
+ifeq ($(WITH_OPENJPEG), true)
+ CPPFLAGS += -DWITH_OPENJPEG
+endif
+
+ifeq ($(WITH_QUICKTIME), true)
+ CPPFLAGS += -DWITH_QUICKTIME
+endif
+
ifeq ($(OS),windows)
# Windows needs these extra libs because of winstuff... It is not
# _really_ needed, but it is the easiest fix for now. If you have
diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript
index 83f14b9ef14..9c8e00da16d 100644
--- a/source/blender/makesrna/intern/SConscript
+++ b/source/blender/makesrna/intern/SConscript
@@ -24,6 +24,25 @@ makesrna_tool = env.Clone()
rna = env.Clone()
makesrna_tool.Append(CCFLAGS = '-DBASE_HEADER="\\"source/blender/makesrna/\\"" ')
+defs = []
+
+if env['WITH_BF_OPENEXR']:
+ defs.append('WITH_OPENEXR')
+
+if env['WITH_BF_OPENJPEG']:
+ defs.append('WITH_OPENJPEG')
+
+if env['WITH_BF_DDS']:
+ defs.append('WITH_DDS')
+
+if env['WITH_BF_FFMPEG']:
+ defs.append('WITH_FFMPEG')
+
+if env['WITH_BF_QUICKTIME']:
+ defs.append('WITH_QUICKTIME')
+
+makesrna_tool.Append(CPPDEFINES=defs)
+
makesrna_tool.Append (CPPPATH = ['#/intern/guardedalloc',
'../../blenlib',
'../../blenkernel',
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c
index 84218cdd874..c8b81b9ffee 100644
--- a/source/blender/makesrna/intern/makesrna.c
+++ b/source/blender/makesrna/intern/makesrna.c
@@ -156,6 +156,17 @@ static char *rna_alloc_function_name(const char *structname, const char *propnam
return result;
}
+static StructRNA *rna_find_struct(const char *identifier)
+{
+ StructDefRNA *ds;
+
+ for(ds=DefRNA.structs.first; ds; ds=ds->cont.next)
+ if(strcmp(ds->srna->identifier, identifier)==0)
+ return ds->srna;
+
+ return NULL;
+}
+
static const char *rna_find_type(const char *type)
{
StructDefRNA *ds;
@@ -250,8 +261,10 @@ static int rna_enum_bitmask(PropertyRNA *prop)
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
int a, mask= 0;
- for(a=0; a<eprop->totitem; a++)
- mask |= eprop->item[a].value;
+ if(eprop->item) {
+ for(a=0; a<eprop->totitem; a++)
+ mask |= eprop->item[a].value;
+ }
return mask;
}
@@ -497,7 +510,16 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr
}
else {
rna_print_data_get(f, dp);
+
+ if(prop->flag & PROP_ID_REFCOUNT) {
+ fprintf(f, "\n if(data->%s)\n", dp->dnaname);
+ fprintf(f, " id_us_min((ID*)data->%s);\n", dp->dnaname);
+ fprintf(f, " if(value.data)\n");
+ fprintf(f, " id_us_plus((ID*)value.data);\n\n");
+ }
+
fprintf(f, " data->%s= value.data;\n", dp->dnaname);
+
}
fprintf(f, "}\n\n");
break;
@@ -1188,9 +1210,16 @@ static void rna_auto_types()
if(dp->dnatype) {
if(dp->prop->type == PROP_POINTER) {
PointerPropertyRNA *pprop= (PointerPropertyRNA*)dp->prop;
+ StructRNA *type;
if(!pprop->type && !pprop->get)
pprop->type= (StructRNA*)rna_find_type(dp->dnatype);
+
+ if(pprop->type) {
+ type= rna_find_struct((char*)pprop->type);
+ if(type && (type->flag & STRUCT_ID_REFCOUNT))
+ pprop->property.flag |= PROP_ID_REFCOUNT;
+ }
}
else if(dp->prop->type== PROP_COLLECTION) {
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)dp->prop;
@@ -1454,6 +1483,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
DefRNA.error= 1;
}
}
+ else if(eprop->itemf);
else {
fprintf(stderr, "rna_generate_structs: %s%s.%s, enum must have items defined.\n", srna->identifier, errnest, prop->identifier);
DefRNA.error= 1;
@@ -1581,12 +1611,17 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
}
case PROP_ENUM: {
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
- fprintf(f, "\t%s, %s, rna_%s%s_%s_items, %d, %d\n", rna_function_string(eprop->get), rna_function_string(eprop->set), srna->identifier, strnest, prop->identifier, eprop->totitem, eprop->defaultvalue);
+ fprintf(f, "\t%s, %s, %s, ", rna_function_string(eprop->get), rna_function_string(eprop->set), rna_function_string(eprop->itemf));
+ if(eprop->item)
+ fprintf(f, "rna_%s%s_%s_items, ", srna->identifier, strnest, prop->identifier);
+ else
+ fprintf(f, "NULL, ");
+ fprintf(f, "%d, %d\n", eprop->totitem, eprop->defaultvalue);
break;
}
case PROP_POINTER: {
PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop;
- fprintf(f, "\t%s, %s, ", rna_function_string(pprop->get), rna_function_string(pprop->set));
+ fprintf(f, "\t%s, %s, %s, ", rna_function_string(pprop->get), rna_function_string(pprop->set), rna_function_string(pprop->typef));
if(pprop->type) fprintf(f, "&RNA_%s\n", (char*)pprop->type);
else fprintf(f, "NULL\n");
break;
@@ -1678,7 +1713,7 @@ static void rna_generate_struct(BlenderRNA *brna, StructRNA *srna, FILE *f)
rna_print_c_string(f, srna->name);
fprintf(f, ", ");
rna_print_c_string(f, srna->description);
- fprintf(f, ",\n");
+ fprintf(f, ",\n %d,\n", srna->icon);
prop= srna->nameproperty;
if(prop) {
@@ -1798,8 +1833,11 @@ static void rna_generate(BlenderRNA *brna, FILE *f, char *filename)
fprintf(f, "#include <limits.h>\n");
fprintf(f, "#include <string.h>\n\n");
+ fprintf(f, "#include \"DNA_ID.h\"\n");
+
fprintf(f, "#include \"BLI_blenlib.h\"\n\n");
+ fprintf(f, "#include \"BKE_library.h\"\n");
fprintf(f, "#include \"BKE_utildefines.h\"\n\n");
fprintf(f, "#include \"RNA_define.h\"\n");
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index ee1a1fedf2c..56eda4eb735 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -25,11 +25,14 @@
#include <stdlib.h>
#include <stdio.h>
+#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_types.h"
#include "DNA_ID.h"
+#include "rna_internal.h"
+
#ifdef RNA_RUNTIME
#include "BKE_idprop.h"
@@ -55,11 +58,41 @@ void rna_ID_name_set(PointerRNA *ptr, const char *value)
test_idbutton(id->name+2);
}
-StructRNA *rna_ID_refine(PointerRNA *ptr)
+short RNA_type_to_ID_code(StructRNA *type)
{
- ID *id= (ID*)ptr->data;
+ if(RNA_struct_is_a(type, &RNA_Action)) return ID_AC;
+ if(RNA_struct_is_a(type, &RNA_Armature)) return ID_AR;
+ if(RNA_struct_is_a(type, &RNA_Brush)) return ID_BR;
+ if(RNA_struct_is_a(type, &RNA_Camera)) return ID_CA;
+ if(RNA_struct_is_a(type, &RNA_Curve)) return ID_CU;
+ if(RNA_struct_is_a(type, &RNA_Group)) return ID_GR;
+ if(RNA_struct_is_a(type, &RNA_Image)) return ID_IM;
+ //if(RNA_struct_is_a(type, &RNA_Ipo)) return case ID_IP;
+ if(RNA_struct_is_a(type, &RNA_Key)) return ID_KE;
+ if(RNA_struct_is_a(type, &RNA_Lamp)) return ID_LA;
+ if(RNA_struct_is_a(type, &RNA_Library)) return ID_LI;
+ if(RNA_struct_is_a(type, &RNA_Lattice)) return ID_LT;
+ if(RNA_struct_is_a(type, &RNA_Material)) return ID_MA;
+ if(RNA_struct_is_a(type, &RNA_MetaBall)) return ID_MB;
+ if(RNA_struct_is_a(type, &RNA_NodeTree)) return ID_NT;
+ if(RNA_struct_is_a(type, &RNA_Mesh)) return ID_ME;
+ if(RNA_struct_is_a(type, &RNA_Object)) return ID_OB;
+ if(RNA_struct_is_a(type, &RNA_ParticleSettings)) return ID_PA;
+ if(RNA_struct_is_a(type, &RNA_Scene)) return ID_SCE;
+ if(RNA_struct_is_a(type, &RNA_Screen)) return ID_SCR;
+ if(RNA_struct_is_a(type, &RNA_Sound)) return ID_SO;
+ if(RNA_struct_is_a(type, &RNA_Text)) return ID_TXT;
+ if(RNA_struct_is_a(type, &RNA_Texture)) return ID_TE;
+ if(RNA_struct_is_a(type, &RNA_VectorFont)) return ID_VF;
+ if(RNA_struct_is_a(type, &RNA_World)) return ID_WO;
+ if(RNA_struct_is_a(type, &RNA_WindowManager)) return ID_WM;
+
+ return 0;
+}
- switch(GS(id->name)) {
+StructRNA *ID_code_to_RNA_type(short idcode)
+{
+ switch(idcode) {
case ID_AC: return &RNA_Action;
case ID_AR: return &RNA_Armature;
case ID_BR: return &RNA_Brush;
@@ -90,6 +123,13 @@ StructRNA *rna_ID_refine(PointerRNA *ptr)
}
}
+StructRNA *rna_ID_refine(PointerRNA *ptr)
+{
+ ID *id= (ID*)ptr->data;
+
+ return ID_code_to_RNA_type(GS(id->name));
+}
+
IDProperty *rna_ID_idproperties(PointerRNA *ptr, int create)
{
return IDP_GetProperties(ptr->data, create);
@@ -182,7 +222,7 @@ static void rna_def_ID(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ID", NULL);
RNA_def_struct_ui_text(srna, "ID", "Base type for datablocks, defining a unique name, linking from other libraries and garbage collection.");
- RNA_def_struct_flag(srna, STRUCT_ID);
+ RNA_def_struct_flag(srna, STRUCT_ID|STRUCT_ID_REFCOUNT);
RNA_def_struct_refine_func(srna, "rna_ID_refine");
RNA_def_struct_idproperties_func(srna, "rna_ID_idproperties");
@@ -221,6 +261,7 @@ static void rna_def_library(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Library", "ID");
RNA_def_struct_ui_text(srna, "Library", "External .blend file from which data is linked.");
+ RNA_def_struct_ui_icon(srna, ICON_LIBRARY_DATA_DIRECT);
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "name");
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index fb284aab99f..870fa4d9aa3 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -99,6 +99,17 @@ void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
r_ptr->id.data= id;
r_ptr->type= type;
r_ptr->data= data;
+
+ if(data) {
+ while(r_ptr->type && r_ptr->type->refine) {
+ StructRNA *rtype= r_ptr->type->refine(r_ptr);
+
+ if(rtype == r_ptr->type)
+ break;
+ else
+ r_ptr->type= rtype;
+ }
+ }
}
static void rna_pointer_inherit_id(StructRNA *type, PointerRNA *parent, PointerRNA *ptr)
@@ -328,6 +339,14 @@ const char *RNA_struct_ui_name(StructRNA *type)
return type->name;
}
+int RNA_struct_ui_icon(StructRNA *type)
+{
+ if(type)
+ return type->icon;
+ else
+ return ICON_DOT;
+}
+
const char *RNA_struct_ui_description(StructRNA *type)
{
return type->description;
@@ -398,7 +417,7 @@ PropertyRNA *RNA_struct_find_nested(PointerRNA *ptr, StructRNA *srna)
for(; iter.valid; RNA_property_collection_next(&iter), i++) {
/* This assumes that there can only be one user of this nested struct */
- if (RNA_property_pointer_type(iter.ptr.data) == srna) {
+ if (RNA_property_pointer_type(ptr, iter.ptr.data) == srna) {
prop= iter.ptr.data;
break;
}
@@ -576,14 +595,16 @@ int RNA_property_string_maxlength(PropertyRNA *prop)
return sprop->maxlength;
}
-StructRNA *RNA_property_pointer_type(PropertyRNA *prop)
+StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
{
prop= rna_ensure_property(prop);
if(prop->type == PROP_POINTER) {
PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop;
- if(pprop->type)
+ if(pprop->typef)
+ return pprop->typef(ptr);
+ else if(pprop->type)
return pprop->type;
}
else if(prop->type == PROP_COLLECTION) {
@@ -599,9 +620,17 @@ StructRNA *RNA_property_pointer_type(PropertyRNA *prop)
void RNA_property_enum_items(PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **item, int *totitem)
{
EnumPropertyRNA *eprop= (EnumPropertyRNA*)rna_ensure_property(prop);
+ int tot;
- *item= eprop->item;
- *totitem= eprop->totitem;
+ if(eprop->itemf) {
+ *item= eprop->itemf(ptr);
+ for(tot=0; (*item)[tot].identifier; tot++);
+ *totitem= tot;
+ }
+ else {
+ *item= eprop->item;
+ *totitem= eprop->totitem;
+ }
}
int RNA_property_enum_value(PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value)
@@ -650,6 +679,7 @@ const char *RNA_property_ui_description(PropertyRNA *prop)
int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop)
{
+ ID *id;
int flag;
prop= rna_ensure_property(prop);
@@ -658,8 +688,10 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop)
flag= prop->editable(ptr);
else
flag= prop->flag;
+
+ id= ptr->id.data;
- return (flag & PROP_EDITABLE);
+ return (flag & PROP_EDITABLE) && (!id || !id->lib);
}
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop)
@@ -1179,6 +1211,23 @@ void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop)
printf("RNA_property_pointer_add %s.%s: only supported for id properties.\n", ptr->type->identifier, prop->identifier);
}
+void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop)
+{
+ IDProperty *idprop, *group;
+
+ if((idprop=rna_idproperty_check(&prop, ptr))) {
+ group= RNA_struct_idproperties(ptr, 0);
+
+ if(group) {
+ IDP_RemFromGroup(group, idprop);
+ IDP_FreeProperty(idprop);
+ MEM_freeN(idprop);
+ }
+ }
+ else
+ printf("RNA_property_pointer_remove %s.%s: only supported for id properties.\n", ptr->type->identifier, prop->identifier);
+}
+
static void rna_property_collection_get_idp(CollectionPropertyIterator *iter)
{
CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)iter->prop;
@@ -1306,6 +1355,33 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA
}
}
+void RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key)
+{
+ IDProperty *idprop;
+
+ if((idprop=rna_idproperty_check(&prop, ptr))) {
+ IDProperty tmp, *array;
+ int len;
+
+ len= idprop->len;
+ array= IDP_IDPArray(idprop);
+
+ if(key >= 0 && key < len) {
+ if(key+1 < len) {
+ /* move element to be removed to the back */
+ memcpy(&tmp, &array[key], sizeof(IDProperty));
+ memmove(array+key, array+key+1, sizeof(IDProperty)*(len-key+1));
+ memcpy(&array[len-1], &tmp, sizeof(IDProperty));
+ }
+
+ IDP_ResizeIDPArray(idprop, len-1);
+ }
+ }
+ else if(prop->flag & PROP_IDPROPERTY);
+ else
+ printf("RNA_property_collection_remove %s.%s: only supported for id properties.\n", ptr->type->identifier, prop->identifier);
+}
+
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop)
{
IDProperty *idprop;
@@ -1431,6 +1507,7 @@ void *rna_iterator_listbase_get(CollectionPropertyIterator *iter)
void rna_iterator_listbase_end(CollectionPropertyIterator *iter)
{
MEM_freeN(iter->internal);
+ iter->internal= NULL;
}
void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, IteratorSkipFunc skip)
@@ -1487,6 +1564,7 @@ void *rna_iterator_array_dereference_get(CollectionPropertyIterator *iter)
void rna_iterator_array_end(CollectionPropertyIterator *iter)
{
MEM_freeN(iter->internal);
+ iter->internal= NULL;
}
/* RNA Path - Experiment */
@@ -1954,7 +2032,7 @@ int RNA_enum_is_equal(PointerRNA *ptr, const char *name, const char *enumname)
}
}
-int RNA_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value)
+int RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *value)
{
for( ; item->identifier; item++) {
if(strcmp(item->identifier, identifier)==0) {
@@ -1966,7 +2044,7 @@ int RNA_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *
return 0;
}
-int RNA_enum_id_from_value(EnumPropertyItem *item, int value, const char **identifier)
+int RNA_enum_id_from_value(const EnumPropertyItem *item, int value, const char **identifier)
{
for( ; item->identifier; item++) {
if(item->value==value) {
@@ -2111,6 +2189,45 @@ int RNA_property_is_set(PointerRNA *ptr, const char *name)
/* string representation of a property, python
* compatible but can be used for display too*/
+char *RNA_pointer_as_string(PointerRNA *ptr)
+{
+ DynStr *dynstr= BLI_dynstr_new();
+ char *cstring;
+
+ PropertyRNA *prop, *iterprop;
+ CollectionPropertyIterator iter;
+ const char *propname;
+ int first_time = 1;
+
+ BLI_dynstr_append(dynstr, "{");
+
+ iterprop= RNA_struct_iterator_property(ptr->type);
+
+ for(RNA_property_collection_begin(ptr, iterprop, &iter); iter.valid; RNA_property_collection_next(&iter)) {
+ prop= iter.ptr.data;
+ propname = RNA_property_identifier(prop);
+
+ if(strcmp(propname, "rna_type")==0)
+ continue;
+
+ if(first_time==0)
+ BLI_dynstr_append(dynstr, ", ");
+ first_time= 0;
+
+ cstring = RNA_property_as_string(ptr, prop);
+ BLI_dynstr_appendf(dynstr, "\"%s\":%s", propname, cstring);
+ MEM_freeN(cstring);
+ }
+
+ RNA_property_collection_end(&iter);
+ BLI_dynstr_append(dynstr, "}");
+
+
+ cstring = BLI_dynstr_get_cstring(dynstr);
+ BLI_dynstr_free(dynstr);
+ return cstring;
+}
+
char *RNA_property_as_string(PointerRNA *ptr, PropertyRNA *prop)
{
int type = RNA_property_type(prop);
@@ -2188,8 +2305,28 @@ char *RNA_property_as_string(PointerRNA *ptr, PropertyRNA *prop)
break;
}
case PROP_COLLECTION:
- BLI_dynstr_append(dynstr, "'<COLLECTION>'"); /* TODO */
+ {
+ int first_time = 1;
+ CollectionPropertyIterator collect_iter;
+ BLI_dynstr_append(dynstr, "[");
+
+ for(RNA_property_collection_begin(ptr, prop, &collect_iter); collect_iter.valid; RNA_property_collection_next(&collect_iter)) {
+ PointerRNA itemptr= collect_iter.ptr;
+
+ if(first_time==0)
+ BLI_dynstr_append(dynstr, ", ");
+ first_time= 0;
+
+ /* now get every prop of the collection */
+ cstring= RNA_pointer_as_string(&itemptr);
+ BLI_dynstr_append(dynstr, cstring);
+ MEM_freeN(cstring);
+ }
+
+ RNA_property_collection_end(&collect_iter);
+ BLI_dynstr_append(dynstr, "]");
break;
+ }
default:
BLI_dynstr_append(dynstr, "'<UNKNOWN TYPE>'"); /* TODO */
break;
@@ -2275,6 +2412,7 @@ ParameterList *RNA_parameter_list_create(PointerRNA *ptr, FunctionRNA *func)
void RNA_parameter_list_free(ParameterList *parms)
{
MEM_freeN(parms->data);
+ parms->data= NULL;
parms->func= NULL;
@@ -2534,7 +2672,7 @@ static int rna_function_parameter_parse(PointerRNA *ptr, PropertyRNA *prop, Prop
return -1;
}
- ptype= RNA_property_pointer_type(prop);
+ ptype= RNA_property_pointer_type(ptr, prop);
if(ptype == &RNA_AnyType) {
*((PointerRNA*)dest)= *((PointerRNA*)src);
diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c
index 0a09462988b..3639d6d3fff 100644
--- a/source/blender/makesrna/intern/rna_action.c
+++ b/source/blender/makesrna/intern/rna_action.c
@@ -84,6 +84,7 @@ void rna_def_action(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Action", "ID");
RNA_def_struct_sdna(srna, "bAction");
RNA_def_struct_ui_text(srna, "Action", "A collection of F-Curves for animation.");
+ RNA_def_struct_ui_icon(srna, ICON_ACTION);
prop= RNA_def_property(srna, "fcurves", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "curves", NULL);
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c
index c7f7b8cfebc..d49e5d14714 100644
--- a/source/blender/makesrna/intern/rna_armature.c
+++ b/source/blender/makesrna/intern/rna_armature.c
@@ -110,6 +110,7 @@ static void rna_def_bone(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Bone", NULL);
RNA_def_struct_ui_text(srna, "Bone", "Bone in an Armature datablock.");
+ RNA_def_struct_ui_icon(srna, ICON_BONE_DATA);
/* pointers/collections */
/* parent (pointer) */
@@ -266,6 +267,7 @@ void rna_def_armature(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Armature", "ID");
RNA_def_struct_ui_text(srna, "Armature", "Armature datablock containing a hierarchy of bones, usually used for rigging characters.");
+ RNA_def_struct_ui_icon(srna, ICON_ARMATURE_DATA);
RNA_def_struct_sdna(srna, "bArmature");
diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c
index 9f5b3ba3af7..3deb38a3a07 100644
--- a/source/blender/makesrna/intern/rna_brush.c
+++ b/source/blender/makesrna/intern/rna_brush.c
@@ -93,6 +93,7 @@ void rna_def_brush(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Brush", "ID");
RNA_def_struct_ui_text(srna, "Brush", "Brush datablock for storing brush settings for painting and sculpting.");
+ RNA_def_struct_ui_icon(srna, ICON_BRUSH_DATA);
/* enums */
prop= RNA_def_property(srna, "blend", PROP_ENUM, PROP_NONE);
@@ -189,7 +190,7 @@ void rna_def_brush(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_FIXED_TEX);
RNA_def_property_ui_text(prop, "Fixed Texture", "Keep texture origin in fixed position.");*/
- prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Curve", "Editable falloff curve.");
/* texture */
@@ -198,7 +199,7 @@ void rna_def_brush(BlenderRNA *brna)
/* clone tool */
prop= RNA_def_property(srna, "clone_image", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "clone.image");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Clone Image", "Image for clone tool.");
prop= RNA_def_property(srna, "clone_opacity", PROP_FLOAT, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c
index 3b1bb3b0785..bee8a21ad7d 100644
--- a/source/blender/makesrna/intern/rna_camera.c
+++ b/source/blender/makesrna/intern/rna_camera.c
@@ -52,6 +52,7 @@ void RNA_def_camera(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Camera", "ID");
RNA_def_struct_ui_text(srna, "Camera", "Camera datablock for storing camera settings.");
+ RNA_def_struct_ui_icon(srna, ICON_CAMERA_DATA);
/* Enums */
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
@@ -75,13 +76,13 @@ void RNA_def_camera(BlenderRNA *brna)
prop= RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clipsta");
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ RNA_def_property_range(prop, 0.0f, FLT_MAX);
RNA_def_property_ui_text(prop, "Clip Start", "Camera near clipping distance.");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
prop= RNA_def_property(srna, "clip_end", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clipend");
- RNA_def_property_range(prop, 1.0f, 5000.0f);
+ RNA_def_property_range(prop, 1.0f, FLT_MAX);
RNA_def_property_ui_text(prop, "Clip End", "Camera far clipping distance.");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
@@ -158,6 +159,7 @@ void RNA_def_camera(BlenderRNA *brna)
prop= RNA_def_property(srna, "dof_object", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "Object");
RNA_def_property_pointer_sdna(prop, NULL, "dof_ob");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "DOF Object", "Use this object to define the depth of field focal point.");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
}
diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c
index 774f2f9c0ef..a98bc41d129 100644
--- a/source/blender/makesrna/intern/rna_constraint.c
+++ b/source/blender/makesrna/intern/rna_constraint.c
@@ -27,12 +27,48 @@
#include "RNA_define.h"
#include "RNA_types.h"
+#include "DNA_action_types.h"
#include "DNA_constraint_types.h"
+#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "WM_types.h"
+
+EnumPropertyItem constraint_type_items[] ={
+ {CONSTRAINT_TYPE_NULL, "NULL", "Null", ""},
+ {CONSTRAINT_TYPE_CHILDOF, "CHILD_OF", "Child Of", ""},
+ {CONSTRAINT_TYPE_TRACKTO, "TRACK_TO", "Track To", ""},
+ {CONSTRAINT_TYPE_KINEMATIC, "IK", "IK", ""},
+ {CONSTRAINT_TYPE_FOLLOWPATH, "FOLLOW_PATH", "Follow Path", ""},
+ {CONSTRAINT_TYPE_ROTLIMIT, "LIMIT_ROTATION", "Limit Rotation", ""},
+ {CONSTRAINT_TYPE_LOCLIMIT, "LIMIT_LOCATION", "Limit Location", ""},
+ {CONSTRAINT_TYPE_SIZELIMIT, "LIMIT_SCALE", "Limit Scale", ""},
+ {CONSTRAINT_TYPE_ROTLIKE, "COPY_ROTATION", "Copy Rotation", ""},
+ {CONSTRAINT_TYPE_LOCLIKE, "COPY_LOCATION", "Copy Location", ""},
+ {CONSTRAINT_TYPE_SIZELIKE, "COPY_SCALE", "Copy Scale", ""},
+ {CONSTRAINT_TYPE_PYTHON, "SCRIPT", "Script", ""},
+ {CONSTRAINT_TYPE_ACTION, "ACTION", "Action", ""},
+ {CONSTRAINT_TYPE_LOCKTRACK, "LOCKED_TRACK", "Locked Track", ""},
+ {CONSTRAINT_TYPE_DISTLIMIT, "LIMIT_DISTANCE", "Limit Distance", ""},
+ {CONSTRAINT_TYPE_STRETCHTO, "STRETCH_TO", "Stretch To", ""},
+ {CONSTRAINT_TYPE_MINMAX, "FLOOR", "Floor", ""},
+ {CONSTRAINT_TYPE_RIGIDBODYJOINT, "RIGID_BODY_JOINT", "Rigid Body Joint", ""},
+ {CONSTRAINT_TYPE_CLAMPTO, "CLAMP_TO", "Clamp To", ""},
+ {CONSTRAINT_TYPE_TRANSFORM, "TRANSFORM", "Transformation", ""},
+ {CONSTRAINT_TYPE_SHRINKWRAP, "SHRINKWRAP", "Shrinkwrap", ""},
+ {0, NULL, NULL, NULL}};
+
+
#ifdef RNA_RUNTIME
+#include "BKE_action.h"
+#include "BKE_constraint.h"
+#include "BKE_context.h"
+#include "BKE_depsgraph.h"
+
+#include "ED_object.h"
+
StructRNA *rna_ConstraintType_refine(struct PointerRNA *ptr)
{
bConstraint *con= (bConstraint*)ptr->data;
@@ -47,21 +83,21 @@ StructRNA *rna_ConstraintType_refine(struct PointerRNA *ptr)
case CONSTRAINT_TYPE_FOLLOWPATH:
return &RNA_FollowPathConstraint;
case CONSTRAINT_TYPE_ROTLIKE:
- return &RNA_RotateLikeConstraint;
+ return &RNA_CopyRotationConstraint;
case CONSTRAINT_TYPE_LOCLIKE:
- return &RNA_LocateLikeConstraint;
+ return &RNA_CopyLocationConstraint;
case CONSTRAINT_TYPE_SIZELIKE:
- return &RNA_SizeLikeConstraint;
+ return &RNA_CopyScaleConstraint;
case CONSTRAINT_TYPE_PYTHON:
return &RNA_PythonConstraint;
case CONSTRAINT_TYPE_ACTION:
return &RNA_ActionConstraint;
case CONSTRAINT_TYPE_LOCKTRACK:
- return &RNA_LockTrackConstraint;
+ return &RNA_LockedTrackConstraint;
case CONSTRAINT_TYPE_STRETCHTO:
return &RNA_StretchToConstraint;
case CONSTRAINT_TYPE_MINMAX:
- return &RNA_MinMaxConstraint;
+ return &RNA_FloorConstraint;
case CONSTRAINT_TYPE_RIGIDBODYJOINT:
return &RNA_RigidBodyJointConstraint;
case CONSTRAINT_TYPE_CLAMPTO:
@@ -69,18 +105,105 @@ StructRNA *rna_ConstraintType_refine(struct PointerRNA *ptr)
case CONSTRAINT_TYPE_TRANSFORM:
return &RNA_TransformConstraint;
case CONSTRAINT_TYPE_ROTLIMIT:
- return &RNA_RotationLimitConstraint;
+ return &RNA_LimitRotationConstraint;
case CONSTRAINT_TYPE_LOCLIMIT:
- return &RNA_LocationLimitConstraint;
+ return &RNA_LimitLocationConstraint;
case CONSTRAINT_TYPE_SIZELIMIT:
- return &RNA_SizeLimitConstraint;
+ return &RNA_LimitScaleConstraint;
case CONSTRAINT_TYPE_DISTLIMIT:
- return &RNA_DistLimitConstraint;
+ return &RNA_LimitDistanceConstraint;
+ case CONSTRAINT_TYPE_SHRINKWRAP:
+ return &RNA_ShrinkwrapConstraint;
default:
return &RNA_UnknownType;
}
}
+static char *rna_Constraint_path(PointerRNA *ptr)
+{
+ return BLI_sprintfN("constraints[%s]", ((bConstraint*)ptr->data)->name);
+}
+
+static void rna_Constraint_update(bContext *C, PointerRNA *ptr)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ptr->id.data;
+
+ if(ob->pose) update_pose_constraint_flags(ob->pose);
+
+ object_test_constraints(ob);
+
+ if(ob->type==OB_ARMATURE) DAG_object_flush_update(scene, ob, OB_RECALC_DATA|OB_RECALC_OB);
+ else DAG_object_flush_update(scene, ob, OB_RECALC_OB);
+}
+
+static void rna_Constraint_dependency_update(bContext *C, PointerRNA *ptr)
+{
+ Object *ob= ptr->id.data;
+
+ rna_Constraint_update(C, ptr);
+
+ if(ob->pose) ob->pose->flag |= POSE_RECALC; // checks & sorts pose channels
+ DAG_scene_sort(CTX_data_scene(C));
+}
+
+static void rna_Constraint_influence_update(bContext *C, PointerRNA *ptr)
+{
+ Object *ob= ptr->id.data;
+
+ if(ob->pose)
+ ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK);
+
+ rna_Constraint_update(C, ptr);
+}
+
+static EnumPropertyItem space_pchan_items[] = {
+ {0, "WORLD", "World Space", ""},
+ {2, "POSE", "Pose Space", ""},
+ {3, "LOCAL_WITH_PARENT", "Local With Parent", ""},
+ {1, "LOCAL", "Local Space", ""},
+ {0, NULL, NULL, NULL}};
+
+static EnumPropertyItem space_object_items[] = {
+ {0, "WORLD", "World Space", ""},
+ {1, "LOCAL", "Local (Without Parent) Space", ""},
+ {0, NULL, NULL, NULL}};
+
+static EnumPropertyItem *rna_Constraint_owner_space_itemf(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ bConstraint *con= (bConstraint*)ptr->data;
+
+ if(BLI_findindex(&ob->constraints, con) == -1)
+ return space_pchan_items;
+ else /* object */
+ return space_object_items;
+}
+
+static EnumPropertyItem *rna_Constraint_target_space_itemf(PointerRNA *ptr)
+{
+ bConstraint *con= (bConstraint*)ptr->data;
+ bConstraintTypeInfo *cti= constraint_get_typeinfo(con);
+ ListBase targets = {NULL, NULL};
+ bConstraintTarget *ct;
+
+ if(cti && cti->get_constraint_targets) {
+ cti->get_constraint_targets(con, &targets);
+
+ for(ct=targets.first; ct; ct= ct->next)
+ if(ct->tar && ct->tar->type == OB_ARMATURE)
+ break;
+
+ if(cti->flush_constraint_targets)
+ cti->flush_constraint_targets(con, &targets, 1);
+
+ if(ct)
+ return space_pchan_items;
+ }
+
+ return space_object_items;
+}
+
#else
static void rna_def_constrainttarget(BlenderRNA *brna)
@@ -94,12 +217,14 @@ static void rna_def_constrainttarget(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
// space, flag and type still to do
}
@@ -115,48 +240,59 @@ static void rna_def_constraint_childof(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "locationx", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCX);
RNA_def_property_ui_text(prop, "Location X", "Use X Location of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "locationy", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCY);
RNA_def_property_ui_text(prop, "Location Y", "Use Y Location of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "locationz", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCZ);
RNA_def_property_ui_text(prop, "Location Z", "Use Z Location of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "rotationx", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTX);
RNA_def_property_ui_text(prop, "Rotation X", "Use X Rotation of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "rotationy", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTY);
RNA_def_property_ui_text(prop, "Rotation Y", "Use Y Rotation of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "rotationz", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTZ);
RNA_def_property_ui_text(prop, "Rotation Z", "Use Z Rotation of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "sizex", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEX);
RNA_def_property_ui_text(prop, "Size X", "Use X Scale of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "sizey", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEY);
RNA_def_property_ui_text(prop, "Size Y", "Use Y Scale of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "sizez", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEZ);
RNA_def_property_ui_text(prop, "Size Z", "Use Z Scale of Parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_python(BlenderRNA *brna)
@@ -176,14 +312,17 @@ static void rna_def_constraint_python(BlenderRNA *brna)
prop= RNA_def_property(srna, "number_of_targets", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "tarnum");
RNA_def_property_ui_text(prop, "Number of Targets", "Usually only 1-3 are needed.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Text");
RNA_def_property_ui_text(prop, "Script", "The text object that contains the Python script.");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_targets", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PYCON_USETARGETS);
RNA_def_property_ui_text(prop, "Use Targets", "Use the targets indicated in the constraint panel.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "script_error", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PYCON_SCRIPTERROR);
@@ -202,30 +341,36 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, 1, 10000);
RNA_def_property_ui_text(prop, "Iterations", "Maximum number of solving iterations.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "pole_target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "poletar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Pole Target", "Object for pole rotation.");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "pole_subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "polesubtarget");
RNA_def_property_ui_text(prop, "Pole Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "pole_angle", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "poleangle");
RNA_def_property_range(prop, 0.0, 180.f);
RNA_def_property_ui_text(prop, "Pole Angle", "Pole rotation offset.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.01, 1.f);
@@ -235,27 +380,33 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "orientweight");
RNA_def_property_range(prop, 0.01, 1.f);
RNA_def_property_ui_text(prop, "Orientation Weight", "For Tree-IK: Weight of orientation control for this target.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "chain_length", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "rootbone");
RNA_def_property_range(prop, 0, 255);
RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the IK effect - 0 uses all bones.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "tail", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_TIP);
RNA_def_property_ui_text(prop, "Use Tail", "Include bone's tail as last element in chain.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_ROT);
RNA_def_property_ui_text(prop, "Rotation", "Chain follows rotation of target.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "targetless", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO);
RNA_def_property_ui_text(prop, "Targetless", "Use targetless IK.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "stretch", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_STRETCH);
RNA_def_property_ui_text(prop, "Stretch", "Enable IK Stretching.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_track_to(BlenderRNA *brna)
@@ -264,18 +415,18 @@ static void rna_def_constraint_track_to(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem track_items[] = {
- {TRACK_X, "TRACK_X", "Track X", ""},
- {TRACK_Y, "TRACK_Y", "Track Y", ""},
- {TRACK_Z, "TRACK_Z", "Track Z", ""},
- {TRACK_nX, "TRACK_NEGATIVE_X", "Track Negative X", ""},
- {TRACK_nY, "TRACK_NEGATIVE_Y", "Track Negative Y", ""},
- {TRACK_nZ, "TRACK_NEGATIVE_Z", "Track Negative Z", ""},
+ {TRACK_X, "TRACK_X", "X", ""},
+ {TRACK_Y, "TRACK_Y", "Y", ""},
+ {TRACK_Z, "TRACK_Z", "Z", ""},
+ {TRACK_nX, "TRACK_NEGATIVE_X", "-X", ""},
+ {TRACK_nY, "TRACK_NEGATIVE_Y", "-Y", ""},
+ {TRACK_nZ, "TRACK_NEGATIVE_Z", "-Z", ""},
{0, NULL, NULL, NULL}};
static EnumPropertyItem up_items[] = {
- {TRACK_X, "UP_X", "Up X", ""},
- {TRACK_Y, "UP_Y", "Up Y", ""},
- {TRACK_Z, "UP_Z", "Up Z", ""},
+ {TRACK_X, "UP_X", "X", ""},
+ {TRACK_Y, "UP_Y", "Y", ""},
+ {TRACK_Z, "UP_Z", "Z", ""},
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "TrackToConstraint", "Constraint");
@@ -284,26 +435,31 @@ static void rna_def_constraint_track_to(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "track", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "reserved1");
RNA_def_property_enum_items(prop, track_items);
RNA_def_property_ui_text(prop, "Track Axis", "Axis that points to the target object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "up", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "reserved2");
RNA_def_property_enum_items(prop, up_items);
RNA_def_property_ui_text(prop, "Up Axis", "Axis that points upward.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "target_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TARGET_Z_UP);
RNA_def_property_ui_text(prop, "Target Z", "Target's Z axis, not World Z axis, will constraint the Up direction.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_rotate_like(BlenderRNA *brna)
@@ -311,46 +467,55 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "RotateLikeConstraint", "Constraint");
+ srna= RNA_def_struct(brna, "CopyRotationConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Copy Rotation Constraint", "Copies the rotation of the target.");
RNA_def_struct_sdna_from(srna, "bRotateLikeConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "rotate_like_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_X);
RNA_def_property_ui_text(prop, "Like X", "Copy the target's X rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "rotate_like_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Y);
RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "rotate_like_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Z);
RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_X);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_X_INVERT);
RNA_def_property_ui_text(prop, "Invert X", "Invert the X rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Y_INVERT);
RNA_def_property_ui_text(prop, "Invert Y", "Invert the Y rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Z_INVERT);
RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_OFFSET);
RNA_def_property_ui_text(prop, "Offset", "Add original rotation into copied rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_locate_like(BlenderRNA *brna)
@@ -358,46 +523,63 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "LocateLikeConstraint", "Constraint");
+ srna= RNA_def_struct(brna, "CopyLocationConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Copy Location Constraint", "Copies the location of the target.");
RNA_def_struct_sdna_from(srna, "bLocateLikeConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "locate_like_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_X);
RNA_def_property_ui_text(prop, "Like X", "Copy the target's X location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "locate_like_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Y);
RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "locate_like_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Z);
RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_X);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_X_INVERT);
RNA_def_property_ui_text(prop, "Invert X", "Invert the X location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Y_INVERT);
RNA_def_property_ui_text(prop, "Invert Y", "Invert the Y location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "invert_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Z_INVERT);
RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_OFFSET);
RNA_def_property_ui_text(prop, "Offset", "Add original location into copied location.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
+ RNA_def_struct_sdna(srna, "bConstraint");
+
+ prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_PERCENTAGE);
+ RNA_def_property_float_sdna(prop, NULL, "headtail");
+ RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_minmax(BlenderRNA *brna)
@@ -406,43 +588,49 @@ static void rna_def_constraint_minmax(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem minmax_items[] = {
- {LOCLIKE_X, "FLOOR_X", "Floor X", ""},
- {LOCLIKE_Y, "FLOOR_Y", "Floor Y", ""},
- {LOCLIKE_Z, "FLOOR_Z", "Floor Z", ""},
- {LOCLIKE_X_INVERT, "FLOOR_NEGATIVE_X", "Floor Negative X", ""},
- {LOCLIKE_Y_INVERT, "FLOOR_NEGATIVE_Y", "Floor Negative Y", ""},
- {LOCLIKE_Z_INVERT, "FLOOR_NEGATIVE_Z", "Floor Negative Z", ""},
+ {LOCLIKE_X, "FLOOR_X", "X", ""},
+ {LOCLIKE_Y, "FLOOR_Y", "Y", ""},
+ {LOCLIKE_Z, "FLOOR_Z", "Z", ""},
+ {LOCLIKE_X_INVERT, "FLOOR_NEGATIVE_X", "-X", ""},
+ {LOCLIKE_Y_INVERT, "FLOOR_NEGATIVE_Y", "-Y", ""},
+ {LOCLIKE_Z_INVERT, "FLOOR_NEGATIVE_Z", "-Z", ""},
{0, NULL, NULL, NULL}};
- srna= RNA_def_struct(brna, "MinMaxConstraint", "Constraint");
+ srna= RNA_def_struct(brna, "FloorConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Floor Constraint", "Uses the target object for location limitation.");
RNA_def_struct_sdna_from(srna, "bMinMaxConstraint","data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "floor_location", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "minmaxflag");
RNA_def_property_enum_items(prop, minmax_items);
RNA_def_property_ui_text(prop, "Floor Location", "Location of target that object will not pass through.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "sticky", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MINMAX_STICKY);
RNA_def_property_ui_text(prop, "Sticky", "Immobilize object while constrained.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MINMAX_USEROT);
RNA_def_property_ui_text(prop, "Use Rotation", "Use the target's rotation to determine floor.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 100.f);
RNA_def_property_ui_text(prop, "Offset", "Offset of floor from object center.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_size_like(BlenderRNA *brna)
@@ -450,34 +638,41 @@ static void rna_def_constraint_size_like(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "SizeLikeConstraint", "Constraint");
+ srna= RNA_def_struct(brna, "CopyScaleConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Copy Scale Constraint", "Copies the scale of the target.");
RNA_def_struct_sdna_from(srna, "bSizeLikeConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "size_like_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_X);
RNA_def_property_ui_text(prop, "Like X", "Copy the target's X scale.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "size_like_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Y);
RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y scale.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "size_like_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Z);
RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z scale.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_OFFSET);
RNA_def_property_ui_text(prop, "Offset", "Add original scale into copied scale.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_action(BlenderRNA *brna)
@@ -503,42 +698,50 @@ static void rna_def_constraint_action(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "transform_channel", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, transform_channel_items);
- RNA_def_property_ui_text(prop, "Transform Channel", "Transfromation channel from the target that is used to key the Action.");
+ RNA_def_property_ui_text(prop, "Transform Channel", "Transformation channel from the target that is used to key the Action.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "action", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "act");
- RNA_def_property_struct_type(prop, "Action");
RNA_def_property_ui_text(prop, "Action", "");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "start");
RNA_def_property_range(prop, MINFRAME, MAXFRAME);
RNA_def_property_ui_text(prop, "Start Frame", "First frame of the Action to use.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "end");
RNA_def_property_range(prop, MINFRAME, MAXFRAME);
RNA_def_property_ui_text(prop, "End Frame", "Last frame of the Action to use.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum", "Maximum value for target channel range.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum", "Minimum value for target channel range.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_locked_track(BlenderRNA *brna)
@@ -547,42 +750,46 @@ static void rna_def_constraint_locked_track(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem locktrack_items[] = {
- {TRACK_X, "TRACK_X", "Track X", ""},
- {TRACK_Y, "TRACK_Y", "Track Y", ""},
- {TRACK_Z, "TRACK_Z", "Track Z", ""},
- {TRACK_nX, "TRACK_NEGATIVE_X", "Track Negative X", ""},
- {TRACK_nY, "TRACK_NEGATIVE_Y", "Track Negative Y", ""},
- {TRACK_nZ, "TRACK_NEGATIVE_Z", "Track Negative Z", ""},
+ {TRACK_X, "TRACK_X", "X", ""},
+ {TRACK_Y, "TRACK_Y", "Y", ""},
+ {TRACK_Z, "TRACK_Z", "Z", ""},
+ {TRACK_nX, "TRACK_NEGATIVE_X", "-X", ""},
+ {TRACK_nY, "TRACK_NEGATIVE_Y", "-Y", ""},
+ {TRACK_nZ, "TRACK_NEGATIVE_Z", "-Z", ""},
{0, NULL, NULL, NULL}};
static EnumPropertyItem lock_items[] = {
- {TRACK_X, "LOCK_X", "Lock X", ""},
- {TRACK_Y, "LOCK_Y", "Lock Y", ""},
- {TRACK_Z, "LOCK_Z", "Lock Z", ""},
+ {TRACK_X, "LOCK_X", "X", ""},
+ {TRACK_Y, "LOCK_Y", "Y", ""},
+ {TRACK_Z, "LOCK_Z", "Z", ""},
{0, NULL, NULL, NULL}};
- srna= RNA_def_struct(brna, "LockTrackConstraint", "Constraint");
+ srna= RNA_def_struct(brna, "LockedTrackConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Locked Track Constraint", "Points toward the target along the track axis, while locking the other axis.");
RNA_def_struct_sdna_from(srna, "bLockTrackConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "track", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "trackflag");
RNA_def_property_enum_items(prop, locktrack_items);
RNA_def_property_ui_text(prop, "Track Axis", "Axis that points to the target object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "locked", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "lockflag");
RNA_def_property_enum_items(prop, lock_items);
RNA_def_property_ui_text(prop, "Locked Axis", "Axis that points upward.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_follow_path(BlenderRNA *brna)
@@ -591,18 +798,18 @@ static void rna_def_constraint_follow_path(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem forwardpath_items[] = {
- {TRACK_X, "FORWARD_X", "Forward X", ""},
- {TRACK_Y, "FORWARD_Y", "Forward Y", ""},
- {TRACK_Z, "FORWARD_Z", "Forward Z", ""},
- {TRACK_nX, "TRACK_NEGATIVE_X", "Forward Negative X", ""},
- {TRACK_nY, "TRACK_NEGATIVE_Y", "Forward Negative Y", ""},
- {TRACK_nZ, "TRACK_NEGATIVE_Z", "Forward Negative Z", ""},
+ {TRACK_X, "FORWARD_X", "X", ""},
+ {TRACK_Y, "FORWARD_Y", "Y", ""},
+ {TRACK_Z, "FORWARD_Z", "Z", ""},
+ {TRACK_nX, "TRACK_NEGATIVE_X", "-X", ""},
+ {TRACK_nY, "TRACK_NEGATIVE_Y", "-Y", ""},
+ {TRACK_nZ, "TRACK_NEGATIVE_Z", "-Z", ""},
{0, NULL, NULL, NULL}};
static EnumPropertyItem pathup_items[] = {
- {TRACK_X, "UP_X", "Up X", ""},
- {TRACK_Y, "UP_Y", "Up Y", ""},
- {TRACK_Z, "UP_Z", "Up Z", ""},
+ {TRACK_X, "UP_X", "X", ""},
+ {TRACK_Y, "UP_Y", "Y", ""},
+ {TRACK_Z, "UP_Z", "Z", ""},
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "FollowPathConstraint", "Constraint");
@@ -611,26 +818,31 @@ static void rna_def_constraint_follow_path(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "offset", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, -300000.0, 300000.f);
RNA_def_property_ui_text(prop, "Offset", "Offset from the position corresponding to the time frame.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "forward", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "trackflag");
RNA_def_property_enum_items(prop, forwardpath_items);
RNA_def_property_ui_text(prop, "Forward Axis", "Axis that points forward along the path.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "up", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "upflag");
RNA_def_property_enum_items(prop, pathup_items);
RNA_def_property_ui_text(prop, "Up Axis", "Axis that points upward.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "curve_follow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "followflag", 1);
RNA_def_property_ui_text(prop, "Follow Curve", "Object will follow the heading and banking of the curve.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_stretch_to(BlenderRNA *brna)
@@ -639,15 +851,15 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem volume_items[] = {
- {VOLUME_XZ, "VOLUME_XZX", "Volume XZ", ""},
- {VOLUME_XZ, "VOLUME_X", "Volume Y", ""},
- {VOLUME_XZ, "VOLUME_Z", "Volume Z", ""},
- {NO_VOLUME, "NO_VOLUME", "No Volume", ""},
+ {VOLUME_XZ, "VOLUME_XZX", "XZ", ""},
+ {VOLUME_X, "VOLUME_X", "Y", ""},
+ {VOLUME_Z, "VOLUME_Z", "Z", ""},
+ {NO_VOLUME, "NO_VOLUME", "None", ""},
{0, NULL, NULL, NULL}};
static EnumPropertyItem plane_items[] = {
- {PLANE_X, "PLANE_X", "Keep X Axis", ""},
- {PLANE_Z, "PLANE_Z", "Keep Z Axis", ""},
+ {PLANE_X, "PLANE_X", "X", "Keep X Axis"},
+ {PLANE_Z, "PLANE_Z", "Z", "Keep Z Axis"},
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "StretchToConstraint", "Constraint");
@@ -656,27 +868,32 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "volume", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "volmode");
RNA_def_property_enum_items(prop, volume_items);
RNA_def_property_ui_text(prop, "Maintain Volume", "Maintain the object's volume as it stretches.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "keep_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "plane");
RNA_def_property_enum_items(prop, plane_items);
RNA_def_property_ui_text(prop, "Keep Axis", "Axis to maintain during stretch.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "original_length", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "orglength");
RNA_def_property_range(prop, 0.0, 100.f);
RNA_def_property_ui_text(prop, "Original Length", "Length at rest position.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "bulge", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 100.f);
RNA_def_property_ui_text(prop, "Volume Variation", "Factor between volume variation and stretching.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna)
@@ -687,8 +904,8 @@ static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna)
static EnumPropertyItem pivot_items[] = {
{CONSTRAINT_RB_BALL, "BALL", "Ball", ""},
{CONSTRAINT_RB_HINGE, "HINGE", "Hinge", ""},
- {CONSTRAINT_RB_CONETWIST, "CONETWIST", "Cone Twist", ""},
- {CONSTRAINT_RB_GENERIC6DOF, "GENERIC", "Generic 6 DoF", ""},
+ {CONSTRAINT_RB_CONETWIST, "CONE_TWIST", "Cone Twist", ""},
+ {CONSTRAINT_RB_GENERIC6DOF, "GENERIC_6_DOF", "Generic 6 DoF", ""},
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "RigidBodyJointConstraint", "Constraint");
@@ -697,47 +914,56 @@ static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object.");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "child", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Child Object", "Child object.");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "pivot_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, pivot_items);
RNA_def_property_ui_text(prop, "Pivot Type", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "pivot_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pivX");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Pivot X", "Offset pivot on X.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "pivot_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pivY");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Pivot Y", "Offset pivot on Y.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "pivot_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pivZ");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Pivot Z", "Offset pivot on Z.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "axis_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "axX");
RNA_def_property_range(prop, -360.0, 360.f);
RNA_def_property_ui_text(prop, "Axis X", "Rotate pivot on X axis in degrees.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "axis_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "axY");
RNA_def_property_range(prop, -360.0, 360.f);
RNA_def_property_ui_text(prop, "Axis Y", "Rotate pivot on Y axis in degrees.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "axis_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "axZ");
RNA_def_property_range(prop, -360.0, 360.f);
RNA_def_property_ui_text(prop, "Axis Z", "Rotate pivot on Z axis in degrees.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
/* XXX not sure how to wrap the two 6 element arrays for the generic joint */
//float minLimit[6];
@@ -746,10 +972,12 @@ static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna)
prop= RNA_def_property(srna, "disable_linked_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_DISABLE_LINKED_COLLISION);
RNA_def_property_ui_text(prop, "Disable Linked Collision", "Disable collision between linked bodies.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "draw_pivot", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_DRAW_PIVOT);
RNA_def_property_ui_text(prop, "Draw Pivot", "Display the pivot point and rotation in 3D view.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_clamp_to(BlenderRNA *brna)
@@ -758,10 +986,10 @@ static void rna_def_constraint_clamp_to(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem clamp_items[] = {
- {CLAMPTO_AUTO, "CLAMPTO_AUTO", "Clamp Auto", ""},
- {CLAMPTO_X, "CLAMPTO_X", "Clamp X", ""},
- {CLAMPTO_Y, "CLAMPTO_Y", "Clamp Y", ""},
- {CLAMPTO_Z, "CLAMPTO_Z", "Clamp Z", ""},
+ {CLAMPTO_AUTO, "CLAMPTO_AUTO", "Auto", ""},
+ {CLAMPTO_X, "CLAMPTO_X", "X", ""},
+ {CLAMPTO_Y, "CLAMPTO_Y", "Y", ""},
+ {CLAMPTO_Z, "CLAMPTO_Z", "Z", ""},
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "ClampToConstraint", "Constraint");
@@ -770,17 +998,20 @@ static void rna_def_constraint_clamp_to(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "main_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, clamp_items);
RNA_def_property_ui_text(prop, "Main Axis", "Main axis of movement.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "cyclic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", CLAMPTO_CYCLIC);
RNA_def_property_ui_text(prop, "Cyclic", "Treat curve as cyclic curve (no clamping to curve bounding box.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_transform(BlenderRNA *brna)
@@ -789,16 +1020,16 @@ static void rna_def_constraint_transform(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem transform_items[] = {
- {0, "LOCATION", "Location", ""},
- {1, "ROTATION", "Rotation", ""},
+ {0, "LOCATION", "Loc", ""},
+ {1, "ROTATION", "Rot", ""},
{2, "SCALE", "Scale", ""},
{0, NULL, NULL, NULL}};
- /*static EnumPropertyItem axis_map_items[] = {
+ static EnumPropertyItem axis_map_items[] = {
{0, "X", "X", ""},
{1, "Y", "Y", ""},
{2, "Z", "Z", ""},
- {0, NULL, NULL, NULL}};*/
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "TransformConstraint", "Constraint");
RNA_def_struct_ui_text(srna, "Transformation Constraint", "Maps transformations of the target to the object.");
@@ -806,104 +1037,121 @@ static void rna_def_constraint_transform(BlenderRNA *brna)
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "map_from", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "from");
RNA_def_property_enum_items(prop, transform_items);
RNA_def_property_ui_text(prop, "Map From", "The transformation type to use from the target.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "map_to", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "to");
RNA_def_property_enum_items(prop, transform_items);
RNA_def_property_ui_text(prop, "Map To", "The transformation type to affect of the constrained object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
-/* it would be cool to have a method for rna to directly address specific elements of arrays in dna */
-
-/* prop= RNA_def_property(srna, "map_to_x_from", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, 0, "map");
+ prop= RNA_def_property(srna, "map_to_x_from", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "map[0]");
RNA_def_property_enum_items(prop, axis_map_items);
RNA_def_property_ui_text(prop, "Map To X From", "The source axis constrained object's X axis uses.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "map_to_y_from", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, 1, "map");
+ RNA_def_property_enum_sdna(prop, NULL, "map[1]");
RNA_def_property_enum_items(prop, axis_map_items);
RNA_def_property_ui_text(prop, "Map To Y From", "The source axis constrained object's Y axis uses.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "map_to_z_from", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, 2, "map");
+ RNA_def_property_enum_sdna(prop, NULL, "map[2]");
RNA_def_property_enum_items(prop, axis_map_items);
RNA_def_property_ui_text(prop, "Map To Z From", "The source axis constrained object's Z axis uses.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "extrapolate_motion", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "expo", CLAMPTO_CYCLIC);
RNA_def_property_ui_text(prop, "Extrapolate Motion", "Extrapolate ranges.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_min_x", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 0, "from_min");
+ RNA_def_property_float_sdna(prop, NULL, "from_min[0]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "From Minimum X", "Bottom range of X axis source motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_min_y", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 1, "from_min");
+ RNA_def_property_float_sdna(prop, NULL, "from_min[1]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "From Minimum Y", "Bottom range of Y axis source motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_min_z", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 2, "from_min");
+ RNA_def_property_float_sdna(prop, NULL, "from_min[2]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "From Minimum Z", "Bottom range of Z axis source motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_max_x", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 0, "from_max");
+ RNA_def_property_float_sdna(prop, NULL, "from_max[0]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "From Maximum X", "Top range of X axis source motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_max_y", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 1, "from_max");
+ RNA_def_property_float_sdna(prop, NULL, "from_max[1]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "From Maximum Y", "Top range of Y axis source motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "from_max_z", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 2, "from_max");
+ RNA_def_property_float_sdna(prop, NULL, "from_max[2]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "From Maximum Z", "Top range of Z axis source motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_min_x", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 0, "to_min");
+ RNA_def_property_float_sdna(prop, NULL, "to_min[0]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "To Minimum X", "Bottom range of X axis destination motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_min_y", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 1, "to_min");
+ RNA_def_property_float_sdna(prop, NULL, "to_min[1]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "To Minimum Y", "Bottom range of Y axis destination motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_min_z", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 2, "to_min");
+ RNA_def_property_float_sdna(prop, NULL, "to_min[2]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "To Minimum Z", "Bottom range of Z axis destination motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_max_x", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 0, "to_max");
+ RNA_def_property_float_sdna(prop, NULL, "to_max[0]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "To Maximum X", "Top range of X axis destination motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_max_y", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 1, "to_max");
+ RNA_def_property_float_sdna(prop, NULL, "to_max[1]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "To Maximum Y", "Top range of Y axis destination motion.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "to_max_z", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, 2, "to_max");
+ RNA_def_property_float_sdna(prop, NULL, "to_max[2]");
RNA_def_property_range(prop, 0.0, 1000.f);
RNA_def_property_ui_text(prop, "To Maximum Z", "Top range of Z axis destination motion.");
-*/
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_location_limit(BlenderRNA *brna)
@@ -911,67 +1159,80 @@ static void rna_def_constraint_location_limit(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "LocationLimitConstraint", "Constraint");
- RNA_def_struct_ui_text(srna, "Location Limit Constraint", "Limits the location of the constrained object.");
+ srna= RNA_def_struct(brna, "LimitLocationConstraint", "Constraint");
+ RNA_def_struct_ui_text(srna, "Limit Location Constraint", "Limits the location of the constrained object.");
RNA_def_struct_sdna_from(srna, "bLocLimitConstraint", "data");
prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMIN);
RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMIN);
RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_minimum_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMIN);
RNA_def_property_ui_text(prop, "Minimum Z", "Use the minimum Z value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMAX);
RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMAX);
RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_maximum_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMAX);
RNA_def_property_ui_text(prop, "Maximum Z", "Use the maximum Z value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Z", "Lowest Z value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Z", "Highest Z value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "limit_transform", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", LIMIT_TRANSFORM);
RNA_def_property_ui_text(prop, "For Transform", "Transforms are affected by this constraint as well.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_rotation_limit(BlenderRNA *brna)
@@ -979,67 +1240,65 @@ static void rna_def_constraint_rotation_limit(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "RotationLimitConstraint", "Constraint");
- RNA_def_struct_ui_text(srna, "Rotation Limit Constraint", "Limits the rotation of the constrained object.");
+ srna= RNA_def_struct(brna, "LimitRotationConstraint", "Constraint");
+ RNA_def_struct_ui_text(srna, "Limit Rotation Constraint", "Limits the rotation of the constrained object.");
RNA_def_struct_sdna_from(srna, "bRotLimitConstraint", "data");
- prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMIN);
- RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value.");
+ prop= RNA_def_property(srna, "use_limit_x", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XROT);
+ RNA_def_property_ui_text(prop, "Limit X", "Use the minimum X value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMIN);
- RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value.");
-
- prop= RNA_def_property(srna, "use_minimum_z", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMIN);
- RNA_def_property_ui_text(prop, "Minimum Z", "Use the minimum Z value.");
+ prop= RNA_def_property(srna, "use_limit_y", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YROT);
+ RNA_def_property_ui_text(prop, "Limit Y", "Use the minimum Y value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMAX);
- RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value.");
-
- prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMAX);
- RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value.");
-
- prop= RNA_def_property(srna, "use_maximum_z", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMAX);
- RNA_def_property_ui_text(prop, "Maximum Z", "Use the maximum Z value.");
+ prop= RNA_def_property(srna, "use_limit_z", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZROT);
+ RNA_def_property_ui_text(prop, "Limit Z", "Use the minimum Z value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Z", "Lowest Z value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Z", "Highest Z value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "limit_transform", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", LIMIT_TRANSFORM);
RNA_def_property_ui_text(prop, "For Transform", "Transforms are affected by this constraint as well.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_size_limit(BlenderRNA *brna)
@@ -1047,67 +1306,80 @@ static void rna_def_constraint_size_limit(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "SizeLimitConstraint", "Constraint");
- RNA_def_struct_ui_text(srna, "Size Limit Constraint", "Limits the scaling of the constrained object.");
+ srna= RNA_def_struct(brna, "LimitScaleConstraint", "Constraint");
+ RNA_def_struct_ui_text(srna, "Limit Size Constraint", "Limits the scaling of the constrained object.");
RNA_def_struct_sdna_from(srna, "bSizeLimitConstraint", "data");
prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMIN);
RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMIN);
RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_minimum_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMIN);
RNA_def_property_ui_text(prop, "Minimum Z", "Use the minimum Z value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMAX);
RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMAX);
RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "use_maximum_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMAX);
RNA_def_property_ui_text(prop, "Maximum Z", "Use the maximum Z value.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "minimum_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Z", "Lowest Z value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "maximum_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Z", "Highest Z value to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "limit_transform", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", LIMIT_TRANSFORM);
RNA_def_property_ui_text(prop, "For Transform", "Transforms are affected by this constraint as well.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
static void rna_def_constraint_distance_limit(BlenderRNA *brna)
@@ -1121,63 +1393,94 @@ static void rna_def_constraint_distance_limit(BlenderRNA *brna)
{LIMITDIST_ONSURFACE, "LIMITDIST_ONSURFACE", "On Surface", ""},
{0, NULL, NULL, NULL}};
- srna= RNA_def_struct(brna, "DistLimitConstraint", "Constraint");
- RNA_def_struct_ui_text(srna, "Distance Limit Constraint", "Limits the distance from target object.");
+ srna= RNA_def_struct(brna, "LimitDistanceConstraint", "Constraint");
+ RNA_def_struct_ui_text(srna, "Limit Distance Constraint", "Limits the distance from target object.");
RNA_def_struct_sdna_from(srna, "bDistLimitConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "subtarget");
RNA_def_property_ui_text(prop, "Sub-Target", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dist");
RNA_def_property_range(prop, 0.0, 100.f);
RNA_def_property_ui_text(prop, "Distance", "Radius of limiting sphere.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
prop= RNA_def_property(srna, "limit_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "mode");
RNA_def_property_enum_items(prop, distance_items);
RNA_def_property_ui_text(prop, "Limit Mode", "Distances in relation to sphere of influence to allow.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
}
-/* base struct for constraints */
-void RNA_def_constraint(BlenderRNA *brna)
+static void rna_def_constraint_shrinkwrap(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
- static EnumPropertyItem type_items[] ={
- {CONSTRAINT_TYPE_NULL, "NULL", "Null", ""},
- {CONSTRAINT_TYPE_CHILDOF, "CHILDOF", "Child Of", ""},
- {CONSTRAINT_TYPE_TRACKTO, "TRACKTO", "Track To", ""},
- {CONSTRAINT_TYPE_KINEMATIC, "IK", "IK", ""},
- {CONSTRAINT_TYPE_FOLLOWPATH, "FOLLOWPATH", "Follow Path", ""},
- {CONSTRAINT_TYPE_ROTLIMIT, "LIMITROT", "Limit Rotation", ""},
- {CONSTRAINT_TYPE_LOCLIMIT, "LIMITLOC", "Limit Location", ""},
- {CONSTRAINT_TYPE_SIZELIMIT, "LIMITSCALE", "Limit Scale", ""},
- {CONSTRAINT_TYPE_ROTLIKE, "COPYROT", "Copy Rotation", ""},
- {CONSTRAINT_TYPE_LOCLIKE, "COPYLOC", "Copy Location", ""},
- {CONSTRAINT_TYPE_SIZELIKE, "COPYSCALE", "Copy Scale", ""},
- {CONSTRAINT_TYPE_PYTHON, "SCRIPT", "Script", ""},
- {CONSTRAINT_TYPE_ACTION, "ACTION", "Action", ""},
- {CONSTRAINT_TYPE_LOCKTRACK, "LOCKTRACK", "Locked Track", ""},
- {CONSTRAINT_TYPE_DISTLIMIT, "LIMITDIST", "Limit Distance", ""},
- {CONSTRAINT_TYPE_STRETCHTO, "STRETCHTO", "Stretch To", ""},
- {CONSTRAINT_TYPE_MINMAX, "FLOOR", "Floor", ""},
- {CONSTRAINT_TYPE_RIGIDBODYJOINT, "RIGIDBODYJOINT", "Rigid Body Joint", ""},
- {CONSTRAINT_TYPE_CLAMPTO, "CLAMPTO", "Clamp To", ""},
- {CONSTRAINT_TYPE_TRANSFORM, "TRANSFORM", "Transformation", ""},
+ static EnumPropertyItem type_items[] = {
+ {MOD_SHRINKWRAP_NEAREST_SURFACE, "NEAREST_SURFACE", "Nearest Surface Point", ""},
+ {MOD_SHRINKWRAP_PROJECT, "PROJECT", "Project", ""},
+ {MOD_SHRINKWRAP_NEAREST_VERTEX, "NEAREST_VERTEX", "Nearest Vertex", ""},
{0, NULL, NULL, NULL}};
+ srna= RNA_def_struct(brna, "ShrinkwrapConstraint", "Constraint");
+ RNA_def_struct_ui_text(srna, "Shrinkwrap Constraint", "Creates constraint-based shrinkwrap relationship.");
+ RNA_def_struct_sdna_from(srna, "bShrinkwrapConstraint", "data");
+
+ prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "target");
+ RNA_def_property_ui_text(prop, "Target", "Target Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
+
+ prop= RNA_def_property(srna, "shrinkwrap_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "shrinkType");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Shrinkwrap Type", "Selects type of shrinkwrap algorithm for target position");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
+ prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "dist");
+ RNA_def_property_range(prop, 0.0, 100.f);
+ RNA_def_property_ui_text(prop, "Distance", "Distance to Target.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
+ prop= RNA_def_property(srna, "axis_x", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS);
+ RNA_def_property_ui_text(prop, "Axis X", "Projection over X Axis");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
+ prop= RNA_def_property(srna, "axis_y", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS);
+ RNA_def_property_ui_text(prop, "Axis Y", "Projection over Y Axis");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+
+ prop= RNA_def_property(srna, "axis_z", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS);
+ RNA_def_property_ui_text(prop, "Axis Z", "Projection over Z Axis");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
+}
+
+/* base struct for constraints */
+void RNA_def_constraint(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
/* data */
srna= RNA_def_struct(brna, "Constraint", NULL );
RNA_def_struct_ui_text(srna, "Constraint", "Constraint modifying the transformation of objects and bones.");
RNA_def_struct_refine_func(srna, "rna_ConstraintType_refine");
+ RNA_def_struct_path_func(srna, "rna_Constraint_path");
RNA_def_struct_sdna(srna, "bConstraint");
/* strings */
@@ -1189,9 +1492,19 @@ void RNA_def_constraint(BlenderRNA *brna)
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_sdna(prop, NULL, "type");
- RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_enum_items(prop, constraint_type_items);
RNA_def_property_ui_text(prop, "Type", "");
-
+
+ prop= RNA_def_property(srna, "owner_space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "ownspace");
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Constraint_owner_space_itemf");
+ RNA_def_property_ui_text(prop, "Owner Space", "Space that owner is evaluated in.");
+
+ prop= RNA_def_property(srna, "target_space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "tarspace");
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Constraint_target_space_itemf");
+ RNA_def_property_ui_text(prop, "Target Space", "Space that target is evaluated in.");
+
/* flags */
// XXX do we want to wrap this?
prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
@@ -1214,10 +1527,11 @@ void RNA_def_constraint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Proxy Local", "Constraint was added in this proxy instance (i.e. did not belong to source Armature).");
/* values */
- prop= RNA_def_property(srna, "influence", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "influence", PROP_FLOAT, PROP_PERCENTAGE);
RNA_def_property_float_sdna(prop, NULL, "enforce");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Influence", "Amount of influence constraint will have on the final solution.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_influence_update");
/* pointers */
rna_def_constrainttarget(brna);
@@ -1241,6 +1555,8 @@ void RNA_def_constraint(BlenderRNA *brna)
rna_def_constraint_rotation_limit(brna);
rna_def_constraint_location_limit(brna);
rna_def_constraint_transform(brna);
+ rna_def_constraint_shrinkwrap(brna);
}
#endif
+
diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c
index e45319a42a6..ed609c48e50 100644
--- a/source/blender/makesrna/intern/rna_context.c
+++ b/source/blender/makesrna/intern/rna_context.c
@@ -103,48 +103,48 @@ void RNA_def_context(BlenderRNA *brna)
prop= RNA_def_property(srna, "manager", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "WindowManager");
- RNA_def_property_pointer_funcs(prop, "rna_Context_manager_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_manager_get", NULL, NULL);
/* prop= RNA_def_property(srna, "window", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Window");
- RNA_def_property_pointer_funcs(prop, "rna_Context_window_get", NULL); */
+ RNA_def_property_pointer_funcs(prop, "rna_Context_window_get", NULL, NULL); */
prop= RNA_def_property(srna, "screen", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Screen");
- RNA_def_property_pointer_funcs(prop, "rna_Context_screen_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_screen_get", NULL, NULL);
prop= RNA_def_property(srna, "area", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Area");
- RNA_def_property_pointer_funcs(prop, "rna_Context_area_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_area_get", NULL, NULL);
prop= RNA_def_property(srna, "space_data", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Space");
- RNA_def_property_pointer_funcs(prop, "rna_Context_space_data_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_space_data_get", NULL, NULL);
prop= RNA_def_property(srna, "region", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Region");
- RNA_def_property_pointer_funcs(prop, "rna_Context_region_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_region_get", NULL, NULL);
/*prop= RNA_def_property(srna, "region_data", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "RegionData");
- RNA_def_property_pointer_funcs(prop, "rna_Context_region_data_get", NULL);*/
+ RNA_def_property_pointer_funcs(prop, "rna_Context_region_data_get", NULL, NULL);*/
/* Data */
prop= RNA_def_property(srna, "main", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Main");
- RNA_def_property_pointer_funcs(prop, "rna_Context_main_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_main_get", NULL, NULL);
prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Scene");
- RNA_def_property_pointer_funcs(prop, "rna_Context_scene_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Context_scene_get", NULL, NULL);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c
index 1c2e5ecee02..df603e7920f 100644
--- a/source/blender/makesrna/intern/rna_controller.c
+++ b/source/blender/makesrna/intern/rna_controller.c
@@ -109,6 +109,7 @@ void RNA_def_controller(BlenderRNA *brna)
prop= RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "ID");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Text", "Text datablock with the python script.");
/* Other Controllers */
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index 718f7d935f9..aac9d75c6a6 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -39,6 +39,7 @@ EnumPropertyItem beztriple_handle_type_items[] = {
{HD_ALIGN, "ALIGNED", "Aligned", ""},
{HD_AUTO_ANIM, "AUTO_CLAMPED", "Auto Clamped", ""},
{0, NULL, NULL, NULL}};
+
EnumPropertyItem beztriple_interpolation_mode_items[] = {
{BEZT_IPO_CONST, "CONSTANT", "Constant", ""},
{BEZT_IPO_LIN, "LINEAR", "Linear", ""},
@@ -47,6 +48,20 @@ EnumPropertyItem beztriple_interpolation_mode_items[] = {
#ifdef RNA_RUNTIME
+#include "DNA_object_types.h"
+
+#include "BKE_curve.h"
+
+StructRNA *rna_Curve_refine(PointerRNA *ptr)
+{
+ Curve *cu= (Curve*)ptr->data;
+ short obtype= curve_type(cu);
+
+ if(obtype == OB_FONT) return &RNA_TextCurve;
+ else if(obtype == OB_SURF) return &RNA_SurfaceCurve;
+ else return &RNA_Curve;
+}
+
static void rna_BezTriple_handle1_get(PointerRNA *ptr, float *values)
{
BezTriple *bt= (BezTriple*)ptr->data;
@@ -370,6 +385,7 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
/* pointers */
prop= RNA_def_property(srna, "text_on_curve", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "textoncurve");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Text on Curve", "Curve deforming text object.");
prop= RNA_def_property(srna, "font", PROP_POINTER, PROP_NONE);
@@ -390,7 +406,7 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_ui_text(prop, "Fast", "Don't fill polygons while editing.");
}
-void rna_def_textbox(BlenderRNA *brna)
+static void rna_def_textbox(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
@@ -420,7 +436,7 @@ void rna_def_textbox(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Textbox Height", "");
}
-void rna_def_charinfo(BlenderRNA *brna)
+static void rna_def_charinfo(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
@@ -451,13 +467,40 @@ void rna_def_charinfo(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Wrap", "");
}
-void rna_def_curve(BlenderRNA *brna)
+static void rna_def_surface(BlenderRNA *brna)
+{
+ StructRNA *srna;
+
+ srna= RNA_def_struct(brna, "SurfaceCurve", "Curve");
+ RNA_def_struct_sdna(srna, "Curve");
+ RNA_def_struct_ui_text(srna, "Surface Curve", "Curve datablock used for storing surfaces.");
+ RNA_def_struct_ui_icon(srna, ICON_SURFACE_DATA);
+
+ rna_def_nurbs(brna, srna);
+}
+
+static void rna_def_text(BlenderRNA *brna)
+{
+ StructRNA *srna;
+
+ srna= RNA_def_struct(brna, "TextCurve", "Curve");
+ RNA_def_struct_sdna(srna, "Curve");
+ RNA_def_struct_ui_text(srna, "Text Curve", "Curve datablock used for storing text.");
+ RNA_def_struct_ui_icon(srna, ICON_FONT_DATA);
+
+ rna_def_font(brna, srna);
+ rna_def_nurbs(brna, srna);
+}
+
+static void rna_def_curve(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna= RNA_def_struct(brna, "Curve", "ID");
RNA_def_struct_ui_text(srna, "Curve", "Curve datablock storing curves, splines and NURBS.");
+ RNA_def_struct_ui_icon(srna, ICON_CURVE_DATA);
+ RNA_def_struct_refine_func(srna, "rna_Curve_refine");
rna_def_animdata_common(srna);
rna_def_texmat_common(srna, "rna_Curve_texspace_editable");
@@ -472,57 +515,58 @@ void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Curves", "Collection of curves in this curve data object.");
rna_def_path(brna, srna);
- rna_def_nurbs(brna, srna);
- rna_def_font(brna, srna);
/* Number values */
prop= RNA_def_property(srna, "bevel_resolution", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "bevresol");
RNA_def_property_range(prop, 0, 32);
+ RNA_def_property_ui_range(prop, 0, 32, 1.0, 0);
RNA_def_property_ui_text(prop, "Bevel Resolution", "Bevel resolution when depth is non-zero and no specific bevel object has been defined.");
prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "width");
- RNA_def_property_range(prop, 0.0f, 2.0f);
+ RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 0);
RNA_def_property_ui_text(prop, "Width", "Scale the original width (1.0) based on given factor.");
prop= RNA_def_property(srna, "extrude", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ext1");
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ RNA_def_property_ui_range(prop, 0, 100.0, 0.1, 0);
RNA_def_property_ui_text(prop, "Extrude", "Amount of curve extrusion when not using a bevel object.");
prop= RNA_def_property(srna, "bevel_depth", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ext2");
- RNA_def_property_range(prop, 0.0f, 2.0f);
+ RNA_def_property_ui_range(prop, 0, 100.0, 0.1, 0);
RNA_def_property_ui_text(prop, "Bevel Depth", "Bevel depth when not using a bevel object.");
prop= RNA_def_property(srna, "resolution_u", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "resolu");
- RNA_def_property_range(prop, 1, 1024);
+ RNA_def_property_ui_range(prop, 1, 1024, 1, 0);
RNA_def_property_ui_text(prop, "Resolution U", "Surface resolution in U direction.");
prop= RNA_def_property(srna, "resolution_v", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "resolv");
- RNA_def_property_range(prop, 1, 1024);
+ RNA_def_property_ui_range(prop, 1, 1024, 1, 0);
RNA_def_property_ui_text(prop, "Resolution V", "Surface resolution in V direction.");
prop= RNA_def_property(srna, "render_resolution_u", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "resolu_ren");
- RNA_def_property_range(prop, 0, 1024);
+ RNA_def_property_ui_range(prop, 1, 1024, 1, 0);
RNA_def_property_ui_text(prop, "Render Resolution U", "Surface resolution in U direction used while rendering. Zero skips this property.");
prop= RNA_def_property(srna, "render_resolution_v", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "resolv_ren");
- RNA_def_property_range(prop, 0, 1024);
+ RNA_def_property_ui_range(prop, 1, 1024, 1, 0);
RNA_def_property_ui_text(prop, "Render Resolution V", "Surface resolution in V direction used while rendering. Zero skips this property.");
/* pointers */
prop= RNA_def_property(srna, "bevel_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "bevobj");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Bevel Object", "Curve object name that defines the bevel shape.");
prop= RNA_def_property(srna, "taper_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "taperobj");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Taper Object", "Curve object name that defines the taper (width).");
/* Flags */
@@ -543,8 +587,7 @@ void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Retopo", "Turn on the re-topology tool.");
}
-
-void rna_def_curve_nurb(BlenderRNA *brna)
+static void rna_def_curve_nurb(BlenderRNA *brna)
{
static EnumPropertyItem spline_interpolation_items[] = {
{BEZT_IPO_CONST, "LINEAR", "Linear", ""},
@@ -661,11 +704,11 @@ void rna_def_curve_nurb(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Character Index", "the location of this character in the text data (only for text curves)");
}
-
-
void RNA_def_curve(BlenderRNA *brna)
{
rna_def_curve(brna);
+ rna_def_surface(brna);
+ rna_def_text(brna);
rna_def_textbox(brna);
rna_def_charinfo(brna);
rna_def_bpoint(brna);
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index a29f6c06b17..33d94e800d1 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -559,6 +559,7 @@ StructRNA *RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *
memcpy(srna, srnafrom, sizeof(StructRNA));
srna->cont.properties.first= srna->cont.properties.last= NULL;
srna->functions.first= srna->functions.last= NULL;
+ srna->py_type= NULL;
if(DefRNA.preprocess) {
srna->base= srnafrom;
@@ -567,10 +568,12 @@ StructRNA *RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *
else
srna->base= srnafrom;
}
-
+
srna->identifier= identifier;
srna->name= identifier; /* may be overwritten later RNA_def_struct_ui_text */
srna->description= "";
+ if(!srnafrom)
+ srna->icon= ICON_DOT;
rna_addtail(&brna->structs, srna);
@@ -618,7 +621,7 @@ StructRNA *RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *
if(DefRNA.preprocess) {
RNA_def_property_struct_type(prop, "Struct");
- RNA_def_property_pointer_funcs(prop, "rna_builtin_type_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_builtin_type_get", NULL, NULL);
}
else {
#ifdef RNA_RUNTIME
@@ -711,7 +714,12 @@ void RNA_def_struct_nested(BlenderRNA *brna, StructRNA *srna, const char *struct
void RNA_def_struct_flag(StructRNA *srna, int flag)
{
- srna->flag= flag;
+ srna->flag |= flag;
+}
+
+void RNA_def_struct_clear_flag(StructRNA *srna, int flag)
+{
+ srna->flag &= ~flag;
}
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
@@ -771,6 +779,11 @@ void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *descr
srna->description= description;
}
+void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
+{
+ srna->icon= icon;
+}
+
/* Property Definition */
PropertyRNA *RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
@@ -1058,6 +1071,10 @@ void RNA_def_property_struct_runtime(PropertyRNA *prop, StructRNA *type)
case PROP_POINTER: {
PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop;
pprop->type = type;
+
+ if(type && (type->flag & STRUCT_ID_REFCOUNT))
+ prop->flag |= PROP_ID_REFCOUNT;
+
break;
}
case PROP_COLLECTION: {
@@ -1677,7 +1694,7 @@ void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char
}
}
-void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set)
+void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
{
StructRNA *srna= DefRNA.laststruct;
@@ -1692,6 +1709,7 @@ void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char
if(get) eprop->get= (PropEnumGetFunc)get;
if(set) eprop->set= (PropEnumSetFunc)set;
+ if(item) eprop->itemf= (PropEnumItemFunc)item;
break;
}
default:
@@ -1726,7 +1744,7 @@ void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const cha
}
}
-void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set)
+void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *typef)
{
StructRNA *srna= DefRNA.laststruct;
@@ -1741,6 +1759,7 @@ void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const ch
if(get) pprop->get= (PropPointerGetFunc)get;
if(set) pprop->set= (PropPointerSetFunc)set;
+ if(typef) pprop->typef= (PropPointerTypeFunc)typef;
break;
}
default:
diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c
index d57e302263e..ea26118f267 100644
--- a/source/blender/makesrna/intern/rna_fcurve.c
+++ b/source/blender/makesrna/intern/rna_fcurve.c
@@ -586,6 +586,7 @@ void rna_def_fcurve(BlenderRNA *brna)
srna= RNA_def_struct(brna, "FCurve", NULL);
RNA_def_struct_ui_text(srna, "F-Curve", "F-Curve defining values of a period of time.");
+ RNA_def_struct_ui_icon(srna, ICON_ANIM_DATA);
/* Enums */
prop= RNA_def_property(srna, "extrapolation", PROP_ENUM, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c
index 35dddc122fe..059b2ce78f7 100644
--- a/source/blender/makesrna/intern/rna_group.c
+++ b/source/blender/makesrna/intern/rna_group.c
@@ -50,6 +50,7 @@ void RNA_def_group(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Group", "ID");
RNA_def_struct_ui_text(srna, "Group", "Group of Object datablocks.");
+ RNA_def_struct_ui_icon(srna, ICON_GROUP);
prop= RNA_def_property(srna, "dupli_offset", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "dupli_ofs");
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index a4a1636d212..8620a933d61 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -113,6 +113,7 @@ static void rna_def_image(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Image", "ID");
RNA_def_struct_ui_text(srna, "Image", "Image datablock referencing an external or packed image.");
+ RNA_def_struct_ui_icon(srna, ICON_IMAGE_DATA);
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "name");
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 04779c035d0..9071efe71f7 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -25,6 +25,8 @@
#ifndef RNA_INTERNAL_H
#define RNA_INTERNAL_H
+#include "UI_resources.h"
+
#include "rna_internal_types.h"
#define RNA_MAGIC ((int)~0)
diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h
index f7292bdce48..d690251f503 100644
--- a/source/blender/makesrna/intern/rna_internal_types.h
+++ b/source/blender/makesrna/intern/rna_internal_types.h
@@ -67,7 +67,9 @@ typedef int (*PropStringLengthFunc)(struct PointerRNA *ptr);
typedef void (*PropStringSetFunc)(struct PointerRNA *ptr, const char *value);
typedef int (*PropEnumGetFunc)(struct PointerRNA *ptr);
typedef void (*PropEnumSetFunc)(struct PointerRNA *ptr, int value);
+typedef EnumPropertyItem *(*PropEnumItemFunc)(struct PointerRNA *ptr);
typedef PointerRNA (*PropPointerGetFunc)(struct PointerRNA *ptr);
+typedef StructRNA* (*PropPointerTypeFunc)(struct PointerRNA *ptr);
typedef void (*PropPointerSetFunc)(struct PointerRNA *ptr, const PointerRNA value);
typedef void (*PropCollectionBeginFunc)(struct CollectionPropertyIterator *iter, struct PointerRNA *ptr);
typedef void (*PropCollectionNextFunc)(struct CollectionPropertyIterator *iter);
@@ -213,6 +215,7 @@ typedef struct EnumPropertyRNA {
PropEnumGetFunc get;
PropEnumSetFunc set;
+ PropEnumItemFunc itemf;
const EnumPropertyItem *item;
int totitem;
@@ -225,6 +228,7 @@ typedef struct PointerPropertyRNA {
PropPointerGetFunc get;
PropPointerSetFunc set;
+ PropPointerTypeFunc typef;
struct StructRNA *type;
} PointerPropertyRNA;
@@ -263,6 +267,8 @@ struct StructRNA {
const char *name;
/* single line description, displayed in the tooltip for example */
const char *description;
+ /* icon ID */
+ int icon;
/* property that defines the name */
PropertyRNA *nameproperty;
diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c
index 0a21ad1d940..ae03cca74c2 100644
--- a/source/blender/makesrna/intern/rna_key.c
+++ b/source/blender/makesrna/intern/rna_key.c
@@ -285,6 +285,7 @@ static void rna_def_keyblock(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ShapeKey", NULL);
RNA_def_struct_ui_text(srna, "Shape Key", "Shape key in a shape keys datablock.");
RNA_def_struct_sdna(srna, "KeyBlock");
+ RNA_def_struct_ui_icon(srna, ICON_SHAPEKEY_DATA);
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "");
@@ -314,7 +315,7 @@ static void rna_def_keyblock(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "ShapeKey");
RNA_def_property_ui_text(prop, "Relative Key", "Shape used as a relative key.");
- RNA_def_property_pointer_funcs(prop, "rna_ShapeKey_relative_key_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_ShapeKey_relative_key_get", NULL, NULL);
prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYBLOCK_MUTE);
@@ -344,6 +345,7 @@ static void rna_def_key(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Key", "ID");
RNA_def_struct_ui_text(srna, "Key", "Shape keys datablock containing different shapes of geometric datablocks.");
+ RNA_def_struct_ui_icon(srna, ICON_SHAPEKEY_DATA);
prop= RNA_def_property(srna, "reference_key", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c
index b3baac88702..97ad5b7f6a4 100644
--- a/source/blender/makesrna/intern/rna_lamp.c
+++ b/source/blender/makesrna/intern/rna_lamp.c
@@ -108,6 +108,7 @@ static void rna_def_lamp_mtex(BlenderRNA *brna)
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "object");
RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Object", "Object to use for mapping with Object texture coordinates.");
prop= RNA_def_property(srna, "map_to_color", PROP_BOOLEAN, PROP_NONE);
@@ -262,6 +263,7 @@ static void rna_def_lamp(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Lamp", "ID");
RNA_def_struct_refine_func(srna, "rna_Lamp_refine");
RNA_def_struct_ui_text(srna, "Lamp", "Lamp datablock for lighting a scene.");
+ RNA_def_struct_ui_icon(srna, ICON_LAMP_DATA);
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_type_items);
@@ -270,12 +272,12 @@ static void rna_def_lamp(BlenderRNA *brna)
prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dist");
- RNA_def_property_range(prop, 0.01f, 5000.0f);
+ RNA_def_property_ui_range(prop, 0, 1000, 1.0, 2);
RNA_def_property_ui_text(prop, "Distance", "Falloff distance - the light is at half the original intensity at this point.");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING_DRAW, NULL);
prop= RNA_def_property(srna, "energy", PROP_FLOAT, PROP_NONE);
- RNA_def_property_range(prop, 0.0f, 10.0f);
+ RNA_def_property_ui_range(prop, 0, 10.0, 0.1, 2);
RNA_def_property_ui_text(prop, "Energy", "Amount of light that the lamp emits.");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
@@ -328,7 +330,6 @@ static void rna_def_lamp_falloff(StructRNA *srna)
{0, NULL, NULL, NULL}};
prop= RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* needs to be able to create curve mapping */
RNA_def_property_enum_items(prop, prop_fallofftype_items);
RNA_def_property_ui_text(prop, "Falloff Type", "Intensity Decay with distance.");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
@@ -408,14 +409,14 @@ static void rna_def_lamp_shadow(StructRNA *srna, int spot, int area)
prop= RNA_def_property(srna, (area)? "shadow_ray_samples_x": "shadow_ray_samples", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ray_samp");
- RNA_def_property_range(prop, 1, 16);
+ RNA_def_property_range(prop, 1, 64);
RNA_def_property_ui_text(prop, (area)? "Shadow Ray Samples": "Shadow Ray Samples X","Amount of samples taken extra (samples x samples).");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
if(area) {
prop= RNA_def_property(srna, "shadow_ray_samples_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ray_sampy");
- RNA_def_property_range(prop, 1, 16);
+ RNA_def_property_range(prop, 1, 64);
RNA_def_property_ui_text(prop, "Shadow Ray Samples Y", "Amount of samples taken extra (samples x samples).");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
}
@@ -428,7 +429,7 @@ static void rna_def_lamp_shadow(StructRNA *srna, int spot, int area)
prop= RNA_def_property(srna, "shadow_soft_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "soft");
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ RNA_def_property_ui_range(prop, 0, 100, 0.1, 3);
RNA_def_property_ui_text(prop, "Shadow Soft Size", "Light size for ray shadow sampling (Raytraced shadows).");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
@@ -489,19 +490,19 @@ static void rna_def_area_lamp(BlenderRNA *brna)
prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "area_size");
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ RNA_def_property_ui_range(prop, 0, 100, 0.1, 3);
RNA_def_property_ui_text(prop, "Size", "Size of the area of the area Lamp, X direction size for Rectangle shapes.");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING_DRAW, NULL);
prop= RNA_def_property(srna, "size_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "area_sizey");
- RNA_def_property_range(prop, 0.0f, 100.0f);
+ RNA_def_property_ui_range(prop, 0, 100, 0.1, 3);
RNA_def_property_ui_text(prop, "Size Y", "Size of the area of the area Lamp in the Y direction for Rectangle shapes.");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING_DRAW, NULL);
prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "k");
- RNA_def_property_range(prop, 0.001f, 2.0f);
+ RNA_def_property_ui_range(prop, 0.001, 2.0, 0.1, 3);
RNA_def_property_ui_text(prop, "Gamma", "Light gamma correction value.");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING_DRAW, NULL);
}
@@ -548,7 +549,7 @@ static void rna_def_spot_lamp(BlenderRNA *brna)
prop= RNA_def_property(srna, "halo_intensity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "haint");
- RNA_def_property_range(prop, 0.0f, 5.0f);
+ RNA_def_property_ui_range(prop, 0, 5.0, 0.1, 3);
RNA_def_property_ui_text(prop, "Halo Intensity", "Brightness of the spotlight's halo cone (Buffer Shadows).");
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
@@ -650,8 +651,10 @@ static void rna_def_sun_lamp(BlenderRNA *brna)
/* sky */
prop= RNA_def_property(srna, "sky", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "LampSkySettings");
- RNA_def_property_pointer_funcs(prop, "rna_Lamp_sky_settings_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Lamp_sky_settings_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Sky Settings", "Sky related settings for sun lamps.");
+
+ rna_def_lamp_sky_settings(brna);
}
static void rna_def_hemi_lamp(BlenderRNA *brna)
@@ -671,7 +674,6 @@ void RNA_def_lamp(BlenderRNA *brna)
rna_def_spot_lamp(brna);
rna_def_sun_lamp(brna);
rna_def_hemi_lamp(brna);
- rna_def_lamp_sky_settings(brna);
rna_def_lamp_mtex(brna);
}
diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c
index ca77d3b519f..26c4ebb7b23 100644
--- a/source/blender/makesrna/intern/rna_lattice.c
+++ b/source/blender/makesrna/intern/rna_lattice.c
@@ -117,6 +117,7 @@ static void rna_def_lattice(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Lattice", "ID");
RNA_def_struct_ui_text(srna, "Lattice", "Lattice datablock defining a grid for deforming other objects.");
+ RNA_def_struct_ui_icon(srna, ICON_LATTICE_DATA);
prop= RNA_def_property(srna, "points_u", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pntsu");
diff --git a/source/blender/makesrna/intern/rna_main.c b/source/blender/makesrna/intern/rna_main.c
index 03ce385be32..fdd0349b25e 100644
--- a/source/blender/makesrna/intern/rna_main.c
+++ b/source/blender/makesrna/intern/rna_main.c
@@ -28,6 +28,8 @@
#include "RNA_define.h"
#include "RNA_types.h"
+#include "rna_internal.h"
+
#ifdef RNA_RUNTIME
#include "BKE_main.h"
@@ -248,6 +250,7 @@ void RNA_def_main(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Main", NULL);
RNA_def_struct_ui_text(srna, "Main", "Main data structure representing a .blend file and all its datablocks.");
+ RNA_def_struct_ui_icon(srna, ICON_BLENDER);
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_maxlength(prop, 240);
diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c
index 101cd2a801f..7e66c9fb5e5 100644
--- a/source/blender/makesrna/intern/rna_material.c
+++ b/source/blender/makesrna/intern/rna_material.c
@@ -140,6 +140,27 @@ static void rna_def_material_mtex(BlenderRNA *brna)
{MTEX_TUBE, "TUBE", "Tube", "Maps with Z as central axis."},
{MTEX_SPHERE, "SPHERE", "Sphere", "Maps with Z as central axis."},
{0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem prop_x_mapping_items[] = {
+ {0, "NONE", "None", ""},
+ {1, "X", "X", ""},
+ {2, "Y", "Y", ""},
+ {3, "Z", "Z", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem prop_y_mapping_items[] = {
+ {0, "NONE", "None", ""},
+ {1, "X", "X", ""},
+ {2, "Y", "Y", ""},
+ {3, "Z", "Z", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem prop_z_mapping_items[] = {
+ {0, "NONE", "None", ""},
+ {1, "X", "X", ""},
+ {2, "Y", "Y", ""},
+ {3, "Z", "Z", ""},
+ {0, NULL, NULL, NULL}};
static EnumPropertyItem prop_normal_map_space_items[] = {
{MTEX_NSPACE_CAMERA, "CAMERA", "Camera", ""},
@@ -160,6 +181,7 @@ static void rna_def_material_mtex(BlenderRNA *brna)
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "object");
RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Object", "Object to use for mapping with Object texture coordinates.");
prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
@@ -170,9 +192,76 @@ static void rna_def_material_mtex(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_DUPLI_MAPTO);
RNA_def_property_ui_text(prop, "From Dupli", "Dupli's instanced from verts, faces or particles, inherit texture coordinate from their parent (only for UV and Orco texture coordinates).");
- /* XXX: MTex.mapto and MTex.maptoneg */
+ prop= RNA_def_property(srna, "map_color", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COL);
+ RNA_def_property_ui_text(prop, "Color", "Causes the texture to affect basic color of the material");
+
+ prop= RNA_def_property(srna, "map_normal", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_NORM);
+ RNA_def_property_ui_text(prop, "Normal", "Causes the texture to affect the rendered normal");
+
+ prop= RNA_def_property(srna, "map_colorspec", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COLSPEC);
+ RNA_def_property_ui_text(prop, "Specularity Color", "Causes the texture to affect the specularity color");
+
+ prop= RNA_def_property(srna, "map_mirror", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COLMIR);
+ RNA_def_property_ui_text(prop, "Mirror", "Causes the texture to affect the mirror color");
+
+ prop= RNA_def_property(srna, "map_reflection", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_REF);
+ RNA_def_property_ui_text(prop, "Reflection", "Causes the texture to affect the value of the materials reflectivity");
+
+ prop= RNA_def_property(srna, "map_specularity", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_SPEC);
+ RNA_def_property_ui_text(prop, "Specularity", "Causes the texture to affect the value of specularity");
+
+ prop= RNA_def_property(srna, "map_ambient", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_AMB);
+ RNA_def_property_ui_text(prop, "Ambient", "Causes the texture to affect the value of ambient");
+
+ prop= RNA_def_property(srna, "map_hardness", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_HAR);
+ RNA_def_property_ui_text(prop, "Hardness", "Causes the texture to affect the hardness value");
+
+ prop= RNA_def_property(srna, "map_raymir", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_RAYMIRR);
+ RNA_def_property_ui_text(prop, "Ray-Mirror", "Causes the texture to affect the ray-mirror value");
+
+ prop= RNA_def_property(srna, "map_alpha", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_ALPHA);
+ RNA_def_property_ui_text(prop, "Alpha", "Causes the texture to affect the alpha value");
+
+ prop= RNA_def_property(srna, "map_emit", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_EMIT);
+ RNA_def_property_ui_text(prop, "Emit", "Causes the texture to affect the emit value");
+
+ prop= RNA_def_property(srna, "map_translucency", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_TRANSLU);
+ RNA_def_property_ui_text(prop, "Translucency", "Causes the texture to affect the translucency value");
+
+ prop= RNA_def_property(srna, "map_displacement", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_DISPLACE);
+ RNA_def_property_ui_text(prop, "Displacement", "Let the texture displace the surface");
+
+ prop= RNA_def_property(srna, "map_warp", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_WARP);
+ RNA_def_property_ui_text(prop, "Warp", "Let the texture warp texture coordinates of next channels");
- /* XXX: MTex.proj[xyz] */
+ prop= RNA_def_property(srna, "x_mapping", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "projx");
+ RNA_def_property_enum_items(prop, prop_x_mapping_items);
+ RNA_def_property_ui_text(prop, "X Mapping", "");
+
+ prop= RNA_def_property(srna, "y_mapping", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "projy");
+ RNA_def_property_enum_items(prop, prop_y_mapping_items);
+ RNA_def_property_ui_text(prop, "Y Mapping", "");
+
+ prop= RNA_def_property(srna, "z_mapping", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "projz");
+ RNA_def_property_enum_items(prop, prop_z_mapping_items);
+ RNA_def_property_ui_text(prop, "Z Mapping", "");
prop= RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_mapping_items);
@@ -587,49 +676,59 @@ static void rna_def_material_sss(BlenderRNA *brna)
RNA_def_property_range(prop, 0.001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.001, 10000, 1, 3);
RNA_def_property_ui_text(prop, "Radius", "Mean red/green/blue scattering path length.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "sss_col");
RNA_def_property_ui_text(prop, "Color", "Scattering color.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "error_tolerance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_error");
RNA_def_property_ui_range(prop, 0.0001, 10, 1, 3);
RNA_def_property_ui_text(prop, "Error Tolerance", "Error tolerance (low values are slower and higher quality).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_scale");
RNA_def_property_ui_range(prop, 0.001, 1000, 1, 3);
RNA_def_property_ui_text(prop, "Scale", "Object scale factor.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "ior", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_ior");
RNA_def_property_ui_range(prop, 0.1, 2, 1, 3);
RNA_def_property_ui_text(prop, "IOR", "Index of refraction (higher values are denser).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "color_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_colfac");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Color Factor", "Blend factor for SSS colors.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "texture_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_texfac");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Texture Factor", "Texture scatting blend factor.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "front", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_front");
RNA_def_property_range(prop, 0, 2);
RNA_def_property_ui_text(prop, "Front", "Front scattering weight.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "back", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_back");
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Back", "Back scattering weight.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "sss_flag", MA_DIFF_SSS);
RNA_def_property_ui_text(prop, "Enabled", "Enable diffuse subsurface scatting effects in a material.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
}
void rna_def_material_specularity(StructRNA *srna)
@@ -730,18 +829,20 @@ void RNA_def_material(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Material", "ID");
RNA_def_struct_ui_text(srna, "Material", "Material datablock to defined the appearance of geometric objects for rendering.");
+ RNA_def_struct_ui_icon(srna, ICON_MATERIAL_DATA);
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "material_type");
RNA_def_property_enum_items(prop, prop_type_items);
RNA_def_property_ui_text(prop, "Type", "Material type defining how the object is rendered.");
- RNA_def_property_enum_funcs(prop, NULL, "rna_Material_type_set");
+ RNA_def_property_enum_funcs(prop, NULL, "rna_Material_type_set", NULL);
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING_DRAW, NULL);
prop= RNA_def_property(srna, "ambient", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "amb");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Ambient", "Amount of global ambient color the material receives.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "emit", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0, 2);
@@ -750,6 +851,7 @@ void RNA_def_material(BlenderRNA *brna)
prop= RNA_def_property(srna, "translucency", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Translucency", "Amount of diffuse shading on the back side.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "cubic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_CUBIC);
@@ -773,11 +875,14 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "shad_alpha");
RNA_def_property_range(prop, 0.001, 1);
RNA_def_property_ui_text(prop, "Shadow Casting Alpha", "Shadow casting alpha, only in use for Irregular Shadowbuffer.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "light_group", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "group");
RNA_def_property_struct_type(prop, "Group");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Light Group", "Limit lighting to lamps in this Group.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
/* flags */
@@ -884,27 +989,27 @@ void RNA_def_material(BlenderRNA *brna)
/* nested structs */
prop= RNA_def_property(srna, "raytrace_mirror", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MaterialRaytraceMirror");
- RNA_def_property_pointer_funcs(prop, "rna_Material_mirror_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Material_mirror_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Raytrace Mirror", "Raytraced reflection settings for the material.");
prop= RNA_def_property(srna, "raytrace_transparency", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MaterialRaytraceTransparency");
- RNA_def_property_pointer_funcs(prop, "rna_Material_transp_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Material_transp_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Raytrace Transparency", "Raytraced reflection settings for the material.");
prop= RNA_def_property(srna, "halo", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MaterialHalo");
- RNA_def_property_pointer_funcs(prop, "rna_Material_halo_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Material_halo_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Halo", "Halo settings for the material.");
prop= RNA_def_property(srna, "subsurface_scattering", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MaterialSubsurfaceScattering");
- RNA_def_property_pointer_funcs(prop, "rna_Material_sss_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Material_sss_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Subsurface Scattering", "Subsurface scattering settings for the material.");
prop= RNA_def_property(srna, "strand", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MaterialStrand");
- RNA_def_property_pointer_funcs(prop, "rna_Material_strand_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Material_strand_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Strand", "Strand settings for the material.");
/* nodetree */
@@ -949,7 +1054,7 @@ void rna_def_mtex_common(StructRNA *srna, const char *begin, const char *activeg
prop= RNA_def_property(srna, "active_texture", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, structname);
- RNA_def_property_pointer_funcs(prop, activeget, NULL);
+ RNA_def_property_pointer_funcs(prop, activeget, NULL, NULL);
RNA_def_property_ui_text(prop, "Active Texture", "Active texture slot being displayed.");
prop= RNA_def_property(srna, "active_texture_index", PROP_INT, PROP_UNSIGNED);
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index 3f862199ea0..e58b3c51fec 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -467,6 +467,23 @@ static int rna_Mesh_string_layers_length(PointerRNA *ptr)
return rna_CustomDataLayer_length(ptr, CD_PROP_STR);
}
+static void rna_TextureFace_image_set(PointerRNA *ptr, PointerRNA value)
+{
+ MTFace *tf= (MTFace*)ptr->data;
+ ID *id= value.data;
+
+ if(id) {
+ /* special exception here, individual faces don't count
+ * as reference, but we do ensure the refcount is not zero */
+ if(id->us == 0)
+ id_us_plus(id);
+ else
+ id_lib_extern(id);
+ }
+
+ tf->tpage= (struct Image*)id;
+}
+
/* path construction */
static char *rna_VertexGroupElement_path(PointerRNA *ptr)
@@ -580,9 +597,10 @@ static void rna_def_mvert_group(BlenderRNA *brna)
PropertyRNA *prop;
srna= RNA_def_struct(brna, "VertexGroupElement", NULL);
- RNA_def_struct_ui_text(srna, "Vertex Group Element", "Weight value of a vertex in a vertex group.");
RNA_def_struct_sdna(srna, "MDeformWeight");
RNA_def_struct_path_func(srna, "rna_VertexGroupElement_path");
+ RNA_def_struct_ui_text(srna, "Vertex Group Element", "Weight value of a vertex in a vertex group.");
+ RNA_def_struct_ui_icon(srna, ICON_GROUP_VERTEX);
/* we can't point to actual group, it is in the object and so
* there is no unique group to point to, hence the index */
@@ -605,6 +623,7 @@ static void rna_def_mvert(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "MVert");
RNA_def_struct_ui_text(srna, "Mesh Vertex", "Vertex in a Mesh datablock.");
RNA_def_struct_path_func(srna, "rna_MeshVertex_path");
+ RNA_def_struct_ui_icon(srna, ICON_VERTEXSEL);
prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_ui_text(prop, "Location", "");
@@ -641,6 +660,7 @@ static void rna_def_medge(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "MEdge");
RNA_def_struct_ui_text(srna, "Mesh Edge", "Edge in a Mesh datablock.");
RNA_def_struct_path_func(srna, "rna_MeshEdge_path");
+ RNA_def_struct_ui_icon(srna, ICON_EDGESEL);
prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "v1");
@@ -682,6 +702,7 @@ static void rna_def_mface(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "MFace");
RNA_def_struct_ui_text(srna, "Mesh Face", "Face in a Mesh datablock.");
RNA_def_struct_path_func(srna, "rna_MeshFace_path");
+ RNA_def_struct_ui_icon(srna, ICON_FACESEL);
prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "v1");
@@ -746,10 +767,13 @@ static void rna_def_mtface(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "MTFace");
RNA_def_struct_ui_text(srna, "Mesh Texture Face", "UV mapping, texturing and game engine data for a face.");
RNA_def_struct_path_func(srna, "rna_MeshTextureFace_path");
+ RNA_def_struct_ui_icon(srna, ICON_FACESEL_HLT);
- /* prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tpage");
- RNA_def_property_ui_text(prop, "Image", ""); */
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_TextureFace_image_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Image", "");
prop= RNA_def_property(srna, "tex", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TEX);
@@ -1023,6 +1047,7 @@ static void rna_def_mesh(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Mesh", "ID");
RNA_def_struct_ui_text(srna, "Mesh", "Mesh datablock to define geometric surfaces.");
+ RNA_def_struct_ui_icon(srna, ICON_MESH_DATA);
prop= RNA_def_property(srna, "verts", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "mvert", "totvert");
@@ -1093,6 +1118,7 @@ static void rna_def_mesh(BlenderRNA *brna)
prop= RNA_def_property(srna, "texco_mesh", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "texcomesh");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Texture Space Mesh", "Derive texture coordinates from another mesh");
prop= RNA_def_property(srna, "shape_keys", PROP_POINTER, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c
index 737bb52a466..472e776f500 100644
--- a/source/blender/makesrna/intern/rna_meta.c
+++ b/source/blender/makesrna/intern/rna_meta.c
@@ -55,8 +55,9 @@ void rna_def_metaelement(BlenderRNA *brna)
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "MetaElement", NULL);
- RNA_def_struct_ui_text(srna, "Meta Element", "Blobby element in a MetaBall datablock.");
RNA_def_struct_sdna(srna, "MetaElem");
+ RNA_def_struct_ui_text(srna, "Meta Element", "Blobby element in a MetaBall datablock.");
+ RNA_def_struct_ui_icon(srna, ICON_OUTLINER_DATA_META);
/* enums */
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
@@ -112,6 +113,7 @@ void rna_def_metaball(BlenderRNA *brna)
srna= RNA_def_struct(brna, "MetaBall", "ID");
RNA_def_struct_ui_text(srna, "MetaBall", "Metaball datablock to defined blobby surfaces.");
+ RNA_def_struct_ui_icon(srna, ICON_META_DATA);
prop= RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "elems", NULL);
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 3263c6d4bfc..be1e6a317a2 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -41,35 +41,35 @@
#include "WM_types.h"
EnumPropertyItem modifier_type_items[] ={
- {eModifierType_Subsurf, "SUBSURF", "Subsurf", ""},
- {eModifierType_Lattice, "LATTICE", "Lattice", ""},
- {eModifierType_Curve, "CURVE", "Curve", ""},
- {eModifierType_Build, "BUILD", "Build", ""},
- {eModifierType_Mirror, "MIRROR", "Mirror", ""},
- {eModifierType_Decimate, "DECIMATE", "Decimate", ""},
- {eModifierType_Wave, "WAVE", "Wave", ""},
{eModifierType_Armature, "ARMATURE", "Armature", ""},
- {eModifierType_Hook, "HOOK", "Hook", ""},
- {eModifierType_Softbody, "SOFTBODY", "Softbody", ""},
- {eModifierType_Boolean, "BOOLEAN", "Boolean", ""},
{eModifierType_Array, "ARRAY", "Array", ""},
- {eModifierType_EdgeSplit, "EDGE_SPLIT", "Edge Split", ""},
- {eModifierType_Displace, "DISPLACE", "Displace", ""},
- {eModifierType_UVProject, "UV_PROJECT", "UV Project", ""},
- {eModifierType_Smooth, "SMOOTH", "Smooth", ""},
+ {eModifierType_Bevel, "BEVEL", "Bevel", ""},
+ {eModifierType_Boolean, "BOOLEAN", "Boolean", ""},
+ {eModifierType_Build, "BUILD", "Build", ""},
{eModifierType_Cast, "CAST", "Cast", ""},
- {eModifierType_MeshDeform, "MESH_DEFORM", "Mesh Deform", ""},
- {eModifierType_ParticleSystem, "PARTICLE_SYSTEM", "Particle System", ""},
- {eModifierType_ParticleInstance, "PARTICLE_INSTANCE", "Particle Instance", ""},
- {eModifierType_Explode, "EXPLODE", "Explode", ""},
{eModifierType_Cloth, "CLOTH", "Cloth", ""},
{eModifierType_Collision, "COLLISION", "Collision", ""},
- {eModifierType_Bevel, "BEVEL", "Bevel", ""},
- {eModifierType_Shrinkwrap, "SHRINKWRAP", "Shrinkwrap", ""},
+ {eModifierType_Curve, "CURVE", "Curve", ""},
+ {eModifierType_Decimate, "DECIMATE", "Decimate", ""},
+ {eModifierType_Displace, "DISPLACE", "Displace", ""},
+ {eModifierType_EdgeSplit, "EDGE_SPLIT", "Edge Split", ""},
+ {eModifierType_Explode, "EXPLODE", "Explode", ""},
{eModifierType_Fluidsim, "FLUID_SIMULATION", "Fluid Simulation", ""},
+ {eModifierType_Hook, "HOOK", "Hook", ""},
+ {eModifierType_Lattice, "LATTICE", "Lattice", ""},
{eModifierType_Mask, "MASK", "Mask", ""},
- {eModifierType_SimpleDeform, "SIMPLE_DEFORM", "Simple Deform", ""},
+ {eModifierType_MeshDeform, "MESH_DEFORM", "Mesh Deform", ""},
+ {eModifierType_Mirror, "MIRROR", "Mirror", ""},
{eModifierType_Multires, "MULTIRES", "Multires", ""},
+ {eModifierType_ParticleInstance, "PARTICLE_INSTANCE", "Particle Instance", ""},
+ {eModifierType_ParticleSystem, "PARTICLE_SYSTEM", "Particle System", ""},
+ {eModifierType_Shrinkwrap, "SHRINKWRAP", "Shrinkwrap", ""},
+ {eModifierType_SimpleDeform, "SIMPLE_DEFORM", "Simple Deform", ""},
+ {eModifierType_Smooth, "SMOOTH", "Smooth", ""},
+ {eModifierType_Softbody, "SOFTBODY", "Softbody", ""},
+ {eModifierType_Subsurf, "SUBSURF", "Subsurf", ""},
+ {eModifierType_UVProject, "UV_PROJECT", "UV Project", ""},
+ {eModifierType_Wave, "WAVE", "Wave", ""},
{0, NULL, NULL, NULL}};
@@ -77,6 +77,7 @@ EnumPropertyItem modifier_type_items[] ={
#include "BKE_context.h"
#include "BKE_depsgraph.h"
+#include "BKE_library.h"
static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
@@ -152,11 +153,22 @@ static StructRNA* rna_Modifier_refine(struct PointerRNA *ptr)
}
}
+static char *rna_Modifier_path(PointerRNA *ptr)
+{
+ return BLI_sprintfN("modifiers[%s]", ((ModifierData*)ptr->data)->name); // XXX not unique
+}
+
static void rna_Modifier_update(bContext *C, PointerRNA *ptr)
{
DAG_object_flush_update(CTX_data_scene(C), ptr->id.data, OB_RECALC_DATA);
}
+static void rna_Modifier_dependency_update(bContext *C, PointerRNA *ptr)
+{
+ rna_Modifier_update(C, ptr);
+ DAG_scene_sort(CTX_data_scene(C));
+}
+
static void rna_ExplodeModifier_vgroup_get(PointerRNA *ptr, char *value)
{
ExplodeModifierData *emd= (ExplodeModifierData*)ptr->data;
@@ -273,6 +285,69 @@ static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max
*max = mmd->totlvl;
}
+static void modifier_object_set(Object **ob_p, int type, PointerRNA value)
+{
+ Object *ob= value.data;
+
+ if(!ob || ob->type == type)
+ *ob_p= ob;
+}
+
+static void rna_LatticeModifier_object_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((LatticeModifierData*)ptr->data)->object, OB_LATTICE, value);
+}
+
+static void rna_BooleanModifier_object_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((BooleanModifierData*)ptr->data)->object, OB_MESH, value);
+}
+
+static void rna_CurveModifier_object_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((CurveModifierData*)ptr->data)->object, OB_CURVE, value);
+}
+
+static void rna_ArmatureModifier_object_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((ArmatureModifierData*)ptr->data)->object, OB_ARMATURE, value);
+}
+
+static void rna_MaskModifier_armature_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((MaskModifierData*)ptr->data)->ob_arm, OB_ARMATURE, value);
+}
+
+static void rna_ShrinkwrapModifier_auxiliary_target_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((ShrinkwrapModifierData*)ptr->data)->auxTarget, OB_MESH, value);
+}
+
+static void rna_ShrinkwrapModifier_target_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((ShrinkwrapModifierData*)ptr->data)->target, OB_MESH, value);
+}
+
+static void rna_MeshDeformModifier_object_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((MeshDeformModifierData*)ptr->data)->object, OB_MESH, value);
+}
+
+static void rna_ArrayModifier_end_cap_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((ArrayModifierData*)ptr->data)->end_cap, OB_MESH, value);
+}
+
+static void rna_ArrayModifier_start_cap_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((ArrayModifierData*)ptr->data)->start_cap, OB_MESH, value);
+}
+
+static void rna_ArrayModifier_curve_set(PointerRNA *ptr, PointerRNA value)
+{
+ modifier_object_set(&((ArrayModifierData*)ptr->data)->curve_ob, OB_CURVE, value);
+}
+
#else
static void rna_def_property_subdivision_common(StructRNA *srna, const char type[])
@@ -286,6 +361,7 @@ static void rna_def_property_subdivision_common(StructRNA *srna, const char type
RNA_def_property_enum_sdna(prop, NULL, type);
RNA_def_property_enum_items(prop, prop_subdivision_type_items);
RNA_def_property_ui_text(prop, "Subdivision Type", "Selects type of subdivision algorithm.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
static void rna_def_modifier_subsurf(BlenderRNA *brna)
@@ -296,6 +372,7 @@ static void rna_def_modifier_subsurf(BlenderRNA *brna)
srna= RNA_def_struct(brna, "SubsurfModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Subsurf Modifier", "Subdivision surface modifier.");
RNA_def_struct_sdna(srna, "SubsurfModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_SUBSURF);
rna_def_property_subdivision_common(srna, "subdivType");
@@ -331,12 +408,13 @@ static void rna_def_modifier_multires(BlenderRNA *brna)
srna= RNA_def_struct(brna, "MultiresModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Multires Modifier", "Multiresolution mesh modifier.");
RNA_def_struct_sdna(srna, "MultiresModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_MULTIRES);
rna_def_property_subdivision_common(srna, "simple");
- prop= RNA_def_property(srna, "levels", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "lvl");
- RNA_def_property_ui_text(prop, "Levels", "");
+ RNA_def_property_ui_text(prop, "Level", "");
RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
@@ -349,12 +427,13 @@ static void rna_def_modifier_lattice(BlenderRNA *brna)
srna= RNA_def_struct(brna, "LatticeModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Lattice Modifier", "Lattice deformation modifier.");
RNA_def_struct_sdna(srna, "LatticeModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_LATTICE);
- prop= RNA_def_property(srna, "lattice", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "object");
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_ui_text(prop, "Lattice", "Lattice object to deform with.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with.");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_LatticeModifier_object_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "name");
@@ -380,12 +459,13 @@ static void rna_def_modifier_curve(BlenderRNA *brna)
srna= RNA_def_struct(brna, "CurveModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Curve Modifier", "Curve deformation modifier.");
RNA_def_struct_sdna(srna, "CurveModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_CURVE);
- prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "object");
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_ui_text(prop, "Curve", "Curve object to deform with.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Object", "Curve object to deform with.");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_CurveModifier_object_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "name");
@@ -408,6 +488,7 @@ static void rna_def_modifier_build(BlenderRNA *brna)
srna= RNA_def_struct(brna, "BuildModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Build Modifier", "Build effect modifier.");
RNA_def_struct_sdna(srna, "BuildModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD);
prop= RNA_def_property(srna, "start", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 1, MAXFRAMEF);
@@ -437,6 +518,7 @@ static void rna_def_modifier_mirror(BlenderRNA *brna)
srna= RNA_def_struct(brna, "MirrorModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Mirror Modifier", "Mirroring modifier.");
RNA_def_struct_sdna(srna, "MirrorModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_MIRROR);
prop= RNA_def_property(srna, "x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_AXIS_X);
@@ -455,7 +537,7 @@ static void rna_def_modifier_mirror(BlenderRNA *brna)
prop= RNA_def_property(srna, "clip", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_CLIPPING);
- RNA_def_property_ui_text(prop, "clip", "Prevents vertices from going through the mirror during transform.");
+ RNA_def_property_ui_text(prop, "Clip", "Prevents vertices from going through the mirror during transform.");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "mirror_vertex_groups", PROP_BOOLEAN, PROP_NONE);
@@ -482,9 +564,9 @@ static void rna_def_modifier_mirror(BlenderRNA *brna)
prop= RNA_def_property(srna, "mirror_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "mirror_ob");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Mirror Object", "Object to use as mirror.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
}
static void rna_def_modifier_decimate(BlenderRNA *brna)
@@ -495,6 +577,7 @@ static void rna_def_modifier_decimate(BlenderRNA *brna)
srna= RNA_def_struct(brna, "DecimateModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Decimate Modifier", "Decimation modifier.");
RNA_def_struct_sdna(srna, "DecimateModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_DECIM);
prop= RNA_def_property(srna, "ratio", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "percent");
@@ -523,6 +606,7 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
srna= RNA_def_struct(brna, "WaveModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Wave Modifier", "Wave effect modifier.");
RNA_def_struct_sdna(srna, "WaveModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_WAVE);
prop= RNA_def_property(srna, "x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_X);
@@ -599,9 +683,9 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
prop= RNA_def_property(srna, "start_position_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "objectcenter");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Start Position Object", "");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "defgrp_name");
@@ -610,8 +694,8 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Texture");
RNA_def_property_ui_text(prop, "Texture", "Texture for modulating the wave.");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
@@ -628,9 +712,9 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
prop= RNA_def_property(srna, "texture_coordinates_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "map_object");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Texture Coordinates Object", "");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "speed", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, FLT_MIN, FLT_MAX);
@@ -666,12 +750,13 @@ static void rna_def_modifier_armature(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ArmatureModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Armature Modifier", "Armature deformation modifier.");
RNA_def_struct_sdna(srna, "ArmatureModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_ARMATURE);
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "object");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Object", "Armature object to deform with.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_ArmatureModifier_object_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "defgrp_name");
@@ -718,6 +803,7 @@ static void rna_def_modifier_hook(BlenderRNA *brna)
srna= RNA_def_struct(brna, "HookModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Hook Modifier", "Hook modifier to modify the location of vertices.");
RNA_def_struct_sdna(srna, "HookModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_HOOK);
prop= RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0, FLT_MAX);
@@ -731,9 +817,9 @@ static void rna_def_modifier_hook(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Object", "Parent Object for hook, also recalculates and clears offset");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "name");
@@ -749,6 +835,7 @@ static void rna_def_modifier_softbody(BlenderRNA *brna)
srna= RNA_def_struct(brna, "SoftbodyModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Softbody Modifier", "Softbody simulation modifier.");
RNA_def_struct_sdna(srna, "SoftbodyModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_SOFT);
}
static void rna_def_modifier_boolean(BlenderRNA *brna)
@@ -765,11 +852,13 @@ static void rna_def_modifier_boolean(BlenderRNA *brna)
srna= RNA_def_struct(brna, "BooleanModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Boolean Modifier", "Boolean operations modifier.");
RNA_def_struct_sdna(srna, "BooleanModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_BOOLEAN);
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Object", "Mesh object to use for boolean operation.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_BooleanModifier_object_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "operation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_operation_items);
@@ -791,6 +880,7 @@ static void rna_def_modifier_array(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ArrayModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Array Modifier", "Array duplication modifier.");
RNA_def_struct_sdna(srna, "ArrayModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_ARRAY);
/* Length parameters */
prop= RNA_def_property(srna, "fit_type", PROP_ENUM, PROP_NONE);
@@ -812,9 +902,10 @@ static void rna_def_modifier_array(BlenderRNA *brna)
prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "curve_ob");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Curve", "Curve object to fit array length to.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_ArrayModifier_curve_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
/* Offset parameters */
prop= RNA_def_property(srna, "constant_offset", PROP_BOOLEAN, PROP_NONE);
@@ -863,20 +954,22 @@ static void rna_def_modifier_array(BlenderRNA *brna)
prop= RNA_def_property(srna, "offset_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "offset_ob");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Offset Object", "");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
/* Caps */
prop= RNA_def_property(srna, "start_cap", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Start Cap", "Mesh object to use as a start cap.");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_ArrayModifier_start_cap_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "end_cap", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "End Cap", "Mesh object to use as an end cap.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_ArrayModifier_end_cap_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
}
static void rna_def_modifier_edgesplit(BlenderRNA *brna)
@@ -887,6 +980,7 @@ static void rna_def_modifier_edgesplit(BlenderRNA *brna)
srna= RNA_def_struct(brna, "EdgeSplitModifier", "Modifier");
RNA_def_struct_ui_text(srna, "EdgeSplit Modifier", "Edge splitting modifier to create sharp edges.");
RNA_def_struct_sdna(srna, "EdgeSplitModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_EDGESPLIT);
prop= RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0, 180);
@@ -928,6 +1022,7 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
srna= RNA_def_struct(brna, "DisplaceModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Displace Modifier", "Displacement modifier.");
RNA_def_struct_sdna(srna, "DisplaceModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_DISPLACE);
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "defgrp_name");
@@ -936,8 +1031,8 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Texture");
RNA_def_property_ui_text(prop, "Texture", "");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "midlevel", PROP_FLOAT, PROP_NONE);
@@ -971,9 +1066,9 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
prop= RNA_def_property(srna, "texture_coordinate_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "map_object");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Texture Coordinate Object", "");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
}
static void rna_def_modifier_uvproject(BlenderRNA *brna)
@@ -984,6 +1079,7 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna)
srna= RNA_def_struct(brna, "UVProjectModifier", "Modifier");
RNA_def_struct_ui_text(srna, "UVProject Modifier", "UV projection modifier to sets UVs from a projector.");
RNA_def_struct_sdna(srna, "UVProjectModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_UVPROJECT);
prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "uvlayer_name");
@@ -997,8 +1093,8 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Projectors", "");
prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Image");
RNA_def_property_ui_text(prop, "Image", "");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "horizontal_aspect_ratio", PROP_FLOAT, PROP_NONE);
@@ -1029,6 +1125,7 @@ static void rna_def_modifier_smooth(BlenderRNA *brna)
srna= RNA_def_struct(brna, "SmoothModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Smooth Modifier", "Smoothing effect modifier.");
RNA_def_struct_sdna(srna, "SmoothModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_SMOOTH);
prop= RNA_def_property(srna, "x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SMOOTH_X);
@@ -1047,7 +1144,7 @@ static void rna_def_modifier_smooth(BlenderRNA *brna)
prop= RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fac");
- RNA_def_property_range(prop, FLT_MIN, FLT_MAX);
+ RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -10, 10, 0.5, 2);
RNA_def_property_ui_text(prop, "Factor", "");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
@@ -1078,6 +1175,7 @@ static void rna_def_modifier_cast(BlenderRNA *brna)
srna= RNA_def_struct(brna, "CastModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Cast Modifier", "Cast modifier to cast to other shapes.");
RNA_def_struct_sdna(srna, "CastModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_CAST);
prop= RNA_def_property(srna, "cast_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "type");
@@ -1102,7 +1200,7 @@ static void rna_def_modifier_cast(BlenderRNA *brna)
prop= RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fac");
- RNA_def_property_range(prop, FLT_MIN, FLT_MAX);
+ RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -10, 10, 5, 2);
RNA_def_property_ui_text(prop, "Factor", "");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
@@ -1134,12 +1232,13 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
srna= RNA_def_struct(brna, "MeshDeformModifier", "Modifier");
RNA_def_struct_ui_text(srna, "MeshDeform Modifier", "Mesh deformation modifier to deform with other meshes.");
RNA_def_struct_sdna(srna, "MeshDeformModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_MESHDEFORM);
- prop= RNA_def_property(srna, "mesh", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "object");
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_ui_text(prop, "Mesh", "");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Object", "Mesh object to deform with.");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_MeshDeformModifier_object_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "invert", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MDEF_INVERT_VGROUP);
@@ -1159,7 +1258,7 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "dynamic", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MDEF_INVERT_VGROUP);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MDEF_DYNAMIC_BIND);
RNA_def_property_ui_text(prop, "Dynamic", "Recompute binding dynamically on top of other deformers (slower and more memory consuming.)");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
@@ -1172,6 +1271,7 @@ static void rna_def_modifier_particlesystem(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ParticleSystemModifier", "Modifier");
RNA_def_struct_ui_text(srna, "ParticleSystem Modifier", "Particle system simulation modifier.");
RNA_def_struct_sdna(srna, "ParticleSystemModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES);
}
static void rna_def_modifier_particleinstance(BlenderRNA *brna)
@@ -1182,12 +1282,13 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ParticleInstanceModifier", "Modifier");
RNA_def_struct_ui_text(srna, "ParticleInstance Modifier", "Particle system instancing modifier.");
RNA_def_struct_sdna(srna, "ParticleInstanceModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES);
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "ob");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Object", "Object that has the particle system.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "particle_system_number", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "psys");
@@ -1234,6 +1335,7 @@ static void rna_def_modifier_explode(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ExplodeModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Explode Modifier", "Explosion effect modifier based on a particle system.");
RNA_def_struct_sdna(srna, "ExplodeModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_EXPLODE);
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_ExplodeModifier_vgroup_get", "rna_ExplodeModifier_vgroup_length", "rna_ExplodeModifier_vgroup_set");
@@ -1256,12 +1358,12 @@ static void rna_def_modifier_explode(BlenderRNA *brna)
prop= RNA_def_property(srna, "alive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Alive);
- RNA_def_property_ui_text(prop, "alive", "Show mesh when particles are alive.");
+ RNA_def_property_ui_text(prop, "Alive", "Show mesh when particles are alive.");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "dead", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Dead);
- RNA_def_property_ui_text(prop, "dead", "Show mesh when particles are dead.");
+ RNA_def_property_ui_text(prop, "Dead", "Show mesh when particles are dead.");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
@@ -1273,29 +1375,35 @@ static void rna_def_modifier_cloth(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ClothModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Cloth Modifier", "Cloth simulation modifier.");
RNA_def_struct_sdna(srna, "ClothModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_CLOTH);
prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "sim_parms");
- RNA_def_property_struct_type(prop, "ClothSettings");
RNA_def_property_ui_text(prop, "Cloth Settings", "");
prop= RNA_def_property(srna, "collision_settings", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "coll_parms");
- RNA_def_property_struct_type(prop, "ClothCollisionSettings");
RNA_def_property_ui_text(prop, "Cloth Collision Settings", "");
prop= RNA_def_property(srna, "point_cache", PROP_POINTER, PROP_NEVER_NULL);
- RNA_def_property_struct_type(prop, "PointCache");
RNA_def_property_ui_text(prop, "Point Cache", "");
}
static void rna_def_modifier_collision(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
srna= RNA_def_struct(brna, "CollisionModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Collision Modifier", "Collision modifier defining modifier stack position used for collision.");
RNA_def_struct_sdna(srna, "CollisionModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_PHYSICS);
+
+ prop= RNA_def_property(srna, "absorption", PROP_INT, PROP_PERCENTAGE);
+ RNA_def_property_int_sdna(prop, NULL, "absorption");
+ RNA_def_property_ui_range(prop, 0, 100, 1, 2);
+ RNA_def_property_ui_text(prop, "Absorption %", "How much of effector force gets lost during collision with this object (in percent).");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
static void rna_def_modifier_bevel(BlenderRNA *brna)
@@ -1318,6 +1426,7 @@ static void rna_def_modifier_bevel(BlenderRNA *brna)
srna= RNA_def_struct(brna, "BevelModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Bevel Modifier", "Bevel modifier to make edges and vertices more rounded.");
RNA_def_struct_sdna(srna, "BevelModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_BEVEL);
prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "value");
@@ -1364,6 +1473,7 @@ static void rna_def_modifier_shrinkwrap(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ShrinkwrapModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Shrinkwrap Modifier", "Shrink wrapping modifier to shrink wrap and object to a target.");
RNA_def_struct_sdna(srna, "ShrinkwrapModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_SHRINKWRAP);
prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "shrinkType");
@@ -1372,15 +1482,17 @@ static void rna_def_modifier_shrinkwrap(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Target", "Mesh target to shrink to.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_ShrinkwrapModifier_target_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "auxiliary_target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "auxTarget");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Auxiliary Target", "Additional mesh target to shrink to.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_ShrinkwrapModifier_auxiliary_target_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgroup_name");
@@ -1451,10 +1563,10 @@ static void rna_def_modifier_fluidsim(BlenderRNA *brna)
srna= RNA_def_struct(brna, "FluidSimulationModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Fluid Simulation Modifier", "Fluid simulation modifier.");
RNA_def_struct_sdna(srna, "FluidsimModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_FLUIDSIM);
prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "fss");
- RNA_def_property_struct_type(prop, "FluidSettings");
RNA_def_property_ui_text(prop, "Settings", "Settings for how this object is used in the fluid simulation.");
}
@@ -1471,6 +1583,7 @@ static void rna_def_modifier_mask(BlenderRNA *brna)
srna= RNA_def_struct(brna, "MaskModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Mask Modifier", "Mask modifier to hide parts of the mesh.");
RNA_def_struct_sdna(srna, "MaskModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_MASK);
prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_mode_items);
@@ -1479,9 +1592,10 @@ static void rna_def_modifier_mask(BlenderRNA *brna)
prop= RNA_def_property(srna, "armature", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "ob_arm");
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Armature", "Armature to use as source of bones to mask.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_MaskModifier_armature_set", NULL);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgroup");
@@ -1510,6 +1624,7 @@ static void rna_def_modifier_simpledeform(BlenderRNA *brna)
srna= RNA_def_struct(brna, "SimpleDeformModifier", "Modifier");
RNA_def_struct_ui_text(srna, "SimpleDeform Modifier", "Simple deformation modifier to apply effects such as twisting and bending.");
RNA_def_struct_sdna(srna, "SimpleDeformModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_SIMPLEDEFORM);
prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_mode_items);
@@ -1523,9 +1638,9 @@ static void rna_def_modifier_simpledeform(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "origin", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Origin", "Origin of modifier space coordinates.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_dependency_update");
prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "originOpts", MOD_SIMPLEDEFORM_ORIGIN_LOCAL);
@@ -1533,7 +1648,7 @@ static void rna_def_modifier_simpledeform(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
- RNA_def_property_range(prop, FLT_MIN, FLT_MAX);
+ RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -10, 10, 0.5, 2);
RNA_def_property_ui_text(prop, "Factor", "");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
@@ -1566,6 +1681,7 @@ void RNA_def_modifier(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Modifier", NULL);
RNA_def_struct_ui_text(srna , "Modifier", "Modifier affecting the geometry data of an object.");
RNA_def_struct_refine_func(srna, "rna_Modifier_refine");
+ RNA_def_struct_path_func(srna, "rna_Modifier_path");
RNA_def_struct_sdna(srna, "ModifierData");
/* strings */
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index be3e429c1a2..8a90af69641 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -31,13 +31,17 @@
#include "rna_internal.h"
#include "DNA_node_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_texture_types.h"
+
#include "BKE_node.h"
+#include "BKE_image.h"
#ifdef RNA_RUNTIME
StructRNA *rna_Node_refine(struct PointerRNA *ptr)
{
- bNode *node= (bNode*)ptr->data;
+ bNode *node = (bNode*)ptr->data;
switch(node->type) {
@@ -118,7 +122,7 @@ static StructRNA* def_node(BlenderRNA *brna, int node_id)
StructRNA *srna;
NodeInfo *node = nodes + node_id;
- srna= RNA_def_struct(brna, node->struct_name, node->base_name);
+ srna = RNA_def_struct(brna, node->struct_name, node->base_name);
RNA_def_struct_ui_text(srna, node->ui_name, node->ui_desc);
RNA_def_struct_sdna(srna, "bNode");
@@ -164,12 +168,11 @@ static EnumPropertyItem* alloc_node_type_items(int category)
/* -- Common nodes ---------------------------------------------------------- */
-static void def_math(BlenderRNA *brna, int id)
+static void def_math(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- static EnumPropertyItem items[] ={
+ static EnumPropertyItem items[] = {
{ 0, "ADD", "Add", ""},
{ 1, "SUBTRACT", "Subtract", ""},
{ 2, "MULTIPLY", "Multiply", ""},
@@ -191,20 +194,17 @@ static void def_math(BlenderRNA *brna, int id)
{0, NULL, NULL, NULL}
};
- srna= def_node(brna, id);
-
- prop= RNA_def_property(srna, "operation", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "operation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, items);
RNA_def_property_ui_text(prop, "Operation", "");
}
-static void def_vector_math(BlenderRNA *brna, int id)
+static void def_vector_math(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- static EnumPropertyItem items[] ={
+ static EnumPropertyItem items[] = {
{0, "ADD", "Add", ""},
{1, "SUBTRACT", "Subtract", ""},
{2, "AVERAGE", "Average", ""},
@@ -215,60 +215,66 @@ static void def_vector_math(BlenderRNA *brna, int id)
{0, NULL, NULL, NULL}
};
- srna= def_node(brna, id);
-
- prop= RNA_def_property(srna, "operation", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "operation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, items);
RNA_def_property_ui_text(prop, "Operation", "");
}
-static void def_rgb_curve(BlenderRNA *brna, int id)
+static void def_rgb_curve(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- srna= def_node(brna, id);
-
- prop= RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
+ prop = RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "CurveMapping");
RNA_def_property_ui_text(prop, "Mapping", "");
}
-static void def_vector_curve(BlenderRNA *brna, int id)
+static void def_vector_curve(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- srna= def_node(brna, id);
-
- prop= RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
+ prop = RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "CurveMapping");
RNA_def_property_ui_text(prop, "Mapping", "");
}
-static void def_val_to_rgb(BlenderRNA *brna, int id)
+static void def_time(StructRNA *srna)
{
- StructRNA *srna;
-// PropertyRNA *prop;
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "storage");
+ RNA_def_property_struct_type(prop, "CurveMapping");
+ RNA_def_property_ui_text(prop, "Curve", "");
- srna= def_node(brna, id);
+ prop = RNA_def_property(srna, "start", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom1");
+ RNA_def_property_ui_text(prop, "Start Frame", "");
- /* TODO: uncomment when ColorBand is wrapped */
- /*prop= RNA_def_property(srna, "color_band", PROP_POINTER, PROP_NONE);
+ prop = RNA_def_property(srna, "end", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom2");
+ RNA_def_property_ui_text(prop, "End Frame", "");
+}
+
+static void def_val_to_rgb(StructRNA *srna)
+{
+ /*PropertyRNA *prop;*/
+
+ /* TODO: uncomment when ColorBand is wrapped *//*
+ prop = RNA_def_property(srna, "color_band", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "storage");
RNA_def_property_struct_type(prop, "ColorBand");
RNA_def_property_ui_text(prop, "Color Band", "");*/
}
-static void def_mix_rgb(BlenderRNA *brna, int id)
+static void def_mix_rgb(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- static EnumPropertyItem blend_type_items[] ={
+ static EnumPropertyItem blend_type_items[] = {
{ 0, "MIX", "Mix", ""},
{ 1, "ADD", "Add", ""},
{ 3, "SUBTRACT", "Subtract", ""},
@@ -288,112 +294,995 @@ static void def_mix_rgb(BlenderRNA *brna, int id)
{0, NULL, NULL, NULL}
};
- srna= def_node(brna, id);
-
- prop= RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, blend_type_items);
RNA_def_property_ui_text(prop, "Blend Type", "");
- prop= RNA_def_property(srna, "alpha", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1);
RNA_def_property_ui_text(prop, "Diffuse", "Include alpha of second input in this operation");
}
+static void def_texture(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "id");
+ RNA_def_property_struct_type(prop, "Texture");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Texture", "");
+
+ prop = RNA_def_property(srna, "node_output", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom1");
+ RNA_def_property_ui_text(prop, "Node Output", "For node-based textures, which output node to use");
+}
+
-/* -- Shader Node Storage Types --------------------------------------------- */
+/* -- Shader Nodes ---------------------------------------------------------- */
-static void rna_def_storage_node_geometry(BlenderRNA *brna)
+static void def_sh_material(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "id");
+ RNA_def_property_struct_type(prop, "Material");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Material", "");
+
+ prop = RNA_def_property(srna, "diffuse", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_DIFF);
+ RNA_def_property_ui_text(prop, "Diffuse", "Material Node outputs Diffuse");
+
+ prop = RNA_def_property(srna, "specular", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_SPEC);
+ RNA_def_property_ui_text(prop, "Specular", "Material Node outputs Specular");
+
+ prop = RNA_def_property(srna, "invert_normal", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_NEG);
+ RNA_def_property_ui_text(prop, "Invert Normal", "Material Node uses inverted normal");
+}
+
+static void def_sh_mapping(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "storage");
+ RNA_def_property_struct_type(prop, "TexMapping");
+ RNA_def_property_ui_text(prop, "Mapping", "");
+}
+
+static void def_sh_geometry(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "NodeGeometry", NULL);
- RNA_def_struct_ui_text(srna, "Node Geometry", "");
+ RNA_def_struct_sdna_from(srna, "NodeGeometry", "storage");
- prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
+ prop = RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "uvname");
RNA_def_property_ui_text(prop, "UV Layer", "");
- prop= RNA_def_property(srna, "color_layer", PROP_STRING, PROP_NONE);
+ prop = RNA_def_property(srna, "color_layer", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "colname");
RNA_def_property_ui_text(prop, "Vertex Color Layer", "");
}
-/* -- Shader Nodes ---------------------------------------------------------- */
+/* -- Compositor Nodes ------------------------------------------------------ */
-static void def_sh_texture(BlenderRNA *brna, int id)
+static void def_cmp_alpha_over(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "convert_premul", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
+ RNA_def_property_ui_text(prop, "convert_premul", "TODO: don't know what this is");
+
+ RNA_def_struct_sdna_from(srna, "NodeTwoFloats", "storage");
+
+ prop = RNA_def_property(srna, "premul", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "x");
+ RNA_def_property_ui_text(prop, "Premul", "Mix Factor");
+}
+
+static void def_cmp_blur(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem filter_type_items[] = {
+ {R_FILTER_BOX, "FLAT", "Flat", ""},
+ {R_FILTER_TENT, "TENT", "Tent", ""},
+ {R_FILTER_QUAD, "QUAD", "Quadratic", ""},
+ {R_FILTER_CUBIC, "CUBIC", "Cubic", ""},
+ {R_FILTER_GAUSS, "GAUSS", "Gaussian", ""},
+ {R_FILTER_FAST_GAUSS, "FAST_GAUSS", "Fast Gaussian", ""},
+ {R_FILTER_CATROM, "CATROM", "Catrom", ""},
+ {R_FILTER_MITCH, "MITCH", "Mitch", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ RNA_def_struct_sdna_from(srna, "NodeBlurData", "storage");
+
+ prop = RNA_def_property(srna, "sizex", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "sizex");
+ RNA_def_property_ui_text(prop, "Size X", "");
+
+ prop = RNA_def_property(srna, "sizey", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "sizey");
+ RNA_def_property_ui_text(prop, "Size Y", "");
+
+ prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "samples");
+ RNA_def_property_ui_text(prop, "Samples", "");
+
+ prop = RNA_def_property(srna, "max_speed", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "maxspeed");
+ RNA_def_property_ui_text(prop, "Max Speed", "");
+
+ prop = RNA_def_property(srna, "min_speed", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "minspeed");
+ RNA_def_property_ui_text(prop, "Min Speed", "");
+
+ prop = RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "relative", 1);
+ RNA_def_property_ui_text(prop, "Relative", "");
+
+ prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fac");
+ RNA_def_property_ui_text(prop, "Factor", "");
+
+ prop = RNA_def_property(srna, "factor_x", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "percentx");
+ RNA_def_property_ui_text(prop, "Relative Size X", "");
+
+ prop = RNA_def_property(srna, "factor_y", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "percenty");
+ RNA_def_property_ui_text(prop, "Relative Size Y", "");
+
+ prop = RNA_def_property(srna, "filter_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "filtertype");
+ RNA_def_property_enum_items(prop, filter_type_items);
+ RNA_def_property_ui_text(prop, "Filter Type", "");
+
+ prop = RNA_def_property(srna, "bokeh", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "bokeh", 1);
+ RNA_def_property_ui_text(prop, "Bokeh", "");
+
+ prop = RNA_def_property(srna, "gamma", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "gamma", 1);
+ RNA_def_property_ui_text(prop, "Gamma", "");
+
+ /*
+ TODO:
+ curved
+ image_in_width
+ image_in_height
+
+ Don't know if these need wrapping, can't find them in interface
+ */
+
+}
+
+static void def_cmp_filter(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
+
+ static EnumPropertyItem type_items[] = {
+ {0, "SOFTEN", "Soften", ""},
+ {1, "SHARPEN", "Sharpen", ""},
+ {2, "LAPLACE", "Laplace", ""},
+ {3, "SOBEL", "Sobel", ""},
+ {4, "PREWITT", "Prewitt", ""},
+ {5, "KIRSCH", "Kirsch", ""},
+ {6, "SHADOW", "Shadow", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Type", "");
+}
+
+static void def_cmp_map_value(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "TexMapping", "storage");
+
+ prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "loc");
+ RNA_def_property_ui_text(prop, "Offset", "");
+
+ prop = RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "size");
+ RNA_def_property_ui_text(prop, "Size", "");
- srna= def_node(brna, id);
+ prop = RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
+ RNA_def_property_ui_text(prop, "Use Minimum", "");
- prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
+ prop = RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
+ RNA_def_property_ui_text(prop, "Use Maximum", "");
+
+ prop = RNA_def_property(srna, "min", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "min");
+ RNA_def_property_ui_text(prop, "Minimum", "");
+
+ prop = RNA_def_property(srna, "max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "max");
+ RNA_def_property_ui_text(prop, "Maximum", "");
+}
+
+static void def_cmp_vector_blur(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "NodeBlurData", "storage");
+
+ prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "samples");
+ RNA_def_property_ui_text(prop, "Samples", "");
+
+ prop = RNA_def_property(srna, "min_speed", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "minspeed");
+ RNA_def_property_ui_text(prop, "Min Speed", "Minimum speed for a pixel to be blurred; used to separate background from foreground");
+
+ prop = RNA_def_property(srna, "max_speed", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "maxspeed");
+ RNA_def_property_ui_text(prop, "Min Speed", "Maximum speed, or zero for none");
+
+ prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fac");
+ RNA_def_property_ui_text(prop, "Blur Factor", "Scaling factor for motion vectors; actually 'shutter speed' in frames");
+
+ prop = RNA_def_property(srna, "curved", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "curved", 1);
+ RNA_def_property_ui_text(prop, "Curved", "Interpolate between frames in a bezier curve, rather than linearly");
+}
+
+static void def_cmp_image(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ /*static EnumPropertyItem type_items[] = {
+ {IMA_SRC_FILE, "IMAGE", "Image", ""},
+ {IMA_SRC_MOVIE, "MOVIE", "Movie", ""},
+ {IMA_SRC_SEQUENCE, "SEQUENCE", "Sequence", ""},
+ {IMA_SRC_GENERATED, "GENERATED", "Generated", ""},
+ {0, NULL, NULL, NULL}
+ };*/
+
+ prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "id");
- RNA_def_property_struct_type(prop, "Texture");
- RNA_def_property_ui_text(prop, "Texture", "");
+ RNA_def_property_struct_type(prop, "Image");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Image", "");
+
+ RNA_def_struct_sdna_from(srna, "ImageUser", "storage");
+
+ /* TODO: if movie or sequence { */
+
+ prop = RNA_def_property(srna, "frames", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "frames");
+ RNA_def_property_ui_text(prop, "Frames", "Number of images used in animation");
+
+ prop = RNA_def_property(srna, "start", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "sfra");
+ RNA_def_property_ui_text(prop, "Start Frame", "");
+
+ prop = RNA_def_property(srna, "offset", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "offset");
+ RNA_def_property_ui_text(prop, "Offset", "Offsets the number of the frame to use in the animation");
- prop= RNA_def_property(srna, "node_output", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "cyclic", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "cycl", 1);
+ RNA_def_property_ui_text(prop, "Cyclic", "");
+
+ prop = RNA_def_property(srna, "auto_refresh", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_ANIM_ALWAYS);
+ RNA_def_property_ui_text(prop, "Auto-Refresh", "");
+
+ /* } */
+
+ /* if type == multilayer { */
+
+ prop = RNA_def_property(srna, "layer", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "layer");
+ RNA_def_property_ui_text(prop, "Layer", "");
+
+ /* } */
+
+ /* TODO: refresh on change */
+
+}
+
+static void def_cmp_render_layers(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "id");
+ RNA_def_property_struct_type(prop, "Scene");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Scene", "");
+
+ /* TODO: layers in menu */
+ prop = RNA_def_property(srna, "layer", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom1");
- RNA_def_property_ui_text(prop, "Node Output", "For node-based textures, which output node to use");
+ RNA_def_property_ui_text(prop, "Layer", "");
+
+ /* TODO: comments indicate this might be a hack */
+ prop = RNA_def_property(srna, "re_render", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1);
+ RNA_def_property_ui_text(prop, "Re-render", "");
}
-static void def_sh_material(BlenderRNA *brna, int id)
+static void def_cmp_output_file(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
+
+ static EnumPropertyItem type_items[] = {
+ {R_TARGA, "TARGA", "Targa", ""},
+ {R_RAWTGA, "RAW_TARGA", "Targa Raw", ""},
+ {R_PNG, "PNG", "PNG", ""},
+ {R_BMP, "BMP", "BMP", ""},
+ {R_JPEG90, "JPEG", "JPEG", ""},
+ {R_IRIS, "IRIS", "IRIS", ""},
+ {R_RADHDR, "RADIANCE_HDR", "Radiance HDR", ""},
+ {R_CINEON, "CINEON", "Cineon", ""},
+ {R_DPX, "DPX", "DPX", ""},
+ {R_OPENEXR, "OPENEXR", "OpenEXR", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ static EnumPropertyItem openexr_codec_items[] = {
+ {0, "NONE", "None", ""},
+ {1, "PXR24", "Pxr24 (lossy)", ""},
+ {2, "ZIP", "ZIP (lossless)", ""},
+ {3, "PIZ", "PIX (lossless)", ""},
+ {4, "RLE", "RLE (lossless)", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ RNA_def_struct_sdna_from(srna, "NodeImageFile", "storage");
+
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "name");
+ RNA_def_property_ui_text(prop, "Name", "");
+
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "imtype");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Type", "");
+
+ /* TODO: openexr only { */
+
+ prop = RNA_def_property(srna, "half", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_HALF);
+ RNA_def_property_ui_text(prop, "Half", "");
+
+ prop = RNA_def_property(srna, "codec", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "codec");
+ RNA_def_property_enum_items(prop, openexr_codec_items);
+ RNA_def_property_ui_text(prop, "Codec", "");
+
+ /* } else { */
+
+ prop = RNA_def_property(srna, "quality", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "quality");
+ RNA_def_property_ui_text(prop, "Quality", "");
+
+ /* } */
+
+ prop = RNA_def_property(srna, "start", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "sfra");
+ RNA_def_property_ui_text(prop, "Start Frame", "");
+
+ prop = RNA_def_property(srna, "end", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "efra");
+ RNA_def_property_ui_text(prop, "End Frame", "");
+}
- srna= def_node(brna, id);
+static void def_cmp_dilate_erode(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "distance", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom2");
+ RNA_def_property_ui_text(prop, "Distance", "Distance to grow/shrink (number of iterations)");
+}
- prop= RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "id");
- RNA_def_property_struct_type(prop, "Material");
- RNA_def_property_ui_text(prop, "Material", "");
+static void def_cmp_scale(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem space_items[] = {
+ {0, "RELATIVE", "Relative", ""},
+ {1, "ABSOLUTE", "Absolute", ""},
+ {2, "SCENE_SIZE", "Scene Size", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, space_items);
+ RNA_def_property_ui_text(prop, "Space", "Coordinate space to scale relative to");
+}
- prop= RNA_def_property(srna, "diffuse", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_DIFF);
- RNA_def_property_ui_text(prop, "Diffuse", "Material Node outputs Diffuse");
+static void def_cmp_diff_matte(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem color_space_items[] = {
+ {1, "RGB", "RGB", ""},
+ {2, "HSV", "HSV", ""},
+ {3, "YUV", "YUV", ""},
+ {4, "YCC", "YCbCr", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "color_space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, color_space_items);
+ RNA_def_property_ui_text(prop, "Color Space", "");
+
+ RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
+
+ /* TODO: nicer wrapping for tolerances */
+
+ prop = RNA_def_property(srna, "tolerance1", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t1");
+ RNA_def_property_ui_text(prop, "Channel 1 Tolerance", "");
+
+ prop = RNA_def_property(srna, "tolerance2", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t2");
+ RNA_def_property_ui_text(prop, "Channel 2 Tolerance", "");
+
+ prop = RNA_def_property(srna, "tolerance3", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t3");
+ RNA_def_property_ui_text(prop, "Channel 3 Tolerance", "");
+
+ prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fstrength");
+ RNA_def_property_ui_text(prop, "Falloff", "");
+}
- prop= RNA_def_property(srna, "specular", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_SPEC);
- RNA_def_property_ui_text(prop, "Specular", "Material Node outputs Specular");
+static void def_cmp_color_spill(StructRNA *srna)
+{
+ PropertyRNA *prop;
- prop= RNA_def_property(srna, "invert_normal", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "custom1", SH_NODE_MAT_NEG);
- RNA_def_property_ui_text(prop, "Invert Normal", "Material Node uses inverted normal");
+ static EnumPropertyItem channel_items[] = {
+ {1, "R", "Red", ""},
+ {2, "G", "Green", ""},
+ {3, "B", "Blue", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "channel", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, channel_items);
+ RNA_def_property_ui_text(prop, "Channel", "");
+
+ RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
+
+ prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t1");
+ RNA_def_property_ui_text(prop, "Amount", "How much the selected channel is affected by");
}
-static void def_sh_mapping(BlenderRNA *brna, int id)
+static void def_cmp_chroma(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- srna= def_node(brna, id);
+ RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
- prop= RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "storage");
- RNA_def_property_struct_type(prop, "TexMapping");
- RNA_def_property_ui_text(prop, "Mapping", "");
+ prop = RNA_def_property(srna, "acceptance", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t1");
+ RNA_def_property_ui_text(prop, "Acceptance", "Tolerance for a color to be considered a keying color");
+
+ prop = RNA_def_property(srna, "cutoff", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t2");
+ RNA_def_property_ui_text(prop, "Cutoff", "Tolerance below which colors will be considered as exact matches");
+
+ prop = RNA_def_property(srna, "lift", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fsize");
+ RNA_def_property_ui_text(prop, "Lift", "Alpha lift");
+
+ prop = RNA_def_property(srna, "gain", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fstrength");
+ RNA_def_property_ui_text(prop, "Gain", "Alpha gain");
+
+ prop = RNA_def_property(srna, "shadow_adjust", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t3");
+ RNA_def_property_ui_text(prop, "Shadow Adjust", "Adjusts the brightness of any shadows captured");
+
+ /* TODO:
+ if(c->t2 > c->t1)
+ c->t2=c->t1;
+ */
}
-static void def_sh_geometry(BlenderRNA *brna, int id)
+static void def_cmp_channel_matte(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem color_space_items[] = {
+ {1, "RGB", "RGB", ""},
+ {2, "HSV", "HSV", ""},
+ {3, "YUV", "YUV", ""},
+ {4, "YCC", "YCbCr", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "color_space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, color_space_items);
+ RNA_def_property_ui_text(prop, "Color Space", "");
+
+ /* TODO: channel must be 1, 2 or 3 */
+ prop = RNA_def_property(srna, "channel", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom2");
+ RNA_def_property_ui_text(prop, "Channel", "");
+
+ RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
+
+ prop = RNA_def_property(srna, "high", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t1");
+ RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque");
+
+ prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t2");
+ RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed");
+
+ /* TODO:
+ if(c->t2 > c->t1)
+ c->t2=c->t1;
+ */
+}
+
+static void def_cmp_flip(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem axis_items[] = {
+ {0, "X", "X", ""},
+ {1, "Y", "Y", ""},
+ {2, "XY", "X & Y", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, axis_items);
+ RNA_def_property_ui_text(prop, "Axis", "");
+}
+
+static void def_cmp_splitviewer(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem axis_items[] = {
+ {0, "X", "X", ""},
+ {1, "Y", "Y", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom2");
+ RNA_def_property_enum_items(prop, axis_items);
+ RNA_def_property_ui_text(prop, "Axis", "");
+
+ /* TODO: percentage */
+ prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "custom1");
+ RNA_def_property_ui_text(prop, "Factor", "");
+}
+
+static void def_cmp_id_mask(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "index", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom1");
+ RNA_def_property_ui_text(prop, "Index", "Pass index number to convert to alpha");
+}
+
+static void def_cmp_map_uv(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ /* TODO: percentage */
+ prop = RNA_def_property(srna, "alpha", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom1");
+ RNA_def_property_ui_text(prop, "Alpha", "");
+}
+
+static void def_cmp_defocus(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem bokeh_items[] = {
+ {8, "OCTAGON", "Octagonal", "8 sides"},
+ {7, "HEPTAGON", "Heptagonal", "7 sides"},
+ {6, "HEXAGON", "Hexagonal", "6 sides"},
+ {5, "PENTAGON", "Pentagonal", "5 sides"},
+ {4, "SQUARE", "Square", "4 sides"},
+ {3, "TRIANGLE", "Triangular", "3 sides"},
+ {0, "CIRCLE", "Circular", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ RNA_def_struct_sdna_from(srna, "NodeDefocus", "storage");
+
+ prop = RNA_def_property(srna, "bokeh", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "bktype");
+ RNA_def_property_enum_items(prop, bokeh_items);
+ RNA_def_property_ui_text(prop, "Bokeh Type", "");
+
+ /* TODO: angle in degrees */
+ prop = RNA_def_property(srna, "angle", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "rotation");
+ RNA_def_property_ui_text(prop, "Angle", "Bokeh shape rotation offset in degrees");
+
+ prop = RNA_def_property(srna, "gamma_correction", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "gamco", 1);
+ RNA_def_property_ui_text(prop, "Gamma Correction", "Enable gamma correction before and after main process");
+
+ /* TODO */
+ prop = RNA_def_property(srna, "f_stop", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fstop");
+ RNA_def_property_ui_text(prop, "fStop", "Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius");
+
+ prop = RNA_def_property(srna, "max_blur", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "maxblur");
+ RNA_def_property_ui_text(prop, "Max Blur", "blur limit, maximum CoC radius, 0=no limit");
+
+ prop = RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "bthresh");
+ RNA_def_property_ui_text(prop, "Threshold", "CoC radius threshold, prevents background bleed on in-focus midground, 0=off");
+
+ prop = RNA_def_property(srna, "preview", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "preview", 1);
+ RNA_def_property_ui_text(prop, "Preview", "Enable sampling mode, useful for preview when using low samplecounts");
+
+ prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "samples");
+ RNA_def_property_ui_text(prop, "Samples", "Number of samples (16=grainy, higher=less noise)");
+
+ prop = RNA_def_property(srna, "use_zbuffer", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "no_zbuf", 1);
+ RNA_def_property_ui_text(prop, "Use Z-Buffer", "Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node)");
+
+ prop = RNA_def_property(srna, "z_scale", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "scale");
+ RNA_def_property_ui_text(prop, "Z-Scale", "Scales the Z input when not using a zbuffer, controls maximum blur designated by the color white or input value 1");
+}
+
+static void def_cmp_luma_matte(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
+
+ prop = RNA_def_property(srna, "high", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t1");
+ RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque");
+
+ prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "t2");
+ RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed");
+
+ /* TODO: keep low less than high */
+
+}
+
+static void def_cmp_invert(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "rgb", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", CMP_CHAN_RGB);
+ RNA_def_property_ui_text(prop, "RGB", "");
+
+ prop = RNA_def_property(srna, "alpha", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", CMP_CHAN_A);
+ RNA_def_property_ui_text(prop, "Alpha", "");
+}
+
+static void def_cmp_crop(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "crop_size", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
+ RNA_def_property_ui_text(prop, "Crop Image Size", "Whether to crop the size of the input image");
+
+ RNA_def_struct_sdna_from(srna, "NodeTwoXYs", "storage");
+
+ prop = RNA_def_property(srna, "x1", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "x1");
+ RNA_def_property_ui_text(prop, "X1", "");
+
+ prop = RNA_def_property(srna, "x2", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "x2");
+ RNA_def_property_ui_text(prop, "X2", "");
+
+ prop = RNA_def_property(srna, "y1", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "y1");
+ RNA_def_property_ui_text(prop, "Y1", "");
+
+ prop = RNA_def_property(srna, "y2", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "y2");
+ RNA_def_property_ui_text(prop, "Y2", "");
+}
+
+static void def_cmp_dblur(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "NodeDBlurData", "storage");
+
+ prop = RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "iter");
+ RNA_def_property_ui_text(prop, "Iterations", "");
+
+ prop = RNA_def_property(srna, "wrap", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "wrap", 1);
+ RNA_def_property_ui_text(prop, "Wrap", "");
+
+ prop = RNA_def_property(srna, "center_x", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "center_x");
+ RNA_def_property_ui_text(prop, "Center X", "");
+
+ prop = RNA_def_property(srna, "center_y", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "center_y");
+ RNA_def_property_ui_text(prop, "Center Y", "");
+
+ prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "distance");
+ RNA_def_property_ui_text(prop, "Distance", "");
+
+ prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "angle");
+ RNA_def_property_ui_text(prop, "Angle", "");
+
+ prop = RNA_def_property(srna, "spin", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "spin");
+ RNA_def_property_ui_text(prop, "Spin", "");
+
+ prop = RNA_def_property(srna, "zoom", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "zoom");
+ RNA_def_property_ui_text(prop, "Zoom", "");
+}
+
+static void def_cmp_bilateral_blur(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "NodeBilateralBlurData", "storage");
+
+ prop = RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "iter");
+ RNA_def_property_ui_text(prop, "Iterations", "");
+
+ prop = RNA_def_property(srna, "sigma_color", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "sigma_color");
+ RNA_def_property_ui_text(prop, "Color Sigma", "");
+
+ prop = RNA_def_property(srna, "sigma_space", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "sigma_space");
+ RNA_def_property_ui_text(prop, "Space Sigma", "");
+
+}
+
+static void def_cmp_premul_key(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem type_items[] = {
+ {0, "KEY_TO_PREMUL", "Key to Premul", ""},
+ {1, "PREMUL_TO_KEY", "Premul to Key", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "custom1");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Blend Type", "Conversion between premultiplied alpha and key alpha");
+
+}
+
+static void def_cmp_glare(StructRNA *srna)
{
- StructRNA *srna;
PropertyRNA *prop;
- srna= def_node(brna, id);
+ static EnumPropertyItem type_items[] = {
+ {3, "GHOSTS", "Ghosts", ""},
+ {2, "STREAKS", "Streaks", ""},
+ {1, "FOG_GLOW", "Fog Glow", ""},
+ {0, "SIMPLE_STAR", "Simple Star", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ /*static EnumPropertyItem quality_items[] = {
+ {0, "HIGH", "High", ""},
+ {1, "MEDIUM", "Medium", ""},
+ {2, "LOW", "Low", ""},
+ {0, NULL, NULL, NULL}
+ };*/
+
+ RNA_def_struct_sdna_from(srna, "NodeGlare", "storage");
+
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "type");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Type", "");
+
+ prop = RNA_def_property(srna, "quality", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "quality");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Quality", "If not set to high quality, the effect will be applied to a low-res copy of the source image");
+
+ prop = RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "iter");
+ RNA_def_property_ui_text(prop, "Iterations", "");
+
+ prop = RNA_def_property(srna, "color_modulation", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "colmod");
+ RNA_def_property_ui_text(prop, "Color Modulation", "");
- prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE);
+ prop = RNA_def_property(srna, "mix", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "mix");
+ RNA_def_property_ui_text(prop, "Mix", "-1 is original image only, 0 is exact 50/50 mix, 1 is processed image only");
+
+ prop = RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "threshold");
+ RNA_def_property_ui_text(prop, "Threshold", "The glare filter will only be applied to pixels brighter than this value");
+
+ prop = RNA_def_property(srna, "streaks", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "angle");
+ RNA_def_property_ui_text(prop, "Streaks", "Total number of streaks");
+
+ prop = RNA_def_property(srna, "angle_offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "angle_ofs");
+ RNA_def_property_ui_text(prop, "Angle Offset", "Streak angle offset in degrees");
+
+ prop = RNA_def_property(srna, "fade", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "fade");
+ RNA_def_property_ui_text(prop, "Fade", "Streak fade-out factor");
+
+ prop = RNA_def_property(srna, "rotate_45", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "angle", 1);
+ RNA_def_property_ui_text(prop, "Rotate 45", "Simple star filter: add 45 degree rotation offset");
+
+ prop = RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "size");
+ RNA_def_property_ui_text(prop, "Size", "Glow/glare size (not actual size; relative to initial size of bright area of pixels)");
+
+ /* TODO */
+}
+
+static void def_cmp_tonemap(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ static EnumPropertyItem type_items[] = {
+ {1, "RD_PHOTORECEPTOR", "R/D Photoreceptor", ""},
+ {0, "RH_SIMPLE", "Rh Simple", ""},
+ {0, NULL, NULL, NULL}
+ };
+
+ RNA_def_struct_sdna_from(srna, "NodeTonemap", "storage");
+
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "type");
+ RNA_def_property_enum_items(prop, type_items);
+ RNA_def_property_ui_text(prop, "Type", "");
+
+ /* TODO: if type==0 { */
+
+ prop = RNA_def_property(srna, "key", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "key");
+ RNA_def_property_ui_text(prop, "Key", "The value the average luminance is mapped to");
+
+ prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "offset");
+ RNA_def_property_ui_text(prop, "Offset", "Normally always 1, but can be used as an extra control to alter the brightness curve");
+
+ prop = RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "gamma");
+ RNA_def_property_ui_text(prop, "Gamma", "If not used, set to 1");
+
+ /* TODO: } else { */
+
+ prop = RNA_def_property(srna, "intensity", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f");
+ RNA_def_property_ui_text(prop, "Intensity", "If less than zero, darkens image; otherwise, makes it brighter");
+
+ prop = RNA_def_property(srna, "contrast", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "m");
+ RNA_def_property_ui_text(prop, "Contrast", "Set to 0 to use estimate from input image");
+
+ prop = RNA_def_property(srna, "adaptation", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "a");
+ RNA_def_property_ui_text(prop, "Adaptation", "If 0, global; if 1, based on pixel intensity");
+
+ prop = RNA_def_property(srna, "correction", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "c");
+ RNA_def_property_ui_text(prop, "Color Correction", "If 0, same for all channels; if 1, each independent");
+}
+
+static void def_cmp_lensdist(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "NodeLensDist", "storage");
+
+ prop = RNA_def_property(srna, "projector", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "proj", 1);
+ RNA_def_property_ui_text(prop, "Projector", "Enable/disable projector mode. Effect is applied in horizontal direction only.");
+
+ /* TODO: if proj mode is off { */
+
+ prop = RNA_def_property(srna, "jitter", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "jit", 1);
+ RNA_def_property_ui_text(prop, "Jitter", "Enable/disable jittering; faster, but also noisier");
+
+ prop = RNA_def_property(srna, "fit", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "fit", 1);
+ RNA_def_property_ui_text(prop, "Fit", "For positive distortion factor only: scale image such that black areas are not visible");
+}
+
+
+
+/* -- Texture Nodes --------------------------------------------------------- */
+
+static void def_tex_output(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "TexNodeOutput", "storage");
+
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "name");
+ RNA_def_property_ui_text(prop, "Name", "");
+}
+
+static void def_tex_image(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "storage");
- RNA_def_property_struct_type(prop, "NodeGeometry");
+ RNA_def_property_struct_type(prop, "ImageUser");
RNA_def_property_ui_text(prop, "Settings", "");
}
-/* -- Compositor Nodes ------------------------------------------------------ */
+static void def_tex_bricks(StructRNA *srna)
+{
+ PropertyRNA *prop;
-/* -- Texture Nodes --------------------------------------------------------- */
+ prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "custom3");
+ RNA_def_property_ui_text(prop, "Offset Amount", "");
+
+ prop = RNA_def_property(srna, "offset_frequency", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom1");
+ RNA_def_property_ui_text(prop, "Offset Frequency", "Offset every N rows");
+
+ prop = RNA_def_property(srna, "squash", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "custom4");
+ RNA_def_property_ui_text(prop, "Squash Amount", "");
+
+ prop = RNA_def_property(srna, "squash_frequency", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "custom2");
+ RNA_def_property_ui_text(prop, "Squash Frequency", "Squash every N rows");
+}
/* -------------------------------------------------------------------------- */
@@ -405,17 +1294,14 @@ static void rna_def_shader_node(BlenderRNA *brna)
node_type_items = alloc_node_type_items(Category_ShaderNode);
- srna= RNA_def_struct(brna, "ShaderNode", "Node");
+ srna = RNA_def_struct(brna, "ShaderNode", "Node");
RNA_def_struct_ui_text(srna, "Shader Node", "Material shader node.");
RNA_def_struct_sdna(srna, "bNode");
- prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, node_type_items);
RNA_def_property_ui_text(prop, "Type", "");
-
- /* Shader storage types */
- rna_def_storage_node_geometry(brna);
}
static void rna_def_compositor_node(BlenderRNA *brna)
@@ -426,11 +1312,11 @@ static void rna_def_compositor_node(BlenderRNA *brna)
node_type_items = alloc_node_type_items(Category_CompositorNode);
- srna= RNA_def_struct(brna, "CompositorNode", "Node");
+ srna = RNA_def_struct(brna, "CompositorNode", "Node");
RNA_def_struct_ui_text(srna, "Compositor Node", "");
RNA_def_struct_sdna(srna, "bNode");
- prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, node_type_items);
RNA_def_property_ui_text(prop, "Type", "");
@@ -444,11 +1330,11 @@ static void rna_def_texture_node(BlenderRNA *brna)
node_type_items = alloc_node_type_items(Category_TextureNode);
- srna= RNA_def_struct(brna, "TextureNode", "Node");
+ srna = RNA_def_struct(brna, "TextureNode", "Node");
RNA_def_struct_ui_text(srna, "Texture Node", "");
RNA_def_struct_sdna(srna, "bNode");
- prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, node_type_items);
RNA_def_property_ui_text(prop, "Type", "");
@@ -461,18 +1347,18 @@ static void rna_def_node(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "Node", NULL);
+ srna = RNA_def_struct(brna, "Node", NULL);
RNA_def_struct_ui_text(srna, "Node", "Node in a node tree.");
RNA_def_struct_sdna(srna, "bNode");
RNA_def_struct_refine_func(srna, "rna_Node_refine");
- prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_VECTOR);
+ prop = RNA_def_property(srna, "location", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "locx");
RNA_def_property_array(prop, 2);
RNA_def_property_range(prop, -10000.0f, 10000.0f);
RNA_def_property_ui_text(prop, "Location", "");
- prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Node name.");
RNA_def_struct_name_property(srna, prop);
}
@@ -482,24 +1368,23 @@ static void rna_def_nodetree(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
- srna= RNA_def_struct(brna, "NodeTree", "ID");
+ srna = RNA_def_struct(brna, "NodeTree", "ID");
RNA_def_struct_ui_text(srna, "Node Tree", "Node tree consisting of linked nodes used for materials, textures and compositing.");
RNA_def_struct_sdna(srna, "bNodeTree");
+ RNA_def_struct_ui_icon(srna, ICON_NODE);
- prop= RNA_def_property(srna, "nodes", PROP_COLLECTION, PROP_NONE);
+ prop = RNA_def_property(srna, "nodes", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "nodes", NULL);
RNA_def_property_struct_type(prop, "Node");
RNA_def_property_ui_text(prop, "Nodes", "");
}
-static void define_simple_node(BlenderRNA *brna, int id)
-{
- def_node(brna, id);
-}
-
-static void define_specific_node(BlenderRNA *brna, int id, void (*func)(BlenderRNA*, int))
+static void define_specific_node(BlenderRNA *brna, int id, void (*func)(StructRNA*))
{
- func(brna, id);
+ StructRNA *srna = def_node(brna, id);
+
+ if(func)
+ func(srna);
}
void RNA_def_nodetree(BlenderRNA *brna)
@@ -512,7 +1397,7 @@ void RNA_def_nodetree(BlenderRNA *brna)
rna_def_texture_node(brna);
#define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
- define_specific_node(brna, ID, DefFunc != 0 ? DefFunc : define_simple_node);
+ define_specific_node(brna, ID, DefFunc);
#include "rna_nodetree_types.h"
diff --git a/source/blender/makesrna/intern/rna_nodetree_types.h b/source/blender/makesrna/intern/rna_nodetree_types.h
index 00b7f7e62cb..47a7be163b1 100644
--- a/source/blender/makesrna/intern/rna_nodetree_types.h
+++ b/source/blender/makesrna/intern/rna_nodetree_types.h
@@ -17,115 +17,114 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * Contributor(s): Blender Foundation (2008), Robin Allen
+ * Contributor(s): Robin Allen
*
* ***** END GPL LICENSE BLOCK *****
*/
+
+/* Tree type Node ID RNA def function Enum name Struct name UI Name UI Description */
+DefNode( ShaderNode, SH_NODE_OUTPUT, 0, "OUTPUT", Output, "Output", "" )
+DefNode( ShaderNode, SH_NODE_MATERIAL, def_sh_material, "MATERIAL", Material, "Material", "" )
+DefNode( ShaderNode, SH_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
+DefNode( ShaderNode, SH_NODE_VALUE, 0, "VALUE", Value, "Value", "" )
+DefNode( ShaderNode, SH_NODE_MIX_RGB, def_mix_rgb, "MIX_RGB", MixRGB, "MixRGB", "" )
+DefNode( ShaderNode, SH_NODE_VALTORGB, def_val_to_rgb, "VALTORGB", ValToRGB, "Value to RGB", "" )
+DefNode( ShaderNode, SH_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB to BW", "" )
+DefNode( ShaderNode, SH_NODE_TEXTURE, def_texture, "TEXTURE", Texture, "Texture", "" )
+DefNode( ShaderNode, SH_NODE_NORMAL, 0, "NORMAL", Normal, "Normal", "" )
+DefNode( ShaderNode, SH_NODE_GEOMETRY, def_sh_geometry, "GEOMETRY", Geometry, "Geometry", "" )
+DefNode( ShaderNode, SH_NODE_MAPPING, def_sh_mapping, "MAPPING", Mapping, "Mapping", "" )
+DefNode( ShaderNode, SH_NODE_CURVE_VEC, def_vector_curve, "CURVE_VEC", VectorCurve, "Vector Curve", "" )
+DefNode( ShaderNode, SH_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", RGBCurve, "RGB Curve", "" )
+DefNode( ShaderNode, SH_NODE_CAMERA, 0, "CAMERA", CameraData, "Camera Data", "" )
+DefNode( ShaderNode, SH_NODE_MATH, def_math, "MATH", Math, "Math", "" )
+DefNode( ShaderNode, SH_NODE_VECT_MATH, def_vector_math, "VECT_MATH", VectorMath, "Vector Math", "" )
+DefNode( ShaderNode, SH_NODE_SQUEEZE, 0, "SQUEEZE", Squeeze, "Squeeze", "" )
+DefNode( ShaderNode, SH_NODE_MATERIAL_EXT, def_sh_material, "MATERIAL_EXT", ExtendedMaterial, "Extended Material", "" )
+DefNode( ShaderNode, SH_NODE_INVERT, 0, "INVERT", Invert, "Invert", "" )
+DefNode( ShaderNode, SH_NODE_SEPRGB, 0, "SEPRGB", SeparateRGB, "Separate RGB", "" )
+DefNode( ShaderNode, SH_NODE_COMBRGB, 0, "COMBRGB", CombineRGB, "Combine RGB", "" )
+DefNode( ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
+
+DefNode( CompositorNode, CMP_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" )
+DefNode( CompositorNode, CMP_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
+DefNode( CompositorNode, CMP_NODE_VALUE, 0, "VALUE", Value, "Value", "" )
+DefNode( CompositorNode, CMP_NODE_MIX_RGB, def_mix_rgb, "MIX_RGB", MixRGB, "Mix RGB", "" )
+DefNode( CompositorNode, CMP_NODE_VALTORGB, def_val_to_rgb, "VALTORGB", ValToRGB, "Val to RGB", "" )
+DefNode( CompositorNode, CMP_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB to BW", "" )
+DefNode( CompositorNode, CMP_NODE_NORMAL, 0, "NORMAL", Normal, "Normal", "" )
+DefNode( CompositorNode, CMP_NODE_CURVE_VEC, def_vector_curve, "CURVE_VEC", CurveVec, "Vector Curve", "" )
+DefNode( CompositorNode, CMP_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", CurveRGB, "RGB Curve", "" )
+DefNode( CompositorNode, CMP_NODE_ALPHAOVER, def_cmp_alpha_over, "ALPHAOVER", AlphaOver, "Alpha Over", "" )
+DefNode( CompositorNode, CMP_NODE_BLUR, def_cmp_blur, "BLUR", Blur, "Blur", "" )
+DefNode( CompositorNode, CMP_NODE_FILTER, def_cmp_filter, "FILTER", Filter, "Filter", "" )
+DefNode( CompositorNode, CMP_NODE_MAP_VALUE, def_cmp_map_value, "MAP_VALUE", MapValue, "Map Value", "" )
+DefNode( CompositorNode, CMP_NODE_TIME, def_time, "TIME", Time, "Time", "" )
+DefNode( CompositorNode, CMP_NODE_VECBLUR, def_cmp_vector_blur, "VECBLUR", VecBlur, "Vector Blur", "" )
+DefNode( CompositorNode, CMP_NODE_SEPRGBA, 0, "SEPRGBA", SepRGBA, "Separate RGBA", "" )
+DefNode( CompositorNode, CMP_NODE_SEPHSVA, 0, "SEPHSVA", SepHSVA, "Separate HSVA", "" )
+DefNode( CompositorNode, CMP_NODE_SETALPHA, 0, "SETALPHA", SetAlpha, "Set Alpha", "" )
+DefNode( CompositorNode, CMP_NODE_HUE_SAT, 0, "HUE_SAT", HueSat, "Hue/Saturation", "" )
+DefNode( CompositorNode, CMP_NODE_IMAGE, def_cmp_image, "IMAGE", Image, "Image", "" )
+DefNode( CompositorNode, CMP_NODE_R_LAYERS, def_cmp_render_layers, "R_LAYERS", RLayers, "Render Layers", "" )
+DefNode( CompositorNode, CMP_NODE_COMPOSITE, 0, "COMPOSITE", Composite, "Composite", "" )
+DefNode( CompositorNode, CMP_NODE_OUTPUT_FILE, def_cmp_output_file, "OUTPUT_FILE", OutputFile, "Output File", "" )
+DefNode( CompositorNode, CMP_NODE_TEXTURE, def_texture, "TEXTURE", Texture, "Texture", "" )
+DefNode( CompositorNode, CMP_NODE_TRANSLATE, 0, "TRANSLATE", Translate, "Translate", "" )
+DefNode( CompositorNode, CMP_NODE_ZCOMBINE, 0, "ZCOMBINE", Zcombine, "Z Combine", "" )
+DefNode( CompositorNode, CMP_NODE_COMBRGBA, 0, "COMBRGBA", CombRGBA, "Combine RGBA", "" )
+DefNode( CompositorNode, CMP_NODE_DILATEERODE, def_cmp_dilate_erode, "DILATEERODE", DilateErode, "Dilate/Erode", "" )
+DefNode( CompositorNode, CMP_NODE_ROTATE, 0, "ROTATE", Rotate, "Rotate", "" )
+DefNode( CompositorNode, CMP_NODE_SCALE, def_cmp_scale, "SCALE", Scale, "Scale", "" )
+DefNode( CompositorNode, CMP_NODE_SEPYCCA, 0, "SEPYCCA", SepYCCA, "Separate YCCA", "" )
+DefNode( CompositorNode, CMP_NODE_COMBYCCA, 0, "COMBYCCA", CombYCCA, "Combine YCCA", "" )
+DefNode( CompositorNode, CMP_NODE_SEPYUVA, 0, "SEPYUVA", SepYUVA, "Separate YUVA", "" )
+DefNode( CompositorNode, CMP_NODE_COMBYUVA, 0, "COMBYUVA", CombYUVA, "Combine YUVA", "" )
+DefNode( CompositorNode, CMP_NODE_DIFF_MATTE, def_cmp_diff_matte, "DIFF_MATTE", DiffMatte, "Difference Key", "" )
+DefNode( CompositorNode, CMP_NODE_COLOR_SPILL, def_cmp_color_spill, "COLOR_SPILL", ColorSpill, "Color Spill", "" )
+DefNode( CompositorNode, CMP_NODE_CHROMA, def_cmp_chroma, "CHROMA", Chroma, "Chroma Key", "" )
+DefNode( CompositorNode, CMP_NODE_CHANNEL_MATTE, def_cmp_channel_matte, "CHANNEL_MATTE", ChannelMatte, "Channel Key", "" )
+DefNode( CompositorNode, CMP_NODE_FLIP, def_cmp_flip, "FLIP", Flip, "Flip", "" )
+DefNode( CompositorNode, CMP_NODE_SPLITVIEWER, def_cmp_splitviewer, "SPLITVIEWER", SplitViewer, "Split Viewer", "" )
+DefNode( CompositorNode, CMP_NODE_MAP_UV, def_cmp_map_uv, "MAP_UV", MapUV, "Map UV", "" )
+DefNode( CompositorNode, CMP_NODE_ID_MASK, def_cmp_id_mask, "ID_MASK", IDMask, "ID Mask", "" )
+DefNode( CompositorNode, CMP_NODE_DEFOCUS, def_cmp_defocus, "DEFOCUS", Defocus, "Defocus", "" )
+DefNode( CompositorNode, CMP_NODE_DISPLACE, 0, "DISPLACE", Displace, "Displace", "" )
+DefNode( CompositorNode, CMP_NODE_COMBHSVA, 0, "COMBHSVA", CombHSVA, "Combine HSVA", "" )
+DefNode( CompositorNode, CMP_NODE_MATH, def_math, "MATH", Math, "Math", "" )
+DefNode( CompositorNode, CMP_NODE_LUMA_MATTE, def_cmp_luma_matte, "LUMA_MATTE", LumaMatte, "Luma Matte", "" )
+DefNode( CompositorNode, CMP_NODE_BRIGHTCONTRAST, 0, "BRIGHTCONTRAST", BrightContrast, "Bright Contrast", "" )
+DefNode( CompositorNode, CMP_NODE_GAMMA, 0, "GAMMA", Gamma, "Gamma", "" )
+DefNode( CompositorNode, CMP_NODE_INVERT, def_cmp_invert, "INVERT", Invert, "Invert", "" )
+DefNode( CompositorNode, CMP_NODE_NORMALIZE, 0, "NORMALIZE", Normalize, "Normalize", "" )
+DefNode( CompositorNode, CMP_NODE_CROP, def_cmp_crop, "CROP", Crop, "Crop", "" )
+DefNode( CompositorNode, CMP_NODE_DBLUR, def_cmp_dblur, "DBLUR", DBlur, "DBlur", "" )
+DefNode( CompositorNode, CMP_NODE_BILATERALBLUR, def_cmp_bilateral_blur, "BILATERALBLUR", Bilateralblur, "Bilateral Blur", "" )
+DefNode( CompositorNode, CMP_NODE_PREMULKEY, def_cmp_premul_key, "PREMULKEY", PremulKey, "Premul Key", "" )
+DefNode( CompositorNode, CMP_NODE_GLARE, def_cmp_glare, "GLARE", Glare, "Glare", "" )
+DefNode( CompositorNode, CMP_NODE_TONEMAP, def_cmp_tonemap, "TONEMAP", Tonemap, "Tonemap", "" )
+DefNode( CompositorNode, CMP_NODE_LENSDIST, def_cmp_lensdist, "LENSDIST", Lensdist, "Lensdist", "" )
+
+DefNode( TextureNode, TEX_NODE_OUTPUT, def_tex_output, "OUTPUT", Output, "Output", "" )
+DefNode( TextureNode, TEX_NODE_CHECKER, 0, "CHECKER", Checker, "Checker", "" )
+DefNode( TextureNode, TEX_NODE_TEXTURE, def_texture, "TEXTURE", Texture, "Texture", "" )
+DefNode( TextureNode, TEX_NODE_BRICKS, def_tex_bricks, "BRICKS", Bricks, "Bricks", "" )
+DefNode( TextureNode, TEX_NODE_MATH, def_math, "MATH", Math, "Math", "" )
+DefNode( TextureNode, TEX_NODE_MIX_RGB, def_mix_rgb, "MIX_RGB", MixRGB, "Mix RGB", "" )
+DefNode( TextureNode, TEX_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB To BW", "" )
+DefNode( TextureNode, TEX_NODE_VALTORGB, def_val_to_rgb, "VALTORGB", ValToRGB, "Val To RGB", "" )
+DefNode( TextureNode, TEX_NODE_IMAGE, def_tex_image, "IMAGE", Image, "Image", "" )
+DefNode( TextureNode, TEX_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", CurveRGB, "RGB Curve", "" )
+DefNode( TextureNode, TEX_NODE_INVERT, 0, "INVERT", Invert, "Invert", "" )
+DefNode( TextureNode, TEX_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
+DefNode( TextureNode, TEX_NODE_CURVE_TIME, def_time, "CURVE_TIME", CurveTime, "Curve Time", "" )
+DefNode( TextureNode, TEX_NODE_ROTATE, 0, "ROTATE", Rotate, "Rotate", "" )
+DefNode( TextureNode, TEX_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" )
+DefNode( TextureNode, TEX_NODE_TRANSLATE, 0, "TRANSLATE", Translate, "Translate", "" )
+DefNode( TextureNode, TEX_NODE_COORD, 0, "COORD", Coordinates, "Coordinates", "" )
+DefNode( TextureNode, TEX_NODE_DISTANCE, 0, "DISTANCE", Distance, "Distance", "" )
+DefNode( TextureNode, TEX_NODE_COMPOSE, 0, "COMPOSE", Compose, "Compose", "" )
+DefNode( TextureNode, TEX_NODE_DECOMPOSE, 0, "DECOMPOSE", Decompose, "Decompose", "" )
+DefNode( TextureNode, TEX_NODE_VALTONOR, 0, "VALTONOR", ValToNor, "Val to Nor", "" )
+DefNode( TextureNode, TEX_NODE_SCALE, 0, "SCALE", Scale, "Scale", "" )
-/* Tree type Node ID RNA def function Enum name Struct name UI Name UI Description */
-DefNode( ShaderNode, SH_NODE_OUTPUT, 0, "OUTPUT", Output, "Output", "" )
-DefNode( ShaderNode, SH_NODE_MATERIAL, def_sh_material, "MATERIAL", Material, "Material", "" )
-DefNode( ShaderNode, SH_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
-DefNode( ShaderNode, SH_NODE_VALUE, 0, "VALUE", Value, "Value", "" )
-DefNode( ShaderNode, SH_NODE_MIX_RGB, def_mix_rgb, "MIX_RGB", MixRGB, "MixRGB", "" )
-DefNode( ShaderNode, SH_NODE_VALTORGB, def_val_to_rgb, "VALTORGB", ValToRGB, "Value to RGB", "" )
-DefNode( ShaderNode, SH_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB to BW", "" )
-DefNode( ShaderNode, SH_NODE_TEXTURE, def_sh_texture, "TEXTURE", Texture, "Texture", "" )
-DefNode( ShaderNode, SH_NODE_NORMAL, 0, "NORMAL", Normal, "Normal", "" )
-DefNode( ShaderNode, SH_NODE_GEOMETRY, def_sh_geometry, "GEOMETRY", Geometry, "Geometry", "" )
-DefNode( ShaderNode, SH_NODE_MAPPING, def_sh_mapping, "MAPPING", Mapping, "Mapping", "" )
-DefNode( ShaderNode, SH_NODE_CURVE_VEC, def_vector_curve, "CURVE_VEC", VectorCurve, "Vector Curve", "" )
-DefNode( ShaderNode, SH_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", RGBCurve, "RGB Curve", "" )
-DefNode( ShaderNode, SH_NODE_CAMERA, 0, "CAMERA", CameraData, "Camera Data", "" )
-DefNode( ShaderNode, SH_NODE_MATH, def_math, "MATH", Math, "Math", "" )
-DefNode( ShaderNode, SH_NODE_VECT_MATH, def_vector_math, "VECT_MATH", VectorMath, "Vector Math", "" )
-DefNode( ShaderNode, SH_NODE_SQUEEZE, 0, "SQUEEZE", Squeeze, "Squeeze", "" )
-DefNode( ShaderNode, SH_NODE_MATERIAL_EXT, def_sh_material, "MATERIAL_EXT", ExtendedMaterial, "Extended Material", "" )
-DefNode( ShaderNode, SH_NODE_INVERT, 0, "INVERT", Invert, "Invert", "" )
-DefNode( ShaderNode, SH_NODE_SEPRGB, 0, "SEPRGB", SeparateRGB, "Separate RGB", "" )
-DefNode( ShaderNode, SH_NODE_COMBRGB, 0, "COMBRGB", CombineRGB, "Combine RGB", "" )
-DefNode( ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
-
-DefNode( CompositorNode, CMP_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" )
-DefNode( CompositorNode, CMP_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
-DefNode( CompositorNode, CMP_NODE_VALUE, 0, "VALUE", Value, "Value", "" )
-DefNode( CompositorNode, CMP_NODE_MIX_RGB, 0, "MIX_RGB", MixRGB, "Mix RGB", "" )
-DefNode( CompositorNode, CMP_NODE_VALTORGB, 0, "VALTORGB", ValToRGB, "Val to RGB", "" )
-DefNode( CompositorNode, CMP_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB to BW", "" )
-DefNode( CompositorNode, CMP_NODE_NORMAL, 0, "NORMAL", Normal, "Normal", "" )
-DefNode( CompositorNode, CMP_NODE_CURVE_VEC, 0, "CURVE_VEC", CurveVec, "Vector Curve", "" )
-DefNode( CompositorNode, CMP_NODE_CURVE_RGB, 0, "CURVE_RGB", CurveRGB, "RGB Curve", "" )
-DefNode( CompositorNode, CMP_NODE_ALPHAOVER, 0, "ALPHAOVER", AlphaOver, "Alpha Over", "" )
-DefNode( CompositorNode, CMP_NODE_BLUR, 0, "BLUR", Blur, "Blur", "" )
-DefNode( CompositorNode, CMP_NODE_FILTER, 0, "FILTER", Filter, "Filter", "" )
-DefNode( CompositorNode, CMP_NODE_MAP_VALUE, 0, "MAP_VALUE", MapValue, "Map Value", "" )
-DefNode( CompositorNode, CMP_NODE_TIME, 0, "TIME", Time, "Time", "" )
-DefNode( CompositorNode, CMP_NODE_VECBLUR, 0, "VECBLUR", VecBlur, "Vector Blur", "" )
-DefNode( CompositorNode, CMP_NODE_SEPRGBA, 0, "SEPRGBA", SepRGBA, "Separate RGBA", "" )
-DefNode( CompositorNode, CMP_NODE_SEPHSVA, 0, "SEPHSVA", SepHSVA, "Separate HSVA", "" )
-DefNode( CompositorNode, CMP_NODE_SETALPHA, 0, "SETALPHA", SetAlpha, "Set Alpha", "" )
-DefNode( CompositorNode, CMP_NODE_HUE_SAT, 0, "HUE_SAT", HueSat, "Hue/Saturation", "" )
-DefNode( CompositorNode, CMP_NODE_IMAGE, 0, "IMAGE", Image, "Image", "" )
-DefNode( CompositorNode, CMP_NODE_R_LAYERS, 0, "R_LAYERS", RLayers, "Render Layers", "" )
-DefNode( CompositorNode, CMP_NODE_COMPOSITE, 0, "COMPOSITE", Composite, "Composite", "" )
-DefNode( CompositorNode, CMP_NODE_OUTPUT_FILE, 0, "OUTPUT_FILE", OutputFile, "Output File", "" )
-DefNode( CompositorNode, CMP_NODE_TEXTURE, 0, "TEXTURE", Texture, "Texture", "" )
-DefNode( CompositorNode, CMP_NODE_TRANSLATE, 0, "TRANSLATE", Translate, "Translate", "" )
-DefNode( CompositorNode, CMP_NODE_ZCOMBINE, 0, "ZCOMBINE", Zcombine, "Z Combine", "" )
-DefNode( CompositorNode, CMP_NODE_COMBRGBA, 0, "COMBRGBA", CombRGBA, "Combine RGBA", "" )
-DefNode( CompositorNode, CMP_NODE_DILATEERODE, 0, "DILATEERODE", DilateErode, "Dilate/Erode", "" )
-DefNode( CompositorNode, CMP_NODE_ROTATE, 0, "ROTATE", Rotate, "Rotate", "" )
-DefNode( CompositorNode, CMP_NODE_SCALE, 0, "SCALE", Scale, "Scale", "" )
-DefNode( CompositorNode, CMP_NODE_SEPYCCA, 0, "SEPYCCA", SepYCCA, "Separate YCCA", "" )
-DefNode( CompositorNode, CMP_NODE_COMBYCCA, 0, "COMBYCCA", CombYCCA, "Combine YCCA", "" )
-DefNode( CompositorNode, CMP_NODE_SEPYUVA, 0, "SEPYUVA", SepYUVA, "Separate YUVA", "" )
-DefNode( CompositorNode, CMP_NODE_COMBYUVA, 0, "COMBYUVA", CombYUVA, "Combine YUVA", "" )
-DefNode( CompositorNode, CMP_NODE_DIFF_MATTE, 0, "DIFF_MATTE", DiffMatte, "Diff Matte", "" )
-DefNode( CompositorNode, CMP_NODE_COLOR_SPILL, 0, "COLOR_SPILL", ColorSpill, "Color Spill", "" )
-DefNode( CompositorNode, CMP_NODE_CHROMA, 0, "CHROMA", Chroma, "Chroma", "" )
-DefNode( CompositorNode, CMP_NODE_CHANNEL_MATTE, 0, "CHANNEL_MATTE", ChannelMatte, "Channel Matte", "" )
-DefNode( CompositorNode, CMP_NODE_FLIP, 0, "FLIP", Flip, "Flip", "" )
-DefNode( CompositorNode, CMP_NODE_SPLITVIEWER, 0, "SPLITVIEWER", SplitViewer, "Split Viewer", "" )
-DefNode( CompositorNode, CMP_NODE_INDEX_MASK, 0, "INDEX_MASK", IndexMask, "Index Mask", "" )
-DefNode( CompositorNode, CMP_NODE_MAP_UV, 0, "MAP_UV", MapUV, "Map UV", "" )
-DefNode( CompositorNode, CMP_NODE_ID_MASK, 0, "ID_MASK", IDMask, "ID Mask", "" )
-DefNode( CompositorNode, CMP_NODE_DEFOCUS, 0, "DEFOCUS", Defocus, "Defocus", "" )
-DefNode( CompositorNode, CMP_NODE_DISPLACE, 0, "DISPLACE", Displace, "Displace", "" )
-DefNode( CompositorNode, CMP_NODE_COMBHSVA, 0, "COMBHSVA", CombHSVA, "Combine HSVA", "" )
-DefNode( CompositorNode, CMP_NODE_MATH, def_math, "MATH", Math, "Math", "" )
-DefNode( CompositorNode, CMP_NODE_LUMA_MATTE, 0, "LUMA_MATTE", LumaMatte, "Luma Matte", "" )
-DefNode( CompositorNode, CMP_NODE_BRIGHTCONTRAST, 0, "BRIGHTCONTRAST", BrightContrast, "Bright Contrast", "" )
-DefNode( CompositorNode, CMP_NODE_GAMMA, 0, "GAMMA", Gamma, "Gamma", "" )
-DefNode( CompositorNode, CMP_NODE_INVERT, 0, "INVERT", Invert, "Invert", "" )
-DefNode( CompositorNode, CMP_NODE_NORMALIZE, 0, "NORMALIZE", Normalize, "Normalize", "" )
-DefNode( CompositorNode, CMP_NODE_CROP, 0, "CROP", Crop, "Crop", "" )
-DefNode( CompositorNode, CMP_NODE_DBLUR, 0, "DBLUR", DBlur, "DBlur", "" )
-DefNode( CompositorNode, CMP_NODE_BILATERALBLUR, 0, "BILATERALBLUR", Bilateralblur, "Bilateral Blur", "" )
-DefNode( CompositorNode, CMP_NODE_PREMULKEY, 0, "PREMULKEY", PremulKey, "Premul Key", "" )
-DefNode( CompositorNode, CMP_NODE_GLARE, 0, "GLARE", Glare, "Glare", "" )
-DefNode( CompositorNode, CMP_NODE_TONEMAP, 0, "TONEMAP", Tonemap, "Tonemap", "" )
-DefNode( CompositorNode, CMP_NODE_LENSDIST, 0, "LENSDIST", Lensdist, "Lensdist", "" )
-
-DefNode( TextureNode, TEX_NODE_OUTPUT, 0, "OUTPUT", Output, "Output", "" )
-DefNode( TextureNode, TEX_NODE_CHECKER, 0, "CHECKER", Checker, "Checker", "" )
-DefNode( TextureNode, TEX_NODE_TEXTURE, 0, "TEXTURE", Texture, "Texture", "" )
-DefNode( TextureNode, TEX_NODE_BRICKS, 0, "BRICKS", Bricks, "Bricks", "" )
-DefNode( TextureNode, TEX_NODE_MATH, def_math, "MATH", Math, "Math", "" )
-DefNode( TextureNode, TEX_NODE_MIX_RGB, def_mix_rgb, "MIX_RGB", MixRGB, "Mix RGB", "" )
-DefNode( TextureNode, TEX_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB To BW", "" )
-DefNode( TextureNode, TEX_NODE_VALTORGB, def_val_to_rgb, "VALTORGB", ValToRGB, "Val To RGB", "" )
-DefNode( TextureNode, TEX_NODE_IMAGE, 0, "IMAGE", Image, "Image", "" )
-DefNode( TextureNode, TEX_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", CurveRGB, "RGB Curve", "" )
-DefNode( TextureNode, TEX_NODE_INVERT, 0, "INVERT", Invert, "Invert", "" )
-DefNode( TextureNode, TEX_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
-DefNode( TextureNode, TEX_NODE_CURVE_TIME, 0, "CURVE_TIME", CurveTime, "Curve Time", "" )
-DefNode( TextureNode, TEX_NODE_ROTATE, 0, "ROTATE", Rotate, "Rotate", "" )
-DefNode( TextureNode, TEX_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" )
-DefNode( TextureNode, TEX_NODE_TRANSLATE, 0, "TRANSLATE", Translate, "Translate", "" )
-DefNode( TextureNode, TEX_NODE_COORD, 0, "COORD", Coordinates, "Coordinates", "" )
-DefNode( TextureNode, TEX_NODE_DISTANCE, 0, "DISTANCE", Distance, "Distance", "" )
-DefNode( TextureNode, TEX_NODE_COMPOSE, 0, "COMPOSE", Compose, "Compose", "" )
-DefNode( TextureNode, TEX_NODE_DECOMPOSE, 0, "DECOMPOSE", Decompose, "Decompose", "" )
-DefNode( TextureNode, TEX_NODE_VALTONOR, 0, "VALTONOR", ValToNor, "Val to Nor", "" )
-DefNode( TextureNode, TEX_NODE_SCALE, 0, "SCALE", Scale, "Scale", "" )
-
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index cbc80e68b4a..08eca7b0528 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -22,6 +22,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include <stdio.h>
#include <stdlib.h>
#include "RNA_define.h"
@@ -30,6 +31,7 @@
#include "rna_internal.h"
#include "DNA_customdata_types.h"
+#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_property_types.h"
@@ -39,21 +41,82 @@
#ifdef RNA_RUNTIME
+#include "BKE_armature.h"
#include "BKE_context.h"
+#include "BKE_curve.h"
#include "BKE_depsgraph.h"
#include "BKE_material.h"
+#include "BKE_mesh.h"
+#include "BKE_particle.h"
static void rna_Object_update(bContext *C, PointerRNA *ptr)
{
DAG_object_flush_update(CTX_data_scene(C), ptr->id.data, OB_RECALC_OB);
}
-static void rna_Object_scene_update(bContext *C, PointerRNA *ptr)
+static void rna_Object_update_data(bContext *C, PointerRNA *ptr)
+{
+ DAG_object_flush_update(CTX_data_scene(C), ptr->id.data, OB_RECALC_DATA);
+}
+
+static void rna_Object_dependency_update(bContext *C, PointerRNA *ptr)
{
DAG_object_flush_update(CTX_data_scene(C), ptr->id.data, OB_RECALC_OB);
DAG_scene_sort(CTX_data_scene(C));
}
+static int rna_Object_data_editable(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->data;
+
+ return (ob->type == OB_EMPTY)? 0: PROP_EDITABLE;
+}
+
+static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value)
+{
+ Object *ob= (Object*)ptr->data;
+ ID *id= value.data;
+
+ if(ob->type == OB_EMPTY || id == NULL)
+ return;
+
+ if(ob->type == OB_MESH) {
+ set_mesh(ob, (Mesh*)id);
+ }
+ else {
+ if(ob->data)
+ id_us_min((ID*)ob->data);
+ if(id)
+ id_us_plus(id);
+
+ ob->data= id;
+ test_object_materials(id);
+
+ if(GS(id->name)==ID_CU )
+ test_curve_type(ob);
+ else if(ob->type==OB_ARMATURE)
+ armature_rebuild_pose(ob, ob->data);
+ }
+}
+
+static StructRNA *rna_Object_data_typef(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->data;
+
+ switch(ob->type) {
+ case OB_MESH: return &RNA_Mesh;
+ case OB_CURVE: return &RNA_Curve;
+ case OB_SURF: return &RNA_Curve;
+ case OB_FONT: return &RNA_Curve;
+ case OB_MBALL: return &RNA_MetaBall;
+ case OB_LAMP: return &RNA_Lamp;
+ case OB_CAMERA: return &RNA_Camera;
+ case OB_LATTICE: return &RNA_Lattice;
+ case OB_ARMATURE: return &RNA_Armature;
+ default: return &RNA_ID;
+ }
+}
+
static int rna_VertexGroup_index_get(PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
@@ -167,14 +230,14 @@ void rna_object_vcollayer_name_set(PointerRNA *ptr, const char *value, char *res
static void rna_Object_active_material_index_range(PointerRNA *ptr, int *min, int *max)
{
Object *ob= (Object*)ptr->id.data;
- *min= 0;
- *max= ob->totcol-1;
+ *min= 1;
+ *max= ob->totcol;
}
static PointerRNA rna_Object_active_material_get(PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
- return rna_pointer_inherit_refine(ptr, &RNA_Material, give_current_material(ob, ob->actcol));
+ return rna_pointer_inherit_refine(ptr, &RNA_MaterialSlot, ob->mat+ob->actcol);
}
#if 0
@@ -186,20 +249,76 @@ static void rna_Object_active_material_set(PointerRNA *ptr, PointerRNA value)
}
#endif
-static int rna_Object_active_material_link_get(PointerRNA *ptr)
+static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ Material *ma;
+ int index= (Material**)ptr->data - ob->mat;
+
+ ma= give_current_material(ob, index+1);
+ return rna_pointer_inherit_refine(ptr, &RNA_Material, ma);
+}
+
+static void rna_MaterialSlot_material_set(PointerRNA *ptr, PointerRNA value)
+{
+ Object *ob= (Object*)ptr->id.data;
+ int index= (Material**)ptr->data - ob->mat;
+
+ assign_material(ob, value.data, index+1);
+}
+
+static int rna_MaterialSlot_link_get(PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
- return (ob->colbits & 1<<(ob->actcol)) != 0;
+ int index= (Material**)ptr->data - ob->mat;
+
+ return (ob->colbits & (1<<index)) != 0;
}
-static void rna_Object_active_material_link_set(PointerRNA *ptr, int value)
+static void rna_MaterialSlot_link_set(PointerRNA *ptr, int value)
{
Object *ob= (Object*)ptr->id.data;
+ int index= (Material**)ptr->data - ob->mat;
if(value)
- ob->colbits |= (1<<(ob->actcol));
+ ob->colbits |= (1<<index);
+ else
+ ob->colbits &= ~(1<<index);
+}
+
+static int rna_MaterialSlot_name_length(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ Material *ma;
+ int index= (Material**)ptr->data - ob->mat;
+
+ ma= give_current_material(ob, index+1);
+
+ if(ma)
+ return strlen(ma->id.name+2);
+
+ return 0;
+}
+
+static void rna_MaterialSlot_name_get(PointerRNA *ptr, char *str)
+{
+ Object *ob= (Object*)ptr->id.data;
+ Material *ma;
+ int index= (Material**)ptr->data - ob->mat;
+
+ ma= give_current_material(ob, index+1);
+
+ if(ma)
+ strcpy(str, ma->id.name+2);
else
- ob->colbits &= ~(1<<(ob->actcol));
+ strcpy(str, "");
+}
+
+static PointerRNA rna_Object_active_particle_system_get(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ ParticleSystem *psys= psys_get_current(ob);
+ return rna_pointer_inherit_refine(ptr, &RNA_ParticleSystem, psys);
}
static PointerRNA rna_Object_game_settings_get(PointerRNA *ptr)
@@ -231,7 +350,7 @@ static void rna_GameObjectSettings_state_set(PointerRNA *ptr, const int *values)
Object *ob= (Object*)ptr->data;
int i, tot= 0;
- /* ensure we always have some stateer selected */
+ /* ensure we always have some state selected */
for(i=0; i<20; i++)
if(values[i])
tot++;
@@ -255,6 +374,7 @@ static void rna_def_vertex_group(BlenderRNA *brna)
srna= RNA_def_struct(brna, "VertexGroup", NULL);
RNA_def_struct_sdna(srna, "bDeformGroup");
RNA_def_struct_ui_text(srna, "Vertex Group", "Group of vertices, used for armature deform and other purposes.");
+ RNA_def_struct_ui_icon(srna, ICON_GROUP_VERTEX);
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Vertex group name.");
@@ -266,6 +386,42 @@ static void rna_def_vertex_group(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Index", "Index number of the vertex group.");
}
+static void rna_def_material_slot(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem link_items[] = {
+ {0, "DATA", "Data", ""},
+ {1, "OBJECT", "Object", ""},
+ {0, NULL, NULL, NULL}};
+
+ /* NOTE: there is no MaterialSlot equivalent in DNA, so the internal
+ * pointer data points to ob->mat + index, and we manually implement
+ * get/set for the properties. */
+
+ srna= RNA_def_struct(brna, "MaterialSlot", NULL);
+ RNA_def_struct_ui_text(srna, "Material Slot", "Material slot in an object.");
+ RNA_def_struct_ui_icon(srna, ICON_MATERIAL_DATA);
+
+ prop= RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Material");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(prop, "rna_MaterialSlot_material_get", "rna_MaterialSlot_material_set", NULL);
+ RNA_def_property_ui_text(prop, "Material", "Material datablock used by this material slot.");
+
+ prop= RNA_def_property(srna, "link", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, link_items);
+ RNA_def_property_enum_funcs(prop, "rna_MaterialSlot_link_get", "rna_MaterialSlot_link_set", NULL);
+ RNA_def_property_ui_text(prop, "Link", "Link material to object or the object's data.");
+
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_funcs(prop, "rna_MaterialSlot_name_get", "rna_MaterialSlot_name_length", NULL);
+ RNA_def_property_ui_text(prop, "Name", "Material slot name.");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_struct_name_property(srna, prop);
+}
+
static void rna_def_object_game_settings(BlenderRNA *brna)
{
StructRNA *srna;
@@ -293,6 +449,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "Object");
RNA_def_struct_nested(brna, srna, "Object");
RNA_def_struct_ui_text(srna, "Game Object Settings", "Game engine related settings for the object.");
+ RNA_def_struct_ui_icon(srna, ICON_GAME);
/* logic */
@@ -498,11 +655,6 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
{OB_BOUND_POLYH, "POLYHEDER", "Polyheder", ""},
{0, NULL, NULL, NULL}};
- static EnumPropertyItem material_link_items[] = {
- {0, "DATA", "Data", ""},
- {1, "OBJECT", "Object", ""},
- {0, NULL, NULL, NULL}};
-
static EnumPropertyItem dupli_items[] = {
{0, "NONE", "None", ""},
{OB_DUPLIFRAMES, "FRAMES", "Frames", "Make copy of object for every frame."},
@@ -513,10 +665,16 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Object", "ID");
RNA_def_struct_ui_text(srna, "Object", "Object datablock defining an object in a scene..");
+ RNA_def_struct_clear_flag(srna, STRUCT_ID_REFCOUNT);
+ RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA);
prop= RNA_def_property(srna, "data", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "ID");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_Object_data_set", "rna_Object_data_typef");
+ RNA_def_property_editable_func(prop, "rna_Object_data_editable");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Data", "Object data.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update_data");
prop= RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "lay", 1);
@@ -556,6 +714,7 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Parent Bone", "Name of parent bone in case of a bone parenting relation.");
prop= RNA_def_property(srna, "track", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Track", "Object being tracked to define the rotation (Old Track).");
prop= RNA_def_property(srna, "track_axis", PROP_ENUM, PROP_NONE);
@@ -577,27 +736,21 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Proxy Group", "Library group duplicator object this proxy object controls.");
/* materials */
-
prop= RNA_def_property(srna, "materials", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "mat", "totcol");
- RNA_def_property_struct_type(prop, "Material");
- RNA_def_property_ui_text(prop, "Materials", "");
+ RNA_def_property_struct_type(prop, "MaterialSlot");
+ RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, "rna_iterator_array_get", 0, 0, 0); /* don't dereference pointer! */
+ RNA_def_property_ui_text(prop, "Materials", "Material slots in the object.");
prop= RNA_def_property(srna, "active_material", PROP_POINTER, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_struct_type(prop, "Material");
- RNA_def_property_pointer_funcs(prop, "rna_Object_active_material_get", NULL);
+ RNA_def_property_struct_type(prop, "MaterialSlot");
+ RNA_def_property_pointer_funcs(prop, "rna_Object_active_material_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Active Material", "Active material being displayed.");
prop= RNA_def_property(srna, "active_material_index", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "actcol");
RNA_def_property_int_funcs(prop, NULL, NULL, "rna_Object_active_material_index_range");
- RNA_def_property_ui_text(prop, "Active Material Index", "Index of active material.");
-
- prop= RNA_def_property(srna, "active_material_link", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_items(prop, material_link_items);
- RNA_def_property_enum_funcs(prop, "rna_Object_active_material_link_get", "rna_Object_active_material_link_set");
- RNA_def_property_ui_text(prop, "Active Material Link", "Use material from object or data for the active material.");
+ RNA_def_property_ui_text(prop, "Active Material Index", "Index of active material slot.");
/* transform */
@@ -659,7 +812,7 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "game", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "GameObjectSettings");
- RNA_def_property_pointer_funcs(prop, "rna_Object_game_settings_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Object_game_settings_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Game Settings", "Game engine related settings for the object.");
/* vertex groups */
@@ -671,7 +824,7 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "active_vertex_group", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "VertexGroup");
- RNA_def_property_pointer_funcs(prop, "rna_Object_active_vertex_group_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Object_active_vertex_group_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Active Vertex Group", "Vertex groups of the object.");
/* empty */
@@ -719,6 +872,11 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "ParticleSystem");
RNA_def_property_ui_text(prop, "Particle Systems", "Particle systems emitted from the object.");
+ prop= RNA_def_property(srna, "active_particle_system", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ParticleSystem");
+ RNA_def_property_pointer_funcs(prop, "rna_Object_active_particle_system_get", NULL, NULL);
+ RNA_def_property_ui_text(prop, "Active Particle System", "Active particle system being displayed");
+
/* restrict */
prop= RNA_def_property(srna, "restrict_view", PROP_BOOLEAN, PROP_NONE);
@@ -760,11 +918,12 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
RNA_def_property_enum_bitflag_sdna(prop, NULL, "transflag");
RNA_def_property_enum_items(prop, dupli_items);
RNA_def_property_ui_text(prop, "Dupli Type", "If not None, object duplication method to use.");
- RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_scene_update");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_dependency_update");
prop= RNA_def_property(srna, "dupli_frames_no_speed", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLINOSPEED);
RNA_def_property_ui_text(prop, "Dupli Frames No Speed", "Set dupliframes to still, regardless of frame.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
prop= RNA_def_property(srna, "dupli_verts_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLIROT);
@@ -774,6 +933,7 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "dupli_faces_inherit_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLIROT);
RNA_def_property_ui_text(prop, "Dupli Faces Inherit Scale", "Scale dupli based on face size.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
prop= RNA_def_property(srna, "dupli_faces_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dupfacesca");
@@ -783,39 +943,45 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "dupli_group", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "dup_group");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Dupli Group", "Instance an existing group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_dependency_update");
prop= RNA_def_property(srna, "dupli_frames_start", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dupsta");
RNA_def_property_range(prop, 1, 32767);
RNA_def_property_ui_text(prop, "Dupli Frames Start", "Start frame for DupliFrames.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
prop= RNA_def_property(srna, "dupli_frames_end", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dupend");
RNA_def_property_range(prop, 1, 32767);
RNA_def_property_ui_text(prop, "Dupli Frames End", "End frame for DupliFrames.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
prop= RNA_def_property(srna, "dupli_frames_on", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dupon");
RNA_def_property_range(prop, 1, 1500);
RNA_def_property_ui_text(prop, "Dupli Frames On", "Number of frames to use between DupOff frames.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
prop= RNA_def_property(srna, "dupli_frames_off", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dupoff");
RNA_def_property_range(prop, 0, 1500);
RNA_def_property_ui_text(prop, "Dupli Frames Off", "Recurring frames to exclude from the Dupliframes.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update");
/* time offset */
prop= RNA_def_property(srna, "time_offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sf");
RNA_def_property_range(prop, -MAXFRAMEF, MAXFRAMEF);
- RNA_def_property_ui_text(prop, "Time Offset", "Animation offset in frames for ipo's and dupligroup instances.");
+ RNA_def_property_ui_text(prop, "Time Offset", "Animation offset in frames for IPO's and dupligroup instances.");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update");
prop= RNA_def_property(srna, "time_offset_edit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_OB);
- RNA_def_property_ui_text(prop, "Time Offset Edit", "Use time offset when inserting keys and display time offset for ipo and action views.");
+ RNA_def_property_ui_text(prop, "Time Offset Edit", "Use time offset when inserting keys and display time offset for IPO and action views.");
prop= RNA_def_property(srna, "time_offset_parent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARENT);
@@ -836,7 +1002,6 @@ static StructRNA *rna_def_object(BlenderRNA *brna)
prop= RNA_def_property(srna, "script_link", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "scriptlink");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Script Link", "Scripts linked to this object.");
/* drawing */
@@ -947,6 +1112,7 @@ void RNA_def_object(BlenderRNA *brna)
rna_def_object(brna);
rna_def_object_game_settings(brna);
rna_def_vertex_group(brna);
+ rna_def_material_slot(brna);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index 22521528d68..4f4530e0424 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * Contributor(s): Blender Foundation (2008).
+ * Contributor(s): Blender Foundation (2008), Thomas Dinges
*
* ***** END GPL LICENSE BLOCK *****
*/
@@ -39,27 +39,258 @@
static void rna_def_pointcache(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
srna= RNA_def_struct(brna, "PointCache", NULL);
RNA_def_struct_ui_text(srna, "Point Cache", "Point cache for physics simulations.");
+
+ prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "startframe");
+ RNA_def_property_range(prop, 1, 300000);
+ RNA_def_property_ui_text(prop, "Start", "Frame on which the simulation starts.");
+
+ prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "endframe");
+ RNA_def_property_range(prop, 1, 300000);
+ RNA_def_property_ui_text(prop, "End", "Frame on which the simulation stops.");
+
+ /* flags */
+ prop= RNA_def_property(srna, "baked", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_BAKED);
+
+ prop= RNA_def_property(srna, "baking", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_BAKING);
}
static void rna_def_collision(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
srna= RNA_def_struct(brna, "CollisionSettings", NULL);
RNA_def_struct_sdna(srna, "PartDeflect");
RNA_def_struct_ui_text(srna, "Collision Settings", "Collision settings for object in physics simulation.");
+
+ prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "deflect", 1);
+ RNA_def_property_ui_text(prop, "Enabled", "Enable this objects as a collider for physics systems");
+
+ /* Particle Interaction */
+
+ prop= RNA_def_property(srna, "damping_factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_damp");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Damping Factor", "Amount of damping during particle collision");
+
+ prop= RNA_def_property(srna, "random_damping", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_rdamp");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Random Damping", "Random variation of damping");
+
+ prop= RNA_def_property(srna, "friction_factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_frict");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Friction Factor", "Amount of friction during particle collision");
+
+ prop= RNA_def_property(srna, "random_friction", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_rfrict");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Random Friction", "Random variation of friction");
+
+ prop= RNA_def_property(srna, "permeability", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_perm");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Permeability", "Chance that the particle will pass through the mesh");
+
+ prop= RNA_def_property(srna, "kill_particles", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PDEFLE_KILL_PART);
+ RNA_def_property_ui_text(prop, "Kill Particles", "Kill collided particles");
+
+ /* Soft Body and Cloth Interaction */
+
+ prop= RNA_def_property(srna, "inner_thickness", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_sbift");
+ RNA_def_property_range(prop, 0.001f, 1.0f);
+ RNA_def_property_ui_text(prop, "Inner Thickness", "Inner face thickness");
+
+ prop= RNA_def_property(srna, "outer_thickness", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_sboft");
+ RNA_def_property_range(prop, 0.001f, 1.0f);
+ RNA_def_property_ui_text(prop, "Outer Thickness", "Outer face thickness");
+
+ prop= RNA_def_property(srna, "damping", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "pdef_sbdamp");
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_text(prop, "Damping", "Amount of damping during collision");
+
+ /* Does this belong here?
+ prop= RNA_def_property(srna, "collision_stack", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "softflag", OB_SB_COLLFINAL);
+ RNA_def_property_ui_text(prop, "Collision from Stack", "Pick collision object from modifier stack (softbody only)");
+ */
}
static void rna_def_field(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem field_type_items[] = {
+ {0, "NONE", "None", ""},
+ {PFIELD_FORCE, "SPHERICAL", "Spherical", ""},
+ {PFIELD_VORTEX, "VORTEX", "Vortex", ""},
+ {PFIELD_MAGNET, "MAGNET", "Magnetic", ""},
+ {PFIELD_WIND, "WIND", "Wind", ""},
+ {PFIELD_GUIDE, "GUIDE", "Curve Guide", ""},
+ {PFIELD_TEXTURE, "TEXTURE", "Texture", ""},
+ {PFIELD_HARMONIC, "HARMONIC", "Harmonic", ""},
+ {PFIELD_CHARGE, "CHARGE", "Charge", ""},
+ {PFIELD_LENNARDJ, "LENNARDJ", "Lennard-Jones", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem falloff_items[] = {
+ {PFIELD_FALL_SPHERE, "SPHERE", "Sphere", ""},
+ {PFIELD_FALL_TUBE, "TUBE", "Tube", ""},
+ {PFIELD_FALL_CONE, "CONE", "Cone", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem texture_items[] = {
+ {PFIELD_TEX_RGB, "RGB", "RGB", ""},
+ {PFIELD_TEX_GRAD, "GRADIENT", "Gradient", ""},
+ {PFIELD_TEX_CURL, "CURL", "Curl", ""},
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "FieldSettings", NULL);
RNA_def_struct_sdna(srna, "PartDeflect");
RNA_def_struct_ui_text(srna, "Field Settings", "Field settings for an object in physics simulation.");
+
+ /* Enums */
+
+ prop= RNA_def_property(srna, "field_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "forcefield");
+ RNA_def_property_enum_items(prop, field_type_items);
+ RNA_def_property_ui_text(prop, "Field Type", "Choose Field Type");
+
+ prop= RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "falloff");
+ RNA_def_property_enum_items(prop, falloff_items);
+ RNA_def_property_ui_text(prop, "Fall-Off", "Fall-Off Shape");
+
+ prop= RNA_def_property(srna, "texture_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "tex_mode");
+ RNA_def_property_enum_items(prop, texture_items);
+ RNA_def_property_ui_text(prop, "Texture Mode", "How the texture effect is calculated (RGB & Curl need a RGB texture else Gradient will be used instead)");
+
+ /* Float */
+
+ prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f_strength");
+ RNA_def_property_range(prop, -1000.0f, 1000.0f);
+ RNA_def_property_ui_text(prop, "Strength", "Strength of force field");
+
+ prop= RNA_def_property(srna, "falloff_power", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f_power");
+ RNA_def_property_range(prop, 0.0f, 10.0f);
+ RNA_def_property_ui_text(prop, "Falloff Power", "Falloff power (real gravitational falloff = 2)");
+
+ prop= RNA_def_property(srna, "harmonic_damping", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f_damp");
+ RNA_def_property_range(prop, 0.0f, 10.0f);
+ RNA_def_property_ui_text(prop, "Harmonic Damping", "Damping of the harmonic force");
+
+ prop= RNA_def_property(srna, "minimum_distance", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "mindist");
+ RNA_def_property_range(prop, 0.0f, 1000.0f);
+ RNA_def_property_ui_text(prop, "Minimum Distance", "Minimum distance for the field's fall-off");
+
+ prop= RNA_def_property(srna, "maximum_distance", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "maxdist");
+ RNA_def_property_range(prop, 0.0f, 1000.0f);
+ RNA_def_property_ui_text(prop, "Maximum Distance", "Maximum distance for the field to work");
+
+ prop= RNA_def_property(srna, "radial_minimum", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "minrad");
+ RNA_def_property_range(prop, 0.0f, 1000.0f);
+ RNA_def_property_ui_text(prop, "Minimum Radial Distance", "Minimum radial distance for the field's fall-off");
+
+ prop= RNA_def_property(srna, "radial_maximum", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "maxrad");
+ RNA_def_property_range(prop, 0.0f, 1000.0f);
+ RNA_def_property_ui_text(prop, "Maximum Radial Distance", "Maximum radial distance for the field to work");
+
+ prop= RNA_def_property(srna, "radial_falloff", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f_power_r");
+ RNA_def_property_range(prop, 0.0f, 10.0f);
+ RNA_def_property_ui_text(prop, "Radial Falloff Power", "Radial falloff power (real gravitational falloff = 2)");
+
+ prop= RNA_def_property(srna, "texture_nabla", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "tex_nabla");
+ RNA_def_property_range(prop, 0.0001f, 1.0f);
+ RNA_def_property_ui_text(prop, "Nabla", "Defines size of derivative offset used for calculating gradient and curl");
+
+ prop= RNA_def_property(srna, "noise", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "f_noise");
+ RNA_def_property_range(prop, 0.0f, 10.0f);
+ RNA_def_property_ui_text(prop, "Noise", "Noise of the wind force");
+
+ prop= RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_range(prop, 1, 128);
+ RNA_def_property_ui_text(prop, "Seed", "Seed of the wind noise");
+
+ /* Boolean */
+
+ prop= RNA_def_property(srna, "use_min_distance", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_USEMIN);
+ RNA_def_property_ui_text(prop, "Use Min", "Use a minimum distance for the field's fall-off");
+
+ prop= RNA_def_property(srna, "use_max_distance", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_USEMAX);
+ RNA_def_property_ui_text(prop, "Use Max", "Use a maximum distance for the field to work");
+
+ prop= RNA_def_property(srna, "use_radial_min", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_USEMINR);
+ RNA_def_property_ui_text(prop, "Use Min", "Use a minimum radial distance for the field's fall-off");
+ // "Use a minimum angle for the field's fall-off"
+
+ prop= RNA_def_property(srna, "use_radial_max", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_USEMAXR);
+ RNA_def_property_ui_text(prop, "Use Max", "Use a maximum radial distance for the field to work");
+ // "Use a maximum angle for the field to work"
+
+ prop= RNA_def_property(srna, "guide_path_add", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_GUIDE_PATH_ADD);
+ RNA_def_property_ui_text(prop, "Additive", "Based on distance/falloff it adds a portion of the entire path");
+
+ prop= RNA_def_property(srna, "planar", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_PLANAR);
+ RNA_def_property_ui_text(prop, "Planar", "Create planar field");
+
+ prop= RNA_def_property(srna, "surface", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_SURFACE);
+ RNA_def_property_ui_text(prop, "Surface", "Use closest point on surface");
+
+ prop= RNA_def_property(srna, "positive_z", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_POSZ);
+ RNA_def_property_ui_text(prop, "Positive", "Effect only in direction of positive Z axis");
+
+ prop= RNA_def_property(srna, "use_coordinates", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_TEX_OBJECT);
+ RNA_def_property_ui_text(prop, "Use Coordinates", "Use object/global coordinates for texture");
+
+ prop= RNA_def_property(srna, "force_2d", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_TEX_2D);
+ RNA_def_property_ui_text(prop, "2D", "Apply force only in 2d");
+
+ prop= RNA_def_property(srna, "root_coordinates", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_TEX_ROOTCO);
+ RNA_def_property_ui_text(prop, "Root Texture Coordinates", "Texture coordinates from root particle locations");
+
+ /* Pointer */
+
+ prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "tex");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Texture", "Texture to use as force");
}
static void rna_def_game_softbody(BlenderRNA *brna)
@@ -90,4 +321,3 @@ void RNA_def_object_force(BlenderRNA *brna)
}
#endif
-
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index 2b65f890bd2..8d23f9538a5 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -22,6 +22,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include <stdio.h>
#include <stdlib.h>
#include "limits.h"
@@ -33,9 +34,60 @@
#include "DNA_particle_types.h"
#include "DNA_object_force.h"
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+
+#include "WM_types.h"
#ifdef RNA_RUNTIME
+#include "BKE_context.h"
+#include "BKE_depsgraph.h"
+#include "BKE_particle.h"
+
+static void rna_Particle_redo(bContext *C, PointerRNA *ptr)
+{
+ ParticleSettings *part;
+ if(ptr->type==&RNA_ParticleSystem)
+ part = ((ParticleSystem*)ptr->data)->part;
+ else
+ part = ptr->id.data;
+
+ psys_flush_particle_settings(CTX_data_scene(C), part, PSYS_RECALC_REDO);
+}
+
+static void rna_Particle_reset(bContext *C, PointerRNA *ptr)
+{
+ ParticleSettings *part;
+ if(ptr->type==&RNA_ParticleSystem)
+ part = ((ParticleSystem*)ptr->data)->part;
+ else
+ part = ptr->id.data;
+
+ psys_flush_particle_settings(CTX_data_scene(C), part, PSYS_RECALC_RESET|PSYS_RECALC_REDO);
+}
+
+static void rna_Particle_change_type(bContext *C, PointerRNA *ptr)
+{
+ ParticleSettings *part;
+ if(ptr->type==&RNA_ParticleSystem)
+ part = ((ParticleSystem*)ptr->data)->part;
+ else
+ part = ptr->id.data;
+
+ psys_flush_particle_settings(CTX_data_scene(C), part, PSYS_RECALC_RESET|PSYS_RECALC_TYPE|PSYS_RECALC_REDO);
+}
+
+static void rna_Particle_redo_child(bContext *C, PointerRNA *ptr)
+{
+ ParticleSettings *part;
+ if(ptr->type==&RNA_ParticleSystem)
+ part = ((ParticleSystem*)ptr->data)->part;
+ else
+ part = ptr->id.data;
+
+ psys_flush_particle_settings(CTX_data_scene(C), part, PSYS_RECALC_CHILD);
+}
static void rna_PartSettings_start_set(struct PointerRNA *ptr, float value)
{
ParticleSettings *settings = (ParticleSettings*)ptr->data;
@@ -86,6 +138,109 @@ static float rna_PartSetting_linelenhead_get(struct PointerRNA *ptr)
ParticleSettings *settings = (ParticleSettings*)ptr->data;
return settings->draw_line[1];
}
+
+static int rna_ParticleSystem_name_length(PointerRNA *ptr)
+{
+ ParticleSystem *psys= ptr->data;
+
+ if(psys->part)
+ return strlen(psys->part->id.name+2);
+
+ return 0;
+}
+
+static void rna_ParticleSystem_name_get(PointerRNA *ptr, char *str)
+{
+ ParticleSystem *psys= ptr->data;
+
+ if(psys->part)
+ strcpy(str, psys->part->id.name+2);
+ else
+ strcpy(str, "");
+}
+
+static EnumPropertyItem from_items[] = {
+ {PART_FROM_VERT, "VERT", "Vertexes", ""},
+ {PART_FROM_FACE, "FACE", "Faces", ""},
+ {PART_FROM_VOLUME, "VOLUME", "Volume", ""},
+ {0, NULL, NULL, NULL}
+};
+
+static EnumPropertyItem reactor_from_items[] = {
+ {PART_FROM_VERT, "VERT", "Vertexes", ""},
+ {PART_FROM_FACE, "FACE", "Faces", ""},
+ {PART_FROM_VOLUME, "VOLUME", "Volume", ""},
+ {PART_FROM_PARTICLE, "PARTICLE", "Particle", ""},
+ {0, NULL, NULL, NULL}
+};
+
+static EnumPropertyItem *rna_Particle_from_itemf(PointerRNA *ptr)
+{
+ ParticleSettings *part = ptr->id.data;
+
+ if(part->type==PART_REACTOR)
+ return reactor_from_items;
+ else
+ return from_items;
+}
+
+static EnumPropertyItem draw_as_items[] = {
+ {PART_DRAW_NOT, "NONE", "None", ""},
+ {PART_DRAW_REND, "RENDER", "Rendered", ""},
+ {PART_DRAW_DOT, "DOT", "Point", ""},
+ {PART_DRAW_CIRC, "CIRC", "Circle", ""},
+ {PART_DRAW_CROSS, "CROSS", "Cross", ""},
+ {PART_DRAW_AXIS, "AXIS", "Axis", ""},
+ {0, NULL, NULL, NULL}
+};
+
+static EnumPropertyItem hair_draw_as_items[] = {
+ {PART_DRAW_NOT, "NONE", "None", ""},
+ {PART_DRAW_REND, "RENDER", "Rendered", ""},
+ {PART_DRAW_PATH, "PATH", "Path", ""},
+ {0, NULL, NULL, NULL}
+};
+
+static EnumPropertyItem ren_as_items[] = {
+ {PART_DRAW_NOT, "NONE", "None", ""},
+ {PART_DRAW_HALO, "HALO", "Halo", ""},
+ {PART_DRAW_LINE, "LINE", "Line", ""},
+ {PART_DRAW_PATH, "PATH", "Path", ""},
+ {PART_DRAW_OB, "OBJECT", "Object", ""},
+ {PART_DRAW_GR, "GROUP", "Group", ""},
+ {PART_DRAW_BB, "BILLBOARD", "Billboard", ""},
+ {0, NULL, NULL, NULL}
+};
+
+static EnumPropertyItem hair_ren_as_items[] = {
+ {PART_DRAW_NOT, "NONE", "None", ""},
+ {PART_DRAW_PATH, "PATH", "Path", ""},
+ {PART_DRAW_OB, "OBJECT", "Object", ""},
+ {PART_DRAW_GR, "GROUP", "Group", ""},
+ {0, NULL, NULL, NULL}
+};
+
+static EnumPropertyItem *rna_Particle_draw_as_itemf(PointerRNA *ptr)
+{
+ ParticleSettings *part = ptr->id.data;
+
+ if(part->type==PART_HAIR)
+ return hair_draw_as_items;
+ else
+ return draw_as_items;
+}
+
+static EnumPropertyItem *rna_Particle_ren_as_itemf(PointerRNA *ptr)
+{
+ ParticleSettings *part = ptr->id.data;
+
+ if(part->type==PART_HAIR)
+ return hair_ren_as_items;
+ else
+ return ren_as_items;
+}
+
+
#else
static void rna_def_particle_hair_key(BlenderRNA *brna)
@@ -173,6 +328,7 @@ static void rna_def_particle(BlenderRNA *brna)
prop= RNA_def_property(srna, "stick_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "stick_ob");
RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Stick Object", "Object that particle sticks to when dead");
// ParticleKey state; /* normally current global coordinates or */
@@ -300,16 +456,6 @@ static void rna_def_particle_settings(BlenderRNA *brna)
{PART_EMITTER, "EMITTER", "Emitter", ""},
{PART_REACTOR, "REACTOR", "Reactor", ""},
{PART_HAIR, "HAIR", "Hair", ""},
- {PART_FLUID, "FLUID", "Fluid", ""},
- {0, NULL, NULL, NULL}
- };
-
- static EnumPropertyItem from_items[] = {
- {PART_FROM_VERT, "VERT", "Vertexes", ""},
- {PART_FROM_FACE, "FACE", "Faces", ""},
- {PART_FROM_VOLUME, "VOLUME", "Volume", ""},
- {PART_FROM_PARTICLE, "PARTICLE", "Particle", ""},
- {PART_FROM_CHILD, "CHILD", "Child", ""},
{0, NULL, NULL, NULL}
};
@@ -321,7 +467,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
};
static EnumPropertyItem phys_type_items[] = {
- {PART_PHYS_NO, "NO", "no", ""},
+ {PART_PHYS_NO, "NO", "No", ""},
{PART_PHYS_NEWTON, "NEWTON", "Newtonian", ""},
{PART_PHYS_KEYED, "KEYED", "Keyed", ""},
{PART_PHYS_BOIDS, "BOIDS", "Boids", ""},
@@ -355,20 +501,6 @@ static void rna_def_particle_settings(BlenderRNA *brna)
{0, NULL, NULL, NULL}
};
- static EnumPropertyItem draw_as_items[] = {
- {PART_DRAW_NOT, "NONE", "None", ""},
- {PART_DRAW_DOT, "DOT", "Point", ""},
- {PART_DRAW_CIRC, "CIRC", "Circle", ""},
- {PART_DRAW_CROSS, "CROSS", "Cross", ""},
- {PART_DRAW_AXIS, "AXIS", "Axis", ""},
- {PART_DRAW_LINE, "LINE", "Line", ""},
- {PART_DRAW_PATH, "PATH", "Path", ""},
- {PART_DRAW_OB, "OBJECT", "Object", ""},
- {PART_DRAW_GR, "GROUP", "Group", ""},
- {PART_DRAW_BB, "BILLBOARD", "Billboard", ""},
- {0, NULL, NULL, NULL}
- };
-
static EnumPropertyItem child_type_items[] = {
{0, "NONE", "None", ""},
{PART_CHILD_PARTICLES, "PARTICLES", "Particles", ""},
@@ -434,20 +566,25 @@ static void rna_def_particle_settings(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ParticleSettings", "ID");
RNA_def_struct_ui_text(srna, "Particle Settings", "Particle settings, reusable by multiple particle systems.");
+ RNA_def_struct_ui_icon(srna, ICON_PARTICLE_DATA);
/* flag */
prop= RNA_def_property(srna, "react_start_end", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_REACT_STA_END);
RNA_def_property_ui_text(prop, "Start/End", "Give birth to unreacted particles eventually.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "react_multiple", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_REACT_MULTIPLE);
RNA_def_property_ui_text(prop, "Multi React", "React multiple times.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "loop", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_LOOP);
RNA_def_property_ui_text(prop, "Loop", "Loop particle lives.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
+ /* TODO: used somewhere? */
prop= RNA_def_property(srna, "hair_geometry", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_HAIR_GEOMETRY);
RNA_def_property_ui_text(prop, "Hair Geometry", "");//TODO: tooltip
@@ -455,83 +592,104 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "unborn", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_UNBORN);
RNA_def_property_ui_text(prop, "Unborn", "Show particles before they are emitted.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "died", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_DIED);
RNA_def_property_ui_text(prop, "Died", "Show particles after they have died");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "trand", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_TRAND);
RNA_def_property_ui_text(prop, "Random", "Emit in random order of elements");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "even_distribution", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_EDISTR);
RNA_def_property_ui_text(prop, "Even Distribution", "Use even distribution from faces based on face areas or edge lengths.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "sticky", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_STICKY);
RNA_def_property_ui_text(prop, "Sticky", "Particles stick to collided objects if they die in the collision.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "die_on_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_DIE_ON_COL);
RNA_def_property_ui_text(prop, "Die on hit", "Particles die when they collide with a deflector object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "size_deflect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SIZE_DEFL);
RNA_def_property_ui_text(prop, "Size Deflect", "Use particle's size in deflection.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "rotation_dynamic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ROT_DYN);
RNA_def_property_ui_text(prop, "Dynamic", "Sets rotation to dynamic/constant");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "sizemass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SIZEMASS);
RNA_def_property_ui_text(prop, "Mass from Size", "Multiply mass with particle size.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "abs_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ABS_LENGTH);
RNA_def_property_ui_text(prop, "Abs Length", "Use maximum length for children");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "absolute_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ABS_TIME);
RNA_def_property_ui_text(prop, "Absolute Time", "Set all ipos that work on particles to be calculated in absolute/relative time.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "global_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_GLOB_TIME);
RNA_def_property_ui_text(prop, "Global Time", "Set all ipos that work on particles to be calculated in global/object time.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "boids_2d", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_BOIDS_2D);
RNA_def_property_ui_text(prop, "Boids 2D", "Constrain boids to a surface");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "branching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_BRANCHING);
RNA_def_property_ui_text(prop, "Branching", "Branch child paths from each other.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "animate_branching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ANIM_BRANCHING);
RNA_def_property_ui_text(prop, "Animated", "Animate branching");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "symmetric_branching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SYMM_BRANCHING);
RNA_def_property_ui_text(prop, "Symmetric", "Start and end points are the same.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "hair_bspline", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_HAIR_BSPLINE);
RNA_def_property_ui_text(prop, "B-Spline", "Interpolate hair using B-Splines.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "grid_invert", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_GRID_INVERT);
RNA_def_property_ui_text(prop, "Invert", "Invert what is considered object and what is not.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "child_effector", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_EFFECT);
RNA_def_property_ui_text(prop, "Children", "Apply effectors to children.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "child_seams", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_SEAMS);
RNA_def_property_ui_text(prop, "Use seams", "Use seams to determine parents");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
+ /* TODO: used somewhere? */
prop= RNA_def_property(srna, "child_render", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_RENDER);
RNA_def_property_ui_text(prop, "child_render", "");
@@ -539,129 +697,164 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "child_guide", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_GUIDE);
RNA_def_property_ui_text(prop, "child_guide", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "self_effect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SELF_EFFECT);
RNA_def_property_ui_text(prop, "Self Effect", "Particle effectors effect themselves.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Type", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_change_type");
prop= RNA_def_property(srna, "emit_from", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "from");
- RNA_def_property_enum_items(prop, from_items);
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Particle_from_itemf");
RNA_def_property_ui_text(prop, "Emit From", "Where to emit particles from");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "distribution", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "distr");
RNA_def_property_enum_items(prop, dist_items);
RNA_def_property_ui_text(prop, "Distribution", "How to distribute particles on selected element");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* physics modes */
prop= RNA_def_property(srna, "physics_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "phystype");
RNA_def_property_enum_items(prop, phys_type_items);
RNA_def_property_ui_text(prop, "Physics Type", "Particle physics type");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "rotation_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "rotmode");
RNA_def_property_enum_items(prop, rot_mode_items);
RNA_def_property_ui_text(prop, "Rotation", "Particles initial rotation");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "angular_velocity_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "avemode");
RNA_def_property_enum_items(prop, ave_mode_items);
RNA_def_property_ui_text(prop, "Angular Velocity Mode", "Particle angular velocity mode.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "react_event", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "reactevent");
RNA_def_property_enum_items(prop, react_event_items);
RNA_def_property_ui_text(prop, "React On", "The event of target particles to react on.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/*draw flag*/
prop= RNA_def_property(srna, "velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_VEL);
RNA_def_property_ui_text(prop, "Velocity", "Show particle velocity");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
- /* used?
- prop= RNA_def_property(srna, "angle", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_ANG);
- RNA_def_property_ui_text(prop, "Angle", "");
- */
+ //prop= RNA_def_property(srna, "draw_path_length", PROP_BOOLEAN, PROP_NONE);
+ //RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_PATH_LEN);
+ //RNA_def_property_ui_text(prop, "Path length", "Draw path length");
+ //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "show_size", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_SIZE);
RNA_def_property_ui_text(prop, "Size", "Show particle size");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "emitter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_EMITTER);
RNA_def_property_ui_text(prop, "Emitter", "Render emitter Object also.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
- /* used?
- prop= RNA_def_property(srna, "adapt", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_ADAPT);
- RNA_def_property_ui_text(prop, "adapt", "");
+ //prop= RNA_def_property(srna, "draw_health", PROP_BOOLEAN, PROP_NONE);
+ //RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_HEALTH);
+ //RNA_def_property_ui_text(prop, "Health", "Draw boid health");
+ //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
- prop= RNA_def_property(srna, "cos", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_COS);
- RNA_def_property_ui_text(prop, "cos", "");
- */
+ //prop= RNA_def_property(srna, "timed_path", PROP_BOOLEAN, PROP_NONE);
+ //RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_TIMED_PATH);
+ //RNA_def_property_ui_text(prop, "Clip with time", "Clip path based on time");
+ //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+
+ //prop= RNA_def_property(srna, "draw_cached_path", PROP_BOOLEAN, PROP_NONE);
+ //RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_CACHED_PATH);
+ //RNA_def_property_ui_text(prop, "Path", "Draw particle path if the path is baked");
+ //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "billboard_lock", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_BB_LOCK);
RNA_def_property_ui_text(prop, "Lock Billboard", "Lock the billboards align axis");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "parent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_PARENT);
RNA_def_property_ui_text(prop, "Parents", "Render parent particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "num", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_NUM);
RNA_def_property_ui_text(prop, "Number", "Show particle number");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "rand_group", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_RAND_GR);
RNA_def_property_ui_text(prop, "Pick Random", "Pick objects from group randomly");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "render_adaptive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_REN_ADAPT);
RNA_def_property_ui_text(prop, "Adaptive render", "Draw steps of the particle path");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "velocity_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_VEL_LENGTH);
RNA_def_property_ui_text(prop, "Speed", "Multiply line length by particle speed");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "material_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_MAT_COL);
RNA_def_property_ui_text(prop, "Material Color", "Draw particles using material's diffuse color.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "whole_group", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_WHOLE_GR);
- RNA_def_property_ui_text(prop, "Dupli Group", "Use whole group at once.");
+ RNA_def_property_ui_text(prop, "Whole Group", "Use whole group at once.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "render_strand", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_REN_STRAND);
RNA_def_property_ui_text(prop, "Strand render", "Use the strand primitive for rendering");
-
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "draw_as", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_items(prop, draw_as_items);
- RNA_def_property_ui_text(prop, "Particle Visualization", "How particles are visualized");
+ RNA_def_property_enum_sdna(prop, NULL, "draw_as");
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Particle_draw_as_itemf");
+ RNA_def_property_ui_text(prop, "Particle Drawing", "How particles are drawn in viewport");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+
+ prop= RNA_def_property(srna, "ren_as", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "ren_as");
+ RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Particle_ren_as_itemf");
+ RNA_def_property_ui_text(prop, "Particle Rendering", "How particles are rendered");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "draw_size", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Draw Size", "Size of particles on viewport in pixels (0=default)");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "child_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "childtype");
RNA_def_property_enum_items(prop, child_type_items);
RNA_def_property_ui_text(prop, "Children From", "Create child particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "draw_step", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, 0, 7);
RNA_def_property_ui_text(prop, "Steps", "How many steps paths are drawn with (power of 2)");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "render_step", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ren_step");
@@ -670,7 +863,9 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "hair_step", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, 2, 50);
- RNA_def_property_ui_text(prop, "Segments", "Amount of hair segments");
+ RNA_def_property_ui_text(prop, "Segments", "Number of hair segments");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+
//TODO: not found in UI, readonly?
prop= RNA_def_property(srna, "keys_step", PROP_INT, PROP_NONE);
@@ -692,11 +887,13 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "disp");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Display", "Percentage of particles to display in 3d view");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "material", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "omat");
RNA_def_property_range(prop, 1, 16);
RNA_def_property_ui_text(prop, "Material", "Specify material used for the particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
//interpolation
@@ -711,14 +908,17 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "integrator", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, integrator_type_items);
RNA_def_property_ui_text(prop, "Integration", "Select physics integrator type");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "kink", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, kink_type_items);
RNA_def_property_ui_text(prop, "Kink", "Type of periodic offset on the path");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "kink_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, kink_axis_items);
RNA_def_property_ui_text(prop, "Axis", "Which axis to use for offset");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
/* used?
prop= RNA_def_property(srna, "inbetween", PROP_INT, PROP_NONE);
@@ -731,12 +931,14 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "boidneighbours");
RNA_def_property_range(prop, 1, 10);
RNA_def_property_ui_text(prop, "Neighbours", "How many neighbours to consider for each boid");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* billboards */
prop= RNA_def_property(srna, "billboard_align", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "bb_align");
RNA_def_property_enum_items(prop, bb_align_items);
RNA_def_property_ui_text(prop, "Align to", "In respect to what the billboards are aligned");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "billboard_uv_split", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "bb_uv_split");
@@ -757,17 +959,20 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "bb_tilt");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Tilt", "Tilt of the billboards");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "billboard_random_tilt", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "bb_rand_tilt");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Tilt", "Random tilt of the billboards");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "billboard_offset", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "bb_offset");
RNA_def_property_array(prop, 2);
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Billboard Offset", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
/* simplification */
prop= RNA_def_property(srna, "enable_simplify", PROP_BOOLEAN, PROP_NONE);
@@ -801,132 +1006,158 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_range(prop, -30000.0f, 30000.0f); //TODO: replace 30000 with MAXFRAMEF when available in 2.5
RNA_def_property_float_funcs(prop, NULL, "rna_PartSettings_start_set", NULL);
RNA_def_property_ui_text(prop, "Start", "Frame # to start emitting particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "end", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, -30000.0f, 30000.0f); //TODO: replace 30000 with MAXFRAMEF when available in 2.5
RNA_def_property_float_funcs(prop, NULL, "rna_PartSettings_end_set", NULL);
RNA_def_property_ui_text(prop, "End", "Frame # to stop emitting particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "lifetime", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 1.0f, 30000.0f);
RNA_def_property_ui_text(prop, "Lifetime", "Specify the life span of the particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "random_lifetime", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randlife");
- RNA_def_property_range(prop, 0.0f, 2.0f);
+ RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random", "Give the particle life a random variation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "time_tweak", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "timetweak");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Tweak", "A multiplier for physics timestep (1.0 means one frame = 1/25 seconds)");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "jitter_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "jitfac");
RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Amount", "Amount of jitter applied to the sampling.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "keyed_time", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Time", "Keyed key time relative to remaining particle life.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "effect_hair", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "eff_hair");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Stiffnes", "Hair stiffness for effectors");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
//float rt; TODO:find where rt is used - can't find it in UI
- prop= RNA_def_property(srna, "total_particles", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "amount", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "totpart");
RNA_def_property_range(prop, 0, 100000);
- RNA_def_property_ui_text(prop, "Particle Amount", "The total number of particles.");
+ RNA_def_property_ui_text(prop, "Amount", "Total number of particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "userjit", PROP_INT, PROP_UNSIGNED);//TODO: can we get a better name for userjit?
RNA_def_property_int_sdna(prop, NULL, "userjit");
RNA_def_property_range(prop, 0, 1000);
RNA_def_property_ui_text(prop, "P/F", "Emission locations / face (0 = automatic).");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "grid_resolution", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "grid_res");
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Resolution", "The resolution of the particle grid.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* initial velocity factors */
prop= RNA_def_property(srna, "normal_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "normfac");//optional if prop names are the same
RNA_def_property_range(prop, -200.0f, 200.0f);
RNA_def_property_ui_text(prop, "Normal", "Let the surface normal give the particle a starting speed.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "object_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "obfac");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Object", "Let the object give the particle a starting speed");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "random_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randfac");//optional if prop names are the same
RNA_def_property_range(prop, 0.0f, 200.0f);
RNA_def_property_ui_text(prop, "Random", "Give the starting speed a random variation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "particle_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "partfac");
RNA_def_property_range(prop, -10.0f, 10.0f);
RNA_def_property_ui_text(prop, "Particle", "Let the target particle give the particle a starting speed.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "tangent_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "tanfac");
RNA_def_property_range(prop, -200.0f, 200.0f);
RNA_def_property_ui_text(prop, "Tangent", "Let the surface tangent give the particle a starting speed.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "tangent_phase", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "tanphase");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Rot", "Rotate the surface tangent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "reactor_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "reactfac");
RNA_def_property_range(prop, -10.0f, 10.0f);
RNA_def_property_ui_text(prop, "Reactor", "Let the vector away from the target particles location give the particle a starting speed.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "angular_velocity_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "avefac");
RNA_def_property_range(prop, -200.0f, 200.0f);
RNA_def_property_ui_text(prop, "Angular Velocity", "Angular velocity amount");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "phase_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "phasefac");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Phase", "Initial rotation phase");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "random_rotation_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randrotfac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Rotation", "Randomize rotation");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "random_phase_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randphasefac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Phase", "Randomize rotation phase");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* physical properties */
prop= RNA_def_property(srna, "mass", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.01f, 100.0f);
RNA_def_property_ui_text(prop, "Mass", "Specify the mass of the particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "particle_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "size");
RNA_def_property_range(prop, 0.01f, 100.0f);
RNA_def_property_ui_text(prop, "Size", "The size of the particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "random_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randsize");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Size", "Give the particle size a random variation");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "reaction_shape", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "reactshape");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Shape", "Power of reaction strength dependence on distance to target.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* global physical properties */
@@ -935,21 +1166,25 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_range(prop, -200.0f, 200.0f);
RNA_def_property_ui_text(prop, "Accelaration", "Constant acceleration");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "drag_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dragfac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Drag", "Specify the amount of air-drag.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "brownian_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "brownfac");
RNA_def_property_range(prop, 0.0f, 200.0f);
RNA_def_property_ui_text(prop, "Brownian", "Specify the amount of brownian motion");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "damp_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampfac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Damp", "Specify the amount of damping");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* length */
//TODO: is this readonly?
@@ -962,64 +1197,75 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "abslength");
RNA_def_property_range(prop, 0.0f, 10000.0f);
RNA_def_property_ui_text(prop, "Max Length", "Absolute maximum path length for children, in blender units.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "random_length", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randlength");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Length", "Give path length a random variation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
/* children */
- prop= RNA_def_property(srna, "child_nbr", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "child_nbr");//optional if prop names are the same
- RNA_def_property_range(prop, 0.0f, MAX_PART_CHILDREN);
+ prop= RNA_def_property(srna, "child_nbr", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "child_nbr");//optional if prop names are the same
+ RNA_def_property_range(prop, 0, MAX_PART_CHILDREN);
RNA_def_property_ui_text(prop, "Children Per Parent", "Amount of children/parent");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rendered_child_nbr", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "ren_child_nbr");
- RNA_def_property_range(prop, 0.0f, MAX_PART_CHILDREN);
+ prop= RNA_def_property(srna, "rendered_child_nbr", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "ren_child_nbr");
+ RNA_def_property_range(prop, 0, MAX_PART_CHILDREN);
RNA_def_property_ui_text(prop, "Rendered Children", "Amount of children/parent for rendering.");
prop= RNA_def_property(srna, "virtual_parents", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "parents");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Virtual Parents", "Relative amount of virtual parents.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "child_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "childsize");
RNA_def_property_range(prop, 0.01f, 100.0f);
RNA_def_property_ui_text(prop, "Child Size", "A multiplier for the child particle size.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "child_random_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "childrandsize");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Child Size", "Random variation to the size of the child particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "child_radius", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "childrad");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Child Radius", "Radius of children around parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "child_roundness", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "childflat");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Child Roundness", "Roundness of children around parent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
//TODO: is this readonly?
prop= RNA_def_property(srna, "child_spread", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "childspread");
// RNA_def_property_range(prop, 0.0f, upperLimitf); TODO: limits
RNA_def_property_ui_text(prop, "Child Spread", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
/* clumping */
prop= RNA_def_property(srna, "clump_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clumpfac");
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_ui_text(prop, "Clump", "Amount of clumping");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "clumppow", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clumppow");
RNA_def_property_range(prop, -0.999f, 0.999f);
RNA_def_property_ui_text(prop, "Shape", "Shape of clumping");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
/* kink */
@@ -1027,101 +1273,121 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "kink_amp");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Amplitude", "The amplitude of the offset.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "kink_frequency", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "kink_freq");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Frequency", "The frequency of the offset (1/total length)");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "kink_shape", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, -0.999f, 0.999f);
RNA_def_property_ui_text(prop, "Shape", "Adjust the offset to the beginning/end");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
/* rough */
prop= RNA_def_property(srna, "rough1", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Rough1", "Amount of location dependent rough.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "rough1_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.01f, 10.0f);
RNA_def_property_ui_text(prop, "Size1", "Size of location dependent rough.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "rough2", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough2");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Rough2", "Amount of random rough.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "rough2_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough2_size");
RNA_def_property_range(prop, 0.01f, 10.0f);
RNA_def_property_ui_text(prop, "Size2", "Size of random rough.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "rough2_thres", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough2_thres");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Threshold", "Amount of particles left untouched by random rough.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "rough_endpoint", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough_end");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Rough Endpoint", "Amount of end point rough.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "rough_end_shape", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Shape", "Shape of end point rough");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
/* branching */
prop= RNA_def_property(srna, "branch_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "branch_thres");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Threshold", "Threshold of branching.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
/* drawing stuff */
prop= RNA_def_property(srna, "line_length_tail", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_funcs(prop, "rna_PartSetting_linelentail_get", "rna_PartSetting_linelentail_set", NULL);
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Back", "Length of the line's tail");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "line_length_head", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_funcs(prop, "rna_PartSetting_linelenhead_get", "rna_PartSetting_linelenhead_set", NULL);
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Head", "Length of the line's head");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
/* boids */
prop= RNA_def_property(srna, "max_velocity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max_vel");
RNA_def_property_range(prop, 0.0f, 200.0f);
RNA_def_property_ui_text(prop, "Maximum Velocity", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "lateral_acceleration_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max_lat_acc");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Lateral Acceleration", "Lateral acceleration % of max velocity");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "tangential_acceleration_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max_tan_acc");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Tangential acceleration", "Tangential acceleration % of max velocity");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "average_velocity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "average_vel");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Average Velocity", "The usual speed % of max velocity");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "banking", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, -10.0f, 10.0f);
RNA_def_property_ui_text(prop, "Banking", "Banking of boids on turns (1.0==natural banking)");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "banking_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max_bank");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Maximum Banking", "How much a boid can bank at a single step");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "ground_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "groundz");
RNA_def_property_range(prop, -100.0f, 100.0f);
RNA_def_property_ui_text(prop, "Ground Z", "Default Z value");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/*TODO: not sure how to deal with this
prop= RNA_def_property(srna, "boid_factor", PROP_FLOAT, PROP_VECTOR);
@@ -1134,22 +1400,30 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "dupli_group", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "dup_group");
RNA_def_property_struct_type(prop, "Group");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Dupli Group", "Show Objects in this Group in place of particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "effector_group", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "eff_group");
RNA_def_property_struct_type(prop, "Group");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Effector Group", "Limit effectors to this Group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "dupli_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "dup_ob");
RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Dupli Object", "Show this Object in place of particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "billboard_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "bb_ob");
RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Billboard Object", "Billboards face this object (default is active camera)");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
#if 0
prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE);
@@ -1170,6 +1444,13 @@ static void rna_def_particle_system(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ParticleSystem", NULL);
RNA_def_struct_ui_text(srna, "Particle System", "Particle system in an object.");
+ RNA_def_struct_ui_icon(srna, ICON_PARTICLE_DATA);
+
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_funcs(prop, "rna_ParticleSystem_name_get", "rna_ParticleSystem_name_length", NULL);
+ RNA_def_property_ui_text(prop, "Name", "Particle system name.");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "settings", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "part");
@@ -1187,6 +1468,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
prop= RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Seed", "Offset in the random number table, to get a different randomized result.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* hair */
prop= RNA_def_property(srna, "softbody", PROP_POINTER, PROP_NONE);
@@ -1205,36 +1487,45 @@ static void rna_def_particle_system(BlenderRNA *brna)
/* reactor */
prop= RNA_def_property(srna, "reactor_target_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "target_ob");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Reactor Target Object", "For reactor systems, the object that has the target particle system (empty if same object).");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "reactor_target_particle_system", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "target_psys");
RNA_def_property_range(prop, 1, INT_MAX);
RNA_def_property_ui_text(prop, "Reactor Target Particle System", "For reactor systems, index of particle system on the target object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* boids */
prop= RNA_def_property(srna, "boids_surface_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "keyed_ob");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Boids Surface Object", "For boids physics systems, constrain boids to this object's surface.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* keyed */
prop= RNA_def_property(srna, "keyed_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "keyed_ob");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Keyed Object", "For keyed physics systems, the object that has the target particle system.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "keyed_particle_system", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "keyed_psys");
RNA_def_property_range(prop, 1, INT_MAX);
RNA_def_property_ui_text(prop, "Keyed Particle System", "For keyed physics systems, index of particle system on the keyed object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "keyed_first", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PSYS_FIRST_KEYED);
RNA_def_property_ui_text(prop, "Keyed First", "Set the system to be the starting point of keyed particles");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "keyed_timed", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PSYS_KEYED_TIME);
RNA_def_property_ui_text(prop, "Keyed Timed", "Use intermediate key times for keyed particles (setting for starting point only).");
-
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* billboard */
prop= RNA_def_property(srna, "billboard_normal_uv", PROP_STRING, PROP_NONE);
@@ -1256,98 +1547,122 @@ static void rna_def_particle_system(BlenderRNA *brna)
prop= RNA_def_property(srna, "vertex_group_density", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[0]");
RNA_def_property_ui_text(prop, "Vertex Group Density", "Vertex group to control density.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_density_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_DENSITY));
RNA_def_property_ui_text(prop, "Vertex Group Density Negate", "Negate the effect of the density vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_velocity", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[1]");
RNA_def_property_ui_text(prop, "Vertex Group Velocity", "Vertex group to control velocity.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_velocity_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_VEL));
RNA_def_property_ui_text(prop, "Vertex Group Velocity Negate", "Negate the effect of the velocity vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_length", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[2]");
RNA_def_property_ui_text(prop, "Vertex Group Length", "Vertex group to control length.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "vertex_group_length_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_LENGTH));
RNA_def_property_ui_text(prop, "Vertex Group Length Negate", "Negate the effect of the length vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
prop= RNA_def_property(srna, "vertex_group_clump", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[3]");
RNA_def_property_ui_text(prop, "Vertex Group Clump", "Vertex group to control clump.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_clump_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_CLUMP));
RNA_def_property_ui_text(prop, "Vertex Group Clump Negate", "Negate the effect of the clump vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_kink", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[4]");
RNA_def_property_ui_text(prop, "Vertex Group Kink", "Vertex group to control kink.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_kink_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_KINK));
RNA_def_property_ui_text(prop, "Vertex Group Kink Negate", "Negate the effect of the kink vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_roughness1", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[5]");
RNA_def_property_ui_text(prop, "Vertex Group Roughness 1", "Vertex group to control roughness 1.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_roughness1_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROUGH1));
RNA_def_property_ui_text(prop, "Vertex Group Roughness 1 Negate", "Negate the effect of the roughness 1 vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_roughness2", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[6]");
RNA_def_property_ui_text(prop, "Vertex Group Roughness 2", "Vertex group to control roughness 2.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_roughness2_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROUGH2));
RNA_def_property_ui_text(prop, "Vertex Group Roughness 2 Negate", "Negate the effect of the roughness 2 vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_roughness_end", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[7]");
RNA_def_property_ui_text(prop, "Vertex Group Roughness End", "Vertex group to control roughness end.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_roughness_end_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROUGHE));
RNA_def_property_ui_text(prop, "Vertex Group Roughness End Negate", "Negate the effect of the roughness end vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo_child");
prop= RNA_def_property(srna, "vertex_group_size", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[8]");
RNA_def_property_ui_text(prop, "Vertex Group Size", "Vertex group to control size.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_size_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_SIZE));
RNA_def_property_ui_text(prop, "Vertex Group Size Negate", "Negate the effect of the size vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_tangent", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[9]");
RNA_def_property_ui_text(prop, "Vertex Group Tangent", "Vertex group to control tangent.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_tangent_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_TAN));
RNA_def_property_ui_text(prop, "Vertex Group Tangent Negate", "Negate the effect of the tangent vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_rotation", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[10]");
RNA_def_property_ui_text(prop, "Vertex Group Rotation", "Vertex group to control rotation.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_rotation_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROT));
RNA_def_property_ui_text(prop, "Vertex Group Rotation Negate", "Negate the effect of the rotation vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_field", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "vgroup[11]");
RNA_def_property_ui_text(prop, "Vertex Group Field", "Vertex group to control field.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "vertex_group_field_negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_EFFECTOR));
RNA_def_property_ui_text(prop, "Vertex Group Field Negate", "Negate the effect of the field vertex group.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
/* pointcache */
prop= RNA_def_property(srna, "point_cache", PROP_POINTER, PROP_NEVER_NULL);
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 5aad710c712..8edcc4c72f4 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -82,7 +82,6 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_struct_idproperties_func(srna, "rna_PoseChannel_idproperties");
prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_collection_sdna(prop, NULL, "constraints", NULL);
RNA_def_property_struct_type(prop, "Constraint");
RNA_def_property_ui_text(prop, "Constraints", "Constraints that act on this PoseChannel.");
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index 55a0f67390e..8ea8844c65f 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -30,6 +30,8 @@
#include "RNA_define.h"
#include "RNA_types.h"
+#include "rna_internal.h"
+
#ifdef RNA_RUNTIME
/* Struct */
@@ -570,6 +572,7 @@ static void rna_def_struct(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Struct", NULL);
RNA_def_struct_ui_text(srna, "Struct Definition", "RNA structure definition");
+ RNA_def_struct_ui_icon(srna, ICON_RNA);
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -590,19 +593,19 @@ static void rna_def_struct(BlenderRNA *brna)
prop= RNA_def_property(srna, "base", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Struct");
- RNA_def_property_pointer_funcs(prop, "rna_Struct_base_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Struct_base_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Base", "Struct definition this is derived from.");
prop= RNA_def_property(srna, "nested", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Struct");
- RNA_def_property_pointer_funcs(prop, "rna_Struct_nested_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Struct_nested_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Nested", "Struct in which this struct is always nested, and to which it logically belongs.");
prop= RNA_def_property(srna, "name_property", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "StringProperty");
- RNA_def_property_pointer_funcs(prop, "rna_Struct_name_property_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Struct_name_property_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Name Property", "Property that gives the name of the struct.");
prop= RNA_def_property(srna, "properties", PROP_COLLECTION, PROP_NONE);
@@ -647,6 +650,7 @@ static void rna_def_property(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Property", NULL);
RNA_def_struct_ui_text(srna, "Property Definition", "RNA property definition.");
RNA_def_struct_refine_func(srna, "rna_Property_refine");
+ RNA_def_struct_ui_icon(srna, ICON_RNA);
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -667,13 +671,13 @@ static void rna_def_property(BlenderRNA *brna)
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, type_items);
- RNA_def_property_enum_funcs(prop, "rna_Property_type_get", NULL);
+ RNA_def_property_enum_funcs(prop, "rna_Property_type_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Type", "Data type of the property.");
prop= RNA_def_property(srna, "subtype", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_enum_items(prop, subtype_items);
- RNA_def_property_enum_funcs(prop, "rna_Property_subtype_get", NULL);
+ RNA_def_property_enum_funcs(prop, "rna_Property_subtype_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Subtype", "Semantic interpretation of the property.");
prop= RNA_def_property(srna, "editable", PROP_BOOLEAN, PROP_NONE);
@@ -699,6 +703,7 @@ static void rna_def_function(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Function", NULL);
RNA_def_struct_ui_text(srna, "Function Definition", "RNA function definition");
+ RNA_def_struct_ui_icon(srna, ICON_RNA);
prop= RNA_def_property(srna, "identifier", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -800,6 +805,7 @@ static void rna_def_enum_property(BlenderRNA *brna, StructRNA *srna)
srna= RNA_def_struct(brna, "EnumPropertyItem", NULL);
RNA_def_struct_ui_text(srna, "Enum Item Definition", "Definition of a choice in an RNA enum property.");
+ RNA_def_struct_ui_icon(srna, ICON_RNA);
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -826,9 +832,9 @@ static void rna_def_pointer_property(StructRNA *srna, PropertyType type)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "Struct");
if(type == PROP_POINTER)
- RNA_def_property_pointer_funcs(prop, "rna_PointerProperty_fixed_type_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_PointerProperty_fixed_type_get", NULL, NULL);
else
- RNA_def_property_pointer_funcs(prop, "rna_CollectionProperty_fixed_type_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_CollectionProperty_fixed_type_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Pointer Type", "Fixed pointer type, empty if variable type.");
}
@@ -884,6 +890,7 @@ void RNA_def_rna(BlenderRNA *brna)
/* Blender RNA */
srna= RNA_def_struct(brna, "BlenderRNA", NULL);
RNA_def_struct_ui_text(srna, "Blender RNA", "Blender RNA structure definitions.");
+ RNA_def_struct_ui_icon(srna, ICON_RNA);
prop= RNA_def_property(srna, "structs", PROP_COLLECTION, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 3ba73aef52d..b7487f46f8d 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -210,7 +210,16 @@ void rna_def_scene_render_data(BlenderRNA *brna)
{0, "THREADS_AUTO", "Auto-detect", ""},
{R_FIXED_THREADS, "THREADS_FIXED", "Fixed Number", ""},
{0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem stamp_font_size_items[] = {
+ {1, "STAMP_FONT_TINY", "Tiny", ""},
+ {2, "STAMP_FONT_SMALL", "Small", ""},
+ {3, "STAMP_FONT_MEDIUM", "Medium", ""},
+ {0, "STAMP_FONT_LARGE", "Large", ""},
+ {4, "STAMP_FONT_EXTRALARGE", "Extra Large", ""},
+ {0, NULL, NULL, NULL}};
+
static EnumPropertyItem image_type_items[] = {
{R_FRAMESERVER, "FRAMESERVER", "Frame Server", ""},
#ifdef WITH_FFMPEG
@@ -247,6 +256,35 @@ void rna_def_scene_render_data(BlenderRNA *brna)
#endif
{R_TIFF, "TIFF", "TIFF", ""}, // XXX only with G.have_libtiff
{0, NULL, NULL, NULL}};
+
+#ifdef WITH_OPENEXR
+ static EnumPropertyItem exr_codec_items[] = {
+ {0, "NONE", "None", ""},
+ {1, "PXR24", "Pxr24 (lossy)", ""},
+ {2, "ZIP", "ZIP (lossless)", ""},
+ {3, "PIZ", "PIZ (lossless)", ""},
+ {4, "RLE", "RLE (lossless)", ""},
+ {0, NULL, NULL, NULL}};
+#endif
+
+#ifdef WITH_OPENJPEG
+ static EnumPropertyItem jp2_preset_items[] = {
+ {0, "NO_PRESET", "No Preset", ""},
+ {1, "R_JPEG2K_CINE_PRESET", "Cinema 24fps 2048x1080", ""},
+ {2, "R_JPEG2K_CINE_PRESET|R_JPEG2K_CINE_48FPS", "Cinema 48fps 2048x1080", ""},
+ {3, "R_JPEG2K_CINE_PRESET", "Cinema 24fps 4096x2160", ""},
+ {4, "R_JPEG2K_CINE_PRESET", "Cine-Scope 24fps 2048x858", ""},
+ {5, "R_JPEG2K_CINE_PRESET|R_JPEG2K_CINE_48FPS", "Cine-Scope 48fps 2048x858", ""},
+ {6, "R_JPEG2K_CINE_PRESET", "Cine-Flat 24fps 1998x1080", ""},
+ {7, "R_JPEG2K_CINE_PRESET|R_JPEG2K_CINE_48FPS", "Cine-Flat 48fps 1998x1080", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem jp2_depth_items[] = {
+ {0, "8", "8", ""},
+ {R_JPEG2K_12BIT, "16", "16", ""},
+ {R_JPEG2K_16BIT, "32", "32", ""},
+ {0, NULL, NULL, NULL}};
+#endif
srna= RNA_def_struct(brna, "SceneRenderData", NULL);
RNA_def_struct_sdna(srna, "RenderData");
@@ -299,12 +337,92 @@ void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pixel Aspect Y", "Vertical aspect ratio - for anamorphic or non-square pixel output");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT, NULL);
+ /* JPEG and AVI JPEG */
+
prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "quality");
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Quality", "Quality setting for JPEG images, AVI Jpeg and SGI movies.");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+ /* Tiff */
+
+ prop= RNA_def_property(srna, "tiff_bit", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_TIFF_16BIT);
+ RNA_def_property_ui_text(prop, "16 Bit", "Save 16 bit per channel TIFF");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ /* Cineon and DPX */
+
+ prop= RNA_def_property(srna, "cineon_log", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_CINEON_LOG);
+ RNA_def_property_ui_text(prop, "Log", "Convert to log color space");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "cineon_black", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "cineonblack");
+ RNA_def_property_range(prop, 0, 1024);
+ RNA_def_property_ui_text(prop, "B", "Log conversion reference black");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "cineon_white", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "cineonwhite");
+ RNA_def_property_range(prop, 0, 1024);
+ RNA_def_property_ui_text(prop, "W", "Log conversion reference white");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "cineon_gamma", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "cineongamma");
+ RNA_def_property_range(prop, 0.0f, 10.0f);
+ RNA_def_property_ui_text(prop, "G", "Log conversion gamma");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+#ifdef WITH_OPENEXR
+ /* OpenEXR */
+
+ prop= RNA_def_property(srna, "exr_codec", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "quality");
+ RNA_def_property_enum_items(prop, exr_codec_items);
+ RNA_def_property_ui_text(prop, "Codec", "Set codec settings for OpenEXR");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "exr_half", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_HALF);
+ RNA_def_property_ui_text(prop, "Half", "Use 16 bit floats instead of 32 bit floats per channel");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "exr_zbuf", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_ZBUF);
+ RNA_def_property_ui_text(prop, "Zbuf", "Save the z-depth per pixel (32 bit unsigned int zbuffer)");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "exr_preview", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_PREVIEW_JPG);
+ RNA_def_property_ui_text(prop, "Preview", "When animation render, save JPG preview images in same directory");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+#endif
+
+#ifdef WITH_OPENJPEG
+ /* Jpeg 2000 */
+
+ prop= RNA_def_property(srna, "jpeg_preset", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "jp2_preset");
+ RNA_def_property_enum_items(prop, jp2_preset_items);
+ RNA_def_property_ui_text(prop, "Preset", "Use a DCI Standard preset for saving jpeg2000");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "jpeg_depth", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "jp2_depth");
+ RNA_def_property_enum_items(prop, jp2_depth_items);
+ RNA_def_property_ui_text(prop, "Depth", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "jpeg_ycc", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_JPEG2K_YCC);
+ RNA_def_property_ui_text(prop, "YCC", "Save luminance-chrominance-chrominance instead of RGB color channels");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+#endif
+
prop= RNA_def_property(srna, "fps", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "frs_sec");
RNA_def_property_range(prop, 1, 120);
@@ -476,10 +594,10 @@ void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "File Extensions", "Add the file format extensions to the rendered file name (eg: filename + .jpg)");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "image_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "file_format", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "imtype");
RNA_def_property_enum_items(prop, image_type_items);
- RNA_def_property_ui_text(prop, "Image Type", "File format to save the rendered images as.");
+ RNA_def_property_ui_text(prop, "File Format", "File format to save the rendered images as.");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
prop= RNA_def_property(srna, "free_image_textures", PROP_BOOLEAN, PROP_NONE);
@@ -506,6 +624,85 @@ void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "pic");
RNA_def_property_ui_text(prop, "Output Path", "Directory/name to save animations, # characters defines the position and length of frame numbers.");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_STAMP_INFO);
+ RNA_def_property_ui_text(prop, "Stamp", "Embed metadata into the rendered image");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_time", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_TIME);
+ RNA_def_property_ui_text(prop, "Stamp Time", "Include the current time in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_date", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_DATE);
+ RNA_def_property_ui_text(prop, "Stamp Date", "Include the current date in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_frame", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_FRAME);
+ RNA_def_property_ui_text(prop, "Stamp Frame", "Include the frame number in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_camera", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_CAMERA);
+ RNA_def_property_ui_text(prop, "Stamp Camera", "Include the name of the active camera in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_scene", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_SCENE);
+ RNA_def_property_ui_text(prop, "Stamp Scene", "Include the name of the active scene in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_note", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_NOTE);
+ RNA_def_property_ui_text(prop, "Stamp Note", "Include a custom note in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_marker", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_MARKER);
+ RNA_def_property_ui_text(prop, "Stamp Marker", "Include the name of the last marker in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_filename", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_FILENAME);
+ RNA_def_property_ui_text(prop, "Stamp Filename", "Include the filename of the .blend file in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_sequence_strip", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_SEQSTRIP);
+ RNA_def_property_ui_text(prop, "Stamp Sequence Strip", "Include the name of the foreground sequence strip in image metadata");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_note_text", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "stamp_udata");
+ RNA_def_property_ui_text(prop, "Stamp Note Text", "Custom text to appear in the stamp note");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "render_stamp", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_DRAW);
+ RNA_def_property_ui_text(prop, "Render Stamp", "Render the stamp info text in the rendered image");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_font_size", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "stamp_font_id");
+ RNA_def_property_enum_items(prop, stamp_font_size_items);
+ RNA_def_property_ui_text(prop, "Stamp Font Size", "Size of the font used when rendering stamp info text");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_foreground", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_float_sdna(prop, NULL, "fg_stamp");
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Stamp Foreground", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
+ prop= RNA_def_property(srna, "stamp_background", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_float_sdna(prop, NULL, "bg_stamp");
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Stamp Background", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
}
void RNA_def_scene(BlenderRNA *brna)
@@ -519,6 +716,8 @@ void RNA_def_scene(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Scene", "ID");
RNA_def_struct_ui_text(srna, "Scene", "Scene consisting objects and defining time and render related settings.");
+ RNA_def_struct_ui_icon(srna, ICON_SCENE_DATA);
+ RNA_def_struct_clear_flag(srna, STRUCT_ID_REFCOUNT);
prop= RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE);
diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c
index e8b766ff2ea..e153994e7a6 100644
--- a/source/blender/makesrna/intern/rna_screen.c
+++ b/source/blender/makesrna/intern/rna_screen.c
@@ -90,6 +90,7 @@ static void rna_def_bscreen(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Screen", "ID");
RNA_def_struct_sdna(srna, "Screen"); /* it is actually bScreen but for 2.5 the dna is patched! */
RNA_def_struct_ui_text(srna, "Screen", "Screen datablock, defining the layout of areas in a window.");
+ RNA_def_struct_ui_icon(srna, ICON_SPLITSCREEN);
prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Scene", "Active scene to be edited in the screen.");
diff --git a/source/blender/makesrna/intern/rna_scriptlink.c b/source/blender/makesrna/intern/rna_scriptlink.c
index f073065f6bc..b486cd4a874 100644
--- a/source/blender/makesrna/intern/rna_scriptlink.c
+++ b/source/blender/makesrna/intern/rna_scriptlink.c
@@ -41,6 +41,7 @@ void RNA_def_scriptlink(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ScriptLink", NULL);
RNA_def_struct_ui_text(srna, "Script Link", "Scripts linked to a datablock, to be executed on changes to the datablock.");
+ RNA_def_struct_ui_icon(srna, ICON_PYTHON);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_sensor.c b/source/blender/makesrna/intern/rna_sensor.c
index 90a0972fa03..265b59c97ae 100644
--- a/source/blender/makesrna/intern/rna_sensor.c
+++ b/source/blender/makesrna/intern/rna_sensor.c
@@ -197,6 +197,7 @@ void rna_def_touch_sensor(BlenderRNA *brna)
prop= RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "ma");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Material", "Only look for floors with this material.");
}
diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c
index 302e7623b18..357e3bf8bc8 100644
--- a/source/blender/makesrna/intern/rna_sequence.c
+++ b/source/blender/makesrna/intern/rna_sequence.c
@@ -34,8 +34,20 @@
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
+#include "BKE_sequence.h"
+
#ifdef RNA_RUNTIME
+static int rna_SequenceEditor_name_length(PointerRNA *ptr)
+{
+ return strlen("Sequence Editor");
+}
+
+static void rna_SequenceEditor_name_get(PointerRNA *ptr, char *str)
+{
+ strcpy(str, "Sequence Editor");
+}
+
/* name functions that ignore the first two characters */
static void rna_Sequence_name_get(PointerRNA *ptr, char *value)
{
@@ -179,7 +191,11 @@ static void rna_def_strip_proxy(BlenderRNA *brna)
prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "dir");
- RNA_def_property_ui_text(prop, "Directory", "");
+ RNA_def_property_ui_text(prop, "Directory", "Location to story the proxy file");
+
+ prop= RNA_def_property(srna, "file", PROP_STRING, PROP_DIRPATH);
+ RNA_def_property_string_sdna(prop, NULL, "file");
+ RNA_def_property_ui_text(prop, "File", "Proxy file name");
}
static void rna_def_strip_color_balance(BlenderRNA *brna)
@@ -226,6 +242,7 @@ static void rna_def_sequence(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
+ FunctionRNA *func;
static const EnumPropertyItem seq_type_items[]= {
{SEQ_IMAGE, "IMAGE", "Image", ""},
@@ -241,7 +258,7 @@ static void rna_def_sequence(BlenderRNA *brna)
{SEQ_SUB, "SUBTRACT", "Subtract", ""},
{SEQ_ALPHAOVER, "ALPHA_OVER", "Alpha Over", ""},
{SEQ_ALPHAUNDER, "ALPHA_UNDER", "Alpha Under", ""},
- {SEQ_GAMCROSS, "GAMMA_ACROSS", "Gamma Cross", ""},
+ {SEQ_GAMCROSS, "GAMMA_CROSS", "Gamma Cross", ""},
{SEQ_MUL, "MULTIPLY", "Multiply", ""},
{SEQ_OVERDROP, "OVER_DROP", "Over Drop", ""},
{SEQ_PLUGIN, "PLUGIN", "plugin", ""},
@@ -250,27 +267,19 @@ static void rna_def_sequence(BlenderRNA *brna)
{SEQ_TRANSFORM, "TRANSFORM", "Transform", ""},
{SEQ_COLOR, "COLOR", "Color", ""},
{SEQ_SPEED, "SPEED", "Speed", ""},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
static const EnumPropertyItem blend_mode_items[]= {
- {SEQ_BLEND_REPLACE, "REPLACE", "Replace", ""},
- {SEQ_CROSS, "CROSS", "Cross", ""},
- {SEQ_ADD, "ADD", "Add", ""},
- {SEQ_SUB, "SUBTRACT", "Subtract", ""},
- {SEQ_ALPHAOVER, "ALPHA_OVER", "Alpha Over", ""},
- {SEQ_ALPHAUNDER, "ALPHA_UNDER", "Alpha Under", ""},
- {SEQ_GAMCROSS, "GAMMA_CROSS", "Gamma Cross", ""},
- {SEQ_MUL, "MULTIPLY", "Multiply", ""},
- {SEQ_OVERDROP, "OVER_DROP", "Over Drop", ""},
- {SEQ_PLUGIN, "PLUGIN", "plugin", ""},
- {SEQ_WIPE, "WIPE", "Wipe", ""},
- {SEQ_GLOW, "GLOW", "Glow", ""},
- {SEQ_TRANSFORM, "TRANSFORM", "Transform", ""},
- {SEQ_COLOR, "COLOR", "Color", ""},
- {SEQ_SPEED, "SPEED", "Speed", ""},
- {0, NULL, NULL, NULL}
- };
+ {SEQ_BLEND_REPLACE, "REPLACE", "Replace", ""},
+ {SEQ_CROSS, "CROSS", "Cross", ""},
+ {SEQ_ADD, "ADD", "Add", ""},
+ {SEQ_SUB, "SUBTRACT", "Subtract", ""},
+ {SEQ_ALPHAOVER, "ALPHA_OVER", "Alpha Over", ""},
+ {SEQ_ALPHAUNDER, "ALPHA_UNDER", "Alpha Under", ""},
+ {SEQ_GAMCROSS, "GAMMA_CROSS", "Gamma Cross", ""},
+ {SEQ_MUL, "MULTIPLY", "Multiply", ""},
+ {SEQ_OVERDROP, "OVER_DROP", "Over Drop", ""},
+ {0, NULL, NULL, NULL}};
srna = RNA_def_struct(brna, "Sequence", NULL);
RNA_def_struct_ui_text(srna, "Sequence", "Sequence strip in the sequence editor.");
@@ -308,9 +317,9 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE);
RNA_def_property_ui_text(prop, "Mute", "");
- prop= RNA_def_property(srna, "ipo_frame_locked", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED);
- RNA_def_property_ui_text(prop, "IPO Frame Locked", "Lock the IPO coordinates to the global frame counter.");
+ RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter.");
prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK);
@@ -364,6 +373,13 @@ static void rna_def_sequence(BlenderRNA *brna)
prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Blend Opacity", "");
+
+ /* funcsions */
+ func= RNA_def_function(srna, "getStripElem", "give_stripelem");
+ RNA_def_function_ui_description(func, "Return the strip element from a given frame or None.");
+ prop= RNA_def_int(func, "frame", 0, INT_MIN, INT_MAX, "Frame", "The frame to get the strip element from", INT_MIN, INT_MAX);
+ RNA_def_property_flag(prop, PROP_REQUIRED);
+ RNA_def_function_return(func, RNA_def_pointer(func, "elem", "SequenceElement", "", "strip element of the current frame"));
}
void rna_def_editor(BlenderRNA *brna)
@@ -373,8 +389,15 @@ void rna_def_editor(BlenderRNA *brna)
srna = RNA_def_struct(brna, "SequenceEditor", NULL);
RNA_def_struct_ui_text(srna, "Sequence Editor", "Sequence editing data for a Scene datablock.");
+ RNA_def_struct_ui_icon(srna, ICON_SEQUENCE);
RNA_def_struct_sdna(srna, "Editing");
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_funcs(prop, "rna_SequenceEditor_name_get", "rna_SequenceEditor_name_length", NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Name", "");
+ RNA_def_struct_name_property(srna, prop);
+
prop= RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
RNA_def_property_struct_type(prop, "Sequence");
@@ -385,6 +408,10 @@ void rna_def_editor(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "Sequence");
RNA_def_property_ui_text(prop, "Meta Stack", "Meta strip stack, last is currently edited meta strip.");
RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEdtior_meta_stack_get", 0, 0, 0);
+
+ prop= RNA_def_property(srna, "active_strip", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "act_seq");
+ RNA_def_property_ui_text(prop, "Active Strip", "Sequencers active strip");
}
static void rna_def_filter_video(StructRNA *srna)
@@ -835,17 +862,17 @@ static void rna_def_speed_control(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Global Speed", "");
RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0);
- prop= RNA_def_property(srna, "ipo_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "curve_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_INTEGRATE);
- RNA_def_property_ui_text(prop, "IPO Velocity", "Interpret the IPO value as a velocity instead of a frame number.");
+ RNA_def_property_ui_text(prop, "F-Curve Velocity", "Interpret the F-Curve value as a velocity instead of a frame number.");
prop= RNA_def_property(srna, "frame_blending", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_BLEND);
RNA_def_property_ui_text(prop, "Frame Blending", "Blend two frames into the target for a smoother result.");
- prop= RNA_def_property(srna, "ipo_compress_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "curve_compress_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_COMPRESS_IPO_Y);
- RNA_def_property_ui_text(prop, "IPO Compress Y", "Scale IPO value to get the target frame number, IPO value runs from 0.0 to 1.0.");
+ RNA_def_property_ui_text(prop, "F-Curve Compress Y", "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0.");
}
void RNA_def_sequence(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c
index 2aeb1b984fb..118c39655e8 100644
--- a/source/blender/makesrna/intern/rna_sound.c
+++ b/source/blender/makesrna/intern/rna_sound.c
@@ -64,30 +64,30 @@ static void rna_def_sample(BlenderRNA *brna)
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_sample_type_items);
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Types", "");
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "name");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Filename", "Full path filename of the sample");
prop= RNA_def_property(srna, "length", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "len");
RNA_def_property_ui_text(prop, "Length", "The length of sample in seconds");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop= RNA_def_property(srna, "rate", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Rate", "Sample rate in kHz");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop= RNA_def_property(srna, "bits", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Bits", "Bit-depth of sample");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop= RNA_def_property(srna, "channels", PROP_INT, PROP_UNSIGNED);
RNA_def_property_ui_text(prop, "Channels", "Number of channels (mono=1; stereo=2)");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
}
static void rna_def_soundlistener(BlenderRNA *brna)
@@ -117,12 +117,12 @@ static void rna_def_soundlistener(BlenderRNA *brna)
prop= RNA_def_property(srna, "num_sounds_blender", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "numsoundsblender");
RNA_def_property_ui_text(prop, "Total Sounds in Blender", "The total number of sounds currently linked and available.");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop= RNA_def_property(srna, "num_sounds_gameengine", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "numsoundsgameengine");
RNA_def_property_ui_text(prop, "Total Sounds in Game Engine", "The total number of sounds in the Game Engine.");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
}
#endif
@@ -134,6 +134,7 @@ static void rna_def_sound(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Sound", "ID");
RNA_def_struct_sdna(srna, "bSound");
RNA_def_struct_ui_text(srna, "Sound", "Sound datablock referencing an external or packed sound file.");
+ RNA_def_struct_ui_icon(srna, ICON_SOUND);
//rna_def_ipo_common(srna);
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 2b5c3a621b4..5de80cce2b5 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -24,12 +24,15 @@
#include <stdlib.h>
+#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_types.h"
#include "rna_internal.h"
+#include "DNA_object_types.h"
#include "DNA_space_types.h"
+#include "DNA_view3d_types.h"
#include "WM_types.h"
@@ -65,22 +68,23 @@ static StructRNA* rna_Space_refine(struct PointerRNA *ptr)
SpaceLink *space= (SpaceLink*)ptr->data;
switch(space->spacetype) {
- /*case SPACE_VIEW3D:
- return &RNA_SpaceView3D;
- case SPACE_IPO:
+ case SPACE_VIEW3D:
+ return &RNA_Space3DView;
+ /*case SPACE_IPO:
return &RNA_SpaceGraphEditor;
+ */
case SPACE_OUTLINER:
return &RNA_SpaceOutliner;
case SPACE_BUTS:
return &RNA_SpaceButtonsWindow;
- case SPACE_FILE:
+ /* case SPACE_FILE:
return &RNA_SpaceFileBrowser;*/
case SPACE_IMAGE:
return &RNA_SpaceImageEditor;
/*case SPACE_INFO:
- return &RNA_SpaceUserPreferences;
+ return &RNA_SpaceUserPreferences;*/
case SPACE_SEQ:
- return &RNA_SpaceSequenceEditor;*/
+ return &RNA_SpaceSequenceEditor;
case SPACE_TEXT:
return &RNA_SpaceTextEditor;
//case SPACE_IMASEL:
@@ -131,6 +135,16 @@ void rna_SpaceTextEditor_text_set(PointerRNA *ptr, PointerRNA value)
st->top= 0;
}
+StructRNA *rna_SpaceButtonsWindow_pin_id_typef(PointerRNA *ptr)
+{
+ SpaceButs *sbuts= (SpaceButs*)(ptr->data);
+
+ if(sbuts->pinid)
+ return ID_code_to_RNA_type(GS(sbuts->pinid->name));
+
+ return &RNA_ID;
+}
+
#else
static void rna_def_space(BlenderRNA *brna)
@@ -250,6 +264,271 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Live Unwrap", "Continuously unwrap the selected UV island while transforming pinned vertices.");
}
+static void rna_def_space_outliner(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem display_mode_items[] = {
+ {0, "ALL_SCENES", "All Scenes", ""},
+ {1, "CURRENT_SCENE", "Current Scene", ""},
+ {2, "VISIBLE_LAYERS", "Visible Layers", ""},
+ {3, "SELECTED", "Selected", ""},
+ {4, "ACTIVE", "Active", ""},
+ {5, "SAME_TYPES", "Same Types", ""},
+ {6, "GROUPS", "Groups", ""},
+ {7, "LIBRARIES", "Libraries", ""},
+ {10, "SEQUENCE", "Sequence", ""},
+ {11, "DATABLOCKS", "Datablocks", ""},
+ {12, "USER_PREFERENCES", "User Preferences", ""},
+ {0, NULL, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "SpaceOutliner", "Space");
+ RNA_def_struct_sdna(srna, "SpaceOops");
+ RNA_def_struct_ui_text(srna, "Space Outliner", "Outliner space data.");
+
+ prop= RNA_def_property(srna, "display_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "outlinevis");
+ RNA_def_property_enum_items(prop, display_mode_items);
+ RNA_def_property_ui_text(prop, "Display Mode", "Type of information to display");
+ RNA_def_property_update(prop, NC_WINDOW, NULL);
+
+ prop= RNA_def_property(srna, "show_restriction_columns", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SO_HIDE_RESTRICTCOLS);
+ RNA_def_property_ui_text(prop, "Show Restriction Columns", "Show colum");
+ RNA_def_property_update(prop, NC_WINDOW, NULL);
+
+}
+
+static void rna_def_background_image(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "BackgroundImage", NULL);
+ RNA_def_struct_sdna(srna, "BGpic");
+ RNA_def_struct_ui_text(srna, "Background Image", "Image and settings for display in the 3d View background.");
+
+ prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "ima");
+ RNA_def_property_ui_text(prop, "Image", "Image displayed and edited in this space.");
+
+ prop= RNA_def_property(srna, "image_user", PROP_POINTER, PROP_NEVER_NULL);
+ RNA_def_property_pointer_sdna(prop, NULL, "iuser");
+ RNA_def_property_ui_text(prop, "Image User", "Parameters defining which layer, pass and frame of the image is displayed.");
+
+ prop= RNA_def_property(srna, "x_offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "xof");
+ RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the view center");
+
+ prop= RNA_def_property(srna, "y_offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "yof");
+ RNA_def_property_ui_text(prop, "Y Offset", "Offsets image vertically from the view center");
+
+ prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "size");
+ RNA_def_property_ui_text(prop, "Size", "Scaling factor for the background image.");
+ RNA_def_property_range(prop, 0.0, FLT_MAX);
+
+ prop= RNA_def_property(srna, "transparency", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "blend");
+ RNA_def_property_ui_text(prop, "Transparency", "Amount to blend the image against the background color.");
+ RNA_def_property_range(prop, 0.0, 1.0);
+
+}
+
+static void rna_def_space_3dview(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem viewport_shading_items[] = {
+ {OB_BOUNDBOX, "BOUNDBOX", "Bounding Box", "Display the object's local bounding boxes only"},
+ {OB_WIRE, "WIREFRAME", "Wireframe", "Display the object as wire edges"},
+ {OB_SOLID, "SOLID", "Solid", "Display the object solid, lit with default OpenGL lights"},
+ {OB_SHADED, "SHADED", "Shaded", "Display the object solid, with preview shading interpolated at vertices"},
+ {OB_TEXTURE, "TEXTURED", "Textured", "Display the object solid, with face-assigned textures"},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem pivot_items[] = {
+ {V3D_CENTER, "BOUNDING_BOX_CENTER", "Bounding Box Center", ""},
+ {V3D_CURSOR, "CURSOR", "3D Cursor", ""},
+ {V3D_LOCAL, "INDIVIDUAL_CENTERS", "Individual Centers", ""},
+ {V3D_CENTROID, "MEDIAN_POINT", "Median Point", ""},
+ {V3D_ACTIVE, "ACTIVE_ELEMENT", "Active Element", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem transform_orientation_items[] = {
+ {V3D_MANIP_GLOBAL, "ORIENT_GLOBAL", "Global", "Align the transformation axes to world space"},
+ {V3D_MANIP_LOCAL, "ORIENT_LOCAL", "Local", "Align the transformation axes to the selected objects' local space"},
+ {V3D_MANIP_NORMAL, "ORIENT_NORMAL", "Normal", "Align the transformation axes to average normal of selected elements (bone Y axis for pose mode)"},
+ {V3D_MANIP_VIEW, "ORIENT_VIEW", "View", "Align the transformation axes to the window"},
+ {V3D_MANIP_CUSTOM, "ORIENT_CUSTOM", "Custom", "Use a custom transform orientation"},
+ {0, NULL, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "Space3DView", "Space");
+ RNA_def_struct_sdna(srna, "View3D");
+ RNA_def_struct_ui_text(srna, "3D View Space", "3D View space data");
+
+ prop= RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "camera");
+ RNA_def_property_ui_text(prop, "Camera", "Active camera used in this view (when unlocked from the scene's active camera).");
+
+ prop= RNA_def_property(srna, "lock_object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "ob_centre");
+ RNA_def_property_ui_text(prop, "Lock Object", "3D View center is locked to this object's position");
+
+ prop= RNA_def_property(srna, "background_image", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "bgpic");
+ RNA_def_property_ui_text(prop, "Background Image", "Image and settings to display in the 3D View background");
+
+ prop= RNA_def_property(srna, "viewport_shading", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "drawtype");
+ RNA_def_property_enum_items(prop, viewport_shading_items);
+ RNA_def_property_ui_text(prop, "Viewport Shading", "Method to display/shade objects in the 3D View.");
+
+ prop= RNA_def_property(srna, "localview", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "localview", 0);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Local View", "Display an isolated sub-set of objects, apart from the scene visibility.");
+
+ prop= RNA_def_property(srna, "lens", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "lens");
+ RNA_def_property_ui_text(prop, "Lens", "Lens angle (mm) in perspective view.");
+ RNA_def_property_range(prop, 1.0f, 250.0f);
+
+ prop= RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "near");
+ RNA_def_property_range(prop, 0.0f, FLT_MAX);
+ RNA_def_property_ui_text(prop, "Clip Start", "3D View near clipping distance.");
+
+ prop= RNA_def_property(srna, "clip_end", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "far");
+ RNA_def_property_range(prop, 1.0f, FLT_MAX);
+ RNA_def_property_ui_text(prop, "Clip End", "3D View far clipping distance.");
+
+ prop= RNA_def_property(srna, "grid_spacing", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "grid");
+ RNA_def_property_ui_text(prop, "Grid Spacing", "The distance between 3D View grid lines.");
+ RNA_def_property_range(prop, 0.0f, FLT_MAX);
+
+ prop= RNA_def_property(srna, "grid_lines", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "gridlines");
+ RNA_def_property_ui_text(prop, "Grid Lines", "The number of grid lines to display in perspective view.");
+ RNA_def_property_range(prop, 0, 1024);
+
+ prop= RNA_def_property(srna, "grid_subdivisions", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "gridsubdiv");
+ RNA_def_property_ui_text(prop, "Grid Subdivisions", "The number of subdivisions between grid lines.");
+ RNA_def_property_range(prop, 1, 1024);
+
+ prop= RNA_def_property(srna, "display_floor", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_FLOOR);
+ RNA_def_property_ui_text(prop, "Display Grid Floor", "Show the ground plane grid in perspective view.");
+
+ prop= RNA_def_property(srna, "display_x_axis", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_X);
+ RNA_def_property_ui_text(prop, "Display X Axis", "Show the X axis line in perspective view.");
+
+ prop= RNA_def_property(srna, "display_y_axis", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Y);
+ RNA_def_property_ui_text(prop, "Display Y Axis", "Show the Y axis line in perspective view.");
+
+ prop= RNA_def_property(srna, "display_z_axis", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Z);
+ RNA_def_property_ui_text(prop, "Display Z Axis", "Show the Z axis line in perspective view.");
+
+ prop= RNA_def_property(srna, "outline_selected", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SELECT_OUTLINE);
+ RNA_def_property_ui_text(prop, "Outline Selected", "Show an outline highlight around selected objects in non-wireframe views.");
+
+ prop= RNA_def_property(srna, "all_object_centers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DRAW_CENTERS);
+ RNA_def_property_ui_text(prop, "All Object Centers", "Show the object center dot for all (selected and unselected) objects.");
+
+ prop= RNA_def_property(srna, "relationship_lines", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_HIDE_HELPLINES);
+ RNA_def_property_ui_text(prop, "Relationship Lines", "Show dashed lines indicating parent or constraint relationships.");
+
+ prop= RNA_def_property(srna, "textured_solid", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SOLID_TEX);
+ RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view");
+
+ prop= RNA_def_property(srna, "pivot_point", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "around");
+ RNA_def_property_enum_items(prop, pivot_items);
+ RNA_def_property_ui_text(prop, "Pivot Point", "Pivot center for rotation/scaling.");
+
+ prop= RNA_def_property(srna, "manipulator", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_USE_MANIPULATOR);
+ RNA_def_property_ui_text(prop, "Manipulator", "Use a 3D manipulator widget for controlling transforms.");
+
+ prop= RNA_def_property(srna, "manipulator_translate", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_TRANSLATE);
+ RNA_def_property_ui_text(prop, "Manipulator Translate", "Use the manipulator for movement transformations.");
+
+ prop= RNA_def_property(srna, "manipulator_rotate", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_ROTATE);
+ RNA_def_property_ui_text(prop, "Manipulator Rotate", "Use the manipulator for rotation transformations.");
+
+ prop= RNA_def_property(srna, "manipulator_scale", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_SCALE);
+ RNA_def_property_ui_text(prop, "Manipulator Scale", "Use the manipulator for scale transformations.");
+
+ prop= RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "twmode");
+ RNA_def_property_enum_items(prop, transform_orientation_items);
+ RNA_def_property_ui_text(prop, "Transform Orientation", "The alignment of manipulator handles.");
+
+}
+
+static void rna_def_space_buttons(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem buttons_context_items[] = {
+ {BCONTEXT_SCENE, "SCENE", "Scene", ""},
+ {BCONTEXT_WORLD, "WORLD", "World", ""},
+ {BCONTEXT_OBJECT, "OBJECT", "Object", ""},
+ {BCONTEXT_DATA, "DATA", "Data", ""},
+ {BCONTEXT_MATERIAL, "MATERIAL", "Material", ""},
+ {BCONTEXT_TEXTURE, "TEXTURE", "Texture", ""},
+ {BCONTEXT_PARTICLE, "PARTICLE", "Particle", ""},
+ {BCONTEXT_PHYSICS, "PHYSICS", "Physics", ""},
+ {BCONTEXT_GAME, "GAME", "Game", ""},
+ {BCONTEXT_BONE, "BONE", "Bone", ""},
+ {BCONTEXT_MODIFIER, "MODIFIER", "Modifier", ""},
+ {BCONTEXT_CONSTRAINT, "CONSTRAINT", "Constraint", ""},
+ {0, NULL, NULL, NULL}};
+
+ static EnumPropertyItem panel_alignment_items[] = {
+ {1, "HORIZONTAL", "Horizontal", ""},
+ {2, "VERTICAL", "Vertical", ""},
+ {0, NULL, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "SpaceButtonsWindow", "Space");
+ RNA_def_struct_sdna(srna, "SpaceButs");
+ RNA_def_struct_ui_text(srna, "Buttons Space", "Buttons Window space data");
+
+ prop= RNA_def_property(srna, "buttons_context", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "mainb");
+ RNA_def_property_enum_items(prop, buttons_context_items);
+ RNA_def_property_ui_text(prop, "Buttons Context", "The type of active data to display and edit in the buttons window");
+
+ prop= RNA_def_property(srna, "panel_alignment", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "align");
+ RNA_def_property_enum_items(prop, panel_alignment_items);
+ RNA_def_property_ui_text(prop, "Panel Alignment", "Arrangement of the panels within the buttons window");
+
+ /* pinned data */
+ prop= RNA_def_property(srna, "pin_id", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "pinid");
+ RNA_def_property_struct_type(prop, "ID");
+ RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_SpaceButtonsWindow_pin_id_typef");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+}
+
static void rna_def_space_image(BlenderRNA *brna)
{
StructRNA *srna;
@@ -296,7 +575,7 @@ static void rna_def_space_image(BlenderRNA *brna)
/* uv */
prop= RNA_def_property(srna, "uv_editor", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "SpaceUVEditor");
- RNA_def_property_pointer_funcs(prop, "rna_SpaceImage_uvedit_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_SpaceImage_uvedit_get", NULL, NULL);
RNA_def_property_ui_text(prop, "UV Editor", "UV editor settings.");
/* paint */
@@ -323,6 +602,89 @@ static void rna_def_space_image(BlenderRNA *brna)
rna_def_space_image_uv(brna);
}
+
+static void rna_def_space_sequencer(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem display_mode_items[] = {
+ {SEQ_DRAW_SEQUENCE, "SEQUENCER", "Sequencer", ""},
+ {SEQ_DRAW_IMG_IMBUF, "IMAGE", "Image Preview", ""},
+ {SEQ_DRAW_IMG_WAVEFORM, "WAVEFORM", "Luma Waveform", ""},
+ {SEQ_DRAW_IMG_VECTORSCOPE, "VECTOR_SCOPE", "Chroma Vectorscope", ""},
+ {SEQ_DRAW_IMG_HISTOGRAM, "HISTOGRAM", "Histogram", ""},
+ {0, NULL, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "SpaceSequenceEditor", "Space");
+ RNA_def_struct_sdna(srna, "SpaceSeq");
+ RNA_def_struct_ui_text(srna, "Space Sequence Editor", "Sequence editor space data.");
+
+ /* display type, fairly important */
+ prop= RNA_def_property(srna, "display_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "mainb");
+ RNA_def_property_enum_items(prop, display_mode_items);
+ RNA_def_property_ui_text(prop, "Display Mode", "The view mode to use for displaying sequencer output.");
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+ /* flag's */
+ prop= RNA_def_property(srna, "draw_frames", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAWFRAMES);
+ RNA_def_property_ui_text(prop, "Draw Frames", "Draw frames rather then seconds.");
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+ prop= RNA_def_property(srna, "transform_markers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MARKER_TRANS);
+ RNA_def_property_ui_text(prop, "Transform Markers", "Transform markers as well as strips.");
+
+ prop= RNA_def_property(srna, "seperate_color_preview", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_COLOR_SEPERATED);
+ RNA_def_property_ui_text(prop, "Transform Markers", "Seperate color channels in preview.");
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+ prop= RNA_def_property(srna, "draw_safe_margin", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_SAFE_MARGINS);
+ RNA_def_property_ui_text(prop, "Safe Margin", "Draw title safe margins in preview.");
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+ prop= RNA_def_property(srna, "use_grease_pencil", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_GPENCIL);
+ RNA_def_property_ui_text(prop, "Use Grease Pencil", "Display and edit the grease pencil freehand annotations overlay.");
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+ /* grease pencil */
+ prop= RNA_def_property(srna, "grease_pencil", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "gpd");
+ RNA_def_property_struct_type(prop, "UnknownType");
+ RNA_def_property_ui_text(prop, "Grease Pencil", "Grease pencil data for this space.");
+
+ prop= RNA_def_property(srna, "display_channel", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "chanshown");
+ RNA_def_property_ui_text(prop, "Display Channel", "The channel number shown in the image preview. 0 is the result of all strips combined.");
+ RNA_def_property_range(prop, 0, 32); // MAXSEQ --- todo, move from BKE_sequence.h
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+ prop= RNA_def_property(srna, "draw_overexposed", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "zebra");
+ RNA_def_property_ui_text(prop, "Show Overexposed", "Show overexposed areas with zebra stripes.");
+ RNA_def_property_range(prop, 0, 110);
+ RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+
+
+ /* not sure we need rna access to these but adding anyway */
+ prop= RNA_def_property(srna, "x_offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "xof");
+ RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the view center");
+
+ prop= RNA_def_property(srna, "y_offset", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "yof");
+ RNA_def_property_ui_text(prop, "Y Offset", "Offsets image horizontally from the view center");
+
+ prop= RNA_def_property(srna, "zoom", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "zoom");
+ RNA_def_property_ui_text(prop, "Zoom", "Display zoom level");
+}
+
static void rna_def_space_text(BlenderRNA *brna)
{
StructRNA *srna;
@@ -341,7 +703,7 @@ static void rna_def_space_text(BlenderRNA *brna)
prop= RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Text", "Text displayed and edited in this space.");
- RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceTextEditor_text_set");
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceTextEditor_text_set", NULL);
RNA_def_property_update(prop, NC_TEXT|NA_EDITED, NULL);
/* display */
@@ -399,7 +761,12 @@ void RNA_def_space(BlenderRNA *brna)
{
rna_def_space(brna);
rna_def_space_image(brna);
+ rna_def_space_sequencer(brna);
rna_def_space_text(brna);
+ rna_def_space_outliner(brna);
+ rna_def_background_image(brna);
+ rna_def_space_3dview(brna);
+ rna_def_space_buttons(brna);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_text.c b/source/blender/makesrna/intern/rna_text.c
index 3dacd4c0898..cd39c317bc5 100644
--- a/source/blender/makesrna/intern/rna_text.c
+++ b/source/blender/makesrna/intern/rna_text.c
@@ -172,6 +172,8 @@ static void rna_def_text(BlenderRNA *brna)
srna = RNA_def_struct(brna, "Text", "ID");
RNA_def_struct_ui_text(srna, "Text", "Text datablock referencing an external or packed text file.");
+ RNA_def_struct_ui_icon(srna, ICON_TEXT);
+ RNA_def_struct_clear_flag(srna, STRUCT_ID_REFCOUNT);
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_Text_filename_get", "rna_Text_filename_length", "rna_Text_filename_set");
diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index ef3205836c1..360a0938bb2 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -23,6 +23,7 @@
*/
#include <float.h>
+#include <stdio.h>
#include <stdlib.h>
#include "RNA_define.h"
@@ -30,8 +31,13 @@
#include "rna_internal.h"
+#include "DNA_brush_types.h"
+#include "DNA_lamp_types.h"
#include "DNA_material_types.h"
#include "DNA_texture_types.h"
+#include "DNA_world_types.h"
+
+#include "WM_types.h"
#ifdef RNA_RUNTIME
@@ -71,6 +77,26 @@ StructRNA *rna_Texture_refine(struct PointerRNA *ptr)
}
}
+static int rna_TextureSlot_name_length(PointerRNA *ptr)
+{
+ MTex *mtex= ptr->data;
+
+ if(mtex->tex)
+ return strlen(mtex->tex->id.name+2);
+
+ return 0;
+}
+
+static void rna_TextureSlot_name_get(PointerRNA *ptr, char *str)
+{
+ MTex *mtex= ptr->data;
+
+ if(mtex->tex)
+ strcpy(str, mtex->tex->id.name+2);
+ else
+ strcpy(str, "");
+}
+
#else
static void rna_def_color_ramp_element(BlenderRNA *brna)
@@ -86,11 +112,13 @@ static void rna_def_color_ramp_element(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "r");
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Color", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "position", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "pos");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Position", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_color_ramp(BlenderRNA *brna)
@@ -114,11 +142,13 @@ static void rna_def_color_ramp(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "data", "tot");
RNA_def_property_struct_type(prop, "ColorRampElement");
RNA_def_property_ui_text(prop, "Elements", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "ipotype");
RNA_def_property_enum_items(prop, prop_interpolation_items);
RNA_def_property_ui_text(prop, "Interpolation", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texmapping(BlenderRNA *brna)
@@ -132,30 +162,37 @@ static void rna_def_texmapping(BlenderRNA *brna)
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "loc");
RNA_def_property_ui_text(prop, "Location", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_ROTATION);
RNA_def_property_float_sdna(prop, NULL, "rot");
RNA_def_property_ui_text(prop, "Rotation", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "size");
RNA_def_property_ui_text(prop, "Scale", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_ui_text(prop, "Minimum", "Minimum value for clipping");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_ui_text(prop, "Maximum", "Maximum value for clipping");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "has_minimum", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
RNA_def_property_ui_text(prop, "Has Minimum", "Whether to use minimum clipping value");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "has_maximum", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
RNA_def_property_ui_text(prop, "Has Maximum", "Whether to use maximum clipping value");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_mtex(BlenderRNA *brna)
@@ -183,63 +220,84 @@ static void rna_def_mtex(BlenderRNA *brna)
srna= RNA_def_struct(brna, "TextureSlot", NULL);
RNA_def_struct_sdna(srna, "MTex");
RNA_def_struct_ui_text(srna, "Texture Slot", "Texture slot defining the mapping and influence of a texture.");
+ RNA_def_struct_ui_icon(srna, ICON_TEXTURE_DATA);
prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tex");
RNA_def_property_struct_type(prop, "Texture");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Texture", "Texture datablock used by this texture slot.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
+
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_funcs(prop, "rna_TextureSlot_name_get", "rna_TextureSlot_name_length", NULL);
+ RNA_def_property_ui_text(prop, "Name", "Texture slot name.");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_struct_name_property(srna, prop);
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
/* mapping */
prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "ofs");
RNA_def_property_ui_range(prop, -10, 10, 10, 2);
RNA_def_property_ui_text(prop, "Offset", "Fine tunes texture mapping X, Y and Z locations.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_ui_range(prop, -100, 100, 10, 2);
RNA_def_property_ui_text(prop, "Size", "Sets scaling for the texture's X, Y and Z sizes.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "r");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Color", "The default color for textures that don't return RGB.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "blendtype");
RNA_def_property_enum_items(prop, prop_blend_type_items);
RNA_def_property_ui_text(prop, "Blend Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "stencil", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_STENCIL);
RNA_def_property_ui_text(prop, "Stencil", "Use this texture as a blending value on the next texture.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "negate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_NEGATIVE);
RNA_def_property_ui_text(prop, "Negate", "Inverts the values of the texture to reverse its effect.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "no_rgb", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_RGBTOINT);
RNA_def_property_ui_text(prop, "No RGB", "Converts texture RGB values to intensity (gray) values.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "default_value", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "def_var");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Default Value", "Value to use for Ref, Spec, Amb, Emit, Alpha, RayMir, TransLu and Hard.");
-
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
+
prop= RNA_def_property(srna, "variable_factor", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "varfac");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Variable Factor", "Amount texture affects other values.");
-
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
+
prop= RNA_def_property(srna, "color_factor", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "colfac");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Color Factor", "Amount texture affects color values.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "normal_factor", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "norfac");
RNA_def_property_range(prop, 0, 25);
RNA_def_property_ui_text(prop, "Normal Factor", "Amount texture affects normal values.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_filter_size_common(StructRNA *srna)
@@ -250,12 +308,14 @@ static void rna_def_filter_size_common(StructRNA *srna)
prop= RNA_def_property(srna, "use_filter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_FILTER_MIN);
RNA_def_property_ui_text(prop, "Use Filter", "Use Filter Size as a minimal filter value in pixels");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "filter_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "filtersize");
RNA_def_property_range(prop, 0.1, 50.0);
RNA_def_property_ui_range(prop, 0.1, 50.0, 1, 0.2);
RNA_def_property_ui_text(prop, "Filter Size", "Multiplies the filter size used by MIP Map and Interpolation");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_environment_map_common(StructRNA *srna)
@@ -266,19 +326,20 @@ static void rna_def_environment_map_common(StructRNA *srna)
{ENV_STATIC, "STATIC", "Static", "Calculates environment map only once"},
{ENV_ANIM, "ANIMATED", "Animated", "Calculates environment map at each rendering"},
{ENV_LOAD, "LOADED", "Loaded", "Loads saved environment map from disk"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
prop= RNA_def_property(srna, "source", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_source_items);
RNA_def_property_ui_text(prop, "Source", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
/* XXX: move this to specific types if needed */
prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "ima");
RNA_def_property_struct_type(prop, "Image");
RNA_def_property_ui_text(prop, "Image", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_environment_map(BlenderRNA *brna)
@@ -301,24 +362,28 @@ static void rna_def_environment_map(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, prop_type_items);
RNA_def_property_ui_text(prop, "Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clipsta");
RNA_def_property_range(prop, 0.01, FLT_MAX);
RNA_def_property_ui_range(prop, 0.01, 50, 100, 2);
RNA_def_property_ui_text(prop, "Clip Start", "Objects nearer than this are not visible to map.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "clip_end", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clipend");
RNA_def_property_range(prop, 0.01, FLT_MAX);
RNA_def_property_ui_range(prop, 0.10, 20000, 100, 2);
RNA_def_property_ui_text(prop, "Clip End", "Objects further than this are not visible to map.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "zoom", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "viewscale");
RNA_def_property_range(prop, 0.01, FLT_MAX);
RNA_def_property_ui_range(prop, 0.5, 5, 100, 2);
RNA_def_property_ui_text(prop, "Zoom", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
/* XXX: EnvMap.notlay */
@@ -326,10 +391,12 @@ static void rna_def_environment_map(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "cuberes");
RNA_def_property_range(prop, 50, 4096);
RNA_def_property_ui_text(prop, "Resolution", "Pixel resolution of the rendered environment map.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "depth", PROP_INT, PROP_NONE);
RNA_def_property_range(prop, 0, 5);
RNA_def_property_ui_text(prop, "Depth", "Number of times a map will be rendered recursively (mirror effects.)");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static EnumPropertyItem prop_noise_basis_items[] = {
@@ -346,10 +413,9 @@ static EnumPropertyItem prop_noise_basis_items[] = {
{0, NULL, NULL, NULL}};
static EnumPropertyItem prop_noise_type[] = {
- {TEX_NOISESOFT, "SOFT_NOISE", "Soft Noise", ""},
- {TEX_NOISEPERL, "HARD_NOISE", "Hard Noise", ""},
- {0, NULL, NULL, NULL}
- };
+ {TEX_NOISESOFT, "SOFT_NOISE", "Soft", ""},
+ {TEX_NOISEPERL, "HARD_NOISE", "Hard", ""},
+ {0, NULL, NULL, NULL}};
static void rna_def_texture_clouds(BlenderRNA *brna)
@@ -358,10 +424,9 @@ static void rna_def_texture_clouds(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem prop_clouds_stype[] = {
- {TEX_DEFAULT, "DEFAULT", "Default", ""},
+ {TEX_DEFAULT, "GREYSCALE", "Greyscale", ""},
{TEX_COLOR, "COLOR", "Color", ""},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "CloudsTexture", "Texture");
RNA_def_struct_ui_text(srna, "Clouds Texture", "Procedural noise texture.");
@@ -372,33 +437,38 @@ static void rna_def_texture_clouds(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_depth", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "noisedepth");
RNA_def_property_range(prop, 0, INT_MAX);
RNA_def_property_ui_range(prop, 0, 6, 0, 2);
RNA_def_property_ui_text(prop, "Noise Depth", "Sets the depth of the cloud calculation");
-
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis");
RNA_def_property_enum_items(prop, prop_noise_basis_items);
RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisetype");
RNA_def_property_enum_items(prop, prop_noise_type);
RNA_def_property_ui_text(prop, "Noise Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_clouds_stype);
RNA_def_property_ui_text(prop, "Color", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2);
RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used for calculating normal");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_wood(BlenderRNA *brna)
@@ -409,17 +479,15 @@ static void rna_def_texture_wood(BlenderRNA *brna)
static EnumPropertyItem prop_wood_stype[] = {
{TEX_BAND, "BANDS", "Bands", "Uses standard wood texture in bands"},
{TEX_RING, "RINGS", "Rings", "Uses wood texture in rings"},
- {TEX_BANDNOISE, "BANDNOISE", "BandNoise", "Adds noise to standard wood"},
- {TEX_RINGNOISE, "RINGNOISE", "RingNoise", "Adds noise to rings"},
- {0, NULL, NULL, NULL}
- };
+ {TEX_BANDNOISE, "BANDNOISE", "Band Noise", "Adds noise to standard wood"},
+ {TEX_RINGNOISE, "RINGNOISE", "Ring Noise", "Adds noise to rings"},
+ {0, NULL, NULL, NULL}};
static EnumPropertyItem prop_wood_noisebasis2[] = {
- {TEX_SIN, "SIN", "Sin", "Uses a sine wave to produce bands"},
+ {TEX_SIN, "SIN", "Sine", "Uses a sine wave to produce bands"},
{TEX_SAW, "SAW", "Saw", "Uses a saw wave to produce bands"},
{TEX_TRI, "TRI", "Tri", "Uses a triangle wave to produce bands"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "WoodTexture", "Texture");
RNA_def_struct_ui_text(srna, "Wood Texture", "Procedural noise texture.");
@@ -430,37 +498,44 @@ static void rna_def_texture_wood(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "turbulence", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "turbul");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
RNA_def_property_ui_text(prop, "Turbulence", "Sets the turbulence of the bandnoise and ringnoise types");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis");
RNA_def_property_enum_items(prop, prop_noise_basis_items);
RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisetype");
RNA_def_property_enum_items(prop, prop_noise_type);
RNA_def_property_ui_text(prop, "Noise Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_wood_stype);
RNA_def_property_ui_text(prop, "Pattern", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noisebasis2", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
RNA_def_property_enum_items(prop, prop_wood_noisebasis2);
RNA_def_property_ui_text(prop, "Noise Basis 2", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2);
RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used for calculating normal.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
@@ -473,15 +548,13 @@ static void rna_def_texture_marble(BlenderRNA *brna)
{TEX_SOFT, "SOFT", "Soft", "Uses soft marble"},
{TEX_SHARP, "SHARP", "Sharp", "Uses more clearly defined marble"},
{TEX_SHARPER, "SHARPER", "Sharper", "Uses very clearly defined marble"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
static EnumPropertyItem prop_marble_noisebasis2[] = {
{TEX_SIN, "SIN", "Sin", "Uses a sine wave to produce bands"},
{TEX_SAW, "SAW", "Saw", "Uses a saw wave to produce bands"},
{TEX_TRI, "TRI", "Tri", "Uses a triangle wave to produce bands"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "MarbleTexture", "Texture");
RNA_def_struct_ui_text(srna, "Marble Texture", "Procedural noise texture.");
@@ -492,38 +565,51 @@ static void rna_def_texture_marble(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "turbulence", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "turbul");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
RNA_def_property_ui_text(prop, "Turbulence", "Sets the turbulence of the bandnoise and ringnoise types");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_depth", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "noisedepth");
RNA_def_property_range(prop, 0, INT_MAX);
RNA_def_property_ui_range(prop, 0, 6, 0, 2);
RNA_def_property_ui_text(prop, "Noise Depth", "Sets the depth of the cloud calculation");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisetype");
RNA_def_property_enum_items(prop, prop_noise_type);
RNA_def_property_ui_text(prop, "Noise Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_marble_stype);
RNA_def_property_ui_text(prop, "Pattern", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
+
+ prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "noisebasis");
+ RNA_def_property_enum_items(prop, prop_noise_basis_items);
+ RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noisebasis2", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
RNA_def_property_enum_items(prop, prop_marble_noisebasis2);
RNA_def_property_ui_text(prop, "Noise Basis 2", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2);
RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used for calculating normal.");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
@@ -541,12 +627,14 @@ static void rna_def_texture_magic(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
RNA_def_property_ui_text(prop, "Turbulence", "Sets the turbulence of the bandnoise and ringnoise types");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_depth", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "noisedepth");
RNA_def_property_range(prop, 0, INT_MAX);
RNA_def_property_ui_range(prop, 0, 6, 0, 2);
RNA_def_property_ui_text(prop, "Noise Depth", "Sets the depth of the cloud calculation");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_blend(BlenderRNA *brna)
@@ -562,8 +650,7 @@ static void rna_def_texture_blend(BlenderRNA *brna)
{TEX_SPHERE, "SPHERICAL", "Spherical", "Creates a spherical progression"},
{TEX_HALO, "QUADRATIC_SPHERE", "Quadratic sphere", "Creates a quadratic progression in the shape of a sphere"},
{TEX_RAD, "RADIAL", "Radial", "Creates a radial progression"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "BlendTexture", "Texture");
RNA_def_struct_ui_text(srna, "Blend Texture", "Procedural color blending texture.");
@@ -573,10 +660,12 @@ static void rna_def_texture_blend(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_blend_progression);
RNA_def_property_ui_text(prop, "Progression", "Sets the style of the color blending");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "flip_axis", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_FLIPBLEND);
RNA_def_property_ui_text(prop, "Flip Axis", "Flips the texture's X and Y axis");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_stucci(BlenderRNA *brna)
@@ -588,8 +677,7 @@ static void rna_def_texture_stucci(BlenderRNA *brna)
{TEX_PLASTIC, "PLASTIC", "Plastic", "Uses standard stucci"},
{TEX_WALLIN, "WALL_IN", "Wall in", "Creates Dimples"},
{TEX_WALLOUT, "WALL_OUT", "Wall out", "Creates Ridges"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "StucciTexture", "Texture");
RNA_def_struct_ui_text(srna, "Stucci Texture", "Procedural noise texture.");
@@ -600,22 +688,32 @@ static void rna_def_texture_stucci(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
RNA_def_property_ui_text(prop, "Turbulence", "Sets the turbulence of the bandnoise and ringnoise types");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
+
+ prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "noisebasis");
+ RNA_def_property_enum_items(prop, prop_noise_basis_items);
+ RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisetype");
RNA_def_property_enum_items(prop, prop_noise_type);
RNA_def_property_ui_text(prop, "Noise Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_stucci_stype);
RNA_def_property_ui_text(prop, "Pattern", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_noise(BlenderRNA *brna)
@@ -638,8 +736,7 @@ static void rna_def_texture_image(BlenderRNA *brna)
{4, "CLIP_CUBE", "Clip Cube", "Clips to cubic-shaped area around the image and sets exterior pixels as transparent"},
{3, "REPEAT", "Repeat", "Causes the image to repeat horizontally and vertically"},
{5, "CHECKER", "Checker", "Causes the image to repeat in checker board pattern"},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "ImageTexture", "Texture");
RNA_def_struct_ui_text(srna, "Image Texture", "");
@@ -648,37 +745,45 @@ static void rna_def_texture_image(BlenderRNA *brna)
prop= RNA_def_property(srna, "mipmap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_MIPMAP);
RNA_def_property_ui_text(prop, "MIP Map", "Uses auto-generated MIP maps for the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "mipmap_gauss", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_GAUSS_MIP);
RNA_def_property_ui_text(prop, "MIP Map Gauss", "Uses Gauss filter to sample down MIP maps");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "interpolation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_INTERPOL);
RNA_def_property_ui_text(prop, "Interpolation", "Interpolates pixels using Area filter");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
/* XXX: I think flip_axis should be a generic Texture property, enabled for all the texture types */
prop= RNA_def_property(srna, "flip_axis", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_IMAROT);
RNA_def_property_ui_text(prop, "Flip Axis", "Flips the texture's X and Y axis");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "use_alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_USEALPHA);
RNA_def_property_ui_text(prop, "Use Alpha", "Uses the alpha channel information in the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "calculate_alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_CALCALPHA);
RNA_def_property_ui_text(prop, "Calculate Alpha", "Calculates an alpha channel based on RGB values in the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "invert_alpha", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_NEGALPHA);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_NEGALPHA);
RNA_def_property_ui_text(prop, "Invert Alpha", "Inverts all the alpha values in the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
rna_def_filter_size_common(srna);
prop= RNA_def_property(srna, "normal_map", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_NORMALMAP);
RNA_def_property_ui_text(prop, "Normal Map", "Uses image RGB values for normal mapping");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
/* XXX: mtex->normapspace "Sets space of normal map image" "Normal Space %t|Camera %x0|World %x1|Object %x2|Tangent %x3"
* not sure why this goes in mtex instead of texture directly? */
@@ -687,38 +792,46 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "extend");
RNA_def_property_enum_items(prop, prop_image_extension);
RNA_def_property_ui_text(prop, "Extension", "Sets how the image is stretched in the texture");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "repeat_x", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "xrepeat");
RNA_def_property_range(prop, 1, 512);
RNA_def_property_ui_text(prop, "Repeat X", "Sets a repetition multiplier in the X direction");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "repeat_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "yrepeat");
RNA_def_property_range(prop, 1, 512);
RNA_def_property_ui_text(prop, "Repeat Y", "Sets a repetition multiplier in the Y direction");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "mirror_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_REPEAT_XMIR);
RNA_def_property_ui_text(prop, "Mirror X", "Mirrors the image repetition on the X direction");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "mirror_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_REPEAT_YMIR);
RNA_def_property_ui_text(prop, "Mirror Y", "Mirrors the image repetition on the Y direction");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "checker_odd", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_CHECKER_ODD);
RNA_def_property_ui_text(prop, "Checker Odd", "Sets odd checker tiles");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "checker_even", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_CHECKER_EVEN);
RNA_def_property_ui_text(prop, "Checker Even", "Sets even checker tiles");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "checker_distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "checkerdist");
RNA_def_property_range(prop, 0.0, 0.99);
RNA_def_property_ui_range(prop, 0.0, 0.99, 0.1, 0.01);
RNA_def_property_ui_text(prop, "Checker Distance", "Sets distance between checker tiles");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
#if 0
@@ -730,6 +843,7 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_array(prop, 4);
RNA_def_property_range(prop, -10, 10);
RNA_def_property_ui_text(prop, "Crop Rectangle", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
#endif
@@ -738,29 +852,35 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_range(prop, -10.0, 10.0);
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 0.2);
RNA_def_property_ui_text(prop, "Crop Minimum X", "Sets minimum X value to crop the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "crop_min_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "cropymin");
RNA_def_property_range(prop, -10.0, 10.0);
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 0.2);
RNA_def_property_ui_text(prop, "Crop Minimum Y", "Sets minimum Y value to crop the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "crop_max_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "cropxmax");
RNA_def_property_range(prop, -10.0, 10.0);
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 0.2);
RNA_def_property_ui_text(prop, "Crop Maximum X", "Sets maximum X value to crop the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "crop_max_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "cropymax");
RNA_def_property_range(prop, -10.0, 10.0);
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 0.2);
RNA_def_property_ui_text(prop, "Crop Maximum Y", "Sets maximum Y value to crop the image");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "ima");
RNA_def_property_struct_type(prop, "Image");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Image", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_plugin(BlenderRNA *brna)
@@ -789,6 +909,7 @@ static void rna_def_texture_environment_map(BlenderRNA *brna)
RNA_def_property_pointer_sdna(prop, NULL, "env");
RNA_def_property_struct_type(prop, "EnvironmentMap");
RNA_def_property_ui_text(prop, "Environment Map", "Gets the environment map associated with this texture");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
rna_def_filter_size_common(srna);
}
@@ -804,63 +925,72 @@ static void rna_def_texture_musgrave(BlenderRNA *brna)
{TEX_HYBRIDMF, "HYBRID_MULTIFRACTAL", "Hybrid Multifractal", ""},
{TEX_FBM, "FBM", "fBM", ""},
{TEX_HTERRAIN, "HETERO_TERRAIN", "Hetero Terrain", ""},
- {0, NULL, NULL, NULL}
- };
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "MusgraveTexture", "Texture");
RNA_def_struct_ui_text(srna, "Musgrave", "Procedural musgrave texture.");
RNA_def_struct_sdna(srna, "Tex");
- prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "musgrave_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stype");
RNA_def_property_enum_items(prop, prop_musgrave_type);
RNA_def_property_ui_text(prop, "Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "highest_dimension", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mg_H");
RNA_def_property_range(prop, 0.0001, 2);
RNA_def_property_ui_text(prop, "Highest Dimension", "Highest fractal dimension");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "lacunarity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mg_lacunarity");
RNA_def_property_range(prop, 0, 6);
RNA_def_property_ui_text(prop, "Lacunarity", "Gap between succesive frequencies");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "octaves", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mg_octaves");
RNA_def_property_range(prop, 0, 8);
RNA_def_property_ui_text(prop, "Octaves", "Number of frequencies used");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mg_offset");
RNA_def_property_range(prop, 0, 6);
RNA_def_property_ui_text(prop, "Offset", "The fractal offset");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mg_gain");
RNA_def_property_range(prop, 0, 6);
RNA_def_property_ui_text(prop, "Gain", "The gain multiplier");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_intensity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ns_outscale");
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Noise Intensity", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis");
RNA_def_property_enum_items(prop, prop_noise_basis_items);
RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2);
RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used for calculating normal");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_voronoi(BlenderRNA *brna)
@@ -878,7 +1008,7 @@ static void rna_def_texture_voronoi(BlenderRNA *brna)
{TEX_MINKOVSKY, "MINKOVSKY", "Minkovsky", ""},
{0, NULL, NULL, NULL}};
- static EnumPropertyItem prop_color_type_items[] = {
+ static EnumPropertyItem prop_coloring_items[] = {
/* XXX: OK names / descriptions? */
{TEX_INTENSITY, "INTENSITY", "Intensity", "Only calculate intensity."},
{TEX_COL1, "POSITION", "Position", "Color cells by position."},
@@ -895,37 +1025,44 @@ static void rna_def_texture_voronoi(BlenderRNA *brna)
RNA_def_property_array(prop, 4);
RNA_def_property_range(prop, -2, 2);
RNA_def_property_ui_text(prop, "Feature Weights", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "minkovsky_exponent", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "vn_mexp");
RNA_def_property_range(prop, 0.01, 10);
RNA_def_property_ui_text(prop, "Minkovsky Exponent", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "distance_metric", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "vn_distm");
RNA_def_property_enum_items(prop, prop_distance_metric_items);
RNA_def_property_ui_text(prop, "Distance Metric", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
- prop= RNA_def_property(srna, "color_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "coloring", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "vn_coltype");
- RNA_def_property_enum_items(prop, prop_color_type_items);
- RNA_def_property_ui_text(prop, "Color Type", "");
+ RNA_def_property_enum_items(prop, prop_coloring_items);
+ RNA_def_property_ui_text(prop, "Coloring", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_intensity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ns_outscale");
RNA_def_property_range(prop, 0.01, 10);
RNA_def_property_ui_text(prop, "Noise Intensity", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2);
RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used for calculating normal");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture_distorted_noise(BlenderRNA *brna)
@@ -941,27 +1078,32 @@ static void rna_def_texture_distorted_noise(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "dist_amount");
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Distortion Amount", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise input");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis");
RNA_def_property_enum_items(prop, prop_noise_basis_items);
RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "noise_distortion", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
RNA_def_property_enum_items(prop, prop_noise_basis_items);
RNA_def_property_ui_text(prop, "Noise Distortion", "Sets the noise basis for the distortion");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.001, 0.1);
RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2);
RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used for calculating normal");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
}
static void rna_def_texture(BlenderRNA *brna)
@@ -989,25 +1131,30 @@ static void rna_def_texture(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Texture", "ID");
RNA_def_struct_sdna(srna, "Tex");
RNA_def_struct_ui_text(srna, "Texture", "Texture datablock used by materials, lamps, worlds and brushes.");
+ RNA_def_struct_ui_icon(srna, ICON_TEXTURE_DATA);
RNA_def_struct_refine_func(srna, "rna_Texture_refine");
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_type_items);
RNA_def_property_ui_text(prop, "Type", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "color_ramp", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "coba");
RNA_def_property_struct_type(prop, "ColorRamp");
RNA_def_property_ui_text(prop, "Color Ramp", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "brightness", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "bright");
RNA_def_property_range(prop, 0, 2);
RNA_def_property_ui_text(prop, "Brightness", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
prop= RNA_def_property(srna, "contrast", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.01, 5);
RNA_def_property_ui_text(prop, "Contrast", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
/* XXX: would be nicer to have this as a color selector?
but the values can go past [0,1]. */
@@ -1016,6 +1163,7 @@ static void rna_def_texture(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_range(prop, 0, 2);
RNA_def_property_ui_text(prop, "RGB Factor", "");
+ RNA_def_property_update(prop, NC_TEXTURE, NULL);
rna_def_animdata_common(srna);
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index a3e48f629cb..b6912c44fb7 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -30,6 +30,10 @@
#include "rna_internal.h"
#include "RNA_enum_types.h"
+#include "UI_interface.h"
+
+#include "WM_types.h"
+
#ifdef RNA_RUNTIME
#include "MEM_guardedalloc.h"
@@ -44,10 +48,7 @@
#include "BKE_report.h"
#include "BKE_screen.h"
-#include "UI_interface.h"
-
#include "WM_api.h"
-#include "WM_types.h"
static ARegionType *region_type_find(ReportList *reports, int space_type, int region_type)
{
@@ -151,7 +152,7 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi
PanelType *pt, dummypt = {0};
Panel dummypanel= {0};
PointerRNA dummyptr;
- int have_function[2];
+ int have_function[3];
/* setup dummy panel & panel type to store static properties in */
dummypanel.type= &dummypt;
@@ -199,7 +200,7 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi
static StructRNA* rna_Panel_refine(struct PointerRNA *ptr)
{
Panel *hdr= (Panel*)ptr->data;
- return (hdr->type)? hdr->type->py_srna: &RNA_Panel;
+ return (hdr->type && hdr->type->py_srna)? hdr->type->py_srna: &RNA_Panel;
}
/* Header */
@@ -290,7 +291,7 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo
static StructRNA* rna_Header_refine(struct PointerRNA *htr)
{
Header *hdr= (Header*)htr->data;
- return (hdr->type)? hdr->type->py_srna: &RNA_Header;
+ return (hdr->type && hdr->type->py_srna)? hdr->type->py_srna: &RNA_Header;
}
/* Menu */
@@ -405,19 +406,145 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void
static StructRNA* rna_Menu_refine(struct PointerRNA *mtr)
{
Menu *hdr= (Menu*)mtr->data;
- return (hdr->type)? hdr->type->py_srna: &RNA_Menu;
+ return (hdr->type && hdr->type->py_srna)? hdr->type->py_srna: &RNA_Menu;
+}
+
+static int rna_UILayout_active_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetActive(ptr->data);
+}
+
+static void rna_UILayout_active_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetActive(ptr->data, value);
+}
+
+static void rna_UILayout_op_context_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetOperatorContext(ptr->data, value);
+}
+
+static int rna_UILayout_op_context_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetOperatorContext(ptr->data);
+}
+
+static int rna_UILayout_enabled_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetEnabled(ptr->data);
+}
+
+static void rna_UILayout_enabled_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetEnabled(ptr->data, value);
+}
+
+static int rna_UILayout_red_alert_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetRedAlert(ptr->data);
+}
+
+static void rna_UILayout_red_alert_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetRedAlert(ptr->data, value);
+}
+
+static int rna_UILayout_keep_aspect_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetKeepAspect(ptr->data);
}
-#else
+static void rna_UILayout_keep_aspect_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetKeepAspect(ptr->data, value);
+}
+
+static int rna_UILayout_alignment_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetAlignment(ptr->data);
+}
+
+static void rna_UILayout_alignment_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetAlignment(ptr->data, value);
+}
+
+static float rna_UILayout_scale_x_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetScaleX(ptr->data);
+}
+
+static void rna_UILayout_scale_x_set(struct PointerRNA *ptr, float value)
+{
+ return uiLayoutSetScaleX(ptr->data, value);
+}
+
+static float rna_UILayout_scale_y_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetScaleY(ptr->data);
+}
+
+static void rna_UILayout_scale_y_set(struct PointerRNA *ptr, float value)
+{
+ return uiLayoutSetScaleY(ptr->data, value);
+}
+
+#else // RNA_RUNTIME
static void rna_def_ui_layout(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem alignment_items[] = {
+ {UI_LAYOUT_ALIGN_EXPAND, "EXPAND", "Expand", ""},
+ {UI_LAYOUT_ALIGN_LEFT, "LEFT", "Left", ""},
+ {UI_LAYOUT_ALIGN_CENTER, "CENTER", "Center", ""},
+ {UI_LAYOUT_ALIGN_RIGHT, "RIGHT", "RIght", ""},
+ {0, NULL, NULL, NULL}};
+
+ /* see WM_types.h */
+ static EnumPropertyItem operator_context_items[] = {
+ {WM_OP_INVOKE_DEFAULT, "INVOKE_DEFAULT", "Invoke Default", ""},
+ {WM_OP_INVOKE_REGION_WIN, "INVOKE_REGION_WIN", "Invoke Region Window", ""},
+ {WM_OP_INVOKE_AREA, "INVOKE_AREA", "Invoke Area", ""},
+ {WM_OP_INVOKE_SCREEN, "INVOKE_SCREEN", "Invoke Screen", ""},
+ {WM_OP_EXEC_DEFAULT, "EXEC_DEFAULT", "Exec Default", ""},
+ {WM_OP_EXEC_REGION_WIN, "EXEC_REGION_WIN", "Exec Region Window", ""},
+ {WM_OP_EXEC_AREA, "EXEC_AREA", "Exec Area", ""},
+ {WM_OP_EXEC_SCREEN, "EXEC_SCREEN", "Exec Screen", ""},
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "UILayout", NULL);
RNA_def_struct_sdna(srna, "uiLayout");
RNA_def_struct_ui_text(srna, "UI Layout", "User interface layout in a panel or header.");
+ prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_funcs(prop, "rna_UILayout_active_get", "rna_UILayout_active_set");
+
+ prop= RNA_def_property(srna, "operator_context", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, operator_context_items);
+ RNA_def_property_enum_funcs(prop, "rna_UILayout_op_context_get", "rna_UILayout_op_context_set", NULL);
+
+ prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_funcs(prop, "rna_UILayout_enabled_get", "rna_UILayout_enabled_set");
+
+ prop= RNA_def_property(srna, "red_alert", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_funcs(prop, "rna_UILayout_red_alert_get", "rna_UILayout_red_alert_set");
+
+ prop= RNA_def_property(srna, "alignment", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, alignment_items);
+ RNA_def_property_enum_funcs(prop, "rna_UILayout_alignment_get", "rna_UILayout_alignment_set", NULL);
+
+ prop= RNA_def_property(srna, "keep_aspect", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_funcs(prop, "rna_UILayout_keep_aspect_get", "rna_UILayout_keep_aspect_set");
+
+ prop= RNA_def_property(srna, "scale_x", PROP_FLOAT, PROP_UNSIGNED);
+ RNA_def_property_float_funcs(prop, "rna_UILayout_scale_x_get", "rna_UILayout_scale_x_set", NULL);
+
+ prop= RNA_def_property(srna, "scale_y", PROP_FLOAT, PROP_UNSIGNED);
+ RNA_def_property_float_funcs(prop, "rna_UILayout_scale_y_get", "rna_UILayout_scale_y_set", NULL);
+
RNA_api_ui_layout(srna);
}
@@ -561,5 +688,5 @@ void RNA_def_ui(BlenderRNA *brna)
rna_def_menu(brna);
}
-#endif
+#endif // RNA_RUNTIME
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 43e67fdfa57..e0d3201a5e7 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -291,6 +291,12 @@ static void rna_def_userdef_theme_ui(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Slider Widget Colors", "");
RNA_def_property_update(prop, NC_WINDOW, NULL);
+ prop= RNA_def_property(srna, "wcol_box", PROP_POINTER, PROP_NEVER_NULL);
+ RNA_def_property_pointer_sdna(prop, NULL, "wcol_box");
+ RNA_def_property_struct_type(prop, "ThemeWidgetColors");
+ RNA_def_property_ui_text(prop, "Box Backdrop Colors", "");
+ RNA_def_property_update(prop, NC_WINDOW, NULL);
+
prop= RNA_def_property(srna, "wcol_menu", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "wcol_menu");
RNA_def_property_struct_type(prop, "ThemeWidgetColors");
@@ -1649,7 +1655,7 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
prop= RNA_def_property(srna, "auto_keying_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, auto_key_modes);
- RNA_def_property_enum_funcs(prop, "rna_userdef_autokeymode_get", "rna_userdef_autokeymode_set");
+ RNA_def_property_enum_funcs(prop, "rna_userdef_autokeymode_get", "rna_userdef_autokeymode_set", NULL);
RNA_def_property_ui_text(prop, "Auto Keying Mode", "Mode of automatic keyframe insertion for Objects and Bones.");
prop= RNA_def_property(srna, "auto_keyframe_insert_available", PROP_BOOLEAN, PROP_NONE);
@@ -2072,32 +2078,32 @@ void RNA_def_userdef(BlenderRNA *brna)
/* nested structs */
prop= RNA_def_property(srna, "view", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "UserPreferencesView");
- RNA_def_property_pointer_funcs(prop, "rna_UserDef_view_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_view_get", NULL, NULL);
RNA_def_property_ui_text(prop, "View & Controls", "Preferences related to viewing data.");
prop= RNA_def_property(srna, "edit", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "UserPreferencesEdit");
- RNA_def_property_pointer_funcs(prop, "rna_UserDef_edit_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_edit_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Edit Methods", "Settings for interacting with Blender data.");
prop= RNA_def_property(srna, "autosave", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "UserPreferencesAutosave");
- RNA_def_property_pointer_funcs(prop, "rna_UserDef_autosave_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_autosave_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Auto Save", "Automatic backup file settings.");
prop= RNA_def_property(srna, "language", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "UserPreferencesLanguage");
- RNA_def_property_pointer_funcs(prop, "rna_UserDef_language_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_language_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Language & Font", "User interface translation settings.");
prop= RNA_def_property(srna, "filepaths", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "UserPreferencesFilePaths");
- RNA_def_property_pointer_funcs(prop, "rna_UserDef_filepaths_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_filepaths_get", NULL, NULL);
RNA_def_property_ui_text(prop, "File Paths", "Default paths for external files.");
prop= RNA_def_property(srna, "system", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "UserPreferencesSystem");
- RNA_def_property_pointer_funcs(prop, "rna_UserDef_system_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_system_get", NULL, NULL);
RNA_def_property_ui_text(prop, "System & OpenGL", "Graphics driver and operating system settings.");
rna_def_userdef_view(brna);
diff --git a/source/blender/makesrna/intern/rna_vfont.c b/source/blender/makesrna/intern/rna_vfont.c
index d18b87e73ee..aa2aaaf6342 100644
--- a/source/blender/makesrna/intern/rna_vfont.c
+++ b/source/blender/makesrna/intern/rna_vfont.c
@@ -43,6 +43,7 @@ void RNA_def_vfont(BlenderRNA *brna)
srna= RNA_def_struct(brna, "VectorFont", "ID");
RNA_def_struct_ui_text(srna, "Vector Font", "Vector font for Text objects.");
RNA_def_struct_sdna(srna, "VFont");
+ RNA_def_struct_ui_icon(srna, ICON_FONT_DATA);
prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index c1bccad4ffa..22ce207c6a9 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -56,7 +56,7 @@ static StructRNA *rna_OperatorProperties_refine(PointerRNA *ptr)
if(op)
return op->type->srna;
else
- return &RNA_OperatorProperties;
+ return ptr->type;
}
IDProperty *rna_OperatorProperties_idproperties(PointerRNA *ptr, int create)
@@ -107,7 +107,7 @@ static void rna_def_operator(BlenderRNA *brna)
prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "OperatorProperties");
RNA_def_property_ui_text(prop, "Properties", "");
- RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL);
srna= RNA_def_struct(brna, "OperatorProperties", NULL);
RNA_def_struct_ui_text(srna, "Operator Properties", "Input properties of an Operator.");
@@ -133,6 +133,21 @@ static void rna_def_operator_utils(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Time", "Time of mouse location.");
}
+static void rna_def_operator_filelist_element(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "OperatorFileListElement", "IDPropertyGroup");
+ RNA_def_struct_ui_text(srna, "Operator File List Element", "");
+
+
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_IDPROPERTY);
+ RNA_def_property_ui_text(prop, "Name", "the name of a file or directory within a file list");
+}
+
+
static void rna_def_windowmanager(BlenderRNA *brna)
{
StructRNA *srna;
@@ -151,6 +166,7 @@ void RNA_def_wm(BlenderRNA *brna)
{
rna_def_operator(brna);
rna_def_operator_utils(brna);
+ rna_def_operator_filelist_element(brna);
rna_def_windowmanager(brna);
}
diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c
index eb764e4bc2d..46a7ef139d5 100644
--- a/source/blender/makesrna/intern/rna_world.c
+++ b/source/blender/makesrna/intern/rna_world.c
@@ -34,6 +34,8 @@
#include "DNA_texture_types.h"
#include "DNA_world_types.h"
+#include "WM_types.h"
+
#ifdef RNA_RUNTIME
static PointerRNA rna_World_ambient_occlusion_get(PointerRNA *ptr)
@@ -114,6 +116,7 @@ static void rna_def_world_mtex(BlenderRNA *brna)
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "object");
RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Object", "Object to use for mapping with Object texture coordinates.");
}
@@ -293,26 +296,31 @@ static void rna_def_world_stars(BlenderRNA *brna)
prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_STARS);
RNA_def_property_ui_text(prop, "Enabled", "Enable starfield generation.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "starsize");
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Size", "Average screen dimension of stars.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "min_distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "starmindist");
RNA_def_property_range(prop, 0, 1000);
RNA_def_property_ui_text(prop, "Minimum Distance", "Minimum distance to the camera for stars.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "average_separation", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "stardist");
RNA_def_property_range(prop, 2, 1000);
RNA_def_property_ui_text(prop, "Average Separation", "Average distance between any two stars.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "color_randomization", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "starcolnoise");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Color Randomization", "Randomizes star color.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
/* unused
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
@@ -337,6 +345,7 @@ void RNA_def_world(BlenderRNA *brna)
srna= RNA_def_struct(brna, "World", "ID");
RNA_def_struct_ui_text(srna, "World", "World datablock describing the environment and ambient lighting of a scene.");
+ RNA_def_struct_ui_icon(srna, ICON_WORLD_DATA);
rna_def_animdata_common(srna);
rna_def_mtex_common(srna, "rna_World_mtex_begin", "rna_World_active_texture_get", "WorldTextureSlot");
@@ -346,11 +355,13 @@ void RNA_def_world(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "horr");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Horizon Color", "Color at the horizon.");
-
+ RNA_def_property_update(prop, NC_WORLD, NULL);
+
prop= RNA_def_property(srna, "zenith_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "zenr");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Zenith Color", "Color at the zenith.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "ambient_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "ambr");
@@ -372,14 +383,17 @@ void RNA_def_world(BlenderRNA *brna)
prop= RNA_def_property(srna, "blend_sky", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYBLEND);
RNA_def_property_ui_text(prop, "Blend Sky", "Renders background with natural progression from horizon to zenith.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "paper_sky", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYPAPER);
RNA_def_property_ui_text(prop, "Paper Sky", "Flattens blend or texture coordinates.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
prop= RNA_def_property(srna, "real_sky", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYREAL);
RNA_def_property_ui_text(prop, "Real Sky", "Renders background with a real horizon.");
+ RNA_def_property_update(prop, NC_WORLD, NULL);
/* physics */
prop= RNA_def_property(srna, "physics_engine", PROP_ENUM, PROP_NONE);
@@ -395,17 +409,17 @@ void RNA_def_world(BlenderRNA *brna)
/* nested structs */
prop= RNA_def_property(srna, "ambient_occlusion", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "WorldAmbientOcclusion");
- RNA_def_property_pointer_funcs(prop, "rna_World_ambient_occlusion_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_World_ambient_occlusion_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Ambient Occlusion", "World ambient occlusion settings.");
prop= RNA_def_property(srna, "mist", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "WorldMistSettings");
- RNA_def_property_pointer_funcs(prop, "rna_World_mist_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_World_mist_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Mist", "World mist settings.");
prop= RNA_def_property(srna, "stars", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "WorldStarsSettings");
- RNA_def_property_pointer_funcs(prop, "rna_World_stars_get", NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_World_stars_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Stars", "World stars settings.");
prop= RNA_def_property(srna, "script_link", PROP_POINTER, PROP_NEVER_NULL);
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c b/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
index 846aec490c2..15f3148b54c 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
@@ -55,6 +55,7 @@ static void do_normalize(bNode *node, float *out, float *src, float *min, float
}
}
+/* The code below assumes all data is inside range +- this, and that input buffer is single channel */
#define BLENDER_ZMAX 10000.0f
static void node_composit_exec_normalize(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
@@ -63,7 +64,7 @@ static void node_composit_exec_normalize(void *data, bNode *node, bNodeStack **i
/* stack order out: valbuf */
if(out[0]->hasoutput==0) return;
- /* input no image? then only value operation */
+ /* Input has no image buffer? Then pass the value */
if(in[0]->data==NULL) {
QUATCOPY(out[0]->vec, in[0]->vec);
}
@@ -78,18 +79,20 @@ static void node_composit_exec_normalize(void *data, bNode *node, bNodeStack **i
CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1); /* allocs */
for (val = cbuf->rect; tot; tot--, val++) {
- if ((*val > max) && (*val < BLENDER_ZMAX)) {
+ if ((*val > max) && (*val <= BLENDER_ZMAX)) {
max = *val;
}
- if (*val < min) {
+ if ((*val < min) && (*val >= -BLENDER_ZMAX)) {
min = *val;
}
}
- mult = 1.0f/(max-min);
-
- printf("min %f max %f\n", min, max);
-
- composit3_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, NULL, &min, NULL, &mult, do_normalize, CB_VAL, CB_VAL, CB_VAL);
+ /* In the rare case of flat buffer, which would cause a divide by 0, just pass the input to the output */
+ if ((max-min) != 0.0f) {
+ mult = 1.0f/(max-min);
+ composit3_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, NULL, &min, NULL, &mult, do_normalize, CB_VAL, CB_VAL, CB_VAL);
+ } else {
+ memcpy(stackbuf->rect, cbuf->rect, sizeof(float) * cbuf->x * cbuf->y);
+ }
out[0]->data= stackbuf;
}
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_scale.c b/source/blender/nodes/intern/CMP_nodes/CMP_scale.c
index cc6f9249495..ee3607c11f6 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_scale.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_scale.c
@@ -65,8 +65,8 @@ static void node_composit_exec_scale(void *data, bNode *node, bNodeStack **in, b
newx = cbuf->x * (rd->size / 100.0f);
newy = cbuf->y * (rd->size / 100.0f);
} else { /* CMP_SCALE_ABSOLUTE */
- newx= (int)in[1]->vec[0];
- newy= (int)in[2]->vec[0];
+ newx= MAX2((int)in[1]->vec[0], 1);
+ newy= MAX2((int)in[2]->vec[0], 1);
}
newx= MIN2(newx, CMP_SCALE_MAX);
newy= MIN2(newy, CMP_SCALE_MAX);
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
index fedca8f9086..fbc56dfcc83 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
@@ -33,6 +33,11 @@
#include <eval.h>
#endif
+/* TODO, support python3.x */
+#if PY_VERSION_HEX >= 0x03000000
+#define DISABLE_PYTHON 1
+#endif
+
#include "DNA_text_types.h"
#include "BKE_text.h"
#include "BKE_utildefines.h"
@@ -56,13 +61,15 @@ static void node_dynamic_free_storage_cb(bNode *node);
#ifndef DISABLE_PYTHON
static PyObject *init_dynamicdict(void) {
- PyObject *newscriptdict;
+ PyObject *newscriptdict, *item;
PyGILState_STATE gilstate = PyGILState_Ensure();
newscriptdict= PyDict_New();
PyDict_SetItemString(newscriptdict, "__builtins__", PyEval_GetBuiltins());
- EXPP_dict_set_item_str(newscriptdict, "__name__", PyString_FromString("__main__"));
+ item= PyString_FromString("__main__");
+ PyDict_SetItemString(newscriptdict, "__name__", item);
+ Py_DECREF(item);
PyGILState_Release(gilstate);
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_material.c b/source/blender/nodes/intern/SHD_nodes/SHD_material.c
index c0a2534ac4a..69c2c0a345c 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_material.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_material.c
@@ -130,7 +130,9 @@ static void node_shader_exec_material(void *data, bNode *node, bNodeStack **in,
nodestack_get_vec(&shi->translucency, SOCK_VALUE, in[MAT_IN_TRANSLUCENCY]);
}
+ shi->nodes= 1; /* temp hack to prevent trashadow recursion */
node_shader_lamp_loop(shi, &shrnode); /* clears shrnode */
+ shi->nodes= 0;
/* write to outputs */
if(node->custom1 & SH_NODE_MAT_DIFF) {
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_math.c b/source/blender/nodes/intern/SHD_nodes/SHD_math.c
index 050c2cdcc95..645f95686d7 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_math.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_math.c
@@ -197,7 +197,7 @@ bNodeStack **out)
static int gpu_shader_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
static char *names[] = {"math_add", "math_subtract", "math_multiply",
- "math_divide", "math_sine", "math_cosine", "math_tangnet", "math_asin",
+ "math_divide", "math_sine", "math_cosine", "math_tangent", "math_asin",
"math_acos", "math_atan", "math_pow", "math_log", "math_min", "math_max",
"math_round", "math_less_than", "math_greater_than"};
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c b/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c
index 96db8db18a6..8a73a318f70 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c
@@ -101,7 +101,7 @@ static void node_shader_exec_vect_math(void *data, bNode *node, bNodeStack **in,
static int gpu_shader_vect_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
- static char *names[] = {"vec_math_add", "vec_math_subtract",
+ static char *names[] = {"vec_math_add", "vec_math_sub",
"vec_math_average", "vec_math_dot", "vec_math_cross",
"vec_math_normalize"};
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_bricks.c b/source/blender/nodes/intern/TEX_nodes/TEX_bricks.c
index c9fa3528b02..80cbd6188ee 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_bricks.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_bricks.c
@@ -49,12 +49,21 @@ static void init(bNode *node) {
node->custom4 = 1.0; /* squash */
}
+static float noise(int n) /* fast integer noise */
+{
+ int nn;
+ n = (n >> 13) ^ n;
+ nn = (n * (n * n * 60493 + 19990303) + 1376312589) & 0x7fffffff;
+ return 0.5f * ((float)nn / 1073741824.0f);
+}
+
static void colorfn(float *out, float *coord, bNode *node, bNodeStack **in, short thread)
{
float x = coord[0];
float y = coord[1];
- float bricknum, rownum, offset = 0;
+ int bricknum, rownum;
+ float offset = 0;
float ins_x, ins_y;
float tint;
@@ -71,20 +80,19 @@ static void colorfn(float *out, float *coord, bNode *node, bNodeStack **in, shor
tex_input_rgba(bricks2, in[1], coord, thread);
tex_input_rgba(mortar, in[2], coord, thread);
- rownum = floor(y / row_height);
+ rownum = (int)floor(y / row_height);
if( node->custom1 && node->custom2 ) {
brick_width *= ((int)(rownum) % node->custom2 ) ? 1.0f : node->custom4; /* squash */
offset = ((int)(rownum) % node->custom1 ) ? 0 : (brick_width*node->custom3); /* offset */
}
- bricknum = floor((x+offset) / brick_width);
+ bricknum = (int)floor((x+offset) / brick_width);
ins_x = (x+offset) - brick_width*bricknum;
ins_y = y - row_height*rownum;
- srand( (123456*rownum) + bricknum );
- tint = rand() / (float)RAND_MAX + bias;
+ tint = noise((rownum << 16) + (bricknum & 0xFFFF)) + bias;
CLAMP(tint,0.0f,1.0f);
if( ins_x < mortar_thickness || ins_y < mortar_thickness ||
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_translate.c b/source/blender/nodes/intern/TEX_nodes/TEX_translate.c
index 0e903301789..cadd27612f4 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_translate.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_translate.c
@@ -31,7 +31,7 @@
static bNodeSocketType inputs[]= {
{ SOCK_RGBA, 1, "Color", 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
- { SOCK_VECTOR, 1, "Offset", 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f },
+ { SOCK_VECTOR, 1, "Offset", 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f },
{ -1, 0, "" }
};
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index 140c7ef947d..7b3a67ebff5 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -19,6 +19,7 @@
#include "bpy_rna.h"
#include "bpy_operator.h"
#include "bpy_ui.h"
+#include "bpy_util.h"
#include "DNA_anim_types.h"
#include "DNA_space_types.h"
@@ -90,9 +91,7 @@ static PyObject *CreateGlobalDictionary( bContext *C )
Py_DECREF(item);
// XXX - evil, need to access context
- item = PyCObject_FromVoidPtr( C, NULL );
- PyDict_SetItemString( dict, "__bpy_context__", item );
- Py_DECREF(item);
+ BPy_SetContext(C);
// XXX - put somewhere more logical
{
@@ -386,6 +385,8 @@ void BPY_run_ui_scripts(bContext *C, int reload)
PySys_SetObject("path", sys_path_new);
Py_DECREF(sys_path_new);
+ // XXX - evil, need to access context
+ BPy_SetContext(C);
while((de = readdir(dir)) != NULL) {
/* We could stat the file but easier just to let python
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index f8dcb1f43a1..004cf2fb7c7 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -41,73 +41,6 @@
extern ListBase global_ops; /* evil, temp use */
-
-
-/* This function is only used by operators right now
- * Its used for taking keyword args and filling in property values */
-int PYOP_props_from_dict(PointerRNA *ptr, PyObject *kw)
-{
- int error_val = 0;
- int totkw;
- const char *arg_name= NULL;
- PyObject *item;
-
- PropertyRNA *prop, *iterprop;
- CollectionPropertyIterator iter;
-
- iterprop= RNA_struct_iterator_property(ptr->type);
- RNA_property_collection_begin(ptr, iterprop, &iter);
-
- totkw = kw ? PyDict_Size(kw):0;
-
- for(; iter.valid; RNA_property_collection_next(&iter)) {
- prop= iter.ptr.data;
-
- arg_name= RNA_property_identifier(prop);
-
- if (strcmp(arg_name, "rna_type")==0) continue;
-
- if (kw==NULL) {
- PyErr_Format( PyExc_AttributeError, "no args, expected \"%s\"", arg_name ? arg_name : "<UNKNOWN>");
- error_val= -1;
- break;
- }
-
- item= PyDict_GetItemString(kw, arg_name);
-
- if (item == NULL) {
- PyErr_Format( PyExc_AttributeError, "argument \"%s\" missing", arg_name ? arg_name : "<UNKNOWN>");
- error_val = -1; /* pyrna_py_to_prop sets the error */
- break;
- }
-
- if (pyrna_py_to_prop(ptr, prop, NULL, item)) {
- error_val= -1;
- break;
- }
-
- totkw--;
- }
-
- RNA_property_collection_end(&iter);
-
- if (error_val==0 && totkw > 0) { /* some keywords were given that were not used :/ */
- PyObject *key, *value;
- Py_ssize_t pos = 0;
-
- while (PyDict_Next(kw, &pos, &key, &value)) {
- arg_name= _PyUnicode_AsString(key);
- if (RNA_struct_find_property(ptr, arg_name) == NULL) break;
- arg_name= NULL;
- }
-
- PyErr_Format( PyExc_AttributeError, "argument \"%s\" unrecognized", arg_name ? arg_name : "<UNKNOWN>");
- error_val = -1;
- }
-
- return error_val;
-}
-
static PyObject *pyop_base_dir(PyObject *self);
static PyObject *pyop_base_rna(PyObject *self, PyObject *pyname);
static struct PyMethodDef pyop_base_methods[] = {
@@ -126,7 +59,7 @@ static PyObject *pyop_base_call( PyObject * self, PyObject * args, PyObject * k
PointerRNA ptr;
// XXX Todo, work out a better solution for passing on context, could make a tuple from self and pack the name and Context into it...
- bContext *C = (bContext *)PyCObject_AsVoidPtr(PyDict_GetItemString(PyEval_GetGlobals(), "__bpy_context__"));
+ bContext *C = BPy_GetContext();
char *opname = _PyUnicode_AsString(self);
@@ -148,7 +81,7 @@ static PyObject *pyop_base_call( PyObject * self, PyObject * args, PyObject * k
WM_operator_properties_create(&ptr, opname);
- error_val= PYOP_props_from_dict(&ptr, kw);
+ error_val= pyrna_pydict_to_props(&ptr, kw, "Converting py args to operator properties: ");
if (error_val==0) {
ReportList reports;
diff --git a/source/blender/python/intern/bpy_operator.h b/source/blender/python/intern/bpy_operator.h
index c4741f936bf..46ea144fd4d 100644
--- a/source/blender/python/intern/bpy_operator.h
+++ b/source/blender/python/intern/bpy_operator.h
@@ -42,7 +42,4 @@ typedef struct {
PyObject *BPY_operator_module(void);
-/* fill in properties from a python dict */
-int PYOP_props_from_dict(PointerRNA *ptr, PyObject *kw);
-
#endif
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index 43d62b3005f..6ab990acdf5 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -189,6 +189,8 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperator *op, wmEvent *eve
PyObject *args;
PyObject *ret= NULL, *py_class_instance, *item= NULL;
int ret_flag= (mode==PYOP_POLL ? 0:OPERATOR_CANCELLED);
+ PointerRNA ptr_context;
+ PyObject *py_context;
PyGILState_STATE gilstate = PyGILState_Ensure();
@@ -233,7 +235,11 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperator *op, wmEvent *eve
}
else if (mode==PYOP_EXEC) {
item= PyObject_GetAttrString(py_class, "exec");
- args = PyTuple_New(1);
+ args = PyTuple_New(2);
+
+ RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context);
+ py_context = pyrna_struct_CreatePyObject(&ptr_context);
+ PyTuple_SET_ITEM(args, 1, py_context);
}
else if (mode==PYOP_POLL) {
item= PyObject_GetAttrString(py_class, "poll");
@@ -272,7 +278,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperator *op, wmEvent *eve
* thrown away anyway
*
* If we ever want to do this and use the props again,
- * it can be done with - PYOP_props_from_dict(op->ptr, kw)
+ * it can be done with - pyrna_pydict_to_props(op->ptr, kw, "")
*/
Py_DECREF(ret);
@@ -391,7 +397,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
{PYOP_ATTR_UINAME, 's', 0, BPY_CLASS_ATTR_OPTIONAL},
{PYOP_ATTR_PROP, 'l', 0, BPY_CLASS_ATTR_OPTIONAL},
{PYOP_ATTR_DESCRIPTION, 's', 0, BPY_CLASS_ATTR_NONE_OK},
- {"exec", 'f', 1, BPY_CLASS_ATTR_OPTIONAL},
+ {"exec", 'f', 2, BPY_CLASS_ATTR_OPTIONAL},
{"invoke", 'f', 2, BPY_CLASS_ATTR_OPTIONAL},
{"poll", 'f', 2, BPY_CLASS_ATTR_OPTIONAL},
{NULL, 0, 0, 0}
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 4f7287ea9d3..9fa7d1b6693 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -212,6 +212,71 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
return ret;
}
+/* This function is only used by operators right now
+ * Its used for taking keyword args and filling in property values */
+int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, const char *error_prefix)
+{
+ int error_val = 0;
+ int totkw;
+ const char *arg_name= NULL;
+ PyObject *item;
+
+ PropertyRNA *prop, *iterprop;
+ CollectionPropertyIterator iter;
+
+ iterprop= RNA_struct_iterator_property(ptr->type);
+ RNA_property_collection_begin(ptr, iterprop, &iter);
+
+ totkw = kw ? PyDict_Size(kw):0;
+
+ for(; iter.valid; RNA_property_collection_next(&iter)) {
+ prop= iter.ptr.data;
+
+ arg_name= RNA_property_identifier(prop);
+
+ if (strcmp(arg_name, "rna_type")==0) continue;
+
+ if (kw==NULL) {
+ PyErr_Format( PyExc_AttributeError, "%s: no keywords, expected \"%s\"", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
+ error_val= -1;
+ break;
+ }
+
+ item= PyDict_GetItemString(kw, arg_name);
+
+ if (item == NULL) {
+ PyErr_Format( PyExc_AttributeError, "%s: keyword \"%s\" missing", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
+ error_val = -1; /* pyrna_py_to_prop sets the error */
+ break;
+ }
+
+ if (pyrna_py_to_prop(ptr, prop, NULL, item)) {
+ error_val= -1;
+ break;
+ }
+
+ totkw--;
+ }
+
+ RNA_property_collection_end(&iter);
+
+ if (error_val==0 && totkw > 0) { /* some keywords were given that were not used :/ */
+ PyObject *key, *value;
+ Py_ssize_t pos = 0;
+
+ while (PyDict_Next(kw, &pos, &key, &value)) {
+ arg_name= _PyUnicode_AsString(key);
+ if (RNA_struct_find_property(ptr, arg_name) == NULL) break;
+ arg_name= NULL;
+ }
+
+ PyErr_Format( PyExc_AttributeError, "%s: keyword \"%s\" unrecognized", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
+ error_val = -1;
+ }
+
+ return error_val;
+}
+
static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw);
PyObject *pyrna_func_to_py(PointerRNA *ptr, FunctionRNA *func)
@@ -413,9 +478,9 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
}
case PROP_POINTER:
{
- StructRNA *ptype= RNA_property_pointer_type(prop);
+ StructRNA *ptype= RNA_property_pointer_type(ptr, prop);
- if(!BPy_StructRNA_Check(value)) {
+ if(!BPy_StructRNA_Check(value) && value != Py_None) {
PointerRNA tmp;
RNA_pointer_create(NULL, ptype, NULL, &tmp);
PyErr_Format(PyExc_TypeError, "expected a %s type", RNA_struct_identifier(tmp.type));
@@ -425,19 +490,32 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
int raise_error= 0;
if(data) {
if(ptype == &RNA_AnyType) {
- *((PointerRNA*)data)= param->ptr;
+ if(value == Py_None)
+ memset(data, 0, sizeof(PointerRNA));
+ else
+ *((PointerRNA*)data)= param->ptr;
+ }
+ else if(value == Py_None) {
+ *((void**)data)= NULL;
}
else if(RNA_struct_is_a(param->ptr.type, ptype)) {
*((void**)data)= param->ptr.data;
- } else {
+ }
+ else {
raise_error= 1;
}
}
else {
/* data==NULL, assign to RNA */
- if(RNA_struct_is_a(param->ptr.type, ptype)) {
+ if(value == Py_None) {
+ PointerRNA valueptr;
+ memset(&valueptr, 0, sizeof(valueptr));
+ RNA_property_pointer_set(ptr, prop, valueptr);
+ }
+ else if(RNA_struct_is_a(param->ptr.type, ptype)) {
RNA_property_pointer_set(ptr, prop, param->ptr);
- } else {
+ }
+ else {
PointerRNA tmp;
RNA_pointer_create(NULL, ptype, NULL, &tmp);
PyErr_Format(PyExc_TypeError, "expected a %s type", RNA_struct_identifier(tmp.type));
@@ -455,9 +533,36 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
break;
}
case PROP_COLLECTION:
- PyErr_SetString(PyExc_AttributeError, "cant convert collections yet");
- return -1;
+ {
+ int seq_len, i;
+ PyObject *item;
+ PointerRNA itemptr;
+
+ /* convert a sequence of dict's into a collection */
+ if(!PySequence_Check(value)) {
+ PyErr_SetString(PyExc_TypeError, "expected a sequence of dicts for an RNA collection");
+ return -1;
+ }
+
+ seq_len = PySequence_Length(value);
+ for(i=0; i<seq_len; i++) {
+ item= PySequence_GetItem(value, i);
+ if(item==NULL || PyDict_Check(item)==0) {
+ PyErr_SetString(PyExc_TypeError, "expected a sequence of dicts for an RNA collection");
+ Py_XDECREF(item);
+ return -1;
+ }
+
+ RNA_property_collection_add(ptr, prop, &itemptr);
+ if(pyrna_pydict_to_props(&itemptr, item, "Converting a python list to an RNA collection")==-1) {
+ Py_DECREF(item);
+ return -1;
+ }
+ Py_DECREF(item);
+ }
+
break;
+ }
default:
PyErr_SetString(PyExc_AttributeError, "unknown property type (pyrna_py_to_prop)");
return -1;
@@ -1078,7 +1183,7 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data)
case PROP_POINTER:
{
PointerRNA newptr;
- StructRNA *type= RNA_property_pointer_type(prop);
+ StructRNA *type= RNA_property_pointer_type(ptr, prop);
if(type == &RNA_AnyType) {
/* in this case we get the full ptr */
@@ -1372,7 +1477,14 @@ static void pyrna_subtype_set_rna(PyObject *newclass, StructRNA *srna)
{
PointerRNA ptr;
PyObject *item;
-
+
+ Py_INCREF(newclass);
+
+ if (RNA_struct_py_type_get(srna))
+ PyObSpit("RNA WAS SET - ", RNA_struct_py_type_get(srna));
+
+ Py_XDECREF(((PyObject *)RNA_struct_py_type_get(srna)));
+
RNA_struct_py_type_set(srna, (void *)newclass); /* Store for later use */
/* Not 100% needed but useful,
@@ -1928,6 +2040,10 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par
static void bpy_class_free(void *pyob_ptr)
{
+ if(G.f&G_DEBUG) {
+ if(((PyObject *)pyob_ptr)->ob_refcnt > 1)
+ PyObSpit("zombie class - ref should be 1", (PyObject *)pyob_ptr);
+ }
Py_DECREF((PyObject *)pyob_ptr);
}
@@ -1952,9 +2068,7 @@ PyObject *pyrna_basetype_register(PyObject *self, PyObject *args)
item= PyObject_GetAttrString(py_class, "__rna__");
if(!item || !BPy_StructRNA_Check(item)) {
- if(item) {
- Py_DECREF(item);
- }
+ Py_XDECREF(item);
PyErr_SetString(PyExc_AttributeError, "expected a Type subclassed from a registerable rna type (no __rna__ property).");
return NULL;
}
@@ -1977,10 +2091,7 @@ PyObject *pyrna_basetype_register(PyObject *self, PyObject *args)
}
/* get the context, so register callback can do necessary refreshes */
- item= PyDict_GetItemString(PyEval_GetGlobals(), "__bpy_context__"); /* borrow ref */
-
- if(item)
- C= (bContext*)PyCObject_AsVoidPtr(item);
+ C= BPy_GetContext();
/* call the register callback */
BKE_reports_init(&reports, RPT_PRINT);
@@ -1994,8 +2105,7 @@ PyObject *pyrna_basetype_register(PyObject *self, PyObject *args)
BKE_reports_clear(&reports);
- pyrna_subtype_set_rna(py_class, srna);
- Py_INCREF(py_class);
+ pyrna_subtype_set_rna(py_class, srna); /* takes a ref to py_class */
Py_RETURN_NONE;
}
@@ -2040,10 +2150,8 @@ PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *args)
}
/* get the context, so register callback can do necessary refreshes */
- item= PyDict_GetItemString(PyEval_GetGlobals(), "__bpy_context__"); /* borrow ref */
-
- if(item)
- C= (bContext*)PyCObject_AsVoidPtr(item);
+ C= BPy_GetContext();
+
/* call unregister */
unreg(C, py_srna->ptr.data);
diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h
index a97d450fb2f..a2a3015912b 100644
--- a/source/blender/python/intern/bpy_rna.h
+++ b/source/blender/python/intern/bpy_rna.h
@@ -69,6 +69,7 @@ PyObject *pyrna_prop_CreatePyObject( PointerRNA *ptr, PropertyRNA *prop );
/* operators also need this to set args */
int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *value);
+int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, const char *error_prefix);
PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop);
/* functions for setting up new props - experemental */
diff --git a/source/blender/python/intern/bpy_ui.c b/source/blender/python/intern/bpy_ui.c
index 0f2142f4b62..c15315ca350 100644
--- a/source/blender/python/intern/bpy_ui.c
+++ b/source/blender/python/intern/bpy_ui.c
@@ -78,7 +78,7 @@ static PyObject *Method_defButO( PyObject * self, PyObject * args )
/* Optional python doctionary used to set python properties, just like how keyword args are used */
if (py_keywords && PyDict_Size(py_keywords)) {
- if (PYOP_props_from_dict(uiButGetOperatorPtrRNA(but), py_keywords) == -1)
+ if (pyrna_pydict_to_props(uiButGetOperatorPtrRNA(but), py_keywords, "") == -1)
return NULL;
}
@@ -296,24 +296,16 @@ static PyObject *Method_registerKey( PyObject * self, PyObject * args )
/* Optional python doctionary used to set python properties, just like how keyword args are used */
if (py_keywords && PyDict_Size(py_keywords)) {
- if (PYOP_props_from_dict(km->ptr, py_keywords) == -1)
+ if (pyrna_pydict_to_props(km->ptr, py_keywords, "Registering keybinding") == -1)
return NULL;
}
Py_RETURN_NONE;
}
-/* internal use only */
-static bContext *get_py_context__internal(void)
-{
- PyObject *globals = PyEval_GetGlobals();
- PyObject *val= PyDict_GetItemString(globals, "__bpy_context__"); /* borrow ref */
- return PyCObject_AsVoidPtr(val);
-}
-
static PyObject *Method_getRegonPtr( PyObject * self )
{
- bContext *C= get_py_context__internal();
+ bContext *C= BPy_GetContext();
ARegion *ar = CTX_wm_region(C);
return PyCObject_FromVoidPtr(ar, NULL);
@@ -321,7 +313,7 @@ static PyObject *Method_getRegonPtr( PyObject * self )
static PyObject *Method_getAreaPtr( PyObject * self )
{
- bContext *C= get_py_context__internal();
+ bContext *C= BPy_GetContext();
ScrArea *area = CTX_wm_area(C);
return PyCObject_FromVoidPtr(area, NULL);
@@ -329,7 +321,7 @@ static PyObject *Method_getAreaPtr( PyObject * self )
static PyObject *Method_getScreenPtr( PyObject * self )
{
- bContext *C= get_py_context__internal();
+ bContext *C= BPy_GetContext();
bScreen *screen= CTX_wm_screen(C);
return PyCObject_FromVoidPtr(screen, NULL);
@@ -337,7 +329,7 @@ static PyObject *Method_getScreenPtr( PyObject * self )
static PyObject *Method_getSpacePtr( PyObject * self )
{
- bContext *C= get_py_context__internal();
+ bContext *C= BPy_GetContext();
SpaceLink *sl= CTX_wm_space_data(C);
return PyCObject_FromVoidPtr(sl, NULL);
@@ -345,7 +337,7 @@ static PyObject *Method_getSpacePtr( PyObject * self )
static PyObject *Method_getWindowPtr( PyObject * self )
{
- bContext *C= get_py_context__internal();
+ bContext *C= BPy_GetContext();
wmWindow *window= CTX_wm_window(C);
return PyCObject_FromVoidPtr(window, NULL);
@@ -395,7 +387,7 @@ PyObject *BPY_ui_module( void )
#if PY_VERSION_HEX >= 0x03000000
submodule= PyModule_Create(&ui_module);
#else /* Py2.x */
- submodule= Py_InitModule3( "bpyui", ui_methods, "" );
+ submodule= Py_InitModule3( "bpy.ui", ui_methods, "" );
#endif
/* uiBlock->flag (controls) */
@@ -406,7 +398,6 @@ PyObject *BPY_ui_module( void )
PyModule_AddObject( mod, "BLOCK_NUMSELECT", PyLong_FromSsize_t(UI_BLOCK_NUMSELECT) );
PyModule_AddObject( mod, "BLOCK_ENTER_OK", PyLong_FromSsize_t(UI_BLOCK_ENTER_OK) );
PyModule_AddObject( mod, "BLOCK_NOSHADOW", PyLong_FromSsize_t(UI_BLOCK_NOSHADOW) );
- PyModule_AddObject( mod, "BLOCK_NO_HILITE", PyLong_FromSsize_t(UI_BLOCK_NO_HILITE) );
PyModule_AddObject( mod, "BLOCK_MOVEMOUSE_QUIT", PyLong_FromSsize_t(UI_BLOCK_MOVEMOUSE_QUIT) );
PyModule_AddObject( mod, "BLOCK_KEEP_OPEN", PyLong_FromSsize_t(UI_BLOCK_KEEP_OPEN) );
PyModule_AddObject( mod, "BLOCK_POPUP", PyLong_FromSsize_t(UI_BLOCK_POPUP) );
@@ -567,8 +558,10 @@ PyObject *BPY_ui_module( void )
PyModule_AddObject( mod, "TIME", PyLong_FromSsize_t(SPACE_TIME) );
PyModule_AddObject( mod, "NODE", PyLong_FromSsize_t(SPACE_NODE) );
-
-
+ /* INCREF since its its assumed that all these functions return the
+ * module with a new ref like PyDict_New, since they are passed to
+ * PyModule_AddObject which steals a ref */
+ Py_INCREF(submodule);
return submodule;
}
diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c
index 66cf244e3bd..c447e7de982 100644
--- a/source/blender/python/intern/bpy_util.c
+++ b/source/blender/python/intern/bpy_util.c
@@ -29,6 +29,13 @@
#include "MEM_guardedalloc.h"
#include "BKE_report.h"
+
+#include "BKE_context.h"
+bContext* __py_context = NULL;
+bContext* BPy_GetContext(void) { return __py_context; };
+void BPy_SetContext(bContext *C) { __py_context= C; };
+
+
PyObject *BPY_flag_to_list(struct BPY_flag_def *flagdef, int flag)
{
PyObject *list = PyList_New(0);
@@ -159,6 +166,8 @@ void PyObSpit(char *name, PyObject *var) {
}
else {
PyObject_Print(var, stderr, 0);
+ fprintf(stderr, " ref:%d ", var->ob_refcnt);
+ fprintf(stderr, " ptr:%ld", (long)var);
}
fprintf(stderr, "\n");
}
diff --git a/source/blender/python/intern/bpy_util.h b/source/blender/python/intern/bpy_util.h
index db31f403714..49f48802249 100644
--- a/source/blender/python/intern/bpy_util.h
+++ b/source/blender/python/intern/bpy_util.h
@@ -74,4 +74,8 @@ char *BPy_enum_as_string(struct EnumPropertyItem *item);
/* error reporting */
int BPy_reports_to_error(struct ReportList *reports);
+/* TODO - find a better solution! */
+struct bContext *BPy_GetContext(void);
+void BPy_SetContext(struct bContext *C);
+
#endif
diff --git a/source/blender/render/CMakeLists.txt b/source/blender/render/CMakeLists.txt
index 5465600d22b..8ba7dc123e7 100644
--- a/source/blender/render/CMakeLists.txt
+++ b/source/blender/render/CMakeLists.txt
@@ -29,14 +29,9 @@ FILE(GLOB SRC intern/source/*.c)
SET(INC
intern/include ../../../intern/guardedalloc ../blenlib ../makesdna
extern/include ../blenkernel ../radiosity/extern/include ../imbuf
- ../quicktime ../include ../../kernel/gen_messaging ../yafray ../blenloader
+ ../quicktime ../include ../../kernel/gen_messaging ../blenloader
)
-IF(NOT WITH_YAFRAY)
- ADD_DEFINITIONS(-DDISABLE_YAFRAY)
-ENDIF(NOT WITH_YAFRAY)
-
-
IF(WITH_OPENEXR)
ADD_DEFINITIONS(-DWITH_OPENEXR)
ENDIF(WITH_OPENEXR)
diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript
index c3fdc632ce4..173f5db8482 100644
--- a/source/blender/render/SConscript
+++ b/source/blender/render/SConscript
@@ -10,11 +10,6 @@ incs += ' ../include ../blenloader'
defs = []
-if env['WITH_BF_YAFRAY']:
- incs += ' ../yafray'
-else:
- defs.append('DISABLE_YAFRAY')
-
if env['WITH_BF_QUICKTIME']:
defs.append('WITH_QUICKTIME')
incs += ' ../quicktime ' + env['BF_QUICKTIME_INC']
diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h
index 2cee2673a26..0ad48fe97a9 100644
--- a/source/blender/render/extern/include/RE_shader_ext.h
+++ b/source/blender/render/extern/include/RE_shader_ext.h
@@ -171,6 +171,7 @@ typedef struct ShadeInput
/* from initialize, part or renderlayer */
short do_preview; /* for nodes, in previewrender */
short thread, sample; /* sample: ShadeSample array index */
+ short nodes; /* indicate node shading, temp hack to prevent recursion */
unsigned int lay;
int layflag, passflag, combinedflag;
diff --git a/source/blender/render/intern/source/Makefile b/source/blender/render/intern/source/Makefile
index eb12c7637f7..22680b26338 100644
--- a/source/blender/render/intern/source/Makefile
+++ b/source/blender/render/intern/source/Makefile
@@ -45,7 +45,6 @@ CPPFLAGS += -I../../../imbuf
CPPFLAGS += -I../../../makesdna
CPPFLAGS += -I../../../blenkernel
CPPFLAGS += -I../../../quicktime
-CPPFLAGS += -I../../../yafray
CPPFLAGS += -I../../../../kernel/gen_messaging
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
# not very neat: the rest of blender..
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 6e417a3bd57..d2d0aadcfc5 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -114,18 +114,6 @@
#include "zbuf.h"
#include "sunsky.h"
-#ifndef DISABLE_YAFRAY /* disable yafray */
-
-#include "YafRay_Api.h"
-
-/* yafray: Identity transform 'hack' removed, exporter now transforms vertices back to world.
- * Same is true for lamp coords & vec.
- * Duplicated data objects & dupliframe/duplivert objects are only stored once,
- * only the matrix is stored for all others, in yafray these objects are instances of the original.
- * The main changes are in RE_Database_FromScene().
- */
-
-#endif /* disable yafray */
/* 10 times larger than normal epsilon, test it on default nurbs sphere with ray_transp (for quad detection) */
/* or for checking vertex normal flips */
@@ -1471,7 +1459,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
if(part==NULL || pars==NULL || !psys_check_enabled(ob, psys))
return 0;
- if(part->draw_as==PART_DRAW_OB || part->draw_as==PART_DRAW_GR || part->draw_as==PART_DRAW_NOT)
+ if(part->ren_as==PART_DRAW_OB || part->ren_as==PART_DRAW_GR || part->ren_as==PART_DRAW_NOT)
return 1;
/* 2. start initialising things */
@@ -1534,7 +1522,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
sd.mcol = MEM_callocN(sd.totcol * sizeof(MCol), "particle_mcols");
/* 2.2 setup billboards */
- if(part->draw_as == PART_DRAW_BB) {
+ if(part->ren_as == PART_DRAW_BB) {
int first_uv = CustomData_get_layer_index(&psmd->dm->faceData, CD_MTFACE);
bb.uv[0] = CustomData_get_named_layer_index(&psmd->dm->faceData, CD_MTFACE, psys->bb_uvname[0]);
@@ -1589,7 +1577,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
Mat3Transp(nmat);
/* 2.6 setup strand rendering */
- if(part->draw_as == PART_DRAW_PATH && psys->pathcache){
+ if(part->ren_as == PART_DRAW_PATH && psys->pathcache){
path_nbr=(int)pow(2.0,(double) part->ren_step);
if(path_nbr) {
@@ -1772,7 +1760,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
if(parent->num < psmd->dm->getNumTessFaces(psmd->dm))
num = parent->num;
- get_particle_uvco_mcol(part->from, psmd->dm, pa->fuv, num, &sd);
+ get_particle_uvco_mcol(part->from, psmd->dm, parent->fuv, num, &sd);
}
dosimplify = psys_render_simplify_params(psys, cpa, simplify);
@@ -1896,10 +1884,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
continue;
VECCOPY(loc,state.co);
- if(part->draw_as!=PART_DRAW_BB)
+ if(part->ren_as!=PART_DRAW_BB)
MTC_Mat4MulVecfl(re->viewmat,loc);
- switch(part->draw_as) {
+ switch(part->ren_as) {
case PART_DRAW_LINE:
sd.line = 1;
sd.time = 0.0f;
@@ -3468,22 +3456,6 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
}
else lar->ray_totsamp= 0;
-#ifndef DISABLE_YAFRAY
- /* yafray: photonlight and other params */
- if (re->r.renderer==R_YAFRAY) {
- lar->YF_numphotons = la->YF_numphotons;
- lar->YF_numsearch = la->YF_numsearch;
- lar->YF_phdepth = la->YF_phdepth;
- lar->YF_useqmc = la->YF_useqmc;
- lar->YF_causticblur = la->YF_causticblur;
- lar->YF_ltradius = la->YF_ltradius;
- lar->YF_bufsize = la->YF_bufsize;
- lar->YF_glowint = la->YF_glowint;
- lar->YF_glowofs = la->YF_glowofs;
- lar->YF_glowtype = la->YF_glowtype;
- }
-#endif /* disable yafray */
-
lar->spotsi= la->spotsize;
if(lar->mode & LA_HALO) {
if(lar->spotsi>170.0) lar->spotsi= 170.0;
@@ -4407,7 +4379,7 @@ static int allow_render_dupli_instance(Render *re, DupliObject *dob, Object *obd
}
for(psys=obd->particlesystem.first; psys; psys=psys->next)
- if(!ELEM5(psys->part->draw_as, PART_DRAW_BB, PART_DRAW_LINE, PART_DRAW_PATH, PART_DRAW_OB, PART_DRAW_GR))
+ if(!ELEM5(psys->part->ren_as, PART_DRAW_BB, PART_DRAW_LINE, PART_DRAW_PATH, PART_DRAW_OB, PART_DRAW_GR))
return 0;
/* don't allow lamp, animated duplis, or radio render */
@@ -4430,7 +4402,7 @@ static void dupli_render_particle_set(Render *re, Object *ob, int timeoffset, in
if(ob->transflag & OB_DUPLIPARTS) {
for(psys=ob->particlesystem.first; psys; psys=psys->next) {
- if(ELEM(psys->part->draw_as, PART_DRAW_OB, PART_DRAW_GR)) {
+ if(ELEM(psys->part->ren_as, PART_DRAW_OB, PART_DRAW_GR)) {
if(enable)
psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy, timeoffset);
else
diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c
index c75de189b10..1cbf2523156 100644
--- a/source/blender/render/intern/source/occlusion.c
+++ b/source/blender/render/intern/source/occlusion.c
@@ -1633,7 +1633,7 @@ void sample_occ(Render *re, ShadeInput *shi)
sample_occ_surface(shi);
}
/* try to get result from the cache if possible */
- else if(!sample_occ_cache(tree, shi->co, shi->vno, shi->xs, shi->ys, shi->thread, shi->ao)) {
+ else if(shi->depth!=0 || !sample_occ_cache(tree, shi->co, shi->vno, shi->xs, shi->ys, shi->thread, shi->ao)) {
/* no luck, let's sample the occlusion */
exclude.obi= shi->obi - re->objectinstance;
exclude.facenr= shi->vlr->index;
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index cc2cf290795..07560edb76b 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -63,12 +63,6 @@
#include "RE_pipeline.h"
#include "radio.h"
-#ifndef DISABLE_YAFRAY
-/* yafray: include for yafray export/render */
-#include "YafRay_Api.h"
-
-#endif /* disable yafray */
-
/* internal */
#include "render_types.h"
#include "renderpipeline.h"
@@ -1126,11 +1120,22 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, int winx, int winy
/* always call, checks for gamma, gamma tables and jitter too */
make_sample_tables(re);
- /* make empty render result, so display callbacks can initialize */
- RE_FreeRenderResult(re->result);
- re->result= MEM_callocN(sizeof(RenderResult), "new render result");
- re->result->rectx= re->rectx;
- re->result->recty= re->recty;
+ /* if preview render, we try to keep old result */
+ if(re->r.scemode & R_PREVIEWBUTS) {
+ if(re->result && re->result->rectx==re->rectx && re->result->recty==re->recty);
+ else {
+ RE_FreeRenderResult(re->result);
+ re->result= NULL;
+ }
+ }
+ else {
+
+ /* make empty render result, so display callbacks can initialize */
+ RE_FreeRenderResult(re->result);
+ re->result= MEM_callocN(sizeof(RenderResult), "new render result");
+ re->result->rectx= re->rectx;
+ re->result->recty= re->recty;
+ }
/* we clip faces with a minimum of 2 pixel boundary outside of image border. see zbuf.c */
re->clipcrop= 1.0f + 2.0f/(float)(re->winx>re->winy?re->winy:re->winx);
@@ -1288,8 +1293,11 @@ static void *do_part_thread(void *pa_v)
save_render_result_tile(rr, rrpart);
}
- else if(render_display_draw_enabled(&R))
- merge_render_result(R.result, pa->result);
+ else if(render_display_draw_enabled(&R)) {
+ /* on break, don't merge in result for preview renders, looks nicer */
+ if(R.test_break(R.tbh) && (R.r.scemode & R_PREVIEWBUTS));
+ else merge_render_result(R.result, pa->result);
+ }
}
pa->ready= 1;
@@ -1483,14 +1491,16 @@ static void threaded_tile_processor(Render *re)
int rendering=1, counter= 1, drawtimer=0, hasdrawn, minx=0;
/* first step; free the entire render result, make new, and/or prepare exr buffer saving */
- RE_FreeRenderResult(re->result);
+ if(re->result==NULL || !(re->r.scemode & R_PREVIEWBUTS)) {
+ RE_FreeRenderResult(re->result);
- if(re->sss_points)
- re->result= new_render_result(re, &re->disprect, 0, 0);
- else if(re->r.scemode & R_FULL_SAMPLE)
- re->result= new_full_sample_buffers_exr(re);
- else
- re->result= new_render_result(re, &re->disprect, 0, re->r.scemode & R_EXR_TILE_FILE);
+ if(re->sss_points)
+ re->result= new_render_result(re, &re->disprect, 0, 0);
+ else if(re->r.scemode & R_FULL_SAMPLE)
+ re->result= new_full_sample_buffers_exr(re);
+ else
+ re->result= new_render_result(re, &re->disprect, 0, re->r.scemode & R_EXR_TILE_FILE);
+ }
if(re->result==NULL)
return;
@@ -1657,6 +1667,42 @@ static void do_render_3d(Render *re)
RE_Database_Free(re);
}
+/* called by blur loop, accumulate RGBA key alpha */
+static void addblur_rect_key(RenderResult *rr, float *rectf, float *rectf1, float blurfac)
+{
+ float mfac= 1.0f - blurfac;
+ int a, b, stride= 4*rr->rectx;
+ int len= stride*sizeof(float);
+
+ for(a=0; a<rr->recty; a++) {
+ if(blurfac==1.0f) {
+ memcpy(rectf, rectf1, len);
+ }
+ else {
+ float *rf= rectf, *rf1= rectf1;
+
+ for( b= rr->rectx; b>0; b--, rf+=4, rf1+=4) {
+ if(rf1[3]<0.01f)
+ rf[3]= mfac*rf[3];
+ else if(rf[3]<0.01f) {
+ rf[0]= rf1[0];
+ rf[1]= rf1[1];
+ rf[2]= rf1[2];
+ rf[3]= blurfac*rf1[3];
+ }
+ else {
+ rf[0]= mfac*rf[0] + blurfac*rf1[0];
+ rf[1]= mfac*rf[1] + blurfac*rf1[1];
+ rf[2]= mfac*rf[2] + blurfac*rf1[2];
+ rf[3]= mfac*rf[3] + blurfac*rf1[3];
+ }
+ }
+ }
+ rectf+= stride;
+ rectf1+= stride;
+ }
+}
+
/* called by blur loop, accumulate renderlayers */
static void addblur_rect(RenderResult *rr, float *rectf, float *rectf1, float blurfac, int channels)
{
@@ -1680,8 +1726,9 @@ static void addblur_rect(RenderResult *rr, float *rectf, float *rectf1, float bl
}
}
+
/* called by blur loop, accumulate renderlayers */
-static void merge_renderresult_blur(RenderResult *rr, RenderResult *brr, float blurfac)
+static void merge_renderresult_blur(RenderResult *rr, RenderResult *brr, float blurfac, int key_alpha)
{
RenderLayer *rl, *rl1;
RenderPass *rpass, *rpass1;
@@ -1690,8 +1737,12 @@ static void merge_renderresult_blur(RenderResult *rr, RenderResult *brr, float b
for(rl= rr->layers.first; rl && rl1; rl= rl->next, rl1= rl1->next) {
/* combined */
- if(rl->rectf && rl1->rectf)
- addblur_rect(rr, rl->rectf, rl1->rectf, blurfac, 4);
+ if(rl->rectf && rl1->rectf) {
+ if(key_alpha)
+ addblur_rect_key(rr, rl->rectf, rl1->rectf, blurfac);
+ else
+ addblur_rect(rr, rl->rectf, rl1->rectf, blurfac, 4);
+ }
/* passes are allocated in sync */
rpass1= rl1->passes.first;
@@ -1721,7 +1772,7 @@ static void do_render_blur_3d(Render *re)
blurfac= 1.0f/(float)(re->r.osa-blur);
- merge_renderresult_blur(rres, re->result, blurfac);
+ merge_renderresult_blur(rres, re->result, blurfac, re->r.alphamode & R_ALPHAKEY);
if(re->test_break(re->tbh)) break;
}
@@ -2209,69 +2260,6 @@ static void do_render_composite_fields_blur_3d(Render *re)
re->display_draw(re->ddh, re->result, NULL);
}
-#ifndef DISABLE_YAFRAY
-/* yafray: main yafray render/export call */
-static void yafrayRender(Render *re)
-{
- RE_FreeRenderResult(re->result);
- re->result= new_render_result(re, &re->disprect, 0, RR_USEMEM);
-
- // need this too, for aspect/ortho/etc info
- RE_SetCamera(re, re->scene->camera);
-
- // switch must be done before prepareScene()
- if (!re->r.YFexportxml)
- YAF_switchFile();
- else
- YAF_switchPlugin();
-
- printf("Starting scene conversion.\n");
- RE_Database_FromScene(re, re->scene, 1);
- printf("Scene conversion done.\n");
-
- re->i.starttime = PIL_check_seconds_timer();
-
- YAF_exportScene(re);
-
- /* also needed for yafray border render, straight copy from do_render_fields_blur_3d() */
- /* when border render, check if we have to insert it in black */
- if(re->result) {
- if(re->r.mode & R_BORDER) {
- if((re->r.mode & R_CROP)==0) {
- RenderResult *rres;
-
- /* sub-rect for merge call later on */
- re->result->tilerect= re->disprect;
-
- /* this copying sequence could become function? */
- re->disprect.xmin= re->disprect.ymin= 0;
- re->disprect.xmax= re->winx;
- re->disprect.ymax= re->winy;
- re->rectx= re->winx;
- re->recty= re->winy;
-
- rres= new_render_result(re, &re->disprect, 0, RR_USEMEM);
-
- merge_render_result(rres, re->result);
- RE_FreeRenderResult(re->result);
- re->result= rres;
-
- re->display_init(re->dih, re->result);
- re->display_draw(re->ddh, re->result, NULL);
- }
- }
- }
-
- re->i.lastframetime = PIL_check_seconds_timer()- re->i.starttime;
- re->stats_draw(re->sdh, &re->i);
-
- RE_Database_Free(re);
-}
-
-
-
-#endif /* disable yafray */
-
static void renderresult_stampinfo(Scene *scene)
{
RenderResult rres;
@@ -2300,14 +2288,7 @@ static void do_render_all_options(Render *re)
}
else {
-#ifndef DISABLE_YAFRAY
- if(re->r.renderer==R_YAFRAY)
- yafrayRender(re);
- else
- do_render_composite_fields_blur_3d(re);
-#else
do_render_composite_fields_blur_3d(re);
-#endif
}
/* for UI only */
@@ -2492,7 +2473,7 @@ static int render_initialize_from_scene(Render *re, Scene *scene, int anim)
/* general Blender frame render call */
void RE_BlenderFrame(Render *re, Scene *scene, int frame)
{
- /* ugly global still... is to prevent renderwin events and signal subsurfs etc to make full resol */
+ /* ugly global still... is to prevent preview events and signal subsurfs etc to make full resol */
G.rendering= 1;
re->result_ok= 0;
diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c
index e89cf20e4b1..33b58cf9751 100644
--- a/source/blender/render/intern/source/rayshade.c
+++ b/source/blender/render/intern/source/rayshade.c
@@ -262,13 +262,15 @@ static void shade_ray(Isect *is, ShadeInput *shi, ShadeResult *shr)
shade_input_set_shade_texco(shi);
- if(is->mode==RE_RAY_SHADOW_TRA)
- if(shi->mat->nodetree && shi->mat->use_nodes) {
+ if(is->mode==RE_RAY_SHADOW_TRA) {
+ /* temp hack to prevent recursion */
+ if(shi->nodes==0 && shi->mat->nodetree && shi->mat->use_nodes) {
ntreeShaderExecTree(shi->mat->nodetree, shi, shr);
shi->mat= vlr->mat; /* shi->mat is being set in nodetree */
}
else
shade_color(shi, shr);
+ }
else {
if(shi->mat->nodetree && shi->mat->use_nodes) {
ntreeShaderExecTree(shi->mat->nodetree, shi, shr);
@@ -1273,7 +1275,7 @@ static void addAlphaLight(float *shadfac, float *col, float alpha, float filter)
shadfac[3]= (1.0f-alpha)*shadfac[3];
}
-static void ray_trace_shadow_tra(Isect *is, int depth, int traflag)
+static void ray_trace_shadow_tra(Isect *is, ShadeInput *origshi, int depth, int traflag)
{
/* ray to lamp, find first face that intersects, check alpha properties,
if it has col[3]>0.0f continue. so exit when alpha is full */
@@ -1290,16 +1292,15 @@ static void ray_trace_shadow_tra(Isect *is, int depth, int traflag)
/* end warning! - Campbell */
shi.depth= 1; /* only used to indicate tracing */
- shi.mask= 1;
-
- /*shi.osatex= 0;
- shi.thread= shi.sample= 0;
- shi.lay= 0;
- shi.passflag= 0;
- shi.combinedflag= 0;
- shi.do_preview= 0;
- shi.light_override= NULL;
- shi.mat_override= NULL;*/
+ shi.mask= origshi->mask;
+ shi.thread= origshi->thread;
+ shi.passflag= SCE_PASS_COMBINED;
+ shi.combinedflag= 0xFFFFFF; /* ray trace does all options */
+
+ shi.xs= origshi->xs;
+ shi.ys= origshi->ys;
+ shi.lay= origshi->lay;
+ shi.nodes= origshi->nodes;
shade_ray(is, &shi, &shr);
if (traflag & RAY_TRA)
@@ -1315,7 +1316,7 @@ static void ray_trace_shadow_tra(Isect *is, int depth, int traflag)
is->oborig= RAY_OBJECT_SET(&R, shi.obi);
is->faceorig= (RayFace*)shi.vlr;
- ray_trace_shadow_tra(is, depth-1, traflag | RAY_TRA);
+ ray_trace_shadow_tra(is, origshi, depth-1, traflag | RAY_TRA);
}
}
}
@@ -1943,7 +1944,7 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, float *lampco, float *
isec->col[0]= isec->col[1]= isec->col[2]= 1.0f;
isec->col[3]= 1.0f;
- ray_trace_shadow_tra(isec, DEPTH_SHADOW_TRA, 0);
+ ray_trace_shadow_tra(isec, shi, DEPTH_SHADOW_TRA, 0);
shadfac[0] += isec->col[0];
shadfac[1] += isec->col[1];
shadfac[2] += isec->col[2];
@@ -2041,7 +2042,7 @@ static void ray_shadow_jitter(ShadeInput *shi, LampRen *lar, float *lampco, floa
isec->col[0]= isec->col[1]= isec->col[2]= 1.0f;
isec->col[3]= 1.0f;
- ray_trace_shadow_tra(isec, DEPTH_SHADOW_TRA, 0);
+ ray_trace_shadow_tra(isec, shi, DEPTH_SHADOW_TRA, 0);
shadfac[0] += isec->col[0];
shadfac[1] += isec->col[1];
shadfac[2] += isec->col[2];
@@ -2122,7 +2123,7 @@ void ray_shadow(ShadeInput *shi, LampRen *lar, float *shadfac)
isec.col[0]= isec.col[1]= isec.col[2]= 1.0f;
isec.col[3]= 1.0f;
- ray_trace_shadow_tra(&isec, DEPTH_SHADOW_TRA, 0);
+ ray_trace_shadow_tra(&isec, shi, DEPTH_SHADOW_TRA, 0);
QUATCOPY(shadfac, isec.col);
}
else if(RE_ray_tree_intersect(R.raytree, &isec)) shadfac[3]= 0.0f;
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c
index 27dd43a4ef9..165cb88de71 100644
--- a/source/blender/render/intern/source/rendercore.c
+++ b/source/blender/render/intern/source/rendercore.c
@@ -2542,8 +2542,12 @@ static void shade_tface(BakeShade *bs)
/* get pixel level vertex coordinates */
for(a=0; a<4; a++) {
- vec[a][0]= tface->uv[a][0]*(float)bs->rectx - 0.5f;
- vec[a][1]= tface->uv[a][1]*(float)bs->recty - 0.5f;
+ /* Note, workaround for pixel aligned UVs which are common and can screw up our intersection tests
+ * where a pixel gets inbetween 2 faces or the middle of a quad,
+ * camera aligned quads also have this problem but they are less common.
+ * Add a small offset to the UVs, fixes bug #18685 - Campbell */
+ vec[a][0]= tface->uv[a][0]*(float)bs->rectx - (0.5f + 0.001);
+ vec[a][1]= tface->uv[a][1]*(float)bs->recty - (0.5f + 0.002);
}
/* UV indices have to be corrected for possible quad->tria splits */
diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c
index aafd81a5b56..f67826a9806 100644
--- a/source/blender/render/intern/source/shadeoutput.c
+++ b/source/blender/render/intern/source/shadeoutput.c
@@ -986,6 +986,7 @@ static void do_specular_ramp(ShadeInput *shi, float is, float t, float *spec)
}
/* pure AO, check for raytrace and world should have been done */
+/* preprocess, textures were not done, don't use shi->amb for that reason */
void ambient_occlusion(ShadeInput *shi)
{
if((R.wrld.ao_gather_method == WO_AOGATHER_APPROX) && shi->mat->amb!=0.0f)
@@ -1001,8 +1002,8 @@ void ambient_occlusion(ShadeInput *shi)
void ambient_occlusion_to_diffuse(ShadeInput *shi, float *diff)
{
if((R.r.mode & R_RAYTRACE) || R.wrld.ao_gather_method == WO_AOGATHER_APPROX) {
- if(shi->mat->amb!=0.0f) {
- float f= R.wrld.aoenergy*shi->mat->amb;
+ if(shi->amb!=0.0f) {
+ float f= R.wrld.aoenergy*shi->amb;
if (R.wrld.aomix==WO_AOADDSUB) {
diff[0] = 2.0f*shi->ao[0]-1.0f;
diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c
index afe732d885b..16f876fdd38 100644
--- a/source/blender/render/intern/source/texture.c
+++ b/source/blender/render/intern/source/texture.c
@@ -2029,6 +2029,10 @@ void do_material_tex(ShadeInput *shi)
shi->amb= texture_value_blend(mtex->def_var, shi->amb, texres.tin, varfac, mtex->blendtype, flip);
if(shi->amb<0.0) shi->amb= 0.0;
else if(shi->amb>1.0) shi->amb= 1.0;
+
+ shi->ambr= shi->amb*R.wrld.ambr;
+ shi->ambg= shi->amb*R.wrld.ambg;
+ shi->ambb= shi->amb*R.wrld.ambb;
}
}
}
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 1b5b2e0acbc..7acb2921bec 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -207,7 +207,7 @@ void WM_jobs_callbacks(struct wmJob *,
void (*initjob)(void *),
void (*update)(void *));
-void WM_jobs_start(struct wmJob *);
+void WM_jobs_start(struct wmWindowManager *wm, struct wmJob *);
void WM_jobs_stop(struct wmWindowManager *wm, void *owner);
void WM_jobs_stop_all(struct wmWindowManager *wm);
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index d3cb60d90fe..739cfbcc1ac 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -44,6 +44,7 @@ struct wmWindowManager;
#define OPTYPE_UNDO 2
/* context to call operator in for WM_operator_name_call */
+/* rna_ui.c contains EnumPropertyItem's of these, keep in sync */
enum {
/* if there's invoke, call it, otherwise exec */
WM_OP_INVOKE_DEFAULT,
@@ -157,6 +158,7 @@ typedef struct wmNotifier {
#define NC_IMAGE (10<<24)
#define NC_BRUSH (11<<24)
#define NC_TEXT (12<<24)
+#define NC_WORLD (13<<24)
/* data type, 256 entries is enough, it can overlap */
#define NOTE_DATA 0x00FF0000
@@ -169,7 +171,7 @@ typedef struct wmNotifier {
/* NC_SCREEN screen */
#define ND_SCREENBROWSE (1<<16)
#define ND_SCREENCAST (2<<16)
-
+#define ND_ANIMPLAY (3<<16)
/* NC_SCENE Scene */
#define ND_SCENEBROWSE (1<<16)
@@ -196,6 +198,8 @@ typedef struct wmNotifier {
#define ND_MODIFIER (23<<16)
#define ND_KEYS (24<<16)
#define ND_GEOM_DATA (25<<16)
+#define ND_CONSTRAINT (26<<16)
+#define ND_PARTICLE (27<<16)
/* NC_MATERIAL Material */
#define ND_SHADING (30<<16)
@@ -276,7 +280,8 @@ typedef struct wmTabletData {
typedef struct wmTimer {
struct wmTimer *next, *prev;
double timestep; /* set by timer user */
- int event_type; /* set by timer user */
+ int event_type; /* set by timer user, goes to event system */
+ void *customdata; /* set by timer user, to allow custom values */
double duration; /* total running time in seconds */
double delta; /* time since previous step in seconds */
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index 200d2652af3..37fdc9fa2c5 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -30,6 +30,8 @@
#include "MEM_guardedalloc.h"
+#include "GHOST_C-api.h"
+
#include "BLI_blenlib.h"
#include "BKE_blender.h"
@@ -121,6 +123,28 @@ void wm_check(bContext *C)
}
}
+void wm_clear_default_size(bContext *C)
+{
+ wmWindowManager *wm= CTX_wm_manager(C);
+ wmWindow *win;
+
+ /* wm context */
+ if(wm==NULL) {
+ wm= CTX_data_main(C)->wm.first;
+ CTX_wm_manager_set(C, wm);
+ }
+ if(wm==NULL) return;
+ if(wm->windows.first==NULL) return;
+
+ for(win= wm->windows.first; win; win= win->next) {
+ win->sizex = 0;
+ win->sizey = 0;
+ win->posx = 0;
+ win->posy = 0;
+ }
+
+}
+
/* on startup, it adds all data, for matching */
void wm_add_default(bContext *C)
{
diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c
index 2c7493a51ab..627aebbe875 100644
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@ -55,7 +55,12 @@ static GHOST_TStandardCursor convert_cursor(int curs)
case CURSOR_FACESEL: return GHOST_kStandardCursorRightArrow;
case CURSOR_WAIT: return GHOST_kStandardCursorWait;
case CURSOR_EDIT: return GHOST_kStandardCursorCrosshair;
- case CURSOR_HELP: return GHOST_kStandardCursorHelp;
+ case CURSOR_HELP:
+#ifdef __APPLE__
+ return GHOST_kStandardCursorLeftRight;
+#else
+ return GHOST_kStandardCursorHelp;
+#endif
case CURSOR_X_MOVE: return GHOST_kStandardCursorLeftRight;
case CURSOR_Y_MOVE: return GHOST_kStandardCursorUpDown;
case CURSOR_PENCIL: return GHOST_kStandardCursorPencil;
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index e142a5f9640..f5c8e535002 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -773,12 +773,9 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
case EVT_FILESELECT_OPEN:
case EVT_FILESELECT_FULL_OPEN:
{
- int filetype= FILE_BLENDER;
+ short flag =0; short display =FILE_SHORTDISPLAY; short filter =0; short sort =FILE_SORTALPHA;
char *path= RNA_string_get_alloc(handler->op->ptr, "filename", NULL, 0);
- if(RNA_struct_find_property(handler->op->ptr, "filetype"))
- filetype= RNA_int_get(handler->op->ptr, "filetype");
-
if(event->val==EVT_FILESELECT_OPEN)
ED_area_newspace(C, handler->op_area, SPACE_FILE);
else
@@ -788,7 +785,16 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
sfile= (SpaceFile*)CTX_wm_space_data(C);
sfile->op= handler->op;
- ED_fileselect_set_params(sfile, filetype, handler->op->type->name, path, 0, FILE_SHORTDISPLAY, 0);
+ /* XXX for now take the settings from the existing (previous) filebrowser
+ should be stored in settings and passed via the operator */
+ if (sfile->params) {
+ flag = sfile->params->flag;
+ filter = sfile->params->filter;
+ display = sfile->params->display;
+ sort = sfile->params->sort;
+ }
+
+ ED_fileselect_set_params(sfile, handler->op->type->name, path, flag, display, filter, sort);
MEM_freeN(path);
action= WM_HANDLER_BREAK;
@@ -820,7 +826,12 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
uiPupMenuSaveOver(C, handler->op, path);
}
else {
- handler->op->type->exec(C, handler->op);
+ int retval= handler->op->type->exec(C, handler->op);
+
+ if (retval & OPERATOR_FINISHED)
+ if(G.f & G_DEBUG)
+ wm_operator_print(handler->op);
+
WM_operator_free(handler->op);
}
@@ -1077,6 +1088,17 @@ void wm_event_do_handlers(bContext *C)
wm_event_free(event);
}
+
+ /* only add mousemove when queue was read entirely */
+ if(win->addmousemove) {
+ wmEvent event= *(win->eventstate);
+ event.type= MOUSEMOVE;
+ event.prevx= event.x;
+ event.prevy= event.y;
+ wm_event_add(win, &event);
+ win->addmousemove= 0;
+ }
+
CTX_wm_window_set(C, NULL);
}
}
@@ -1227,11 +1249,8 @@ void WM_event_remove_ui_handler(ListBase *handlers, wmUIHandlerFunc func, wmUIHa
void WM_event_add_mousemove(bContext *C)
{
wmWindow *window= CTX_wm_window(C);
- wmEvent event= *(window->eventstate);
- event.type= MOUSEMOVE;
- event.prevx= event.x;
- event.prevy= event.y;
- wm_event_add(window, &event);
+
+ window->addmousemove= 1;
}
/* for modal callbacks, check configuration for how to interpret exit with tweaks */
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 6bd5b9e0c6c..d13d8ec6ccc 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -309,6 +309,7 @@ int WM_read_homefile(bContext *C, wmOperator *op)
success = BKE_read_file(C, tstr, NULL, NULL);
} else {
success = BKE_read_file_from_memory(C, datatoc_B_blend, datatoc_B_blend_size, NULL, NULL);
+ if (wmbase.first == NULL) wm_clear_default_size(C);
}
/* match the read WM with current WM */
diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c
index 31c3a803246..6dd150a3416 100644
--- a/source/blender/windowmanager/intern/wm_jobs.c
+++ b/source/blender/windowmanager/intern/wm_jobs.c
@@ -107,7 +107,7 @@ struct wmJob {
/* internal */
void *owner;
- short running, ready, do_update, stop;
+ short suspended, running, ready, do_update, stop;
/* once running, we store this separately */
void *run_customdata;
@@ -121,6 +121,8 @@ struct wmJob {
/* ******************* public API ***************** */
/* returns current or adds new job, but doesnt run it */
+/* every owner only gets a single job, adding a new one will stop running stop and
+ when stopped it starts the new one */
wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner)
{
wmJob *steve;
@@ -195,7 +197,26 @@ static void *do_job_thread(void *job_v)
return NULL;
}
-void WM_jobs_start(wmJob *steve)
+/* dont allow same startjob to be executed twice */
+static void wm_jobs_test_suspend(wmWindowManager *wm, wmJob *test)
+{
+ wmJob *steve;
+
+ for(steve= wm->jobs.first; steve; steve= steve->next)
+ if(steve!=test)
+ if(steve->running)
+ if(steve->startjob==test->startjob)
+ break;
+
+ if(steve)
+ test->suspended= 1;
+ else
+ test->suspended= 0;
+}
+
+/* if job running, the same owner gave it a new job */
+/* if different owner starts existing startjob, it suspends itself */
+void WM_jobs_start(wmWindowManager *wm, wmJob *steve)
{
if(steve->running) {
/* signal job to end and restart */
@@ -204,20 +225,24 @@ void WM_jobs_start(wmJob *steve)
else {
if(steve->customdata && steve->startjob) {
- /* copy to ensure proper free in end */
- steve->run_customdata= steve->customdata;
- steve->run_free= steve->free;
- steve->free= NULL;
- steve->customdata= NULL;
- steve->running= 1;
+ wm_jobs_test_suspend(wm, steve);
- if(steve->initjob)
- steve->initjob(steve->run_customdata);
-
- BLI_init_threads(&steve->threads, do_job_thread, 1);
- BLI_insert_thread(&steve->threads, steve);
+ if(steve->suspended==0) {
+ /* copy to ensure proper free in end */
+ steve->run_customdata= steve->customdata;
+ steve->run_free= steve->free;
+ steve->free= NULL;
+ steve->customdata= NULL;
+ steve->running= 1;
+
+ if(steve->initjob)
+ steve->initjob(steve->run_customdata);
+
+ BLI_init_threads(&steve->threads, do_job_thread, 1);
+ BLI_insert_thread(&steve->threads, steve);
- // printf("job started\n");
+ // printf("job started\n");
+ }
/* restarted job has timer already */
if(steve->wt==NULL)
@@ -269,6 +294,7 @@ static int wm_jobs_timer(bContext *C, wmOperator *op, wmEvent *evt)
for(; steve; steve= steve->next) {
if(evt->customdata==steve->wt) {
+
/* running threads */
if(steve->threads.first) {
@@ -298,7 +324,7 @@ static int wm_jobs_timer(bContext *C, wmOperator *op, wmEvent *evt)
/* new job added for steve? */
if(steve->customdata) {
- WM_jobs_start(steve);
+ WM_jobs_start(wm, steve);
}
else {
WM_event_remove_window_timer(steve->win, steve->wt);
@@ -310,6 +336,10 @@ static int wm_jobs_timer(bContext *C, wmOperator *op, wmEvent *evt)
}
}
}
+ else if(steve->suspended) {
+ WM_jobs_start(wm, steve);
+ }
+
return OPERATOR_FINISHED;
}
}
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 9c0fc4d8e9e..3b6d605df61 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -232,7 +232,7 @@ int WM_operator_confirm(bContext *C, wmOperator *op, wmEvent *event)
uiPopupMenu *pup;
uiLayout *layout;
- pup= uiPupMenuBegin(C, "OK?", ICON_HELP);
+ pup= uiPupMenuBegin(C, "OK?", ICON_QUESTION);
layout= uiPupMenuLayout(pup);
uiItemO(layout, NULL, 0, op->type->idname);
uiPupMenuEnd(C, pup);
@@ -319,6 +319,151 @@ int WM_operator_redo_popup(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
+/* ***************** Debug menu ************************* */
+
+static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op)
+{
+ wmOperator *op= arg_op;
+ uiBlock *block;
+ uiLayout *layout;
+ uiStyle *style= U.uistyles.first;
+
+ block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
+ uiBlockClearFlag(block, UI_BLOCK_LOOP);
+ uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1);
+
+ layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style);
+ uiDefAutoButsRNA(C, layout, op->ptr);
+
+ uiPopupBoundsBlock(block, 4.0f, 0, 0);
+ uiEndBlock(C, block);
+
+ return block;
+}
+
+static int wm_debug_menu_exec(bContext *C, wmOperator *op)
+{
+ G.rt= RNA_int_get(op->ptr, "debugval");
+ ED_screen_refresh(CTX_wm_manager(C), CTX_wm_window(C));
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+static int wm_debug_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+
+ RNA_int_set(op->ptr, "debugval", G.rt);
+
+ /* pass on operator, so return modal */
+ uiPupBlockOperator(C, wm_block_create_menu, op, WM_OP_EXEC_DEFAULT);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+static void WM_OT_debug_menu(wmOperatorType *ot)
+{
+ ot->name= "Debug Menu";
+ ot->idname= "WM_OT_debug_menu";
+
+ ot->invoke= wm_debug_menu_invoke;
+ ot->exec= wm_debug_menu_exec;
+ ot->poll= WM_operator_winactive;
+
+ RNA_def_int(ot->srna, "debugval", 0, -10000, 10000, "Debug Value", "", INT_MIN, INT_MAX);
+}
+
+/* ***************** Search menu ************************* */
+static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
+{
+ wmOperatorType *ot= arg2;
+
+ if(ot)
+ WM_operator_name_call(C, ot->idname, WM_OP_INVOKE_DEFAULT, NULL);
+}
+
+static void operator_search_cb(const struct bContext *C, void *arg, char *str, uiSearchItems *items)
+{
+ wmOperatorType *ot = WM_operatortype_first();
+
+ for(; ot; ot= ot->next) {
+
+ if(BLI_strcasestr(ot->name, str)) {
+ if(ot->poll==NULL || ot->poll((bContext *)C)) {
+ char name[256];
+ int len= strlen(ot->name);
+
+ /* display name for menu, can hold hotkey */
+ BLI_strncpy(name, ot->name, 256);
+
+ /* check for hotkey */
+ if(len < 256-6) {
+ if(WM_key_event_operator_string(C, ot->idname, WM_OP_EXEC_DEFAULT, NULL, &name[len+1], 256-len-1))
+ name[len]= '|';
+ }
+
+ if(0==uiSearchItemAdd(items, name, ot))
+ break;
+ }
+ }
+ }
+}
+
+static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *arg_op)
+{
+ static char search[256]= "";
+ wmEvent event;
+ wmWindow *win= CTX_wm_window(C);
+ uiBlock *block;
+ uiBut *but;
+
+ block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
+ uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1);
+
+ but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 10, 180, 19, "");
+ uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb);
+
+ /* fake button, it holds space for search items */
+ uiDefBut(block, LABEL, 0, "", 10, 10 - uiSearchBoxhHeight(), 180, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL);
+
+ uiPopupBoundsBlock(block, 6.0f, 0, -20); /* move it downwards, mouse over button */
+ 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;
+}
+
+static int wm_search_menu_exec(bContext *C, wmOperator *op)
+{
+
+ return OPERATOR_FINISHED;
+}
+
+static int wm_search_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+
+ uiPupBlock(C, wm_block_search_menu, op);
+
+ return OPERATOR_CANCELLED;
+}
+
+static void WM_OT_search_menu(wmOperatorType *ot)
+{
+ ot->name= "Search Menu";
+ ot->idname= "WM_OT_search_menu";
+
+ ot->invoke= wm_search_menu_invoke;
+ ot->exec= wm_search_menu_exec;
+ ot->poll= WM_operator_winactive;
+}
+
+
/* ************ window / screen operator definitions ************** */
static void WM_OT_window_duplicate(wmOperatorType *ot)
@@ -1381,6 +1526,8 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_save_as_mainfile);
WM_operatortype_append(WM_OT_save_mainfile);
WM_operatortype_append(WM_OT_ten_timer);
+ WM_operatortype_append(WM_OT_debug_menu);
+ WM_operatortype_append(WM_OT_search_menu);
}
/* default keymap for windows and screens, only call once per WM */
@@ -1402,6 +1549,10 @@ void wm_window_keymap(wmWindowManager *wm)
WM_keymap_verify_item(keymap, "WM_OT_window_fullscreen_toggle", F11KEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0);
+ /* debug/testing */
WM_keymap_verify_item(keymap, "WM_OT_ten_timer", TKEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
+ WM_keymap_verify_item(keymap, "WM_OT_debug_menu", DKEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
+ WM_keymap_verify_item(keymap, "WM_OT_search_menu", FKEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
+
}
diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c
index 67ba31b84c0..9bd55e1c5a7 100644
--- a/source/blender/windowmanager/intern/wm_subwindow.c
+++ b/source/blender/windowmanager/intern/wm_subwindow.c
@@ -307,10 +307,16 @@ void wmMultMatrix(float mat[][4])
glGetFloatv(GL_MODELVIEW_MATRIX, (float *)_curswin->winmat);
}
+static int debugpush= 0;
+
void wmPushMatrix(void)
{
if(_curswin==NULL) return;
+ if(debugpush)
+ printf("wmPushMatrix error already pushed\n");
+ debugpush= 1;
+
Mat4CpyMat4(_curswin->viewmat1, _curswin->viewmat);
Mat4CpyMat4(_curswin->winmat1, _curswin->winmat);
}
@@ -319,6 +325,10 @@ void wmPopMatrix(void)
{
if(_curswin==NULL) return;
+ if(debugpush==0)
+ printf("wmPopMatrix error nothing popped\n");
+ debugpush= 0;
+
Mat4CpyMat4(_curswin->viewmat, _curswin->viewmat1);
Mat4CpyMat4(_curswin->winmat, _curswin->winmat1);
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 2675fba729a..cb6bcb41366 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -93,6 +93,8 @@ static void wm_ghostwindow_destroy(wmWindow *win)
ED_screen_exit should have been called */
void wm_window_free(bContext *C, wmWindow *win)
{
+ wmTimer *wt;
+
/* update context */
if(C) {
wmWindowManager *wm= CTX_wm_manager(C);
@@ -108,6 +110,10 @@ void wm_window_free(bContext *C, wmWindow *win)
}
if(win->eventstate) MEM_freeN(win->eventstate);
+
+ for(wt= win->timers.first; wt; wt= wt->next)
+ if(wt->customdata)
+ MEM_freeN(wt->customdata);
BLI_freelistN(&win->timers);
wm_event_free_all(win);
@@ -657,6 +663,8 @@ void WM_event_remove_window_timer(wmWindow *win, wmTimer *timer)
break;
if(wt) {
BLI_remlink(&win->timers, wt);
+ if(wt->customdata)
+ MEM_freeN(wt->customdata);
MEM_freeN(wt);
}
}
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h
index fd5cbe3ff4f..e91cbe6b204 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -44,6 +44,7 @@ extern void wm_close_and_free_all(bContext *C, ListBase *);
extern void wm_add_default(bContext *C);
extern void wm_check(bContext *C);
+extern void wm_clear_default_size(bContext *C);
/* register to windowmanager for redo or macro */
void wm_operator_register(wmWindowManager *wm, wmOperator *op);
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index 4ccfc7e8a81..39c267b132c 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -195,7 +195,9 @@
/* **************** BLENDER GESTURE EVENTS ********************* */
-#define EVT_ACTIONZONE 0x5001
+#define EVT_ACTIONZONE_AREA 0x5000
+#define EVT_ACTIONZONE_REGION 0x5001
+
/* tweak events, for L M R mousebuttons */
#define EVT_TWEAK_L 0x5002
#define EVT_TWEAK_M 0x5003
@@ -236,6 +238,7 @@
#define EVT_FILESELECT_EXEC 3
#define EVT_FILESELECT_CANCEL 4
+#define EVT_BUT_OPEN 0x5021
#endif /* WM_EVENT_TYPES_H */
diff --git a/source/blender/yafray/CMakeLists.txt b/source/blender/yafray/CMakeLists.txt
deleted file mode 100644
index 897b7754166..00000000000
--- a/source/blender/yafray/CMakeLists.txt
+++ /dev/null
@@ -1,35 +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# The Original Code is Copyright (C) 2006, Blender Foundation
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): Jacques Beaurain.
-#
-# ***** END GPL LICENSE BLOCK *****
-
-FILE(GLOB SRC intern/*.cpp)
-
-SET(INC
- ../../../intern/guardedalloc ../blenlib ../makesdna ../blenkernel
- ../imbuf ../include ../render/extern/include ../render/intern/include
-)
-
-BLENDERLIB(bf_yafray "${SRC}" "${INC}")
-#env.BlenderLib ( 'bf_yafray', sources, Split(incs), [], libtype=['blender','player'], priority=[5, 190] )
diff --git a/source/blender/yafray/Makefile b/source/blender/yafray/Makefile
deleted file mode 100644
index 690ba441bf0..00000000000
--- a/source/blender/yafray/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-# ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): none yet.
-#
-# ***** END GPL LICENSE BLOCK *****
-#
-# Bounces make to subdirectories.
-
-SOURCEDIR = source/blender/yafray
-DIRS = intern
-
-include nan_subdirs.mk
diff --git a/source/blender/yafray/SConscript b/source/blender/yafray/SConscript
deleted file mode 100644
index 13af7732c94..00000000000
--- a/source/blender/yafray/SConscript
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/python
-Import ('env')
-
-sources = env.Glob('intern/*.cpp')
-
-incs = '#/intern/guardedalloc ../blenlib ../makesdna ../blenkernel'
-incs += ' ../imbuf ../editors/include ../render/extern/include ../render/intern/include'
-
-env.BlenderLib ( 'bf_yafray', sources, Split(incs), [], libtype=['core'], priority=[205] )
diff --git a/source/blender/yafray/YafRay_Api.h b/source/blender/yafray/YafRay_Api.h
deleted file mode 100644
index a05e9752a1a..00000000000
--- a/source/blender/yafray/YafRay_Api.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __YAFRAY_API_H
-#define __YAFRAY_API_H
-
-/* C interface for Blender */
-#ifdef __cplusplus
-extern "C" {
-#endif
- void YAF_switchPlugin();
- void YAF_switchFile();
- int YAF_exportScene(Render* re);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/source/blender/yafray/intern/Makefile b/source/blender/yafray/intern/Makefile
deleted file mode 100644
index cf4779c2f96..00000000000
--- a/source/blender/yafray/intern/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): none yet.
-#
-# ***** END GPL LICENSE BLOCK *****
-#
-#
-
-LIBNAME = yafrayexport
-DIR = $(OCGDIR)/blender/yafray
-
-include nan_compile.mk
-
-CFLAGS += $(LEVEL_1_C_WARNINGS)
-
-CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
-CPPFLAGS += -I../../makesdna
-CPPFLAGS += -I../../blenkernel
-CPPFLAGS += -I../../blenlib
-CPPFLAGS += -I../../render/extern/include
-CPPFLAGS += -I../../render/intern/include
-CPPFLAGS += -I../../imbuf
-CPPFLAGS += -I../../include
-CPPFLAGS += -I..
diff --git a/source/blender/yafray/intern/api.cpp b/source/blender/yafray/intern/api.cpp
deleted file mode 100644
index 0cb1c6fafdf..00000000000
--- a/source/blender/yafray/intern/api.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "export_File.h"
-#include "export_Plugin.h"
-
-static yafrayFileRender_t byfile;
-static yafrayPluginRender_t byplugin;
-
-yafrayRender_t *YAFBLEND = &byplugin;
-
-extern "C"
-{
- void YAF_switchPlugin() { YAFBLEND = &byplugin; }
- void YAF_switchFile() { YAFBLEND = &byfile; }
- int YAF_exportScene(Render* re) { return (int)YAFBLEND->exportScene(re); }
-}
diff --git a/source/blender/yafray/intern/export_File.cpp b/source/blender/yafray/intern/export_File.cpp
deleted file mode 100644
index 831c1e93307..00000000000
--- a/source/blender/yafray/intern/export_File.cpp
+++ /dev/null
@@ -1,2060 +0,0 @@
-#include "export_File.h"
-
-#include <math.h>
-
-#include <cstring>
-
-using namespace std;
-
-static string command_path = "";
-
-#ifdef WIN32
-#define WIN32_SKIP_HKEY_PROTECTION
-#include "BLI_winstuff.h"
-
-#ifndef FILE_MAXDIR
-#define FILE_MAXDIR 160
-#endif
-
-#ifndef FILE_MAXFILE
-#define FILE_MAXFILE 80
-#endif
-
-
-static string find_path()
-{
- HKEY hkey;
- DWORD dwType, dwSize;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\YafRay Team\\YafRay",0,KEY_READ,&hkey)==ERROR_SUCCESS)
- {
- dwType = REG_EXPAND_SZ;
- dwSize = MAX_PATH;
- DWORD dwStat;
-
- char *pInstallDir=new char[MAX_PATH];
-
- dwStat=RegQueryValueEx(hkey, TEXT("InstallDir"),
- NULL, NULL,(LPBYTE)pInstallDir, &dwSize);
-
- if (dwStat == NO_ERROR)
- {
- string res=pInstallDir;
- delete [] pInstallDir;
- return res;
- }
- else
- cout << "Couldn't READ \'InstallDir\' value. Is yafray correctly installed?\n";
- delete [] pInstallDir;
-
- RegCloseKey(hkey);
- }
- else
- cout << "Couldn't FIND registry key for yafray, is it installed?\n";
-
- return string("");
-
-}
-
-static int createDir(char* name)
-{
- if (BLI_exists(name))
- return 2; //exists
- if (CreateDirectory((LPCTSTR)(name), NULL)) {
- cout << "Directory: " << name << " created\n";
- return 1; // created
- }
- else {
- cout << "Could not create directory: " << name << endl;
- return 0; // fail
- }
-}
-
-extern "C" { extern char bprogname[]; }
-
-// add drive character if not in path string, using blender executable location as reference
-// later added note: doesn't make much sense actually,
-// the intended file might not be located on the same drive as where blender is located...
-static void addDrive(string &path)
-{
- int sp = path.find_first_of(":");
- if (sp==-1) {
- string blpath = bprogname;
- sp = blpath.find_first_of(":");
- if (sp!=-1) path = blpath.substr(0, sp+1) + path;
- }
-}
-
-#else
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static string unixYafrayPath()
-{
- static const char *alternative[]=
- {
- "/usr/local/bin/",
- "/usr/bin/",
- "/bin/",
- NULL
- };
-
- for(int i=0;alternative[i]!=NULL;++i)
- {
- string fp=string(alternative[i])+"yafray";
- struct stat st;
- if(stat(fp.c_str(),&st)<0) continue;
- if(st.st_mode&S_IXOTH) return alternative[i];
- }
- return "";
-}
-
-#endif
-
-#ifdef WIN32
-#define MAXPATHLEN MAX_PATH
-#else
-#include <sys/param.h>
-#endif
-static void adjustPath(string &path)
-{
- // if relative, expand to full path
- char cpath[MAXPATHLEN];
- strcpy(cpath, path.c_str());
- BLI_convertstringcode(cpath, G.sce);
- path = cpath;
-#ifdef WIN32
- // add drive char if not there
- addDrive(path);
-#endif
-}
-
-bool yafrayFileRender_t::initExport()
-{
- xmlpath = "";
- bool dir_failed = false;
- // try the user setting setting first, export dir must be set and exist
- if (strlen(U.yfexportdir)==0)
- {
- cout << "No export directory set in user defaults!" << endl;
- char* temp = getenv("TEMP");
- // if no envar, use /tmp
- xmlpath = temp ? temp : "/tmp";
- cout << "Will try TEMP instead: " << xmlpath << endl;
- // no fail here, but might fail when opening file...
- }
- else
- {
- xmlpath = U.yfexportdir;
- adjustPath(xmlpath); // possibly relative
- cout << "YFexport path is: " << xmlpath << endl;
- // check if it exists
- if (!BLI_exists(const_cast<char*>(xmlpath.c_str()))) {
- cout << "YafRay temporary xml export directory:\n" << U.yfexportdir << "\ndoes not exist!\n";
-#ifdef WIN32
- // try to create it
- cout << "Trying to create...\n";
- if (createDir(const_cast<char*>(xmlpath.c_str()))==0) dir_failed=true; else dir_failed=false;
-#else
- dir_failed = true;
-#endif
- }
- }
-
-#ifdef WIN32
- // for windows try to get the path to the yafray binary from the registry, only done once
- if (command_path=="")
- {
- char path[FILE_MAXDIR+FILE_MAXFILE];
- string yafray_path = find_path();
- if (yafray_path=="")
- {
- // error already printed in find_path()
- clearAll();
- return false;
- }
- GetShortPathName((LPCTSTR)(yafray_path.c_str()), path, FILE_MAXDIR+FILE_MAXFILE);
- command_path = string(path) + "\\";
- cout << "Yafray found at : " << command_path << endl;
- }
- // if no export dir set, or could not create, try to create one in the yafray dir, unless it already exists
- if (dir_failed)
- {
- string ybdir = command_path + "YBtest";
- if (createDir(const_cast<char*>(ybdir.c_str()))==0) dir_failed=true; else dir_failed=false;
- xmlpath = ybdir;
- }
-#else
- if (command_path=="")
- {
- command_path = unixYafrayPath();
- if (command_path.size()) cout << "Yafray found at : " << command_path << endl;
- }
-#endif
-
- // for all
- if (dir_failed) return false;
-
-#ifdef WIN32
- string DLM = "\\";
-#else
- string DLM = "/";
-#endif
- // remove trailing slash if needed
- if (xmlpath.find_last_of(DLM)!=(xmlpath.length()-1)) xmlpath += DLM;
-
- imgout = xmlpath + "YBtest.tga";
- xmlpath += "YBtest.xml";
- xmlfile.open(xmlpath.c_str());
- if (xmlfile.fail())
- {
- cout << "Could not open file\n";
- return false;
- }
- ostr << setiosflags(ios::showpoint | ios::fixed);
- xmlfile << "<scene>\n\n";
- return true;
-}
-
-bool yafrayFileRender_t::writeRender()
-{
- // finally export render block
- ostr.str("");
- ostr << "<render camera_name=\"MAINCAM\"\n";
- ostr << "\traydepth=\"" << re->r.YF_raydepth << "\" gamma=\"" << re->r.YF_gamma << "\" exposure=\"" << re->r.YF_exposure << "\"\n";
-
- if(re->r.YF_AA) {
- ostr << "\tAA_passes=\"" << re->r.YF_AApasses << "\" AA_minsamples=\"" << re->r.YF_AAsamples << "\"\n";
- ostr << "\tAA_pixelwidth=\"" << re->r.YF_AApixelsize << "\" AA_threshold=\"" << re->r.YF_AAthreshold << "\"\n";
- }
- else {
- // removed the default AA settings for midquality GI, better leave it to user
- if ((re->r.mode & R_OSA) && (re->r.osa)) {
- int passes = (re->r.osa & 3)==0 ? (re->r.osa >> 2) : 1;
- int minsamples=(re->r.osa & 3)==0 ? 4 : re->r.osa;
- ostr << "\tAA_passes=\"" << passes << "\" AA_minsamples=\"" << minsamples << "\"\n";
- }
- else ostr << "\tAA_passes=\"0\" AA_minsamples=\"1\"\n";
- ostr << "\tAA_pixelwidth=\"1.5\" AA_threshold=\"0.05\" bias=\"" << re->r.YF_raybias
- << "\" clamp_rgb=\"" << ((re->r.YF_clamprgb==0) ? "on" : "off") << "\"\n";
- }
-
- World *world = re->scene->world;
- if (world) ostr << "\tbackground_name=\"world_background\"\n";
-
- // alpha channel render when RGBA button enabled
- if (re->r.planes==R_PLANES32) ostr << "\n\tsave_alpha=\"on\"";
- ostr << " >\n";
-
- // basic fog
- if (world && (world->mode & WO_MIST)) {
- float fd = world->mistdist;
- if (fd>0) fd=1.f/fd; else fd=1;
- ostr << "\t<fog_density value=\"" << fd << "\" />\n";
- ostr << "\t<fog_color r=\"" << world->horr << "\" g=\"" << world->horg << "\" b=\"" << world->horb << "\" />\n";
- }
- ostr << "\t<outfile value=\"" << imgout << "\" />\n";
-
- ostr << "</render>\n\n";
- xmlfile << ostr.str();
- return true;
-}
-
-bool yafrayFileRender_t::finishExport()
-{
- xmlfile << "</scene>\n";
- xmlfile.close();
-
- // file exported, now render
- if (executeYafray(xmlpath))
- displayImage();
- else
- {
- cout << "Could not execute yafray. Is it in path?" << endl;
- return false;
- }
- return true;
-}
-
-// displays the image rendered with xml export
-// Now loads rendered image into blender renderbuf.
-void yafrayFileRender_t::displayImage()
-{
- // although it is possible to load the image using blender,
- // maybe it is best to just do a read here, for now the yafray output is always a raw tga anyway
-
- FILE* fp = fopen(imgout.c_str(), "rb");
- if (fp==NULL) {
- cout << "YAF_displayImage(): Could not open image file\n";
- return;
- }
-
- unsigned char header[18];
- fread(&header, 1, 18, fp);
- unsigned short width = (unsigned short)(header[12] + (header[13]<<8));
- unsigned short height = (unsigned short)(header[14] + (header[15]<<8));
- // don't do anything if resolution doesn't match that of rectot
- if ((width!=re->winx) || (height!=re->winy)) {
- cout << "Wrong image width/height: " << width << "/" << height <<
- " expected " << re->winx << "/" << re->winy << endl;
- fclose(fp);
- fp = NULL;
- return;
- }
- unsigned char byte_per_pix = (unsigned char)(header[16]>>3);
- // read past any id (none in this case though)
- unsigned int idlen = (unsigned int)header[0];
- if (idlen) fseek(fp, idlen, SEEK_CUR);
-
- /* XXX how to get the image from Blender and write to it. This call doesn't allow to change buffer rects */
- RenderResult rres;
- RE_GetResultImage(re, &rres);
- // rres.rectx, rres.recty is width/height
- // rres.rectf is float buffer, scanlines starting in bottom
- // rres.rectz is zbuffer, available when associated pass is set
-
- // read data directly into buffer, picture is upside down
- const float btf = 1.f/255.f;
- if (re->r.mode & R_BORDER) {
- // border render, yafray is full size render, blender at this point only wants the region
- unsigned int xs = (unsigned int)(re->r.border.xmin * re->winx),
- ys = (unsigned int)((1.f-re->r.border.ymax) * re->winy);
- for (unsigned short y=0; y<height; y++) {
- for (unsigned short x=0; x<width; x++) {
- char r = fgetc(fp);
- char g = fgetc(fp);
- char b = fgetc(fp);
- char a = (byte_per_pix==4) ? fgetc(fp) : 255;
- int bx = x-xs, by = y-ys;
- if ((bx >= 0) && (bx < (int)re->rectx) && (by >= 0) && (by < re->recty)) {
- float* bpt = (float*)rres.rectf + ((bx + (((re->recty-1) - by)*re->rectx)) << 2);
- bpt[2] = (float)r * btf;
- bpt[1] = (float)g * btf;
- bpt[0] = (float)b * btf;
- bpt[3] = (float)a * btf;
- bpt += 4;
- }
- }
- }
- }
- else {
- for (unsigned short y=0; y<height; y++) {
- float* bpt = (float*)rres.rectf + ((((height-1)-y)*width) << 2);
- for (unsigned short x=0; x<width; x++) {
- bpt[2] = ((float)fgetc(fp) * btf);
- bpt[1] = ((float)fgetc(fp) * btf);
- bpt[0] = ((float)fgetc(fp) * btf);
- bpt[3] = (byte_per_pix==4) ? ((float)fgetc(fp) * btf) : 1.f;
- bpt += 4;
- }
- }
- }
-
- fclose(fp);
- fp = NULL;
-
- // based on another assumption of ogl errors on my system, forgot to actually draw it...
- re->result->renlay = render_get_active_layer(re, re->result);
- re->display_draw(re->ddh, re->result, NULL);
-
-}
-
-static string noise2string(short nbtype)
-{
- switch (nbtype) {
- case TEX_BLENDER:
- return "blender";
- case TEX_STDPERLIN:
- return "stdperlin";
- case TEX_VORONOI_F1:
- return "voronoi_f1";
- case TEX_VORONOI_F2:
- return "voronoi_f2";
- case TEX_VORONOI_F3:
- return "voronoi_f3";
- case TEX_VORONOI_F4:
- return "voronoi_f4";
- case TEX_VORONOI_F2F1:
- return "voronoi_f2f1";
- case TEX_VORONOI_CRACKLE:
- return "voronoi_crackle";
- case TEX_CELLNOISE:
- return "cellnoise";
- default:
- case TEX_NEWPERLIN:
- return "newperlin";
- }
-}
-
-void yafrayFileRender_t::writeTextures()
-{
- // used to keep track of images already written
- // (to avoid duplicates if also in imagetex for material TexFace texture)
- set<Image*> dupimg;
-
- for (map<string, MTex*>::const_iterator blendtex=used_textures.begin();
- blendtex!=used_textures.end();++blendtex) {
- MTex* mtex = blendtex->second;
- Tex* tex = mtex->tex;
-
- float nsz = tex->noisesize;
- if (nsz!=0.f) nsz=1.f/nsz;
-
- // noisebasis type
- string ntype = noise2string(tex->noisebasis);
- string ts, hardnoise=(tex->noisetype==TEX_NOISESOFT) ? "off" : "on";
-
- switch (tex->type) {
- case TEX_STUCCI:
- // stucci is clouds as bump, only difference is an extra parameter to handle wall in/out
- // turbulence value is not used, so for large values will not match well
- case TEX_CLOUDS: {
- ostr.str("");
- ostr << "<shader type=\"clouds\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<size value=\"" << nsz << "\" />\n";
- ostr << "\t\t<hard value=\"" << hardnoise << "\" />\n";
- if (tex->type==TEX_STUCCI) {
- if (tex->stype==1)
- ts = "positive";
- else if (tex->stype==2)
- ts = "negative";
- else ts = "none";
- ostr << "\t\t<bias value=\"" << ts << "\" />\n";
- ostr << "\t\t<depth value=\"0\" />\n"; // for stucci always 0
- }
- else ostr << "\t\t<depth value=\"" << tex->noisedepth << "\" />\n";
- ostr << "\t\t<color_type value=\"" << tex->stype << "\" />\n";
- ostr << "\t\t<noise_type value=\"" << ntype << "\" />\n";
- ostr << "\t</attributes>\n</shader >\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_WOOD: {
- ostr.str("");
- ostr << "<shader type=\"wood\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t\t<attributes>\n";
- // blender does not use depth value for wood, always 0
- ostr << "\t\t<depth value=\"0\" />\n";
- float turb = (tex->stype<2) ? 0.0 : tex->turbul;
- ostr << "\t\t<turbulence value=\"" << turb << "\" />\n";
- ostr << "\t\t<size value=\"" << nsz << "\" />\n";
- ostr << "\t\t<hard value=\"" << hardnoise << "\" />\n";
- ts = (tex->stype & 1) ? "rings" : "bands"; //stype 1&3 ringtype
- ostr << "\t\t<wood_type value=\"" << ts << "\" />\n";
- ostr << "\t\t<noise_type value=\"" << ntype << "\" />\n";
- // shape parameter, for some reason noisebasis2 is used...
- ts = "sin";
- if (tex->noisebasis2==1) ts="saw"; else if (tex->noisebasis2==2) ts="tri";
- ostr << "\t\t<shape value=\"" << ts << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_MARBLE: {
- ostr.str("");
- ostr << "<shader type=\"marble\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<depth value=\"" << tex->noisedepth << "\" />\n";
- ostr << "\t\t<turbulence value=\"" << tex->turbul << "\" />\n";
- ostr << "\t\t<size value=\"" << nsz << "\" />\n";
- ostr << "\t\t<hard value=\"" << hardnoise << "\" />\n";
- ostr << "\t\t<sharpness value=\"" << (float)(1<<tex->stype) << "\" />\n";
- ostr << "\t\t<noise_type value=\"" << ntype << "\" />\n";
- ts = "sin";
- if (tex->noisebasis2==1) ts="saw"; else if (tex->noisebasis2==2) ts="tri";
- ostr << "\t\t<shape value=\"" << ts << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_VORONOI: {
- ostr.str("");
- ostr << "<shader type=\"voronoi\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- ts = "int";
- if (tex->vn_coltype==1)
- ts = "col1";
- else if (tex->vn_coltype==2)
- ts = "col2";
- else if (tex->vn_coltype==3)
- ts = "col3";
- ostr << "\t\t<color_type value=\"" << ts << "\" />\n";
- ostr << "\t\t<weight1 value=\"" << tex->vn_w1 << "\" />\n";
- ostr << "\t\t<weight2 value=\"" << tex->vn_w2 << "\" />\n";
- ostr << "\t\t<weight3 value=\"" << tex->vn_w3 << "\" />\n";
- ostr << "\t\t<weight4 value=\"" << tex->vn_w4 << "\" />\n";
- ostr << "\t\t<mk_exponent value=\"" << tex->vn_mexp << "\" />\n";
- ostr << "\t\t<intensity value=\"" << tex->ns_outscale << "\" />\n";
- ostr << "\t\t<size value=\"" << nsz << "\" />\n";
- ts = "actual";
- if (tex->vn_distm==TEX_DISTANCE_SQUARED)
- ts = "squared";
- else if (tex->vn_distm==TEX_MANHATTAN)
- ts = "manhattan";
- else if (tex->vn_distm==TEX_CHEBYCHEV)
- ts = "chebychev";
- else if (tex->vn_distm==TEX_MINKOVSKY_HALF)
- ts = "minkovsky_half";
- else if (tex->vn_distm==TEX_MINKOVSKY_FOUR)
- ts = "minkovsky_four";
- else if (tex->vn_distm==TEX_MINKOVSKY)
- ts = "minkovsky";
- ostr << "\t\t<distance_metric value=\"" << ts << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_MUSGRAVE: {
- ostr.str("");
- ostr << "<shader type=\"musgrave\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- switch (tex->stype) {
- case TEX_MFRACTAL:
- ts = "multifractal";
- break;
- case TEX_RIDGEDMF:
- ts = "ridgedmf";
- break;
- case TEX_HYBRIDMF:
- ts = "hybridmf";
- break;
- case TEX_HTERRAIN:
- ts = "heteroterrain";
- break;
- default:
- case TEX_FBM:
- ts = "fBm";
- }
- ostr << "\t\t<musgrave_type value=\"" << ts << "\" />\n";
- ostr << "\t\t<noise_type value=\"" << ntype << "\" />\n";
- ostr << "\t\t<H value=\"" << tex->mg_H << "\" />\n";
- ostr << "\t\t<lacunarity value=\"" << tex->mg_lacunarity << "\" />\n";
- ostr << "\t\t<octaves value=\"" << tex->mg_octaves << "\" />\n";
- if ((tex->stype==TEX_HTERRAIN) || (tex->stype==TEX_RIDGEDMF) || (tex->stype==TEX_HYBRIDMF)) {
- ostr << "\t\t<offset value=\"" << tex->mg_offset << "\" />\n";
- if ((tex->stype==TEX_RIDGEDMF) || (tex->stype==TEX_HYBRIDMF))
- ostr << "\t\t<gain value=\"" << tex->mg_gain << "\" />\n";
- }
- ostr << "\t\t<size value=\"" << nsz << "\" />\n";
- ostr << "\t\t<intensity value=\"" << tex->ns_outscale << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_DISTNOISE: {
- ostr.str("");
- ostr << "<shader type=\"distorted_noise\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<distort value=\"" << tex->dist_amount << "\" />\n";
- ostr << "\t\t<size value=\"" << nsz << "\" />\n";
- ostr << "\t\t<noise_type1 value=\"" << ntype << "\" />\n";
- ostr << "\t\t<noise_type2 value=\"" << noise2string(tex->noisebasis2) << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_BLEND: {
- ostr.str("");
- ostr << "<shader type=\"gradient\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- switch (tex->stype) {
- case 1: ts="quadratic"; break;
- case 2: ts="cubic"; break;
- case 3: ts="diagonal"; break;
- case 4: ts="sphere"; break;
- case 5: ts="halo"; break;
- default:
- case 0: ts="linear"; break;
- }
- ostr << "\t\t<gradient_type value=\"" << ts << "\" />\n";
- if (tex->flag & TEX_FLIPBLEND) ts="on"; else ts="off";
- ostr << "\t\t<flip_xy value=\"" << ts << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_NOISE: {
- ostr.str("");
- ostr << "<shader type=\"random_noise\" name=\"" << blendtex->first << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<depth value=\"" << tex->noisedepth << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- break;
- }
- case TEX_IMAGE: {
- Image* ima = tex->ima;
- if (ima) {
- // remember image to avoid duplicates later if also in imagetex
- // (formerly done by removing from imagetex, but need image/material link)
- dupimg.insert(ima);
- ostr.str("");
- // use image name instead of texname here
- ostr << "<shader type=\"image\" name=\"" << ima->id.name << "\" >\n";
- ostr << "\t<attributes>\n";
- string texpath(ima->name);
- adjustPath(texpath);
- ostr << "\t\t<filename value=\"" << texpath << "\" />\n";
- ostr << "\t\t<interpolate value=\"" << ((tex->imaflag & TEX_INTERPOL) ? "bilinear" : "none") << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- }
- break;
- }
- default:
- cout << "Unsupported texture type\n";
- }
-
- // colorbands
- if (tex->flag & TEX_COLORBAND) {
- ColorBand* cb = tex->coba;
- if (cb) {
- ostr.str("");
- ostr << "<shader type=\"colorband\" name=\"" << blendtex->first + "_coba" << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<input value=\"" << blendtex->first << "\" />\n";
- ostr << "\t</attributes>\n";
- for (int i=0;i<cb->tot;i++) {
- ostr << "\t<modulator value=\"" << cb->data[i].pos << "\" >\n";
- ostr << "\t\t<color r=\"" << cb->data[i].r << "\"" <<
- " g=\"" << cb->data[i].g << "\"" <<
- " b=\"" << cb->data[i].b << "\"" <<
- " a=\"" << cb->data[i].a << "\" />\n";
- ostr << "\t</modulator>\n";
- }
- ostr << "</shader>\n\n";
- xmlfile << ostr.str();
- }
- }
-
- }
-
- // If used, textures for the material 'TexFace' case
- if (!imagetex.empty()) {
- for (map<Image*, set<Material*> >::const_iterator imgtex=imagetex.begin();
- imgtex!=imagetex.end();++imgtex)
- {
- // skip if already written above
- Image* ima = imgtex->first;
- if (dupimg.find(ima)==dupimg.end()) {
- ostr.str("");
- ostr << "<shader type=\"image\" name=\"" << ima->id.name << "\" >\n";
- ostr << "\t<attributes>\n";
- string texpath(ima->name);
- adjustPath(texpath);
- ostr << "\t\t<filename value=\"" << texpath << "\" />\n";
- ostr << "\t</attributes>\n</shader>\n\n";
- xmlfile << ostr.str();
- }
- }
- }
-
-}
-
-void yafrayFileRender_t::writeShader(const string &shader_name, Material* matr, const string &facetexname)
-{
- // if material has ramps, export colorbands first
- if (matr->mode & (MA_RAMP_COL|MA_RAMP_SPEC))
- {
- // both colorbands without input shader
- ColorBand* cb = matr->ramp_col;
- if ((matr->mode & MA_RAMP_COL) && (cb!=NULL))
- {
- ostr.str("");
- ostr << "<shader type=\"colorband\" name=\"" << shader_name+"_difframp" << "\" >\n";
- ostr << "\t<attributes>\n\t</attributes>\n";
- for (int i=0;i<cb->tot;i++) {
- ostr << "\t<modulator value=\"" << cb->data[i].pos << "\" >\n";
- ostr << "\t\t<color r=\"" << cb->data[i].r << "\"" <<
- " g=\"" << cb->data[i].g << "\"" <<
- " b=\"" << cb->data[i].b << "\"" <<
- " a=\"" << cb->data[i].a << "\" />\n";
- ostr << "\t</modulator>\n";
- }
- ostr << "</shader>\n\n";
- xmlfile << ostr.str();
- }
- cb = matr->ramp_spec;
- if ((matr->mode & MA_RAMP_SPEC) && (cb!=NULL))
- {
- ostr.str("");
- ostr << "<shader type=\"colorband\" name=\"" << shader_name+"_specramp" << "\" >\n";
- ostr << "\t<attributes>\n\t</attributes>\n";
- for (int i=0;i<cb->tot;i++) {
- ostr << "\t<modulator value=\"" << cb->data[i].pos << "\" >\n";
- ostr << "\t\t<color r=\"" << cb->data[i].r << "\"" <<
- " g=\"" << cb->data[i].g << "\"" <<
- " b=\"" << cb->data[i].b << "\"" <<
- " a=\"" << cb->data[i].a << "\" />\n";
- ostr << "\t</modulator>\n";
- }
- ostr << "</shader>\n\n";
- xmlfile << ostr.str();
- }
- }
-
- ostr.str("");
- ostr << "<shader type=\"blendershader\" name=\"" << shader_name << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<color r=\"" << matr->r << "\" g=\"" << matr->g << "\" b=\"" << matr->b << "\" />\n";
- float sr=matr->specr, sg=matr->specg, sb=matr->specb;
- if (matr->spec_shader==MA_SPEC_WARDISO) {
- // ........
- sr /= M_PI;
- sg /= M_PI;
- sb /= M_PI;
- }
- ostr << "\t\t<specular_color r=\"" << sr << "\" g=\"" << sg << "\" b=\"" << sb << "\" />\n";
- ostr << "\t\t<mirror_color r=\"" << matr->mirr << "\" g=\"" << matr->mirg << "\" b=\"" << matr->mirb << "\" />\n";
- ostr << "\t\t<diffuse_reflect value=\"" << matr->ref << "\" />\n";
- ostr << "\t\t<specular_amount value=\"" << matr->spec << "\" />\n";
- ostr << "\t\t<alpha value=\"" << matr->alpha << "\" />\n";
- // if no GI used, the GIpower parameter is not always initialized, so in that case ignore it
- float bg_mult = (re->r.GImethod==0) ? 1 : re->r.GIpower;
- ostr << "\t\t<emit value=\"" << (matr->emit * bg_mult) << "\" />\n";
-
- // reflection/refraction
- if ( (matr->mode & MA_RAYMIRROR) || (matr->mode & MA_RAYTRANSP) )
- ostr << "\t\t<IOR value=\"" << matr->ang << "\" />\n";
-
- if (matr->mode & MA_RAYMIRROR)
- {
- // Sofar yafray's min_refle parameter (which misleadingly actually controls fresnel reflection offset)
- // has been mapped to Blender's ray_mirror parameter.
- // This causes it be be misinterpreted and misused as a reflection amount control however.
- // Besides that, it also causes extra complications for the yafray Blendershader.
- // So added an actual amount of reflection parameter instead, and another
- // extra parameter 'frsOfs' to actually control fresnel offset (re-uses Blender fresnel_mir_i param).
- ostr << "\t\t<reflect value=\"on\" />\n";
- ostr << "\t\t<reflect_amount value=\""<< matr->ray_mirror << "\" />\n";
- float fo = 1.f-(matr->fresnel_mir_i-1.f)*0.25f; // blender param range [1,5], also here reversed (1 in Blender -> no fresnel)
- ostr << "\t\t<fresnel_offset value=\""<< fo << "\" />\n";
-
- // for backward compatibility, also add old 'reflected' parameter, copy of mirror_color
- ostr << "\t\t<reflected r=\"" << matr->mirr << "\" g=\"" << matr->mirg << "\" b=\"" << matr->mirb << "\" />\n";
- // same for 'min_refle' param. Instead of the ray_mirror parameter that was used before, since now
- // the parameter's function is taken over by the fresnel offset parameter, use that instead.
- ostr << "\t\t<min_refle value=\"" << fo << "\" />\n";
-
- }
-
- if (matr->mode & MA_RAYTRANSP)
- {
- ostr << "\t\t<refract value=\"on\" />\n";
- ostr << "\t\t<transmit_filter value=\"" << matr->filter << "\" />\n";
- // tir on by default
- ostr << "\t\t<tir value=\"on\" />\n";
-
- // transmit absorption color
- // to make things easier(?) for user it now specifies the actual color at 1 unit / YF_dscale of distance
- const float maxlog = -log(1e-38);
- float ar = (matr->YF_ar>0) ? -log(matr->YF_ar) : maxlog;
- float ag = (matr->YF_ag>0) ? -log(matr->YF_ag) : maxlog;
- float ab = (matr->YF_ab>0) ? -log(matr->YF_ab) : maxlog;
- float sc = matr->YF_dscale;
- if (sc!=0.f) sc=1.f/sc;
- ostr << "\t\t<absorption r=\"" << ar*sc << "\" g=\"" << ag*sc << "\" b=\"" << ab*sc << "\" />\n";
- // dispersion
- ostr << "\t\t<dispersion_power value=\"" << matr->YF_dpwr << "\" />\n";
- ostr << "\t\t<dispersion_samples value=\"" << matr->YF_dsmp << "\" />\n";
- ostr << "\t\t<dispersion_jitter value=\"" << (matr->YF_djit ? "on" : "off") << "\" />\n";
-
- // for backward compatibility, also add old 'transmitted' parameter, copy of 'color' * (1-alpha)
- float na = 1.f-matr->alpha;
- ostr << "\t\t<transmitted r=\"" << matr->r*na << "\" g=\"" << matr->g*na << "\" b=\"" << matr->b*na << "\" />\n";
- }
-
- string Mmode = "";
- if (matr->mode & MA_TRACEBLE) Mmode += "traceable";
- if (matr->mode & MA_SHADOW) Mmode += " shadow";
- if (matr->mode & MA_SHLESS) Mmode += " shadeless";
- if (matr->mode & MA_VERTEXCOL) Mmode += " vcol_light";
- if (matr->mode & MA_VERTEXCOLP) Mmode += " vcol_paint";
- if (matr->mode & MA_ZTRA) Mmode += " ztransp";
- if (matr->mode & MA_ONLYSHADOW) Mmode += " onlyshadow";
- if (Mmode!="") ostr << "\t\t<matmodes value=\"" << Mmode << "\" />\n";
-
- // diffuse & specular brdf, lambert/cooktorr defaults
- // diffuse
- if (matr->diff_shader==MA_DIFF_ORENNAYAR) {
- ostr << "\t\t<diffuse_brdf value=\"oren_nayar\" />\n";
- ostr << "\t\t<roughness value=\"" << matr->roughness << "\" />\n";
- }
- else if (matr->diff_shader==MA_DIFF_TOON) {
- ostr << "\t\t<diffuse_brdf value=\"toon\" />\n";
- ostr << "\t\t<toondiffuse_size value=\"" << matr->param[0] << "\" />\n";
- ostr << "\t\t<toondiffuse_smooth value=\"" << matr->param[1] << "\" />\n";
- }
- else if (matr->diff_shader==MA_DIFF_MINNAERT) {
- ostr << "\t\t<diffuse_brdf value=\"minnaert\" />\n";
- ostr << "\t\t<darkening value=\"" << matr->darkness << "\" />\n";
- }
- else ostr << "\t\t<diffuse_brdf value=\"lambert\" />\n";
- // specular
- if (matr->spec_shader==MA_SPEC_PHONG) {
- ostr << "\t\t<specular_brdf value=\"phong\" />\n";
- ostr << "\t\t<hard value=\"" << matr->har << "\" />\n";
- }
- else if (matr->spec_shader==MA_SPEC_BLINN) {
- ostr << "\t\t<specular_brdf value=\"blinn\" />\n";
- ostr << "\t\t<blinn_ior value=\"" << matr->refrac << "\" />\n";
- ostr << "\t\t<hard value=\"" << matr->har << "\" />\n";
- }
- else if (matr->spec_shader==MA_SPEC_TOON) {
- ostr << "\t\t<specular_brdf value=\"toon\" />\n";
- ostr << "\t\t<toonspecular_size value=\"" << matr->param[2] << "\" />\n";
- ostr << "\t\t<toonspecular_smooth value=\"" << matr->param[3] << "\" />\n";
- }
- else if (matr->spec_shader==MA_SPEC_WARDISO) {
- ostr << "\t\t<specular_brdf value=\"ward\" />\n";
- ostr << "\t\t<u_roughness value=\"" << matr->rms << "\" />\n";
- ostr << "\t\t<v_roughness value=\"" << matr->rms << "\" />\n";
- }
- else {
- ostr << "\t\t<specular_brdf value=\"blender_cooktorr\" />\n";
- ostr << "\t\t<hard value=\"" << matr->har << "\" />\n";
- }
-
- // ramps, if used
- if (matr->mode & (MA_RAMP_COL|MA_RAMP_SPEC))
- {
- const string rm_blend[9] = {"mix", "add", "mul", "sub", "screen", "divide", "difference", "darken", "lighten"};
- const string rm_mode[4] = {"shader", "energy", "normal", "result"};
- // diffuse
- if ((matr->mode & MA_RAMP_COL) && (matr->ramp_col!=NULL))
- {
- ostr << "\t\t<diffuse_ramp value=\"" << shader_name+"_difframp" << "\" />\n";
- ostr << "\t\t<diffuse_ramp_mode value=\"" << rm_mode[(int)matr->rampin_col] << "\" />\n";
- ostr << "\t\t<diffuse_ramp_blend value=\"" << rm_blend[(int)matr->rampblend_col] << "\" />\n";
- ostr << "\t\t<diffuse_ramp_factor value=\"" << matr->rampfac_col << "\" />\n";
- }
- // specular
- if ((matr->mode & MA_RAMP_SPEC) && (matr->ramp_spec!=NULL)) {
- ostr << "\t\t<specular_ramp value=\"" << shader_name+"_specramp" << "\" />\n";
- ostr << "\t\t<specular_ramp_mode value=\"" << rm_mode[(int)matr->rampin_spec] << "\" />\n";
- ostr << "\t\t<specular_ramp_blend value=\"" << rm_blend[(int)matr->rampblend_spec] << "\" />\n";
- ostr << "\t\t<specular_ramp_factor value=\"" << matr->rampfac_spec << "\" />\n";
- }
- }
-
- ostr << "\t</attributes>\n";
- xmlfile << ostr.str();
-
- // modulators
- // first modulator is the texture of the face, if used (TexFace mode)
- if (facetexname.length()!=0) {
- ostr.str("");
- ostr << "\t<modulator>\n";
- ostr << "\t\t<input value=\"" << facetexname << "\" />\n";
- ostr << "\t\t<color value=\"1\" />\n";
- ostr << "\t</modulator>\n";
- xmlfile << ostr.str();
- }
-
- for (int m2=0;m2<MAX_MTEX;m2++) {
-
- if (matr->septex & (1<<m2)) continue;// all active channels
-
- // ignore null mtex
- MTex* mtex = matr->mtex[m2];
- if (mtex==NULL) continue;
-
- // ignore null tex
- Tex* tex = mtex->tex;
- if (tex==NULL) continue;
-
- map<string, MTex*>::const_iterator mtexL = used_textures.find(string(tex->id.name));
- if (mtexL!=used_textures.end()) {
-
- ostr.str("");
- ostr << "\t<modulator>\n";
- // when no facetex used, shader_name is created from original material name
- if (facetexname.length()!=0)
- ostr << "\t\t<input value=\"" << matr->id.name << "_map" << m2 << "\" />\n";
- else
- ostr << "\t\t<input value=\"" << shader_name << "_map" << m2 << "\" />\n";
-
- // blendtype, would have been nice if the order would have been the same as for ramps...
- const string blendtype[MTEX_NUM_BLENDTYPES] = {"mix", "mul", "add", "sub", "divide", "darken", "difference", "lighten", "screen", "hue", "sat", "val", "color"};
- ostr << "\t\t<mode value=\"" << blendtype[(int)mtex->blendtype] << "\" />\n";
-
- // texture color (for use with MUL and/or no_rgb etc..)
- ostr << "\t\t<texcol r=\"" << mtex->r << "\" g=\"" << mtex->g << "\" b=\"" << mtex->b << "\" />\n";
-
- // texture contrast, brightness & color adjustment
- ostr << "\t\t<filtercolor r=\"" << tex->rfac << "\" g=\"" << tex->gfac << "\" b=\"" << tex->bfac << "\" />\n";
- ostr << "\t\t<contrast value=\"" << tex->contrast << "\" />\n";
- ostr << "\t\t<brightness value=\"" << tex->bright << "\" />\n";
-
- // all texture flags now are switches, having the value 1 or -1 (negative option)
- // the negative option only used for the intensity modulation options.
-
- // material (diffuse) color, amount controlled by colfac (see below)
- if (mtex->mapto & MAP_COL)
- ostr << "\t\t<color value=\"1\" />\n";
-
- // bumpmapping
- if ((mtex->mapto & MAP_NORM) || (mtex->maptoneg & MAP_NORM)) {
- // for yafray, bump factor is negated (unless tex is stucci, not affected by 'Neg')
- // scaled down quite a bit
- float nf = mtex->norfac;
- if (tex->type!=TEX_STUCCI) nf *= -1.f;
- if (mtex->maptoneg & MAP_NORM) nf *= -1.f;
- ostr << "\t\t<normal value=\"" << (nf/60.f) << "\" />\n";
-
- }
-
- // all blender texture modulation as switches, either 1 or -1 (negative state of button)
- // Csp, specular color modulation
- if (mtex->mapto & MAP_COLSPEC)
- ostr << "\t\t<colspec value=\"1\" />\n";
-
- // CMir, mirror color modulation
- if (mtex->mapto & MAP_COLMIR)
- ostr << "\t\t<colmir value=\"1\" />\n";
-
- // Ref, diffuse reflection amount modulation
- if ((mtex->mapto & MAP_REF) || (mtex->maptoneg & MAP_REF)) {
- int t = 1;
- if (mtex->maptoneg & MAP_REF) t = -1;
- ostr << "\t\t<difref value=\"" << t << "\" />\n";
- }
-
- // Spec, specular amount mod
- if ((mtex->mapto & MAP_SPEC) || (mtex->maptoneg & MAP_SPEC)) {
- int t = 1;
- if (mtex->maptoneg & MAP_SPEC) t = -1;
- ostr << "\t\t<specular value=\"" << t << "\" />\n";
- }
-
- // hardness modulation
- if ((mtex->mapto & MAP_HAR) || (mtex->maptoneg & MAP_HAR)) {
- int t = 1;
- if (mtex->maptoneg & MAP_HAR) t = -1;
- ostr << "\t\t<hard value=\"" << t << "\" />\n";
- }
-
- // alpha modulation
- if ((mtex->mapto & MAP_ALPHA) || (mtex->maptoneg & MAP_ALPHA)) {
- int t = 1;
- if (mtex->maptoneg & MAP_ALPHA) t = -1;
- ostr << "\t\t<alpha value=\"" << t << "\" />\n";
- }
-
- // emit modulation
- if ((mtex->mapto & MAP_EMIT) || (mtex->maptoneg & MAP_EMIT)) {
- int t = 1;
- if (mtex->maptoneg & MAP_EMIT) t = -1;
- ostr << "\t\t<emit value=\"" << t << "\" />\n";
- }
-
- // raymir modulation
- if ((mtex->mapto & MAP_RAYMIRR) || (mtex->maptoneg & MAP_RAYMIRR)) {
- int t = 1;
- if (mtex->maptoneg & MAP_RAYMIRR) t = -1;
- ostr << "\t\t<raymir value=\"" << t << "\" />\n";
- }
-
- // texture flag, combination of strings
- string ts = "";
- if (mtex->texflag & (MTEX_RGBTOINT | MTEX_STENCIL | MTEX_NEGATIVE)) {
- if (mtex->texflag & MTEX_RGBTOINT) ts += "no_rgb ";
- if (mtex->texflag & MTEX_STENCIL) ts += "stencil ";
- if (mtex->texflag & MTEX_NEGATIVE) ts += "negative";
- ostr << "\t\t<texflag value=\"" << ts << "\" />\n";
- }
-
- // colfac, controls amount of color modulation
- ostr << "\t\t<colfac value=\"" << mtex->colfac << "\" />\n";
-
- // def_var
- ostr << "\t\t<def_var value=\"" << mtex->def_var << "\" />\n";
-
- //varfac
- ostr << "\t\t<varfac value=\"" << mtex->varfac << "\" />\n";
-
- if ((tex->imaflag & (TEX_CALCALPHA | TEX_USEALPHA)) || (tex->flag & TEX_NEGALPHA)) {
- ts = "";
- if (tex->imaflag & TEX_CALCALPHA) ts += "calc_alpha ";
- if (tex->imaflag & TEX_USEALPHA) ts += "use_alpha ";
- if (tex->flag & TEX_NEGALPHA) ts += "neg_alpha";
- ostr << "\t\t<alpha_flag value=\"" << ts << "\" />\n";
- }
-
- // image as normalmap flag
- if (tex->imaflag & TEX_NORMALMAP) ostr << "\t\t<normalmap value=\"on\" />\n";
-
- ostr << "\t</modulator>\n";
- xmlfile << ostr.str();
-
- }
- }
- xmlfile << "</shader>\n\n";
-
-}
-
-
-// write all materials & modulators
-void yafrayFileRender_t::writeMaterialsAndModulators()
-{
- // shaders/mappers for regular texture (or non-texture) mode
- // In case material has texface mode, and all faces have an image texture,
- // this shader will not be used, but still be written
- for (map<string, Material*>::const_iterator blendmat=used_materials.begin();
- blendmat!=used_materials.end();++blendmat)
- {
-
- Material* matr = blendmat->second;
-
- // mapper(s)
- for (int m=0;m<MAX_MTEX;m++)
- {
-
- if (matr->septex & (1<<m)) continue;// all active channels
-
- // ignore null mtex
- MTex* mtex = matr->mtex[m];
- if (mtex==NULL) continue;
- // ignore null tex
- Tex* tex = mtex->tex;
- if (tex==NULL) continue;
-
- map<string, MTex*>::const_iterator mtexL = used_textures.find(string(tex->id.name));
- if (mtexL!=used_textures.end()) {
- ostr.str("");
- ostr << "<shader type=\"blendermapper\" name=\"" << blendmat->first + "_map" << m <<"\"";
- if ((mtex->texco & TEXCO_OBJECT) || (mtex->texco & TEXCO_REFL) || (mtex->texco & TEXCO_NORM))
- {
- // For object, reflection & normal mapping, add the object matrix to the modulator,
- // as in LF script, use camera matrix if no object specified.
- // In this case this means the inverse of that matrix
- float texmat[4][4], itexmat[4][4];
- if ((mtex->texco & TEXCO_OBJECT) && (mtex->object))
- MTC_Mat4CpyMat4(texmat, mtex->object->obmat);
- else // also for refl. map
- MTC_Mat4CpyMat4(texmat, maincam_obj->obmat);
- MTC_Mat4Invert(itexmat, texmat);
- ostr << "\n\t\tm00=\"" << itexmat[0][0] << "\" m01=\"" << itexmat[1][0]
- << "\" m02=\"" << itexmat[2][0] << "\" m03=\"" << itexmat[3][0] << "\"\n";
- ostr << "\t\tm10=\"" << itexmat[0][1] << "\" m11=\"" << itexmat[1][1]
- << "\" m12=\"" << itexmat[2][1] << "\" m13=\"" << itexmat[3][1] << "\"\n";
- ostr << "\t\tm20=\"" << itexmat[0][2] << "\" m21=\"" << itexmat[1][2]
- << "\" m22=\"" << itexmat[2][2] << "\" m23=\"" << itexmat[3][2] << "\"\n";
- ostr << "\t\tm30=\"" << itexmat[0][3] << "\" m31=\"" << itexmat[1][3]
- << "\" m32=\"" << itexmat[2][3] << "\" m33=\"" << itexmat[3][3] << "\">\n";
- }
- else ostr << ">\n";
- ostr << "\t<attributes>\n";
-
- // use image name instead of texname when texture is image
- if ((tex->type==TEX_IMAGE) && tex->ima)
- ostr << "\t\t<input value=\"" << tex->ima->id.name << "\" />\n";
- else if ((tex->flag & TEX_COLORBAND) & (tex->coba!=NULL))
- ostr << "\t\t<input value=\"" << mtexL->first + "_coba" << "\" />\n";
- else
- ostr << "\t\t<input value=\"" << mtexL->first << "\" />\n";
-
- // texture size
- ostr << "\t\t<sizex value=\"" << mtex->size[0] << "\" />\n";
- ostr << "\t\t<sizey value=\"" << mtex->size[1] << "\" />\n";
- ostr << "\t\t<sizez value=\"" << mtex->size[2] << "\" />\n";
-
- // texture offset
- ostr << "\t\t<ofsx value=\"" << mtex->ofs[0] << "\" />\n";
- ostr << "\t\t<ofsy value=\"" << mtex->ofs[1] << "\" />\n";
- ostr << "\t\t<ofsz value=\"" << mtex->ofs[2] << "\" />\n";
-
- // texture coordinates, have to disable 'sticky' in Blender
- if (mtex->texco & TEXCO_UV)
- ostr << "\t\t<texco value=\"uv\" />\n";
- else if ((mtex->texco & TEXCO_GLOB) || (mtex->texco & TEXCO_OBJECT))
- // object mode is also set as global, but the object matrix was specified above with <modulator..>
- ostr << "\t\t<texco value=\"global\" />\n";
- else if ((mtex->texco & TEXCO_ORCO) || (mtex->texco & TEXCO_STRAND))
- // orco flag now used for 'strand'-mapping as well, see mesh code
- ostr << "\t\t<texco value=\"orco\" />\n";
- else if (mtex->texco & TEXCO_WINDOW)
- ostr << "\t\t<texco value=\"window\" />\n";
- else if (mtex->texco & TEXCO_NORM)
- ostr << "\t\t<texco value=\"normal\" />\n";
- else if (mtex->texco & TEXCO_REFL)
- ostr << "\t\t<texco value=\"reflect\" />\n";
-
- // texture projection axes, both image & procedural
- string proj = "nxyz"; // 'n' for 'none'
- ostr << "\t\t<proj_x value=\"" << proj[mtex->projx] << "\" />\n";
- ostr << "\t\t<proj_y value=\"" << proj[mtex->projy] << "\" />\n";
- ostr << "\t\t<proj_z value=\"" << proj[mtex->projz] << "\" />\n";
-
- // texture mapping parameters only relevant to image type
- if (tex->type==TEX_IMAGE) {
- if (mtex->mapping==MTEX_FLAT)
- ostr << "\t\t<mapping value=\"flat\" />\n";
- else if (mtex->mapping==MTEX_CUBE)
- ostr << "\t\t<mapping value=\"cube\" />\n";
- else if (mtex->mapping==MTEX_TUBE)
- ostr << "\t\t<mapping value=\"tube\" />\n";
- else if (mtex->mapping==MTEX_SPHERE)
- ostr << "\t\t<mapping value=\"sphere\" />\n";
-
- // repeat
- ostr << "\t\t<xrepeat value=\"" << tex->xrepeat << "\" />\n";
- ostr << "\t\t<yrepeat value=\"" << tex->yrepeat << "\" />\n";
-
- // clipping
- if (tex->extend==TEX_EXTEND)
- ostr << "\t\t<clipping value=\"extend\" />\n";
- else if (tex->extend==TEX_CLIP)
- ostr << "\t\t<clipping value=\"clip\" />\n";
- else if (tex->extend==TEX_CLIPCUBE)
- ostr << "\t\t<clipping value=\"clipcube\" />\n";
- else if (tex->extend==TEX_CHECKER) {
- ostr << "\t\t<clipping value=\"checker\" />\n";
- string ts = "";
- if (tex->flag & TEX_CHECKER_ODD) ts += "odd";
- if (tex->flag & TEX_CHECKER_EVEN) ts += " even";
- ostr << "\t\t<checker_mode value=\"" << ts << "\" />\n";
- ostr << "\t\t<checker_dist value=\"" << tex->checkerdist << "\" />\n";
- }
- else
- ostr << "\t\t<clipping value=\"repeat\" />\n";
-
- // crop min/max
- ostr << "\t\t<cropmin_x value=\"" << tex->cropxmin << "\" />\n";
- ostr << "\t\t<cropmin_y value=\"" << tex->cropymin << "\" />\n";
- ostr << "\t\t<cropmax_x value=\"" << tex->cropxmax << "\" />\n";
- ostr << "\t\t<cropmax_y value=\"" << tex->cropymax << "\" />\n";
-
- // rot90 flag
- string ts = "off";
- if (tex->imaflag & TEX_IMAROT) ts = "on";
- ostr << "\t\t<rot90 value=\"" << ts << "\" />\n";
- }
-
- ostr << "\t</attributes>\n";
- ostr << "</shader>\n\n";
-
- xmlfile << ostr.str();
- }
- }
-
- // shader + modulators
- writeShader(blendmat->first, matr);
-
- }
-
- // write the mappers & shaders for the TexFace case
- if (!imagetex.empty()) {
- // Yafray doesn't have per-face-textures, only per-face-shaders,
- // so create as many mappers/shaders as the images used by the object
- int snum = 0;
- for (map<Image*, set<Material*> >::const_iterator imgtex=imagetex.begin();
- imgtex!=imagetex.end();++imgtex)
- {
-
- for (set<Material*>::const_iterator imgmat=imgtex->second.begin();
- imgmat!=imgtex->second.end();++imgmat)
- {
- Material* matr = *imgmat;
- // mapper
- ostr.str("");
- ostr << "<shader type=\"blendermapper\" name=\"" << string(matr->id.name) + "_ftmap" << snum << "\" >\n";
- ostr << "\t<attributes>\n";
- ostr << "\t\t<input value=\"" << imgtex->first->id.name << "\" />\n";
- // all yafray default settings, except for texco, so no need to set others
- ostr << "\t\t<texco value=\"uv\" />\n";
- ostr << "\t</attributes>\n";
- ostr << "</shader>\n\n";
- xmlfile << ostr.str();
-
- // shader, remember name, used later when writing per-face-shaders
- ostr.str("");
- ostr << matr->id.name << "_ftsha" << snum;
- string shader_name = ostr.str();
- imgtex_shader[string(matr->id.name) + string(imgtex->first->id.name)] = shader_name;
-
- ostr.str("");
- ostr << matr->id.name << "_ftmap" << snum++;
- writeShader(shader_name, matr, ostr.str());
- }
-
- }
- }
-
-}
-
-
-void yafrayFileRender_t::writeObject(Object* obj, ObjectRen *obr, const vector<VlakRen*> &VLR_list, const float obmat[4][4])
-{
- ostr.str("");
- // transform first (not necessarily actual obj->obmat, can be duplivert see below)
- ostr << "<transform m00=\"" << obmat[0][0] << "\" m01=\"" << obmat[1][0]
- << "\" m02=\"" << obmat[2][0] << "\" m03=\"" << obmat[3][0] << "\"\n";
- ostr << " m10=\"" << obmat[0][1] << "\" m11=\"" << obmat[1][1]
- << "\" m12=\"" << obmat[2][1] << "\" m13=\"" << obmat[3][1] << "\"\n";
- ostr << " m20=\"" << obmat[0][2] << "\" m21=\"" << obmat[1][2]
- << "\" m22=\"" << obmat[2][2] << "\" m23=\"" << obmat[3][2] << "\"\n";
- ostr << " m30=\"" << obmat[0][3] << "\" m31=\"" << obmat[1][3]
- << "\" m32=\"" << obmat[2][3] << "\" m33=\"" << obmat[3][3] << "\">\n";
- xmlfile << ostr.str();
-
- ostr.str("");
-
- // using the ObjectRen database, contruct a new name if object has a parent.
- // This is done to prevent name clashes (group/library link related)
- string obname(obj->id.name);
- // previous implementation, keep around, in case this is still useful
- //if (obj->id.flag & (LIB_EXTERN|LIB_INDIRECT))obname = "lib_" + obname;
- ObjectRen *obren;
- for (obren = static_cast<ObjectRen*>(re->objecttable.first);
- obren; obren=static_cast<ObjectRen*>(obren->next))
- {
- Object *db_ob = obren->ob, *db_par = obren->par;
- if (db_ob==obj)
- if ((db_ob!=NULL) && (db_par!=NULL)) {
- obname += "_" + string(db_par->id.name);
- break;
- }
- }
-
- ostr << "<object name=\"" << obname << "\"";
- // Yafray still needs default shader name in object def.,
- // since we write a shader with every face, simply use the material of the first face.
- // If this is an empty string, assume default material.
- VlakRen* face0 = VLR_list[0];
- Material* face0mat = face0->mat;
- string matname(face0mat->id.name);
- // use name in imgtex_shader list if 'TexFace' enabled for this material
- if (face0mat->mode & MA_FACETEXTURE) {
- MTFace* tface = RE_vlakren_get_tface(obr, face0, obr->actmtface, NULL, 0);
- if (tface) {
- Image* fimg = (Image*)tface->tpage;
- if (fimg) matname = imgtex_shader[string(face0mat->id.name) + string(fimg->id.name)];
- }
- }
- bool shadow = face0mat->mode & MA_TRACEBLE;
- ostr <<" shadow=\""<< (shadow ? "on" : "off" ) << "\" ";
- bool caus = (((face0mat->mode & MA_RAYTRANSP) | (face0->mat->mode & MA_RAYMIRROR))!=0);
- if (caus) ostr << "caus_IOR=\"" << face0mat->ang << "\"";
- if (matname.length()==0) matname = "blender_default";
- ostr << " shader_name=\"" << matname << "\" >\n";
- ostr << "\t<attributes>\n";
- if (caus)
- {
- float tr = 1.0-face0mat->alpha;
- ostr << "\t\t<caus_tcolor r=\"" << face0mat->r*tr
- << "\" g=\"" << face0mat->g*tr
- << "\" b=\"" << face0mat->b*tr << "\" />\n";
- tr = face0mat->ray_mirror;
- ostr << "\t\t<caus_rcolor r=\"" << face0mat->mirr*tr
- << "\" g=\"" << face0mat->mirg*tr
- << "\" b=\"" << face0mat->mirb*tr << "\" />\n";
- }
- ostr << "\t</attributes>\n";
- xmlfile << ostr.str();
-
- // Export orco coords test.
- // Previously was done by checking orco pointer, however this can be non-null but still not initialized.
- // Test the rendermaterial texco flag instead.
- // update2: bug #3193 it seems it has changed again with the introduction of static 'hair' particles,
- // now it uses the vert pointer again as an extra test to make sure there are orco coords available
- int has_orco = 0;
- if (face0mat->texco & TEXCO_STRAND)
- has_orco = 1;
- else
- has_orco = (((face0mat->texco & TEXCO_ORCO)!=0) && (face0->v1->orco!=NULL)) ? 2 : 0;
-
- string has_orco_st = has_orco ? "on" : "off";
-
- // smooth shading if enabled
- bool no_auto = true; //in case non-mesh, or mesh has no autosmooth
- if (obj->type==OB_MESH) {
- Mesh* mesh = (Mesh*)obj->data;
- if (mesh->flag & ME_AUTOSMOOTH) {
- no_auto = false;
- ostr.str("");
- ostr << "\t<mesh autosmooth=\"" << mesh->smoothresh << "\" has_orco=\"" << has_orco_st << "\" >\n";
- xmlfile << ostr.str();
- }
- }
- // this for non-mesh as well
- if (no_auto) {
- // If AutoSmooth not used, since yafray currently cannot specify if a face is smooth
- // or flat shaded, the smooth flag of the first face is used to determine
- // the shading for the whole mesh
- if (face0->flag & ME_SMOOTH)
- xmlfile << "\t<mesh autosmooth=\"180\" has_orco=\"" << has_orco_st << "\" >\n";
- else
- xmlfile << "\t<mesh autosmooth=\"0.1\" has_orco=\"" << has_orco_st << "\" >\n"; //0 shows artefacts
- }
-
- // now all vertices
- map<VertRen*, int> vert_idx; // for removing duplicate verts and creating an index list
- int vidx = 0; // vertex index counter
-
- // vertices, transformed back to world
- xmlfile << "\t\t<points>\n";
-
- // for deformed objects, object->imat is no longer valid,
- // so have to create inverse render matrix ourselves here
- float mat[4][4], imat[4][4];
- MTC_Mat4MulMat4(mat, obj->obmat, re->viewmat);
- MTC_Mat4Invert(imat, mat);
-
- for (vector<VlakRen*>::const_iterator fci=VLR_list.begin();
- fci!=VLR_list.end();++fci)
- {
- VlakRen* vlr = *fci;
- VertRen* ver;
- float* orco;
- float tvec[3];
- ostr.str("");
- if (vert_idx.find(vlr->v1)==vert_idx.end()) {
- vert_idx[vlr->v1] = vidx++;
- ver = vlr->v1;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- ostr << "\t\t\t<p x=\"" << tvec[0]
- << "\" y=\"" << tvec[1]
- << "\" z=\"" << tvec[2] << "\" />\n";
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1) {
- ostr << "\t\t\t<p x=\"" << ver->accum
- << "\" y=\"" << ver->accum
- << "\" z=\"" << ver->accum << "\" />\n";
- }
- else if (has_orco==2) {
- orco = ver->orco;
- ostr << "\t\t\t<p x=\"" << orco[0]
- << "\" y=\"" << orco[1]
- << "\" z=\"" << orco[2] << "\" />\n";
- }
- }
- if (vert_idx.find(vlr->v2)==vert_idx.end()) {
- vert_idx[vlr->v2] = vidx++;
- ver = vlr->v2;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- ostr << "\t\t\t<p x=\"" << tvec[0]
- << "\" y=\"" << tvec[1]
- << "\" z=\"" << tvec[2] << "\" />\n";
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1) {
- ostr << "\t\t\t<p x=\"" << ver->accum
- << "\" y=\"" << ver->accum
- << "\" z=\"" << ver->accum << "\" />\n";
- }
- else if (has_orco==2) {
- orco = ver->orco;
- ostr << "\t\t\t<p x=\"" << orco[0]
- << "\" y=\"" << orco[1]
- << "\" z=\"" << orco[2] << "\" />\n";
- }
- }
- if (vert_idx.find(vlr->v3)==vert_idx.end()) {
- vert_idx[vlr->v3] = vidx++;
- ver = vlr->v3;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- ostr << "\t\t\t<p x=\"" << tvec[0]
- << "\" y=\"" << tvec[1]
- << "\" z=\"" << tvec[2] << "\" />\n";
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1) {
- ostr << "\t\t\t<p x=\"" << ver->accum
- << "\" y=\"" << ver->accum
- << "\" z=\"" << ver->accum << "\" />\n";
- }
- else if (has_orco==2) {
- orco = ver->orco;
- ostr << "\t\t\t<p x=\"" << orco[0]
- << "\" y=\"" << orco[1]
- << "\" z=\"" << orco[2] << "\" />\n";
- }
- }
- if ((vlr->v4) && (vert_idx.find(vlr->v4)==vert_idx.end())) {
- vert_idx[vlr->v4] = vidx++;
- ver = vlr->v4;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- ostr << "\t\t\t<p x=\"" << tvec[0]
- << "\" y=\"" << tvec[1]
- << "\" z=\"" << tvec[2] << "\" />\n";
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1) {
- ostr << "\t\t\t<p x=\"" << ver->accum
- << "\" y=\"" << ver->accum
- << "\" z=\"" << ver->accum << "\" />\n";
- }
- else if (has_orco==2) {
- orco = ver->orco;
- ostr << "\t\t\t<p x=\"" << orco[0]
- << "\" y=\"" << orco[1]
- << "\" z=\"" << orco[2] << "\" />\n";
- }
- }
- xmlfile << ostr.str();
- }
- xmlfile << "\t\t</points>\n";
-
- // all faces using the index list created above
- xmlfile << "\t\t<faces>\n";
- for (vector<VlakRen*>::const_iterator fci2=VLR_list.begin();
- fci2!=VLR_list.end();++fci2)
- {
- VlakRen* vlr = *fci2;
- Material* fmat = vlr->mat;
- bool EXPORT_VCOL = ((fmat->mode & (MA_VERTEXCOL|MA_VERTEXCOLP))!=0);
- string fmatname(fmat->id.name);
- // use name in imgtex_shader list if 'TexFace' enabled for this face material
- if (fmat->mode & MA_FACETEXTURE) {
- MTFace* tface = RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0);
- if (tface) {
- Image* fimg = (Image*)tface->tpage;
- if (fimg) fmatname = imgtex_shader[fmatname + string(fimg->id.name)];
- }
- }
- else if (fmatname.length()==0) fmatname = "blender_default";
-
- int idx1 = vert_idx.find(vlr->v1)->second;
- int idx2 = vert_idx.find(vlr->v2)->second;
- int idx3 = vert_idx.find(vlr->v3)->second;
- // make sure the indices point to the vertices when orco coords exported
- if (has_orco) { idx1*=2; idx2*=2; idx3*=2; }
-
- ostr.str("");
- ostr << "\t\t\t<f a=\"" << idx1 << "\" b=\"" << idx2 << "\" c=\"" << idx3 << "\"";
-
- // triangle uv and vcol indices
- int ui1=0, ui2=1, ui3=2;
- if (vlr->flag & R_DIVIDE_24) {
- ui3++;
- if (vlr->flag & R_FACE_SPLIT) { ui1++; ui2++; }
- }
- else if (vlr->flag & R_FACE_SPLIT) { ui2++; ui3++; }
-
- MTFace* uvc = RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0); // possible uvcoords (v upside down)
- if (uvc) {
- ostr << " u_a=\"" << uvc->uv[ui1][0] << "\" v_a=\"" << 1-uvc->uv[ui1][1] << "\""
- << " u_b=\"" << uvc->uv[ui2][0] << "\" v_b=\"" << 1-uvc->uv[ui2][1] << "\""
- << " u_c=\"" << uvc->uv[ui3][0] << "\" v_c=\"" << 1-uvc->uv[ui3][1] << "\"";
- }
-
- MCol *mcol= RE_vlakren_get_mcol(obr, vlr, obr->actmcol, NULL, 0);
-
- // since Blender seems to need vcols when uvs are used, for yafray only export when the material actually uses vcols
- if ((EXPORT_VCOL) && mcol) {
- // vertex colors
- unsigned char* pt = reinterpret_cast<unsigned char*>(&mcol[ui1]);
- ostr << " vcol_a_r=\"" << (float)pt[3]/255.f << "\" vcol_a_g=\"" << (float)pt[2]/255.f
- << "\" vcol_a_b=\"" << (float)pt[1]/255.f << "\"";
- pt = reinterpret_cast<unsigned char*>(&mcol[ui2]);
- ostr << " vcol_b_r=\"" << (float)pt[3]/255.f << "\" vcol_b_g=\"" << (float)pt[2]/255.f
- << "\" vcol_b_b=\"" << (float)pt[1]/255.f << "\"";
- pt = reinterpret_cast<unsigned char*>(&mcol[ui3]);
- ostr << " vcol_c_r=\"" << (float)pt[3]/255.f << "\" vcol_c_g=\"" << (float)pt[2]/255.f
- << "\" vcol_c_b=\"" << (float)pt[1]/255.f << "\"";
- }
- ostr << " shader_name=\"" << fmatname << "\" />\n";
-
- if (vlr->v4) {
-
- idx1 = vert_idx.find(vlr->v3)->second;
- idx2 = vert_idx.find(vlr->v4)->second;
- idx3 = vert_idx.find(vlr->v1)->second;
-
- // make sure the indices point to the vertices when orco coords exported
- if (has_orco) { idx1*=2; idx2*=2; idx3*=2; }
-
- ostr << "\t\t\t<f a=\"" << idx1 << "\" b=\"" << idx2 << "\" c=\"" << idx3 << "\"";
-
- // increment uv & vcol indices
- ui1 = (ui1+2) & 3;
- ui2 = (ui2+2) & 3;
- ui3 = (ui3+2) & 3;
-
- if (uvc) {
- ostr << " u_a=\"" << uvc->uv[ui1][0] << "\" v_a=\"" << 1-uvc->uv[ui1][1] << "\""
- << " u_b=\"" << uvc->uv[ui2][0] << "\" v_b=\"" << 1-uvc->uv[ui2][1] << "\""
- << " u_c=\"" << uvc->uv[ui3][0] << "\" v_c=\"" << 1-uvc->uv[ui3][1] << "\"";
- }
- if ((EXPORT_VCOL) && mcol) {
- // vertex colors
- unsigned char* pt = reinterpret_cast<unsigned char*>(&mcol[ui1]);
- ostr << " vcol_a_r=\"" << (float)pt[3]/255.f << "\" vcol_a_g=\"" << (float)pt[2]/255.f
- << "\" vcol_a_b=\"" << (float)pt[1]/255.f << "\"";
- pt = reinterpret_cast<unsigned char*>(&mcol[ui2]);
- ostr << " vcol_b_r=\"" << (float)pt[3]/255.f << "\" vcol_b_g=\"" << (float)pt[2]/255.f
- << "\" vcol_b_b=\"" << (float)pt[1]/255.f << "\"";
- pt = reinterpret_cast<unsigned char*>(&mcol[ui3]);
- ostr << " vcol_c_r=\"" << (float)pt[3]/255.f << "\" vcol_c_g=\"" << (float)pt[2]/255.f
- << "\" vcol_c_b=\"" << (float)pt[1]/255.f << "\"";
- }
- ostr << " shader_name=\"" << fmatname << "\" />\n";
-
- }
- xmlfile << ostr.str();
- }
- xmlfile << "\t\t</faces>\n\t</mesh>\n</object>\n</transform>\n\n";
-}
-
-
-// write all objects
-void yafrayFileRender_t::writeAllObjects()
-{
-
- // first all objects except dupliverts (and main instance object for dups)
- for (map<Object*, yafrayObjectRen >::const_iterator obi=all_objects.begin();
- obi!=all_objects.end(); ++obi)
- {
- // skip main duplivert object if in dupliMtx_list, written later
- Object* obj = obi->first;
- if (dupliMtx_list.find(string(obj->id.name))!=dupliMtx_list.end()) continue;
- writeObject(obj, obi->second.obr, obi->second.faces, obj->obmat);
- }
-
- // Now all duplivert objects (if any) as instances of main object
- // The original object has been included in the VlakRen renderlist above (see convertBlenderScene.c)
- // but is written here which all other duplis are instances of.
- float obmat[4][4], cmat[4][4], imat[4][4], nmat[4][4];
- for (map<string, vector<float> >::const_iterator dupMtx=dupliMtx_list.begin();
- dupMtx!=dupliMtx_list.end();++dupMtx) {
-
- // original inverse matrix, not actual matrix of object, but first duplivert.
-
- for (int i=0;i<4;i++)
- for (int j=0;j<4;j++)
- obmat[i][j] = dupMtx->second[(i<<2)+j];
-
- MTC_Mat4Invert(imat, obmat);
-
- // first object written as normal (but with transform of first duplivert)
- Object* obj = dup_srcob[dupMtx->first];
- writeObject(obj, all_objects[obj].obr, all_objects[obj].faces, obmat);
-
- // all others instances of first
- for (unsigned int curmtx=16;curmtx<dupMtx->second.size();curmtx+=16) { // number of 4x4 matrices
-
- // new mtx
- for (int i=0;i<4;i++)
- for (int j=0;j<4;j++)
- nmat[i][j] = dupMtx->second[curmtx+(i<<2)+j];
-
- MTC_Mat4MulMat4(cmat, imat, nmat); // transform with respect to original = inverse_original * new
-
- ostr.str("");
- // yafray matrix = transpose of Blender
- ostr << "<transform m00=\"" << cmat[0][0] << "\" m01=\"" << cmat[1][0]
- << "\" m02=\"" << cmat[2][0] << "\" m03=\"" << cmat[3][0] << "\"\n";
- ostr << " m10=\"" << cmat[0][1] << "\" m11=\"" << cmat[1][1]
- << "\" m12=\"" << cmat[2][1] << "\" m13=\"" << cmat[3][1] << "\"\n";
- ostr << " m20=\"" << cmat[0][2] << "\" m21=\"" << cmat[1][2]
- << "\" m22=\"" << cmat[2][2] << "\" m23=\"" << cmat[3][2] << "\"\n";
- ostr << " m30=\"" << cmat[0][3] << "\" m31=\"" << cmat[1][3]
- << "\" m32=\"" << cmat[2][3] << "\" m33=\"" << cmat[3][3] << "\">\n";
- xmlfile << ostr.str();
-
- // new name from original
- ostr.str("");
- ostr << "<object name=\"" << obj->id.name << "_dup" << (curmtx>>4) << "\" original=\"" << obj->id.name << "\" >\n";
- xmlfile << ostr.str();
- xmlfile << "\t<attributes>\n\t</attributes>\n\t<null/>\n</object>\n</transform>\n\n";
-
- }
-
- }
-
-}
-
-void yafrayFileRender_t::writeAreaLamp(LampRen* lamp, int num, float iview[4][4])
-{
- if (lamp->area_shape!=LA_AREA_SQUARE) return;
- float *a=lamp->area[0], *b=lamp->area[1], *c=lamp->area[2], *d=lamp->area[3];
- float power=lamp->energy;
-
- ostr.str("");
- string md = "off";
- // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
- if ((re->r.GImethod==2) && (re->r.GIphotons)) { md="on"; power*=re->r.GIpower; }
- ostr << "<light type=\"arealight\" name=\"LAMP" << num+1 << "\" dummy=\""<< md << "\" power=\"" << power << "\" ";
- // samples not used for GI with photons, can still be exported, is ignored
- int psm=0, sm = lamp->ray_totsamp;
- if (sm>=25) psm = sm/5;
- ostr << "samples=\"" << sm << "\" psamples=\"" << psm << "\" ";
- ostr << ">\n";
-
- // transform area lamp coords back to world
- float lpco[4][3];
- MTC_cp3Float(a, lpco[0]);
- MTC_Mat4MulVecfl(iview, lpco[0]);
- MTC_cp3Float(b, lpco[1]);
- MTC_Mat4MulVecfl(iview, lpco[1]);
- MTC_cp3Float(c, lpco[2]);
- MTC_Mat4MulVecfl(iview, lpco[2]);
- MTC_cp3Float(d, lpco[3]);
- MTC_Mat4MulVecfl(iview, lpco[3]);
- ostr << "\t<a x=\""<< lpco[0][0] <<"\" y=\""<< lpco[0][1] <<"\" z=\"" << lpco[0][2] <<"\" />\n";
- ostr << "\t<b x=\""<< lpco[1][0] <<"\" y=\""<< lpco[1][1] <<"\" z=\"" << lpco[1][2] <<"\" />\n";
- ostr << "\t<c x=\""<< lpco[2][0] <<"\" y=\""<< lpco[2][1] <<"\" z=\"" << lpco[2][2] <<"\" />\n";
- ostr << "\t<d x=\""<< lpco[3][0] <<"\" y=\""<< lpco[3][1] <<"\" z=\"" << lpco[3][2] <<"\" />\n";
-
- ostr << "\t<color r=\"" << lamp->r << "\" g=\"" << lamp->g << "\" b=\"" << lamp->b << "\" />\n";
- ostr << "</light>\n\n";
- xmlfile << ostr.str();
-}
-
-void yafrayFileRender_t::writeLamps()
-{
- GroupObject *go;
- int i=0;
-
- // inverse viewmatrix needed for back2world transform
- float iview[4][4];
- // re->viewinv != inv.re->viewmat because of possible ortho mode (see convertBlenderScene.c)
- // have to invert it here
- MTC_Mat4Invert(iview, re->viewmat);
-
- // all lamps
- for(go=(GroupObject *)re->lights.first; go; go= go->next, i++) {
- LampRen* lamp = (LampRen *)go->lampren;
-
- ostr.str("");
-
- if (lamp->type==LA_AREA) { writeAreaLamp(lamp, i, iview); continue; }
-
- // TODO: add decay setting in yafray
- ostr << "<light type=\"";
- bool is_softL=false, is_sphereL=false;
- if (lamp->type==LA_LOCAL) {
- if (lamp->mode & LA_YF_SOFT) {
- // shadowmapped omnidirectional light
- ostr << "softlight\"";
- is_softL = true;
- }
- else if ((lamp->mode & LA_SHAD_RAY) && (lamp->YF_ltradius>0.0)) {
- // area sphere, only when ray shadows enabled and radius>0.0
- ostr << "spherelight\"";
- is_sphereL = true;
- }
- else ostr << "pointlight\"";
- ostr << " glow_intensity=\"" << lamp->YF_glowint << "\" glow_offset=\"" << lamp->YF_glowofs
- << "\" glow_type=\"" << lamp->YF_glowtype << "\"";
- }
- else if (lamp->type==LA_SPOT)
- ostr << "spotlight\"";
- else if ((lamp->type==LA_SUN) || (lamp->type==LA_HEMI)) // hemi exported as sun
- ostr << "sunlight\"";
- else if (lamp->type==LA_YF_PHOTON)
- ostr << "photonlight\"";
- else {
- // possibly unknown type, ignore
- cout << "Unknown Blender lamp type: " << lamp->type << endl;
- continue;
- }
-
- //no name available here, create one
- ostr << " name=\"LAMP" << i+1;
- // color already premultiplied by energy, so only need distance here
- float pwr = 1; // default for sun/hemi, distance irrelevant
- if ((lamp->type!=LA_SUN) && (lamp->type!=LA_HEMI)) {
- if (lamp->mode & LA_SPHERE) {
- // best approx. as used in LFexport script (LF d.f.m. 4pi?)
- pwr = lamp->dist*(lamp->dist+1)*(0.25/M_PI);
- //decay = 2;
- }
- else {
- pwr = lamp->dist;
- //decay = 1;
- }
- }
-
- if (is_sphereL) {
- // 'dummy' mode for spherelight when used with gpm
- string md = "off";
- // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
- if ((re->r.GImethod==2) && (re->r.GIphotons)) { md="on"; pwr*=re->r.GIpower; }
- ostr << "\" power=\"" << pwr << "\" dummy=\"" << md << "\"";
- }
- else ostr << "\" power=\"" << pwr << "\"";
-
- // cast_shadows flag not used with softlight, spherelight or photonlight
- if ((!is_softL) && (!is_sphereL) && (lamp->type!=LA_YF_PHOTON)) {
- string lpmode="off";
- // Blender hemilights exported as sunlights which might have shadow flag set
- // should have cast_shadows set to off (reported by varuag)
- if (lamp->type!=LA_HEMI) {
- if (re->r.mode & R_SHADOW) {
- // old bug was here since the yafray lamp settings panel was added,
- // blender spotlight shadbuf flag should be ignored, since it is not in the panel anymore
- if (lamp->mode & LA_SHAD_RAY) lpmode="on";
- }
- }
- ostr << " cast_shadows=\"" << lpmode << "\"";
- }
-
-
- // spot specific stuff
- bool has_halo = ((lamp->type==LA_SPOT) && (lamp->mode & LA_HALO) && (lamp->haint>0.0));
- if (lamp->type==LA_SPOT) {
- // conversion already changed spotsize to cosine of half angle
- float ld = 1-lamp->spotsi; //convert back to blender slider setting
- if (ld!=0) ld = 1.f/ld;
- ostr << " size=\"" << acos(lamp->spotsi)*180.0/M_PI << "\""
- << " blend=\"" << lamp->spotbl*ld << "\""
- << " beam_falloff=\"2\""; // no Blender equivalent (yet)
- // halo params
- if (has_halo) {
- ostr << "\n\thalo=\"on\" " << "res=\"" << lamp->YF_bufsize << "\"\n";
- int hsmp = ((12-lamp->shadhalostep)*16)/12;
- hsmp = (hsmp+1)*16; // makes range (16, 272) for halostep(12, 0), good enough?
- // halo 'samples' now 'stepsize'
- // convert from old integer samples value to some reasonable stepsize
- ostr << "\tstepsize=\"" << (1.0/sqrt((float)hsmp)) << "\" shadow_samples=\"" << (lamp->samp*lamp->samp) << "\"\n";
- ostr << "\thalo_blur=\"0\" shadow_blur=\"" << (lamp->soft*0.01f) << "\"\n";
- ostr << "\tfog_density=\"" << (lamp->haint*0.2f) << "\"";
- }
- }
- else if (is_softL) {
- // softlight
- ostr << " res=\"" << lamp->YF_bufsize << "\""
- << " radius=\"" << lamp->soft << "\""
- << " bias=\"" << lamp->bias << "\"";
- }
- else if (is_sphereL) {
- // spherelight
- int psm=0, sm = lamp->ray_samp*lamp->ray_samp;
- if (sm>=25) psm = sm/5;
- ostr << " radius=\"" << lamp->YF_ltradius << "\""
- << " samples=\"" << sm << "\""
- << " psamples=\"" << psm << "\""
- << " qmc_method=\"1\"";
- }
- else if (lamp->type==LA_YF_PHOTON) {
- string qmc="off";
- if (lamp->YF_useqmc) qmc="on";
- ostr << "\n\tphotons=\"" << lamp->YF_numphotons << "\""
- << " search=\"" << lamp->YF_numsearch << "\""
- << " depth=\"" << lamp->YF_phdepth << "\""
- << " use_QMC=\"" << qmc << "\""
- << " angle=\"" << acos(lamp->spotsi)*180.0/M_PI << "\"";
- float cl = lamp->YF_causticblur/sqrt((float)lamp->YF_numsearch);
- ostr << "\n\tfixedradius=\"" << lamp->YF_causticblur << "\" cluster=\"" << cl << "\"";
- }
- ostr << " >\n";
-
- // transform lamp co & vec back to world
- float lpco[3], lpvec[3];
- MTC_cp3Float(lamp->co, lpco);
- MTC_Mat4MulVecfl(iview, lpco);
- MTC_cp3Float(lamp->vec, lpvec);
- MTC_Mat4Mul3Vecfl(iview, lpvec);
-
- // position, (==-blendir for sun/hemi)
- if ((lamp->type==LA_SUN) || (lamp->type==LA_HEMI))
- ostr << "\t<from x=\"" << -lpvec[0] << "\" y=\"" << -lpvec[1] << "\" z=\"" << -lpvec[2] << "\" />\n";
- else
- ostr << "\t<from x=\"" << lpco[0] << "\" y=\"" << lpco[1] << "\" z=\"" << lpco[2] << "\" />\n";
- // 'to' for spot/photonlight, already calculated by Blender
- if ((lamp->type==LA_SPOT) || (lamp->type==LA_YF_PHOTON)) {
- ostr << "\t<to x=\"" << lpco[0] + lpvec[0]
- << "\" y=\"" << lpco[1] + lpvec[1]
- << "\" z=\"" << lpco[2] + lpvec[2] << "\" />\n";
- if (has_halo) ostr << "\t<fog r=\"1\" g=\"1\" b=\"1\" />\n";
- }
-
- // color
- // rgb in LampRen is premultiplied by energy, power is compensated for that above
- ostr << "\t<color r=\"" << lamp->r << "\" g=\"" << lamp->g << "\" b=\"" << lamp->b << "\" />\n";
- ostr << "</light>\n\n";
- xmlfile << ostr.str();
- }
-}
-
-// write main camera
-void yafrayFileRender_t::writeCamera()
-{
- // here Global used again
- ostr.str("");
- ostr << "<camera name=\"MAINCAM\" ";
- if (re->r.mode & R_ORTHO)
- ostr << "type=\"ortho\"";
- else
- ostr << "type=\"perspective\"";
-
- // render resolution including the percentage buttons
- ostr << " resx=\"" << re->winx << "\" resy=\"" << re->winy << "\"";
-
- float f_aspect = 1;
- if ((re->winx * re->r.xasp) <= (re->winy * re->r.yasp))
- f_aspect = float(re->winx * re->r.xasp) / float(re->winy * re->r.yasp);
- ostr << "\n\tfocal=\"" << mainCamLens/(f_aspect*32.f);
- // bug #4532, when field rendering is enabled, ycor is doubled
- if (re->r.mode & R_FIELDS)
- ostr << "\" aspect_ratio=\"" << (re->ycor * 0.5f) << "\"";
- else
- ostr << "\" aspect_ratio=\"" << re->ycor << "\"";
-
-
- // dof params, only valid for real camera
- float fdist = 1; // only changes for ortho
- if (maincam_obj->type==OB_CAMERA) {
- Camera* cam = (Camera*)maincam_obj->data;
- if (re->r.mode & R_ORTHO) fdist = cam->ortho_scale*(mainCamLens/32.f);
- ostr << "\n\tdof_distance=\"" << cam->YF_dofdist << "\"";
- ostr << " aperture=\"" << cam->YF_aperture << "\"";
- string st = "on";
- if (cam->flag & CAM_YF_NO_QMC) st = "off";
- ostr << " use_qmc=\"" << st << "\"";
- // bokeh params
- st = "disk1";
- if (cam->YF_bkhtype==1)
- st = "disk2";
- else if (cam->YF_bkhtype==2)
- st = "triangle";
- else if (cam->YF_bkhtype==3)
- st = "square";
- else if (cam->YF_bkhtype==4)
- st = "pentagon";
- else if (cam->YF_bkhtype==5)
- st = "hexagon";
- else if (cam->YF_bkhtype==6)
- st = "ring";
- ostr << "\n\tbokeh_type=\"" << st << "\"";
- st = "uniform";
- if (cam->YF_bkhbias==1)
- st = "center";
- else if (cam->YF_bkhbias==2)
- st = "edge";
- ostr << " bokeh_bias=\"" << st << "\"";
- ostr << " bokeh_rotation=\"" << cam->YF_bkhrot << "\"";
- }
-
- ostr << " >\n";
- xmlfile << ostr.str();
-
- ostr.str("");
- ostr << "\t<from x=\"" << maincam_obj->obmat[3][0] << "\""
- << " y=\"" << maincam_obj->obmat[3][1] << "\""
- << " z=\"" << maincam_obj->obmat[3][2] << "\" />\n";
- ostr << "\t<to x=\"" << maincam_obj->obmat[3][0] - fdist * re->viewmat[0][2]
- << "\" y=\"" << maincam_obj->obmat[3][1] - fdist * re->viewmat[1][2]
- << "\" z=\"" << maincam_obj->obmat[3][2] - fdist * re->viewmat[2][2] << "\" />\n";
- ostr << "\t<up x=\"" << maincam_obj->obmat[3][0] + re->viewmat[0][1]
- << "\" y=\"" << maincam_obj->obmat[3][1] + re->viewmat[1][1]
- << "\" z=\"" << maincam_obj->obmat[3][2] + re->viewmat[2][1] << "\" />\n";
- xmlfile << ostr.str();
-
- xmlfile << "</camera>\n\n";
-}
-
-void yafrayFileRender_t::writeHemilight()
-{
- World *world = re->scene->world;
- bool fromAO = false;
- if (re->r.GIquality==6){
- // use Blender AO params is possible
- if (world==NULL) return;
- if ((world->mode & WO_AMB_OCC)==0) {
- // no AO, use default GIquality
- cout << "No ambient occlusion enabled\nUsing defaults of 25 samples & infinite distance instead" << endl;
- }
- else fromAO = true;
- }
- ostr.str("");
- if (re->r.GIcache) {
- ostr << "<light type=\"pathlight\" name=\"path_LT\" power=\"" << re->r.GIpower << "\" mode=\"occlusion\"";
- ostr << "\n\tcache=\"on\" use_QMC=\"on\" threshold=\"" << re->r.GIrefinement << "\" "
- << "cache_size=\"" << ((2.0/float(re->winx))*re->r.GIpixelspersample) << "\"";
- ostr << "\n\tshadow_threshold=\"" << (1.0-re->r.GIshadowquality) << "\" grid=\"82\" search=\"35\"";
- ostr << "\n\tignore_bumpnormals=\"" << (re->r.YF_nobump ? "on" : "off") << "\"";
- if (fromAO) {
- // for AO, with cache, using range of 32*1 to 32*16 seems good enough
- ostr << "\n\tsamples=\"" << 32*world->aosamp << "\" maxdistance=\"" << world->aodist << "\" >\n";
- }
- else {
- switch (re->r.GIquality)
- {
- case 1 : ostr << " samples=\"128\" >\n"; break;
- case 2 : ostr << " samples=\"256\" >\n"; break;
- case 3 : ostr << " samples=\"512\" >\n"; break;
- case 4 : ostr << " samples=\"1024\" >\n"; break;
- case 5 : ostr << " samples=\"2048\" >\n"; break;
- default: ostr << " samples=\"256\" >\n";
- }
- }
- }
- else {
- ostr << "<light type=\"hemilight\" name=\"hemi_LT\" power=\"" << re->r.GIpower << "\"";
- if (fromAO) {
- // use minimum of 4 samples for lowest sample setting, single sample way too noisy
- ostr << "\n\tsamples=\"" << 3 + world->aosamp*world->aosamp
- << "\" maxdistance=\"" << world->aodist
- << "\" use_QMC=\"" << ((world->aomode & WO_AORNDSMP) ? "off" : "on") << "\" >\n";
- }
- else {
- switch (re->r.GIquality)
- {
- case 1 :
- case 2 : ostr << " samples=\"16\" >\n"; break;
- case 3 : ostr << " samples=\"36\" >\n"; break;
- case 4 : ostr << " samples=\"64\" >\n"; break;
- case 5 : ostr << " samples=\"128\" >\n"; break;
- default: ostr << " samples=\"25\" >\n";
- }
- }
- }
- ostr << "</light>\n\n";
- xmlfile << ostr.str();
-}
-
-void yafrayFileRender_t::writePathlight()
-{
- ostr.str("");
- if (re->r.GIphotons)
- {
- ostr << "<light type=\"globalphotonlight\" name=\"gpm\" photons=\"" << re->r.GIphotoncount << "\"" << endl;
- ostr << "\tradius=\"" << re->r.GIphotonradius << "\" depth=\"" << ((re->r.GIdepth>2) ? (re->r.GIdepth-1) : 1)
- << "\" caus_depth=\"" << re->r.GIcausdepth << "\" search=\"" << re->r.GImixphotons << "\" >"<<endl;
- ostr << "</light>"<<endl;
- }
- ostr << "<light type=\"pathlight\" name=\"path_LT\" power=\"" << re->r.GIindirpower << "\"";
- ostr << " depth=\"" << ((re->r.GIphotons) ? 1 : re->r.GIdepth) << "\" caus_depth=\"" << re->r.GIcausdepth <<"\"\n";
- if (re->r.GIdirect && re->r.GIphotons) ostr << "direct=\"on\"" << endl;
- if (re->r.GIcache && !(re->r.GIdirect && re->r.GIphotons))
- {
- switch (re->r.GIquality)
- {
- case 1 : ostr << " samples=\"128\" \n"; break;
- case 2 : ostr << " samples=\"256\" \n"; break;
- case 3 : ostr << " samples=\"512\" \n"; break;
- case 4 : ostr << " samples=\"1024\" \n"; break;
- case 5 : ostr << " samples=\"2048\" \n"; break;
- default: ostr << " samples=\"512\" \n";
- }
- ostr << " cache=\"on\" use_QMC=\"on\" threshold=\"" << re->r.GIrefinement << "\"" << endl;
- ostr << "\tignore_bumpnormals=\"" << (re->r.YF_nobump ? "on" : "off") << "\"\n";
- float sbase = 2.0/float(re->winx);
- ostr << "\tcache_size=\"" << sbase*re->r.GIpixelspersample << "\" shadow_threshold=\"" <<
- 1.0-re->r.GIshadowquality << "\" grid=\"82\" search=\"35\" >\n";
- }
- else
- {
- switch (re->r.GIquality)
- {
- case 1 : ostr << " samples=\"16\" >\n"; break;
- case 2 : ostr << " samples=\"36\" >\n"; break;
- case 3 : ostr << " samples=\"64\" >\n"; break;
- case 4 : ostr << " samples=\"128\" >\n"; break;
- case 5 : ostr << " samples=\"256\" >\n"; break;
- default: ostr << " samples=\"25\" >\n";
- }
- }
- ostr << "</light>\n\n";
- xmlfile << ostr.str();
-}
-
-bool yafrayFileRender_t::writeWorld()
-{
- World *world = re->scene->world;
- if (re->r.GIquality!=0) {
- if (re->r.GImethod==1) {
- if (world==NULL) cout << "WARNING: need world background for skydome!\n";
- writeHemilight();
- }
- else if (re->r.GImethod==2) writePathlight();
- }
-
- if (world==NULL) return false;
-
- for (int i=0;i<MAX_MTEX;i++) {
- MTex* wtex = world->mtex[i];
- if (!wtex) continue;
- Image* wimg = wtex->tex->ima;
- // now always exports if image used as world texture (and 'Hori' mapping enabled)
- if ((wtex->tex->type==TEX_IMAGE) && (wimg!=NULL) && (wtex->mapto & WOMAP_HORIZ)) {
- string wt_path = wimg->name;
- adjustPath(wt_path);
- ostr.str("");
- ostr << "<background type=\"image\" name=\"world_background\" ";
- // exposure_adjust not restricted to integer range anymore
- ostr << "exposure_adjust=\"" << wtex->tex->bright-1.f << "\"";
- if (wtex->texco & TEXCO_ANGMAP)
- ostr << " mapping=\"probe\" >\n";
- else if (wtex->texco & TEXCO_H_SPHEREMAP) // in yafray full sphere
- ostr << " mapping=\"sphere\" >\n";
- else // assume 'tube' for anything else
- ostr << " mapping=\"tube\" >\n";
- ostr << "\t<filename value=\"" << wt_path << "\" />\n";
- ostr << "\t<interpolate value=\"" << ((wtex->tex->imaflag & TEX_INTERPOL) ? "bilinear" : "none") << "\" />\n";
- if (wtex->tex->filtersize>1.f) ostr << "\t<prefilter value=\"on\" />\n";
- ostr << "</background>\n\n";
- xmlfile << ostr.str();
- return true;
- }
- }
-
- ostr.str("");
- ostr << "<background type=\"constant\" name=\"world_background\" >\n";
- // if no GI used, the GIpower parameter is not always initialized, so in that case ignore it
- // (have to change method to init yafray vars in Blender)
- float bg_mult = (re->r.GImethod==0) ? 1 : re->r.GIpower;
- ostr << "\t<color r=\"" << (world->horr * bg_mult) <<
- "\" g=\"" << (world->horg * bg_mult) <<
- "\" b=\"" << (world->horb * bg_mult) << "\" />\n";
- ostr << "</background>\n\n";
- xmlfile << ostr.str();
-
- return true;
-}
-
-bool yafrayFileRender_t::executeYafray(const string &xmlpath)
-{
- ostr.str("");
- if (re->r.mode & R_BORDER) {
- ostr << command_path << "yafray -c " << re->r.threads
- << " -r " << (2.f*re->r.border.xmin - 1.f)
- << ":" << (2.f*re->r.border.xmax - 1.f)
- << ":" << (2.f*re->r.border.ymin - 1.f)
- << ":" << (2.f*re->r.border.ymax - 1.f)
- << " \"" << xmlpath << "\"";
- }
- else
- ostr << command_path << "yafray -c " << re->r.threads << " \"" << xmlpath << "\"";
-
- string command = ostr.str();
- cout << "COMMAND: " << command << endl;
-#ifndef WIN32
- sigset_t yaf,old;
- sigemptyset(&yaf);
- sigaddset(&yaf, SIGVTALRM);
- sigprocmask(SIG_BLOCK, &yaf, &old);
- int ret=system(command.c_str());
- sigprocmask(SIG_SETMASK, &old, NULL);
- if (WIFEXITED(ret))
- {
- if (WEXITSTATUS(ret)) cout<<"Executed -"<<command<<"-"<<endl;
- switch (WEXITSTATUS(ret))
- {
- case 0: cout << "Yafray completed successfully\n"; return true;
- case 127: cout << "Yafray not found\n"; return false;
- case 126: cout << "Yafray: permission denied\n"; return false;
- default: cout << "Yafray exited with errors\n"; return false;
- }
- }
- else if (WIFSIGNALED(ret))
- cout << "Yafray crashed\n";
- else
- cout << "Unknown error\n";
- return false;
-#else
- int ret=system(command.c_str());
- return ret==0;
-#endif
-
-}
diff --git a/source/blender/yafray/intern/export_File.h b/source/blender/yafray/intern/export_File.h
deleted file mode 100644
index 0eb1bfec1ed..00000000000
--- a/source/blender/yafray/intern/export_File.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef __EXPORT_FILE_H
-#define __EXPORT_FILE_H
-
-#include"yafray_Render.h"
-
-class yafrayFileRender_t : public yafrayRender_t
-{
- public:
- virtual ~yafrayFileRender_t() {}
- protected:
- std::string imgout;
- std::ofstream xmlfile;
- std::string xmlpath;
- std::ostringstream ostr;
-
- void displayImage();
- bool executeYafray(const std::string &xmlpath);
- virtual void writeTextures();
- virtual void writeShader(const std::string &shader_name, Material* matr, const std::string &facetexname="");
- virtual void writeMaterialsAndModulators();
- virtual void writeObject(Object* obj, ObjectRen *obr, const std::vector<VlakRen*> &VLR_list, const float obmat[4][4]);
- virtual void writeAllObjects();
- virtual void writeAreaLamp(LampRen* lamp, int num, float iview[4][4]);
- virtual void writeLamps();
- virtual void writeCamera();
- virtual void writeHemilight();
- virtual void writePathlight();
- virtual bool writeWorld();
- virtual bool writeRender();
- virtual bool initExport();
- virtual bool finishExport();
-};
-
-#endif
diff --git a/source/blender/yafray/intern/export_Plugin.cpp b/source/blender/yafray/intern/export_Plugin.cpp
deleted file mode 100644
index 9d537f18667..00000000000
--- a/source/blender/yafray/intern/export_Plugin.cpp
+++ /dev/null
@@ -1,1990 +0,0 @@
-#include "export_Plugin.h"
-
-#include <math.h>
-
-#include <cstring>
-
-using namespace std;
-
-
-#ifdef WIN32
-#define WIN32_SKIP_HKEY_PROTECTION
-#include "BLI_winstuff.h"
-
-#ifndef FILE_MAXDIR
-#define FILE_MAXDIR 160
-#endif
-
-#ifndef FILE_MAXFILE
-#define FILE_MAXFILE 80
-#endif
-
-
-static string find_path()
-{
- HKEY hkey;
- DWORD dwType, dwSize;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\YafRay Team\\YafRay",0,KEY_READ,&hkey)==ERROR_SUCCESS)
- {
- dwType = REG_EXPAND_SZ;
- dwSize = MAX_PATH;
- DWORD dwStat;
-
- char *pInstallDir=new char[MAX_PATH];
-
- dwStat=RegQueryValueEx(hkey, TEXT("InstallDir"),
- NULL, NULL,(LPBYTE)pInstallDir, &dwSize);
-
- if (dwStat == NO_ERROR)
- {
- string res=pInstallDir;
- delete [] pInstallDir;
- return res;
- }
- else
- cout << "Couldn't READ \'InstallDir\' value. Is yafray correctly installed?\n";
- delete [] pInstallDir;
-
- RegCloseKey(hkey);
- }
- else
- cout << "Couldn't FIND registry key for yafray, is it installed?\n";
-
- return string("");
-
-}
-
-static int createDir(char* name)
-{
- if (BLI_exists(name))
- return 2; //exists
- if (CreateDirectory((LPCTSTR)(name), NULL)) {
- cout << "Directory: " << name << " created\n";
- return 1; // created
- }
- else {
- cout << "Could not create directory: " << name << endl;
- return 0; // fail
- }
-}
-
-extern "C" { extern char bprogname[]; }
-
-// add drive character if not in path string, using blender executable location as reference
-static void addDrive(string &path)
-{
- size_t sp = path.find_first_of(":");
- if (sp==-1) {
- string blpath = bprogname;
- sp = blpath.find_first_of(":");
- if (sp!=-1) path = blpath.substr(0, sp+1) + path;
- }
-}
-
-#else
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <unistd.h>
-#endif
-
-static string YafrayPath()
-{
-#ifdef WIN32
- string path=find_path();
- return path;
-#else
- static const char *alternative[]=
- {
- "/usr/local/lib/",
-#ifdef __x86_64__
- "/usr/lib64/",
-#endif
- "/usr/lib/",
- NULL
- };
-
- for(int i=0;alternative[i]!=NULL;++i)
- {
- string fp = string(alternative[i]) + "libyafrayplugin.so";
- struct stat st;
- if (stat(fp.c_str(), &st)<0) continue;
- if (st.st_mode & S_IROTH) return fp;
- }
- return "";
-#endif
-}
-
-static string YafrayPluginPath()
-{
-#ifdef WIN32
- return find_path()+"\\plugins";
-#else
- static const char *alternative[]=
- {
- "/usr/local/lib/yafray",
-#ifdef __x86_64__
- "/usr/lib64/yafray",
-#endif
- "/usr/lib/yafray",
- NULL
- };
-
- for(int i=0;alternative[i]!=NULL;++i)
- {
- struct stat st;
- if (stat(alternative[i], &st)<0) continue;
- if (S_ISDIR(st.st_mode) && (st.st_mode & S_IXOTH)) return alternative[i];
- }
- return "";
-#endif
-}
-
-
-
-yafrayPluginRender_t::~yafrayPluginRender_t()
-{
- if (yafrayGate!=NULL) delete yafrayGate;
- if (handle!=NULL) PIL_dynlib_close(handle);
-#ifdef WIN32
- if (corehandle!=NULL) PIL_dynlib_close(corehandle);
-#endif
-}
-
-bool yafrayPluginRender_t::initExport()
-{
- // bug #1897: when forcing render without yafray present, handle can be valid,
- // but find_symbol might have failed, trying second time will crash.
- // So make sure plugin loaded correctly and only get handle once.
- if ((!plugin_loaded) || (handle==NULL))
- {
- string location = YafrayPath();
-#ifdef WIN32
- /* Win 32 loader cannot find needed libs in yafray dir, so we have to load them
- * by hand. This could be fixed using setdlldirectory function, but it is not
- * available in all win32 versions
- */
- corehandle = PIL_dynlib_open((char *)(location + "\\yafraycore.dll").c_str());
- if (corehandle==NULL)
- {
- char *err = PIL_dynlib_get_error_as_string(corehandle);
- if (err) cerr << "Error loading yafray plugin: " << err << endl;
- else cerr << "Error loading yafray plugin: Unknown." << endl;
- return false;
- }
- location += "\\yafrayplugin.dll";
-#endif
-
- if (handle==NULL) {
- handle = PIL_dynlib_open((char *)location.c_str());
- if (handle==NULL)
- {
- cerr << "Error loading yafray plugin: " << PIL_dynlib_get_error_as_string(handle) << endl;
- return false;
- }
- }
- yafray::yafrayConstructor *constructor;
- constructor = (yafray::yafrayConstructor *)PIL_dynlib_find_symbol(handle, (char*)YAFRAY_SYMBOL);
- if (constructor==NULL)
- {
- cerr << "Error loading yafray plugin: " << PIL_dynlib_get_error_as_string(handle) << endl;
- return false;
- }
- yafrayGate = constructor(re->r.threads, YafrayPluginPath());
-
- cout << "YafRay plugin loaded" << endl;
- plugin_loaded = true;
- }
-
- return true;
-}
-
-bool yafrayPluginRender_t::writeRender()
-{
- yafray::paramMap_t params;
- params["camera_name"]=yafray::parameter_t("MAINCAM");
- params["raydepth"]=yafray::parameter_t((float)re->r.YF_raydepth);
- params["gamma"]=yafray::parameter_t(re->r.YF_gamma);
- params["exposure"]=yafray::parameter_t(re->r.YF_exposure);
- if (re->r.YF_AA)
- {
- params["AA_passes"] = yafray::parameter_t((int)re->r.YF_AApasses);
- params["AA_minsamples"] = yafray::parameter_t(re->r.YF_AAsamples);
- params["AA_pixelwidth"] = yafray::parameter_t(re->r.YF_AApixelsize);
- params["AA_threshold"] = yafray::parameter_t(re->r.YF_AAthreshold);
- }
- else
- {
- // removed the default AA settings for midquality GI, better leave it to user
- if ((re->r.mode & R_OSA) && (re->r.osa))
- {
- params["AA_passes"] = yafray::parameter_t((re->r.osa & 3)==0 ? (re->r.osa >> 2) : 1);
- params["AA_minsamples"] = yafray::parameter_t((re->r.osa & 3)==0 ? 4 : re->r.osa);
- }
- else
- {
- params["AA_passes"] = yafray::parameter_t(0);
- params["AA_minsamples"] = yafray::parameter_t(1);
- }
- params["AA_pixelwidth"] = yafray::parameter_t(1.5);
- params["AA_threshold"] = yafray::parameter_t(0.05f);
- }
- if (re->r.mode & R_BORDER)
- {
- params["border_xmin"] = yafray::parameter_t(2.f*re->r.border.xmin - 1.f);
- params["border_xmax"] = yafray::parameter_t(2.f*re->r.border.xmax - 1.f);
- params["border_ymin"] = yafray::parameter_t(2.f*re->r.border.ymin - 1.f);
- params["border_ymax"] = yafray::parameter_t(2.f*re->r.border.ymax - 1.f);
- }
- if (hasworld) {
- World *world = re->scene->world;
- if (world->mode & WO_MIST) {
- // basic fog
- float fd = world->mistdist;
- if (fd>0) fd=1.f/fd; else fd=1;
- params["fog_density"] = yafray::parameter_t(fd);
- params["fog_color"] = yafray::parameter_t(yafray::color_t(world->horr, world->horg, world->horb));
- }
- params["background_name"] = yafray::parameter_t("world_background");
- }
- params["bias"] = yafray::parameter_t(re->r.YF_raybias);
- params["clamp_rgb"] = yafray::parameter_t((re->r.YF_clamprgb==0) ? "on" : "off");
- // lynx request
- params["threads"] = yafray::parameter_t((int)re->r.threads);
- blenderYafrayOutput_t output(re);
- yafrayGate->render(params, output);
- cout << "render finished" << endl;
- yafrayGate->clear();
- return true;
-}
-
-bool yafrayPluginRender_t::finishExport()
-{
- return true;
-}
-
-
-// displayImage() not for plugin, see putPixel() below
-
-#ifdef WIN32
-#define MAXPATHLEN MAX_PATH
-#else
-#include <sys/param.h>
-#endif
-static void adjustPath(string &path)
-{
- // if relative, expand to full path
- char cpath[MAXPATHLEN];
- strcpy(cpath, path.c_str());
- BLI_convertstringcode(cpath, G.sce);
- path = cpath;
-#ifdef WIN32
- // add drive char if not there
- addDrive(path);
-#endif
-}
-
-
-static string noise2string(short nbtype)
-{
- switch (nbtype) {
- case TEX_BLENDER:
- return "blender";
- case TEX_STDPERLIN:
- return "stdperlin";
- case TEX_VORONOI_F1:
- return "voronoi_f1";
- case TEX_VORONOI_F2:
- return "voronoi_f2";
- case TEX_VORONOI_F3:
- return "voronoi_f3";
- case TEX_VORONOI_F4:
- return "voronoi_f4";
- case TEX_VORONOI_F2F1:
- return "voronoi_f2f1";
- case TEX_VORONOI_CRACKLE:
- return "voronoi_crackle";
- case TEX_CELLNOISE:
- return "cellnoise";
- default:
- case TEX_NEWPERLIN:
- return "newperlin";
- }
-}
-
-void yafrayPluginRender_t::writeTextures()
-{
- // used to keep track of images already written
- // (to avoid duplicates if also in imagetex for material TexFace texture)
- set<Image*> dupimg;
-
- yafray::paramMap_t params;
- list<yafray::paramMap_t> lparams;
- for (map<string, MTex*>::const_iterator blendtex=used_textures.begin();
- blendtex!=used_textures.end();++blendtex)
- {
- lparams.clear();
- params.clear();
-
- MTex* mtex = blendtex->second;
- Tex* tex = mtex->tex;
- // name is image name instead of texture name when type is image (see TEX_IMAGE case below)
- // (done because of possible combinations of 'TexFace' images and regular image textures, to avoid duplicates)
- if (tex->type!=TEX_IMAGE) params["name"] = yafray::parameter_t(blendtex->first);
-
- float nsz = tex->noisesize;
- if (nsz!=0.f) nsz=1.f/nsz;
-
- // noisebasis type
- string ntype = noise2string(tex->noisebasis);
- string ts, hardnoise=(tex->noisetype==TEX_NOISESOFT) ? "off" : "on";
-
- switch (tex->type) {
- case TEX_STUCCI:
- // stucci is clouds as bump, only difference is an extra parameter to handle wall in/out
- // turbulence value is not used, so for large values will not match well
- case TEX_CLOUDS: {
- params["type"] = yafray::parameter_t("clouds");
- params["size"] = yafray::parameter_t(nsz);
- params["hard"] = yafray::parameter_t(hardnoise);
- if (tex->type==TEX_STUCCI) {
- if (tex->stype==1)
- ts = "positive";
- else if (tex->stype==2)
- ts = "negative";
- else ts = "none";
- params["bias"] = yafray::parameter_t(ts);
- params["depth"] = yafray::parameter_t(0); // for stucci always 0
- }
- else params["depth"] = yafray::parameter_t(tex->noisedepth);
- params["color_type"] = yafray::parameter_t(tex->stype);
- params["noise_type"] = yafray::parameter_t(ntype);
- break;
- }
- case TEX_WOOD:
- {
- params["type"] = yafray::parameter_t("wood");
- // blender does not use depth value for wood, always 0
- params["depth"] = yafray::parameter_t(0);
- float turb = (tex->stype<2) ? 0.0 : tex->turbul;
- params["turbulence"] = yafray::parameter_t(turb);
- params["size"] = yafray::parameter_t(nsz);
- params["hard"] = yafray::parameter_t(hardnoise);
- ts = (tex->stype & 1) ? "rings" : "bands"; //stype 1&3 ringtype
- params["wood_type"] = yafray::parameter_t(ts);
- params["noise_type"] = yafray::parameter_t(ntype);
- // shape parameter, for some reason noisebasis2 is used...
- ts = "sin";
- if (tex->noisebasis2==1) ts="saw"; else if (tex->noisebasis2==2) ts="tri";
- params["shape"] = yafray::parameter_t(ts);
- break;
- }
- case TEX_MARBLE:
- {
- params["type"] = yafray::parameter_t("marble");
- params["depth"] = yafray::parameter_t(tex->noisedepth);
- params["turbulence"] = yafray::parameter_t(tex->turbul);
- params["size"] = yafray::parameter_t(nsz);
- params["hard"] = yafray::parameter_t(hardnoise);
- params["sharpness"] = yafray::parameter_t((float)(1<<tex->stype));
- params["noise_type"] = yafray::parameter_t(ntype);
- ts = "sin";
- if (tex->noisebasis2==1) ts="saw"; else if (tex->noisebasis2==2) ts="tri";
- params["shape"] = yafray::parameter_t(ts);
- break;
- }
- case TEX_VORONOI:
- {
- params["type"] = yafray::parameter_t("voronoi");
- ts = "int";
- if (tex->vn_coltype==1)
- ts = "col1";
- else if (tex->vn_coltype==2)
- ts = "col2";
- else if (tex->vn_coltype==3)
- ts = "col3";
- params["color_type"] = yafray::parameter_t(ts);
- params["weight1"] = yafray::parameter_t(tex->vn_w1);
- params["weight2"] = yafray::parameter_t(tex->vn_w2);
- params["weight3"] = yafray::parameter_t(tex->vn_w3);
- params["weight4"] = yafray::parameter_t(tex->vn_w4);
- params["mk_exponent"] = yafray::parameter_t(tex->vn_mexp);
- params["intensity"] = yafray::parameter_t(tex->ns_outscale);
- params["size"] = yafray::parameter_t(nsz);
- ts = "actual";
- if (tex->vn_distm==TEX_DISTANCE_SQUARED)
- ts = "squared";
- else if (tex->vn_distm==TEX_MANHATTAN)
- ts = "manhattan";
- else if (tex->vn_distm==TEX_CHEBYCHEV)
- ts = "chebychev";
- else if (tex->vn_distm==TEX_MINKOVSKY_HALF)
- ts = "minkovsky_half";
- else if (tex->vn_distm==TEX_MINKOVSKY_FOUR)
- ts = "minkovsky_four";
- else if (tex->vn_distm==TEX_MINKOVSKY)
- ts = "minkovsky";
- params["distance_metric"] = yafray::parameter_t(ts);
- break;
- }
- case TEX_MUSGRAVE:
- {
- params["type"] = yafray::parameter_t("musgrave");
- switch (tex->stype) {
- case TEX_MFRACTAL:
- ts = "multifractal";
- break;
- case TEX_RIDGEDMF:
- ts = "ridgedmf";
- break;
- case TEX_HYBRIDMF:
- ts = "hybridmf";
- break;
- case TEX_HTERRAIN:
- ts = "heteroterrain";
- break;
- default:
- case TEX_FBM:
- ts = "fBm";
- }
- params["musgrave_type"] = yafray::parameter_t(ts);
- params["noise_type"] = yafray::parameter_t(ntype);
- params["H"] = yafray::parameter_t(tex->mg_H);
- params["lacunarity"] = yafray::parameter_t(tex->mg_lacunarity);
- params["octaves"] = yafray::parameter_t(tex->mg_octaves);
- if ((tex->stype==TEX_HTERRAIN) || (tex->stype==TEX_RIDGEDMF) || (tex->stype==TEX_HYBRIDMF)) {
- params["offset"] = yafray::parameter_t(tex->mg_offset);
- if ((tex->stype==TEX_RIDGEDMF) || (tex->stype==TEX_HYBRIDMF))
- params["gain"] = yafray::parameter_t(tex->mg_gain);
- }
- params["size"] = yafray::parameter_t(nsz);
- params["intensity"] = yafray::parameter_t(tex->ns_outscale);
- break;
- }
- case TEX_DISTNOISE:
- {
- params["type"] = yafray::parameter_t("distorted_noise");
- params["distort"] = yafray::parameter_t(tex->dist_amount);
- params["size"] = yafray::parameter_t(nsz);
- params["noise_type1"] = yafray::parameter_t(ntype);
- params["noise_type2"] = yafray::parameter_t(noise2string(tex->noisebasis2));
- break;
- }
- case TEX_BLEND:
- {
- params["type"] = yafray::parameter_t("gradient");
- switch (tex->stype) {
- case 1: ts="quadratic"; break;
- case 2: ts="cubic"; break;
- case 3: ts="diagonal"; break;
- case 4: ts="sphere"; break;
- case 5: ts="halo"; break;
- default:
- case 0: ts="linear"; break;
- }
- params["gradient_type"] = yafray::parameter_t(ts);
- if (tex->flag & TEX_FLIPBLEND) ts="on"; else ts="off";
- params["flip_xy"] = yafray::parameter_t(ts);
- break;
- }
- case TEX_NOISE:
- {
- params["type"] = yafray::parameter_t("random_noise");
- params["depth"] = yafray::parameter_t(tex->noisedepth);
- break;
- }
- case TEX_IMAGE:
- {
- Image* ima = tex->ima;
- if (ima) {
- // remember image to avoid duplicates later if also in imagetex
- // (formerly done by removing from imagetex, but need image/material link)
- dupimg.insert(ima);
- params["type"] = yafray::parameter_t("image");
- params["name"] = yafray::parameter_t(ima->id.name);
- string texpath = ima->name;
- adjustPath(texpath);
- params["filename"] = yafray::parameter_t(texpath);
- params["interpolate"] = yafray::parameter_t((tex->imaflag & TEX_INTERPOL) ? "bilinear" : "none");
- }
- break;
- }
- default:
- cout << "Unsupported texture type\n";
- }
- yafrayGate->addShader(params, lparams);
-
- // colorbands
- if (tex->flag & TEX_COLORBAND)
- {
- ColorBand* cb = tex->coba;
- if (cb)
- {
- lparams.clear();
- params.clear();
- params["type"] = yafray::parameter_t("colorband");
- params["name"] = yafray::parameter_t(blendtex->first + "_coba");
- params["input"] = yafray::parameter_t(blendtex->first);
- for (int i=0;i<cb->tot;i++)
- {
- yafray::paramMap_t mparams;
- mparams["value"] = yafray::parameter_t(cb->data[i].pos);
- mparams["color"] = yafray::parameter_t(yafray::colorA_t(cb->data[i].r,
- cb->data[i].g,
- cb->data[i].b,
- cb->data[i].a));
- lparams.push_back(mparams);
- }
- yafrayGate->addShader(params, lparams);
- }
- }
-
- }
-
- // If used, textures for the material 'TexFace' case
- if (!imagetex.empty()) {
- for (map<Image*, set<Material*> >::const_iterator imgtex=imagetex.begin();
- imgtex!=imagetex.end();++imgtex)
- {
- // skip if already written above
- if (dupimg.find(imgtex->first)==dupimg.end()) {
- lparams.clear();
- params.clear();
- params["name"] = yafray::parameter_t(imgtex->first->id.name);
- params["type"] = yafray::parameter_t("image");
- string texpath(imgtex->first->name);
- adjustPath(texpath);
- params["filename"] = yafray::parameter_t(texpath);
- yafrayGate->addShader(params, lparams);
- }
- }
- }
-
-}
-
-
-void yafrayPluginRender_t::writeShader(const string &shader_name, Material* matr, const string &facetexname)
-{
- yafray::paramMap_t params;
- list<yafray::paramMap_t> lparams;
-
- // if material has ramps, export colorbands first
- if (matr->mode & (MA_RAMP_COL|MA_RAMP_SPEC))
- {
- // both colorbands without input shader
- ColorBand* cb = matr->ramp_col;
- if ((matr->mode & MA_RAMP_COL) && (cb!=NULL))
- {
- params["type"] = yafray::parameter_t("colorband");
- params["name"] = yafray::parameter_t(shader_name+"_difframp");
- for (int i=0;i<cb->tot;i++) {
- yafray::paramMap_t mparams;
- mparams["value"] = yafray::parameter_t(cb->data[i].pos);
- mparams["color"] = yafray::parameter_t(yafray::colorA_t(cb->data[i].r, cb->data[i].g, cb->data[i].b, cb->data[i].a));
- lparams.push_back(mparams);
- }
- yafrayGate->addShader(params, lparams);
- }
- cb = matr->ramp_spec;
- if ((matr->mode & MA_RAMP_SPEC) && (cb!=NULL))
- {
- lparams.clear();
- params.clear();
- params["type"] = yafray::parameter_t("colorband");
- params["name"] = yafray::parameter_t(shader_name+"_specramp");
- for (int i=0;i<cb->tot;i++) {
- yafray::paramMap_t mparams;
- mparams["value"] = yafray::parameter_t(cb->data[i].pos);
- mparams["color"] = yafray::parameter_t(yafray::colorA_t(cb->data[i].r, cb->data[i].g, cb->data[i].b, cb->data[i].a));
- lparams.push_back(mparams);
- }
- yafrayGate->addShader(params, lparams);
- }
- lparams.clear();
- params.clear();
- }
-
- params["type"] = yafray::parameter_t("blendershader");
- params["name"] = yafray::parameter_t(shader_name);
- params["color"] = yafray::parameter_t(yafray::color_t(matr->r, matr->g, matr->b));
- float sr=matr->specr, sg=matr->specg, sb=matr->specb;
- if (matr->spec_shader==MA_SPEC_WARDISO) {
- // ........
- sr /= M_PI;
- sg /= M_PI;
- sb /= M_PI;
- }
- params["specular_color"] = yafray::parameter_t(yafray::color_t(sr, sg, sb));
- params["mirror_color"] = yafray::parameter_t(yafray::color_t(matr->mirr, matr->mirg, matr->mirb));
- params["diffuse_reflect"] = yafray::parameter_t(matr->ref);
- params["specular_amount"] = yafray::parameter_t(matr->spec);
- params["alpha"] = yafray::parameter_t(matr->alpha);
-
- // if no GI used, the GIpower parameter is not always initialized, so in that case ignore it
- float bg_mult = (re->r.GImethod==0) ? 1 : re->r.GIpower;
- params["emit"]=yafray::parameter_t(matr->emit*bg_mult);
-
- // reflection/refraction
- if ( (matr->mode & MA_RAYMIRROR) || (matr->mode & MA_RAYTRANSP) )
- params["IOR"] = yafray::parameter_t(matr->ang);
-
- if (matr->mode & MA_RAYMIRROR)
- {
- // Sofar yafray's min_refle parameter (which misleadingly actually controls fresnel reflection offset)
- // has been mapped to Blender's ray_mirror parameter.
- // This causes it be be misinterpreted and misused as a reflection amount control however.
- // Besides that, it also causes extra complications for the yafray Blendershader.
- // So added an actual amount of reflection parameter instead, and another
- // extra parameter 'frsOfs' to actually control fresnel offset (re-uses Blender fresnel_mir_i param).
- params["reflect"] = yafray::parameter_t("on");
- params["reflect_amount"] = yafray::parameter_t(matr->ray_mirror);
- float fo = 1.f-(matr->fresnel_mir_i-1.f)*0.25f; // blender param range [1,5], also here reversed (1 in Blender -> no fresnel)
- params["fresnel_offset"] = yafray::parameter_t(fo);
-
- // for backward compatibility, also add old 'reflected' parameter, copy of mirror_color
- params["reflected"] = yafray::parameter_t(yafray::color_t(matr->mirr, matr->mirg, matr->mirb));
- // same for 'min_refle' param. Instead of the ray_mirror parameter that was used before, since now
- // the parameter's function is taken over by the fresnel offset parameter, use that instead.
- params["min_refle"] = yafray::parameter_t(fo);
-
- }
-
- if (matr->mode & MA_RAYTRANSP)
- {
- params["refract"] = yafray::parameter_t("on");
- params["transmit_filter"] = yafray::parameter_t(matr->filter);
- // tir on by default
- params["tir"] = yafray::parameter_t("on");
-
- // transmit absorption color
- // to make things easier(?) for user it now specifies the actual color at 1 unit / YF_dscale of distance
- const float maxlog = -log(1e-38);
- float ar = (matr->YF_ar>0) ? -log(matr->YF_ar) : maxlog;
- float ag = (matr->YF_ag>0) ? -log(matr->YF_ag) : maxlog;
- float ab = (matr->YF_ab>0) ? -log(matr->YF_ab) : maxlog;
- float sc = matr->YF_dscale;
- if (sc!=0.f) sc=1.f/sc;
- params["absorption"] = yafray::parameter_t(yafray::color_t(ar*sc, ag*sc, ab*sc));
- // dispersion
- params["dispersion_power"] = yafray::parameter_t(matr->YF_dpwr);
- params["dispersion_samples"] = yafray::parameter_t(matr->YF_dsmp);
- params["dispersion_jitter"] = yafray::parameter_t(matr->YF_djit ? "on" : "off");
-
- // for backward compatibility, also add old 'transmitted' parameter, copy of 'color' * (1-alpha)
- float na = 1.f-matr->alpha;
- params["transmitted"] = yafray::parameter_t(yafray::color_t(matr->r*na, matr->g*na, matr->b*na));
- }
-
- string Mmode = "";
- if (matr->mode & MA_TRACEBLE) Mmode += "traceable";
- if (matr->mode & MA_SHADOW) Mmode += " shadow";
- if (matr->mode & MA_SHLESS) Mmode += " shadeless";
- if (matr->mode & MA_VERTEXCOL) Mmode += " vcol_light";
- if (matr->mode & MA_VERTEXCOLP) Mmode += " vcol_paint";
- if (matr->mode & MA_ZTRA) Mmode += " ztransp";
- if (matr->mode & MA_ONLYSHADOW) Mmode += " onlyshadow";
- if (Mmode!="") params["matmodes"] = yafray::parameter_t(Mmode);
-
- // diffuse & specular brdf, lambert/cooktorr defaults
- // diffuse
- if (matr->diff_shader==MA_DIFF_ORENNAYAR) {
- params["diffuse_brdf"] = yafray::parameter_t("oren_nayar");
- params["roughness"] = yafray::parameter_t(matr->roughness);
- }
- else if (matr->diff_shader==MA_DIFF_TOON) {
- params["diffuse_brdf"] = yafray::parameter_t("toon");
- params["toondiffuse_size"] = yafray::parameter_t(matr->param[0]);
- params["toondiffuse_smooth"] = yafray::parameter_t(matr->param[1]);
- }
- else if (matr->diff_shader==MA_DIFF_MINNAERT) {
- params["diffuse_brdf"] = yafray::parameter_t("minnaert");
- params["darkening"] = yafray::parameter_t(matr->darkness);
- }
- else params["diffuse_brdf"] = yafray::parameter_t("lambert");
- // specular
- if (matr->spec_shader==MA_SPEC_PHONG) {
- params["specular_brdf"] = yafray::parameter_t("phong");
- params["hard"] = yafray::parameter_t(matr->har);
- }
- else if (matr->spec_shader==MA_SPEC_BLINN) {
- params["specular_brdf"] = yafray::parameter_t("blinn");
- params["blinn_ior"] = yafray::parameter_t(matr->refrac);
- params["hard"] = yafray::parameter_t(matr->har);
- }
- else if (matr->spec_shader==MA_SPEC_TOON) {
- params["specular_brdf"] = yafray::parameter_t("toon");
- params["toonspecular_size"] = yafray::parameter_t(matr->param[2]);
- params["toonspecular_smooth"] = yafray::parameter_t(matr->param[3]);
- }
- else if (matr->spec_shader==MA_SPEC_WARDISO) {
- params["specular_brdf"] = yafray::parameter_t("ward");
- params["u_roughness"] = yafray::parameter_t(matr->rms);
- params["v_roughness"] = yafray::parameter_t(matr->rms);
- }
- else {
- params["specular_brdf"] = yafray::parameter_t("blender_cooktorr");
- params["hard"] = yafray::parameter_t(matr->har);
- }
-
- // ramps, if used
- if (matr->mode & (MA_RAMP_COL|MA_RAMP_SPEC))
- {
- const string rm_blend[9] = {"mix", "add", "mul", "sub", "screen", "divide", "difference", "darken", "lighten"};
- const string rm_mode[4] = {"shader", "energy", "normal", "result"};
- // diffuse
- if ((matr->mode & MA_RAMP_COL) && (matr->ramp_col!=NULL))
- {
- params["diffuse_ramp"] = yafray::parameter_t(shader_name+"_difframp");
- params["diffuse_ramp_mode"] = yafray::parameter_t(rm_mode[(int)matr->rampin_col]);
- params["diffuse_ramp_blend"] = yafray::parameter_t(rm_blend[(int)matr->rampblend_col]);
- params["diffuse_ramp_factor"] = yafray::parameter_t(matr->rampfac_col);
- }
- // specular
- if ((matr->mode & MA_RAMP_SPEC) && (matr->ramp_spec!=NULL)) {
- params["specular_ramp"] = yafray::parameter_t(shader_name+"_specramp");
- params["specular_ramp_mode"] = yafray::parameter_t(rm_mode[(int)matr->rampin_spec]);
- params["specular_ramp_blend"] = yafray::parameter_t(rm_blend[(int)matr->rampblend_spec]);
- params["specular_ramp_factor"] = yafray::parameter_t(matr->rampfac_spec);
- }
- }
-
- // modulators
- // first modulator is the texture of the face, if used (TexFace mode)
- if (facetexname.length()!=0) {
- yafray::paramMap_t mparams;
- mparams["input"] = yafray::parameter_t(facetexname);
- mparams["color"] = yafray::parameter_t(1);
- lparams.push_back(mparams);
- }
-
- for (int m2=0;m2<MAX_MTEX;m2++)
- {
- if (matr->septex & (1<<m2)) continue;// all active channels
- // ignore null mtex
- MTex* mtex = matr->mtex[m2];
- if (mtex==NULL) continue;
- // ignore null tex
- Tex* tex = mtex->tex;
- if (tex==NULL) continue;
-
- map<string, MTex*>::const_iterator mtexL = used_textures.find(string(tex->id.name));
- if (mtexL!=used_textures.end())
- {
- yafray::paramMap_t mparams;
- // when no facetex used, shader_name is created from original material name
- char temp[32];
- sprintf(temp,"_map%d", m2);
- if (facetexname.length()!=0)
- mparams["input"] = yafray::parameter_t(string(matr->id.name) + string(temp));
- else
- mparams["input"] = yafray::parameter_t(shader_name + temp);
-
- // blendtype, would have been nice if the order would have been the same as for ramps...
- const string blendtype[MTEX_NUM_BLENDTYPES] = {"mix", "mul", "add", "sub", "divide", "darken", "difference", "lighten", "screen", "hue", "sat", "val", "color"};
- mparams["mode"] = yafray::parameter_t(blendtype[(int)mtex->blendtype]);
-
- // texture color (for use with MUL and/or no_rgb etc..)
- mparams["texcol"]=yafray::parameter_t(yafray::color_t(mtex->r,mtex->g,mtex->b));
- // texture contrast, brightness & color adjustment
- mparams["filtercolor"]=yafray::parameter_t(yafray::color_t(tex->rfac,tex->gfac,tex->bfac));
- mparams["contrast"]=yafray::parameter_t(tex->contrast);
- mparams["brightness"]=yafray::parameter_t(tex->bright);
- // all texture flags now are switches, having the value 1 or -1 (negative option)
- // the negative option only used for the intensity modulation options.
-
- // material (diffuse) color, amount controlled by colfac (see below)
- if (mtex->mapto & MAP_COL)
- mparams["color"]=yafray::parameter_t(1.0);
- // bumpmapping
- if ((mtex->mapto & MAP_NORM) || (mtex->maptoneg & MAP_NORM))
- {
- // for yafray, bump factor is negated (unless tex is stucci, not affected by 'Neg')
- // scaled down quite a bit
- float nf = mtex->norfac;
- if (tex->type!=TEX_STUCCI) nf *= -1.f;
- if (mtex->maptoneg & MAP_NORM) nf *= -1.f;
- mparams["normal"] = yafray::parameter_t(nf/60.f);
- }
-
- // all blender texture modulation as switches, either 1 or -1 (negative state of button)
- // Csp, specular color modulation
- if (mtex->mapto & MAP_COLSPEC)
- mparams["colspec"] = yafray::parameter_t(1.0);
- // CMir, mirror color modulation
- if (mtex->mapto & MAP_COLMIR)
- mparams["colmir"] = yafray::parameter_t(1.0);
-
- // Ref, diffuse reflection amount modulation
- if ((mtex->mapto & MAP_REF) || (mtex->maptoneg & MAP_REF))
- {
- int t = 1;
- if (mtex->maptoneg & MAP_REF) t = -1;
- mparams["difref"] = yafray::parameter_t(t);
- }
-
- // Spec, specular amount mod
- if ((mtex->mapto & MAP_SPEC) || (mtex->maptoneg & MAP_SPEC))
- {
- int t = 1;
- if (mtex->maptoneg & MAP_SPEC) t = -1;
- mparams["specular"] = yafray::parameter_t(t);
- }
-
- // hardness modulation
- if ((mtex->mapto & MAP_HAR) || (mtex->maptoneg & MAP_HAR))
- {
- int t = 1;
- if (mtex->maptoneg & MAP_HAR) t = -1;
- mparams["hard"] = yafray::parameter_t(t);
- }
-
- // alpha modulation
- if ((mtex->mapto & MAP_ALPHA) || (mtex->maptoneg & MAP_ALPHA))
- {
- int t = 1;
- if (mtex->maptoneg & MAP_ALPHA) t = -1;
- mparams["alpha"] = yafray::parameter_t(t);
- }
-
- // emit modulation
- if ((mtex->mapto & MAP_EMIT) || (mtex->maptoneg & MAP_EMIT)) {
- int t = 1;
- if (mtex->maptoneg & MAP_EMIT) t = -1;
- mparams["emit"] = yafray::parameter_t(t);
- }
-
- // raymir modulation
- if ((mtex->mapto & MAP_RAYMIRR) || (mtex->maptoneg & MAP_RAYMIRR)) {
- int t = 1;
- if (mtex->maptoneg & MAP_RAYMIRR) t = -1;
- mparams["raymir"] = yafray::parameter_t(t);
- }
-
- // texture flag, combination of strings
- string ts;
- if (mtex->texflag & (MTEX_RGBTOINT | MTEX_STENCIL | MTEX_NEGATIVE)) {
- ts = "";
- if (mtex->texflag & MTEX_RGBTOINT) ts += "no_rgb ";
- if (mtex->texflag & MTEX_STENCIL) ts += "stencil ";
- if (mtex->texflag & MTEX_NEGATIVE) ts += "negative";
- mparams["texflag"]=yafray::parameter_t(ts);
- }
-
- // colfac, controls amount of color modulation
- mparams["colfac"]=yafray::parameter_t(mtex->colfac);
- // def_var
- mparams["def_var"]=yafray::parameter_t(mtex->def_var);
- //varfac
- mparams["varfac"]=yafray::parameter_t(mtex->varfac);
-
- if ((tex->imaflag & (TEX_CALCALPHA | TEX_USEALPHA)) || (tex->flag & TEX_NEGALPHA))
- {
- ts = "";
- if (tex->imaflag & TEX_CALCALPHA) ts += "calc_alpha ";
- if (tex->imaflag & TEX_USEALPHA) ts += "use_alpha ";
- if (tex->flag & TEX_NEGALPHA) ts += "neg_alpha";
- mparams["alpha_flag"] = yafray::parameter_t(ts);
- }
-
- // image as normalmap flag
- if (tex->imaflag & TEX_NORMALMAP) mparams["normalmap"] = yafray::parameter_t("on");
-
- lparams.push_back(mparams);
- }
- }
- yafrayGate->addShader(params, lparams);
-
-}
-
-// write all materials & modulators
-void yafrayPluginRender_t::writeMaterialsAndModulators()
-{
- // shaders/mappers for regular texture (or non-texture) mode
- // In case material has texface mode, and all faces have an image texture,
- // this shader will not be used, but still be written
- yafray::paramMap_t params;
- list<yafray::paramMap_t> lparams;
- for (map<string, Material*>::const_iterator blendmat=used_materials.begin();
- blendmat!=used_materials.end();++blendmat)
- {
- Material* matr = blendmat->second;
- // mapper(s)
- for (int m=0;m<MAX_MTEX;m++)
- {
- if (matr->septex & (1<<m)) continue;// all active channels
- // ignore null mtex
- MTex* mtex = matr->mtex[m];
- if (mtex==NULL) continue;
- // ignore null tex
- Tex* tex = mtex->tex;
- if (tex==NULL) continue;
-
- map<string, MTex*>::const_iterator mtexL = used_textures.find(string(tex->id.name));
- if (mtexL!=used_textures.end())
- {
- params.clear(); //!!!
- lparams.clear();
- char temp[32];
- sprintf(temp, "_map%d", m);
- params["type"] = yafray::parameter_t("blendermapper");
- params["name"] = yafray::parameter_t(blendmat->first + string(temp));
- if ((mtex->texco & TEXCO_OBJECT) || (mtex->texco & TEXCO_REFL) || (mtex->texco & TEXCO_NORM))
- {
- // For object, reflection & normal mapping, add the object matrix to the modulator,
- // as in LF script, use camera matrix if no object specified.
- // In this case this means the inverse of that matrix
- float texmat[4][4], itexmat[4][4];
- if ((mtex->texco & TEXCO_OBJECT) && (mtex->object))
- MTC_Mat4CpyMat4(texmat, mtex->object->obmat);
- else // also for refl. map
- MTC_Mat4CpyMat4(texmat, maincam_obj->obmat);
- MTC_Mat4Invert(itexmat, texmat);
-#define flp yafray::parameter_t
- params["m00"]=flp(itexmat[0][0]); params["m01"]=flp(itexmat[1][0]);
- params["m02"]=flp(itexmat[2][0]); params["m03"]=flp(itexmat[3][0]);
- params["m10"]=flp(itexmat[0][1]); params["m11"]=flp(itexmat[1][1]);
- params["m12"]=flp(itexmat[2][1]); params["m13"]=flp(itexmat[3][1]);
- params["m20"]=flp(itexmat[0][2]); params["m21"]=flp(itexmat[1][2]);
- params["m22"]=flp(itexmat[2][2]); params["m23"]=flp(itexmat[3][2]);
- params["m30"]=flp(itexmat[0][3]); params["m31"]=flp(itexmat[1][3]);
- params["m32"]=flp(itexmat[2][3]); params["m33"]=flp(itexmat[3][3]);
-#undef flp
- }
- // use image name instead of texname when texture is image
- if ((tex->type==TEX_IMAGE) && tex->ima)
- params["input"] = yafray::parameter_t(tex->ima->id.name);
- else if ((tex->flag & TEX_COLORBAND) & (tex->coba!=NULL))
- params["input"] = yafray::parameter_t(mtexL->first + "_coba");
- else
- params["input"] = yafray::parameter_t(mtexL->first);
-
- // texture size
- params["sizex"] = yafray::parameter_t(mtex->size[0]);
- params["sizey"] = yafray::parameter_t(mtex->size[1]);
- params["sizez"] = yafray::parameter_t(mtex->size[2]);
-
- // texture offset
- params["ofsx"] = yafray::parameter_t(mtex->ofs[0]);
- params["ofsy"] = yafray::parameter_t(mtex->ofs[1]);
- params["ofsz"] = yafray::parameter_t(mtex->ofs[2]);
-
- // texture coordinates, have to disable 'sticky' in Blender
- if (mtex->texco & TEXCO_UV)
- params["texco"] = yafray::parameter_t("uv");
- else if ((mtex->texco & TEXCO_GLOB) || (mtex->texco & TEXCO_OBJECT))
- // object mode is also set as global, but the object matrix
- // was specified above with <modulator..>
- params["texco"] = yafray::parameter_t("global");
- else if ((mtex->texco & TEXCO_ORCO) || (mtex->texco & TEXCO_STRAND))
- // orco flag now used for 'strand'-mapping as well, see mesh code
- params["texco"] = yafray::parameter_t("orco");
- else if (mtex->texco & TEXCO_WINDOW)
- params["texco"] = yafray::parameter_t("window");
- else if (mtex->texco & TEXCO_NORM)
- params["texco"] = yafray::parameter_t("normal");
- else if (mtex->texco & TEXCO_REFL)
- params["texco"] = yafray::parameter_t("reflect");
-
- // texture projection axes, both image & procedural
- string proj = "nxyz"; // 'n' for 'none'
- params["proj_x"] = yafray::parameter_t(string(1,proj[mtex->projx]));
- params["proj_y"] = yafray::parameter_t(string(1,proj[mtex->projy]));
- params["proj_z"] = yafray::parameter_t(string(1,proj[mtex->projz]));
-
- // texture mapping parameters only relevant to image type
- if (tex->type==TEX_IMAGE)
- {
- if (mtex->mapping==MTEX_FLAT)
- params["mapping"] = yafray::parameter_t("flat");
- else if (mtex->mapping==MTEX_CUBE)
- params["mapping"] = yafray::parameter_t("cube");
- else if (mtex->mapping==MTEX_TUBE)
- params["mapping"] = yafray::parameter_t("tube");
- else if (mtex->mapping==MTEX_SPHERE)
- params["mapping"] = yafray::parameter_t("sphere");
-
- // repeat
- params["xrepeat"] = yafray::parameter_t(tex->xrepeat);
- params["yrepeat"] = yafray::parameter_t(tex->yrepeat);
-
- // clipping
- if (tex->extend==TEX_EXTEND)
- params["clipping"] = yafray::parameter_t("extend");
- else if (tex->extend==TEX_CLIP)
- params["clipping"] = yafray::parameter_t("clip");
- else if (tex->extend==TEX_CLIPCUBE)
- params["clipping"] = yafray::parameter_t("clipcube");
- else if (tex->extend==TEX_CHECKER) {
- params["clipping"] = yafray::parameter_t("checker");
- string ts = "";
- if (tex->flag & TEX_CHECKER_ODD) ts += "odd";
- if (tex->flag & TEX_CHECKER_EVEN) ts += " even";
- params["checker_mode"] = yafray::parameter_t(ts);
- params["checker_dist"] = yafray::parameter_t(tex->checkerdist);
- }
- else
- params["clipping"] = yafray::parameter_t("repeat");
-
- // crop min/max
- params["cropmin_x"] = yafray::parameter_t(tex->cropxmin);
- params["cropmin_y"] = yafray::parameter_t(tex->cropymin);
- params["cropmax_x"] = yafray::parameter_t(tex->cropxmax);
- params["cropmax_y"] = yafray::parameter_t(tex->cropymax);
-
- // rot90 flag
- if (tex->imaflag & TEX_IMAROT)
- params["rot90"] = yafray::parameter_t("on");
- else
- params["rot90"] = yafray::parameter_t("off");
- }
- yafrayGate->addShader(params, lparams);
- }
- }
-
- // shader + modulators
- writeShader(blendmat->first, matr);
-
- }
-
- // write the mappers & shaders for the TexFace case
- if (!imagetex.empty()) {
- // Yafray doesn't have per-face-textures, only per-face-shaders,
- // so create as many mappers/shaders as the images used by the object
- params.clear();
- lparams.clear();
- int snum = 0;
- for (map<Image*, set<Material*> >::const_iterator imgtex=imagetex.begin();
- imgtex!=imagetex.end();++imgtex)
- {
-
- for (set<Material*>::const_iterator imgmat=imgtex->second.begin();
- imgmat!=imgtex->second.end();++imgmat)
- {
- Material* matr = *imgmat;
- // mapper
- params["type"] = yafray::parameter_t("blendermapper");
- char temp[32];
- sprintf(temp, "_ftmap%d", snum);
- params["name"] = yafray::parameter_t(string(matr->id.name) + string(temp));
- params["input"] = yafray::parameter_t(imgtex->first->id.name);
- // all yafray default settings, except for texco, so no need to set others
- params["texco"] = yafray::parameter_t("uv");
- yafrayGate->addShader(params, lparams);
-
- // shader, remember name, used later when writing per-face-shaders
- sprintf(temp, "_ftsha%d", snum);
- string shader_name = string(matr->id.name) + string(temp);
- imgtex_shader[string(matr->id.name) + string(imgtex->first->id.name)] = shader_name;
-
- sprintf(temp, "_ftmap%d", snum++);
- string facetexname = string(matr->id.name) + string(temp);
- writeShader(shader_name, matr, facetexname);
- }
-
- }
- }
-
-}
-
-void yafrayPluginRender_t::genUVcoords(vector<yafray::GFLOAT> &uvcoords, ObjectRen *obr, VlakRen *vlr, MTFace* uvc, bool comple)
-{
- if (uvc)
- {
- // tri uv split indices
- int ui1=0, ui2=1, ui3=2;
- if (vlr->flag & R_DIVIDE_24) {
- ui3++;
- if (vlr->flag & R_FACE_SPLIT) { ui1++; ui2++; }
- }
- else if (vlr->flag & R_FACE_SPLIT) { ui2++; ui3++; }
- if (comple) {
- ui1 = (ui1+2) & 3;
- ui2 = (ui2+2) & 3;
- ui3 = (ui3+2) & 3;
- }
- uvcoords.push_back(uvc->uv[ui1][0]); uvcoords.push_back(1-uvc->uv[ui1][1]);
- uvcoords.push_back(uvc->uv[ui2][0]); uvcoords.push_back(1-uvc->uv[ui2][1]);
- uvcoords.push_back(uvc->uv[ui3][0]); uvcoords.push_back(1-uvc->uv[ui3][1]);
- }
- else
- {
- uvcoords.push_back(0); uvcoords.push_back(0);
- uvcoords.push_back(0); uvcoords.push_back(0);
- uvcoords.push_back(0); uvcoords.push_back(0);
- }
-}
-
-void yafrayPluginRender_t::genVcol(vector<yafray::CFLOAT> &vcol, ObjectRen *obr, VlakRen *vlr, bool comple)
-{
- MCol *mcol= RE_vlakren_get_mcol(obr, vlr, obr->actmcol, NULL, 0);
-
- if (mcol)
- {
- // tri vcol split indices
- int ui1=0, ui2=1, ui3=2;
- if (vlr->flag & R_DIVIDE_24) {
- ui3++;
- if (vlr->flag & R_FACE_SPLIT) { ui1++; ui2++; }
- }
- else if (vlr->flag & R_FACE_SPLIT) { ui2++; ui3++; }
- if (comple) {
- ui1 = (ui1+2) & 3;
- ui2 = (ui2+2) & 3;
- ui3 = (ui3+2) & 3;
- }
- unsigned char* pt = reinterpret_cast<unsigned char*>(&mcol[ui1]);
- vcol.push_back((float)pt[3]/255.f); vcol.push_back((float)pt[2]/255.f); vcol.push_back((float)pt[1]/255.f);
- pt = reinterpret_cast<unsigned char*>(&mcol[ui2]);
- vcol.push_back((float)pt[3]/255.f); vcol.push_back((float)pt[2]/255.f); vcol.push_back((float)pt[1]/255.f);
- pt = reinterpret_cast<unsigned char*>(&mcol[ui3]);
- vcol.push_back((float)pt[3]/255.f); vcol.push_back((float)pt[2]/255.f); vcol.push_back((float)pt[1]/255.f);
- }
- else
- {
- vcol.push_back(0); vcol.push_back(0); vcol.push_back(0);
- vcol.push_back(0); vcol.push_back(0); vcol.push_back(0);
- vcol.push_back(0); vcol.push_back(0); vcol.push_back(0);
- }
-}
-
-void yafrayPluginRender_t::genFace(vector<int> &faces,vector<string> &shaders,vector<int> &faceshader,
- vector<yafray::GFLOAT> &uvcoords,vector<yafray::CFLOAT> &vcol,
- map<VertRen*, int> &vert_idx,ObjectRen *obr,VlakRen *vlr,
- int has_orco,bool has_uv)
-{
- Material* fmat = vlr->mat;
- bool EXPORT_VCOL = ((fmat->mode & (MA_VERTEXCOL|MA_VERTEXCOLP))!=0);
- string fmatname(fmat->id.name);
- // use name in imgtex_shader list if 'TexFace' enabled for this face material
- if (fmat->mode & MA_FACETEXTURE) {
- MTFace* tface = RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0);
- if (tface) {
- Image* fimg = (Image*)tface->tpage;
- if (fimg) fmatname = imgtex_shader[fmatname + string(fimg->id.name)];
- }
- }
- else if (fmatname.length()==0) fmatname = "blender_default";
- bool newmat=true;
- for(unsigned int i=0;i<shaders.size();++i)
- if(shaders[i]==fmatname)
- {
- newmat=false;
- faceshader.push_back(i);
- break;
- }
- if(newmat)
- {
- shaders.push_back(fmatname);
- faceshader.push_back(shaders.size()-1);
- }
-
- MTFace* uvc = RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0); // possible uvcoords (v upside down)
- int idx1, idx2, idx3;
-
- idx1 = vert_idx.find(vlr->v1)->second;
- idx2 = vert_idx.find(vlr->v2)->second;
- idx3 = vert_idx.find(vlr->v3)->second;
-
- // make sure the indices point to the vertices when orco coords exported
- if (has_orco) { idx1*=2; idx2*=2; idx3*=2; }
-
- faces.push_back(idx1); faces.push_back(idx2); faces.push_back(idx3);
-
- if(has_uv) genUVcoords(uvcoords, obr, vlr, uvc);
- if (EXPORT_VCOL) genVcol(vcol, obr, vlr);
-}
-
-void yafrayPluginRender_t::genCompleFace(vector<int> &faces,/*vector<string> &shaders,*/vector<int> &faceshader,
- vector<yafray::GFLOAT> &uvcoords,vector<yafray::CFLOAT> &vcol,
- map<VertRen*, int> &vert_idx,ObjectRen *obr,VlakRen *vlr,
- int has_orco,bool has_uv)
-{
- Material* fmat = vlr->mat;
- bool EXPORT_VCOL = ((fmat->mode & (MA_VERTEXCOL|MA_VERTEXCOLP))!=0);
-
- faceshader.push_back(faceshader.back());
- MTFace* uvc = RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0); // possible uvcoords (v upside down)
- int idx1, idx2, idx3;
- idx1 = vert_idx.find(vlr->v3)->second;
- idx2 = vert_idx.find(vlr->v4)->second;
- idx3 = vert_idx.find(vlr->v1)->second;
-
- // make sure the indices point to the vertices when orco coords exported
- if (has_orco) { idx1*=2; idx2*=2; idx3*=2; }
-
- faces.push_back(idx1); faces.push_back(idx2); faces.push_back(idx3);
-
- if (has_uv) genUVcoords(uvcoords, obr, vlr, uvc, true);
- if (EXPORT_VCOL) genVcol(vcol, obr, vlr, true);
-}
-
-void yafrayPluginRender_t::genVertices(vector<yafray::point3d_t> &verts, int &vidx,
- map<VertRen*, int> &vert_idx, ObjectRen *obr, VlakRen* vlr, int has_orco, Object* obj)
-{
- VertRen* ver;
- float tvec[3]; // for back2world transform
-
- // for deformed objects, object->imat is no longer valid,
- // so have to create inverse render matrix ourselves here
- float mat[4][4], imat[4][4];
- MTC_Mat4MulMat4(mat, obj->obmat, re->viewmat);
- MTC_Mat4Invert(imat, mat);
-
- if (vert_idx.find(vlr->v1)==vert_idx.end())
- {
- vert_idx[vlr->v1] = vidx++;
- ver = vlr->v1;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- verts.push_back(yafray::point3d_t(tvec[0], tvec[1], tvec[2]));
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1)
- verts.push_back(yafray::point3d_t(ver->accum));
- else if (has_orco==2)
- verts.push_back(yafray::point3d_t(ver->orco[0], ver->orco[1], ver->orco[2]));
- }
- if (vert_idx.find(vlr->v2)==vert_idx.end())
- {
- vert_idx[vlr->v2] = vidx++;
- ver = vlr->v2;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- verts.push_back(yafray::point3d_t(tvec[0], tvec[1], tvec[2]));
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1)
- verts.push_back(yafray::point3d_t(ver->accum));
- else if (has_orco==2)
- verts.push_back(yafray::point3d_t(ver->orco[0], ver->orco[1], ver->orco[2]));
- }
- if (vert_idx.find(vlr->v3)==vert_idx.end())
- {
- vert_idx[vlr->v3] = vidx++;
- ver = vlr->v3;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- verts.push_back(yafray::point3d_t(tvec[0], tvec[1], tvec[2]));
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1)
- verts.push_back(yafray::point3d_t(ver->accum));
- else if (has_orco==2)
- verts.push_back(yafray::point3d_t(ver->orco[0], ver->orco[1], ver->orco[2]));
- }
- if ((vlr->v4) && (vert_idx.find(vlr->v4)==vert_idx.end()))
- {
- vert_idx[vlr->v4] = vidx++;
- ver = vlr->v4;
- MTC_cp3Float(ver->co, tvec);
- MTC_Mat4MulVecfl(imat, tvec);
- verts.push_back(yafray::point3d_t(tvec[0], tvec[1], tvec[2]));
- // has_orco now an int, if 1 -> strand mapping, if 2 -> normal orco mapping
- if (has_orco==1)
- verts.push_back(yafray::point3d_t(ver->accum));
- else if (has_orco==2)
- verts.push_back(yafray::point3d_t(ver->orco[0], ver->orco[1], ver->orco[2]));
- }
-}
-
-void yafrayPluginRender_t::writeObject(Object* obj, ObjectRen *obr, const vector<VlakRen*> &VLR_list, const float obmat[4][4])
-{
- float mtr[4*4];
- mtr[0*4+0]=obmat[0][0]; mtr[0*4+1]=obmat[1][0]; mtr[0*4+2]=obmat[2][0]; mtr[0*4+3]=obmat[3][0];
- mtr[1*4+0]=obmat[0][1]; mtr[1*4+1]=obmat[1][1]; mtr[1*4+2]=obmat[2][1]; mtr[1*4+3]=obmat[3][1];
- mtr[2*4+0]=obmat[0][2]; mtr[2*4+1]=obmat[1][2]; mtr[2*4+2]=obmat[2][2]; mtr[2*4+3]=obmat[3][2];
- mtr[3*4+0]=obmat[0][3]; mtr[3*4+1]=obmat[1][3]; mtr[3*4+2]=obmat[2][3]; mtr[3*4+3]=obmat[3][3];
- yafrayGate->transformPush(mtr);
-
- VlakRen* face0 = VLR_list[0];
- Material* face0mat = face0->mat;
-
- bool castShadows = face0mat->mode & MA_TRACEBLE;
- float caus_IOR=1.0;
- yafray::color_t caus_tcolor(0.0, 0.0, 0.0), caus_rcolor(0.0, 0.0, 0.0);
- bool caus = (((face0->mat->mode & MA_RAYTRANSP) | (face0->mat->mode & MA_RAYMIRROR))!=0);
- if (caus) {
- caus_IOR = face0mat->ang;
- float tr = 1.0-face0mat->alpha;
- caus_tcolor.set(face0mat->r*tr, face0mat->g*tr, face0mat->b*tr);
- tr = face0mat->ray_mirror;
- caus_rcolor.set(face0mat->mirr*tr, face0mat->mirg*tr, face0mat->mirb*tr);
- }
-
- // Export orco coords test.
- // Previously was done by checking orco pointer, however this can be non-null but still not initialized.
- // Test the rendermaterial texco flag instead.
- // update2: bug #3193 it seems it has changed again with the introduction of static 'hair' particles,
- // now it uses the vert pointer again as an extra test to make sure there are orco coords available
- int has_orco = 0;
- if (face0mat->texco & TEXCO_STRAND)
- has_orco = 1;
- else
- has_orco = (((face0mat->texco & TEXCO_ORCO)!=0) && (face0->v1->orco!=NULL)) ? 2 : 0;
-
- bool no_auto = true; //in case non-mesh, or mesh has no autosmooth
- float sm_angle = 0.1f;
- if (obj->type==OB_MESH)
- {
- Mesh* mesh = (Mesh*)obj->data;
- if (mesh->flag & ME_AUTOSMOOTH) {
- sm_angle = mesh->smoothresh;
- no_auto = false;
- }
- }
- // this for non-mesh as well
- if (no_auto) {
- // no per face smooth flag in yafray, if AutoSmooth not used,
- // use smooth flag of the first face instead
- if (face0->flag & ME_SMOOTH) sm_angle=180;
- }
- vector<yafray::point3d_t> verts;
- vector<yafray::CFLOAT> vcol;
- // now all vertices
- map<VertRen*, int> vert_idx; // for removing duplicate verts and creating an index list
- int vidx = 0; // vertex index counter
- bool has_uv=false;
- for (vector<VlakRen*>::const_iterator fci=VLR_list.begin();
- fci!=VLR_list.end();++fci)
- {
- VlakRen* vlr = *fci;
- genVertices(verts, vidx, vert_idx, obr, vlr, has_orco, obj);
- if(RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0)) has_uv=true;
- }
- // all faces using the index list created above
- vector<int> faces;
- vector<string> shaders;
- vector<int> faceshader;
- vector<yafray::GFLOAT> uvcoords;
- for (vector<VlakRen*>::const_iterator fci2=VLR_list.begin();
- fci2!=VLR_list.end();++fci2)
- {
- VlakRen* vlr = *fci2;
- genFace(faces, shaders, faceshader, uvcoords, vcol, vert_idx, obr, vlr, has_orco, has_uv);
- if (vlr->v4)
- genCompleFace(faces, faceshader, uvcoords, vcol, vert_idx, obr, vlr, has_orco, has_uv);
- }
-
- // using the ObjectRen database, contruct a new name if object has a parent.
- // This is done to prevent name clashes (group/library link related)
- string obname(obj->id.name);
- // previous implementation, keep around, in case this is still useful
- //if (obj->id.flag & (LIB_EXTERN|LIB_INDIRECT))obname = "lib_" + obname;
- ObjectRen *obren;
- for (obren = static_cast<ObjectRen*>(re->objecttable.first);
- obren; obren=static_cast<ObjectRen*>(obren->next))
- {
- Object *db_ob = obren->ob, *db_par = obren->par;
- if (db_ob==obj)
- if ((db_ob!=NULL) && (db_par!=NULL)) {
- obname += "_" + string(db_par->id.name);
- break;
- }
- }
-
- yafrayGate->addObject_trimesh(obname, verts, faces, uvcoords, vcol,
- shaders, faceshader, sm_angle, castShadows, true, true, caus, has_orco,
- caus_rcolor, caus_tcolor, caus_IOR);
- yafrayGate->transformPop();
-}
-
-
-// write all objects
-void yafrayPluginRender_t::writeAllObjects()
-{
- // first all objects except dupliverts (and main instance object for dups)
- for (map<Object*, yafrayObjectRen >::const_iterator obi=all_objects.begin();
- obi!=all_objects.end(); ++obi)
- {
- // skip main duplivert object if in dupliMtx_list, written later
- Object* obj = obi->first;
- if (dupliMtx_list.find(string(obj->id.name))!=dupliMtx_list.end()) continue;
- writeObject(obj, obi->second.obr, obi->second.faces, obj->obmat);
- }
-
- // Now all duplivert objects (if any) as instances of main object
- // The original object has been included in the VlakRen renderlist above (see convertBlenderScene.c)
- // but is written here which all other duplis are instances of.
- float obmat[4][4], cmat[4][4], imat[4][4], nmat[4][4];
- for (map<string, vector<float> >::const_iterator dupMtx=dupliMtx_list.begin();
- dupMtx!=dupliMtx_list.end();++dupMtx) {
-
- // original inverse matrix, not actual matrix of object, but first duplivert.
- for (int i=0;i<4;i++)
- for (int j=0;j<4;j++)
- obmat[i][j] = dupMtx->second[(i<<2)+j];
- MTC_Mat4Invert(imat, obmat);
-
- // first object written as normal (but with transform of first duplivert)
- Object* obj = dup_srcob[dupMtx->first];
- writeObject(obj, all_objects[obj].obr, all_objects[obj].faces, obmat);
-
- // all others instances of first
- for (unsigned int curmtx=16;curmtx<dupMtx->second.size();curmtx+=16)
- { // number of 4x4 matrices
- // new mtx
- for (int i=0;i<4;i++)
- for (int j=0;j<4;j++)
- nmat[i][j] = dupMtx->second[curmtx+(i<<2)+j];
-
- MTC_Mat4MulMat4(cmat, imat, nmat); // transform with respect to original = inverse_original * new
-
- float mtr[4*4];
- mtr[0*4+0]=cmat[0][0]; mtr[0*4+1]=cmat[1][0]; mtr[0*4+2]=cmat[2][0]; mtr[0*4+3]=cmat[3][0];
- mtr[1*4+0]=cmat[0][1]; mtr[1*4+1]=cmat[1][1]; mtr[1*4+2]=cmat[2][1]; mtr[1*4+3]=cmat[3][1];
- mtr[2*4+0]=cmat[0][2]; mtr[2*4+1]=cmat[1][2]; mtr[2*4+2]=cmat[2][2]; mtr[2*4+3]=cmat[3][2];
- mtr[3*4+0]=cmat[0][3]; mtr[3*4+1]=cmat[1][3]; mtr[3*4+2]=cmat[2][3]; mtr[3*4+3]=cmat[3][3];
- yafrayGate->transformPush(mtr);
-
- // new name from original
- string name=(obj->id.name);
- char temp[16];
- sprintf(temp,"_dup%d",(curmtx>>4));
- name+=temp;
- yafrayGate->addObject_reference(name,obj->id.name);
- yafrayGate->transformPop();
- }
-
- }
-}
-
-void yafrayPluginRender_t::writeAreaLamp(LampRen* lamp, int num, float iview[4][4])
-{
- yafray::paramMap_t params;
-
- if (lamp->area_shape!=LA_AREA_SQUARE) return;
- float *a=lamp->area[0], *b=lamp->area[1], *c=lamp->area[2], *d=lamp->area[3];
- float power=lamp->energy;
-
- string md = "off";
- // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
- if ((re->r.GImethod==2) && (re->r.GIphotons)) { md="on"; power*=re->r.GIpower; }
- params["type"]=yafray::parameter_t("arealight");
- char temp[16];
- sprintf(temp,"LAMP%d",num+1);
- params["name"]=yafray::parameter_t(temp);
- params["dummy"]=yafray::parameter_t(md);
- params["power"]=yafray::parameter_t(power);
- // samples not used for GI with photons, can still be exported, is ignored
- int psm=0, sm = lamp->ray_totsamp;
- if (sm>=25) psm = sm/5;
- params["samples"]=yafray::parameter_t(sm);
- params["psamples"]=yafray::parameter_t(psm);
-
- // transform area lamp coords back to world
- float lpco[4][3];
- MTC_cp3Float(a, lpco[0]);
- MTC_Mat4MulVecfl(iview, lpco[0]);
- MTC_cp3Float(b, lpco[1]);
- MTC_Mat4MulVecfl(iview, lpco[1]);
- MTC_cp3Float(c, lpco[2]);
- MTC_Mat4MulVecfl(iview, lpco[2]);
- MTC_cp3Float(d, lpco[3]);
- MTC_Mat4MulVecfl(iview, lpco[3]);
- params["a"] = yafray::parameter_t(yafray::point3d_t(lpco[0][0], lpco[0][1], lpco[0][2]));
- params["b"] = yafray::parameter_t(yafray::point3d_t(lpco[1][0], lpco[1][1], lpco[1][2]));
- params["c"] = yafray::parameter_t(yafray::point3d_t(lpco[2][0], lpco[2][1], lpco[2][2]));
- params["d"] = yafray::parameter_t(yafray::point3d_t(lpco[3][0], lpco[3][1], lpco[3][2]));
-
- params["color"]=yafray::parameter_t(yafray::color_t(lamp->r,lamp->g,lamp->b));
- yafrayGate->addLight(params);
-}
-
-void yafrayPluginRender_t::writeLamps()
-{
- GroupObject *go;
- int i=0;
-
- // inver viewmatrix needed for back2world transform
- float iview[4][4];
- // re->viewinv != inv.re->viewmat because of possible ortho mode (see convertBlenderScene.c)
- // have to invert it here
- MTC_Mat4Invert(iview, re->viewmat);
-
- // all lamps
- for(go=(GroupObject *)re->lights.first; go; go= go->next, i++)
- {
- LampRen* lamp = (LampRen *)go->lampren;
-
- yafray::paramMap_t params;
- string type="";
-
- if (lamp->type==LA_AREA) { writeAreaLamp(lamp, i, iview); continue; }
-
- // TODO: add decay setting in yafray
- bool is_softL=false, is_sphereL=false;
- if (lamp->type==LA_LOCAL) {
- if (lamp->mode & LA_YF_SOFT) {
- // shadowmapped omnidirectional light
- params["type"] = yafray::parameter_t("softlight");
- is_softL = true;
- }
- else if ((lamp->mode & LA_SHAD_RAY) && (lamp->YF_ltradius>0.0)) {
- // area sphere, only when ray shadows enabled and radius>0.0
- params["type"] = yafray::parameter_t("spherelight");
- is_sphereL = true;
- }
- else params["type"] = yafray::parameter_t("pointlight");
- params["glow_intensity"] = yafray::parameter_t(lamp->YF_glowint);
- params["glow_offset"] = yafray::parameter_t(lamp->YF_glowofs);
- params["glow_type"] = yafray::parameter_t(lamp->YF_glowtype);
- }
- else if (lamp->type==LA_SPOT)
- params["type"] = yafray::parameter_t("spotlight");
- else if ((lamp->type==LA_SUN) || (lamp->type==LA_HEMI)) // hemi exported as sun
- params["type"] = yafray::parameter_t("sunlight");
- else if (lamp->type==LA_YF_PHOTON)
- params["type"] = yafray::parameter_t("photonlight");
- else {
- // possibly unknown type, ignore
- cout << "Unknown Blender lamp type: " << lamp->type << endl;
- continue;
- }
-
- //no name available here, create one
- char temp[16];
- sprintf(temp,"LAMP%d",i+1);
- params["name"] = yafray::parameter_t(temp);
-
- // color already premultiplied by energy, so only need distance here
- float pwr = 1; // default for sun/hemi, distance irrelevant
- if ((lamp->type!=LA_SUN) && (lamp->type!=LA_HEMI)) {
- if (lamp->mode & LA_SPHERE) {
- // best approx. as used in LFexport script (LF d.f.m. 4pi?)
- pwr = lamp->dist*(lamp->dist+1)*(0.25/M_PI);
- //decay = 2;
- }
- else {
- pwr = lamp->dist;
- //decay = 1;
- }
- }
-
- if (is_sphereL) {
- // 'dummy' mode for spherelight when used with gpm
- string md = "off";
- // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
- if ((re->r.GImethod==2) && (re->r.GIphotons)) { md="on"; pwr*=re->r.GIpower; }
- params["power"] = yafray::parameter_t(pwr);
- params["dummy"] = yafray::parameter_t(md);
- }
- else params["power"] = yafray::parameter_t(pwr);
-
- // cast_shadows flag not used with softlight, spherelight or photonlight
- if ((!is_softL) && (!is_sphereL) && (lamp->type!=LA_YF_PHOTON)) {
- string lpmode="off";
- // Blender hemilights exported as sunlights which might have shadow flag set
- // should have cast_shadows set to off (reported by varuag)
- if (lamp->type!=LA_HEMI) {
- if (re->r.mode & R_SHADOW) {
- // old bug was here since the yafray lamp settings panel was added,
- // blender spotlight shadbuf flag should be ignored, since it is not in the panel anymore
- if (lamp->mode & LA_SHAD_RAY) lpmode="on";
- }
- }
- params["cast_shadows"] = yafray::parameter_t(lpmode);
- }
-
- // spot specific stuff
- bool has_halo = ((lamp->type==LA_SPOT) && (lamp->mode & LA_HALO) && (lamp->haint>0.0));
- if (lamp->type==LA_SPOT) {
- // conversion already changed spotsize to cosine of half angle
- float ld = 1-lamp->spotsi; //convert back to blender slider setting
- if (ld!=0) ld = 1.f/ld;
- params["size"] = yafray::parameter_t(acos(lamp->spotsi)*180.0/M_PI);
- params["blend"] = yafray::parameter_t(lamp->spotbl*ld);
- params["beam_falloff"] = yafray::parameter_t(2.0);
- // halo params
- if (has_halo) {
- params["halo"] = yafray::parameter_t("on");
- params["res"] = yafray::parameter_t(lamp->YF_bufsize);
- int hsmp = ((12-lamp->shadhalostep)*16)/12;
- hsmp = (hsmp+1)*16; // makes range (16, 272) for halostep(12, 0), good enough?
- // halo 'samples' now 'stepsize'
- // convert from old integer samples value to some reasonable stepsize
- params["stepsize"] = yafray::parameter_t(1.0/sqrt((float)hsmp));
- params["shadow_samples"] = yafray::parameter_t(lamp->samp*lamp->samp);
- params["halo_blur"] = yafray::parameter_t(0.0);
- params["shadow_blur"] = yafray::parameter_t(lamp->soft*0.01f);
- params["fog_density"] = yafray::parameter_t(lamp->haint*0.2f);
- }
- }
- else if (is_softL) {
- // softlight
- params["res"] = yafray::parameter_t(lamp->YF_bufsize);
- params["radius"] = yafray::parameter_t(lamp->soft);
- params["bias"] = yafray::parameter_t(lamp->bias);
- }
- else if (is_sphereL) {
- // spherelight
- int psm=0, sm = lamp->ray_samp*lamp->ray_samp;
- if (sm>=25) psm = sm/5;
- params["radius"] = yafray::parameter_t(lamp->YF_ltradius);
- params["samples"] = yafray::parameter_t(sm);
- params["psamples"] = yafray::parameter_t(psm);
- params["qmc_method"] = yafray::parameter_t(1);
- }
- else if (lamp->type==LA_YF_PHOTON) {
- string qmc="off";
- if (lamp->YF_useqmc) qmc="on";
- params["photons"] = yafray::parameter_t(lamp->YF_numphotons);
- params["search"] = yafray::parameter_t(lamp->YF_numsearch);
- params["depth"] = yafray::parameter_t(lamp->YF_phdepth);
- params["use_QMC"] = yafray::parameter_t(qmc);
- params["angle"] = yafray::parameter_t(acos(lamp->spotsi)*180.0/M_PI);
- float cl = lamp->YF_causticblur/sqrt((float)lamp->YF_numsearch);
- params["fixedradius"] = yafray::parameter_t(lamp->YF_causticblur);
- params["cluster"] = yafray::parameter_t(cl);
- }
-
- // transform lamp co & vec back to world
- float lpco[3], lpvec[3];
- MTC_cp3Float(lamp->co, lpco);
- MTC_Mat4MulVecfl(iview, lpco);
- MTC_cp3Float(lamp->vec, lpvec);
- MTC_Mat4Mul3Vecfl(iview, lpvec);
-
- // position, (==-blendir for sun/hemi)
- if ((lamp->type==LA_SUN) || (lamp->type==LA_HEMI))
- params["from"] = yafray::parameter_t(yafray::point3d_t(-lpvec[0], -lpvec[1], -lpvec[2]));
- else
- params["from"] = yafray::parameter_t(yafray::point3d_t(lpco[0], lpco[1], lpco[2]));
- // 'to' for spot/photonlight, already calculated by Blender
- if ((lamp->type==LA_SPOT) || (lamp->type==LA_YF_PHOTON)) {
- params["to"] = yafray::parameter_t(yafray::point3d_t(lpco[0] + lpvec[0],
- lpco[1] + lpvec[1],
- lpco[2] + lpvec[2]));
- if (has_halo) params["fog"] = yafray::parameter_t(yafray::color_t(1.0, 1.0, 1.0));
- }
-
- // color
- // rgb in LampRen is premultiplied by energy, power is compensated for that above
- params["color"] = yafray::parameter_t(yafray::color_t(lamp->r, lamp->g, lamp->b));
- yafrayGate->addLight(params);
- }
-}
-
-// write main camera
-void yafrayPluginRender_t::writeCamera()
-{
- yafray::paramMap_t params;
- params["name"]=yafray::parameter_t("MAINCAM");
- if (re->r.mode & R_ORTHO)
- params["type"] = yafray::parameter_t("ortho");
- else
- params["type"] = yafray::parameter_t("perspective");
-
- params["resx"] = yafray::parameter_t(re->winx);
- params["resy"] = yafray::parameter_t(re->winy);
-
- float f_aspect = 1;
- if ((re->winx * re->r.xasp) <= (re->winy * re->r.yasp))
- f_aspect = float(re->winx * re->r.xasp) / float(re->winy * re->r.yasp);
- params["focal"] = yafray::parameter_t(mainCamLens/(f_aspect*32.f));
- // bug #4532, when field rendering is enabled, ycor is doubled
- if (re->r.mode & R_FIELDS)
- params["aspect_ratio"] = yafray::parameter_t(re->ycor * 0.5f);
- else
- params["aspect_ratio"] = yafray::parameter_t(re->ycor);
-
- // dof params, only valid for real camera
- float fdist = 1; // only changes for ortho
- if (maincam_obj->type==OB_CAMERA) {
- Camera* cam = (Camera*)maincam_obj->data;
- if (re->r.mode & R_ORTHO) fdist = cam->ortho_scale*(mainCamLens/32.f);
- params["dof_distance"] = yafray::parameter_t(cam->YF_dofdist);
- params["aperture"] = yafray::parameter_t(cam->YF_aperture);
- if (cam->flag & CAM_YF_NO_QMC)
- params["use_qmc"] = yafray::parameter_t("off");
- else
- params["use_qmc"] = yafray::parameter_t("on");
- // bokeh params
- string st = "disk1";
- if (cam->YF_bkhtype==1)
- st = "disk2";
- else if (cam->YF_bkhtype==2)
- st = "triangle";
- else if (cam->YF_bkhtype==3)
- st = "square";
- else if (cam->YF_bkhtype==4)
- st = "pentagon";
- else if (cam->YF_bkhtype==5)
- st = "hexagon";
- else if (cam->YF_bkhtype==6)
- st = "ring";
- params["bokeh_type"] = yafray::parameter_t(st);
- st = "uniform";
- if (cam->YF_bkhbias==1)
- st = "center";
- else if (cam->YF_bkhbias==2)
- st = "edge";
- params["bokeh_bias"] = yafray::parameter_t(st);
- params["bokeh_rotation"] = yafray::parameter_t(cam->YF_bkhrot);
- }
-
- params["from"]=yafray::parameter_t(
- yafray::point3d_t(maincam_obj->obmat[3][0], maincam_obj->obmat[3][1], maincam_obj->obmat[3][2]));
- params["to"]=yafray::parameter_t(
- yafray::point3d_t(maincam_obj->obmat[3][0] - fdist * re->viewmat[0][2],
- maincam_obj->obmat[3][1] - fdist * re->viewmat[1][2],
- maincam_obj->obmat[3][2] - fdist * re->viewmat[2][2]));
- params["up"]=yafray::parameter_t(
- yafray::point3d_t(maincam_obj->obmat[3][0] + re->viewmat[0][1],
- maincam_obj->obmat[3][1] + re->viewmat[1][1],
- maincam_obj->obmat[3][2] + re->viewmat[2][1]));
-
- yafrayGate->addCamera(params);
-}
-
-void yafrayPluginRender_t::writeHemilight()
-{
- yafray::paramMap_t params;
- World *world = re->scene->world;
- bool fromAO = false;
- if (re->r.GIquality==6){
- // use Blender AO params is possible
- if (world==NULL) return;
- if ((world->mode & WO_AMB_OCC)==0) {
- // no AO, use default GIquality
- cout << "[Warning]: Can't use AO parameters\nNo ambient occlusion enabled, using default values instead" << endl;
- }
- else fromAO = true;
- }
- if (re->r.GIcache) {
- params["type"] = yafray::parameter_t("pathlight");
- params["name"] = yafray::parameter_t("path_LT");
- params["power"] = yafray::parameter_t(re->r.GIpower);
- params["mode"] = yafray::parameter_t("occlusion");
- params["ignore_bumpnormals"] = yafray::parameter_t(re->r.YF_nobump ? "on" : "off");
- if (fromAO) {
- // for AO, with cache, using range of 32*1 to 32*16 seems good enough
- params["samples"] = yafray::parameter_t(32*world->aosamp);
- params["maxdistance"] = yafray::parameter_t(world->aodist);
- }
- else {
- switch (re->r.GIquality)
- {
- case 1 : params["samples"] = yafray::parameter_t(128); break;
- case 2 : params["samples"] = yafray::parameter_t(256); break;
- case 3 : params["samples"] = yafray::parameter_t(512); break;
- case 4 : params["samples"] = yafray::parameter_t(1024); break;
- case 5 : params["samples"] = yafray::parameter_t(2048); break;
- default: params["samples"] = yafray::parameter_t(256);
- }
- }
- params["cache"] = yafray::parameter_t("on");
- params["use_QMC"] = yafray::parameter_t("on");
- params["threshold"] = yafray::parameter_t(re->r.GIrefinement);
- params["cache_size"] = yafray::parameter_t((2.0/float(re->winx))*re->r.GIpixelspersample);
- params["shadow_threshold"] = yafray::parameter_t(1.0 - re->r.GIshadowquality);
- params["grid"] = yafray::parameter_t(82);
- params["search"] = yafray::parameter_t(35);
- }
- else {
- params["type"] = yafray::parameter_t("hemilight");
- params["name"] = yafray::parameter_t("hemi_LT");
- params["power"] = yafray::parameter_t(re->r.GIpower);
- if (fromAO) {
- // use minimum of 4 samples for lowest sample setting, single sample way too noisy
- params["samples"] = yafray::parameter_t(3 + world->aosamp*world->aosamp);
- params["maxdistance"] = yafray::parameter_t(world->aodist);
- params["use_QMC"] = yafray::parameter_t((world->aomode & WO_AORNDSMP) ? "off" : "on");
- }
- else {
- switch (re->r.GIquality)
- {
- case 1 :
- case 2 : params["samples"]=yafray::parameter_t(16); break;
- case 3 : params["samples"]=yafray::parameter_t(36); break;
- case 4 : params["samples"]=yafray::parameter_t(64); break;
- case 5 : params["samples"]=yafray::parameter_t(128); break;
- default: params["samples"]=yafray::parameter_t(25);
- }
- }
- }
- yafrayGate->addLight(params);
-}
-
-void yafrayPluginRender_t::writePathlight()
-{
- if (re->r.GIphotons)
- {
- yafray::paramMap_t params;
- params["type"] = yafray::parameter_t("globalphotonlight");
- params["name"] = yafray::parameter_t("gpm");
- params["photons"] = yafray::parameter_t(re->r.GIphotoncount);
- params["radius"] = yafray::parameter_t(re->r.GIphotonradius);
- params["depth"] = yafray::parameter_t(((re->r.GIdepth>2) ? (re->r.GIdepth-1) : 1));
- params["caus_depth"] = yafray::parameter_t(re->r.GIcausdepth);
- params["search"] = yafray::parameter_t(re->r.GImixphotons);
- yafrayGate->addLight(params);
- }
- yafray::paramMap_t params;
- params["type"] = yafray::parameter_t("pathlight");
- params["name"] = yafray::parameter_t("path_LT");
- params["power"] = yafray::parameter_t(re->r.GIindirpower);
- params["depth"] = yafray::parameter_t(((re->r.GIphotons) ? 1 : re->r.GIdepth));
- params["caus_depth"] = yafray::parameter_t(re->r.GIcausdepth);
- if (re->r.GIdirect && re->r.GIphotons) params["direct"] = yafray::parameter_t("on");
- if (re->r.GIcache && !(re->r.GIdirect && re->r.GIphotons))
- {
- switch (re->r.GIquality)
- {
- case 1 : params["samples"] = yafray::parameter_t(128); break;
- case 2 : params["samples"] = yafray::parameter_t(256); break;
- case 3 : params["samples"] = yafray::parameter_t(512); break;
- case 4 : params["samples"] = yafray::parameter_t(1024); break;
- case 5 : params["samples"] = yafray::parameter_t(2048); break;
- default: params["samples"] = yafray::parameter_t(256);
- }
- params["cache"] = yafray::parameter_t("on");
- params["use_QMC"] = yafray::parameter_t("on");
- params["threshold"] = yafray::parameter_t(re->r.GIrefinement);
- params["cache_size"] = yafray::parameter_t((2.0/float(re->recty))*re->r.GIpixelspersample);
- params["shadow_threshold"] = yafray::parameter_t(1.0 - re->r.GIshadowquality);
- params["grid"] = yafray::parameter_t(82);
- params["search"] = yafray::parameter_t(35);
- params["ignore_bumpnormals"] = yafray::parameter_t(re->r.YF_nobump ? "on" : "off");
- }
- else
- {
- switch (re->r.GIquality)
- {
- case 1 : params["samples"] = yafray::parameter_t(16); break;
- case 2 : params["samples"] = yafray::parameter_t(36); break;
- case 3 : params["samples"] = yafray::parameter_t(64); break;
- case 4 : params["samples"] = yafray::parameter_t(128); break;
- case 5 : params["samples"] = yafray::parameter_t(256); break;
- default: params["samples"] = yafray::parameter_t(25);
- }
- }
- yafrayGate->addLight(params);
-}
-
-bool yafrayPluginRender_t::writeWorld()
-{
- World *world = re->scene->world;
- if (re->r.GIquality!=0) {
- if (re->r.GImethod==1) {
- if (world==NULL) cout << "WARNING: need world background for skydome!\n";
- writeHemilight();
- }
- else if (re->r.GImethod==2) writePathlight();
- }
- if (world==NULL) return false;
-
- yafray::paramMap_t params;
- for (int i=0;i<MAX_MTEX;i++) {
- MTex* wtex = world->mtex[i];
- if (!wtex) continue;
- Image* wimg = wtex->tex->ima;
- // now always exports if image used as world texture (and 'Hori' mapping enabled)
- if ((wtex->tex->type==TEX_IMAGE) && (wimg!=NULL) && (wtex->mapto & WOMAP_HORIZ)) {
- string wt_path = wimg->name;
- adjustPath(wt_path);
- params["type"] = yafray::parameter_t("image");
- params["name"] = yafray::parameter_t("world_background");
- // exposure_adjust not restricted to integer range anymore
- params["exposure_adjust"] = yafray::parameter_t(wtex->tex->bright-1.f);
- if (wtex->texco & TEXCO_ANGMAP)
- params["mapping"] = yafray::parameter_t("probe");
- else if (wtex->texco & TEXCO_H_SPHEREMAP) // in yafray full sphere
- params["mapping"] = yafray::parameter_t("sphere");
- else // assume 'tube' for anything else
- params["mapping"] = yafray::parameter_t("tube");
- params["filename"] = yafray::parameter_t(wt_path);
- params["interpolate"] = yafray::parameter_t((wtex->tex->imaflag & TEX_INTERPOL) ? "bilinear" : "none");
- if (wtex->tex->filtersize>1.f) params["prefilter"] = yafray::parameter_t("on");
- yafrayGate->addBackground(params);
- return true;
- }
- }
-
- params.clear();
- params["type"] = yafray::parameter_t("constant");
- params["name"] = yafray::parameter_t("world_background");
- // if no GI used, the GIpower parameter is not always initialized, so in that case ignore it
- // (have to change method to init yafray vars in Blender)
- float bg_mult = (re->r.GImethod==0) ? 1 : re->r.GIpower;
- params["color"]=yafray::parameter_t(yafray::color_t(world->horr * bg_mult,
- world->horg * bg_mult,
- world->horb * bg_mult));
- yafrayGate->addBackground(params);
- return true;
-}
-
-bool blenderYafrayOutput_t::putPixel(int x, int y, const yafray::color_t &c,
- yafray::CFLOAT alpha, yafray::PFLOAT depth)
-{
- // XXX how to get the image from Blender and write to it. This call doesn't allow to change buffer rects
- RenderResult rres;
- RE_GetResultImage(re, &rres);
- // rres.rectx, rres.recty is width/height
- // rres.rectf is float buffer, scanlines starting in bottom
- // rres.rectz is zbuffer, available when associated pass is set
-
- const unsigned int maxy = rres.recty-1;
-
- if (re->r.mode & R_BORDER) {
- // border render, blender renderwin is size of border region,
- // but yafray returns coords relative to full resolution
- x -= int(re->r.border.xmin * re->winx);
- y -= int((1.f-re->r.border.ymax) * re->winy);
- if ((x >= 0) && (x < re->rectx) && (y >= 0) && (y < re->recty))
- {
- const unsigned int px = rres.rectx*(maxy - y);
- // rgba
- float* fpt = rres.rectf + ((px + x) << 2);
- *fpt++ = c.R;
- *fpt++ = c.G;
- *fpt++ = c.B;
- *fpt = alpha;
- // depth values
- if (rres.rectz) rres.rectz[px + x] = depth;
- // to simplify things a bit, just do complete redraw here...
- out++;
- if ((out==4096) || ((x+y*re->rectx) == ((re->rectx-1)+(re->recty-1)*re->rectx))) {
- re->result->renlay = render_get_active_layer(re, re->result);
- re->display_draw(re->ddh, re->result, NULL);
- out = 0;
- }
- }
- if (re->test_break(re->tbh)) return false;
- return true;
- }
-
- const unsigned int px = (maxy - y)*rres.rectx;
-
- // rgba
- float* fpt = rres.rectf + ((px + x) << 2);
- *fpt++ = c.R;
- *fpt++ = c.G;
- *fpt++ = c.B;
- *fpt = alpha;
-
- // depth values
- if (rres.rectz) rres.rectz[px + x] = depth;
-
- // attempt to optimize drawing, by only drawing the tile currently rendered by yafray,
- // and not the entire display every time (blender has to to do float->char conversion),
- // but since the tile is not actually known, it has to be calculated from the coords.
- // not sure if it really makes all that much difference at all... unless rendering really large pictures
- // (renderwin.c also had to be adapted for this)
- // tile start & end coords
- const int txs = x & 0xffffffc0, tys = y & 0xffffffc0;
- int txe = txs + 63, tye = tys + 63;
- // tile border clip
- if (txe >= rres.rectx) txe = rres.rectx-1;
- if (tye >= rres.recty) tye = maxy;
- // draw tile if last pixel reached
- if ((y*rres.rectx + x) == (tye*rres.rectx + txe)) {
- re->result->renlay = render_get_active_layer(re, re->result);
- // note: ymin/ymax swapped here, img. upside down!
- rcti rt = {txs, txe+1, maxy-tye, ((tys==0) ? maxy : (rres.recty-tys))}; // !!! tys can be zero
- re->display_draw(re->ddh, re->result, &rt);
- }
-
- if (re->test_break(re->tbh)) return false;
- return true;
-}
diff --git a/source/blender/yafray/intern/export_Plugin.h b/source/blender/yafray/intern/export_Plugin.h
deleted file mode 100644
index 660271daf96..00000000000
--- a/source/blender/yafray/intern/export_Plugin.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef __EXPORT_PLUGIN_H
-#define __EXPORT_PLUGIN_H
-
-#include"yafray_Render.h"
-#include"yafexternal.h"
-extern "C"
-{
-#include"PIL_dynlib.h"
-}
-
-class yafrayPluginRender_t : public yafrayRender_t
-{
- public:
- yafrayPluginRender_t()
- {
- plugin_loaded = false;
- handle=NULL;
-#ifdef WIN32
- corehandle=NULL;
-#endif
- yafrayGate=NULL;
- }
- virtual ~yafrayPluginRender_t();
- protected:
- bool plugin_loaded;
- std::string imgout;
- PILdynlib *handle;
-#ifdef WIN32
- PILdynlib *corehandle;
-#endif
-
- yafray::yafrayInterface_t *yafrayGate;
-
- void displayImage();
- virtual void writeTextures();
- virtual void writeShader(const std::string &shader_name, Material* matr, const std::string &facetexname="");
- virtual void writeMaterialsAndModulators();
- virtual void writeObject(Object* obj, ObjectRen *obr,
- const std::vector<VlakRen*> &VLR_list, const float obmat[4][4]);
- virtual void writeAllObjects();
- virtual void writeAreaLamp(LampRen* lamp, int num, float iview[4][4]);
- virtual void writeLamps();
- virtual void writeCamera();
- virtual void writeHemilight();
- virtual void writePathlight();
- virtual bool writeWorld();
- virtual bool writeRender();
- virtual bool initExport();
- virtual bool finishExport();
-
- void genUVcoords(std::vector<yafray::GFLOAT> &uvcoords,ObjectRen *obr,VlakRen *vlr,MTFace* uvc, bool comple=false);
- void genVcol(std::vector<yafray::CFLOAT> &vcol, ObjectRen *obr, VlakRen *vlr, bool comple=false);
- void genFace(std::vector<int> &faces,std::vector<std::string> &shaders,std::vector<int> &faceshader,
- std::vector<yafray::GFLOAT> &uvcoords,std::vector<yafray::CFLOAT> &vcol,
- std::map<VertRen*, int> &vert_idx,ObjectRen *obr,VlakRen *vlr,
- int has_orco,bool has_uv);
- void genCompleFace(std::vector<int> &faces,/*std::vector<std::string> &shaders,*/std::vector<int> &faceshader,
- std::vector<yafray::GFLOAT> &uvcoords,std::vector<yafray::CFLOAT> &vcol,
- std::map<VertRen*, int> &vert_idx,ObjectRen *obr, VlakRen *vlr,
- int has_orco,bool has_uv);
- void genVertices(std::vector<yafray::point3d_t> &verts, int &vidx,
- std::map<VertRen*, int> &vert_idx, ObjectRen *obr, VlakRen* vlr, int has_orco, Object* obj);
-};
-
-class blenderYafrayOutput_t : public yafray::colorOutput_t
-{
- public:
- blenderYafrayOutput_t(Render* re):out(0) { this->re = re; }
- virtual ~blenderYafrayOutput_t() {}
- virtual bool putPixel(int x, int y, const yafray::color_t &c,
- yafray::CFLOAT alpha=0, yafray::PFLOAT depth=0);
- virtual void flush() {}
- protected:
- Render* re;
- int out;
-};
-
-#endif
diff --git a/source/blender/yafray/intern/yafexternal.cpp b/source/blender/yafray/intern/yafexternal.cpp
deleted file mode 100644
index 97d43cbaf5a..00000000000
--- a/source/blender/yafray/intern/yafexternal.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-#include "yafexternal.h"
-#include <iostream>
-namespace yafray {
-
-parameter_t::parameter_t(const std::string &s):type(TYPE_STRING),used(false),str(s)
-{
-}
-
-parameter_t::parameter_t(float f):type(TYPE_FLOAT),used(false),fnum(f)
-{
-}
-
-parameter_t::parameter_t(const colorA_t &c):type(TYPE_COLOR),used(false)
- ,C(c)
-{
-}
-
-parameter_t::parameter_t(const point3d_t &p):type(TYPE_POINT),used(false),P(p)
-{
-}
-
-parameter_t::parameter_t():type(TYPE_NONE),used(false)
-{
-}
-
-parameter_t::~parameter_t()
-{
-}
-
-paramMap_t::paramMap_t()
-{
-}
-
-paramMap_t::~paramMap_t()
-{
-}
-
-bool paramMap_t::getParam(const std::string &name,const std::string *&s)
-{
- if(includes(name,TYPE_STRING))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- s=&(i->second.getStr());
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,bool &b)
-{
- std::string str;
- if(includes(name,TYPE_STRING))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- str=i->second.getStr();
- if(str=="on") b=true;
- else if(str=="off") b=false;
- else return false;
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,float &f)
-{
- if(includes(name,TYPE_FLOAT))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- f=i->second.getFnum();
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,double &f)
-{
- if(includes(name,TYPE_FLOAT))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- f=i->second.getFnum();
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,int &in)
-{
- if(includes(name,TYPE_FLOAT))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- in=(int)(i->second.getFnum());
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,point3d_t &p)
-{
- if(includes(name,TYPE_POINT))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- p=i->second.getP();
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,color_t &c)
-{
- if(includes(name,TYPE_COLOR))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- c=i->second.getC();
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::getParam(const std::string &name,colorA_t &c)
-{
- if(includes(name,TYPE_COLOR))
- {
- std::map<std::string,parameter_t>::iterator i=dicc.find(name);
- c=i->second.getAC();
- }
- else return false;
- return true;
-}
-
-bool paramMap_t::includes(const std::string &label,int type)const
-{
- std::map<std::string,parameter_t>::const_iterator i=dicc.find(label);
- if(i==dicc.end()) return false;
- if((*i).second.type!=type) return false;
- return true;
-}
-
-void paramMap_t::checkUnused(const std::string &env)const
-{
- for(std::map<std::string,parameter_t>::const_iterator i=dicc.begin();i!=dicc.end();++i)
- if(!( (*i).second.used ))
- std::cout<<"[WARNING]:Unused param "<<(*i).first<<" in "<<env<<"\n";
-}
-
-parameter_t & paramMap_t::operator [] (const std::string &key)
-{
- return dicc[key];
-}
-
-void paramMap_t::clear()
-{
- dicc.clear();
-}
-
-}
diff --git a/source/blender/yafray/intern/yafexternal.h b/source/blender/yafray/intern/yafexternal.h
deleted file mode 100644
index 7130bd55466..00000000000
--- a/source/blender/yafray/intern/yafexternal.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef __YAFINTERFACE_H
-#define __YAFINTERFACE_H
-
-#include<vector>
-#include<string>
-#include<list>
-#include<map>
-
-namespace yafray
-{
-
-typedef float PFLOAT;
-typedef float GFLOAT;
-typedef float CFLOAT;
-
-class point3d_t
-{
- public:
- point3d_t() { x = y = z = 0; }
- point3d_t(PFLOAT ix) { x = y = z = ix; }
- point3d_t(PFLOAT ix, PFLOAT iy, PFLOAT iz=0) { x=ix; y=iy; z=iz; }
- point3d_t(const point3d_t &s) { x=s.x; y=s.y; z=s.z; }
- void set(PFLOAT ix, PFLOAT iy, PFLOAT iz=0) { x=ix; y=iy; z=iz; }
- point3d_t& operator= (const point3d_t &s) { x=s.x; y=s.y; z=s.z; return *this; }
- ~point3d_t() {};
- PFLOAT x,y,z;
-};
-
-class color_t
-{
- public:
- color_t() {R=G=B=0;};
- color_t(CFLOAT r,CFLOAT g,CFLOAT b) {R=r;G=g;B=b;};
- ~color_t() {};
- void set(CFLOAT r,CFLOAT g,CFLOAT b) {R=r;G=g;B=b;};
-
- CFLOAT R,G,B;
-};
-
-class colorA_t : public color_t
-{
- public:
- colorA_t() { A=1; }
- colorA_t(const color_t &c):color_t(c) { A=1; }
- colorA_t(CFLOAT r, CFLOAT g, CFLOAT b, CFLOAT a=0):color_t(r,g,b) {A=a;}
- ~colorA_t() {};
- void set(CFLOAT r, CFLOAT g, CFLOAT b, CFLOAT a=0) {color_t::set(r,g,b);A=a; };
-
- protected:
- CFLOAT A;
-};
-
-#define TYPE_FLOAT 0
-#define TYPE_STRING 1
-#define TYPE_POINT 2
-#define TYPE_COLOR 3
-#define TYPE_NONE -1
-
-class parameter_t
-{
- public:
- parameter_t(const std::string &s);
- parameter_t(float f);
- parameter_t(const colorA_t &c);
- parameter_t(const point3d_t &p);
- parameter_t();
- ~parameter_t();
-
- const std::string &getStr() {used=true;return str;};
- float &getFnum() {used=true;return fnum;};
- const point3d_t &getP() {used=true;return P;};
- const color_t &getC() {used=true;return C;};
- const colorA_t &getAC() {used=true;return C;};
- int type;
- bool used;
- protected:
- std::string str;
- float fnum;
- point3d_t P;
- colorA_t C;
-};
-
-class paramMap_t
-{
- public:
- paramMap_t();
- virtual bool getParam(const std::string &name,const std::string *&s);
- virtual bool getParam(const std::string &name,bool &b);
- virtual bool getParam(const std::string &name,float &f);
- virtual bool getParam(const std::string &name,double &f);
- virtual bool getParam(const std::string &name,int &i);
- virtual bool getParam(const std::string &name,point3d_t &p);
- virtual bool getParam(const std::string &name,color_t &c);
- virtual bool getParam(const std::string &name,colorA_t &c);
- virtual bool includes(const std::string &label,int type)const;
- virtual void checkUnused(const std::string &env)const;
- virtual parameter_t & operator [] (const std::string &key);
- virtual void clear();
- virtual ~paramMap_t();
- protected:
- std::map<std::string,parameter_t> dicc;
-};
-
-class light_t;
-class shader_t;
-class texture_t;
-class filter_t;
-class background_t;
-
-class renderEnvironment_t
-{
- public:
- typedef light_t * light_factory_t(paramMap_t &,renderEnvironment_t &);
- typedef shader_t *shader_factory_t(paramMap_t &,std::list<paramMap_t> &,
- renderEnvironment_t &);
- typedef texture_t *texture_factory_t(paramMap_t &,renderEnvironment_t &);
- typedef filter_t *filter_factory_t(paramMap_t &,renderEnvironment_t &);
- typedef background_t *background_factory_t(paramMap_t &,renderEnvironment_t &);
-
- virtual shader_t *getShader(const std::string name)const=0;
- virtual texture_t *getTexture(const std::string name)const=0;
-
- virtual void repeatFirstPass()=0;
-
- virtual void registerFactory(const std::string &name,light_factory_t *f)=0;
- virtual void registerFactory(const std::string &name,shader_factory_t *f)=0;
- virtual void registerFactory(const std::string &name,texture_factory_t *f)=0;
- virtual void registerFactory(const std::string &name,filter_factory_t *f)=0;
- virtual void registerFactory(const std::string &name,background_factory_t *f)=0;
-
- renderEnvironment_t() {};
- virtual ~renderEnvironment_t() {};
-
-};
-
-class colorOutput_t
-{
- public:
- virtual ~colorOutput_t() {};
- virtual bool putPixel(int x, int y,const color_t &c,
- CFLOAT alpha=0,PFLOAT depth=0)=0;
- virtual void flush()=0;
-};
-
-class yafrayInterface_t : public renderEnvironment_t
-{
- public:
- virtual void transformPush(float *m)=0;
- virtual void transformPop()=0;
- virtual void addObject_trimesh(const std::string &name,
- std::vector<point3d_t> &verts, const std::vector<int> &faces,
- std::vector<GFLOAT> &uvcoords, std::vector<CFLOAT> &vcol,
- const std::vector<std::string> &shaders,const std::vector<int> &faceshader,
- float sm_angle,bool castShadows,bool useR,bool receiveR,bool caus,bool has_orco,
- const color_t &caus_rcolor,const color_t &caus_tcolor,float caus_IOR)=0;
-
- virtual void addObject_reference(const std::string &name,const std::string &original)=0;
- // lights
- virtual void addLight(paramMap_t &p)=0;
- // textures
- virtual void addTexture(paramMap_t &p)=0;
- // shaders
- virtual void addShader(paramMap_t &p,std::list<paramMap_t> &modulators)=0;
- // filters
- virtual void addFilter(paramMap_t &p)=0;
- // backgrounds
- virtual void addBackground(paramMap_t &p)=0;
- //camera
- virtual void addCamera(paramMap_t &p)=0;
- //render
- virtual void render(paramMap_t &p)=0;
- //render
- virtual void render(paramMap_t &p,colorOutput_t &output)=0;
-
- virtual void clear()=0;
-
- virtual ~yafrayInterface_t() {};
-};
-
-typedef yafrayInterface_t * yafrayConstructor(int,const std::string &);
-
-}
-
-#define YAFRAY_SYMBOL "getYafray"
-
-#endif
diff --git a/source/blender/yafray/intern/yafray_Render.cpp b/source/blender/yafray/intern/yafray_Render.cpp
deleted file mode 100644
index d0006786507..00000000000
--- a/source/blender/yafray/intern/yafray_Render.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//----------------------------------------------------------------------------------------------------
-// YafRay export
-//
-// For anyone else looking at this, this was designed for a tabspacing of 2 (YafRay/Jandro standard :)
-//----------------------------------------------------------------------------------------------------
-
-#include "yafray_Render.h"
-
-#include <math.h>
-
-#include <cstring>
-
-using namespace std;
-
-void yafrayRender_t::clearAll()
-{
- all_objects.clear();
- used_materials.clear();
- used_textures.clear();
- dupliMtx_list.clear();
- dup_srcob.clear();
- objectData.clear();
- imagetex.clear();
- imgtex_shader.clear();
-}
-
-bool yafrayRender_t::exportScene(Render* re)
-{
- this->re = re;
-
- // get camera first, no checking should be necessary, all done by Blender
- maincam_obj = re->scene->camera;
-
- // use fixed lens for objects functioning as temporary camera (ctrl-0)
- mainCamLens = 35.0;
- if (maincam_obj->type==OB_CAMERA) mainCamLens=((Camera*)maincam_obj->data)->lens;
-
- // recreate the scene as object data, as well as sorting the material & textures, ignoring duplicates
- if (!getAllMatTexObs())
- {
- // error found, clear for next call
- clearAll();
- return false;
- }
-
- if (!initExport())
- {
- G.afbreek = 1;
- clearAll();
- return false;
- }
-
- // start actual data export
- writeTextures();
- writeMaterialsAndModulators();
- writeAllObjects();
- writeLamps();
- hasworld = writeWorld();
- writeCamera();
- writeRender();
-
- // clear for next call, before render to free some memory
- clearAll();
-
- if (!finishExport())
- {
- G.afbreek = 1; //stop render and anim if doing so
- return false;
- }
- else return true;
-}
-
-// gets all unique face materials & textures,
-// and sorts the facelist rejecting anything that is not a quad or tri,
-// as well as associating them again with the original Object.
-bool yafrayRender_t::getAllMatTexObs()
-{
- ObjectInstanceRen *obi;
- ObjectRen *obr;
- VlakRen* vlr;
- float mat[4][4];
-
- // convert blender object instances to dupli matrices
- for(obi=(ObjectInstanceRen*)re->instancetable.first; obi; obi=obi->next) {
- if(obi->flag & R_DUPLI_TRANSFORMED) {
- // compute object matrix with dupli transform, need to transform
- // obi->mat out of view space for it
- MTC_Mat4MulSerie(mat, re->viewinv, obi->mat, re->viewmat, obi->obr->ob->obmat, 0, 0, 0, 0);
- addDupliMtx(obi->obr->ob, mat);
- }
- }
-
- // Blender does not include object which have total 0 alpha materials,
- // however, the objects might have been included in the dupliMtx list,
- // so this will cause a 'Duplilist non-empty...' error after going through the renderlist.
- // To solve this, keep track of all render objects included sofar,
- // and remove from dupliMtx_list if object not found.
- // This should also help to solve some other yet undetected 'dupli..' errors,
- // but on the other hand that could also hide the real problem of course...
- map<string, Object*> renderobs;
-
- for(obr=(ObjectRen*)re->objecttable.first; obr; obr=obr->next) {
- for (int i=0; i < obr->totvlak; i++) {
-
- if ((i & 255)==0) vlr=obr->vlaknodes[i>>8].vlak; else vlr++;
-
- // ---- The materials & textures
- // in this case, probably every face has a material assigned, which can be the default material,
- // so checking that this is !0 is probably not necessary, but just in case...
- Material* matr = vlr->mat;
- if (matr) {
- // The default assigned material seems to be nameless, no MA id, an empty string.
- // Since this name is needed in yafray, make it 'blender_default'
- if (strlen(matr->id.name)==0)
- used_materials["blender_default"] = matr;
- else
- used_materials[matr->id.name] = matr;
- // textures, all active channels
- for (int m=0;m<MAX_MTEX;m++) {
- if (matr->septex & (1<<m)) continue; // only active channels
- MTex* mx = matr->mtex[m];
- // if no mtex, ignore
- if (mx==NULL) continue;
- // if no tex, ignore
- Tex* tx = mx->tex;
- if (tx==NULL) continue;
- short txtp = tx->type;
- // if texture type not available in yafray, ignore
- if ((txtp==0) ||
- (txtp==TEX_MAGIC) ||
- (txtp==TEX_PLUGIN) ||
- (txtp==TEX_ENVMAP)) continue;
- // if texture is stucci, only export if 'nor' enabled
- if ((txtp==TEX_STUCCI) && !((mx->mapto & MAP_NORM) || (mx->maptoneg & MAP_NORM))) continue;
- // In the case of an image texture, check that there is an actual image, otherwise ignore.
- // Stupid error was here (...if (txtp & TEX_IMAGE)...),
- // which happened to work sofar, but not anymore with the extended texture support..
- if ((txtp==TEX_IMAGE) && (!tx->ima)) continue;
- used_textures[tx->id.name] = mx;
- }
- }
-
- // Make list of faces per object, ignore <3 vert faces, duplicate vertex sorting done later.
- // ignore null object pointers.
- // Also make list of facetexture images (material 'TexFace').
- if (obr->ob) {
- int nv = 0; // number of vertices
- MTFace *tface;
-
- if (vlr->v4) nv=4; else if (vlr->v3) nv=3;
- if (nv) {
- renderobs[obr->ob->id.name] = obr->ob;
- all_objects[obr->ob].obr= obr;
- all_objects[obr->ob].faces.push_back(vlr);
-
- tface= RE_vlakren_get_tface(obr, vlr, obr->actmtface, NULL, 0);
- if (tface && tface->tpage) {
- Material* fmat = vlr->mat;
-
- // only save if TexFace enabled
- if(fmat && (fmat->mode & MA_FACETEXTURE))
- imagetex[tface->tpage].insert(fmat);
- }
- }
- }
-
- }
- }
-
- // now remove any objects from dupliMtx_list which are not in the renderlist
- for (map<string, vector<float> >::iterator dL=dupliMtx_list.begin();
- dL!=dupliMtx_list.end();)
- {
- string ro_name = dL->first;
- if (renderobs.find(ro_name)==renderobs.end()) {
- cout << "Object " << ro_name << " not in renderlist, removing from dupliMtx_list" << endl;
- dL->second.clear();
- ++dL;
- dupliMtx_list.erase(ro_name);
- }
- else
- ++dL;
- }
-
- // in case dupliMtx_list not empty, make sure that there is at least one source object
- // in all_objects with the name given in dupliMtx_list
- if (!dupliMtx_list.empty()) {
-
- for (map<Object*, yafrayObjectRen>::const_iterator obn=all_objects.begin();
- obn!=all_objects.end();++obn)
- {
- Object* obj = obn->first;
- string obname = obj->id.name;
- if (dupliMtx_list.find(obname)!=dupliMtx_list.end()) dup_srcob[obname] = obj;
- }
-
- // if the name reference list is empty, return now, something was seriously wrong
- if (dup_srcob.empty()) {
- // error() doesn't work to well, when switching from Blender to console at least, so use stdout instead
- cout << "ERROR: Duplilist non_empty, but no srcobs\n";
- return false;
- }
- }
-
- return true;
-}
-
-void yafrayRender_t::addDupliMtx(Object* obj, float mat[][4])
-{
- for (int i=0;i<4;i++)
- for (int j=0;j<4;j++)
- dupliMtx_list[obj->id.name].push_back(mat[i][j]);
-}
-
-
-#if 0
-
-bool yafrayRender_t::objectKnownData(Object* obj)
-{
- // if object data already known, no need to include in renderlist, otherwise save object datapointer
- if (objectData.find(obj->data)!=objectData.end()) {
- Object* orgob = objectData[obj->data];
- // first save original object matrix in dupliMtx_list, if not added yet
- if (dupliMtx_list.find(orgob->id.name)==dupliMtx_list.end()) {
- cout << "Added original matrix\n";
- addDupliMtx(orgob);
- }
- // then save matrix of linked object in dupliMtx_list, using name of ORIGINAL object
- for (int i=0;i<4;i++)
- for (int j=0;j<4;j++)
- dupliMtx_list[orgob->id.name].push_back(obj->obmat[i][j]);
- return true;
- }
- // object not known yet
- objectData[obj->data] = obj;
- return false;
-}
-#endif
-
diff --git a/source/blender/yafray/intern/yafray_Render.h b/source/blender/yafray/intern/yafray_Render.h
deleted file mode 100644
index 165cfefdbd0..00000000000
--- a/source/blender/yafray/intern/yafray_Render.h
+++ /dev/null
@@ -1,110 +0,0 @@
-#ifndef __YAFRAY_RENDER_H
-#define __YAFRAY_RENDER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "MEM_guardedalloc.h"
-#include "IMB_imbuf_types.h"
-
-#include "DNA_camera_types.h"
-#include "DNA_group_types.h"
-#include "DNA_image_types.h"
-#include "DNA_lamp_types.h"
-#include "DNA_material_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
-#include "DNA_object_types.h"
-#include "DNA_scene_types.h"
-#include "DNA_texture_types.h"
-#include "DNA_userdef_types.h"
-#include "DNA_world_types.h"
-
-#include "BKE_global.h"
-
-#include "render_types.h"
-#include "renderdatabase.h"
-/* display_draw() needs render layer info */
-#include "renderpipeline.h"
-
-/* useful matrix & vector operations */
-#include "MTC_matrixops.h"
-#include "MTC_vectorops.h"
-
-#include "BLI_blenlib.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#ifdef __cplusplus
-#include <iostream>
-#include <iomanip>
-#include <sstream>
-#include <fstream>
-#include <map>
-#include <string>
-#include <vector>
-#include <set>
-
-class yafrayObjectRen {
- public:
- std::vector<VlakRen*> faces;
- ObjectRen *obr;
-};
-
-class yafrayRender_t
-{
- public:
- // ctor
- yafrayRender_t() {}
- // dtor
- virtual ~yafrayRender_t() {}
-
- // mtds
- bool exportScene(Render* re);
- void addDupliMtx(Object* obj, float mat[][4]);
- bool objectKnownData(Object* obj);
-
- protected:
- Render* re;
- Object* maincam_obj;
- float mainCamLens;
-
- bool hasworld;
-
- std::map<Object*, yafrayObjectRen> all_objects;
- std::map<std::string, Material*> used_materials;
- std::map<std::string, MTex*> used_textures;
- std::map<std::string, std::vector<float> > dupliMtx_list;
- std::map<std::string, Object*> dup_srcob;
- std::map<void*, Object*> objectData;
- std::map<Image*, std::set<Material*> > imagetex;
- std::map<std::string, std::string> imgtex_shader;
-
- bool getAllMatTexObs();
-
- virtual void writeTextures()=0;
- virtual void writeShader(const std::string &shader_name, Material* matr, const std::string &facetexname)=0;
- virtual void writeMaterialsAndModulators()=0;
- virtual void writeObject(Object* obj, ObjectRen *obr, const std::vector<VlakRen*> &VLR_list, const float obmat[4][4])=0;
- virtual void writeAllObjects()=0;
- virtual void writeLamps()=0;
- virtual void writeCamera()=0;
- virtual void writeAreaLamp(LampRen* lamp, int num, float iview[4][4])=0;
- virtual void writeHemilight()=0;
- virtual void writePathlight()=0;
- virtual bool writeWorld()=0;
- virtual bool writeRender()=0;
- virtual bool initExport()=0;
- virtual bool finishExport()=0;
-
- void clearAll();
-};
-
-#endif
-
-
-#endif /*__YAFRAY_RENDER_H */
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index fe0f741bb96..221c0a92e09 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -180,14 +180,14 @@ IF(WIN32)
ADD_CUSTOM_COMMAND(TARGET blender
POST_BUILD
MAIN_DEPENDENCY blender
- COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avcodec-51.dll\" \"${TARGETDIR}\\\"
+ COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avcodec-52.dll\" \"${TARGETDIR}\\\"
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avformat-52.dll\" \"${TARGETDIR}\\\"
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avdevice-52.dll\" \"${TARGETDIR}\\\"
- COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avutil-49.dll\" \"${TARGETDIR}\\\"
+ COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avutil-50.dll\" \"${TARGETDIR}\\\"
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaac-0.dll\" \"${TARGETDIR}\\\"
- COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaad-0.dll\" \"${TARGETDIR}\\\"
+ COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaad-2.dll\" \"${TARGETDIR}\\\"
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libmp3lame-0.dll\" \"${TARGETDIR}\\\"
- COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libx264-59.dll\" \"${TARGETDIR}\\\"
+ COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libx264-67.dll\" \"${TARGETDIR}\\\"
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\swscale-0.dll\" \"${TARGETDIR}\\\"
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\xvidcore.dll\" \"${TARGETDIR}\\\"
)
diff --git a/source/creator/buildinfo.c b/source/creator/buildinfo.c
index e25caa34f46..cef98915d79 100644
--- a/source/creator/buildinfo.c
+++ b/source/creator/buildinfo.c
@@ -33,11 +33,11 @@
#ifdef BUILD_DATE
#ifndef WIN32
-char * build_date=BUILD_DATE;
-char * build_time=BUILD_TIME;
-char * build_rev=BUILD_REV;
-char * build_platform=BUILD_PLATFORM;
-char * build_type=BUILD_TYPE;
+const char * build_date=BUILD_DATE;
+const char * build_time=BUILD_TIME;
+const char * build_rev=BUILD_REV;
+const char * build_platform=BUILD_PLATFORM;
+const char * build_type=BUILD_TYPE;
#else
#include "winbuildinfo.h"
#endif
diff --git a/source/creator/creator.c b/source/creator/creator.c
index 2ac65f7a08a..5ffce91ec2d 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -497,6 +497,19 @@ int main(int argc, char **argv)
BLI_where_is_temp( btempdir, 1 ); /* call after loading the .B.blend so we can read U.tempdir */
#ifndef DISABLE_SDL
+#if (defined(WIN32) || defined(WIN64))
+#if defined(FREE_WINDOWS)
+ putenv("SDL_VIDEODRIVER=dummy");
+#else
+ _putenv_s("SDL_VIDEODRIVER", "dummy");
+#endif
+#else
+#ifdef __sgi
+ putenv("SDL_VIDEODRIVER=dummy");
+#else
+ setenv("SDL_VIDEODRIVER", "dummy", 1); /* initializing the video driver can cause crashes on some systems - Campbell */
+#endif
+#endif
#ifdef __linux__
/* On linux the default SDL driver dma often would not play
* use alsa if none is set */
@@ -616,8 +629,10 @@ int main(int argc, char **argv)
Scene *scene= CTX_data_scene(C);
if (a < argc) {
- int frame= MIN2(MAXFRAME, MAX2(1, atoi(argv[a])));
- Render *re= RE_NewRender(scene->id.name);
+ int frame = atoi(argv[a]);
+ Render *re = RE_NewRender(scene->id.name);
+
+ frame = MIN2(MAXFRAME, MAX2(1, frame));
#ifndef DISABLE_PYTHON
if (G.f & G_DOSCRIPTLINKS)
BPY_do_all_scripts(SCRIPT_RENDER, 0);
@@ -657,8 +672,10 @@ int main(int argc, char **argv)
a++;
if (CTX_data_scene(C)) {
Scene *scene= CTX_data_scene(C);
- int frame= MIN2(MAXFRAME, MAX2(1, atoi(argv[a])));
- if (a < argc) (scene->r.sfra) = frame;
+ if (a < argc) {
+ int frame = atoi(argv[a]);
+ (scene->r.sfra) = MIN2(MAXFRAME, MAX2(1, frame));
+ }
} else {
printf("\nError: no blend loaded. cannot use '-s'.\n");
}
@@ -667,8 +684,10 @@ int main(int argc, char **argv)
a++;
if (CTX_data_scene(C)) {
Scene *scene= CTX_data_scene(C);
- int frame= MIN2(MAXFRAME, MAX2(1, atoi(argv[a])));
- if (a < argc) (scene->r.efra) = frame;
+ if (a < argc) {
+ int frame = atoi(argv[a]);
+ (scene->r.efra) = MIN2(MAXFRAME, MAX2(1, frame));
+ }
} else {
printf("\nError: no blend loaded. cannot use '-e'.\n");
}
@@ -677,8 +696,10 @@ int main(int argc, char **argv)
a++;
if (CTX_data_scene(C)) {
Scene *scene= CTX_data_scene(C);
- int fstep= MIN2(MAXFRAME, MAX2(1, atoi(argv[a])));
- if (a < argc) (scene->frame_step) = fstep;
+ if (a < argc) {
+ int frame = atoi(argv[a]);
+ (scene->frame_step) = MIN2(MAXFRAME, MAX2(1, frame));
+ }
} else {
printf("\nError: no blend loaded. cannot use '-j'.\n");
}
diff --git a/source/darwin/blender.app/Contents/Resources/blender file icon.icns b/source/darwin/blender.app/Contents/Resources/blender file icon.icns
index 78d84cf70c3..9065f1b359c 100644
--- a/source/darwin/blender.app/Contents/Resources/blender file icon.icns
+++ b/source/darwin/blender.app/Contents/Resources/blender file icon.icns
Binary files differ
diff --git a/source/darwin/blender.app/Contents/Resources/blender icon.icns b/source/darwin/blender.app/Contents/Resources/blender icon.icns
index a9b352f9a1c..5eef94afde9 100644
--- a/source/darwin/blender.app/Contents/Resources/blender icon.icns
+++ b/source/darwin/blender.app/Contents/Resources/blender icon.icns
Binary files differ
diff --git a/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns b/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns
index a9b352f9a1c..5eef94afde9 100644
--- a/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns
+++ b/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns
Binary files differ
diff --git a/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns b/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns
index 78d84cf70c3..9065f1b359c 100644
--- a/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns
+++ b/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns
Binary files differ
diff --git a/source/darwin/blenderplayer.app/Contents/Resources/blender file icon.icns b/source/darwin/blenderplayer.app/Contents/Resources/blender file icon.icns
index 78d84cf70c3..9065f1b359c 100644
--- a/source/darwin/blenderplayer.app/Contents/Resources/blender file icon.icns
+++ b/source/darwin/blenderplayer.app/Contents/Resources/blender file icon.icns
Binary files differ
diff --git a/source/darwin/blenderplayer.app/Contents/Resources/blender player icon.icns b/source/darwin/blenderplayer.app/Contents/Resources/blender player icon.icns
index a9b352f9a1c..5eef94afde9 100644
--- a/source/darwin/blenderplayer.app/Contents/Resources/blender player icon.icns
+++ b/source/darwin/blenderplayer.app/Contents/Resources/blender player icon.icns
Binary files differ
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index d8de24c610c..4ac28e36c48 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -129,6 +129,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
BLI_strncpy(pathname, blenderdata->name, sizeof(pathname));
BLI_strncpy(oldsce, G.sce, sizeof(oldsce));
+ resetGamePythonPath(); // need this so running a second time wont use an old blendfiles path
setGamePythonPath(G.sce);
// Acquire Python's GIL (global interpreter lock)
@@ -153,7 +154,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
bool game2ipo = (SYS_GetCommandLineInt(syshandle, "game2ipo", 0) != 0);
bool displaylists = (SYS_GetCommandLineInt(syshandle, "displaylists", 0) != 0);
bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0);
-
+ bool novertexarrays = (SYS_GetCommandLineInt(syshandle, "novertexarrays", 0) != 0);
// create the canvas, rasterizer and rendertools
RAS_ICanvas* canvas = new KX_BlenderCanvas(area);
canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE);
@@ -161,12 +162,12 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
RAS_IRasterizer* rasterizer = NULL;
if(displaylists) {
- if (GLEW_VERSION_1_1)
+ if (GLEW_VERSION_1_1 && !novertexarrays)
rasterizer = new RAS_ListRasterizer(canvas, true, true);
else
rasterizer = new RAS_ListRasterizer(canvas);
}
- else if (GLEW_VERSION_1_1)
+ else if (GLEW_VERSION_1_1 && !novertexarrays)
rasterizer = new RAS_VAOpenGLRasterizer(canvas, false);
else
rasterizer = new RAS_OpenGLRasterizer(canvas);
@@ -292,6 +293,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
if(blenderdata) {
BLI_strncpy(G.sce, blenderdata->name, sizeof(G.sce));
BLI_strncpy(pathname, blenderdata->name, sizeof(pathname));
+ setGamePythonPath(G.sce);
}
}
// else forget it, we can't find it
@@ -321,12 +323,11 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
{
int startFrame = blscene->r.cfra;
ketsjiengine->SetGame2IpoMode(game2ipo,startFrame);
+
+ // Quad buffered needs a special window.
+ if (blscene->r.stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED)
+ rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) blscene->r.stereomode);
}
-
-
- // Quad buffered needs a special window.
- if (blscene->r.stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED)
- rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) blscene->r.stereomode);
if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME)
{
@@ -380,6 +381,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
initGameKeys();
initPythonConstraintBinding();
initMathutils();
+ initGeometry();
initBGL();
#ifdef WITH_FFMPEG
initVideoTexture();
@@ -387,7 +389,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
//initialize Dome Settings
if(blscene->r.stereomode == RAS_IRasterizer::RAS_STEREO_DOME)
- ketsjiengine->InitDome(blscene->r.domesize, blscene->r.domeres, blscene->r.domemode, blscene->r.domeangle, blscene->r.domeresbuf, blscene->r.dometext);
+ ketsjiengine->InitDome(blscene->r.domeres, blscene->r.domemode, blscene->r.domeangle, blscene->r.domeresbuf, blscene->r.dometilt, blscene->r.dometext);
if (sceneconverter)
{
@@ -684,6 +686,7 @@ extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
initGameKeys();
initPythonConstraintBinding();
initMathutils();
+ initGeometry();
initBGL();
#ifdef WITH_FFMPEG
initVideoTexture();
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
index 9dbda3f195b..17d1bf65ca4 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
@@ -68,8 +68,8 @@ void KX_BlenderRenderTools::BeginFrame(RAS_IRasterizer* rasty)
{
m_clientobject = NULL;
m_lastlightlayer = -1;
- m_lastlighting = false;
m_lastauxinfo = NULL;
+ m_lastlighting = true; /* force disable in DisableOpenGLLights() */
DisableOpenGLLights();
}
@@ -295,7 +295,7 @@ void KX_BlenderRenderTools::RenderText(
RAS_IPolyMaterial* polymat,
float v1[3], float v2[3], float v3[3], float v4[3], int glattrib)
{
- STR_String mytext = ((CValue*)m_clientobject)->GetPropertyText("Text");
+ const STR_String& mytext = ((CValue*)m_clientobject)->GetPropertyText("Text");
const unsigned int flag = polymat->GetFlag();
struct MTFace* tface = 0;
diff --git a/source/gameengine/CMakeLists.txt b/source/gameengine/CMakeLists.txt
index 3ea788791e2..fd05858710d 100644
--- a/source/gameengine/CMakeLists.txt
+++ b/source/gameengine/CMakeLists.txt
@@ -24,25 +24,23 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(
- BlenderRoutines
- Converter
- Expressions
- GameLogic
- Ketsji
- Ketsji/KXNetwork
- Network
- Network/LoopBackNetwork
- Physics/common
- Physics/Dummy
- Rasterizer
- Rasterizer/RAS_OpenGLRasterizer
- SceneGraph
- Physics/Bullet
- Physics/Sumo
- VideoTexture
-)
+ADD_SUBDIRECTORY(BlenderRoutines)
+ADD_SUBDIRECTORY(Converter)
+ADD_SUBDIRECTORY(Expressions)
+ADD_SUBDIRECTORY(GameLogic)
+ADD_SUBDIRECTORY(Ketsji)
+ADD_SUBDIRECTORY(Ketsji/KXNetwork)
+ADD_SUBDIRECTORY(Network)
+ADD_SUBDIRECTORY(Network/LoopBackNetwork)
+ADD_SUBDIRECTORY(Physics/common)
+ADD_SUBDIRECTORY(Physics/Dummy)
+ADD_SUBDIRECTORY(Rasterizer)
+ADD_SUBDIRECTORY(Rasterizer/RAS_OpenGLRasterizer)
+ADD_SUBDIRECTORY(SceneGraph)
+ADD_SUBDIRECTORY(Physics/Bullet)
+ADD_SUBDIRECTORY(Physics/Sumo)
+ADD_SUBDIRECTORY(VideoTexture)
IF(WITH_PLAYER)
- SUBDIRS(GamePlayer)
+ ADD_SUBDIRECTORY(GamePlayer)
ENDIF(WITH_PLAYER)
diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp
index 662d6b7a63e..e4dd588f06a 100644
--- a/source/gameengine/Converter/BL_ActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ActionActuator.cpp
@@ -66,9 +66,9 @@ BL_ActionActuator::~BL_ActionActuator()
game_free_pose(m_blendpose);
}
-void BL_ActionActuator::ProcessReplica(){
-// bPose *oldpose = m_pose;
-// bPose *oldbpose = m_blendpose;
+void BL_ActionActuator::ProcessReplica()
+{
+ SCA_IActuator::ProcessReplica();
m_pose = NULL;
m_blendpose = NULL;
@@ -84,9 +84,6 @@ void BL_ActionActuator::SetBlendTime (float newtime){
CValue* BL_ActionActuator::GetReplica() {
BL_ActionActuator* replica = new BL_ActionActuator(*this);//m_float,GetName());
replica->ProcessReplica();
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
}
@@ -159,16 +156,9 @@ bool BL_ActionActuator::Update(double curtime, bool frame)
// maybe there are events for us in the queue !
if (frame)
{
- for (vector<CValue*>::iterator i=m_events.begin(); !(i==m_events.end());i++)
- {
- if ((*i)->GetNumber() == 0.0f)
- bNegativeEvent = true;
- else
- bPositiveEvent= true;
- (*i)->Release();
-
- }
- m_events.clear();
+ bNegativeEvent = m_negevent;
+ bPositiveEvent = m_posevent;
+ RemoveAllEvents();
if (bPositiveEvent)
m_flag |= ACT_FLAG_ACTIVE;
@@ -945,8 +935,13 @@ KX_PYMETHODDEF_DOC(BL_ActionActuator, setChannel,
/* ------------------------------------------------------------------------- */
PyTypeObject BL_ActionActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"BL_ActionActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -1002,17 +997,17 @@ PyMethodDef BL_ActionActuator::Methods[] = {
};
PyAttributeDef BL_ActionActuator::Attributes[] = {
- KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ActionActuator, m_startframe),
- KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ActionActuator, m_endframe),
- KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ActionActuator, m_blendin),
+ KX_PYATTRIBUTE_FLOAT_RW("frameStart", 0, MAXFRAMEF, BL_ActionActuator, m_startframe),
+ KX_PYATTRIBUTE_FLOAT_RW("frameEnd", 0, MAXFRAMEF, BL_ActionActuator, m_endframe),
+ KX_PYATTRIBUTE_FLOAT_RW("blendIn", 0, MAXFRAMEF, BL_ActionActuator, m_blendin),
KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ActionActuator, pyattr_get_action, pyattr_set_action),
KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ActionActuator, m_priority),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ActionActuator, m_localtime, CheckFrame),
- KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ActionActuator, m_propname),
- KX_PYATTRIBUTE_STRING_RW("frameProperty", 0, 31, false, BL_ActionActuator, m_framepropname),
- KX_PYATTRIBUTE_BOOL_RW("continue", BL_ActionActuator, m_end_reset),
+ KX_PYATTRIBUTE_STRING_RW("propName", 0, 31, false, BL_ActionActuator, m_propname),
+ KX_PYATTRIBUTE_STRING_RW("framePropName", 0, 31, false, BL_ActionActuator, m_framepropname),
+ KX_PYATTRIBUTE_BOOL_RW("useContinue", BL_ActionActuator, m_end_reset),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("blendTime", 0, MAXFRAMEF, BL_ActionActuator, m_blendframe, CheckBlendTime),
- KX_PYATTRIBUTE_SHORT_RW_CHECK("type",0,100,false,BL_ActionActuator,m_playtype,CheckType),
+ KX_PYATTRIBUTE_SHORT_RW_CHECK("mode",0,100,false,BL_ActionActuator,m_playtype,CheckType),
{ NULL } //Sentinel
};
@@ -1020,6 +1015,10 @@ PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* BL_ActionActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}
@@ -1038,7 +1037,7 @@ int BL_ActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF
if (!PyString_Check(value))
{
PyErr_SetString(PyExc_ValueError, "actuator.action = val: Action Actuator, expected the string name of the action");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
bAction *action= NULL;
@@ -1050,11 +1049,11 @@ int BL_ActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF
if (!action)
{
PyErr_SetString(PyExc_ValueError, "actuator.action = val: Action Actuator, action not found!");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
}
self->SetAction(action);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
diff --git a/source/gameengine/Converter/BL_ActionActuator.h b/source/gameengine/Converter/BL_ActionActuator.h
index 6ae7f716b4b..b3c15c08f50 100644
--- a/source/gameengine/Converter/BL_ActionActuator.h
+++ b/source/gameengine/Converter/BL_ActionActuator.h
@@ -114,6 +114,7 @@ public:
KX_PYMETHOD_DOC(BL_ActionActuator,setChannel);
virtual PyObject* py_getattro(PyObject* attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject* attr, PyObject* value);
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp
index 071cd50c506..6fc5c40d570 100644
--- a/source/gameengine/Converter/BL_ArmatureObject.cpp
+++ b/source/gameengine/Converter/BL_ArmatureObject.cpp
@@ -70,20 +70,17 @@ BL_ArmatureObject::BL_ArmatureObject(
CValue* BL_ArmatureObject::GetReplica()
{
BL_ArmatureObject* replica = new BL_ArmatureObject(*this);
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
-void BL_ArmatureObject::ProcessReplica(BL_ArmatureObject *replica)
+void BL_ArmatureObject::ProcessReplica()
{
- KX_GameObject::ProcessReplica(replica);
+ bPose *pose= m_pose;
+ KX_GameObject::ProcessReplica();
- replica->m_pose = NULL;
- game_copy_pose(&replica->m_pose, m_pose);
+ m_pose = NULL;
+ game_copy_pose(&m_pose, pose);
}
BL_ArmatureObject::~BL_ArmatureObject()
diff --git a/source/gameengine/Converter/BL_ArmatureObject.h b/source/gameengine/Converter/BL_ArmatureObject.h
index d68e37d9e37..d5402cfd126 100644
--- a/source/gameengine/Converter/BL_ArmatureObject.h
+++ b/source/gameengine/Converter/BL_ArmatureObject.h
@@ -45,7 +45,7 @@ class BL_ArmatureObject : public KX_GameObject
public:
double GetLastFrame ();
short GetActivePriority();
- virtual void ProcessReplica(BL_ArmatureObject *replica);
+ virtual void ProcessReplica();
class BL_ActionActuator * GetActiveAction();
BL_ArmatureObject(
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 459415f86cd..5c986752051 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -90,6 +90,7 @@
#include "BKE_object.h"
#include "BKE_scene.h"
#include "BL_SkinMeshObject.h"
+#include "BL_ModifierDeformer.h"
#include "BL_ShapeDeformer.h"
#include "BL_SkinDeformer.h"
#include "BL_MeshDeformer.h"
@@ -317,7 +318,8 @@ typedef struct MTF_localLayer
}MTF_localLayer;
// ------------------------------------
-BL_Material* ConvertMaterial(
+bool ConvertMaterial(
+ BL_Material *material,
Material *mat,
MTFace* tface,
const char *tfaceName,
@@ -328,9 +330,7 @@ BL_Material* ConvertMaterial(
MTF_localLayer *layers,
bool glslmat)
{
- //this needs some type of manager
- BL_Material *material = new BL_Material();
-
+ material->Initialize();
int numchan = -1, texalpha = 0;
bool validmat = (mat!=0);
bool validface = (tface!=0);
@@ -341,6 +341,7 @@ BL_Material* ConvertMaterial(
material->IdMode = DEFAULT_BLENDER;
material->glslmat = (validmat)? glslmat: false;
+ material->materialindex = mface->mat_nr;
// --------------------------------
if(validmat) {
@@ -718,7 +719,7 @@ BL_Material* ConvertMaterial(
material->tface = tface;
material->material = mat;
- return material;
+ return true;
}
@@ -728,6 +729,8 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
bool skinMesh = false;
int lightlayer = blenderobj->lay;
+ if ((meshobj = converter->FindGameMesh(mesh/*, ob->lay*/)) != NULL)
+ return meshobj;
// Get DerivedMesh data
DerivedMesh *dm = CDDM_from_mesh(mesh, blenderobj);
@@ -747,7 +750,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
}
// Determine if we need to make a skinned mesh
- if (mesh->dvert || mesh->key || ((blenderobj->gameflag & OB_SOFT_BODY) != 0))
+ if (mesh->dvert || mesh->key || ((blenderobj->gameflag & OB_SOFT_BODY) != 0) || BL_ModifierDeformer::HasCompatibleDeformer(blenderobj))
{
meshobj = new BL_SkinMeshObject(mesh, lightlayer);
skinMesh = true;
@@ -779,6 +782,13 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
meshobj->SetName(mesh->id.name);
meshobj->m_sharedvertex_map.resize(totvert);
+ RAS_IPolyMaterial* polymat = NULL;
+ STR_String imastr;
+ // These pointers will hold persistent material structure during the conversion
+ // to avoid countless allocation/deallocation of memory.
+ BL_Material* bl_mat = NULL;
+ KX_BlenderMaterial* kx_blmat = NULL;
+ KX_PolygonMaterial* kx_polymat = NULL;
for (int f=0;f<totface;f++,mface++)
{
@@ -841,8 +851,6 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
{
bool visible = true;
bool twoside = false;
- RAS_IPolyMaterial* polymat = NULL;
- BL_Material *bl_mat = NULL;
if(converter->GetMaterials()) {
/* do Blender Multitexture and Blender GLSL materials */
@@ -850,11 +858,11 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
MT_Point2 uv[4];
/* first is the BL_Material */
- bl_mat = ConvertMaterial(ma, tface, tfaceName, mface, mcol,
+ if (!bl_mat)
+ bl_mat = new BL_Material();
+ ConvertMaterial(bl_mat, ma, tface, tfaceName, mface, mcol,
lightlayer, blenderobj, layers, converter->GetGLSLMaterials());
- bl_mat->material_index = (int)mface->mat_nr;
-
visible = ((bl_mat->ras_mode & POLY_VIS)!=0);
collider = ((bl_mat->ras_mode & COLLIDER)!=0);
twoside = ((bl_mat->mode & TF_TWOSIDE)!=0);
@@ -873,12 +881,16 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
uv22 = uv[2]; uv23 = uv[3];
/* then the KX_BlenderMaterial */
- polymat = new KX_BlenderMaterial(scene, bl_mat, skinMesh, lightlayer);
+ if (kx_blmat == NULL)
+ kx_blmat = new KX_BlenderMaterial();
+
+ kx_blmat->Initialize(scene, bl_mat, skinMesh, lightlayer);
+ polymat = static_cast<RAS_IPolyMaterial*>(kx_blmat);
}
else {
/* do Texture Face materials */
Image* bima = (tface)? (Image*)tface->tpage: NULL;
- STR_String imastr = (tface)? (bima? (bima)->id.name : "" ) : "";
+ imastr = (tface)? (bima? (bima)->id.name : "" ) : "";
char transp=0;
short mode=0, tile=0;
@@ -956,9 +968,12 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
bool alpha = (transp == TF_ALPHA || transp == TF_ADD);
bool zsort = (mode & TF_ALPHASORT)? alpha: 0;
- polymat = new KX_PolygonMaterial(imastr, ma,
+ if (kx_polymat == NULL)
+ kx_polymat = new KX_PolygonMaterial();
+ kx_polymat->Initialize(imastr, ma, (int)mface->mat_nr,
tile, tilexrep, tileyrep,
mode, transp, alpha, zsort, lightlayer, tface, (unsigned int*)mcol);
+ polymat = static_cast<RAS_IPolyMaterial*>(kx_polymat);
if (ma) {
polymat->m_specular = MT_Vector3(ma->specr, ma->specg, ma->specb)*ma->spec;
@@ -983,15 +998,17 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
converter->RegisterPolyMaterial(polymat);
if(converter->GetMaterials()) {
converter->RegisterBlenderMaterial(bl_mat);
+ // the poly material has been stored in the bucket, next time we must create a new one
+ bl_mat = NULL;
+ kx_blmat = NULL;
+ } else {
+ // the poly material has been stored in the bucket, next time we must create a new one
+ kx_polymat = NULL;
}
} else {
- // delete the material objects since they are no longer needed
// from now on, use the polygon material from the material bucket
- delete polymat;
- if(converter->GetMaterials()) {
- delete bl_mat;
- }
polymat = bucket->GetPolyMaterial();
+ // keep the material pointers, they will be reused for next face
}
int nverts = (mface->v4)? 4: 3;
@@ -1028,14 +1045,21 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
// pre calculate texture generation
for(list<RAS_MeshMaterial>::iterator mit = meshobj->GetFirstMaterial();
mit != meshobj->GetLastMaterial(); ++ mit) {
- mit->m_bucket->GetPolyMaterial()->OnConstruction();
+ mit->m_bucket->GetPolyMaterial()->OnConstruction(lightlayer);
}
if (layers)
delete []layers;
dm->release(dm);
-
+ // cleanup material
+ if (bl_mat)
+ delete bl_mat;
+ if (kx_blmat)
+ delete kx_blmat;
+ if (kx_polymat)
+ delete kx_polymat;
+ converter->RegisterGameMesh(meshobj, mesh);
return meshobj;
}
@@ -1228,18 +1252,34 @@ static void my_tex_space_mesh(Mesh *me)
}
-static void my_get_local_bounds(Object *ob, float *center, float *size)
+static void my_get_local_bounds(Object *ob, DerivedMesh *dm, float *center, float *size)
{
BoundBox *bb= NULL;
/* uses boundbox, function used by Ketsji */
switch (ob->type)
{
case OB_MESH:
- bb= ( (Mesh *)ob->data )->bb;
- if(bb==0)
+ if (dm)
+ {
+ float min_r[3], max_r[3];
+ INIT_MINMAX(min_r, max_r);
+ dm->getMinMax(dm, min_r, max_r);
+ size[0]= 0.5*fabs(max_r[0] - min_r[0]);
+ size[1]= 0.5*fabs(max_r[1] - min_r[1]);
+ size[2]= 0.5*fabs(max_r[2] - min_r[2]);
+
+ center[0]= 0.5*(max_r[0] + min_r[0]);
+ center[1]= 0.5*(max_r[1] + min_r[1]);
+ center[2]= 0.5*(max_r[2] + min_r[2]);
+ return;
+ } else
{
- my_tex_space_mesh((struct Mesh *)ob->data);
bb= ( (Mesh *)ob->data )->bb;
+ if(bb==0)
+ {
+ my_tex_space_mesh((struct Mesh *)ob->data);
+ bb= ( (Mesh *)ob->data )->bb;
+ }
}
break;
case OB_CURVE:
@@ -1297,8 +1337,15 @@ void BL_CreateGraphicObjectNew(KX_GameObject* gameobj,
gameobj->SetGraphicController(ctrl);
ctrl->setNewClientInfo(gameobj->getClientInfo());
ctrl->setLocalAabb(localAabbMin, localAabbMax);
- if (isActive)
- env->addCcdGraphicController(ctrl);
+ if (isActive) {
+ // add first, this will create the proxy handle, only if the object is visible
+ if (gameobj->GetVisible())
+ env->addCcdGraphicController(ctrl);
+ // update the mesh if there is a deformer, this will also update the bounding box for modifiers
+ RAS_Deformer* deformer = gameobj->GetDeformer();
+ if (deformer)
+ deformer->UpdateBuckets();
+ }
}
break;
#endif
@@ -1334,10 +1381,11 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
}
bool isCompoundChild = false;
+ bool hasCompoundChildren = !parent && (blenderobject->gameflag & OB_CHILD);
- if (parent && (parent->gameflag & OB_DYNAMIC)) {
+ if (parent/* && (parent->gameflag & OB_DYNAMIC)*/) {
- if ((parent->gameflag & OB_CHILD) != 0)
+ if ((parent->gameflag & OB_CHILD) != 0 && (blenderobject->gameflag & OB_CHILD))
{
isCompoundChild = true;
}
@@ -1363,14 +1411,26 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_lockZRotaxis = (blenderobject->gameflag2 & OB_LOCK_RIGID_BODY_Z_ROT_AXIS) !=0;
objprop.m_isCompoundChild = isCompoundChild;
- objprop.m_hasCompoundChildren = (blenderobject->gameflag & OB_CHILD) != 0;
+ objprop.m_hasCompoundChildren = hasCompoundChildren;
objprop.m_margin = blenderobject->margin;
+
// ACTOR is now a separate feature
objprop.m_isactor = (blenderobject->gameflag & OB_ACTOR)!=0;
objprop.m_dyna = (blenderobject->gameflag & OB_DYNAMIC) != 0;
objprop.m_softbody = (blenderobject->gameflag & OB_SOFT_BODY) != 0;
objprop.m_angular_rigidbody = (blenderobject->gameflag & OB_RIGID_BODY) != 0;
+ ///contact processing threshold is only for rigid bodies and static geometry, not 'dynamic'
+ if (objprop.m_angular_rigidbody || !objprop.m_dyna )
+ {
+ objprop.m_contactProcessingThreshold = blenderobject->m_contactProcessingThreshold;
+ } else
+ {
+ objprop.m_contactProcessingThreshold = 0.f;
+ }
+
+ objprop.m_sensor = (blenderobject->gameflag & OB_SENSOR) != 0;
+
if (objprop.m_softbody)
{
///for game soft bodies
@@ -1411,7 +1471,9 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_soft_kAHR= blenderobject->bsoft->kAHR; /* Anchors hardness [0,1] */
objprop.m_soft_collisionflags= blenderobject->bsoft->collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */
objprop.m_soft_numclusteriterations= blenderobject->bsoft->numclusteriterations; /* number of iterations to refine collision clusters*/
-
+ objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */
+ objprop.m_margin = blenderobject->bsoft->margin;
+ objprop.m_contactProcessingThreshold = 0.f;
} else
{
objprop.m_gamesoftFlag = OB_BSB_BENDING_CONSTRAINTS | OB_BSB_SHAPE_MATCHING | OB_BSB_AERO_VPOINT;
@@ -1450,6 +1512,9 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_soft_kAHR= 0.7f;
objprop.m_soft_collisionflags= OB_BSB_COL_SDF_RS + OB_BSB_COL_VF_SS;
objprop.m_soft_numclusteriterations= 16;
+ objprop.m_soft_welding = 0.f;
+ objprop.m_margin = 0.f;
+ objprop.m_contactProcessingThreshold = 0.f;
}
}
@@ -1469,7 +1534,10 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
}
KX_BoxBounds bb;
- my_get_local_bounds(blenderobject,objprop.m_boundobject.box.m_center,bb.m_extends);
+ DerivedMesh* dm = NULL;
+ if (gameobj->GetDeformer())
+ dm = gameobj->GetDeformer()->GetFinalMesh();
+ my_get_local_bounds(blenderobject,dm,objprop.m_boundobject.box.m_center,bb.m_extends);
if (blenderobject->gameflag & OB_BOUNDS)
{
switch (blenderobject->boundtype)
@@ -1521,12 +1589,13 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
}
- if (parent && (parent->gameflag & OB_DYNAMIC)) {
-
+ if (parent/* && (parent->gameflag & OB_DYNAMIC)*/) {
+ // parented object cannot be dynamic
KX_GameObject *parentgameobject = converter->FindGameObject(parent);
objprop.m_dynamic_parent = parentgameobject;
//cannot be dynamic:
objprop.m_dyna = false;
+ objprop.m_softbody = false;
shapeprops->m_mass = 0.f;
}
@@ -1537,7 +1606,7 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
{
#ifdef USE_BULLET
case UseBullet:
- KX_ConvertBulletObject(gameobj, meshobj, kxscene, shapeprops, smmaterial, &objprop);
+ KX_ConvertBulletObject(gameobj, meshobj, dm, kxscene, shapeprops, smmaterial, &objprop);
break;
#endif
@@ -1612,7 +1681,7 @@ static KX_LightObject *gamelight_from_blamp(Object *ob, Lamp *la, unsigned int l
static KX_Camera *gamecamera_from_bcamera(Object *ob, KX_Scene *kxscene, KX_BlenderSceneConverter *converter) {
Camera* ca = static_cast<Camera*>(ob->data);
- RAS_CameraData camdata(ca->lens, ca->clipsta, ca->clipend, ca->type == CAM_PERSP, dof_camera(ob));
+ RAS_CameraData camdata(ca->lens, ca->ortho_scale, ca->clipsta, ca->clipend, ca->type == CAM_PERSP, dof_camera(ob));
KX_Camera *gamecamera;
gamecamera= new KX_Camera(kxscene, KX_Scene::m_callbacks, camdata);
@@ -1660,14 +1729,9 @@ static KX_GameObject *gameobject_from_blenderobject(
case OB_MESH:
{
Mesh* mesh = static_cast<Mesh*>(ob->data);
- RAS_MeshObject* meshobj = converter->FindGameMesh(mesh, ob->lay);
float center[3], extents[3];
float radius = my_boundbox_mesh((Mesh*) ob->data, center, extents);
-
- if (!meshobj) {
- meshobj = BL_ConvertMesh(mesh,ob,rendertools,kxscene,converter);
- converter->RegisterGameMesh(meshobj, mesh);
- }
+ RAS_MeshObject* meshobj = BL_ConvertMesh(mesh,ob,rendertools,kxscene,converter);
// needed for python scripting
kxscene->GetLogicManager()->RegisterMeshName(meshobj->GetName(),meshobj);
@@ -1689,8 +1753,15 @@ static KX_GameObject *gameobject_from_blenderobject(
bool bHasShapeKey = mesh->key != NULL && mesh->key->type==KEY_RELATIVE;
bool bHasDvert = mesh->dvert != NULL && ob->defbase.first;
bool bHasArmature = (ob->parent && ob->parent->type == OB_ARMATURE && ob->partype==PARSKEL && bHasDvert);
+ bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(ob);
- if (bHasShapeKey) {
+ if (bHasModifier) {
+ BL_ModifierDeformer *dcont = new BL_ModifierDeformer((BL_DeformableGameObject *)gameobj,
+ blenderscene, ob, (BL_SkinMeshObject *)meshobj);
+ ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
+ if (bHasShapeKey && bHasArmature)
+ dcont->LoadShapeDrivers(ob->parent);
+ } else if (bHasShapeKey) {
// not that we can have shape keys without dvert!
BL_ShapeDeformer *dcont = new BL_ShapeDeformer((BL_DeformableGameObject*)gameobj,
ob, (BL_SkinMeshObject*)meshobj);
@@ -1910,8 +1981,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
int activeLayerBitInfo = blenderscene->lay;
- // templist to find Root Parents (object with no parents)
- CListValue* templist = new CListValue();
+ // list of all object converted, active and inactive
CListValue* sumolist = new CListValue();
vector<parentChildLink> vec_parent_child;
@@ -2011,14 +2081,12 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
gameobj->SetName(blenderobject->id.name);
- // templist to find Root Parents (object with no parents)
- templist->Add(gameobj->AddRef());
-
// update children/parent hierarchy
if ((blenderobject->parent != 0)&&(!converter->addInitFromFrame))
{
// blender has an additional 'parentinverse' offset in each object
- SG_Node* parentinversenode = new SG_Node(NULL,NULL,SG_Callbacks());
+ SG_Callbacks callback(NULL,NULL,NULL,KX_Scene::KX_ScenegraphUpdateFunc,KX_Scene::KX_ScenegraphRescheduleFunc);
+ SG_Node* parentinversenode = new SG_Node(NULL,kxscene,callback);
// define a normal parent relationship for this node.
KX_NormalParentRelation * parent_relation = KX_NormalParentRelation::New();
@@ -2205,14 +2273,12 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
gameobj->SetName(blenderobject->id.name);
- // templist to find Root Parents (object with no parents)
- templist->Add(gameobj->AddRef());
-
// update children/parent hierarchy
if ((blenderobject->parent != 0)&&(!converter->addInitFromFrame))
{
// blender has an additional 'parentinverse' offset in each object
- SG_Node* parentinversenode = new SG_Node(NULL,NULL,SG_Callbacks());
+ SG_Callbacks callback(NULL,NULL,NULL,KX_Scene::KX_ScenegraphUpdateFunc,KX_Scene::KX_ScenegraphRescheduleFunc);
+ SG_Node* parentinversenode = new SG_Node(NULL,kxscene,callback);
// define a normal parent relationship for this node.
KX_NormalParentRelation * parent_relation = KX_NormalParentRelation::New();
@@ -2359,8 +2425,6 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
for ( i=0;i<childrenlist->GetCount();i++)
{
KX_GameObject* obj = static_cast<KX_GameObject*>(childrenlist->GetValue(i));
- if (templist->RemoveValue(obj))
- obj->Release();
if (sumolist->RemoveValue(obj))
obj->Release();
if (logicbrick_conversionlist->RemoveValue(obj))
@@ -2416,16 +2480,49 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
vec_parent_child.clear();
// find 'root' parents (object that has not parents in SceneGraph)
- for (i=0;i<templist->GetCount();++i)
+ for (i=0;i<sumolist->GetCount();++i)
{
- KX_GameObject* gameobj = (KX_GameObject*) templist->GetValue(i);
+ KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
if (gameobj->GetSGNode()->GetSGParent() == 0)
{
parentlist->Add(gameobj->AddRef());
gameobj->NodeUpdateGS(0);
}
}
-
+
+ // create graphic controller for culling
+ if (kxscene->GetDbvtCulling())
+ {
+ bool occlusion = false;
+ for (i=0; i<sumolist->GetCount();i++)
+ {
+ KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
+ if (gameobj->GetMeshCount() > 0)
+ {
+ MT_Point3 box[2];
+ gameobj->GetSGNode()->BBox().getmm(box, MT_Transform::Identity());
+ // box[0] is the min, box[1] is the max
+ bool isactive = objectlist->SearchValue(gameobj);
+ BL_CreateGraphicObjectNew(gameobj,box[0],box[1],kxscene,isactive,physics_engine);
+ if (gameobj->GetOccluder())
+ occlusion = true;
+ }
+ }
+ if (occlusion)
+ kxscene->SetDbvtOcclusionRes(blenderscene->world->occlusionRes);
+ }
+ if (blenderscene->world)
+ kxscene->GetPhysicsEnvironment()->setNumTimeSubSteps(blenderscene->world->physubstep);
+
+ // now that the scenegraph is complete, let's instantiate the deformers.
+ // We need that to create reusable derived mesh and physic shapes
+ for (i=0;i<sumolist->GetCount();++i)
+ {
+ KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
+ if (gameobj->GetDeformer())
+ gameobj->GetDeformer()->UpdateBuckets();
+ }
+
bool processCompoundChildren = false;
// create physics information
@@ -2459,28 +2556,6 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
BL_CreatePhysicsObjectNew(gameobj,blenderobject,meshobj,kxscene,layerMask,physics_engine,converter,processCompoundChildren);
}
- // create graphic controller for culling
- if (kxscene->GetDbvtCulling())
- {
- bool occlusion = false;
- for (i=0; i<sumolist->GetCount();i++)
- {
- KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
- if (gameobj->GetMeshCount() > 0)
- {
- MT_Point3 box[2];
- gameobj->GetSGNode()->BBox().getmm(box, MT_Transform::Identity());
- // box[0] is the min, box[1] is the max
- bool isactive = objectlist->SearchValue(gameobj);
- BL_CreateGraphicObjectNew(gameobj,box[0],box[1],kxscene,isactive,physics_engine);
- if (gameobj->GetOccluder())
- occlusion = true;
- }
- }
- if (occlusion)
- kxscene->SetDbvtOcclusionRes(blenderscene->world->occlusionRes);
- }
-
//set ini linearVel and int angularVel //rcruiz
if (converter->addInitFromFrame)
for (i=0;i<sumolist->GetCount();i++)
@@ -2566,11 +2641,8 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
}
}
- templist->Release();
sumolist->Release();
- int executePriority=0; /* incremented by converter routines */
-
// convert global sound stuff
/* XXX, glob is the very very wrong place for this
@@ -2601,7 +2673,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
struct Object* blenderobj = converter->FindBlenderObject(gameobj);
int layerMask = (groupobj.find(blenderobj) == groupobj.end()) ? activeLayerBitInfo : 0;
bool isInActiveLayer = (blenderobj->lay & layerMask)!=0;
- BL_ConvertActuators(maggie->name, blenderobj,gameobj,logicmgr,kxscene,ketsjiEngine,executePriority, layerMask,isInActiveLayer,rendertools,converter);
+ BL_ConvertActuators(maggie->name, blenderobj,gameobj,logicmgr,kxscene,ketsjiEngine,layerMask,isInActiveLayer,rendertools,converter);
}
for ( i=0;i<logicbrick_conversionlist->GetCount();i++)
{
@@ -2609,7 +2681,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
struct Object* blenderobj = converter->FindBlenderObject(gameobj);
int layerMask = (groupobj.find(blenderobj) == groupobj.end()) ? activeLayerBitInfo : 0;
bool isInActiveLayer = (blenderobj->lay & layerMask)!=0;
- BL_ConvertControllers(blenderobj,gameobj,logicmgr,pythondictionary,executePriority,layerMask,isInActiveLayer,converter);
+ BL_ConvertControllers(blenderobj,gameobj,logicmgr,pythondictionary,layerMask,isInActiveLayer,converter);
}
for ( i=0;i<logicbrick_conversionlist->GetCount();i++)
{
@@ -2617,7 +2689,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
struct Object* blenderobj = converter->FindBlenderObject(gameobj);
int layerMask = (groupobj.find(blenderobj) == groupobj.end()) ? activeLayerBitInfo : 0;
bool isInActiveLayer = (blenderobj->lay & layerMask)!=0;
- BL_ConvertSensors(blenderobj,gameobj,logicmgr,kxscene,ketsjiEngine,keydev,executePriority,layerMask,isInActiveLayer,canvas,converter);
+ BL_ConvertSensors(blenderobj,gameobj,logicmgr,kxscene,ketsjiEngine,keydev,layerMask,isInActiveLayer,canvas,converter);
// set the init state to all objects
gameobj->SetInitState((blenderobj->init_state)?blenderobj->init_state:blenderobj->state);
}
diff --git a/source/gameengine/Converter/BL_DeformableGameObject.cpp b/source/gameengine/Converter/BL_DeformableGameObject.cpp
index e2610d2b405..cb882f31e80 100644
--- a/source/gameengine/Converter/BL_DeformableGameObject.cpp
+++ b/source/gameengine/Converter/BL_DeformableGameObject.cpp
@@ -30,6 +30,8 @@
#include "BL_DeformableGameObject.h"
#include "BL_ShapeDeformer.h"
#include "BL_ShapeActionActuator.h"
+#include "RAS_MaterialBucket.h"
+
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -41,27 +43,19 @@ BL_DeformableGameObject::~BL_DeformableGameObject()
delete m_pDeformer; // __NLA : Temporary until we decide where to put this
}
-void BL_DeformableGameObject::ProcessReplica(KX_GameObject* replica)
+void BL_DeformableGameObject::ProcessReplica()
{
- BL_MeshDeformer *deformer;
- KX_GameObject::ProcessReplica(replica);
-
- if (m_pDeformer) {
- deformer = (BL_MeshDeformer*)m_pDeformer->GetReplica(replica);
- ((BL_DeformableGameObject*)replica)->m_pDeformer = deformer;
- }
+ KX_GameObject::ProcessReplica();
+ if (m_pDeformer)
+ m_pDeformer= (BL_MeshDeformer*)m_pDeformer->GetReplica();
}
CValue* BL_DeformableGameObject::GetReplica()
{
BL_DeformableGameObject* replica = new BL_DeformableGameObject(*this);//m_float,GetName());
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -109,3 +103,14 @@ bool BL_DeformableGameObject::GetShape(vector<float> &shape)
return !shape.empty();
}
+void BL_DeformableGameObject::SetDeformer(class RAS_Deformer* deformer)
+{
+ m_pDeformer = deformer;
+
+ SG_QList::iterator<RAS_MeshSlot> mit(m_meshSlots);
+ for(mit.begin(); !mit.end(); ++mit)
+ {
+ (*mit)->SetDeformer(deformer);
+ }
+}
+
diff --git a/source/gameengine/Converter/BL_DeformableGameObject.h b/source/gameengine/Converter/BL_DeformableGameObject.h
index 126a1fcb1e7..b20b8e81b37 100644
--- a/source/gameengine/Converter/BL_DeformableGameObject.h
+++ b/source/gameengine/Converter/BL_DeformableGameObject.h
@@ -62,7 +62,7 @@ public:
m_pDeformer->Relink (map);
KX_GameObject::Relink(map);
};
- void ProcessReplica(KX_GameObject* replica);
+ void ProcessReplica();
BL_DeformableGameObject(Object* blendobj, void* sgReplicationInfo, SG_Callbacks callbacks) :
KX_GameObject(sgReplicationInfo,callbacks),
@@ -83,10 +83,7 @@ public:
return (m_pDeformer) ? ((BL_MeshDeformer*)m_pDeformer)->GetMesh()->key : NULL;
}
- virtual void SetDeformer(class RAS_Deformer* deformer)
- {
- m_pDeformer = deformer;
- }
+ virtual void SetDeformer(class RAS_Deformer* deformer);
virtual class RAS_Deformer* GetDeformer()
{
return m_pDeformer;
diff --git a/source/gameengine/Converter/BL_MeshDeformer.cpp b/source/gameengine/Converter/BL_MeshDeformer.cpp
index 80112346c72..d7012abe316 100644
--- a/source/gameengine/Converter/BL_MeshDeformer.cpp
+++ b/source/gameengine/Converter/BL_MeshDeformer.cpp
@@ -47,6 +47,7 @@
#include "GEN_Map.h"
#include "STR_HashedString.h"
+#include "BLI_arithb.h"
bool BL_MeshDeformer::Apply(RAS_IPolyMaterial*)
{
@@ -90,6 +91,15 @@ BL_MeshDeformer::~BL_MeshDeformer()
delete [] m_transnors;
}
+void BL_MeshDeformer::ProcessReplica()
+{
+ m_transverts = NULL;
+ m_transnors = NULL;
+ m_tvtot = 0;
+ m_bDynamic=false;
+ m_lastDeformUpdate = -1;
+}
+
void BL_MeshDeformer::Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
{
void **h_obj = (*map)[m_gameobj];
@@ -133,9 +143,9 @@ void BL_MeshDeformer::RecalcNormals()
RAS_TexVert& v3 = it.vertex[it.index[i+2]];
RAS_TexVert *v4 = NULL;
- const float *co1 = v1.getXYZ();
- const float *co2 = v2.getXYZ();
- const float *co3 = v3.getXYZ();
+ const float *co1 = m_transverts[v1.getOrigIndex()];
+ const float *co2 = m_transverts[v2.getOrigIndex()];
+ const float *co3 = m_transverts[v3.getOrigIndex()];
const float *co4 = NULL;
/* compute face normal */
@@ -143,7 +153,7 @@ void BL_MeshDeformer::RecalcNormals()
if(nvert == 4) {
v4 = &it.vertex[it.index[i+3]];
- co4 = v4->getXYZ();
+ co4 = m_transverts[v4->getOrigIndex()];
n1[0]= co1[0]-co3[0];
n1[1]= co1[1]-co3[1];
@@ -166,6 +176,7 @@ void BL_MeshDeformer::RecalcNormals()
fnor[0]= n1[1]*n2[2] - n1[2]*n2[1];
fnor[1]= n1[2]*n2[0] - n1[0]*n2[2];
fnor[2]= n1[0]*n2[1] - n1[1]*n2[0];
+ Normalize(fnor);
/* add to vertices for smooth normals */
float *vn1 = m_transnors[v1.getOrigIndex()];
diff --git a/source/gameengine/Converter/BL_MeshDeformer.h b/source/gameengine/Converter/BL_MeshDeformer.h
index 8de59c1cdf3..99ae5f9dea0 100644
--- a/source/gameengine/Converter/BL_MeshDeformer.h
+++ b/source/gameengine/Converter/BL_MeshDeformer.h
@@ -64,7 +64,9 @@ public:
virtual void SetSimulatedTime(double time){};
virtual bool Apply(class RAS_IPolyMaterial *mat);
virtual bool Update(void){ return false; };
- virtual RAS_Deformer* GetReplica(class KX_GameObject* replica){return NULL;};
+ virtual bool UpdateBuckets(void){ return false; };
+ virtual RAS_Deformer* GetReplica(){return NULL;};
+ virtual void ProcessReplica();
struct Mesh* GetMesh() { return m_bmesh; };
// virtual void InitDeform(double time){};
diff --git a/source/gameengine/Converter/BL_ModifierDeformer.cpp b/source/gameengine/Converter/BL_ModifierDeformer.cpp
new file mode 100644
index 00000000000..80165548ff2
--- /dev/null
+++ b/source/gameengine/Converter/BL_ModifierDeformer.cpp
@@ -0,0 +1,183 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifdef WIN32
+#pragma warning (disable : 4786)
+#endif //WIN32
+
+#include "MEM_guardedalloc.h"
+#include "BL_ModifierDeformer.h"
+#include "GEN_Map.h"
+#include "STR_HashedString.h"
+#include "RAS_IPolygonMaterial.h"
+#include "BL_SkinMeshObject.h"
+#include "PHY_IGraphicController.h"
+
+//#include "BL_ArmatureController.h"
+#include "DNA_armature_types.h"
+#include "DNA_action_types.h"
+#include "DNA_key_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
+#include "DNA_ipo_types.h"
+#include "DNA_curve_types.h"
+#include "DNA_modifier_types.h"
+#include "DNA_scene_types.h"
+#include "BKE_armature.h"
+#include "BKE_action.h"
+#include "BKE_key.h"
+#include "BKE_ipo.h"
+#include "MT_Point3.h"
+
+extern "C"{
+ #include "BKE_customdata.h"
+ #include "BKE_DerivedMesh.h"
+ #include "BKE_lattice.h"
+ #include "BKE_modifier.h"
+}
+ #include "BKE_utildefines.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_arithb.h"
+
+#define __NLA_DEFNORMALS
+//#undef __NLA_DEFNORMALS
+
+
+BL_ModifierDeformer::~BL_ModifierDeformer()
+{
+ if (m_dm) {
+ // deformedOnly is used as a user counter
+ if (--m_dm->deformedOnly == 0) {
+ m_dm->needsFree = 1;
+ m_dm->release(m_dm);
+ }
+ }
+};
+
+RAS_Deformer *BL_ModifierDeformer::GetReplica()
+{
+ BL_ModifierDeformer *result;
+
+ result = new BL_ModifierDeformer(*this);
+ result->ProcessReplica();
+ return result;
+}
+
+void BL_ModifierDeformer::ProcessReplica()
+{
+ /* Note! - This is not inherited from PyObjectPlus */
+ BL_ShapeDeformer::ProcessReplica();
+ if (m_dm)
+ // by default try to reuse mesh, deformedOnly is used as a user count
+ m_dm->deformedOnly++;
+ // this will force an update and if the mesh cannot be reused, a new one will be created
+ m_lastModifierUpdate = -1;
+}
+
+bool BL_ModifierDeformer::HasCompatibleDeformer(Object *ob)
+{
+ if (!ob->modifiers.first)
+ return false;
+ // soft body cannot use mesh modifiers
+ if ((ob->gameflag & OB_SOFT_BODY) != 0)
+ return false;
+ ModifierData* md;
+ for (md = (ModifierData*)ob->modifiers.first; md; md = (ModifierData*)md->next) {
+ if (modifier_dependsOnTime(md))
+ continue;
+ if (!(md->mode & eModifierMode_Realtime))
+ continue;
+ return true;
+ }
+ return false;
+}
+
+bool BL_ModifierDeformer::Update(void)
+{
+ bool bShapeUpdate = BL_ShapeDeformer::Update();
+
+ if (bShapeUpdate || m_lastModifierUpdate != m_gameobj->GetLastFrame()) {
+ // static derived mesh are not updated
+ if (m_dm == NULL || m_bDynamic) {
+ /* execute the modifiers */
+ Object* blendobj = m_gameobj->GetBlendObject();
+ /* hack: the modifiers require that the mesh is attached to the object
+ It may not be the case here because of replace mesh actuator */
+ Mesh *oldmesh = (Mesh*)blendobj->data;
+ blendobj->data = m_bmesh;
+ /* execute the modifiers */
+ DerivedMesh *dm = mesh_create_derived_no_virtual(m_scene, blendobj, m_transverts, CD_MASK_MESH);
+ /* restore object data */
+ blendobj->data = oldmesh;
+ /* free the current derived mesh and replace, (dm should never be NULL) */
+ if (m_dm != NULL) {
+ // HACK! use deformedOnly as a user counter
+ if (--m_dm->deformedOnly == 0) {
+ m_dm->needsFree = 1;
+ m_dm->release(m_dm);
+ }
+ }
+ m_dm = dm;
+ // get rid of temporary data
+ m_dm->needsFree = 0;
+ m_dm->release(m_dm);
+ // HACK! use deformedOnly as a user counter
+ m_dm->deformedOnly = 1;
+ /* update the graphic controller */
+ PHY_IGraphicController *ctrl = m_gameobj->GetGraphicController();
+ if (ctrl) {
+ float min_r[3], max_r[3];
+ INIT_MINMAX(min_r, max_r);
+ m_dm->getMinMax(m_dm, min_r, max_r);
+ ctrl->setLocalAabb(min_r, max_r);
+ }
+ }
+ m_lastModifierUpdate=m_gameobj->GetLastFrame();
+ bShapeUpdate = true;
+ }
+ return bShapeUpdate;
+}
+
+bool BL_ModifierDeformer::Apply(RAS_IPolyMaterial *mat)
+{
+ if (!Update())
+ return false;
+
+ // drawing is based on derived mesh, must set it in the mesh slots
+ int nmat = m_pMeshObject->NumMaterials();
+ for (int imat=0; imat<nmat; imat++) {
+ RAS_MeshMaterial *mmat = m_pMeshObject->GetMeshMaterial(imat);
+ RAS_MeshSlot **slot = mmat->m_slots[(void*)m_gameobj];
+ if(!slot || !*slot)
+ continue;
+ (*slot)->m_pDerivedMesh = m_dm;
+ }
+ return true;
+}
diff --git a/source/gameengine/Converter/BL_ModifierDeformer.h b/source/gameengine/Converter/BL_ModifierDeformer.h
new file mode 100644
index 00000000000..b09cc2087ca
--- /dev/null
+++ b/source/gameengine/Converter/BL_ModifierDeformer.h
@@ -0,0 +1,107 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BL_MODIFIERDEFORMER
+#define BL_MODIFIERDEFORMER
+
+#ifdef WIN32
+#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
+#endif //WIN32
+
+#include "BL_ShapeDeformer.h"
+#include "BL_DeformableGameObject.h"
+#include <vector>
+
+struct DerivedMesh;
+struct Object;
+
+class BL_ModifierDeformer : public BL_ShapeDeformer
+{
+public:
+ static bool HasCompatibleDeformer(Object *ob);
+
+
+ BL_ModifierDeformer(BL_DeformableGameObject *gameobj,
+ Scene *scene,
+ Object *bmeshobj,
+ BL_SkinMeshObject *mesh)
+ :
+ BL_ShapeDeformer(gameobj,bmeshobj, mesh),
+ m_lastModifierUpdate(-1),
+ m_scene(scene),
+ m_dm(NULL)
+ {
+ m_recalcNormal = false;
+ };
+
+ /* this second constructor is needed for making a mesh deformable on the fly. */
+ BL_ModifierDeformer(BL_DeformableGameObject *gameobj,
+ struct Scene *scene,
+ struct Object *bmeshobj_old,
+ struct Object *bmeshobj_new,
+ class BL_SkinMeshObject *mesh,
+ bool release_object,
+ BL_ArmatureObject* arma = NULL)
+ :
+ BL_ShapeDeformer(gameobj, bmeshobj_old, bmeshobj_new, mesh, release_object, false, arma),
+ m_lastModifierUpdate(-1),
+ m_scene(scene),
+ m_dm(NULL)
+ {
+ };
+
+ virtual void ProcessReplica();
+ virtual RAS_Deformer *GetReplica();
+ virtual ~BL_ModifierDeformer();
+ virtual bool UseVertexArray()
+ {
+ return false;
+ }
+
+ bool Update (void);
+ bool Apply(RAS_IPolyMaterial *mat);
+ void ForceUpdate()
+ {
+ m_lastModifierUpdate = -1.0;
+ };
+ virtual struct DerivedMesh* GetFinalMesh()
+ {
+ return m_dm;
+ }
+
+
+protected:
+ double m_lastModifierUpdate;
+ Scene *m_scene;
+ DerivedMesh *m_dm;
+
+};
+
+#endif
+
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.cpp b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
index b0c9e0f5694..7aa8714de3a 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
@@ -61,6 +61,7 @@ BL_ShapeActionActuator::~BL_ShapeActionActuator()
void BL_ShapeActionActuator::ProcessReplica()
{
+ SCA_IActuator::ProcessReplica();
m_localtime=m_startframe;
m_lastUpdate=-1;
}
@@ -74,9 +75,6 @@ CValue* BL_ShapeActionActuator::GetReplica()
{
BL_ShapeActionActuator* replica = new BL_ShapeActionActuator(*this);//m_float,GetName());
replica->ProcessReplica();
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
}
@@ -162,16 +160,9 @@ bool BL_ShapeActionActuator::Update(double curtime, bool frame)
// maybe there are events for us in the queue !
if (frame)
{
- for (vector<CValue*>::iterator i=m_events.begin(); !(i==m_events.end());i++)
- {
- if ((*i)->GetNumber() == 0.0f)
- bNegativeEvent = true;
- else
- bPositiveEvent= true;
- (*i)->Release();
-
- }
- m_events.clear();
+ bNegativeEvent = m_negevent;
+ bPositiveEvent = m_posevent;
+ RemoveAllEvents();
if (bPositiveEvent)
m_flag |= ACT_FLAG_ACTIVE;
@@ -420,8 +411,13 @@ bool BL_ShapeActionActuator::Update(double curtime, bool frame)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject BL_ShapeActionActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"BL_ShapeActionActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -471,16 +467,16 @@ PyMethodDef BL_ShapeActionActuator::Methods[] = {
};
PyAttributeDef BL_ShapeActionActuator::Attributes[] = {
- KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ShapeActionActuator, m_startframe),
- KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ShapeActionActuator, m_endframe),
- KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ShapeActionActuator, m_blendin),
+ KX_PYATTRIBUTE_FLOAT_RW("frameStart", 0, MAXFRAMEF, BL_ShapeActionActuator, m_startframe),
+ KX_PYATTRIBUTE_FLOAT_RW("frameEnd", 0, MAXFRAMEF, BL_ShapeActionActuator, m_endframe),
+ KX_PYATTRIBUTE_FLOAT_RW("blendIn", 0, MAXFRAMEF, BL_ShapeActionActuator, m_blendin),
KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ShapeActionActuator, pyattr_get_action, pyattr_set_action),
KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ShapeActionActuator, m_priority),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ShapeActionActuator, m_localtime, CheckFrame),
- KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ShapeActionActuator, m_propname),
- KX_PYATTRIBUTE_STRING_RW("frameProperty", 0, 31, false, BL_ShapeActionActuator, m_framepropname),
+ KX_PYATTRIBUTE_STRING_RW("propName", 0, 31, false, BL_ShapeActionActuator, m_propname),
+ KX_PYATTRIBUTE_STRING_RW("framePropName", 0, 31, false, BL_ShapeActionActuator, m_framepropname),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("blendTime", 0, MAXFRAMEF, BL_ShapeActionActuator, m_blendframe, CheckBlendTime),
- KX_PYATTRIBUTE_SHORT_RW_CHECK("type",0,100,false,BL_ShapeActionActuator,m_playtype,CheckType),
+ KX_PYATTRIBUTE_SHORT_RW_CHECK("mode",0,100,false,BL_ShapeActionActuator,m_playtype,CheckType),
{ NULL } //Sentinel
};
@@ -489,6 +485,10 @@ PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* BL_ShapeActionActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int BL_ShapeActionActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}
@@ -870,7 +870,7 @@ int BL_ShapeActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE
if (!PyString_Check(value))
{
PyErr_SetString(PyExc_ValueError, "actuator.action = val: Shape Action Actuator, expected the string name of the action");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
bAction *action= NULL;
@@ -882,11 +882,11 @@ int BL_ShapeActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE
if (action==NULL)
{
PyErr_SetString(PyExc_ValueError, "actuator.action = val: Shape Action Actuator, action not found!");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
}
self->SetAction(action);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.h b/source/gameengine/Converter/BL_ShapeActionActuator.h
index 3bc35ac9495..d268eef6d23 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.h
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.h
@@ -107,6 +107,7 @@ public:
KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetType);
virtual PyObject* py_getattro(PyObject* attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject* attr, PyObject* value);
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/Converter/BL_ShapeDeformer.cpp b/source/gameengine/Converter/BL_ShapeDeformer.cpp
index 8be612503bc..d39917b0e5c 100644
--- a/source/gameengine/Converter/BL_ShapeDeformer.cpp
+++ b/source/gameengine/Converter/BL_ShapeDeformer.cpp
@@ -68,7 +68,7 @@ BL_ShapeDeformer::~BL_ShapeDeformer()
{
};
-RAS_Deformer *BL_ShapeDeformer::GetReplica(class KX_GameObject* replica)
+RAS_Deformer *BL_ShapeDeformer::GetReplica()
{
BL_ShapeDeformer *result;
@@ -79,6 +79,8 @@ RAS_Deformer *BL_ShapeDeformer::GetReplica(class KX_GameObject* replica)
void BL_ShapeDeformer::ProcessReplica()
{
+ BL_SkinDeformer::ProcessReplica();
+ m_lastShapeUpdate = -1;
}
bool BL_ShapeDeformer::LoadShapeDrivers(Object* arma)
@@ -87,7 +89,7 @@ bool BL_ShapeDeformer::LoadShapeDrivers(Object* arma)
m_shapeDrivers.clear();
// check if this mesh has armature driven shape keys
- if (m_bmesh->key->ipo) {
+ if (m_bmesh->key && m_bmesh->key->ipo) {
for(icu= (IpoCurve*)m_bmesh->key->ipo->curve.first; icu; icu= (IpoCurve*)icu->next) {
if(icu->driver &&
(icu->flag & IPO_MUTE) == 0 &&
@@ -125,7 +127,7 @@ bool BL_ShapeDeformer::ExecuteShapeDrivers(void)
ForceUpdate();
m_armobj->RestorePose();
-
+ m_bDynamic = true;
return true;
}
return false;
@@ -147,7 +149,11 @@ bool BL_ShapeDeformer::Update(void)
m_pMeshObject->CheckWeightCache(blendobj);
/* we will blend the key directly in mvert array: it is used by armature as the start position */
- do_rel_key(0, m_bmesh->totvert, m_bmesh->totvert, (char *)m_bmesh->mvert->co, m_bmesh->key, 0);
+ /* m_bmesh->key can be NULL in case of Modifier deformer */
+ if (m_bmesh->key) {
+ do_rel_key(0, m_bmesh->totvert, m_bmesh->totvert, (char *)m_bmesh->mvert->co, m_bmesh->key, 0);
+ m_bDynamic = true;
+ }
// Don't release the weight array as in Blender, it will most likely be reusable on next frame
// The weight array are ultimately deleted when the skin mesh is destroyed
@@ -163,7 +169,8 @@ bool BL_ShapeDeformer::Update(void)
// check for armature deform
bSkinUpdate = BL_SkinDeformer::Update();
- if (!bSkinUpdate && bShapeUpdate) {
+ // non dynamic deformer = Modifer without armature and shape keys, no need to create storage
+ if (!bSkinUpdate && bShapeUpdate && m_bDynamic) {
// this means that there is no armature, we still need to copy the vertex to m_transverts
// and update the normal (was not done after shape key calculation)
@@ -174,7 +181,8 @@ bool BL_ShapeDeformer::Update(void)
VECCOPY(m_transverts[v], m_bmesh->mvert[v].co);
#ifdef __NLA_DEFNORMALS
- RecalcNormals();
+ if (m_recalcNormal)
+ RecalcNormals();
#endif
bSkinUpdate = true;
}
diff --git a/source/gameengine/Converter/BL_ShapeDeformer.h b/source/gameengine/Converter/BL_ShapeDeformer.h
index 90b9f5caea1..949e5e1e3ad 100644
--- a/source/gameengine/Converter/BL_ShapeDeformer.h
+++ b/source/gameengine/Converter/BL_ShapeDeformer.h
@@ -58,15 +58,16 @@ public:
struct Object *bmeshobj_new,
class BL_SkinMeshObject *mesh,
bool release_object,
+ bool recalc_normal,
BL_ArmatureObject* arma = NULL)
:
- BL_SkinDeformer(gameobj, bmeshobj_old, bmeshobj_new, mesh, release_object, arma),
+ BL_SkinDeformer(gameobj, bmeshobj_old, bmeshobj_new, mesh, release_object, recalc_normal, arma),
m_lastShapeUpdate(-1)
{
};
+ virtual RAS_Deformer *GetReplica();
virtual void ProcessReplica();
- virtual RAS_Deformer *GetReplica(class KX_GameObject* replica);
virtual ~BL_ShapeDeformer();
bool Update (void);
diff --git a/source/gameengine/Converter/BL_SkinDeformer.cpp b/source/gameengine/Converter/BL_SkinDeformer.cpp
index d8563763954..a13f78e1b27 100644
--- a/source/gameengine/Converter/BL_SkinDeformer.cpp
+++ b/source/gameengine/Converter/BL_SkinDeformer.cpp
@@ -65,9 +65,10 @@ BL_SkinDeformer::BL_SkinDeformer(BL_DeformableGameObject *gameobj,
BL_MeshDeformer(gameobj, bmeshobj, mesh),
m_armobj(arma),
m_lastArmaUpdate(-1),
- m_defbase(&bmeshobj->defbase),
+ //m_defbase(&bmeshobj->defbase),
m_releaseobject(false),
- m_poseApplied(false)
+ m_poseApplied(false),
+ m_recalcNormal(true)
{
Mat4CpyMat4(m_obmat, bmeshobj->obmat);
};
@@ -78,12 +79,14 @@ BL_SkinDeformer::BL_SkinDeformer(
struct Object *bmeshobj_new, // Blender object that owns the original mesh
class BL_SkinMeshObject *mesh,
bool release_object,
+ bool recalc_normal,
BL_ArmatureObject* arma) :
BL_MeshDeformer(gameobj, bmeshobj_old, mesh),
m_armobj(arma),
m_lastArmaUpdate(-1),
- m_defbase(&bmeshobj_old->defbase),
- m_releaseobject(release_object)
+ //m_defbase(&bmeshobj_old->defbase),
+ m_releaseobject(release_object),
+ m_recalcNormal(recalc_normal)
{
// this is needed to ensure correct deformation of mesh:
// the deformation is done with Blender's armature_deform_verts() function
@@ -105,7 +108,7 @@ void BL_SkinDeformer::Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
void **h_obj = (*map)[m_armobj];
if (h_obj)
- SetArmature( (BL_ArmatureObject*)(*h_obj) );
+ m_armobj = (BL_ArmatureObject*)(*h_obj);
else
m_armobj=NULL;
}
@@ -118,45 +121,53 @@ bool BL_SkinDeformer::Apply(RAS_IPolyMaterial *mat)
RAS_MeshSlot::iterator it;
RAS_MeshMaterial *mmat;
RAS_MeshSlot *slot;
- size_t i;
+ size_t i, nmat, imat;
// update the vertex in m_transverts
- Update();
-
- // The vertex cache can only be updated for this deformer:
- // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object)
- // share the same mesh (=the same cache). As the rendering is done per polymaterial
- // cycling through the objects, the entire mesh cache cannot be updated in one shot.
- mmat = m_pMeshObject->GetMeshMaterial(mat);
- if(!mmat->m_slots[(void*)m_gameobj])
- return true;
-
- slot = *mmat->m_slots[(void*)m_gameobj];
-
- // for each array
- for(slot->begin(it); !slot->end(it); slot->next(it)) {
- // for each vertex
- // copy the untransformed data from the original mvert
- for(i=it.startvertex; i<it.endvertex; i++) {
- RAS_TexVert& v = it.vertex[i];
- v.SetXYZ(m_transverts[v.getOrigIndex()]);
+ if (!Update())
+ return false;
+
+ if (m_transverts) {
+ // the vertex cache is unique to this deformer, no need to update it
+ // if it wasn't updated! We must update all the materials at once
+ // because we will not get here again for the other material
+ nmat = m_pMeshObject->NumMaterials();
+ for (imat=0; imat<nmat; imat++) {
+ mmat = m_pMeshObject->GetMeshMaterial(imat);
+ if(!mmat->m_slots[(void*)m_gameobj])
+ continue;
+
+ slot = *mmat->m_slots[(void*)m_gameobj];
+
+ // for each array
+ for(slot->begin(it); !slot->end(it); slot->next(it)) {
+ // for each vertex
+ // copy the untransformed data from the original mvert
+ for(i=it.startvertex; i<it.endvertex; i++) {
+ RAS_TexVert& v = it.vertex[i];
+ v.SetXYZ(m_transverts[v.getOrigIndex()]);
+ }
+ }
}
}
-
return true;
}
-RAS_Deformer *BL_SkinDeformer::GetReplica(class KX_GameObject* replica)
+RAS_Deformer *BL_SkinDeformer::GetReplica()
{
BL_SkinDeformer *result;
result = new BL_SkinDeformer(*this);
+ /* there is m_armobj that must be fixed but we cannot do it now, it will be done in Relink */
result->ProcessReplica();
return result;
}
void BL_SkinDeformer::ProcessReplica()
{
+ BL_MeshDeformer::ProcessReplica();
+ m_lastArmaUpdate = -1;
+ m_releaseobject = false;
}
//void where_is_pose (Object *ob);
@@ -191,14 +202,16 @@ bool BL_SkinDeformer::Update(void)
Mat4CpyMat4(m_objMesh->obmat, obmat);
#ifdef __NLA_DEFNORMALS
- RecalcNormals();
+ if (m_recalcNormal)
+ RecalcNormals();
#endif
/* Update the current frame */
m_lastArmaUpdate=m_armobj->GetLastFrame();
m_armobj->RestorePose();
-
+ /* dynamic vertex, cannot use display list */
+ m_bDynamic = true;
/* indicate that the m_transverts and normals are up to date */
return true;
}
diff --git a/source/gameengine/Converter/BL_SkinDeformer.h b/source/gameengine/Converter/BL_SkinDeformer.h
index f87860021c6..7c43246a9d7 100644
--- a/source/gameengine/Converter/BL_SkinDeformer.h
+++ b/source/gameengine/Converter/BL_SkinDeformer.h
@@ -64,13 +64,20 @@ public:
struct Object *bmeshobj_new,
class BL_SkinMeshObject *mesh,
bool release_object,
+ bool recalc_normal,
BL_ArmatureObject* arma = NULL);
+ virtual RAS_Deformer *GetReplica();
virtual void ProcessReplica();
- virtual RAS_Deformer *GetReplica(class KX_GameObject* replica);
+
virtual ~BL_SkinDeformer();
bool Update (void);
bool Apply (class RAS_IPolyMaterial *polymat);
+ bool UpdateBuckets(void)
+ {
+ // update the deformer and all the mesh slots; Apply() does it well, so just call it.
+ return Apply(NULL);
+ }
bool PoseUpdated(void)
{
if (m_armobj && m_lastArmaUpdate!=m_armobj->GetLastFrame()) {
@@ -83,15 +90,20 @@ public:
{
m_lastArmaUpdate = -1.0;
};
+ virtual bool ShareVertexArray()
+ {
+ return false;
+ }
protected:
BL_ArmatureObject* m_armobj; // Our parent object
float m_time;
double m_lastArmaUpdate;
- ListBase* m_defbase;
+ //ListBase* m_defbase;
float m_obmat[4][4]; // the reference matrix for skeleton deform
bool m_releaseobject;
bool m_poseApplied;
+ bool m_recalcNormal;
};
diff --git a/source/gameengine/Converter/BL_SkinMeshObject.cpp b/source/gameengine/Converter/BL_SkinMeshObject.cpp
index eb3f9d0588d..0a18296f261 100644
--- a/source/gameengine/Converter/BL_SkinMeshObject.cpp
+++ b/source/gameengine/Converter/BL_SkinMeshObject.cpp
@@ -87,7 +87,7 @@ void BL_SkinMeshObject::UpdateBuckets(void* clientobj,double* oglmatrix,bool use
continue;
RAS_MeshSlot *slot = *it->m_slots[clientobj];
- slot->m_pDeformer = ((BL_DeformableGameObject*)clientobj)->GetDeformer();
+ slot->SetDeformer(((BL_DeformableGameObject*)clientobj)->GetDeformer());
}
RAS_MeshObject::UpdateBuckets(clientobj, oglmatrix, useObjectColor, rgbavec, visible, culled);
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 60cf6a4a8ee..b13e3f7cadb 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
@@ -87,6 +87,7 @@ extern "C"
//XXX #include "BSE_editipo_types.h"
#include "DNA_ipo_types.h"
#include "BKE_global.h"
+#include "BKE_ipo.h" // eval_icu
#include "DNA_space_types.h"
}
@@ -549,12 +550,12 @@ void KX_BlenderSceneConverter::RegisterGameMesh(
RAS_MeshObject *KX_BlenderSceneConverter::FindGameMesh(
- struct Mesh *for_blendermesh,
- unsigned int onlayer)
+ struct Mesh *for_blendermesh/*,
+ unsigned int onlayer*/)
{
RAS_MeshObject** meshp = m_map_mesh_to_gamemesh[CHashedPtr(for_blendermesh)];
- if (meshp && onlayer==(*meshp)->GetLightLayer()) {
+ if (meshp/* && onlayer==(*meshp)->GetLightLayer()*/) {
return *meshp;
} else {
return NULL;
@@ -668,7 +669,9 @@ extern "C"
//XXX struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, char *, int);
//XXX void testhandles_ipocurve(struct IpoCurve *icu);
void insert_vert_icu(struct IpoCurve *, float, float, short);
- void Mat3ToEul(float tmat[][3], float *eul);
+ float eval_icu(struct IpoCurve *icu, float ipotime);
+ //void Mat3ToEul(float tmat[][3], float *eul);
+ void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot);
}
IpoCurve* findIpoCurve(IpoCurve* first, const char* searchName)
@@ -818,7 +821,6 @@ void KX_BlenderSceneConverter::resetNoneDynamicObjectToIpo(){
}
}
-#define TEST_HANDLES_GAME2IPO 0
///this generates ipo curves for position, rotation, allowing to use game physics in animation
void KX_BlenderSceneConverter::WritePhysicsObjectToAnimationIpo(int frameNumber)
@@ -842,138 +844,83 @@ void KX_BlenderSceneConverter::WritePhysicsObjectToAnimationIpo(int frameNumber)
//KX_IPhysicsController* physCtrl = gameObj->GetPhysicsController();
Object* blenderObject = FindBlenderObject(gameObj);
- if (blenderObject)
+ if (blenderObject && blenderObject->ipo)
{
-
+ const MT_Point3& position = gameObj->NodeGetWorldPosition();
+ //const MT_Vector3& scale = gameObj->NodeGetWorldScaling();
const MT_Matrix3x3& orn = gameObj->NodeGetWorldOrientation();
+
float eulerAngles[3];
+ float eulerAnglesOld[3] = {0.0f, 0.0f, 0.0f};
float tmat[3][3];
- for (int r=0;r<3;r++)
- {
- for (int c=0;c<3;c++)
- {
- tmat[r][c] = orn[c][r];
- }
- }
- Mat3ToEul(tmat, eulerAngles);
-
- for(int x = 0; x < 3; x++) {
- eulerAngles[x] *= (float) (180 / 3.14159265f);
- }
-
- eulerAngles[0]/=10.f;
- eulerAngles[1]/=10.f;
- eulerAngles[2]/=10.f;
-
-
-
- //const MT_Vector3& scale = gameObj->NodeGetWorldScaling();
- const MT_Point3& position = gameObj->NodeGetWorldPosition();
+ // XXX animato
+#if 0
Ipo* ipo = blenderObject->ipo;
- if (ipo)
- {
- //create the curves, if not existing
+ //create the curves, if not existing, set linear if new
- IpoCurve *icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocX");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_X);
+ IpoCurve *icu_lx = findIpoCurve((IpoCurve *)ipo->curve.first,"LocX");
+ if (!icu_lx) {
+ icu_lx = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_X, 1);
+ if(icu_lx) icu_lx->ipo = IPO_LIN;
+ }
+ IpoCurve *icu_ly = findIpoCurve((IpoCurve *)ipo->curve.first,"LocY");
+ if (!icu_ly) {
+ icu_ly = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_Y, 1);
+ if(icu_ly) icu_ly->ipo = IPO_LIN;
+ }
+ IpoCurve *icu_lz = findIpoCurve((IpoCurve *)ipo->curve.first,"LocZ");
+ if (!icu_lz) {
+ icu_lz = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_Z, 1);
+ if(icu_lz) icu_lz->ipo = IPO_LIN;
+ }
+ IpoCurve *icu_rx = findIpoCurve((IpoCurve *)ipo->curve.first,"RotX");
+ if (!icu_rx) {
+ icu_rx = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_X, 1);
+ if(icu_rx) icu_rx->ipo = IPO_LIN;
+ }
+ IpoCurve *icu_ry = findIpoCurve((IpoCurve *)ipo->curve.first,"RotY");
+ if (!icu_ry) {
+ icu_ry = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_Y, 1);
+ if(icu_ry) icu_ry->ipo = IPO_LIN;
+ }
+ IpoCurve *icu_rz = findIpoCurve((IpoCurve *)ipo->curve.first,"RotZ");
+ if (!icu_rz) {
+ icu_rz = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_Z, 1);
+ if(icu_rz) icu_rz->ipo = IPO_LIN;
+ }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocY");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_Y);
+ if(icu_rx) eulerAnglesOld[0]= eval_icu( icu_rx, frameNumber - 1 ) / ((180 / 3.14159265f) / 10);
+ if(icu_ry) eulerAnglesOld[1]= eval_icu( icu_ry, frameNumber - 1 ) / ((180 / 3.14159265f) / 10);
+ if(icu_rz) eulerAnglesOld[2]= eval_icu( icu_rz, frameNumber - 1 ) / ((180 / 3.14159265f) / 10);
+
+ // orn.getValue((float *)tmat); // uses the wrong ordering, cant use this
+ for (int r=0;r<3;r++)
+ for (int c=0;c<3;c++)
+ tmat[r][c] = orn[c][r];
+
+ // Mat3ToEul(tmat, eulerAngles); // better to use Mat3ToCompatibleEul
+ Mat3ToCompatibleEul(tmat, eulerAngles, eulerAnglesOld);
+
+ //eval_icu
+ for(int x = 0; x < 3; x++)
+ eulerAngles[x] *= (float) ((180 / 3.14159265f) / 10.0);
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocZ");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_Z);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotX");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_X);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotY");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_Y);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotZ");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_Z);
-
-
-
//fill the curves with data
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocX");
- if (icu1)
- {
- float curVal = position.x();
- //XXX insert_vert_icu(icu1, frameNumber, curVal, 0);
-#ifdef TEST_HANDLES_GAME2IPO
- //XXX testhandles_ipocurve(icu1);
-#endif
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocY");
- if (icu1)
- {
- float curVal = position.y();
- //XXX insert_vert_icu(icu1, frameNumber, curVal, 0);
-#ifdef TEST_HANDLES_GAME2IPO
-
- //XXX testhandles_ipocurve(icu1);
-#endif
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocZ");
- if (icu1)
- {
- float curVal = position.z();
- //XXX insert_vert_icu(icu1, frameNumber, curVal, 0);
-#ifdef TEST_HANDLES_GAME2IPO
- //XXX testhandles_ipocurve(icu1);
-#endif
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotX");
- if (icu1)
- {
- float curVal = eulerAngles[0];
- //XXX insert_vert_icu(icu1, frameNumber, curVal, 0);
-#ifdef TEST_HANDLES_GAME2IPO
-
- //XXX testhandles_ipocurve(icu1);
-#endif
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotY");
- if (icu1)
- {
- float curVal = eulerAngles[1];
- //XXX insert_vert_icu(icu1, frameNumber, curVal, 0);
-#ifdef TEST_HANDLES_GAME2IPO
-
- //XXX testhandles_ipocurve(icu1);
-#endif
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotZ");
- if (icu1)
- {
- float curVal = eulerAngles[2];
- //XXX insert_vert_icu(icu1, frameNumber, curVal, 0);
-#ifdef TEST_HANDLES_GAME2IPO
-
- //XXX testhandles_ipocurve(icu1);
+ if (icu_lx) insert_vert_icu(icu_lx, frameNumber, position.x(), 1);
+ if (icu_ly) insert_vert_icu(icu_ly, frameNumber, position.y(), 1);
+ if (icu_lz) insert_vert_icu(icu_lz, frameNumber, position.z(), 1);
+ if (icu_rx) insert_vert_icu(icu_rx, frameNumber, eulerAngles[0], 1);
+ if (icu_ry) insert_vert_icu(icu_ry, frameNumber, eulerAngles[1], 1);
+ if (icu_rz) insert_vert_icu(icu_rz, frameNumber, eulerAngles[2], 1);
+
+ // Handles are corrected at the end, testhandles_ipocurve isnt needed yet
#endif
-
- }
-
- }
}
}
-
}
-
-
- }
-
-
+ }
}
@@ -998,100 +945,21 @@ void KX_BlenderSceneConverter::TestHandlesPhysicsObjectToAnimationIpo()
//KX_IPhysicsController* physCtrl = gameObj->GetPhysicsController();
Object* blenderObject = FindBlenderObject(gameObj);
- if (blenderObject)
+ if (blenderObject && blenderObject->ipo)
{
-
- const MT_Matrix3x3& orn = gameObj->NodeGetWorldOrientation();
- float eulerAngles[3];
- float tmat[3][3];
- for (int r=0;r<3;r++)
- {
- for (int c=0;c<3;c++)
- {
- tmat[r][c] = orn[c][r];
- }
- }
- Mat3ToEul(tmat, eulerAngles);
-
- for(int x = 0; x < 3; x++) {
- eulerAngles[x] *= (float) (180 / 3.14159265f);
- }
-
- eulerAngles[0]/=10.f;
- eulerAngles[1]/=10.f;
- eulerAngles[2]/=10.f;
-
-
-
- //const MT_Vector3& scale = gameObj->NodeGetWorldScaling();
- //const MT_Point3& position = gameObj->NodeGetWorldPosition();
-
+ // XXX animato
+#if 0
Ipo* ipo = blenderObject->ipo;
- if (ipo)
- {
-
- //create the curves, if not existing
-
- IpoCurve *icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocX");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_X);
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocY");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_Y);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocZ");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_LOC_Z);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotX");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_X);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotY");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_Y);
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotZ");
- //XXX if (!icu1)
- //XXX icu1 = verify_ipocurve(&blenderObject->id, ipo->blocktype, NULL, NULL, NULL, OB_ROT_Z);
-
-
-
- //fill the curves with data
-
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocX");
- if (icu1)
- {
- //XXX testhandles_ipocurve(icu1);
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocY");
- if (icu1)
- {
- //XXX testhandles_ipocurve(icu1);
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"LocZ");
- if (icu1)
- {
- //XXX testhandles_ipocurve(icu1);
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotX");
- if (icu1)
- {
- //XXX testhandles_ipocurve(icu1);
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotY");
- if (icu1)
- {
- //XXX testhandles_ipocurve(icu1);
- }
- icu1 = findIpoCurve((IpoCurve *)ipo->curve.first,"RotZ");
- if (icu1)
- {
- //XXX testhandles_ipocurve(icu1);
- }
-
- }
+ //create the curves, if not existing
+ //testhandles_ipocurve checks for NULL
+ testhandles_ipocurve(findIpoCurve((IpoCurve *)ipo->curve.first,"LocX"));
+ testhandles_ipocurve(findIpoCurve((IpoCurve *)ipo->curve.first,"LocY"));
+ testhandles_ipocurve(findIpoCurve((IpoCurve *)ipo->curve.first,"LocZ"));
+ testhandles_ipocurve(findIpoCurve((IpoCurve *)ipo->curve.first,"RotX"));
+ testhandles_ipocurve(findIpoCurve((IpoCurve *)ipo->curve.first,"RotY"));
+ testhandles_ipocurve(findIpoCurve((IpoCurve *)ipo->curve.first,"RotZ"));
+#endif
}
}
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.h b/source/gameengine/Converter/KX_BlenderSceneConverter.h
index 2317e952a0a..f7c1a506457 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.h
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.h
@@ -115,7 +115,7 @@ public:
struct Object *FindBlenderObject(KX_GameObject *for_gameobject);
void RegisterGameMesh(RAS_MeshObject *gamemesh, struct Mesh *for_blendermesh);
- RAS_MeshObject *FindGameMesh(struct Mesh *for_blendermesh, unsigned int onlayer);
+ RAS_MeshObject *FindGameMesh(struct Mesh *for_blendermesh/*, unsigned int onlayer*/);
// void RegisterSumoShape(DT_ShapeHandle shape, RAS_MeshObject *for_gamemesh);
// DT_ShapeHandle FindSumoShape(RAS_MeshObject *for_gamemesh);
diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp
index eb2d0a1c4b1..ea812a71fdd 100644
--- a/source/gameengine/Converter/KX_ConvertActuators.cpp
+++ b/source/gameengine/Converter/KX_ConvertActuators.cpp
@@ -38,7 +38,7 @@
#include "KX_BlenderSceneConverter.h"
#include "KX_ConvertActuators.h"
-
+#include "SND_Scene.h"
// Actuators
//SCA logiclibrary native logicbricks
#include "SCA_PropertyActuator.h"
@@ -105,7 +105,6 @@ void BL_ConvertActuators(char* maggiename,
SCA_LogicManager* logicmgr,
KX_Scene* scene,
KX_KetsjiEngine* ketsjiEngine,
- int & executePriority,
int activeLayerBitInfo,
bool isInActiveLayer,
RAS_IRenderTools* rendertools,
@@ -114,11 +113,20 @@ void BL_ConvertActuators(char* maggiename,
{
int uniqueint = 0;
+ int actcount = 0;
+ int executePriority = 0;
bActuator* bact = (bActuator*) blenderobject->actuators.first;
+ while (bact)
+ {
+ actcount++;
+ bact = bact->next;
+ }
+ gameobj->ReserveActuator(actcount);
+ bact = (bActuator*) blenderobject->actuators.first;
while(bact)
{
STR_String uniquename = bact->name;
- STR_String objectname = gameobj->GetName();
+ STR_String& objectname = gameobj->GetName();
SCA_IActuator* baseact = NULL;
switch (bact->type)
@@ -126,6 +134,7 @@ void BL_ConvertActuators(char* maggiename,
case ACT_OBJECT:
{
bObjectActuator* obact = (bObjectActuator*) bact->data;
+ KX_GameObject* obref = NULL;
MT_Vector3 forcevec(KX_BLENDERTRUNC(obact->forceloc[0]),
KX_BLENDERTRUNC(obact->forceloc[1]),
KX_BLENDERTRUNC(obact->forceloc[2]));
@@ -163,9 +172,13 @@ void BL_ConvertActuators(char* maggiename,
bitLocalFlag.AngularVelocity = bool((obact->flag & ACT_ANG_VEL_LOCAL)!=0);
bitLocalFlag.ServoControl = bool(obact->type == ACT_OBJECT_SERVO);
bitLocalFlag.AddOrSetLinV = bool((obact->flag & ACT_ADD_LIN_VEL)!=0);
-
+ if (obact->reference && bitLocalFlag.ServoControl)
+ {
+ obref = converter->FindGameObject(obact->reference);
+ }
KX_ObjectActuator* tmpbaseact = new KX_ObjectActuator(gameobj,
+ obref,
forcevec.getValue(),
torquevec.getValue(),
dlocvec.getValue(),
@@ -941,6 +954,11 @@ void BL_ConvertActuators(char* maggiename,
= (bRandomActuator *) bact->data;
unsigned long seedArg = randAct->seed;
+ if (seedArg == 0)
+ {
+ seedArg = (int)(ketsjiEngine->GetRealTime()*100000.0);
+ seedArg ^= (intptr_t)randAct;
+ }
SCA_RandomActuator::KX_RANDOMACT_MODE modeArg
= SCA_RandomActuator::KX_RANDOMACT_NODEF;
SCA_RandomActuator *tmprandomact;
@@ -1097,7 +1115,7 @@ void BL_ConvertActuators(char* maggiename,
buf = txt_to_buf(_2dfilter->text);
if (buf)
{
- tmp->SetShaderText(STR_String(buf));
+ tmp->SetShaderText(buf);
MEM_freeN(buf);
}
}
@@ -1110,6 +1128,8 @@ void BL_ConvertActuators(char* maggiename,
{
bParentActuator *parAct = (bParentActuator *) bact->data;
int mode = KX_ParentActuator::KX_PARENT_NODEF;
+ bool addToCompound = true;
+ bool ghost = true;
KX_GameObject *tmpgob = NULL;
switch(parAct->type)
@@ -1117,6 +1137,8 @@ void BL_ConvertActuators(char* maggiename,
case ACT_PARENT_SET:
mode = KX_ParentActuator::KX_PARENT_SET;
tmpgob = converter->FindGameObject(parAct->ob);
+ addToCompound = !(parAct->flag & ACT_PARENT_COMPOUND);
+ ghost = !(parAct->flag & ACT_PARENT_GHOST);
break;
case ACT_PARENT_REMOVE:
mode = KX_ParentActuator::KX_PARENT_REMOVE;
@@ -1127,6 +1149,8 @@ void BL_ConvertActuators(char* maggiename,
KX_ParentActuator *tmpparact
= new KX_ParentActuator(gameobj,
mode,
+ addToCompound,
+ ghost,
tmpgob);
baseact = tmpparact;
break;
@@ -1144,7 +1168,7 @@ void BL_ConvertActuators(char* maggiename,
CIntValue* uniqueval = new CIntValue(uniqueint);
uniquename += uniqueval->GetText();
uniqueval->Release();
- baseact->SetName(STR_String(bact->name));
+ baseact->SetName(bact->name);
//gameobj->SetProperty(uniquename,baseact);
gameobj->AddActuator(baseact);
diff --git a/source/gameengine/Converter/KX_ConvertActuators.h b/source/gameengine/Converter/KX_ConvertActuators.h
index 03ea0db99b9..e38a9c74efc 100644
--- a/source/gameengine/Converter/KX_ConvertActuators.h
+++ b/source/gameengine/Converter/KX_ConvertActuators.h
@@ -35,7 +35,6 @@ void BL_ConvertActuators(char* maggiename,
class SCA_LogicManager* logicmgr,
class KX_Scene* scene,
class KX_KetsjiEngine* ketsjiEngine,
- int & executePriority,
int activeLayerBitInfo,
bool isInActiveLayer,
class RAS_IRenderTools* rendertools,
diff --git a/source/gameengine/Converter/KX_ConvertControllers.cpp b/source/gameengine/Converter/KX_ConvertControllers.cpp
index fb100b0a68b..85ab8e4f8b8 100644
--- a/source/gameengine/Converter/KX_ConvertControllers.cpp
+++ b/source/gameengine/Converter/KX_ConvertControllers.cpp
@@ -76,6 +76,7 @@ LinkControllerToActuators(
// Iterate through the actuators of the game blender
// controller and find the corresponding ketsji actuator.
+ game_controller->ReserveActuator(bcontr->totlinks);
for (int i=0;i<bcontr->totlinks;i++)
{
bActuator* bact = (bActuator*) bcontr->links[i];
@@ -92,52 +93,54 @@ void BL_ConvertControllers(
class KX_GameObject* gameobj,
SCA_LogicManager* logicmgr,
PyObject* pythondictionary,
- int &executePriority,
int activeLayerBitInfo,
bool isInActiveLayer,
KX_BlenderSceneConverter* converter
) {
int uniqueint=0;
+ int count = 0;
+ int executePriority=0;
bController* bcontr = (bController*)blenderobject->controllers.first;
while (bcontr)
{
+ bcontr = bcontr->next;
+ count++;
+ }
+ gameobj->ReserveController(count);
+ bcontr = (bController*)blenderobject->controllers.first;
+ while (bcontr)
+ {
SCA_IController* gamecontroller = NULL;
switch(bcontr->type)
{
case CONT_LOGIC_AND:
{
gamecontroller = new SCA_ANDController(gameobj);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
break;
}
case CONT_LOGIC_OR:
{
gamecontroller = new SCA_ORController(gameobj);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
break;
}
case CONT_LOGIC_NAND:
{
gamecontroller = new SCA_NANDController(gameobj);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
break;
}
case CONT_LOGIC_NOR:
{
gamecontroller = new SCA_NORController(gameobj);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
break;
}
case CONT_LOGIC_XOR:
{
gamecontroller = new SCA_XORController(gameobj);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
break;
}
case CONT_LOGIC_XNOR:
{
gamecontroller = new SCA_XNORController(gameobj);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
break;
}
case CONT_EXPRESSION:
@@ -147,37 +150,43 @@ void BL_ConvertControllers(
if (expressiontext.Length() > 0)
{
gamecontroller = new SCA_ExpressionController(gameobj,expressiontext);
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
-
}
break;
}
case CONT_PYTHON:
{
-
- // we should create a Python controller here
-
- SCA_PythonController* pyctrl = new SCA_PythonController(gameobj);
- gamecontroller = pyctrl;
-
bPythonCont* pycont = (bPythonCont*) bcontr->data;
+ SCA_PythonController* pyctrl = new SCA_PythonController(gameobj, pycont->mode);
+ gamecontroller = pyctrl;
+
pyctrl->SetDictionary(pythondictionary);
-
- if (pycont->text)
- {
- char *buf;
- // this is some blender specific code
- buf= txt_to_buf(pycont->text);
- if (buf)
+
+ if(pycont->mode==SCA_PythonController::SCA_PYEXEC_SCRIPT) {
+ if (pycont->text)
{
- pyctrl->SetScriptText(STR_String(buf));
- pyctrl->SetScriptName(pycont->text->id.name+2);
- MEM_freeN(buf);
+ char *buf;
+ // this is some blender specific code
+ buf= txt_to_buf(pycont->text);
+ if (buf)
+ {
+ pyctrl->SetScriptText(STR_String(buf));
+ pyctrl->SetScriptName(pycont->text->id.name+2);
+ MEM_freeN(buf);
+ }
+
}
-
}
-
- LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
+ else {
+ /* let the controller print any warnings here when importing */
+ pyctrl->SetScriptText(STR_String(pycont->module));
+ pyctrl->SetScriptName(pycont->module); /* will be something like module.func so using it as the name is OK */
+ }
+
+ if(pycont->flag & CONT_PY_DEBUG) {
+ printf("\nDebuging \"%s\", module for object %s\n\texpect worse performance.\n", pycont->module, blenderobject->id.name+2);
+ pyctrl->SetDebug(true);
+ }
+
break;
}
default:
@@ -188,7 +197,9 @@ void BL_ConvertControllers(
if (gamecontroller)
{
+ LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter);
gamecontroller->SetExecutePriority(executePriority++);
+ gamecontroller->SetBookmark((bcontr->flag & CONT_PRIO) != 0);
gamecontroller->SetState(bcontr->state_mask);
STR_String uniquename = bcontr->name;
uniquename += "#CONTR#";
@@ -202,9 +213,18 @@ void BL_ConvertControllers(
converter->RegisterGameController(gamecontroller, bcontr);
if (bcontr->type==CONT_PYTHON) {
+ SCA_PythonController *pyctrl= static_cast<SCA_PythonController*>(gamecontroller);
/* not strictly needed but gives syntax errors early on and
* gives more pradictable performance for larger scripts */
- (static_cast<SCA_PythonController*>(gamecontroller))->Compile();
+ if(pyctrl->m_mode==SCA_PythonController::SCA_PYEXEC_SCRIPT)
+ pyctrl->Compile();
+ else {
+ /* We cant do this because importing runs the script which could end up accessing
+ * internal BGE functions, this is unstable while we're converting the scene.
+ * This is a pitty because its useful to see errors at startup but cant help it */
+
+ // pyctrl->Import();
+ }
}
//done with gamecontroller
diff --git a/source/gameengine/Converter/KX_ConvertControllers.h b/source/gameengine/Converter/KX_ConvertControllers.h
index 3e8a87fc90b..d340778290c 100644
--- a/source/gameengine/Converter/KX_ConvertControllers.h
+++ b/source/gameengine/Converter/KX_ConvertControllers.h
@@ -36,7 +36,6 @@ void BL_ConvertControllers(
class KX_GameObject* gameobj,
class SCA_LogicManager* logicmgr,
PyObject* pythondictionary,
- int & executePriority,
int activeLayerBitInfo,
bool isInActiveLayer,
class KX_BlenderSceneConverter* converter
diff --git a/source/gameengine/Converter/KX_ConvertProperties.cpp b/source/gameengine/Converter/KX_ConvertProperties.cpp
index 53769dc30a1..5e8d6f3cbf0 100644
--- a/source/gameengine/Converter/KX_ConvertProperties.cpp
+++ b/source/gameengine/Converter/KX_ConvertProperties.cpp
@@ -129,6 +129,22 @@ void BL_ConvertProperties(Object* object,KX_GameObject* gameobj,SCA_TimeEventMan
// done with propval, release it
propval->Release();
}
+
+
+ /* Warn if we double up on attributes, this isnt quite right since it wont find inherited attributes however there arnt many */
+ for(PyAttributeDef *attrdef = KX_GameObject::Attributes; attrdef->m_name; attrdef++) {
+ if(strcmp(prop->name, attrdef->m_name)==0) {
+ printf("Warning! user defined property name \"%s\" is also a python attribute for object \"%s\"\n\tUse ob[\"%s\"] syntax to avoid conflict\n", prop->name, object->id.name+2, prop->name);
+ break;
+ }
+ }
+ for(PyMethodDef *methdef = KX_GameObject::Methods; methdef->ml_name; methdef++) {
+ if(strcmp(prop->name, methdef->ml_name)==0) {
+ printf("Warning! user defined property name \"%s\" is also a python method for object \"%s\"\n\tUse ob[\"%s\"] syntax to avoid conflict\n", prop->name, object->id.name+2, prop->name);
+ break;
+ }
+ }
+ /* end warning check */
prop = prop->next;
}
diff --git a/source/gameengine/Converter/KX_ConvertSensors.cpp b/source/gameengine/Converter/KX_ConvertSensors.cpp
index 7d43b358502..0b395cfd402 100644
--- a/source/gameengine/Converter/KX_ConvertSensors.cpp
+++ b/source/gameengine/Converter/KX_ConvertSensors.cpp
@@ -95,178 +95,194 @@ void BL_ConvertSensors(struct Object* blenderobject,
KX_Scene* kxscene,
KX_KetsjiEngine* kxengine,
SCA_IInputDevice* keydev,
- int & executePriority,
int activeLayerBitInfo,
bool isInActiveLayer,
RAS_ICanvas* canvas,
KX_BlenderSceneConverter* converter
)
{
+ static bool reverseTableConverted = false;
-
-
- /* The reverse table. In order to not confuse ourselves, we */
- /* immediately convert all events that come in to KX codes. */
- gReverseKeyTranslateTable[LEFTMOUSE ] = SCA_IInputDevice::KX_LEFTMOUSE;
- gReverseKeyTranslateTable[MIDDLEMOUSE ] = SCA_IInputDevice::KX_MIDDLEMOUSE;
- gReverseKeyTranslateTable[RIGHTMOUSE ] = SCA_IInputDevice::KX_RIGHTMOUSE;
- gReverseKeyTranslateTable[WHEELUPMOUSE ] = SCA_IInputDevice::KX_WHEELUPMOUSE;
- gReverseKeyTranslateTable[WHEELDOWNMOUSE ] = SCA_IInputDevice::KX_WHEELDOWNMOUSE;
- gReverseKeyTranslateTable[MOUSEX ] = SCA_IInputDevice::KX_MOUSEX;
- gReverseKeyTranslateTable[MOUSEY ] = SCA_IInputDevice::KX_MOUSEY;
-
- // TIMERS
-
- gReverseKeyTranslateTable[TIMER0 ] = SCA_IInputDevice::KX_TIMER0;
- gReverseKeyTranslateTable[TIMER1 ] = SCA_IInputDevice::KX_TIMER1;
- gReverseKeyTranslateTable[TIMER2 ] = SCA_IInputDevice::KX_TIMER2;
-
- // SYSTEM
-
+ if (!reverseTableConverted)
+ {
+ reverseTableConverted = true;
+
+ /* The reverse table. In order to not confuse ourselves, we */
+ /* immediately convert all events that come in to KX codes. */
+ gReverseKeyTranslateTable[LEFTMOUSE ] = SCA_IInputDevice::KX_LEFTMOUSE;
+ gReverseKeyTranslateTable[MIDDLEMOUSE ] = SCA_IInputDevice::KX_MIDDLEMOUSE;
+ gReverseKeyTranslateTable[RIGHTMOUSE ] = SCA_IInputDevice::KX_RIGHTMOUSE;
+ gReverseKeyTranslateTable[WHEELUPMOUSE ] = SCA_IInputDevice::KX_WHEELUPMOUSE;
+ gReverseKeyTranslateTable[WHEELDOWNMOUSE ] = SCA_IInputDevice::KX_WHEELDOWNMOUSE;
+ gReverseKeyTranslateTable[MOUSEX ] = SCA_IInputDevice::KX_MOUSEX;
+ gReverseKeyTranslateTable[MOUSEY ] = SCA_IInputDevice::KX_MOUSEY;
+
+ // TIMERS
+
+ gReverseKeyTranslateTable[TIMER0 ] = SCA_IInputDevice::KX_TIMER0;
+ gReverseKeyTranslateTable[TIMER1 ] = SCA_IInputDevice::KX_TIMER1;
+ gReverseKeyTranslateTable[TIMER2 ] = SCA_IInputDevice::KX_TIMER2;
+
+ // SYSTEM
+
#if 0
- /* **** XXX **** */
- gReverseKeyTranslateTable[KEYBD ] = SCA_IInputDevice::KX_KEYBD;
- gReverseKeyTranslateTable[RAWKEYBD ] = SCA_IInputDevice::KX_RAWKEYBD;
- gReverseKeyTranslateTable[REDRAW ] = SCA_IInputDevice::KX_REDRAW;
- gReverseKeyTranslateTable[INPUTCHANGE ] = SCA_IInputDevice::KX_INPUTCHANGE;
- gReverseKeyTranslateTable[QFULL ] = SCA_IInputDevice::KX_QFULL;
- gReverseKeyTranslateTable[WINFREEZE ] = SCA_IInputDevice::KX_WINFREEZE;
- gReverseKeyTranslateTable[WINTHAW ] = SCA_IInputDevice::KX_WINTHAW;
- gReverseKeyTranslateTable[WINCLOSE ] = SCA_IInputDevice::KX_WINCLOSE;
- gReverseKeyTranslateTable[WINQUIT ] = SCA_IInputDevice::KX_WINQUIT;
- gReverseKeyTranslateTable[Q_FIRSTTIME ] = SCA_IInputDevice::KX_Q_FIRSTTIME;
- /* **** XXX **** */
+ /* **** XXX **** */
+ gReverseKeyTranslateTable[KEYBD ] = SCA_IInputDevice::KX_KEYBD;
+ gReverseKeyTranslateTable[RAWKEYBD ] = SCA_IInputDevice::KX_RAWKEYBD;
+ gReverseKeyTranslateTable[REDRAW ] = SCA_IInputDevice::KX_REDRAW;
+ gReverseKeyTranslateTable[INPUTCHANGE ] = SCA_IInputDevice::KX_INPUTCHANGE;
+ gReverseKeyTranslateTable[QFULL ] = SCA_IInputDevice::KX_QFULL;
+ gReverseKeyTranslateTable[WINFREEZE ] = SCA_IInputDevice::KX_WINFREEZE;
+ gReverseKeyTranslateTable[WINTHAW ] = SCA_IInputDevice::KX_WINTHAW;
+ gReverseKeyTranslateTable[WINCLOSE ] = SCA_IInputDevice::KX_WINCLOSE;
+ gReverseKeyTranslateTable[WINQUIT ] = SCA_IInputDevice::KX_WINQUIT;
+ gReverseKeyTranslateTable[Q_FIRSTTIME ] = SCA_IInputDevice::KX_Q_FIRSTTIME;
+ /* **** XXX **** */
#endif
- // standard keyboard
-
- gReverseKeyTranslateTable[AKEY ] = SCA_IInputDevice::KX_AKEY;
- gReverseKeyTranslateTable[BKEY ] = SCA_IInputDevice::KX_BKEY;
- gReverseKeyTranslateTable[CKEY ] = SCA_IInputDevice::KX_CKEY;
- gReverseKeyTranslateTable[DKEY ] = SCA_IInputDevice::KX_DKEY;
- gReverseKeyTranslateTable[EKEY ] = SCA_IInputDevice::KX_EKEY;
- gReverseKeyTranslateTable[FKEY ] = SCA_IInputDevice::KX_FKEY;
- gReverseKeyTranslateTable[GKEY ] = SCA_IInputDevice::KX_GKEY;
+
+ // standard keyboard
+
+ gReverseKeyTranslateTable[AKEY ] = SCA_IInputDevice::KX_AKEY;
+ gReverseKeyTranslateTable[BKEY ] = SCA_IInputDevice::KX_BKEY;
+ gReverseKeyTranslateTable[CKEY ] = SCA_IInputDevice::KX_CKEY;
+ gReverseKeyTranslateTable[DKEY ] = SCA_IInputDevice::KX_DKEY;
+ gReverseKeyTranslateTable[EKEY ] = SCA_IInputDevice::KX_EKEY;
+ gReverseKeyTranslateTable[FKEY ] = SCA_IInputDevice::KX_FKEY;
+ gReverseKeyTranslateTable[GKEY ] = SCA_IInputDevice::KX_GKEY;
+
//XXX clean up
#ifdef WIN32
#define HKEY 'h'
#endif
- gReverseKeyTranslateTable[HKEY ] = SCA_IInputDevice::KX_HKEY;
+ gReverseKeyTranslateTable[HKEY ] = SCA_IInputDevice::KX_HKEY;
//XXX clean up
#ifdef WIN32
#undef HKEY
#endif
- gReverseKeyTranslateTable[IKEY ] = SCA_IInputDevice::KX_IKEY;
- gReverseKeyTranslateTable[JKEY ] = SCA_IInputDevice::KX_JKEY;
- gReverseKeyTranslateTable[KKEY ] = SCA_IInputDevice::KX_KKEY;
- gReverseKeyTranslateTable[LKEY ] = SCA_IInputDevice::KX_LKEY;
- gReverseKeyTranslateTable[MKEY ] = SCA_IInputDevice::KX_MKEY;
- gReverseKeyTranslateTable[NKEY ] = SCA_IInputDevice::KX_NKEY;
- gReverseKeyTranslateTable[OKEY ] = SCA_IInputDevice::KX_OKEY;
- gReverseKeyTranslateTable[PKEY ] = SCA_IInputDevice::KX_PKEY;
- gReverseKeyTranslateTable[QKEY ] = SCA_IInputDevice::KX_QKEY;
- gReverseKeyTranslateTable[RKEY ] = SCA_IInputDevice::KX_RKEY;
- gReverseKeyTranslateTable[SKEY ] = SCA_IInputDevice::KX_SKEY;
- gReverseKeyTranslateTable[TKEY ] = SCA_IInputDevice::KX_TKEY;
- gReverseKeyTranslateTable[UKEY ] = SCA_IInputDevice::KX_UKEY;
- gReverseKeyTranslateTable[VKEY ] = SCA_IInputDevice::KX_VKEY;
- gReverseKeyTranslateTable[WKEY ] = SCA_IInputDevice::KX_WKEY;
- gReverseKeyTranslateTable[XKEY ] = SCA_IInputDevice::KX_XKEY;
- gReverseKeyTranslateTable[YKEY ] = SCA_IInputDevice::KX_YKEY;
- gReverseKeyTranslateTable[ZKEY ] = SCA_IInputDevice::KX_ZKEY;
-
- gReverseKeyTranslateTable[ZEROKEY ] = SCA_IInputDevice::KX_ZEROKEY;
- gReverseKeyTranslateTable[ONEKEY ] = SCA_IInputDevice::KX_ONEKEY;
- gReverseKeyTranslateTable[TWOKEY ] = SCA_IInputDevice::KX_TWOKEY;
- gReverseKeyTranslateTable[THREEKEY ] = SCA_IInputDevice::KX_THREEKEY;
- gReverseKeyTranslateTable[FOURKEY ] = SCA_IInputDevice::KX_FOURKEY;
- gReverseKeyTranslateTable[FIVEKEY ] = SCA_IInputDevice::KX_FIVEKEY;
- gReverseKeyTranslateTable[SIXKEY ] = SCA_IInputDevice::KX_SIXKEY;
- gReverseKeyTranslateTable[SEVENKEY ] = SCA_IInputDevice::KX_SEVENKEY;
- gReverseKeyTranslateTable[EIGHTKEY ] = SCA_IInputDevice::KX_EIGHTKEY;
- gReverseKeyTranslateTable[NINEKEY ] = SCA_IInputDevice::KX_NINEKEY;
-
- gReverseKeyTranslateTable[CAPSLOCKKEY ] = SCA_IInputDevice::KX_CAPSLOCKKEY;
-
- gReverseKeyTranslateTable[LEFTCTRLKEY ] = SCA_IInputDevice::KX_LEFTCTRLKEY;
- gReverseKeyTranslateTable[LEFTALTKEY ] = SCA_IInputDevice::KX_LEFTALTKEY;
- gReverseKeyTranslateTable[RIGHTALTKEY ] = SCA_IInputDevice::KX_RIGHTALTKEY;
- gReverseKeyTranslateTable[RIGHTCTRLKEY ] = SCA_IInputDevice::KX_RIGHTCTRLKEY;
- gReverseKeyTranslateTable[RIGHTSHIFTKEY ] = SCA_IInputDevice::KX_RIGHTSHIFTKEY;
- gReverseKeyTranslateTable[LEFTSHIFTKEY ] = SCA_IInputDevice::KX_LEFTSHIFTKEY;
-
- gReverseKeyTranslateTable[ESCKEY ] = SCA_IInputDevice::KX_ESCKEY;
- gReverseKeyTranslateTable[TABKEY ] = SCA_IInputDevice::KX_TABKEY;
- gReverseKeyTranslateTable[RETKEY ] = SCA_IInputDevice::KX_RETKEY;
- gReverseKeyTranslateTable[SPACEKEY ] = SCA_IInputDevice::KX_SPACEKEY;
- gReverseKeyTranslateTable[LINEFEEDKEY ] = SCA_IInputDevice::KX_LINEFEEDKEY;
- gReverseKeyTranslateTable[BACKSPACEKEY ] = SCA_IInputDevice::KX_BACKSPACEKEY;
- gReverseKeyTranslateTable[DELKEY ] = SCA_IInputDevice::KX_DELKEY;
- gReverseKeyTranslateTable[SEMICOLONKEY ] = SCA_IInputDevice::KX_SEMICOLONKEY;
- gReverseKeyTranslateTable[PERIODKEY ] = SCA_IInputDevice::KX_PERIODKEY;
- gReverseKeyTranslateTable[COMMAKEY ] = SCA_IInputDevice::KX_COMMAKEY;
- gReverseKeyTranslateTable[QUOTEKEY ] = SCA_IInputDevice::KX_QUOTEKEY;
- gReverseKeyTranslateTable[ACCENTGRAVEKEY ] = SCA_IInputDevice::KX_ACCENTGRAVEKEY;
- gReverseKeyTranslateTable[MINUSKEY ] = SCA_IInputDevice::KX_MINUSKEY;
- gReverseKeyTranslateTable[SLASHKEY ] = SCA_IInputDevice::KX_SLASHKEY;
- gReverseKeyTranslateTable[BACKSLASHKEY ] = SCA_IInputDevice::KX_BACKSLASHKEY;
- gReverseKeyTranslateTable[EQUALKEY ] = SCA_IInputDevice::KX_EQUALKEY;
- gReverseKeyTranslateTable[LEFTBRACKETKEY ] = SCA_IInputDevice::KX_LEFTBRACKETKEY;
- gReverseKeyTranslateTable[RIGHTBRACKETKEY ] = SCA_IInputDevice::KX_RIGHTBRACKETKEY;
-
- gReverseKeyTranslateTable[LEFTARROWKEY ] = SCA_IInputDevice::KX_LEFTARROWKEY;
- gReverseKeyTranslateTable[DOWNARROWKEY ] = SCA_IInputDevice::KX_DOWNARROWKEY;
- gReverseKeyTranslateTable[RIGHTARROWKEY ] = SCA_IInputDevice::KX_RIGHTARROWKEY;
- gReverseKeyTranslateTable[UPARROWKEY ] = SCA_IInputDevice::KX_UPARROWKEY;
-
- gReverseKeyTranslateTable[PAD2 ] = SCA_IInputDevice::KX_PAD2;
- gReverseKeyTranslateTable[PAD4 ] = SCA_IInputDevice::KX_PAD4;
- gReverseKeyTranslateTable[PAD6 ] = SCA_IInputDevice::KX_PAD6;
- gReverseKeyTranslateTable[PAD8 ] = SCA_IInputDevice::KX_PAD8;
-
- gReverseKeyTranslateTable[PAD1 ] = SCA_IInputDevice::KX_PAD1;
- gReverseKeyTranslateTable[PAD3 ] = SCA_IInputDevice::KX_PAD3;
- gReverseKeyTranslateTable[PAD5 ] = SCA_IInputDevice::KX_PAD5;
- gReverseKeyTranslateTable[PAD7 ] = SCA_IInputDevice::KX_PAD7;
- gReverseKeyTranslateTable[PAD9 ] = SCA_IInputDevice::KX_PAD9;
-
- gReverseKeyTranslateTable[PADPERIOD ] = SCA_IInputDevice::KX_PADPERIOD;
- gReverseKeyTranslateTable[PADSLASHKEY ] = SCA_IInputDevice::KX_PADSLASHKEY;
- gReverseKeyTranslateTable[PADASTERKEY ] = SCA_IInputDevice::KX_PADASTERKEY;
-
- gReverseKeyTranslateTable[PAD0 ] = SCA_IInputDevice::KX_PAD0;
- gReverseKeyTranslateTable[PADMINUS ] = SCA_IInputDevice::KX_PADMINUS;
- gReverseKeyTranslateTable[PADENTER ] = SCA_IInputDevice::KX_PADENTER;
- gReverseKeyTranslateTable[PADPLUSKEY ] = SCA_IInputDevice::KX_PADPLUSKEY;
-
-
- gReverseKeyTranslateTable[F1KEY ] = SCA_IInputDevice::KX_F1KEY;
- gReverseKeyTranslateTable[F2KEY ] = SCA_IInputDevice::KX_F2KEY;
- gReverseKeyTranslateTable[F3KEY ] = SCA_IInputDevice::KX_F3KEY;
- gReverseKeyTranslateTable[F4KEY ] = SCA_IInputDevice::KX_F4KEY;
- gReverseKeyTranslateTable[F5KEY ] = SCA_IInputDevice::KX_F5KEY;
- gReverseKeyTranslateTable[F6KEY ] = SCA_IInputDevice::KX_F6KEY;
- gReverseKeyTranslateTable[F7KEY ] = SCA_IInputDevice::KX_F7KEY;
- gReverseKeyTranslateTable[F8KEY ] = SCA_IInputDevice::KX_F8KEY;
- gReverseKeyTranslateTable[F9KEY ] = SCA_IInputDevice::KX_F9KEY;
- gReverseKeyTranslateTable[F10KEY ] = SCA_IInputDevice::KX_F10KEY;
- gReverseKeyTranslateTable[F11KEY ] = SCA_IInputDevice::KX_F11KEY;
- gReverseKeyTranslateTable[F12KEY ] = SCA_IInputDevice::KX_F12KEY;
-
- gReverseKeyTranslateTable[PAUSEKEY ] = SCA_IInputDevice::KX_PAUSEKEY;
- gReverseKeyTranslateTable[INSERTKEY ] = SCA_IInputDevice::KX_INSERTKEY;
- gReverseKeyTranslateTable[HOMEKEY ] = SCA_IInputDevice::KX_HOMEKEY;
- gReverseKeyTranslateTable[PAGEUPKEY ] = SCA_IInputDevice::KX_PAGEUPKEY;
- gReverseKeyTranslateTable[PAGEDOWNKEY ] = SCA_IInputDevice::KX_PAGEDOWNKEY;
- gReverseKeyTranslateTable[ENDKEY ] = SCA_IInputDevice::KX_ENDKEY;
-
+
+ gReverseKeyTranslateTable[IKEY ] = SCA_IInputDevice::KX_IKEY;
+ gReverseKeyTranslateTable[JKEY ] = SCA_IInputDevice::KX_JKEY;
+ gReverseKeyTranslateTable[KKEY ] = SCA_IInputDevice::KX_KKEY;
+ gReverseKeyTranslateTable[LKEY ] = SCA_IInputDevice::KX_LKEY;
+ gReverseKeyTranslateTable[MKEY ] = SCA_IInputDevice::KX_MKEY;
+ gReverseKeyTranslateTable[NKEY ] = SCA_IInputDevice::KX_NKEY;
+ gReverseKeyTranslateTable[OKEY ] = SCA_IInputDevice::KX_OKEY;
+ gReverseKeyTranslateTable[PKEY ] = SCA_IInputDevice::KX_PKEY;
+ gReverseKeyTranslateTable[QKEY ] = SCA_IInputDevice::KX_QKEY;
+ gReverseKeyTranslateTable[RKEY ] = SCA_IInputDevice::KX_RKEY;
+ gReverseKeyTranslateTable[SKEY ] = SCA_IInputDevice::KX_SKEY;
+ gReverseKeyTranslateTable[TKEY ] = SCA_IInputDevice::KX_TKEY;
+ gReverseKeyTranslateTable[UKEY ] = SCA_IInputDevice::KX_UKEY;
+ gReverseKeyTranslateTable[VKEY ] = SCA_IInputDevice::KX_VKEY;
+ gReverseKeyTranslateTable[WKEY ] = SCA_IInputDevice::KX_WKEY;
+ gReverseKeyTranslateTable[XKEY ] = SCA_IInputDevice::KX_XKEY;
+ gReverseKeyTranslateTable[YKEY ] = SCA_IInputDevice::KX_YKEY;
+ gReverseKeyTranslateTable[ZKEY ] = SCA_IInputDevice::KX_ZKEY;
+
+ gReverseKeyTranslateTable[ZEROKEY ] = SCA_IInputDevice::KX_ZEROKEY;
+ gReverseKeyTranslateTable[ONEKEY ] = SCA_IInputDevice::KX_ONEKEY;
+ gReverseKeyTranslateTable[TWOKEY ] = SCA_IInputDevice::KX_TWOKEY;
+ gReverseKeyTranslateTable[THREEKEY ] = SCA_IInputDevice::KX_THREEKEY;
+ gReverseKeyTranslateTable[FOURKEY ] = SCA_IInputDevice::KX_FOURKEY;
+ gReverseKeyTranslateTable[FIVEKEY ] = SCA_IInputDevice::KX_FIVEKEY;
+ gReverseKeyTranslateTable[SIXKEY ] = SCA_IInputDevice::KX_SIXKEY;
+ gReverseKeyTranslateTable[SEVENKEY ] = SCA_IInputDevice::KX_SEVENKEY;
+ gReverseKeyTranslateTable[EIGHTKEY ] = SCA_IInputDevice::KX_EIGHTKEY;
+ gReverseKeyTranslateTable[NINEKEY ] = SCA_IInputDevice::KX_NINEKEY;
+
+ gReverseKeyTranslateTable[CAPSLOCKKEY ] = SCA_IInputDevice::KX_CAPSLOCKKEY;
+
+ gReverseKeyTranslateTable[LEFTCTRLKEY ] = SCA_IInputDevice::KX_LEFTCTRLKEY;
+ gReverseKeyTranslateTable[LEFTALTKEY ] = SCA_IInputDevice::KX_LEFTALTKEY;
+ gReverseKeyTranslateTable[RIGHTALTKEY ] = SCA_IInputDevice::KX_RIGHTALTKEY;
+ gReverseKeyTranslateTable[RIGHTCTRLKEY ] = SCA_IInputDevice::KX_RIGHTCTRLKEY;
+ gReverseKeyTranslateTable[RIGHTSHIFTKEY ] = SCA_IInputDevice::KX_RIGHTSHIFTKEY;
+ gReverseKeyTranslateTable[LEFTSHIFTKEY ] = SCA_IInputDevice::KX_LEFTSHIFTKEY;
+
+ gReverseKeyTranslateTable[ESCKEY ] = SCA_IInputDevice::KX_ESCKEY;
+ gReverseKeyTranslateTable[TABKEY ] = SCA_IInputDevice::KX_TABKEY;
+ gReverseKeyTranslateTable[RETKEY ] = SCA_IInputDevice::KX_RETKEY;
+ gReverseKeyTranslateTable[SPACEKEY ] = SCA_IInputDevice::KX_SPACEKEY;
+ gReverseKeyTranslateTable[LINEFEEDKEY ] = SCA_IInputDevice::KX_LINEFEEDKEY;
+ gReverseKeyTranslateTable[BACKSPACEKEY ] = SCA_IInputDevice::KX_BACKSPACEKEY;
+ gReverseKeyTranslateTable[DELKEY ] = SCA_IInputDevice::KX_DELKEY;
+ gReverseKeyTranslateTable[SEMICOLONKEY ] = SCA_IInputDevice::KX_SEMICOLONKEY;
+ gReverseKeyTranslateTable[PERIODKEY ] = SCA_IInputDevice::KX_PERIODKEY;
+ gReverseKeyTranslateTable[COMMAKEY ] = SCA_IInputDevice::KX_COMMAKEY;
+ gReverseKeyTranslateTable[QUOTEKEY ] = SCA_IInputDevice::KX_QUOTEKEY;
+ gReverseKeyTranslateTable[ACCENTGRAVEKEY ] = SCA_IInputDevice::KX_ACCENTGRAVEKEY;
+ gReverseKeyTranslateTable[MINUSKEY ] = SCA_IInputDevice::KX_MINUSKEY;
+ gReverseKeyTranslateTable[SLASHKEY ] = SCA_IInputDevice::KX_SLASHKEY;
+ gReverseKeyTranslateTable[BACKSLASHKEY ] = SCA_IInputDevice::KX_BACKSLASHKEY;
+ gReverseKeyTranslateTable[EQUALKEY ] = SCA_IInputDevice::KX_EQUALKEY;
+ gReverseKeyTranslateTable[LEFTBRACKETKEY ] = SCA_IInputDevice::KX_LEFTBRACKETKEY;
+ gReverseKeyTranslateTable[RIGHTBRACKETKEY ] = SCA_IInputDevice::KX_RIGHTBRACKETKEY;
+
+ gReverseKeyTranslateTable[LEFTARROWKEY ] = SCA_IInputDevice::KX_LEFTARROWKEY;
+ gReverseKeyTranslateTable[DOWNARROWKEY ] = SCA_IInputDevice::KX_DOWNARROWKEY;
+ gReverseKeyTranslateTable[RIGHTARROWKEY ] = SCA_IInputDevice::KX_RIGHTARROWKEY;
+ gReverseKeyTranslateTable[UPARROWKEY ] = SCA_IInputDevice::KX_UPARROWKEY;
+
+ gReverseKeyTranslateTable[PAD2 ] = SCA_IInputDevice::KX_PAD2;
+ gReverseKeyTranslateTable[PAD4 ] = SCA_IInputDevice::KX_PAD4;
+ gReverseKeyTranslateTable[PAD6 ] = SCA_IInputDevice::KX_PAD6;
+ gReverseKeyTranslateTable[PAD8 ] = SCA_IInputDevice::KX_PAD8;
+
+ gReverseKeyTranslateTable[PAD1 ] = SCA_IInputDevice::KX_PAD1;
+ gReverseKeyTranslateTable[PAD3 ] = SCA_IInputDevice::KX_PAD3;
+ gReverseKeyTranslateTable[PAD5 ] = SCA_IInputDevice::KX_PAD5;
+ gReverseKeyTranslateTable[PAD7 ] = SCA_IInputDevice::KX_PAD7;
+ gReverseKeyTranslateTable[PAD9 ] = SCA_IInputDevice::KX_PAD9;
+
+ gReverseKeyTranslateTable[PADPERIOD ] = SCA_IInputDevice::KX_PADPERIOD;
+ gReverseKeyTranslateTable[PADSLASHKEY ] = SCA_IInputDevice::KX_PADSLASHKEY;
+ gReverseKeyTranslateTable[PADASTERKEY ] = SCA_IInputDevice::KX_PADASTERKEY;
+
+ gReverseKeyTranslateTable[PAD0 ] = SCA_IInputDevice::KX_PAD0;
+ gReverseKeyTranslateTable[PADMINUS ] = SCA_IInputDevice::KX_PADMINUS;
+ gReverseKeyTranslateTable[PADENTER ] = SCA_IInputDevice::KX_PADENTER;
+ gReverseKeyTranslateTable[PADPLUSKEY ] = SCA_IInputDevice::KX_PADPLUSKEY;
+
+
+ gReverseKeyTranslateTable[F1KEY ] = SCA_IInputDevice::KX_F1KEY;
+ gReverseKeyTranslateTable[F2KEY ] = SCA_IInputDevice::KX_F2KEY;
+ gReverseKeyTranslateTable[F3KEY ] = SCA_IInputDevice::KX_F3KEY;
+ gReverseKeyTranslateTable[F4KEY ] = SCA_IInputDevice::KX_F4KEY;
+ gReverseKeyTranslateTable[F5KEY ] = SCA_IInputDevice::KX_F5KEY;
+ gReverseKeyTranslateTable[F6KEY ] = SCA_IInputDevice::KX_F6KEY;
+ gReverseKeyTranslateTable[F7KEY ] = SCA_IInputDevice::KX_F7KEY;
+ gReverseKeyTranslateTable[F8KEY ] = SCA_IInputDevice::KX_F8KEY;
+ gReverseKeyTranslateTable[F9KEY ] = SCA_IInputDevice::KX_F9KEY;
+ gReverseKeyTranslateTable[F10KEY ] = SCA_IInputDevice::KX_F10KEY;
+ gReverseKeyTranslateTable[F11KEY ] = SCA_IInputDevice::KX_F11KEY;
+ gReverseKeyTranslateTable[F12KEY ] = SCA_IInputDevice::KX_F12KEY;
+
+ gReverseKeyTranslateTable[PAUSEKEY ] = SCA_IInputDevice::KX_PAUSEKEY;
+ gReverseKeyTranslateTable[INSERTKEY ] = SCA_IInputDevice::KX_INSERTKEY;
+ gReverseKeyTranslateTable[HOMEKEY ] = SCA_IInputDevice::KX_HOMEKEY;
+ gReverseKeyTranslateTable[PAGEUPKEY ] = SCA_IInputDevice::KX_PAGEUPKEY;
+ gReverseKeyTranslateTable[PAGEDOWNKEY ] = SCA_IInputDevice::KX_PAGEDOWNKEY;
+ gReverseKeyTranslateTable[ENDKEY ] = SCA_IInputDevice::KX_ENDKEY;
+ }
+
+ int executePriority = 0;
int uniqueint = 0;
+ int count = 0;
bSensor* sens = (bSensor*)blenderobject->sensors.first;
bool pos_pulsemode = false;
bool neg_pulsemode = false;
int frequency = 0;
bool invert = false;
bool level = false;
+ bool tap = false;
+ while (sens)
+ {
+ sens = sens->next;
+ count++;
+ }
+ gameobj->ReserveSensor(count);
+ sens = (bSensor*)blenderobject->sensors.first;
while(sens)
{
SCA_ISensor* gamesensor=NULL;
@@ -279,6 +295,7 @@ void BL_ConvertSensors(struct Object* blenderobject,
frequency = sens->freq;
invert = !(sens->invert == 0);
level = !(sens->level == 0);
+ tap = !(sens->tap == 0);
switch (sens->type)
{
@@ -679,6 +696,11 @@ void BL_ConvertSensors(struct Object* blenderobject,
if (eventmgr)
{
int randomSeed = blenderrndsensor->seed;
+ if (randomSeed == 0)
+ {
+ randomSeed = (int)(kxengine->GetRealTime()*100000.0);
+ randomSeed ^= (intptr_t)blenderrndsensor;
+ }
gamesensor = new SCA_RandomSensor(eventmgr, gameobj, randomSeed);
}
}
@@ -766,7 +788,8 @@ void BL_ConvertSensors(struct Object* blenderobject,
frequency);
gamesensor->SetInvert(invert);
gamesensor->SetLevel(level);
- gamesensor->SetName(STR_String(sens->name));
+ gamesensor->SetTap(tap);
+ gamesensor->SetName(sens->name);
gameobj->AddSensor(gamesensor);
@@ -775,7 +798,7 @@ void BL_ConvertSensors(struct Object* blenderobject,
//if (isInActiveLayer)
// gamesensor->RegisterToManager();
-
+ gamesensor->ReserveController(sens->totlinks);
for (int i=0;i<sens->totlinks;i++)
{
bController* linkedcont = (bController*) sens->links[i];
diff --git a/source/gameengine/Converter/KX_ConvertSensors.h b/source/gameengine/Converter/KX_ConvertSensors.h
index b18ffc10a2a..9162a866768 100644
--- a/source/gameengine/Converter/KX_ConvertSensors.h
+++ b/source/gameengine/Converter/KX_ConvertSensors.h
@@ -35,7 +35,6 @@ void BL_ConvertSensors(struct Object* blenderobject,
class KX_Scene* kxscene,
class KX_KetsjiEngine* kxengine,
class SCA_IInputDevice* keydev,
- int & executePriority ,
int activeLayerBitInfo,
bool isInActiveLayer,
class RAS_ICanvas* canvas,
diff --git a/source/gameengine/Expressions/BoolValue.cpp b/source/gameengine/Expressions/BoolValue.cpp
index 13c870b68e5..d90da8b3a92 100644
--- a/source/gameengine/Expressions/BoolValue.cpp
+++ b/source/gameengine/Expressions/BoolValue.cpp
@@ -26,6 +26,9 @@
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
+const STR_String CBoolValue::sTrueString = "TRUE";
+const STR_String CBoolValue::sFalseString = "FALSE";
+
CBoolValue::CBoolValue()
/*
@@ -45,7 +48,7 @@ CBoolValue::CBoolValue(bool inBool)
-CBoolValue::CBoolValue(bool innie,STR_String name,AllocationTYPE alloctype)
+CBoolValue::CBoolValue(bool innie,const char *name,AllocationTYPE alloctype)
{
m_bool = innie;
SetName(name);
@@ -190,9 +193,6 @@ double CBoolValue::GetNumber()
const STR_String& CBoolValue::GetText()
{
- static STR_String sTrueString = STR_String("TRUE");
- static STR_String sFalseString = STR_String("FALSE");
-
return m_bool ? sTrueString : sFalseString;
}
@@ -201,7 +201,7 @@ const STR_String& CBoolValue::GetText()
CValue* CBoolValue::GetReplica()
{
CBoolValue* replica = new CBoolValue(*this);
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
diff --git a/source/gameengine/Expressions/BoolValue.h b/source/gameengine/Expressions/BoolValue.h
index 9352b9d4b92..726619e7193 100644
--- a/source/gameengine/Expressions/BoolValue.h
+++ b/source/gameengine/Expressions/BoolValue.h
@@ -28,9 +28,12 @@ class CBoolValue : public CPropValue
//PLUGIN_DECLARE_SERIAL(CBoolValue,CValue)
public:
+ static const STR_String sTrueString;
+ static const STR_String sFalseString;
+
CBoolValue();
CBoolValue(bool inBool);
- CBoolValue(bool innie, STR_String name, AllocationTYPE alloctype = CValue::HEAPVALUE);
+ CBoolValue(bool innie, const char *name, AllocationTYPE alloctype = CValue::HEAPVALUE);
virtual const STR_String& GetText();
virtual double GetNumber();
diff --git a/source/gameengine/Expressions/CMakeLists.txt b/source/gameengine/Expressions/CMakeLists.txt
index 6b2a835d648..e3942b46557 100644
--- a/source/gameengine/Expressions/CMakeLists.txt
+++ b/source/gameengine/Expressions/CMakeLists.txt
@@ -31,6 +31,7 @@ SET(INC
../../../source/kernel/gen_system
../../../intern/string
../../../intern/moto/include
+ ../../../source/gameengine/SceneGraph
${PYTHON_INC}
)
diff --git a/source/gameengine/Expressions/EmptyValue.cpp b/source/gameengine/Expressions/EmptyValue.cpp
index f72ddc47096..5d1273b5301 100644
--- a/source/gameengine/Expressions/EmptyValue.cpp
+++ b/source/gameengine/Expressions/EmptyValue.cpp
@@ -121,7 +121,7 @@ const STR_String & CEmptyValue::GetText()
CValue* CEmptyValue::GetReplica()
{
CEmptyValue* replica = new CEmptyValue(*this);
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
diff --git a/source/gameengine/Expressions/ErrorValue.cpp b/source/gameengine/Expressions/ErrorValue.cpp
index 651a772db19..a44abf8b22e 100644
--- a/source/gameengine/Expressions/ErrorValue.cpp
+++ b/source/gameengine/Expressions/ErrorValue.cpp
@@ -34,13 +34,15 @@ effect: constructs a new CErrorValue containing errormessage "Error"
-CErrorValue::CErrorValue(STR_String errmsg)
+CErrorValue::CErrorValue(const char *errmsg)
/*
pre:
effect: constructs a new CErrorValue containing errormessage errmsg
*/
{
- m_strErrorText = "[" + errmsg + "]";
+ m_strErrorText = "[";
+ m_strErrorText += errmsg;
+ m_strErrorText += "]";
SetError(true);
}
diff --git a/source/gameengine/Expressions/ErrorValue.h b/source/gameengine/Expressions/ErrorValue.h
index 5b5795196ba..b4b758feea7 100644
--- a/source/gameengine/Expressions/ErrorValue.h
+++ b/source/gameengine/Expressions/ErrorValue.h
@@ -25,7 +25,7 @@ public:
virtual const STR_String & GetText();
virtual double GetNumber();
CErrorValue();
- CErrorValue(STR_String errmsg);
+ CErrorValue(const char *errmsg);
virtual ~CErrorValue();
virtual CValue* Calc(VALUE_OPERATOR op, CValue* val);
virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
diff --git a/source/gameengine/Expressions/FloatValue.cpp b/source/gameengine/Expressions/FloatValue.cpp
index 212a55fe457..4de685a82c1 100644
--- a/source/gameengine/Expressions/FloatValue.cpp
+++ b/source/gameengine/Expressions/FloatValue.cpp
@@ -50,7 +50,7 @@ effect: constructs a new CFloatValue containing value fl
-CFloatValue::CFloatValue(float fl,STR_String name,AllocationTYPE alloctype)
+CFloatValue::CFloatValue(float fl,const char *name,AllocationTYPE alloctype)
/*
pre:
effect: constructs a new CFloatValue containing value fl
@@ -307,8 +307,8 @@ const STR_String & CFloatValue::GetText()
CValue* CFloatValue::GetReplica()
{
CFloatValue* replica = new CFloatValue(*this);
- replica->m_pstrRep = NULL;
- CValue::AddDataToReplica(replica);
+ replica->m_pstrRep = NULL; /* should be in CFloatValue::ProcessReplica() but its not defined, no matter */
+ replica->ProcessReplica();
return replica;
}
diff --git a/source/gameengine/Expressions/FloatValue.h b/source/gameengine/Expressions/FloatValue.h
index 41f70b5c54c..fb75b7c702b 100644
--- a/source/gameengine/Expressions/FloatValue.h
+++ b/source/gameengine/Expressions/FloatValue.h
@@ -23,7 +23,7 @@ class CFloatValue : public CPropValue
public:
CFloatValue();
CFloatValue(float fl);
- CFloatValue(float fl,STR_String name,AllocationTYPE alloctype=CValue::HEAPVALUE);
+ CFloatValue(float fl,const char *name,AllocationTYPE alloctype=CValue::HEAPVALUE);
virtual const STR_String & GetText();
diff --git a/source/gameengine/Expressions/IfExpr.cpp b/source/gameengine/Expressions/IfExpr.cpp
index 5d3eb3641ca..fcb37bff52d 100644
--- a/source/gameengine/Expressions/IfExpr.cpp
+++ b/source/gameengine/Expressions/IfExpr.cpp
@@ -15,6 +15,7 @@
#include "IfExpr.h"
#include "EmptyValue.h"
#include "ErrorValue.h"
+#include "BoolValue.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -72,14 +73,14 @@ ret: a new object containing the value of m_e1 if m_guard is a boolean TRUE
{
CValue *guardval;
guardval = m_guard->Calculate();
- STR_String text = guardval->GetText();
+ const STR_String& text = guardval->GetText();
guardval->Release();
- if (text == STR_String("TRUE"))
+ if (&text == &CBoolValue::sTrueString)
{
return m_e1->Calculate();
}
- else if (text == STR_String("FALSE"))
+ else if (&text == &CBoolValue::sFalseString)
{
return m_e2->Calculate();
}
diff --git a/source/gameengine/Expressions/InputParser.cpp b/source/gameengine/Expressions/InputParser.cpp
index 66075dd8d42..b15b206a38a 100644
--- a/source/gameengine/Expressions/InputParser.cpp
+++ b/source/gameengine/Expressions/InputParser.cpp
@@ -38,7 +38,7 @@
// cool things like (IF(LOD==1,CCurvedValue,IF(LOD==2,CCurvedValue2)) etc...
#include "IfExpr.h"
-#if defined(WIN32) || defined(WIN64)
+#if (defined(WIN32) || defined(WIN64)) && !defined(FREE_WINDOWS)
#define strcasecmp _stricmp
#ifndef strtoll
@@ -66,7 +66,7 @@ CParser::~CParser()
-void CParser::ScanError(STR_String str)
+void CParser::ScanError(const char *str)
{
// sets the global variable errmsg to an errormessage with
// contents str, appending if it already exists
@@ -81,7 +81,7 @@ void CParser::ScanError(STR_String str)
-CExpression* CParser::Error(STR_String str)
+CExpression* CParser::Error(const char *str)
{
// makes and returns a new CConstExpr filled with an CErrorValue
// with string str
@@ -537,7 +537,7 @@ CExpression *CParser::Expr() {
}
CExpression* CParser::ProcessText
-(STR_String intext) {
+(const char *intext) {
// and parses the string in intext and returns it.
@@ -574,7 +574,7 @@ CExpression* CParser::ProcessText
-float CParser::GetFloat(STR_String txt)
+float CParser::GetFloat(STR_String& txt)
{
// returns parsed text into a float
// empty string returns -1
@@ -599,7 +599,7 @@ float CParser::GetFloat(STR_String txt)
return result;
}
-CValue* CParser::GetValue(STR_String txt, bool bFallbackToText)
+CValue* CParser::GetValue(STR_String& txt, bool bFallbackToText)
{
// returns parsed text into a value,
// empty string returns NULL value !
@@ -658,10 +658,41 @@ static PyMethodDef CParserMethods[] =
{ NULL,NULL} // Sentinel
};
+
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef Expression_module_def = {
+ {}, /* m_base */
+ "Expression", /* m_name */
+ 0, /* m_doc */
+ 0, /* m_size */
+ CParserMethods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
+
extern "C" {
void initExpressionModule(void)
{
- Py_InitModule("Expression",CParserMethods);
+ PyObject *m;
+ /* Use existing module where possible
+ * be careful not to init any runtime vars after this */
+ m = PyImport_ImportModule( "Expression" );
+ if(m) {
+ Py_DECREF(m);
+ //return m;
+ }
+ else {
+ PyErr_Clear();
+
+#if (PY_VERSION_HEX >= 0x03000000)
+ PyModule_Create(&Expression_module_def);
+#else
+ Py_InitModule("Expression",CParserMethods);
+#endif
+ }
}
}
diff --git a/source/gameengine/Expressions/InputParser.h b/source/gameengine/Expressions/InputParser.h
index 3d517222639..810bdc244a8 100644
--- a/source/gameengine/Expressions/InputParser.h
+++ b/source/gameengine/Expressions/InputParser.h
@@ -27,9 +27,9 @@ public:
CParser();
virtual ~CParser();
- float GetFloat(STR_String txt);
- CValue* GetValue(STR_String txt, bool bFallbackToText=false);
- CExpression* ProcessText(STR_String intext);
+ float GetFloat(STR_String& txt);
+ CValue* GetValue(STR_String& txt, bool bFallbackToText=false);
+ CExpression* ProcessText(const char *intext);
void SetContext(CValue* context);
private:
@@ -86,8 +86,8 @@ private:
CValue* m_identifierContext;// context in which identifiers are looked up
- void ScanError(STR_String str);
- CExpression* Error(STR_String str);
+ void ScanError(const char *str);
+ CExpression* Error(const char *str);
void NextCh();
void TermChar(char c);
void DigRep();
diff --git a/source/gameengine/Expressions/IntValue.cpp b/source/gameengine/Expressions/IntValue.cpp
index 4e86f7bf789..227518e9439 100644
--- a/source/gameengine/Expressions/IntValue.cpp
+++ b/source/gameengine/Expressions/IntValue.cpp
@@ -54,7 +54,7 @@ effect: constructs a new CIntValue containing cInt innie
-CIntValue::CIntValue(cInt innie,STR_String name,AllocationTYPE alloctype)
+CIntValue::CIntValue(cInt innie,const char *name,AllocationTYPE alloctype)
{
m_int = innie;
SetName(name);
@@ -311,7 +311,7 @@ const STR_String & CIntValue::GetText()
CValue* CIntValue::GetReplica() {
CIntValue* replica = new CIntValue(*this);
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->m_pstrRep = NULL;
return replica;
diff --git a/source/gameengine/Expressions/IntValue.h b/source/gameengine/Expressions/IntValue.h
index 0f3a38b274b..06bf1755749 100644
--- a/source/gameengine/Expressions/IntValue.h
+++ b/source/gameengine/Expressions/IntValue.h
@@ -32,7 +32,7 @@ public:
CIntValue();
CIntValue(cInt innie);
CIntValue(cInt innie,
- STR_String name,
+ const char *name,
AllocationTYPE alloctype=CValue::HEAPVALUE);
virtual CValue* Calc(VALUE_OPERATOR op,
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp
index dd9b296dce1..a0d73c75d60 100644
--- a/source/gameengine/Expressions/ListValue.cpp
+++ b/source/gameengine/Expressions/ListValue.cpp
@@ -18,6 +18,7 @@
#include "StringValue.h"
#include "VoidValue.h"
#include <algorithm>
+#include "BoolValue.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -39,8 +40,10 @@ Py_ssize_t listvalue_bufferlen(PyObject* self)
PyObject* listvalue_buffer_item(PyObject* self, Py_ssize_t index)
{
CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ CValue *cval;
+
if (list==NULL) {
- PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, "val = CList[i], "BGE_PROXY_ERROR_MSG);
return NULL;
}
@@ -49,43 +52,47 @@ PyObject* listvalue_buffer_item(PyObject* self, Py_ssize_t index)
if (index < 0)
index = count+index;
- if (index >= 0 && index < count)
- {
- PyObject* pyobj = list->GetValue(index)->ConvertValueToPython();
- if (pyobj)
- return pyobj;
- else
- return list->GetValue(index)->GetProxy();
-
+ if (index < 0 || index >= count) {
+ PyErr_SetString(PyExc_IndexError, "CList[i]: Python ListIndex out of range in CValueList");
+ return NULL;
}
- PyErr_SetString(PyExc_IndexError, "list[i]: Python ListIndex out of range in CValueList");
- return NULL;
+
+ cval= list->GetValue(index);
+
+ PyObject* pyobj = cval->ConvertValueToPython();
+ if (pyobj)
+ return pyobj;
+ else
+ return cval->GetProxy();
}
PyObject* listvalue_mapping_subscript(PyObject* self, PyObject* pyindex)
{
CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
if (list==NULL) {
- PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, "value = CList[i], "BGE_PROXY_ERROR_MSG);
return NULL;
}
if (PyString_Check(pyindex))
{
- STR_String index(PyString_AsString(pyindex));
- CValue *item = ((CListValue*) list)->FindValue(index);
- if (item)
- return item->GetProxy();
-
+ CValue *item = ((CListValue*) list)->FindValue(PyString_AsString(pyindex));
+ if (item) {
+ PyObject* pyobj = item->ConvertValueToPython();
+ if(pyobj)
+ return pyobj;
+ else
+ return item->GetProxy();
+ }
}
- if (PyInt_Check(pyindex))
+ else if (PyInt_Check(pyindex))
{
int index = PyInt_AsLong(pyindex);
- return listvalue_buffer_item(self, index);
+ return listvalue_buffer_item(self, index); /* wont add a ref */
}
PyObject *pyindex_str = PyObject_Repr(pyindex); /* new ref */
- PyErr_Format(PyExc_KeyError, "list[key]: '%s' key not in list", PyString_AsString(pyindex_str));
+ PyErr_Format(PyExc_KeyError, "CList[key]: '%s' key not in list", PyString_AsString(pyindex_str));
Py_DECREF(pyindex_str);
return NULL;
}
@@ -96,7 +103,7 @@ PyObject* listvalue_buffer_slice(PyObject* self,Py_ssize_t ilow, Py_ssize_t ihig
{
CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
if (list==NULL) {
- PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, "val = CList[i:j], "BGE_PROXY_ERROR_MSG);
return NULL;
}
@@ -127,73 +134,79 @@ PyObject* listvalue_buffer_slice(PyObject* self,Py_ssize_t ilow, Py_ssize_t ihig
}
-
-static PyObject *
-listvalue_buffer_concat(PyObject * self, PyObject * other)
+/* clist + list, return a list that python owns */
+static PyObject *listvalue_buffer_concat(PyObject * self, PyObject * other)
{
CListValue *listval= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ int i, numitems, numitems_orig;
+
if (listval==NULL) {
- PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, "CList+other, "BGE_PROXY_ERROR_MSG);
return NULL;
}
+ numitems_orig= listval->GetCount();
+
// for now, we support CListValue concatenated with items
// and CListValue concatenated to Python Lists
// and CListValue concatenated with another CListValue
- listval->AddRef();
- if (other->ob_type == &PyList_Type)
+ /* Shallow copy, dont use listval->GetReplica(), it will screw up with KX_GameObjects */
+ CListValue* listval_new = new CListValue();
+
+ if (PyList_Check(other))
{
+ CValue* listitemval;
bool error = false;
-
- int i;
- int numitems = PyList_Size(other);
+
+ numitems = PyList_Size(other);
+
+ /* copy the first part of the list */
+ listval_new->Resize(numitems_orig + numitems);
+ for (i=0;i<numitems_orig;i++)
+ listval_new->SetValue(i, listval->GetValue(i)->AddRef());
+
for (i=0;i<numitems;i++)
{
- PyObject* listitem = PyList_GetItem(other,i);
- CValue* listitemval = listval->ConvertPythonToValue(listitem);
- if (listitemval)
- {
- listval->Add(listitemval);
- } else
- {
- error = true;
+ listitemval = listval->ConvertPythonToValue(PyList_GetItem(other,i), "cList + pyList: CListValue, ");
+
+ if (listitemval) {
+ listval_new->SetValue(i+numitems_orig, listitemval);
+ } else {
+ error= true;
+ break;
}
}
-
+
if (error) {
- PyErr_SetString(PyExc_SystemError, "list.append(val): couldn't add one or more items to this CValueList");
- return NULL;
+ listval_new->Resize(numitems_orig+i); /* resize so we dont try release NULL pointers */
+ listval_new->Release();
+ return NULL; /* ConvertPythonToValue above sets the error */
}
-
- } else
- {
- if (other->ob_type == &CListValue::Type)
- {
- // add items from otherlist to this list
- CListValue* otherval = (CListValue*) other;
-
-
- for (int i=0;i<otherval->GetCount();i++)
- {
- otherval->Add(listval->GetValue(i)->AddRef());
- }
- }
- else
- {
- CValue* objval = listval->ConvertPythonToValue(other);
- if (objval)
- {
- listval->Add(objval);
- } else
- {
- PyErr_SetString(PyExc_SystemError, "list.append(i): couldn't add item to this CValueList");
- return NULL;
- }
+
+ }
+ else if (PyObject_TypeCheck(other, &CListValue::Type)) {
+ // add items from otherlist to this list
+ CListValue* otherval = static_cast<CListValue *>(BGE_PROXY_REF(other));
+ if(otherval==NULL) {
+ listval_new->Release();
+ PyErr_SetString(PyExc_SystemError, "CList+other, "BGE_PROXY_ERROR_MSG);
+ return NULL;
}
+
+ numitems = otherval->GetCount();
+
+ /* copy the first part of the list */
+ listval_new->Resize(numitems_orig + numitems); /* resize so we dont try release NULL pointers */
+ for (i=0;i<numitems_orig;i++)
+ listval_new->SetValue(i, listval->GetValue(i)->AddRef());
+
+ /* now copy the other part of the list */
+ for (i=0;i<numitems;i++)
+ listval_new->SetValue(i+numitems_orig, otherval->GetValue(i)->AddRef());
+
}
-
- return self;
+ return listval_new->NewProxy(true); /* python owns this list */
}
@@ -203,9 +216,15 @@ static PySequenceMethods listvalue_as_sequence = {
listvalue_buffer_concat, /*sq_concat*/
NULL, /*sq_repeat*/
listvalue_buffer_item, /*sq_item*/
+#if (PY_VERSION_HEX >= 0x03000000) // TODO, slicing in py3?
+ NULL,
+ NULL,
+ NULL,
+#else
listvalue_buffer_slice, /*sq_slice*/
NULL, /*sq_ass_item*/
- NULL /*sq_ass_slice*/
+ NULL, /*sq_ass_slice*/
+#endif
};
@@ -220,8 +239,13 @@ static PyMappingMethods instance_as_mapping = {
PyTypeObject CListValue::Type = {
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"CListValue", /*tp_name*/
sizeof(PyObjectPlus_Proxy), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -256,10 +280,17 @@ PyParentObject CListValue::Parents[] = {
PyMethodDef CListValue::Methods[] = {
+ /* List style access */
{"append", (PyCFunction)CListValue::sPyappend,METH_O},
{"reverse", (PyCFunction)CListValue::sPyreverse,METH_NOARGS},
{"index", (PyCFunction)CListValue::sPyindex,METH_O},
{"count", (PyCFunction)CListValue::sPycount,METH_O},
+
+ /* Dict style access */
+ {"get", (PyCFunction)CListValue::sPyget,METH_VARARGS},
+ {"has_key", (PyCFunction)CListValue::sPyhas_key,METH_O},
+
+ /* Own cvalue funcs */
{"from_id", (PyCFunction)CListValue::sPyfrom_id,METH_O},
{NULL,NULL} //Sentinel
@@ -273,6 +304,10 @@ PyObject* CListValue::py_getattro(PyObject* attr) {
py_getattro_up(CValue);
}
+PyObject* CListValue::py_getattro_dict() {
+ py_getattro_dict_up(CValue);
+}
+
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
@@ -320,7 +355,7 @@ const STR_String & CListValue::GetText()
CValue* CListValue::GetReplica() {
CListValue* replica = new CListValue(*this);
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->m_bReleaseContents=true; // for copy, complete array is copied for now...
// copy all values
@@ -370,23 +405,21 @@ void CListValue::ReleaseAndRemoveAll()
CValue* CListValue::FindValue(const STR_String & name)
{
- CValue* resultval = NULL;
- int i=0;
+ for (int i=0; i < GetCount(); i++)
+ if (GetValue(i)->GetName() == name)
+ return GetValue(i);
- while (!resultval && i < GetCount())
- {
- CValue* myval = GetValue(i);
-
- if (myval->GetName() == name)
- resultval = GetValue(i)->AddRef(); // add referencecount
- else
- i++;
-
- }
- return resultval;
+ return NULL;
}
-
+CValue* CListValue::FindValue(const char * name)
+{
+ for (int i=0; i < GetCount(); i++)
+ if (GetValue(i)->GetName() == name)
+ return GetValue(i);
+
+ return NULL;
+}
bool CListValue::SearchValue(CValue *val)
{
@@ -433,14 +466,24 @@ void CListValue::MergeList(CListValue *otherlist)
{
SetValue(i+numelements,otherlist->GetValue(i)->AddRef());
}
-
}
-
PyObject* CListValue::Pyappend(PyObject* value)
{
- return listvalue_buffer_concat(m_proxy, value); /* m_proxy is the same as self */
+ CValue* objval = ConvertPythonToValue(value, "CList.append(i): CValueList, ");
+
+ if (!objval) /* ConvertPythonToValue sets the error */
+ return NULL;
+
+ if (!BGE_PROXY_PYOWNS(m_proxy)) {
+ PyErr_SetString(PyExc_TypeError, "CList.append(i): this CValueList is used internally for the game engine and can't be modified");
+ return NULL;
+ }
+
+ Add(objval);
+
+ Py_RETURN_NONE;
}
@@ -461,13 +504,12 @@ bool CListValue::CheckEqual(CValue* first,CValue* second)
if (eqval==NULL)
return false;
-
- STR_String txt = eqval->GetText();
- eqval->Release();
- if (txt=="TRUE")
+ const STR_String& text = eqval->GetText();
+ if (&text==&CBoolValue::sTrueString)
{
result = true;
}
+ eqval->Release();
return result;
}
@@ -478,7 +520,7 @@ PyObject* CListValue::Pyindex(PyObject *value)
{
PyObject* result = NULL;
- CValue* checkobj = ConvertPythonToValue(value);
+ CValue* checkobj = ConvertPythonToValue(value, "val = cList[i]: CValueList, ");
if (checkobj==NULL)
return NULL; /* ConvertPythonToValue sets the error */
@@ -495,7 +537,7 @@ PyObject* CListValue::Pyindex(PyObject *value)
checkobj->Release();
if (result==NULL) {
- PyErr_SetString(PyExc_ValueError, "list.index(x): x not in CListValue");
+ PyErr_SetString(PyExc_ValueError, "CList.index(x): x not in CListValue");
}
return result;
@@ -507,7 +549,7 @@ PyObject* CListValue::Pycount(PyObject* value)
{
int numfound = 0;
- CValue* checkobj = ConvertPythonToValue(value);
+ CValue* checkobj = ConvertPythonToValue(value, ""); /* error ignored */
if (checkobj==NULL) { /* in this case just return that there are no items in the list */
PyErr_Clear();
@@ -528,7 +570,35 @@ PyObject* CListValue::Pycount(PyObject* value)
return PyInt_FromLong(numfound);
}
+/* Matches python dict.get(key, [default]) */
+PyObject* CListValue::Pyget(PyObject *args)
+{
+ char *key;
+ PyObject* def = Py_None;
+
+ if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
+ return NULL;
+
+ CValue *item = FindValue((const char *)key);
+ if (item) {
+ PyObject* pyobj = item->ConvertValueToPython();
+ if (pyobj)
+ return pyobj;
+ else
+ return item->GetProxy();
+ }
+ Py_INCREF(def);
+ return def;
+}
+/* Matches python dict.has_key() */
+PyObject* CListValue::Pyhas_key(PyObject* value)
+{
+ if (PyString_Check(value) && FindValue((const char *)PyString_AsString(value)))
+ Py_RETURN_TRUE;
+
+ Py_RETURN_FALSE;
+}
PyObject* CListValue::Pyfrom_id(PyObject* value)
{
@@ -555,18 +625,24 @@ PyObject* CListValue::Pyfrom_id(PyObject* value)
CValue* CListValue::Calc(VALUE_OPERATOR op,CValue *val)
{
//assert(false); // todo: implement me!
- fprintf(stderr, "CValueList::Calc not yet implimented\n");
+ static int error_printed = 0;
+ if (error_printed==0) {
+ fprintf(stderr, "CValueList::Calc not yet implimented\n");
+ error_printed = 1;
+ }
return NULL;
}
-
-
CValue* CListValue::CalcFinal(VALUE_DATA_TYPE dtype,
VALUE_OPERATOR op,
CValue* val)
{
//assert(false); // todo: implement me!
- fprintf(stderr, "CValueList::CalcFinal not yet implimented\n");
+ static int error_printed = 0;
+ if (error_printed==0) {
+ fprintf(stderr, "CValueList::CalcFinal not yet implimented\n");
+ error_printed = 1;
+ }
return NULL;
}
diff --git a/source/gameengine/Expressions/ListValue.h b/source/gameengine/Expressions/ListValue.h
index 2af5a330c43..68e900e25e0 100644
--- a/source/gameengine/Expressions/ListValue.h
+++ b/source/gameengine/Expressions/ListValue.h
@@ -46,6 +46,7 @@ public:
bool SearchValue(CValue* val);
CValue* FindValue(const STR_String & name);
+ CValue* FindValue(const char *name);
void ReleaseAndRemoveAll();
virtual void SetModified(bool bModified);
@@ -60,6 +61,7 @@ public:
bool CheckEqual(CValue* first,CValue* second);
virtual PyObject* py_getattro(PyObject* attr);
+ virtual PyObject* py_getattro_dict();
virtual PyObject* py_repr(void) {
PyObject *py_proxy= this->GetProxy();
PyObject *py_list= PySequence_List(py_proxy);
@@ -73,6 +75,8 @@ public:
KX_PYMETHOD_NOARGS(CListValue,reverse);
KX_PYMETHOD_O(CListValue,index);
KX_PYMETHOD_O(CListValue,count);
+ KX_PYMETHOD_VARARGS(CListValue,get);
+ KX_PYMETHOD_O(CListValue,has_key);
KX_PYMETHOD_O(CListValue,from_id);
diff --git a/source/gameengine/Expressions/Makefile b/source/gameengine/Expressions/Makefile
index 6736149bbcd..f46c0037200 100644
--- a/source/gameengine/Expressions/Makefile
+++ b/source/gameengine/Expressions/Makefile
@@ -41,4 +41,5 @@ CPPFLAGS += -I../../blender/makesdna
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../kernel/gen_system
+CPPFLAGS += -I../../gameengine/SceneGraph
diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp
index 6cfa14ddc80..defb6853e67 100644
--- a/source/gameengine/Expressions/PyObjectPlus.cpp
+++ b/source/gameengine/Expressions/PyObjectPlus.cpp
@@ -50,14 +50,20 @@
#include "stdlib.h"
#include "PyObjectPlus.h"
#include "STR_String.h"
+#include "MT_Vector3.h"
/*------------------------------
* PyObjectPlus Type -- Every class, even the abstract one should have a Type
------------------------------*/
PyTypeObject PyObjectPlus::Type = {
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"PyObjectPlus", /*tp_name*/
sizeof(PyObjectPlus_Proxy), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -90,6 +96,7 @@ void PyObjectPlus::py_base_dealloc(PyObject *self) // python wrapper
PyObjectPlus *self_plus= BGE_PROXY_REF(self);
if(self_plus) {
if(BGE_PROXY_PYOWNS(self)) { /* Does python own this?, then delete it */
+ self_plus->m_proxy = NULL; /* Need this to stop ~PyObjectPlus from decrefing m_proxy otherwise its decref'd twice and py-debug crashes */
delete self_plus;
}
@@ -98,7 +105,7 @@ void PyObjectPlus::py_base_dealloc(PyObject *self) // python wrapper
PyObject_DEL( self );
};
-PyObjectPlus::PyObjectPlus(PyTypeObject *T) // constructor
+PyObjectPlus::PyObjectPlus(PyTypeObject *T) : SG_QList() // constructor
{
MT_assert(T != NULL);
m_proxy= NULL;
@@ -113,13 +120,13 @@ PyMethodDef PyObjectPlus::Methods[] = {
};
PyAttributeDef PyObjectPlus::Attributes[] = {
- KX_PYATTRIBUTE_RO_FUNCTION("isValid", PyObjectPlus, pyattr_get_is_valid),
+ KX_PYATTRIBUTE_RO_FUNCTION("invalid", PyObjectPlus, pyattr_get_invalid),
{NULL} //Sentinel
};
-PyObject* PyObjectPlus::pyattr_get_is_valid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+PyObject* PyObjectPlus::pyattr_get_invalid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
- Py_RETURN_TRUE;
+ Py_RETURN_FALSE;
}
/*------------------------------
@@ -137,13 +144,33 @@ PyObject *PyObjectPlus::py_base_getattro(PyObject * self, PyObject *attr)
{
PyObjectPlus *self_plus= BGE_PROXY_REF(self);
if(self_plus==NULL) {
- if(!strcmp("isValid", PyString_AsString(attr))) {
+ if(!strcmp("invalid", PyString_AsString(attr))) {
Py_RETURN_TRUE;
}
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
return NULL;
}
- return self_plus->py_getattro(attr);
+
+ PyObject *ret= self_plus->py_getattro(attr);
+
+ /* Attribute not found, was this a __dict__ lookup?, otherwise set an error if none is set */
+ if(ret==NULL) {
+ char *attr_str= PyString_AsString(attr);
+
+ if (strcmp(attr_str, "__dict__")==0)
+ {
+ /* the error string will probably not
+ * be set but just incase clear it */
+ PyErr_Clear();
+ ret= self_plus->py_getattro_dict();
+ }
+ else if (!PyErr_Occurred()) {
+ /* We looked for an attribute but it wasnt found
+ * since py_getattro didnt set the error, set it here */
+ PyErr_Format(PyExc_AttributeError, "'%s' object has no attribute '%s'", self->ob_type->tp_name, attr_str);
+ }
+ }
+ return ret;
}
/* This should be the entry in Type since it takes the C++ class from PyObjectPlus_Proxy */
@@ -151,7 +178,7 @@ int PyObjectPlus::py_base_setattro(PyObject *self, PyObject *attr, PyObject *val
{
PyObjectPlus *self_plus= BGE_PROXY_REF(self);
if(self_plus==NULL) {
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
return -1;
}
@@ -166,7 +193,7 @@ PyObject *PyObjectPlus::py_base_repr(PyObject *self) // This should be the ent
PyObjectPlus *self_plus= BGE_PROXY_REF(self);
if(self_plus==NULL) {
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
return NULL;
}
@@ -177,11 +204,7 @@ PyObject *PyObjectPlus::py_getattro(PyObject* attr)
{
PyObject *descr = PyDict_GetItem(Type.tp_dict, attr); \
if (descr == NULL) {
- if (strcmp(PyString_AsString(attr), "__dict__")==0) {
- return py_getattr_dict(NULL, Type.tp_dict); /* no Attributes yet */
- }
- PyErr_Format(PyExc_AttributeError, "attribute \"%s\" not found", PyString_AsString(attr));
- return NULL;
+ return NULL; /* py_base_getattro sets the error, this way we can avoid setting the error at many levels */
} else {
/* Copied from py_getattro_up */
if (PyCObject_Check(descr)) {
@@ -189,13 +212,16 @@ PyObject *PyObjectPlus::py_getattro(PyObject* attr)
} else if (descr->ob_type->tp_descr_get) {
return PyCFunction_New(((PyMethodDescrObject *)descr)->d_method, this->m_proxy);
} else {
- fprintf(stderr, "Unknown attribute type (PyObjectPlus::py_getattro)");
- return descr;
+ return NULL;
}
/* end py_getattro_up copy */
}
}
+PyObject* PyObjectPlus::py_getattro_dict() {
+ return py_getattr_dict(NULL, Type.tp_dict);
+}
+
int PyObjectPlus::py_delattro(PyObject* attr)
{
PyErr_SetString(PyExc_AttributeError, "attribute cant be deleted");
@@ -233,14 +259,14 @@ PyObject *PyObjectPlus::py_get_attrdef(void *self, const PyAttributeDef *attrdef
{
bool *val = reinterpret_cast<bool*>(ptr);
ptr += sizeof(bool);
- PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
+ PyList_SET_ITEM(resultlist,i,PyInt_FromLong(*val));
break;
}
case KX_PYATTRIBUTE_TYPE_SHORT:
{
short int *val = reinterpret_cast<short int*>(ptr);
ptr += sizeof(short int);
- PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
+ PyList_SET_ITEM(resultlist,i,PyInt_FromLong(*val));
break;
}
case KX_PYATTRIBUTE_TYPE_ENUM:
@@ -255,14 +281,14 @@ PyObject *PyObjectPlus::py_get_attrdef(void *self, const PyAttributeDef *attrdef
{
int *val = reinterpret_cast<int*>(ptr);
ptr += sizeof(int);
- PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
+ PyList_SET_ITEM(resultlist,i,PyInt_FromLong(*val));
break;
}
case KX_PYATTRIBUTE_TYPE_FLOAT:
{
float *val = reinterpret_cast<float*>(ptr);
ptr += sizeof(float);
- PyList_SetItem(resultlist,i,PyFloat_FromDouble(*val));
+ PyList_SET_ITEM(resultlist,i,PyFloat_FromDouble(*val));
break;
}
default:
@@ -303,6 +329,16 @@ PyObject *PyObjectPlus::py_get_attrdef(void *self, const PyAttributeDef *attrdef
float *val = reinterpret_cast<float*>(ptr);
return PyFloat_FromDouble(*val);
}
+ case KX_PYATTRIBUTE_TYPE_VECTOR:
+ {
+ PyObject* resultlist = PyList_New(3);
+ MT_Vector3 *val = reinterpret_cast<MT_Vector3*>(ptr);
+ for (unsigned int i=0; i<3; i++)
+ {
+ PyList_SET_ITEM(resultlist,i,PyFloat_FromDouble((*val)[i]));
+ }
+ return resultlist;
+ }
case KX_PYATTRIBUTE_TYPE_STRING:
{
STR_String *val = reinterpret_cast<STR_String*>(ptr);
@@ -326,12 +362,12 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
if (!PySequence_Check(value))
{
PyErr_Format(PyExc_TypeError, "expected a sequence for attribute \"%s\"", attrdef->m_name);
- return 1;
+ return PY_SET_ATTR_FAIL;
}
if (PySequence_Size(value) != attrdef->m_length)
{
PyErr_Format(PyExc_TypeError, "incorrect number of elements in sequence for attribute \"%s\"", attrdef->m_name);
- return 1;
+ return PY_SET_ATTR_FAIL;
}
switch (attrdef->m_type)
{
@@ -339,7 +375,7 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
if (attrdef->m_setFunction == NULL)
{
PyErr_Format(PyExc_AttributeError, "function attribute without function for attribute \"%s\", report to blender.org", attrdef->m_name);
- return 1;
+ return PY_SET_ATTR_FAIL;
}
return (*attrdef->m_setFunction)(self, attrdef, value);
case KX_PYATTRIBUTE_TYPE_BOOL:
@@ -358,7 +394,7 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
default:
// should not happen
PyErr_Format(PyExc_AttributeError, "Unsupported attribute type for attribute \"%s\", report to blender.org", attrdef->m_name);
- return 1;
+ return PY_SET_ATTR_FAIL;
}
// let's implement a smart undo method
bufferSize *= attrdef->m_length;
@@ -495,6 +531,10 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
{
if ((*attrdef->m_checkFunction)(self, attrdef) != 0)
{
+ // if the checing function didnt set an error then set a generic one here so we dont set an error with no exception
+ if (PyErr_Occurred()==0)
+ PyErr_Format(PyExc_AttributeError, "type check error for attribute \"%s\", reasion unknown", attrdef->m_name);
+
// post check returned an error, restore values
UNDO_AND_ERROR:
if (undoBuffer)
@@ -502,12 +542,12 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
memcpy(sourceBuffer, undoBuffer, bufferSize);
free(undoBuffer);
}
- return 1;
+ return PY_SET_ATTR_FAIL;
}
}
if (undoBuffer)
free(undoBuffer);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
else // simple attribute value
{
@@ -516,11 +556,11 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
if (attrdef->m_setFunction == NULL)
{
PyErr_Format(PyExc_AttributeError, "function attribute without function \"%s\", report to blender.org", attrdef->m_name);
- return 1;
+ return PY_SET_ATTR_FAIL;
}
return (*attrdef->m_setFunction)(self, attrdef, value);
}
- if (attrdef->m_checkFunction != NULL)
+ if (attrdef->m_checkFunction != NULL || attrdef->m_type == KX_PYATTRIBUTE_TYPE_VECTOR)
{
// post check function is provided, prepare undo buffer
sourceBuffer = ptr;
@@ -544,9 +584,12 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
if (sourceBuffer)
bufferSize = strlen(reinterpret_cast<char*>(sourceBuffer))+1;
break;
+ case KX_PYATTRIBUTE_TYPE_VECTOR:
+ bufferSize = sizeof(MT_Vector3);
+ break;
default:
PyErr_Format(PyExc_AttributeError, "unknown type for attribute \"%s\", report to blender.org", attrdef->m_name);
- return 1;
+ return PY_SET_ATTR_FAIL;
}
if (bufferSize)
{
@@ -664,6 +707,42 @@ int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyOb
*var = (float)val;
break;
}
+ case KX_PYATTRIBUTE_TYPE_VECTOR:
+ {
+ if (!PySequence_Check(value) || PySequence_Size(value) != 3)
+ {
+ PyErr_Format(PyExc_TypeError, "expected a sequence of 3 floats for attribute \"%s\"", attrdef->m_name);
+ return PY_SET_ATTR_FAIL;
+ }
+ MT_Vector3 *var = reinterpret_cast<MT_Vector3*>(ptr);
+ for (int i=0; i<3; i++)
+ {
+ PyObject *item = PySequence_GetItem(value, i); /* new ref */
+ // we can decrement the reference immediately, the reference count
+ // is at least 1 because the item is part of an array
+ Py_DECREF(item);
+ double val = PyFloat_AsDouble(item);
+ if (val == -1.0 && PyErr_Occurred())
+ {
+ PyErr_Format(PyExc_TypeError, "expected a sequence of 3 floats for attribute \"%s\"", attrdef->m_name);
+ goto RESTORE_AND_ERROR;
+ }
+ else if (attrdef->m_clamp)
+ {
+ if (val < attrdef->m_fmin)
+ val = attrdef->m_fmin;
+ else if (val > attrdef->m_fmax)
+ val = attrdef->m_fmax;
+ }
+ else if (val < attrdef->m_fmin || val > attrdef->m_fmax)
+ {
+ PyErr_Format(PyExc_ValueError, "value out of range for attribute \"%s\"", attrdef->m_name);
+ goto RESTORE_AND_ERROR;
+ }
+ (*var)[i] = (MT_Scalar)val;
+ }
+ break;
+ }
case KX_PYATTRIBUTE_TYPE_STRING:
{
STR_String *var = reinterpret_cast<STR_String*>(ptr);
@@ -791,6 +870,31 @@ PyObject *PyObjectPlus::PyisA(PyObject *value) // Python wrapper for isA
return NULL;
}
+
+void PyObjectPlus::ProcessReplica()
+{
+ /* Clear the proxy, will be created again if needed with GetProxy()
+ * otherwise the PyObject will point to the wrong reference */
+ m_proxy= NULL;
+}
+
+/* Sometimes we might want to manually invalidate a BGE type even if
+ * it hasnt been released by the BGE, say for example when an object
+ * is removed from a scene, accessing it may cause problems.
+ *
+ * In this case the current proxy is made invalid, disowned,
+ * and will raise an error on access. However if python can get access
+ * to this class again it will make a new proxy and work as expected.
+ */
+void PyObjectPlus::InvalidateProxy() // check typename of each parent
+{
+ if(m_proxy) {
+ BGE_PROXY_REF(m_proxy)=NULL;
+ Py_DECREF(m_proxy);
+ m_proxy= NULL;
+ }
+}
+
/* Utility function called by the macro py_getattro_up()
* for getting ob.__dict__() values from our PyObject
* this is used by python for doing dir() on an object, so its good
@@ -852,5 +956,80 @@ PyObject *PyObjectPlus::NewProxy_Ext(PyObjectPlus *self, PyTypeObject *tp, bool
return self->m_proxy;
}
+///////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////
+/* deprecation warning management */
+
+bool PyObjectPlus::m_ignore_deprecation_warnings(false);
+void PyObjectPlus::SetDeprecationWarnings(bool ignoreDeprecationWarnings)
+{
+ m_ignore_deprecation_warnings = ignoreDeprecationWarnings;
+}
+
+void PyObjectPlus::ShowDeprecationWarning_func(const char* old_way,const char* new_way)
+{
+ {
+ printf("Method %s is deprecated, please use %s instead.\n", old_way, new_way);
+
+ // import sys; print '\t%s:%d' % (sys._getframe(0).f_code.co_filename, sys._getframe(0).f_lineno)
+
+ PyObject *getframe, *frame;
+ PyObject *f_lineno, *f_code, *co_filename;
+
+ getframe = PySys_GetObject((char *)"_getframe"); // borrowed
+ if (getframe) {
+ frame = PyObject_CallObject(getframe, NULL);
+ if (frame) {
+ f_lineno= PyObject_GetAttrString(frame, "f_lineno");
+ f_code= PyObject_GetAttrString(frame, "f_code");
+ if (f_lineno && f_code) {
+ co_filename= PyObject_GetAttrString(f_code, "co_filename");
+ if (co_filename) {
+
+ printf("\t%s:%d\n", PyString_AsString(co_filename), (int)PyInt_AsLong(f_lineno));
+
+ Py_DECREF(f_lineno);
+ Py_DECREF(f_code);
+ Py_DECREF(co_filename);
+ Py_DECREF(frame);
+ return;
+ }
+ }
+
+ Py_XDECREF(f_lineno);
+ Py_XDECREF(f_code);
+ Py_DECREF(frame);
+ }
+
+ }
+ PyErr_Clear();
+ printf("\tERROR - Could not access sys._getframe(0).f_lineno or sys._getframe().f_code.co_filename\n");
+ }
+}
+
+void PyObjectPlus::ClearDeprecationWarning()
+{
+ WarnLink *wlink_next;
+ WarnLink *wlink = GetDeprecationWarningLinkFirst();
+
+ while(wlink)
+ {
+ wlink->warn_done= false; /* no need to NULL the link, its cleared before adding to the list next time round */
+ wlink_next= reinterpret_cast<WarnLink *>(wlink->link);
+ wlink->link= NULL;
+ wlink= wlink_next;
+ }
+ NullDeprecationWarning();
+}
+
+WarnLink* m_base_wlink_first= NULL;
+WarnLink* m_base_wlink_last= NULL;
+
+WarnLink* PyObjectPlus::GetDeprecationWarningLinkFirst(void) {return m_base_wlink_first;}
+WarnLink* PyObjectPlus::GetDeprecationWarningLinkLast(void) {return m_base_wlink_last;}
+void PyObjectPlus::SetDeprecationWarningFirst(WarnLink* wlink) {m_base_wlink_first= wlink;}
+void PyObjectPlus::SetDeprecationWarningLinkLast(WarnLink* wlink) {m_base_wlink_last= wlink;}
+void PyObjectPlus::NullDeprecationWarning() {m_base_wlink_first= m_base_wlink_last= NULL;}
+
#endif //NO_EXP_PYTHON_EMBEDDING
diff --git a/source/gameengine/Expressions/PyObjectPlus.h b/source/gameengine/Expressions/PyObjectPlus.h
index 370717a919b..369c00782cc 100644
--- a/source/gameengine/Expressions/PyObjectPlus.h
+++ b/source/gameengine/Expressions/PyObjectPlus.h
@@ -38,11 +38,30 @@
#include "KX_Python.h"
#include "STR_String.h"
+#include "MT_Vector3.h"
+#include "SG_QList.h"
/*------------------------------
* Python defines
------------------------------*/
+
+
+#if PY_VERSION_HEX > 0x03000000
+#define PyString_FromString PyUnicode_FromString
+#define PyString_FromFormat PyUnicode_FromFormat
+#define PyString_Check PyUnicode_Check
+#define PyString_Size PyUnicode_GetSize
+
+#define PyInt_FromLong PyLong_FromSsize_t
+#define PyInt_AsLong PyLong_AsSsize_t
+#define PyString_AsString _PyUnicode_AsString
+#define PyInt_Check PyLong_Check
+#define PyInt_AS_LONG PyLong_AsLong // TODO - check this one
+#endif
+
+
+
/*
Py_RETURN_NONE
Python 2.4 macro.
@@ -81,6 +100,36 @@ static inline void Py_Fatal(const char *M) {
exit(-1);
};
+
+/* Use with ShowDeprecationWarning macro */
+typedef struct {
+ bool warn_done;
+ void *link;
+} WarnLink;
+
+#define ShowDeprecationWarning(old_way, new_way) \
+{ \
+ static WarnLink wlink = {false, NULL}; \
+ if ((m_ignore_deprecation_warnings || wlink.warn_done)==0) \
+ { \
+ ShowDeprecationWarning_func(old_way, new_way); \
+ WarnLink *wlink_last= GetDeprecationWarningLinkLast(); \
+ ShowDeprecationWarning_func(old_way, new_way); \
+ wlink.warn_done = true; \
+ wlink.link = NULL; \
+ \
+ if(wlink_last) { \
+ wlink_last->link= (void *)&(wlink); \
+ SetDeprecationWarningLinkLast(&(wlink)); \
+ } else { \
+ SetDeprecationWarningFirst(&(wlink)); \
+ SetDeprecationWarningLinkLast(&(wlink)); \
+ } \
+ } \
+} \
+
+
+
typedef struct {
PyObject_HEAD /* required python macro */
class PyObjectPlus *ref;
@@ -92,7 +141,7 @@ typedef struct {
#define BGE_PROXY_PYOWNS(_self) (((PyObjectPlus_Proxy *)_self)->py_owns)
/* Note, sometimes we dont care what BGE type this is as long as its a proxy */
-#define BGE_PROXY_CHECK_TYPE(_self) ((_self)->ob_type->tp_dealloc == py_base_dealloc)
+#define BGE_PROXY_CHECK_TYPE(_self) ((_self)->ob_type->tp_dealloc == PyObjectPlus::py_base_dealloc)
// This must be the first line of each
@@ -114,6 +163,9 @@ typedef struct {
// This defines the py_getattro_up macro
// which allows attribute and method calls
// to be properly passed up the hierarchy.
+ //
+ // Note, PyDict_GetItem() WONT set an exception!
+ // let the py_base_getattro function do this.
#define py_getattro_up(Parent) \
\
@@ -125,21 +177,14 @@ typedef struct {
} else if (descr->ob_type->tp_descr_get) { \
return PyCFunction_New(((PyMethodDescrObject *)descr)->d_method, this->m_proxy); \
} else { \
- fprintf(stderr, "unknown attribute type"); \
- return descr; \
+ return NULL; \
} \
} else { \
- PyErr_Clear(); \
- PyObject *rvalue= Parent::py_getattro(attr); \
- \
- if (strcmp(PyString_AsString(attr), "__dict__")==0) { \
- return py_getattr_dict(rvalue, Type.tp_dict); \
- } \
- \
- return rvalue; \
- } \
- return NULL;
+ return Parent::py_getattro(attr); \
+ }
+#define py_getattro_dict_up(Parent) \
+ return py_getattr_dict(Parent::py_getattro_dict(), Type.tp_dict);
/*
* nonzero values are an error for setattr
@@ -182,30 +227,35 @@ typedef struct {
#define KX_PYMETHOD(class_name, method_name) \
PyObject* Py##method_name(PyObject* args, PyObject* kwds); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args, PyObject* kwds) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
}; \
#define KX_PYMETHOD_VARARGS(class_name, method_name) \
PyObject* Py##method_name(PyObject* args); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
}; \
#define KX_PYMETHOD_NOARGS(class_name, method_name) \
PyObject* Py##method_name(); \
static PyObject* sPy##method_name( PyObject* self) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
}; \
#define KX_PYMETHOD_O(class_name, method_name) \
PyObject* Py##method_name(PyObject* value); \
static PyObject* sPy##method_name( PyObject* self, PyObject* value) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "(value) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
}; \
#define KX_PYMETHOD_DOC(class_name, method_name) \
PyObject* Py##method_name(PyObject* args, PyObject* kwds); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args, PyObject* kwds) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "(...) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
}; \
static const char method_name##_doc[]; \
@@ -213,6 +263,7 @@ typedef struct {
#define KX_PYMETHOD_DOC_VARARGS(class_name, method_name) \
PyObject* Py##method_name(PyObject* args); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "(...) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
}; \
static const char method_name##_doc[]; \
@@ -220,6 +271,7 @@ typedef struct {
#define KX_PYMETHOD_DOC_O(class_name, method_name) \
PyObject* Py##method_name(PyObject* value); \
static PyObject* sPy##method_name( PyObject* self, PyObject* value) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "(value) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
}; \
static const char method_name##_doc[]; \
@@ -227,6 +279,7 @@ typedef struct {
#define KX_PYMETHOD_DOC_NOARGS(class_name, method_name) \
PyObject* Py##method_name(); \
static PyObject* sPy##method_name( PyObject* self) { \
+ if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_SystemError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
}; \
static const char method_name##_doc[]; \
@@ -276,6 +329,7 @@ enum KX_PYATTRIBUTE_TYPE {
KX_PYATTRIBUTE_TYPE_STRING,
KX_PYATTRIBUTE_TYPE_DUMMY,
KX_PYATTRIBUTE_TYPE_FUNCTION,
+ KX_PYATTRIBUTE_TYPE_VECTOR,
};
enum KX_PYATTRIBUTE_ACCESS {
@@ -313,97 +367,105 @@ typedef struct KX_PYATTRIBUTE_DEF {
int *m_intPtr;
float *m_floatPtr;
STR_String *m_stringPtr;
+ MT_Vector3 *m_vectorPtr;
} m_typeCheck;
} PyAttributeDef;
#define KX_PYATTRIBUTE_DUMMY(name) \
- { name, KX_PYATTRIBUTE_TYPE_DUMMY, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_DUMMY, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RW(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RW_CHECK(name,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RO, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RO, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL, NULL} }
// enum field cannot be mapped to pointer (because we would need a pointer for each enum)
// use field size to verify mapping at runtime only, assuming enum size is equal to int size.
#define KX_PYATTRIBUTE_ENUM_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_ENUM_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_ENUM_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_ARRAY_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_ARRAY_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_ARRAY_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL, NULL} }
// SHORT_LIST
#define KX_PYATTRIBUTE_SHORT_LIST_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_LIST_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_LIST_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_ARRAY_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_ARRAY_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_ARRAY_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL, NULL} }
// INT_LIST
#define KX_PYATTRIBUTE_INT_LIST_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_LIST_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_LIST_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL, NULL} }
// always clamp for float
#define KX_PYATTRIBUTE_FLOAT_RW(name,min,max,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_FLOAT_RW_CHECK(name,min,max,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_FLOAT_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_FLOAT_ARRAY_RW(name,min,max,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_FLOAT_ARRAY_RW_CHECK(name,min,max,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_FLOAT_ARRAY_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_STRING_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+ { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_STRING_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+ { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_STRING_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1 , NULL, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+ { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1 , NULL, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field, NULL} }
+
+#define KX_PYATTRIBUTE_VECTOR_RW(name,min,max,object,field) \
+ { name, KX_PYATTRIBUTE_TYPE_VECTOR, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, &((object *)0)->field} }
+#define KX_PYATTRIBUTE_VECTOR_RW_CHECK(name,min,max,clamp,object,field,function) \
+ { name, KX_PYATTRIBUTE_TYPE_VECTOR, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, &((object *)0)->field} }
+#define KX_PYATTRIBUTE_VECTOR_RO(name,object,field) \
+ { name, KX_PYATTRIBUTE_TYPE_VECTOR, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1 , NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, &((object *)0)->field} }
#define KX_PYATTRIBUTE_RW_FUNCTION(name,object,getfunction,setfunction) \
- { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RW, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, &object::setfunction, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RW, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, &object::setfunction, &object::getfunction, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_RO_FUNCTION(name,object,getfunction) \
- { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, NULL, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, NULL, &object::getfunction, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_ARRAY_RW_FUNCTION(name,object,length,getfunction,setfunction) \
- { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RW, 0, 0, 0.f, 0,f, false, 0, 0, length, NULL, &object::setfunction, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RW, 0, 0, 0.f, 0,f, false, 0, 0, length, NULL, &object::setfunction, &object::getfunction, {NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_ARRAY_RO_FUNCTION(name,object,length,getfunction) \
- { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0,f, false, 0, 0, length, NULL, NULL, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0,f, false, 0, 0, length, NULL, NULL, &object::getfunction, {NULL, NULL, NULL, NULL, NULL, NULL} }
/*------------------------------
@@ -411,7 +473,18 @@ typedef struct KX_PYATTRIBUTE_DEF {
------------------------------*/
typedef PyTypeObject * PyParentObject; // Define the PyParent Object
-class PyObjectPlus
+// By making SG_QList the ultimate parent for PyObjectPlus objects, it
+// allows to put them in 2 different dynamic lists at the same time
+// The use of these links is interesting because they free of memory allocation
+// but it's very important not to mess up with them. If you decide that
+// the SG_QList or SG_DList component is used for something for a certain class,
+// they cannot can be used for anything else at a parent level!
+// What these lists are and what they are used for must be carefully documented
+// at the level where they are used.
+// DON'T MAKE ANY USE OF THESE LIST AT THIS LEVEL, they are already used
+// at SCA_IActuator, SCA_ISensor, SCA_IController level which rules out the
+// possibility to use them at SCA_ILogicBrick, CValue and PyObjectPlus level.
+class PyObjectPlus : public SG_QList
{ // The PyObjectPlus abstract class
Py_Header; // Always start with Py_Header
@@ -434,6 +507,7 @@ public:
/* These are all virtual python methods that are defined in each class
* Our own fake subclassing calls these on each class, then calls the parent */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_delattro(PyObject *attr);
virtual int py_setattro(PyObject *attr, PyObject *value);
virtual PyObject* py_repr(void);
@@ -449,12 +523,36 @@ public:
KX_PYMETHOD_O(PyObjectPlus,isA);
/* Kindof dumb, always returns True, the false case is checked for, before this function gets accessed */
- static PyObject* pyattr_get_is_valid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_invalid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject *GetProxy_Ext(PyObjectPlus *self, PyTypeObject *tp);
static PyObject *NewProxy_Ext(PyObjectPlus *self, PyTypeObject *tp, bool py_owns);
+
+ void InvalidateProxy();
+
+ /**
+ * Makes sure any internal data owned by this class is deep copied.
+ */
+ virtual void ProcessReplica();
+
+
+ static bool m_ignore_deprecation_warnings;
+
+ static WarnLink* GetDeprecationWarningLinkFirst(void);
+ static WarnLink* GetDeprecationWarningLinkLast(void);
+ static void SetDeprecationWarningFirst(WarnLink* wlink);
+ static void SetDeprecationWarningLinkLast(WarnLink* wlink);
+ static void NullDeprecationWarning();
+
+ /** enable/disable display of deprecation warnings */
+ static void SetDeprecationWarnings(bool ignoreDeprecationWarnings);
+ /** Shows a deprecation warning */
+ static void ShowDeprecationWarning_func(const char* method,const char* prop);
+ static void ClearDeprecationWarning();
+
};
+
PyObject *py_getattr_dict(PyObject *pydict, PyObject *tp_dict);
#endif // _adr_py_lib_h_
diff --git a/source/gameengine/Expressions/SConscript b/source/gameengine/Expressions/SConscript
index 25adcf3e895..b5c69eafe6b 100644
--- a/source/gameengine/Expressions/SConscript
+++ b/source/gameengine/Expressions/SConscript
@@ -3,7 +3,7 @@ Import ('env')
sources = env.Glob('*.cpp')
-incs ='. #source/kernel/gen_system #intern/string #intern/moto/include'
+incs ='. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/SceneGraph'
incs += ' ' + env['BF_PYTHON_INC']
cxxflags = []
diff --git a/source/gameengine/Expressions/StringValue.cpp b/source/gameengine/Expressions/StringValue.cpp
index 2b3c62c411e..a7033fcf11c 100644
--- a/source/gameengine/Expressions/StringValue.cpp
+++ b/source/gameengine/Expressions/StringValue.cpp
@@ -34,7 +34,7 @@ effect: constructs a new CStringValue
m_strString = "[Illegal String constructor call]";
}
-CStringValue::CStringValue(STR_String txt,STR_String name,AllocationTYPE alloctype)
+CStringValue::CStringValue(const char *txt,const char *name,AllocationTYPE alloctype)
/*
pre:
effect: constructs a new CStringValue containing text txt
@@ -133,7 +133,7 @@ bool CStringValue::IsEqual(const STR_String & other)
CValue* CStringValue::GetReplica()
{
CStringValue* replica = new CStringValue(*this);
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
};
diff --git a/source/gameengine/Expressions/StringValue.h b/source/gameengine/Expressions/StringValue.h
index 16575ed7ffa..52f8a580f4d 100644
--- a/source/gameengine/Expressions/StringValue.h
+++ b/source/gameengine/Expressions/StringValue.h
@@ -26,7 +26,7 @@ class CStringValue : public CPropValue
public:
/// Construction / destruction
CStringValue();
- CStringValue (STR_String txt, STR_String name , AllocationTYPE alloctype = CValue::HEAPVALUE);
+ CStringValue (const char *txt, const char *name , AllocationTYPE alloctype = CValue::HEAPVALUE);
virtual ~CStringValue() {
};
diff --git a/source/gameengine/Expressions/Value.cpp b/source/gameengine/Expressions/Value.cpp
index 7cb97909119..e6ef9733da8 100644
--- a/source/gameengine/Expressions/Value.cpp
+++ b/source/gameengine/Expressions/Value.cpp
@@ -32,13 +32,17 @@
//////////////////////////////////////////////////////////////////////
double CValue::m_sZeroVec[3] = {0.0,0.0,0.0};
-bool CValue::m_ignore_deprecation_warnings(false);
#ifndef NO_EXP_PYTHON_EMBEDDING
PyTypeObject CValue::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"CValue",
sizeof(PyObjectPlus_Proxy),
0,
@@ -62,13 +66,14 @@ PyParentObject CValue::Parents[] = {
};
PyMethodDef CValue::Methods[] = {
-// { "printHello", (PyCFunction) CValue::sPyPrintHello, METH_VARARGS},
{ "getName", (PyCFunction) CValue::sPyGetName, METH_NOARGS},
{NULL,NULL} //Sentinel
};
PyObject* CValue::PyGetName()
{
+ ShowDeprecationWarning("getName()", "the name property");
+
return PyString_FromString(this->GetName());
}
@@ -287,13 +292,15 @@ CValue* CValue::GetProperty(const char *inName)
//
// Get text description of property with name <inName>, returns an empty string if there is no property named <inName>
//
-STR_String CValue::GetPropertyText(const STR_String & inName,const STR_String& deftext)
+const STR_String& CValue::GetPropertyText(const STR_String & inName)
{
+ const static STR_String sEmpty("");
+
CValue *property = GetProperty(inName);
if (property)
return property->GetText();
else
- return deftext;//String::sEmpty;
+ return sEmpty;
}
float CValue::GetPropertyNumber(const STR_String& inName,float defnumber)
@@ -439,27 +446,6 @@ int CValue::GetPropertyCount()
}
-
-
-
-void CValue::CloneProperties(CValue *replica)
-{
-
- if (m_pNamedPropertyArray)
- {
- replica->m_pNamedPropertyArray=NULL;
- std::map<STR_String,CValue*>::iterator it;
- for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
- {
- CValue *val = (*it).second->GetReplica();
- replica->SetProperty((*it).first,val);
- val->Release();
- }
- }
-
-
-}
-
double* CValue::GetVector3(bool bGetTransformedVec)
{
assertd(false); // don;t get vector from me
@@ -470,50 +456,12 @@ double* CValue::GetVector3(bool bGetTransformedVec)
/*---------------------------------------------------------------------------------------------------------------------
Reference Counting
---------------------------------------------------------------------------------------------------------------------*/
-//
-// Add a reference to this value
-//
-CValue *CValue::AddRef()
-{
- // Increase global reference count, used to see at the end of the program
- // if all CValue-derived classes have been dereferenced to 0
- //debug(gRefCountValue++);
-#ifdef _DEBUG
- //gRefCountValue++;
-#endif
- m_refcount++;
- return this;
-}
//
// Release a reference to this value (when reference count reaches 0, the value is removed from the heap)
//
-int CValue::Release()
-{
- // Decrease global reference count, used to see at the end of the program
- // if all CValue-derived classes have been dereferenced to 0
- //debug(gRefCountValue--);
-#ifdef _DEBUG
- //gRefCountValue--;
-#endif
- // Decrease local reference count, if it reaches 0 the object should be freed
- if (--m_refcount > 0)
- {
- // Reference count normal, return new reference count
- return m_refcount;
- }
- else
- {
- // Reference count reached 0, delete ourselves and return 0
-// MT_assert(m_refcount==0, "Reference count reached sub-zero, object released too much");
-
- delete this;
- return 0;
- }
-
-}
@@ -534,23 +482,32 @@ void CValue::DisableRefCount()
-void CValue::AddDataToReplica(CValue *replica)
+void CValue::ProcessReplica() /* was AddDataToReplica in 2.48 */
{
- replica->m_refcount = 1;
-
+ m_refcount = 1;
+
#ifdef _DEBUG
//gRefCountValue++;
#endif
- replica->m_ValFlags.RefCountDisabled = false;
+ PyObjectPlus::ProcessReplica();
- replica->ReplicaSetName(GetName());
+ m_ValFlags.RefCountDisabled = false;
- //copy all props
- CloneProperties(replica);
+ /* copy all props */
+ if (m_pNamedPropertyArray)
+ {
+ std::map<STR_String,CValue*> *pOldArray = m_pNamedPropertyArray;
+ m_pNamedPropertyArray=NULL;
+ std::map<STR_String,CValue*>::iterator it;
+ for (it= pOldArray->begin(); (it != pOldArray->end()); it++)
+ {
+ CValue *val = (*it).second->GetReplica();
+ SetProperty((*it).first,val);
+ val->Release();
+ }
+ }
}
-
-
CValue* CValue::FindIdentifier(const STR_String& identifiername)
{
@@ -592,18 +549,22 @@ static PyMethodDef CValueMethods[] =
};
PyAttributeDef CValue::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("name", CValue, pyattr_get_name),
{ NULL } //Sentinel
};
PyObject* CValue::py_getattro(PyObject *attr)
-{
+{
char *attr_str= PyString_AsString(attr);
CValue* resultattr = GetProperty(attr_str);
if (resultattr)
{
+ /* only show the wanting here because python inspects for __class__ and KX_MeshProxy uses CValues name attr */
+ ShowDeprecationWarning("val = ob.attr", "val = ob['attr']");
+
PyObject* pyconvert = resultattr->ConvertValueToPython();
-
+
if (pyconvert)
return pyconvert;
else
@@ -612,7 +573,16 @@ PyObject* CValue::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
-CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
+PyObject* CValue::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
+
+PyObject * CValue::pyattr_get_name(void * self_v, const KX_PYATTRIBUTE_DEF * attrdef) {
+ CValue * self = static_cast<CValue *> (self_v);
+ return PyString_FromString(self->GetName());
+}
+
+CValue* CValue::ConvertPythonToValue(PyObject* pyobj, const char *error_prefix)
{
CValue* vallie = NULL;
@@ -628,7 +598,7 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
for (i=0;i<numitems;i++)
{
PyObject* listitem = PyList_GetItem(pyobj,i); /* borrowed ref */
- CValue* listitemval = ConvertPythonToValue(listitem);
+ CValue* listitemval = ConvertPythonToValue(listitem, error_prefix);
if (listitemval)
{
listval->Add(listitemval);
@@ -665,13 +635,22 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
{
vallie = new CStringValue(PyString_AsString(pyobj),"");
} else
- if (pyobj->ob_type==&CValue::Type || pyobj->ob_type==&CListValue::Type)
+ if (BGE_PROXY_CHECK_TYPE(pyobj)) /* Note, dont let these get assigned to GameObject props, must check elsewhere */
{
- vallie = ((CValue*) pyobj)->AddRef();
+ if (BGE_PROXY_REF(pyobj) && (BGE_PROXY_REF(pyobj))->isA(&CValue::Type))
+ {
+ vallie = (static_cast<CValue *>(BGE_PROXY_REF(pyobj)))->AddRef();
+ } else {
+
+ if(BGE_PROXY_REF(pyobj)) /* this is not a CValue */
+ PyErr_Format(PyExc_TypeError, "%sgame engine python type cannot be used as a property", error_prefix);
+ else /* PyObjectPlus_Proxy has been removed, cant use */
+ PyErr_Format(PyExc_SystemError, "%s"BGE_PROXY_ERROR_MSG, error_prefix);
+ }
} else
{
/* return an error value from the caller */
- PyErr_SetString(PyExc_TypeError, "This python type could not be converted to a to a game engine property");
+ PyErr_Format(PyExc_TypeError, "%scould convert python value to a game engine property", error_prefix);
}
return vallie;
@@ -679,21 +658,26 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
int CValue::py_delattro(PyObject *attr)
{
+ ShowDeprecationWarning("del ob.attr", "del ob['attr']");
+
char *attr_str= PyString_AsString(attr);
- if (RemoveProperty(STR_String(attr_str)))
+ if (RemoveProperty(attr_str))
return 0;
PyErr_Format(PyExc_AttributeError, "attribute \"%s\" dosnt exist", attr_str);
- return 1;
+ return PY_SET_ATTR_MISSING;
}
int CValue::py_setattro(PyObject *attr, PyObject* pyobj)
{
- char *attr_str= PyString_AsString(attr);
- CValue* oldprop = GetProperty(attr_str);
+ ShowDeprecationWarning("ob.attr = val", "ob['attr'] = val");
- CValue* vallie = ConvertPythonToValue(pyobj);
- if (vallie)
+ char *attr_str= PyString_AsString(attr);
+ CValue* oldprop = GetProperty(attr_str);
+ CValue* vallie;
+
+ /* Dissallow python to assign GameObjects, Scenes etc as values */
+ if ((BGE_PROXY_CHECK_TYPE(pyobj)==0) && (vallie = ConvertPythonToValue(pyobj, "cvalue.attr = value: ")))
{
if (oldprop)
oldprop->SetValue(vallie);
@@ -750,10 +734,40 @@ PyObject* CValue::PyMake(PyObject* ignored,PyObject* args)
}
*/
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef CValue_module_def = {
+ {}, /* m_base */
+ "CValue", /* m_name */
+ 0, /* m_doc */
+ 0, /* m_size */
+ CValueMethods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
+
extern "C" {
void initCValue(void)
{
- Py_InitModule("CValue",CValueMethods);
+ PyObject *m;
+ /* Use existing module where possible
+ * be careful not to init any runtime vars after this */
+ m = PyImport_ImportModule( "CValue" );
+ if(m) {
+ Py_DECREF(m);
+ //return m;
+ }
+ else {
+ PyErr_Clear();
+
+#if (PY_VERSION_HEX >= 0x03000000)
+ PyModule_Create(&CValue_module_def);
+#else
+ Py_InitModule("CValue",CValueMethods);
+#endif
+ }
}
}
@@ -779,52 +793,3 @@ void CValue::SetValue(CValue* newval)
// no one should get here
assertd(newval->GetNumber() == 10121969);
}
-///////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////
-/* deprecation warning management */
-void CValue::SetDeprecationWarnings(bool ignoreDeprecationWarnings)
-{
- m_ignore_deprecation_warnings = ignoreDeprecationWarnings;
-}
-
-void CValue::ShowDeprecationWarning(const char* old_way,const char* new_way)
-{
- if (!m_ignore_deprecation_warnings) {
- printf("Method %s is deprecated, please use %s instead.\n", old_way, new_way);
-
- // import sys; print '\t%s:%d' % (sys._getframe(0).f_code.co_filename, sys._getframe(0).f_lineno)
-
- PyObject *getframe, *frame;
- PyObject *f_lineno, *f_code, *co_filename;
-
- getframe = PySys_GetObject((char *)"_getframe"); // borrowed
- if (getframe) {
- frame = PyObject_CallObject(getframe, NULL);
- if (frame) {
- f_lineno= PyObject_GetAttrString(frame, "f_lineno");
- f_code= PyObject_GetAttrString(frame, "f_code");
- if (f_lineno && f_code) {
- co_filename= PyObject_GetAttrString(f_code, "co_filename");
- if (co_filename) {
-
- printf("\t%s:%d\n", PyString_AsString(co_filename), (int)PyInt_AsLong(f_lineno));
-
- Py_DECREF(f_lineno);
- Py_DECREF(f_code);
- Py_DECREF(co_filename);
- Py_DECREF(frame);
- return;
- }
- }
-
- Py_XDECREF(f_lineno);
- Py_XDECREF(f_code);
- Py_DECREF(frame);
- }
-
- }
- PyErr_Clear();
- printf("\tERROR - Could not access sys._getframe(0).f_lineno or sys._getframe().f_code.co_filename\n");
- }
-}
-
diff --git a/source/gameengine/Expressions/Value.h b/source/gameengine/Expressions/Value.h
index a687e1a493c..29ef19b46c9 100644
--- a/source/gameengine/Expressions/Value.h
+++ b/source/gameengine/Expressions/Value.h
@@ -225,16 +225,19 @@ public:
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual PyObject* ConvertValueToPython() {
return NULL;
}
- virtual CValue* ConvertPythonToValue(PyObject* pyobj);
+ virtual CValue* ConvertPythonToValue(PyObject* pyobj, const char *error_prefix);
virtual int py_delattro(PyObject *attr);
virtual int py_setattro(PyObject *attr, PyObject* value);
+ static PyObject * pyattr_get_name(void * self, const KX_PYATTRIBUTE_DEF * attrdef);
+
virtual PyObject* ConvertKeysToPython( void );
KX_PYMETHOD_NOARGS(CValue,GetName);
@@ -258,17 +261,56 @@ public:
};
/// Reference Counting
- int GetRefCount() { return m_refcount; }
- virtual CValue* AddRef(); // Add a reference to this value
- virtual int Release(); // Release a reference to this value (when reference count reaches 0, the value is removed from the heap)
-
+ int GetRefCount()
+ {
+ return m_refcount;
+ }
+
+ // Add a reference to this value
+ CValue* AddRef()
+ {
+ // Increase global reference count, used to see at the end of the program
+ // if all CValue-derived classes have been dereferenced to 0
+ //debug(gRefCountValue++);
+ #ifdef _DEBUG
+ //gRefCountValue++;
+ #endif
+ m_refcount++;
+ return this;
+ }
+
+ // Release a reference to this value (when reference count reaches 0, the value is removed from the heap)
+ int Release()
+ {
+ // Decrease global reference count, used to see at the end of the program
+ // if all CValue-derived classes have been dereferenced to 0
+ //debug(gRefCountValue--);
+ #ifdef _DEBUG
+ //gRefCountValue--;
+ #endif
+ // Decrease local reference count, if it reaches 0 the object should be freed
+ if (--m_refcount > 0)
+ {
+ // Reference count normal, return new reference count
+ return m_refcount;
+ }
+ else
+ {
+ // Reference count reached 0, delete ourselves and return 0
+ // MT_assert(m_refcount==0, "Reference count reached sub-zero, object released too much");
+
+ delete this;
+ return 0;
+ }
+ }
+
/// Property Management
virtual void SetProperty(const STR_String& name,CValue* ioProperty); // Set property <ioProperty>, overwrites and releases a previous property with the same name if needed
virtual void SetProperty(const char* name,CValue* ioProperty);
virtual CValue* GetProperty(const char* inName); // Get pointer to a property with name <inName>, returns NULL if there is no property named <inName>
virtual CValue* GetProperty(const STR_String & inName);
- STR_String GetPropertyText(const STR_String & inName,const STR_String& deftext=""); // Get text description of property with name <inName>, returns an empty string if there is no property named <inName>
+ const STR_String& GetPropertyText(const STR_String & inName); // Get text description of property with name <inName>, returns an empty string if there is no property named <inName>
float GetPropertyNumber(const STR_String& inName,float defnumber);
virtual bool RemoveProperty(const char *inName); // Remove the property named <inName>, returns true if the property was succesfully removed, false if property was not found or could not be removed
virtual vector<STR_String> GetPropertyNames();
@@ -280,7 +322,6 @@ public:
virtual CValue* GetProperty(int inIndex); // Get property number <inIndex>
virtual int GetPropertyCount(); // Get the amount of properties assiocated with this value
- virtual void CloneProperties(CValue* replica);
virtual CValue* FindIdentifier(const STR_String& identifiername);
/** Set the wireframe color of this value depending on the CSG
* operator type <op>
@@ -292,21 +333,17 @@ public:
double* ZeroVector() { return m_sZeroVec; };
virtual double* GetVector3(bool bGetTransformedVec = false);
- virtual STR_String GetName() = 0; // Retrieve the name of the value
- virtual void SetName(STR_String name) = 0; // Set the name of the value
- virtual void ReplicaSetName(STR_String name) = 0;
+ virtual STR_String& GetName() = 0; // Retrieve the name of the value
+ virtual void SetName(const char *name) = 0; // Set the name of the value
/** Sets the value to this cvalue.
* @attention this particular function should never be called. Why not abstract? */
virtual void SetValue(CValue* newval);
virtual CValue* GetReplica() =0;
+ virtual void ProcessReplica();
//virtual CValue* Copy() = 0;
STR_String op2str(VALUE_OPERATOR op);
- /** enable/disable display of deprecation warnings */
- static void SetDeprecationWarnings(bool ignoreDeprecationWarnings);
- /** Shows a deprecation warning */
- static void ShowDeprecationWarning(const char* method,const char* prop);
// setting / getting flags
inline void SetSelected(bool bSelected) { m_ValFlags.Selected = bSelected; }
@@ -327,10 +364,10 @@ public:
virtual void SetCustomFlag2(bool bCustomFlag) { m_ValFlags.CustomFlag2 = bCustomFlag;};
virtual bool IsCustomFlag2() { return m_ValFlags.CustomFlag2;};
-
+
protected:
virtual void DisableRefCount(); // Disable reference counting for this value
- virtual void AddDataToReplica(CValue* replica);
+ //virtual void AddDataToReplica(CValue* replica);
virtual ~CValue();
private:
// Member variables
@@ -338,7 +375,6 @@ private:
ValueFlags m_ValFlags; // Frequently used flags in a bitfield (low memoryusage)
int m_refcount; // Reference Counter
static double m_sZeroVec[3];
- static bool m_ignore_deprecation_warnings;
};
@@ -386,49 +422,28 @@ public:
#else
CPropValue() :
#endif //NO_EXP_PYTHON_EMBEDDING
- m_pstrNewName(NULL)
+ m_strNewName()
{
}
virtual ~CPropValue()
{
- if (m_pstrNewName)
- {
- delete m_pstrNewName;
- m_pstrNewName = NULL;
- }
}
- virtual void SetName(STR_String name) {
- if (m_pstrNewName)
- {
- delete m_pstrNewName;
- m_pstrNewName = NULL;
- }
- if (name.Length())
- m_pstrNewName = new STR_String(name);
- }
- virtual void ReplicaSetName(STR_String name) {
- m_pstrNewName=NULL;
- if (name.Length())
- m_pstrNewName = new STR_String(name);
+ virtual void SetName(const char *name) {
+ m_strNewName = name;
}
- virtual STR_String GetName() {
+ virtual STR_String& GetName() {
//STR_String namefromprop = GetPropertyText("Name");
//if (namefromprop.Length() > 0)
// return namefromprop;
-
- if (m_pstrNewName)
- {
- return *m_pstrNewName;
- }
- return STR_String("");
+ return m_strNewName;
}; // name of Value
protected:
- STR_String* m_pstrNewName; // Identification
+ STR_String m_strNewName; // Identification
};
#endif // !defined _VALUEBASECLASS_H
diff --git a/source/gameengine/Expressions/VectorValue.cpp b/source/gameengine/Expressions/VectorValue.cpp
index 497a50b90e7..c58c78e6ebe 100644
--- a/source/gameengine/Expressions/VectorValue.cpp
+++ b/source/gameengine/Expressions/VectorValue.cpp
@@ -48,7 +48,7 @@ CVectorValue::CVectorValue(float x,float y,float z, AllocationTYPE alloctype)
m_vec[KX_Z] = m_transformedvec[KX_Z] = z;
}
-CVectorValue::CVectorValue(double vec[],STR_String name,AllocationTYPE alloctype) {
+CVectorValue::CVectorValue(double vec[],const char *name,AllocationTYPE alloctype) {
SetCustomFlag1(false);//FancyOutput=false;
@@ -204,7 +204,7 @@ const STR_String & CVectorValue::GetText()
CValue* CVectorValue::GetReplica() {
CVectorValue* replica = new CVectorValue(*this);
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
};
diff --git a/source/gameengine/Expressions/VectorValue.h b/source/gameengine/Expressions/VectorValue.h
index 99bf0abb11b..19c7dd30076 100644
--- a/source/gameengine/Expressions/VectorValue.h
+++ b/source/gameengine/Expressions/VectorValue.h
@@ -41,7 +41,7 @@ public:
CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
- CVectorValue(double vec[],STR_String name,AllocationTYPE alloctype=CValue::HEAPVALUE);
+ CVectorValue(double vec[],const char *name,AllocationTYPE alloctype=CValue::HEAPVALUE);
CVectorValue() {};
CVectorValue(double vec[],AllocationTYPE alloctype=CValue::HEAPVALUE);
diff --git a/source/gameengine/GameLogic/CMakeLists.txt b/source/gameengine/GameLogic/CMakeLists.txt
index a7519196d50..7e2bc85bd1f 100644
--- a/source/gameengine/GameLogic/CMakeLists.txt
+++ b/source/gameengine/GameLogic/CMakeLists.txt
@@ -31,6 +31,7 @@ SET(INC
../../../source/kernel/gen_system
../../../intern/string
../../../source/gameengine/Expressions
+ ../../../source/gameengine/SceneGraph
../../../intern/moto/include
../../../source/gameengine/Rasterizer
${PYTHON_INC}
diff --git a/source/gameengine/GameLogic/Joystick/Makefile b/source/gameengine/GameLogic/Joystick/Makefile
index 7016f1ed16f..02def1cec62 100644
--- a/source/gameengine/GameLogic/Joystick/Makefile
+++ b/source/gameengine/GameLogic/Joystick/Makefile
@@ -40,5 +40,5 @@ CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
CPPFLAGS += $(NAN_SDLCFLAGS)
-
+CPPFLAGS += -I../../SceneGraph
CPPFLAGS += -I../../../kernel/gen_system
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
index c300baa9bd4..d83179d4f80 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
@@ -38,11 +38,9 @@ SCA_Joystick::SCA_Joystick(short int index)
:
m_joyindex(index),
m_prec(3200),
- m_buttonnum(-2),
m_axismax(-1),
m_buttonmax(-1),
m_hatmax(-1),
- m_hatdir(-2),
m_isinit(0),
m_istrig_axis(0),
m_istrig_button(0),
@@ -50,6 +48,10 @@ SCA_Joystick::SCA_Joystick(short int index)
{
for(int i=0; i<JOYAXIS_MAX; i++)
m_axis_array[i]= 0;
+
+ for(int i=0; i<JOYHAT_MAX; i++)
+ m_hat_array[i]= 0;
+
#ifndef DISABLE_SDL
m_private = new PrivateData();
#endif
@@ -65,6 +67,7 @@ SCA_Joystick::~SCA_Joystick()
}
SCA_Joystick *SCA_Joystick::m_instance[JOYINDEX_MAX];
+int SCA_Joystick::m_joynum = 0;
int SCA_Joystick::m_refCount = 0;
SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
@@ -85,6 +88,9 @@ SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
echo("Error-Initializing-SDL: " << SDL_GetError());
return NULL;
}
+
+ m_joynum = SDL_NumJoysticks();
+
for (i=0; i<JOYINDEX_MAX; i++) {
m_instance[i] = new SCA_Joystick(i);
m_instance[i]->CreateJoystickDevice();
@@ -152,12 +158,13 @@ bool SCA_Joystick::aAxisIsPositive(int axis_single)
bool SCA_Joystick::aAnyButtonPressIsPositive(void)
{
- return (m_buttonnum==-2) ? false : true;
-}
-
-bool SCA_Joystick::aAnyButtonReleaseIsPositive(void)
-{
- return (m_buttonnum==-2) ? true : false;
+ /* this is needed for the "all events" option
+ * so we know if there are no buttons pressed */
+ for (int i=0; i<m_buttonmax; i++)
+ if (SDL_JoystickGetButton(m_private->m_joystick, i))
+ return true;
+
+ return false;
}
bool SCA_Joystick::aButtonPressIsPositive(int button)
@@ -184,20 +191,9 @@ bool SCA_Joystick::aButtonReleaseIsPositive(int button)
}
-bool SCA_Joystick::aHatIsPositive(int dir)
+bool SCA_Joystick::aHatIsPositive(int hatnum, int dir)
{
- bool result;
- int res = pGetHat(dir);
- res == dir? result = true : result = false;
- return result;
-}
-
-int SCA_Joystick::pGetHat(int direction)
-{
- if(direction == m_hatdir){
- return m_hatdir;
- }
- return 0;
+ return (GetHat(hatnum)==dir) ? true : false;
}
int SCA_Joystick::GetNumberOfAxes()
@@ -220,12 +216,17 @@ int SCA_Joystick::GetNumberOfHats()
bool SCA_Joystick::CreateJoystickDevice(void)
{
#ifdef DISABLE_SDL
+ m_isinit = true;
+ m_axismax = m_buttonmax = m_hatmax = 0;
return false;
#else
if(m_isinit == false){
- if (m_joyindex>=SDL_NumJoysticks()) {
+ if (m_joyindex>=m_joynum) {
// don't print a message, because this is done anyway
//echo("Joystick-Error: " << SDL_NumJoysticks() << " avaiable joystick(s)");
+
+ // Need this so python args can return empty lists
+ m_axismax = m_buttonmax = m_hatmax = 0;
return false;
}
@@ -237,11 +238,16 @@ bool SCA_Joystick::CreateJoystickDevice(void)
/* must run after being initialized */
m_axismax = SDL_JoystickNumAxes(m_private->m_joystick);
- if (m_axismax > JOYAXIS_MAX) m_axismax= JOYAXIS_MAX; /* very unlikely */
-
m_buttonmax = SDL_JoystickNumButtons(m_private->m_joystick);
m_hatmax = SDL_JoystickNumHats(m_private->m_joystick);
+ if (m_axismax > JOYAXIS_MAX) m_axismax= JOYAXIS_MAX; /* very unlikely */
+ else if (m_axismax < 0) m_axismax = 0;
+
+ if (m_hatmax > JOYHAT_MAX) m_hatmax= JOYHAT_MAX; /* very unlikely */
+ else if(m_hatmax<0) m_hatmax= 0;
+
+ if(m_buttonmax<0) m_buttonmax= 0;
}
return true;
@@ -271,15 +277,6 @@ int SCA_Joystick::Connected(void)
return 0;
}
-void SCA_Joystick::pFillAxes()
-{
-#ifndef DISABLE_SDL
- for(int i=0; i<m_axismax; i++)
- m_axis_array[i]= SDL_JoystickGetAxis(m_private->m_joystick, i);
-#endif
-}
-
-
int SCA_Joystick::pGetAxis(int axisnum, int udlr)
{
#ifndef DISABLE_SDL
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
index 53cd65cd495..6324b898247 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
@@ -44,6 +44,7 @@ class SCA_Joystick
{
static SCA_Joystick *m_instance[JOYINDEX_MAX];
+ static int m_joynum;
static int m_refCount;
class PrivateData;
@@ -53,9 +54,14 @@ class SCA_Joystick
int m_joyindex;
/*
- *support for 2 axes
+ *support for JOYAXIS_MAX axes (in pairs)
*/
int m_axis_array[JOYAXIS_MAX];
+
+ /*
+ *support for JOYHAT_MAX hats (each is a direction)
+ */
+ int m_hat_array[JOYHAT_MAX];
/*
* Precision or range of the axes
@@ -63,24 +69,6 @@ class SCA_Joystick
int m_prec;
/*
- * multiple axis values stored here
- */
- int m_axisnum;
- int m_axisvalue;
-
- /*
- * max # of axes avail
- */
- /*disabled
- int m_axismax;
- */
-
- /*
- * button values stored here
- */
- int m_buttonnum;
-
- /*
* max # of buttons avail
*/
@@ -88,18 +76,6 @@ class SCA_Joystick
int m_buttonmax;
int m_hatmax;
- /*
- * hat values stored here
- */
- int m_hatnum;
- int m_hatdir;
-
- /*
-
- * max # of hats avail
- disabled
- int m_hatmax;
- */
/* is the joystick initialized ?*/
bool m_isinit;
@@ -136,7 +112,6 @@ class SCA_Joystick
/*
* fills the axis mnember values
*/
- void pFillAxes(void);
void pFillButtons(void);
/*
@@ -149,11 +124,6 @@ class SCA_Joystick
*/
int pGetAxis(int axisnum, int udlr);
- /*
- * gets the current hat direction
- */
- int pGetHat(int direction);
-
SCA_Joystick(short int index);
~SCA_Joystick();
@@ -172,10 +142,9 @@ public:
bool aAxisIsPositive(int axis_single); /* check a single axis only */
bool aAnyButtonPressIsPositive(void);
- bool aAnyButtonReleaseIsPositive(void);
bool aButtonPressIsPositive(int button);
bool aButtonReleaseIsPositive(int button);
- bool aHatIsPositive(int dir);
+ bool aHatIsPositive(int hatnum, int dir);
/*
* precision is default '3200' which is overridden by input
@@ -186,13 +155,9 @@ public:
int GetAxisPosition(int index){
return m_axis_array[index];
}
-
- int GetButton(void){
- return m_buttonnum;
- }
- int GetHat(void){
- return m_hatdir;
+ int GetHat(int index){
+ return m_hat_array[index];
}
int GetThreshold(void){
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h b/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h
index 636c4dd5a42..70619ff337a 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h
@@ -40,6 +40,8 @@
#define JOYINDEX_MAX 8
#define JOYAXIS_MAX 16
+#define JOYBUT_MAX 18
+#define JOYHAT_MAX 4
#define JOYAXIS_RIGHT 0
#define JOYAXIS_UP 1
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
index 8e190060e95..53d3be35f92 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
@@ -35,44 +35,37 @@
#ifndef DISABLE_SDL
void SCA_Joystick::OnAxisMotion(SDL_Event* sdl_event)
{
- pFillAxes();
- m_axisnum = sdl_event->jaxis.axis;
- m_axisvalue = sdl_event->jaxis.value;
+ if(sdl_event->jaxis.axis >= JOYAXIS_MAX)
+ return;
+
+ m_axis_array[sdl_event->jaxis.axis]= sdl_event->jaxis.value;
m_istrig_axis = 1;
}
-
+/* See notes below in the event loop */
void SCA_Joystick::OnHatMotion(SDL_Event* sdl_event)
{
- m_hatdir = sdl_event->jhat.value;
- m_hatnum = sdl_event->jhat.hat;
+ if(sdl_event->jhat.hat >= JOYHAT_MAX)
+ return;
+
+ m_hat_array[sdl_event->jhat.hat]= sdl_event->jhat.value;
m_istrig_hat = 1;
}
+/* See notes below in the event loop */
void SCA_Joystick::OnButtonUp(SDL_Event* sdl_event)
{
m_istrig_button = 1;
-
- /* this is needed for the "all events" option
- * so we know if there are no buttons pressed */
- int i;
- for (i=0; i<m_buttonmax; i++) {
- if (SDL_JoystickGetButton(m_private->m_joystick, i)) {
- m_buttonnum = i;
- return;
- }
- }
- m_buttonnum = -2;
}
void SCA_Joystick::OnButtonDown(SDL_Event* sdl_event)
{
- if(sdl_event->jbutton.button <= m_buttonmax) /* unsigned int so always above 0 */
- {
- m_istrig_button = 1;
- m_buttonnum = sdl_event->jbutton.button;
- }
+ //if(sdl_event->jbutton.button > m_buttonmax) /* unsigned int so always above 0 */
+ // return;
+ // sdl_event->jbutton.button;
+
+ m_istrig_button = 1;
}
@@ -81,22 +74,27 @@ void SCA_Joystick::OnNothing(SDL_Event* sdl_event)
m_istrig_axis = m_istrig_button = m_istrig_hat = 0;
}
-/* only handle events for 1 joystick */
-
void SCA_Joystick::HandleEvents(void)
{
SDL_Event sdl_event;
int i;
- for (i=0; i<JOYINDEX_MAX; i++) {
+ for (i=0; i<m_joynum; i++) { /* could use JOYINDEX_MAX but no reason to */
if(SCA_Joystick::m_instance[i])
SCA_Joystick::m_instance[i]->OnNothing(&sdl_event);
}
- if(SDL_PollEvent(&sdl_event))
+ while(SDL_PollEvent(&sdl_event))
{
/* Note! m_instance[sdl_event.jaxis.which]
* will segfault if over JOYINDEX_MAX, not too nice but what are the chances? */
+
+ /* Note!, with buttons, this wont care which button is pressed,
+ * only to set 'm_istrig_button', actual pressed buttons are detected by SDL_JoystickGetButton */
+
+ /* Note!, if you manage to press and release a button within 1 logic tick
+ * it wont work as it should */
+
switch(sdl_event.type)
{
case SDL_JOYAXISMOTION:
diff --git a/source/gameengine/GameLogic/Makefile b/source/gameengine/GameLogic/Makefile
index 355ece6e8bd..a1794a60452 100644
--- a/source/gameengine/GameLogic/Makefile
+++ b/source/gameengine/GameLogic/Makefile
@@ -39,6 +39,7 @@ include nan_compile.mk
CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
CPPFLAGS += -I../Expressions
+CPPFLAGS += -I../SceneGraph
CPPFLAGS += -I../Rasterizer
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
index 251a586308e..caed85b9938 100644
--- a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
@@ -64,8 +64,6 @@ CValue* SCA_2DFilterActuator::GetReplica()
{
SCA_2DFilterActuator* replica = new SCA_2DFilterActuator(*this);
replica->ProcessReplica();
- CValue::AddDataToReplica(replica);
-
return replica;
}
@@ -97,7 +95,7 @@ bool SCA_2DFilterActuator::Update()
}
-void SCA_2DFilterActuator::SetShaderText(STR_String text)
+void SCA_2DFilterActuator::SetShaderText(const char *text)
{
m_shaderText = text;
}
@@ -110,8 +108,13 @@ void SCA_2DFilterActuator::SetShaderText(STR_String text)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_2DFilterActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_2DFilterActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -146,8 +149,8 @@ PyMethodDef SCA_2DFilterActuator::Methods[] = {
PyAttributeDef SCA_2DFilterActuator::Attributes[] = {
KX_PYATTRIBUTE_STRING_RW("shaderText", 0, 64000, false, SCA_2DFilterActuator, m_shaderText),
KX_PYATTRIBUTE_SHORT_RW("disableMotionBlur", 0, 1, true, SCA_2DFilterActuator, m_disableMotionBlur),
- KX_PYATTRIBUTE_ENUM_RW("type",RAS_2DFilterManager::RAS_2DFILTER_ENABLED,RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS,false,SCA_2DFilterActuator,m_type),
- KX_PYATTRIBUTE_INT_RW("passNb", 0, 100, true, SCA_2DFilterActuator, m_int_arg),
+ KX_PYATTRIBUTE_ENUM_RW("mode",RAS_2DFilterManager::RAS_2DFILTER_ENABLED,RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS,false,SCA_2DFilterActuator,m_type),
+ KX_PYATTRIBUTE_INT_RW("passNumber", 0, 100, true, SCA_2DFilterActuator, m_int_arg),
KX_PYATTRIBUTE_FLOAT_RW("value", 0.0, 100.0, SCA_2DFilterActuator, m_float_arg),
{ NULL } //Sentinel
};
@@ -157,6 +160,10 @@ PyObject* SCA_2DFilterActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* SCA_2DFilterActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int SCA_2DFilterActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);
diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.h b/source/gameengine/GameLogic/SCA_2DFilterActuator.h
index de0201a4b19..13b9997a010 100644
--- a/source/gameengine/GameLogic/SCA_2DFilterActuator.h
+++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.h
@@ -60,7 +60,7 @@ public:
PyTypeObject* T=&Type
);
- void SetShaderText(STR_String text);
+ void SetShaderText(const char *text);
virtual ~SCA_2DFilterActuator();
virtual bool Update();
@@ -71,6 +71,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
};
diff --git a/source/gameengine/GameLogic/SCA_ANDController.cpp b/source/gameengine/GameLogic/SCA_ANDController.cpp
index 1cb03f375cb..87f7c612e7c 100644
--- a/source/gameengine/GameLogic/SCA_ANDController.cpp
+++ b/source/gameengine/GameLogic/SCA_ANDController.cpp
@@ -66,26 +66,19 @@ void SCA_ANDController::Trigger(SCA_LogicManager* logicmgr)
!(is==m_linkedsensors.end());is++)
{
SCA_ISensor* sensor = *is;
- if (!sensor->IsPositiveTrigger())
+ if (!sensor->GetState())
{
sensorresult = false;
break;
}
}
- CValue* newevent = new CBoolValue(sensorresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
- logicmgr->AddActiveActuator(actua,newevent);
+ SCA_IActuator* actua = *i;
+ logicmgr->AddActiveActuator(actua,sensorresult);
}
-
- // every actuator that needs the event, has a it's own reference to it now so
- // release it (so to be clear: if there is no actuator, it's deleted right now)
- newevent->Release();
-
}
@@ -94,7 +87,7 @@ CValue* SCA_ANDController::GetReplica()
{
CValue* replica = new SCA_ANDController(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -107,8 +100,13 @@ CValue* SCA_ANDController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_ANDController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_ANDController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -145,4 +143,8 @@ PyObject* SCA_ANDController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
+PyObject* SCA_ANDController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_ANDController.h b/source/gameengine/GameLogic/SCA_ANDController.h
index fdb93d0fc42..9a359d57cb4 100644
--- a/source/gameengine/GameLogic/SCA_ANDController.h
+++ b/source/gameengine/GameLogic/SCA_ANDController.h
@@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SCA_ActuatorEventManager.cpp b/source/gameengine/GameLogic/SCA_ActuatorEventManager.cpp
index 768a3a45937..a80b2af55c8 100644
--- a/source/gameengine/GameLogic/SCA_ActuatorEventManager.cpp
+++ b/source/gameengine/GameLogic/SCA_ActuatorEventManager.cpp
@@ -51,17 +51,19 @@ SCA_ActuatorEventManager::~SCA_ActuatorEventManager()
void SCA_ActuatorEventManager::NextFrame()
{
// check for changed actuator
- for (set<SCA_ISensor*>::const_iterator it = m_sensors.begin();!(it==m_sensors.end());it++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- (*it)->Activate(m_logicmgr,NULL);
+ (*it)->Activate(m_logicmgr);
}
}
void SCA_ActuatorEventManager::UpdateFrame()
{
// update the state of actuator before executing them
- for (set<SCA_ISensor*>::const_iterator it = m_sensors.begin();!(it==m_sensors.end());it++)
+ SG_DList::iterator<SCA_ActuatorSensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- ((SCA_ActuatorSensor*)(*it))->Update();
+ (*it)->Update();
}
} \ No newline at end of file
diff --git a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
index acd906ef9dd..4dad65c5a25 100644
--- a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
@@ -60,7 +60,7 @@ CValue* SCA_ActuatorSensor::GetReplica()
{
SCA_ActuatorSensor* replica = new SCA_ActuatorSensor(*this);
// m_range_expr must be recalculated on replica!
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->Init();
return replica;
@@ -89,7 +89,7 @@ SCA_ActuatorSensor::~SCA_ActuatorSensor()
-bool SCA_ActuatorSensor::Evaluate(CValue* event)
+bool SCA_ActuatorSensor::Evaluate()
{
if (m_actuator)
{
@@ -122,8 +122,13 @@ void SCA_ActuatorSensor::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_ActuatorSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_ActuatorSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -165,6 +170,10 @@ PyObject* SCA_ActuatorSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_ActuatorSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_ActuatorSensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}
diff --git a/source/gameengine/GameLogic/SCA_ActuatorSensor.h b/source/gameengine/GameLogic/SCA_ActuatorSensor.h
index 21960993497..6655e08dc70 100644
--- a/source/gameengine/GameLogic/SCA_ActuatorSensor.h
+++ b/source/gameengine/GameLogic/SCA_ActuatorSensor.h
@@ -52,7 +52,7 @@ public:
virtual ~SCA_ActuatorSensor();
virtual CValue* GetReplica();
virtual void Init();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void ReParent(SCA_IObject* parent);
void Update();
@@ -62,6 +62,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 3. setProperty */
diff --git a/source/gameengine/GameLogic/SCA_AlwaysEventManager.cpp b/source/gameengine/GameLogic/SCA_AlwaysEventManager.cpp
index 4cd2dfba994..dd3b55abcc9 100644
--- a/source/gameengine/GameLogic/SCA_AlwaysEventManager.cpp
+++ b/source/gameengine/GameLogic/SCA_AlwaysEventManager.cpp
@@ -51,9 +51,10 @@ SCA_AlwaysEventManager::SCA_AlwaysEventManager(class SCA_LogicManager* logicmgr)
void SCA_AlwaysEventManager::NextFrame()
{
- for (set<class SCA_ISensor*>::const_iterator i= m_sensors.begin();!(i==m_sensors.end());i++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- (*i)->Activate(m_logicmgr, NULL);
+ (*it)->Activate(m_logicmgr);
}
}
diff --git a/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp b/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
index b7ecb0233a1..ff02680f191 100644
--- a/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
@@ -72,7 +72,7 @@ CValue* SCA_AlwaysSensor::GetReplica()
{
CValue* replica = new SCA_AlwaysSensor(*this);//m_float,GetName());
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -86,7 +86,7 @@ bool SCA_AlwaysSensor::IsPositiveTrigger()
-bool SCA_AlwaysSensor::Evaluate(CValue* event)
+bool SCA_AlwaysSensor::Evaluate()
{
/* Nice! :) */
//return true;
@@ -105,8 +105,13 @@ bool SCA_AlwaysSensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_AlwaysSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_AlwaysSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -143,4 +148,8 @@ PyObject* SCA_AlwaysSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_AlwaysSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_AlwaysSensor.h b/source/gameengine/GameLogic/SCA_AlwaysSensor.h
index 87949babf59..0f85a641ef1 100644
--- a/source/gameengine/GameLogic/SCA_AlwaysSensor.h
+++ b/source/gameengine/GameLogic/SCA_AlwaysSensor.h
@@ -43,7 +43,7 @@ public:
PyTypeObject* T =&Type);
virtual ~SCA_AlwaysSensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void Init();
@@ -53,7 +53,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
-
+ virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SCA_DelaySensor.cpp b/source/gameengine/GameLogic/SCA_DelaySensor.cpp
index 44a0175d916..dcdae0b4e75 100644
--- a/source/gameengine/GameLogic/SCA_DelaySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_DelaySensor.cpp
@@ -77,7 +77,7 @@ CValue* SCA_DelaySensor::GetReplica()
{
CValue* replica = new SCA_DelaySensor(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -89,7 +89,7 @@ bool SCA_DelaySensor::IsPositiveTrigger()
return (m_invert ? !m_lastResult : m_lastResult);
}
-bool SCA_DelaySensor::Evaluate(CValue* event)
+bool SCA_DelaySensor::Evaluate()
{
bool trigger = false;
bool result;
@@ -131,8 +131,13 @@ bool SCA_DelaySensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_DelaySensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_DelaySensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -182,6 +187,10 @@ PyObject* SCA_DelaySensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_DelaySensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_DelaySensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}
diff --git a/source/gameengine/GameLogic/SCA_DelaySensor.h b/source/gameengine/GameLogic/SCA_DelaySensor.h
index 8da76ff7189..5ccb33f8a16 100644
--- a/source/gameengine/GameLogic/SCA_DelaySensor.h
+++ b/source/gameengine/GameLogic/SCA_DelaySensor.h
@@ -51,7 +51,7 @@ public:
PyTypeObject* T =&Type);
virtual ~SCA_DelaySensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void Init();
@@ -61,6 +61,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* setProperty */
diff --git a/source/gameengine/GameLogic/SCA_EventManager.cpp b/source/gameengine/GameLogic/SCA_EventManager.cpp
index e4fd0379597..d1301541a0a 100644
--- a/source/gameengine/GameLogic/SCA_EventManager.cpp
+++ b/source/gameengine/GameLogic/SCA_EventManager.cpp
@@ -28,6 +28,7 @@
#include <assert.h>
#include "SCA_EventManager.h"
+#include "SCA_ISensor.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -43,16 +44,18 @@ SCA_EventManager::SCA_EventManager(EVENT_MANAGER_TYPE mgrtype)
SCA_EventManager::~SCA_EventManager()
{
+ // all sensors should be removed
+ assert(m_sensors.Empty());
}
void SCA_EventManager::RegisterSensor(class SCA_ISensor* sensor)
{
- m_sensors.insert(sensor);
+ m_sensors.AddBack(sensor);
}
void SCA_EventManager::RemoveSensor(class SCA_ISensor* sensor)
{
- m_sensors.erase(sensor);
+ sensor->Delink();
}
void SCA_EventManager::NextFrame(double curtime, double fixedtime)
diff --git a/source/gameengine/GameLogic/SCA_EventManager.h b/source/gameengine/GameLogic/SCA_EventManager.h
index 9dbb5a6d24f..5ff55849bfe 100644
--- a/source/gameengine/GameLogic/SCA_EventManager.h
+++ b/source/gameengine/GameLogic/SCA_EventManager.h
@@ -33,11 +33,14 @@
#include <set>
#include <algorithm>
+#include "SG_DList.h"
+
class SCA_EventManager
{
protected:
// use a set to speed-up insertion/removal
- std::set <class SCA_ISensor*> m_sensors;
+ //std::set <class SCA_ISensor*> m_sensors;
+ SG_DList m_sensors;
public:
enum EVENT_MANAGER_TYPE {
diff --git a/source/gameengine/GameLogic/SCA_ExpressionController.cpp b/source/gameengine/GameLogic/SCA_ExpressionController.cpp
index 352a39a6fea..8e044b89c71 100644
--- a/source/gameengine/GameLogic/SCA_ExpressionController.cpp
+++ b/source/gameengine/GameLogic/SCA_ExpressionController.cpp
@@ -70,7 +70,7 @@ CValue* SCA_ExpressionController::GetReplica()
replica->m_exprText = m_exprText;
replica->m_exprCache = NULL;
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -115,37 +115,14 @@ void SCA_ExpressionController::Trigger(SCA_LogicManager* logicmgr)
value->Release();
}
- //m_exprCache->Release();
- //m_exprCache = NULL;
}
- /*
-
- for (vector<SCA_ISensor*>::const_iterator is=m_linkedsensors.begin();
- !(is==m_linkedsensors.end());is++)
- {
- SCA_ISensor* sensor = *is;
- if (!sensor->IsPositiveTrigger())
- {
- sensorresult = false;
- break;
- }
- }
-
- */
-
- CValue* newevent = new CBoolValue(expressionresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
SCA_IActuator* actua = *i;
- logicmgr->AddActiveActuator(actua,newevent);
+ logicmgr->AddActiveActuator(actua,expressionresult);
}
- //printf("expr %d.",expressionresult);
- // every actuator that needs the event, has a it's own reference to it now so
- // release it (so to be clear: if there is no actuator, it's deleted right now)
- newevent->Release();
}
@@ -161,7 +138,7 @@ CValue* SCA_ExpressionController::FindIdentifier(const STR_String& identifiernam
SCA_ISensor* sensor = *is;
if (sensor->GetName() == identifiername)
{
- identifierval = new CBoolValue(sensor->IsPositiveTrigger());
+ identifierval = new CBoolValue(sensor->GetState());
//identifierval = sensor->AddRef();
}
diff --git a/source/gameengine/GameLogic/SCA_ExpressionController.h b/source/gameengine/GameLogic/SCA_ExpressionController.h
index 2936742be19..6a34d7b2dff 100644
--- a/source/gameengine/GameLogic/SCA_ExpressionController.h
+++ b/source/gameengine/GameLogic/SCA_ExpressionController.h
@@ -60,6 +60,7 @@ public:
/* --------------------------------------------------------------------- */
// virtual PyObject* py_getattro(PyObject *attr);
+// virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SCA_IActuator.cpp b/source/gameengine/GameLogic/SCA_IActuator.cpp
index 309f3108418..be7c2651686 100644
--- a/source/gameengine/GameLogic/SCA_IActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_IActuator.cpp
@@ -37,53 +37,13 @@ using namespace std;
SCA_IActuator::SCA_IActuator(SCA_IObject* gameobj,
PyTypeObject* T) :
SCA_ILogicBrick(gameobj,T),
- m_links(0)
+ m_links(0),
+ m_posevent(false),
+ m_negevent(false)
{
// nothing to do
}
-
-
-void SCA_IActuator::AddEvent(CValue* event)
-{
- m_events.push_back(event);
-}
-
-
-
-void SCA_IActuator::RemoveAllEvents()
-{ // remove event queue!
- for (vector<CValue*>::iterator i=m_events.begin(); !(i==m_events.end());i++)
- {
- (*i)->Release();
- }
- m_events.clear();
-}
-
-
-
-
-
-bool SCA_IActuator::IsNegativeEvent() const
-{
- bool bPositiveEvent(false);
- bool bNegativeEvent(false);
-
- for (vector<CValue*>::const_iterator i=m_events.begin(); i!=m_events.end();++i)
- {
- if ((*i)->GetNumber() == 0.0f)
- {
- bNegativeEvent = true;
- } else {
- bPositiveEvent = true;
- }
- }
-
- // if at least 1 positive event, return false
-
- return !bPositiveEvent && bNegativeEvent;
-}
-
bool SCA_IActuator::Update(double curtime, bool frame)
{
if (frame)
@@ -98,9 +58,34 @@ bool SCA_IActuator::Update()
return false;
}
+void SCA_IActuator::Activate(SG_DList& head)
+{
+ if (QEmpty())
+ {
+ InsertActiveQList(m_gameobj->m_activeActuators);
+ head.AddBack(&m_gameobj->m_activeActuators);
+ }
+}
+
+// this function is only used to deactivate actuators outside the logic loop
+// e.g. when an object is deleted.
+void SCA_IActuator::Deactivate()
+{
+ if (QDelink())
+ {
+ // the actuator was in the active list
+ if (m_gameobj->m_activeActuators.QEmpty())
+ // the owner object has no more active actuators, remove it from the global list
+ m_gameobj->m_activeActuators.Delink();
+ }
+}
+
+
void SCA_IActuator::ProcessReplica()
{
- m_events.clear();
+ SCA_ILogicBrick::ProcessReplica();
+ RemoveAllEvents();
+ m_linkedcontrollers.clear();
}
@@ -119,3 +104,36 @@ void SCA_IActuator::DecLink()
m_links = 0;
}
}
+
+void SCA_IActuator::LinkToController(SCA_IController* controller)
+{
+ m_linkedcontrollers.push_back(controller);
+}
+
+void SCA_IActuator::UnlinkController(SCA_IController* controller)
+{
+ std::vector<class SCA_IController*>::iterator contit;
+ for (contit = m_linkedcontrollers.begin();!(contit==m_linkedcontrollers.end());++contit)
+ {
+ if ((*contit) == controller)
+ {
+ *contit = m_linkedcontrollers.back();
+ m_linkedcontrollers.pop_back();
+ return;
+ }
+ }
+ printf("Missing link from actuator %s:%s to controller %s:%s\n",
+ m_gameobj->GetName().ReadPtr(), GetName().ReadPtr(),
+ controller->GetParent()->GetName().ReadPtr(), controller->GetName().ReadPtr());
+}
+
+void SCA_IActuator::UnlinkAllControllers()
+{
+ std::vector<class SCA_IController*>::iterator contit;
+ for (contit = m_linkedcontrollers.begin();!(contit==m_linkedcontrollers.end());++contit)
+ {
+ (*contit)->UnlinkActuator(this);
+ }
+ m_linkedcontrollers.clear();
+}
+
diff --git a/source/gameengine/GameLogic/SCA_IActuator.h b/source/gameengine/GameLogic/SCA_IActuator.h
index 51bd6454d92..27afcbc386b 100644
--- a/source/gameengine/GameLogic/SCA_IActuator.h
+++ b/source/gameengine/GameLogic/SCA_IActuator.h
@@ -29,17 +29,32 @@
#ifndef __KX_IACTUATOR
#define __KX_IACTUATOR
-#include "SCA_ILogicBrick.h"
+#include "SCA_IController.h"
#include <vector>
+/*
+ * Use of SG_DList : None
+ * Use of SG_QList : element of activated actuator list of their owner
+ * Head: SCA_IObject::m_activeActuators
+ */
class SCA_IActuator : public SCA_ILogicBrick
{
friend class SCA_LogicManager;
protected:
int m_links; // number of active links to controllers
// when 0, the actuator is automatically stopped
- std::vector<CValue*> m_events;
- void RemoveAllEvents();
+ //std::vector<CValue*> m_events;
+ bool m_posevent;
+ bool m_negevent;
+
+ std::vector<class SCA_IController*> m_linkedcontrollers;
+
+ void RemoveAllEvents()
+ {
+ m_posevent = false;
+ m_negevent = false;
+ }
+
public:
/**
@@ -75,7 +90,15 @@ public:
/**
* Add an event to an actuator.
*/
- void AddEvent(CValue* event);
+ //void AddEvent(CValue* event)
+ void AddEvent(bool event)
+ {
+ if (event)
+ m_posevent = true;
+ else
+ m_negevent = true;
+ }
+
virtual void ProcessReplica();
/**
@@ -84,9 +107,23 @@ public:
* not immediately clear. But usually refers to key-up events
* or events where no action is required.
*/
- bool IsNegativeEvent() const;
+ bool IsNegativeEvent() const
+ {
+ return !m_posevent && m_negevent;
+ }
+
virtual ~SCA_IActuator();
+ /**
+ * remove this actuator from the list of active actuators
+ */
+ virtual void Deactivate();
+ virtual void Activate(SG_DList& head);
+
+ void LinkToController(SCA_IController* controller);
+ void UnlinkController(class SCA_IController* cont);
+ void UnlinkAllControllers();
+
void ClrLink() { m_links=0; }
void IncLink() { m_links++; }
void DecLink();
diff --git a/source/gameengine/GameLogic/SCA_IController.cpp b/source/gameengine/GameLogic/SCA_IController.cpp
index f9c192cae5c..f2c3c83a2d9 100644
--- a/source/gameengine/GameLogic/SCA_IController.cpp
+++ b/source/gameengine/GameLogic/SCA_IController.cpp
@@ -30,6 +30,8 @@
#include "SCA_LogicManager.h"
#include "SCA_IActuator.h"
#include "SCA_ISensor.h"
+#include "PyObjectPlus.h"
+#include "../Ketsji/KX_PythonSeq.h" /* not nice, only need for KX_PythonSeq_CreatePyObject */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -39,7 +41,8 @@ SCA_IController::SCA_IController(SCA_IObject* gameobj,
PyTypeObject* T)
:
SCA_ILogicBrick(gameobj,T),
- m_statemask(0)
+ m_statemask(0),
+ m_justActivated(false)
{
}
@@ -47,19 +50,19 @@ SCA_IController::SCA_IController(SCA_IObject* gameobj,
SCA_IController::~SCA_IController()
{
- UnlinkAllActuators();
+ //UnlinkAllActuators();
}
-const std::vector<class SCA_ISensor*>& SCA_IController::GetLinkedSensors()
+std::vector<class SCA_ISensor*>& SCA_IController::GetLinkedSensors()
{
return m_linkedsensors;
}
-const std::vector<class SCA_IActuator*>& SCA_IController::GetLinkedActuators()
+std::vector<class SCA_IActuator*>& SCA_IController::GetLinkedActuators()
{
return m_linkedactuators;
}
@@ -68,13 +71,14 @@ const std::vector<class SCA_IActuator*>& SCA_IController::GetLinkedActuators()
void SCA_IController::UnlinkAllSensors()
{
- if (IsActive())
+ std::vector<class SCA_ISensor*>::iterator sensit;
+ for (sensit = m_linkedsensors.begin();!(sensit==m_linkedsensors.end());++sensit)
{
- std::vector<class SCA_ISensor*>::iterator sensit;
- for (sensit = m_linkedsensors.begin();!(sensit==m_linkedsensors.end());++sensit)
+ if (IsActive())
{
(*sensit)->DecLink();
}
+ (*sensit)->UnlinkController(this);
}
m_linkedsensors.clear();
}
@@ -83,34 +87,18 @@ void SCA_IController::UnlinkAllSensors()
void SCA_IController::UnlinkAllActuators()
{
- if (IsActive())
+ std::vector<class SCA_IActuator*>::iterator actit;
+ for (actit = m_linkedactuators.begin();!(actit==m_linkedactuators.end());++actit)
{
- std::vector<class SCA_IActuator*>::iterator actit;
- for (actit = m_linkedactuators.begin();!(actit==m_linkedactuators.end());++actit)
+ if (IsActive())
{
(*actit)->DecLink();
}
+ (*actit)->UnlinkController(this);
}
m_linkedactuators.clear();
}
-
-
-/*
-void SCA_IController::Trigger(SCA_LogicManager* logicmgr)
-{
- //for (int i=0;i<m_linkedactuators.size();i++)
- for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
- !(i==m_linkedactuators.end());i++)
- {
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
-
- logicmgr->AddActiveActuator(actua);
- }
-
-}
-*/
-
void SCA_IController::LinkToActuator(SCA_IActuator* actua)
{
m_linkedactuators.push_back(actua);
@@ -127,18 +115,18 @@ void SCA_IController::UnlinkActuator(class SCA_IActuator* actua)
{
if ((*actit) == actua)
{
- break;
- }
-
- }
- if (!(actit==m_linkedactuators.end()))
- {
- if (IsActive())
- {
- (*actit)->DecLink();
+ if (IsActive())
+ {
+ (*actit)->DecLink();
+ }
+ *actit = m_linkedactuators.back();
+ m_linkedactuators.pop_back();
+ return;
}
- m_linkedactuators.erase(actit);
}
+ printf("Missing link from controller %s:%s to actuator %s:%s\n",
+ m_gameobj->GetName().ReadPtr(), GetName().ReadPtr(),
+ actua->GetParent()->GetName().ReadPtr(), actua->GetName().ReadPtr());
}
void SCA_IController::LinkToSensor(SCA_ISensor* sensor)
@@ -157,20 +145,21 @@ void SCA_IController::UnlinkSensor(class SCA_ISensor* sensor)
{
if ((*sensit) == sensor)
{
- break;
- }
-
- }
- if (!(sensit==m_linkedsensors.end()))
- {
- if (IsActive())
- {
- (*sensit)->DecLink();
+ if (IsActive())
+ {
+ sensor->DecLink();
+ }
+ *sensit = m_linkedsensors.back();
+ m_linkedsensors.pop_back();
+ return;
}
- m_linkedsensors.erase(sensit);
}
+ printf("Missing link from controller %s:%s to sensor %s:%s\n",
+ m_gameobj->GetName().ReadPtr(), GetName().ReadPtr(),
+ sensor->GetParent()->GetName().ReadPtr(), sensor->GetName().ReadPtr());
}
+
void SCA_IController::ApplyState(unsigned int state)
{
std::vector<class SCA_IActuator*>::iterator actit;
@@ -185,13 +174,13 @@ void SCA_IController::ApplyState(unsigned int state)
{
(*actit)->IncLink();
}
+
for (sensit = m_linkedsensors.begin();!(sensit==m_linkedsensors.end());++sensit)
{
(*sensit)->IncLink();
- // remember that this controller just activated that sensor
- (*sensit)->AddNewController(this);
}
SetActive(true);
+ m_justActivated = true;
}
} else if (IsActive())
{
@@ -204,6 +193,168 @@ void SCA_IController::ApplyState(unsigned int state)
(*sensit)->DecLink();
}
SetActive(false);
+ m_justActivated = false;
}
}
+/* Python api */
+
+PyTypeObject SCA_IController::Type = {
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
+ "SCA_IController",
+ sizeof(PyObjectPlus_Proxy),
+ 0,
+ py_base_dealloc,
+ 0,
+ 0,
+ 0,
+ 0,
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
+};
+
+PyParentObject SCA_IController::Parents[] = {
+ &SCA_IController::Type,
+ &CValue::Type,
+ NULL
+};
+
+PyMethodDef SCA_IController::Methods[] = {
+ //Deprecated functions ------>
+ {"getSensor", (PyCFunction) SCA_IController::sPyGetSensor, METH_O},
+ {"getActuator", (PyCFunction) SCA_IController::sPyGetActuator, METH_O},
+ {"getSensors", (PyCFunction) SCA_IController::sPyGetSensors, METH_NOARGS},
+ {"getActuators", (PyCFunction) SCA_IController::sPyGetActuators, METH_NOARGS},
+ {"getState", (PyCFunction) SCA_IController::sPyGetState, METH_NOARGS},
+ //<----- Deprecated
+ {NULL,NULL} //Sentinel
+};
+
+PyAttributeDef SCA_IController::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("state", SCA_IController, pyattr_get_state),
+ KX_PYATTRIBUTE_RO_FUNCTION("sensors", SCA_IController, pyattr_get_sensors),
+ KX_PYATTRIBUTE_RO_FUNCTION("actuators", SCA_IController, pyattr_get_actuators),
+ KX_PYATTRIBUTE_BOOL_RW("useHighPriority",SCA_IController,m_bookmark),
+ { NULL } //Sentinel
+};
+
+PyObject* SCA_IController::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_ILogicBrick);
+}
+
+PyObject* SCA_IController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ILogicBrick);
+}
+
+int SCA_IController::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_ILogicBrick);
+}
+
+
+
+PyObject* SCA_IController::PyGetActuators()
+{
+ ShowDeprecationWarning("getActuators()", "the actuators property");
+
+ PyObject* resultlist = PyList_New(m_linkedactuators.size());
+ for (unsigned int index=0;index<m_linkedactuators.size();index++)
+ {
+ PyList_SET_ITEM(resultlist,index, m_linkedactuators[index]->GetProxy());
+ }
+
+ return resultlist;
+}
+
+PyObject* SCA_IController::PyGetSensor(PyObject* value)
+{
+ ShowDeprecationWarning("getSensor(string)", "the sensors[string] property");
+
+ char *scriptArg = PyString_AsString(value);
+ if (scriptArg==NULL) {
+ PyErr_SetString(PyExc_TypeError, "controller.getSensor(string): Python Controller, expected a string (sensor name)");
+ return NULL;
+ }
+
+ for (unsigned int index=0;index<m_linkedsensors.size();index++)
+ {
+ SCA_ISensor* sensor = m_linkedsensors[index];
+ STR_String& realname = sensor->GetName();
+ if (realname == scriptArg)
+ {
+ return sensor->GetProxy();
+ }
+ }
+
+ PyErr_Format(PyExc_AttributeError, "controller.getSensor(string): Python Controller, unable to find requested sensor \"%s\"", scriptArg);
+ return NULL;
+}
+
+PyObject* SCA_IController::PyGetActuator(PyObject* value)
+{
+ ShowDeprecationWarning("getActuator(string)", "the actuators[string] property");
+
+ char *scriptArg = PyString_AsString(value);
+ if (scriptArg==NULL) {
+ PyErr_SetString(PyExc_TypeError, "controller.getActuator(string): Python Controller, expected a string (actuator name)");
+ return NULL;
+ }
+
+ for (unsigned int index=0;index<m_linkedactuators.size();index++)
+ {
+ SCA_IActuator* actua = m_linkedactuators[index];
+ if (actua->GetName() == scriptArg)
+ {
+ return actua->GetProxy();
+ }
+ }
+
+ PyErr_Format(PyExc_AttributeError, "controller.getActuator(string): Python Controller, unable to find requested actuator \"%s\"", scriptArg);
+ return NULL;
+}
+
+PyObject* SCA_IController::PyGetSensors()
+{
+ ShowDeprecationWarning("getSensors()", "the sensors property");
+
+ PyObject* resultlist = PyList_New(m_linkedsensors.size());
+ for (unsigned int index=0;index<m_linkedsensors.size();index++)
+ {
+ PyList_SET_ITEM(resultlist,index, m_linkedsensors[index]->GetProxy());
+ }
+
+ return resultlist;
+}
+
+PyObject* SCA_IController::PyGetState()
+{
+ ShowDeprecationWarning("getState()", "the state property");
+ return PyInt_FromLong(m_statemask);
+}
+
+PyObject* SCA_IController::pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_IController* self= static_cast<SCA_IController*>(self_v);
+ return PyInt_FromLong(self->m_statemask);
+}
+
+PyObject* SCA_IController::pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ return KX_PythonSeq_CreatePyObject((static_cast<SCA_IController*>(self_v))->m_proxy, KX_PYGENSEQ_CONT_TYPE_SENSORS);
+}
+
+PyObject* SCA_IController::pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ return KX_PythonSeq_CreatePyObject((static_cast<SCA_IController*>(self_v))->m_proxy, KX_PYGENSEQ_CONT_TYPE_ACTUATORS);
+}
diff --git a/source/gameengine/GameLogic/SCA_IController.h b/source/gameengine/GameLogic/SCA_IController.h
index f67c0942eb4..a52c57ab3ed 100644
--- a/source/gameengine/GameLogic/SCA_IController.h
+++ b/source/gameengine/GameLogic/SCA_IController.h
@@ -30,28 +30,87 @@
#define __KX_ICONTROLLER
#include "SCA_ILogicBrick.h"
+#include "PyObjectPlus.h"
+/*
+ * Use of SG_DList element: none
+ * Use of SG_QList element: build ordered list of activated controller on the owner object
+ * Head: SCA_IObject::m_activeControllers
+ */
class SCA_IController : public SCA_ILogicBrick
{
+ Py_Header;
protected:
std::vector<class SCA_ISensor*> m_linkedsensors;
std::vector<class SCA_IActuator*> m_linkedactuators;
unsigned int m_statemask;
+ bool m_justActivated;
+ bool m_bookmark;
public:
SCA_IController(SCA_IObject* gameobj,PyTypeObject* T);
virtual ~SCA_IController();
virtual void Trigger(class SCA_LogicManager* logicmgr)=0;
void LinkToSensor(SCA_ISensor* sensor);
void LinkToActuator(SCA_IActuator*);
- const std::vector<class SCA_ISensor*>& GetLinkedSensors();
- const std::vector<class SCA_IActuator*>& GetLinkedActuators();
+ std::vector<class SCA_ISensor*>& GetLinkedSensors();
+ std::vector<class SCA_IActuator*>& GetLinkedActuators();
+ void ReserveActuator(int num)
+ {
+ m_linkedactuators.reserve(num);
+ }
void UnlinkAllSensors();
void UnlinkAllActuators();
void UnlinkActuator(class SCA_IActuator* actua);
void UnlinkSensor(class SCA_ISensor* sensor);
void SetState(unsigned int state) { m_statemask = state; }
void ApplyState(unsigned int state);
+ void Deactivate()
+ {
+ // the controller can only be part of a sensor m_newControllers list
+ Delink();
+ }
+ bool IsJustActivated()
+ {
+ return m_justActivated;
+ }
+ void ClrJustActivated()
+ {
+ m_justActivated = false;
+ }
+ void SetBookmark(bool bookmark)
+ {
+ m_bookmark = bookmark;
+ }
+ void Activate(SG_DList& head)
+ {
+ if (QEmpty())
+ {
+ if (m_bookmark)
+ {
+ m_gameobj->m_activeBookmarkedControllers.QAddBack(this);
+ head.AddFront(&m_gameobj->m_activeBookmarkedControllers);
+ }
+ else
+ {
+ InsertActiveQList(m_gameobj->m_activeControllers);
+ head.AddBack(&m_gameobj->m_activeControllers);
+ }
+ }
+ }
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+
+ KX_PYMETHOD_NOARGS(SCA_IController,GetSensors);
+ KX_PYMETHOD_NOARGS(SCA_IController,GetActuators);
+ KX_PYMETHOD_O(SCA_IController,GetSensor);
+ KX_PYMETHOD_O(SCA_IController,GetActuator);
+ KX_PYMETHOD_NOARGS(SCA_IController,GetState);
+
+ static PyObject* pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
index 3cd750ff63b..2dc80f54568 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
@@ -71,13 +71,6 @@ void SCA_ILogicBrick::SetUeberExecutePriority(int execute_Priority)
-SCA_IObject* SCA_ILogicBrick::GetParent()
-{
- return m_gameobj;
-}
-
-
-
void SCA_ILogicBrick::ReParent(SCA_IObject* parent)
{
m_gameobj = parent;
@@ -130,33 +123,17 @@ double SCA_ILogicBrick::GetNumber()
-STR_String SCA_ILogicBrick::GetName()
+STR_String& SCA_ILogicBrick::GetName()
{
return m_name;
}
-void SCA_ILogicBrick::SetName(STR_String name)
-{
- m_name = name;
-}
-
-
-
-void SCA_ILogicBrick::ReplicaSetName(STR_String name)
+void SCA_ILogicBrick::SetName(const char *name)
{
m_name = name;
}
-
-
-
-bool SCA_ILogicBrick::IsActive()
-{
- return m_bActive;
-}
-
-
bool SCA_ILogicBrick::LessComparedTo(SCA_ILogicBrick* other)
{
@@ -165,22 +142,6 @@ bool SCA_ILogicBrick::LessComparedTo(SCA_ILogicBrick* other)
(this->m_Execute_Priority < other->m_Execute_Priority));
}
-
-
-void SCA_ILogicBrick::SetActive(bool active)
-{
- m_bActive=active;
- if (active)
- {
- //m_gameobj->SetDebugColor(GetDrawColor());
- } else
- {
- //m_gameobj->ResetDebugColor();
- }
-}
-
-
-
void SCA_ILogicBrick::RegisterEvent(CValue* eventval)
{
if (m_eventval)
@@ -217,8 +178,13 @@ CValue* SCA_ILogicBrick::GetEvent()
/* python stuff */
PyTypeObject SCA_ILogicBrick::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_ILogicBrick",
sizeof(PyObjectPlus_Proxy),
0,
@@ -256,7 +222,8 @@ PyMethodDef SCA_ILogicBrick::Methods[] = {
PyAttributeDef SCA_ILogicBrick::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("owner", SCA_ILogicBrick, pyattr_get_owner),
- KX_PYATTRIBUTE_INT_RW("executePriority",0,100000,false,SCA_ILogicBrick,m_Execute_Ueber_Priority),
+ KX_PYATTRIBUTE_INT_RW("executePriority",0,100000,false,SCA_ILogicBrick,m_Execute_Priority),
+ KX_PYATTRIBUTE_STRING_RO("name", SCA_ILogicBrick, m_name),
{NULL} //Sentinel
};
@@ -278,12 +245,15 @@ int SCA_ILogicBrick::CheckProperty(void *self, const PyAttributeDef *attrdef)
return 0;
}
-PyObject*
-SCA_ILogicBrick::py_getattro(PyObject *attr)
+PyObject* SCA_ILogicBrick::py_getattro(PyObject *attr)
{
py_getattro_up(CValue);
}
+PyObject* SCA_ILogicBrick::py_getattro_dict() {
+ py_getattro_dict_up(CValue);
+}
+
int SCA_ILogicBrick::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(CValue);
@@ -316,7 +286,7 @@ PyObject* SCA_ILogicBrick::PySetExecutePriority(PyObject* args)
return NULL;
}
- m_Execute_Ueber_Priority = priority;
+ m_Execute_Priority = priority;
Py_RETURN_NONE;
}
@@ -326,7 +296,7 @@ PyObject* SCA_ILogicBrick::PySetExecutePriority(PyObject* args)
PyObject* SCA_ILogicBrick::PyGetExecutePriority()
{
ShowDeprecationWarning("getExecutePriority()", "the executePriority property");
- return PyInt_FromLong(m_Execute_Ueber_Priority);
+ return PyInt_FromLong(m_Execute_Priority);
}
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.h b/source/gameengine/GameLogic/SCA_ILogicBrick.h
index e59d05ea051..779e5397a6a 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.h
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.h
@@ -59,7 +59,8 @@ public:
void SetExecutePriority(int execute_Priority);
void SetUeberExecutePriority(int execute_Priority);
- SCA_IObject* GetParent();
+ SCA_IObject* GetParent() { return m_gameobj; }
+
virtual void ReParent(SCA_IObject* parent);
virtual void Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map);
virtual void Delete() { Release(); }
@@ -70,16 +71,59 @@ public:
virtual const STR_String & GetText();
virtual double GetNumber();
- virtual STR_String GetName();
- virtual void SetName(STR_String name);
- virtual void ReplicaSetName(STR_String name);
+ virtual STR_String& GetName();
+ virtual void SetName(const char *);
- bool IsActive();
- void SetActive(bool active) ;
+ bool IsActive()
+ {
+ return m_bActive;
+ }
+
+ void SetActive(bool active)
+ {
+ m_bActive=active;
+ }
+
+ // insert in a QList at position corresponding to m_Execute_Priority
+ void InsertActiveQList(SG_QList& head)
+ {
+ SG_QList::iterator<SCA_ILogicBrick> it(head);
+ for(it.begin(); !it.end() && m_Execute_Priority > (*it)->m_Execute_Priority; ++it);
+ it.add_back(this);
+ }
+
+ // insert in a QList at position corresponding to m_Execute_Priority
+ // inside a longer list that contains elements of other objects.
+ // Sorting is done only between the elements of the same object.
+ // head is the head of the combined list
+ // current points to the first element of the object in the list, NULL if none yet
+ void InsertSelfActiveQList(SG_QList& head, SG_QList** current)
+ {
+ if (!*current)
+ {
+ // first element can be put anywhere
+ head.QAddBack(this);
+ *current = this;
+ return;
+ }
+ // note: we assume current points actually to one o our element, skip the tests
+ SG_QList::iterator<SCA_ILogicBrick> it(head,*current);
+ if (m_Execute_Priority <= (*it)->m_Execute_Priority)
+ {
+ // this element comes before the first
+ *current = this;
+ }
+ else
+ {
+ for(++it; !it.end() && (*it)->m_gameobj == m_gameobj && m_Execute_Priority > (*it)->m_Execute_Priority; ++it);
+ }
+ it.add_back(this);
+ }
virtual bool LessComparedTo(SCA_ILogicBrick* other);
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
static class SCA_LogicManager* m_sCurrentLogicManager;
diff --git a/source/gameengine/GameLogic/SCA_IObject.cpp b/source/gameengine/GameLogic/SCA_IObject.cpp
index 75804525e7a..9876f2512c0 100644
--- a/source/gameengine/GameLogic/SCA_IObject.cpp
+++ b/source/gameengine/GameLogic/SCA_IObject.cpp
@@ -39,13 +39,13 @@
#endif
MT_Point3 SCA_IObject::m_sDummy=MT_Point3(0,0,0);
+SG_QList SCA_IObject::m_activeBookmarkedControllers;
+
+SCA_IObject::SCA_IObject(PyTypeObject* T): CValue(T), m_initState(0), m_state(0), m_firstState(NULL)
-SCA_IObject::SCA_IObject(PyTypeObject* T): CValue(T), m_initState(0), m_state(0)
{
m_suspended = false;
}
-
-
SCA_IObject::~SCA_IObject()
{
@@ -70,7 +70,7 @@ SCA_IObject::~SCA_IObject()
}
for (ita = m_actuators.begin(); !(ita==m_actuators.end()); ++ita)
{
- ((CValue*)(*ita))->Release();
+ (*ita)->Delete();
}
//T_InterpolatorList::iterator i;
@@ -79,29 +79,6 @@ SCA_IObject::~SCA_IObject()
//}
}
-
-
-SCA_ControllerList& SCA_IObject::GetControllers()
-{
- return m_controllers;
-}
-
-
-
-SCA_SensorList& SCA_IObject::GetSensors()
-{
- return m_sensors;
-}
-
-
-
-SCA_ActuatorList& SCA_IObject::GetActuators()
-{
- return m_actuators;
-}
-
-
-
void SCA_IObject::AddSensor(SCA_ISensor* act)
{
act->AddRef();
@@ -133,7 +110,7 @@ void SCA_IObject::RegisterActuator(SCA_IActuator* act)
void SCA_IObject::UnregisterActuator(SCA_IActuator* act)
{
SCA_ActuatorList::iterator ita;
- for (ita = m_registeredActuators.begin(); ita != m_registeredActuators.end(); ita++)
+ for (ita = m_registeredActuators.begin(); ita != m_registeredActuators.end(); ++ita)
{
if ((*ita) == act) {
(*ita) = m_registeredActuators.back();
@@ -143,20 +120,6 @@ void SCA_IObject::UnregisterActuator(SCA_IActuator* act)
}
}
-void SCA_IObject::SetIgnoreActivityCulling(bool b)
-{
- m_ignore_activity_culling = b;
-}
-
-
-
-bool SCA_IObject::GetIgnoreActivityCulling()
-{
- return m_ignore_activity_culling;
-}
-
-
-
void SCA_IObject::ReParentLogic()
{
SCA_ActuatorList& oldactuators = GetActuators();
@@ -208,7 +171,7 @@ SCA_ISensor* SCA_IObject::FindSensor(const STR_String& sensorname)
{
SCA_ISensor* foundsensor = NULL;
- for (SCA_SensorList::iterator its = m_sensors.begin();!(its==m_sensors.end());its++)
+ for (SCA_SensorList::iterator its = m_sensors.begin();!(its==m_sensors.end());++its)
{
if ((*its)->GetName() == sensorname)
{
@@ -225,7 +188,7 @@ SCA_IController* SCA_IObject::FindController(const STR_String& controllername)
{
SCA_IController* foundcontroller = NULL;
- for (SCA_ControllerList::iterator itc = m_controllers.begin();!(itc==m_controllers.end());itc++)
+ for (SCA_ControllerList::iterator itc = m_controllers.begin();!(itc==m_controllers.end());++itc)
{
if ((*itc)->GetName() == controllername)
{
@@ -242,7 +205,7 @@ SCA_IActuator* SCA_IObject::FindActuator(const STR_String& actuatorname)
{
SCA_IActuator* foundactuator = NULL;
- for (SCA_ActuatorList::iterator ita = m_actuators.begin();!(ita==m_actuators.end());ita++)
+ for (SCA_ActuatorList::iterator ita = m_actuators.begin();!(ita==m_actuators.end());++ita)
{
if ((*ita)->GetName() == actuatorname)
{
@@ -256,14 +219,6 @@ SCA_IActuator* SCA_IObject::FindActuator(const STR_String& actuatorname)
-void SCA_IObject::SetCurrentTime(float currentTime) {
- //T_InterpolatorList::iterator i;
- //for (i = m_interpolators.begin(); !(i == m_interpolators.end()); ++i) {
- // (*i)->Execute(currentTime);
- //}
-}
-
-
#if 0
const MT_Point3& SCA_IObject::ConvertPythonPylist(PyObject* pylist)
{
@@ -317,7 +272,7 @@ void SCA_IObject::Suspend()
SCA_SensorList::iterator i = m_sensors.begin();
while (i != m_sensors.end()) {
(*i)->Suspend();
- i++;
+ ++i;
}
}
}
@@ -332,7 +287,7 @@ void SCA_IObject::Resume(void)
SCA_SensorList::iterator i = m_sensors.begin();
while (i != m_sensors.end()) {
(*i)->Resume();
- i++;
+ ++i;
}
}
}
@@ -352,7 +307,7 @@ void SCA_IObject::SetState(unsigned int state)
if (tmpstate != m_state)
{
// update the status of the controllers
- for (contit = m_controllers.begin(); contit != m_controllers.end(); contit++)
+ for (contit = m_controllers.begin(); contit != m_controllers.end(); ++contit)
{
(*contit)->ApplyState(tmpstate);
}
@@ -360,7 +315,7 @@ void SCA_IObject::SetState(unsigned int state)
m_state = state;
if (m_state != tmpstate)
{
- for (contit = m_controllers.begin(); contit != m_controllers.end(); contit++)
+ for (contit = m_controllers.begin(); contit != m_controllers.end(); ++contit)
{
(*contit)->ApplyState(m_state);
}
@@ -375,8 +330,13 @@ void SCA_IObject::SetState(unsigned int state)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_IObject::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_IObject",
sizeof(PyObjectPlus_Proxy),
0,
@@ -418,3 +378,6 @@ PyObject* SCA_IObject::py_getattro(PyObject *attr) {
py_getattro_up(CValue);
}
+PyObject* SCA_IObject::py_getattro_dict() {
+ py_getattro_dict_up(CValue);
+}
diff --git a/source/gameengine/GameLogic/SCA_IObject.h b/source/gameengine/GameLogic/SCA_IObject.h
index 44ed3c8f3fe..eae427741ca 100644
--- a/source/gameengine/GameLogic/SCA_IObject.h
+++ b/source/gameengine/GameLogic/SCA_IObject.h
@@ -52,10 +52,30 @@ class SCA_IObject : public CValue
Py_Header;
protected:
+ friend class KX_StateActuator;
+ friend class SCA_IActuator;
+ friend class SCA_IController;
SCA_SensorList m_sensors;
SCA_ControllerList m_controllers;
SCA_ActuatorList m_actuators;
SCA_ActuatorList m_registeredActuators; // actuators that use a pointer to this object
+
+ // SG_Dlist: element of objects with active actuators
+ // Head: SCA_LogicManager::m_activeActuators
+ // SG_QList: Head of active actuators list on this object
+ // Elements: SCA_IActuator
+ SG_QList m_activeActuators;
+ // SG_Dlist: element of list os lists with active controllers
+ // Head: SCA_LogicManager::m_activeControllers
+ // SG_QList: Head of active controller list on this object
+ // Elements: SCA_IController
+ SG_QList m_activeControllers;
+ // SG_Dlist: element of list of lists of active controllers
+ // Head: SCA_LogicManager::m_activeControllers
+ // SG_QList: Head of active bookmarked controller list globally
+ // Elements: SCA_IController with bookmark option
+ static SG_QList m_activeBookmarkedControllers;
+
static class MT_Point3 m_sDummy;
/**
@@ -78,18 +98,48 @@ protected:
*/
unsigned int m_state;
+ /**
+ * pointer inside state actuator list for sorting
+ */
+ SG_QList* m_firstState;
+
public:
SCA_IObject(PyTypeObject* T=&Type);
virtual ~SCA_IObject();
- SCA_ControllerList& GetControllers();
- SCA_SensorList& GetSensors();
- SCA_ActuatorList& GetActuators();
+ SCA_ControllerList& GetControllers()
+ {
+ return m_controllers;
+ }
+ SCA_SensorList& GetSensors()
+ {
+ return m_sensors;
+ }
+ SCA_ActuatorList& GetActuators()
+ {
+ return m_actuators;
+ }
+ SG_QList& GetActiveActuators()
+ {
+ return m_activeActuators;
+ }
void AddSensor(SCA_ISensor* act);
+ void ReserveSensor(int num)
+ {
+ m_sensors.reserve(num);
+ }
void AddController(SCA_IController* act);
+ void ReserveController(int num)
+ {
+ m_controllers.reserve(num);
+ }
void AddActuator(SCA_IActuator* act);
+ void ReserveActuator(int num)
+ {
+ m_actuators.reserve(num);
+ }
void RegisterActuator(SCA_IActuator* act);
void UnregisterActuator(SCA_IActuator* act);
@@ -97,20 +147,26 @@ public:
SCA_IActuator* FindActuator(const STR_String& actuatorname);
SCA_IController* FindController(const STR_String& controllername);
- void SetCurrentTime(float currentTime);
+ void SetCurrentTime(float currentTime) {}
void ReParentLogic();
/**
* Set whether or not to ignore activity culling requests
*/
- void SetIgnoreActivityCulling(bool b);
+ void SetIgnoreActivityCulling(bool b)
+ {
+ m_ignore_activity_culling = b;
+ }
/**
* Set whether or not this object wants to ignore activity culling
* requests
*/
- bool GetIgnoreActivityCulling();
+ bool GetIgnoreActivityCulling()
+ {
+ return m_ignore_activity_culling;
+ }
/**
* Suspend all progress.
@@ -146,6 +202,7 @@ public:
// here come the python forwarded methods
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int GetGameObjectType() {return -1;}
diff --git a/source/gameengine/GameLogic/SCA_IScene.cpp b/source/gameengine/GameLogic/SCA_IScene.cpp
index 9fbeb706910..86b176a38b0 100644
--- a/source/gameengine/GameLogic/SCA_IScene.cpp
+++ b/source/gameengine/GameLogic/SCA_IScene.cpp
@@ -50,7 +50,7 @@ SCA_IScene::SCA_IScene()
void SCA_IScene::RemoveAllDebugProperties()
{
for (std::vector<SCA_DebugProp*>::iterator it = m_debugList.begin();
- !(it==m_debugList.end());it++)
+ !(it==m_debugList.end());++it)
{
delete (*it);
}
diff --git a/source/gameengine/GameLogic/SCA_IScene.h b/source/gameengine/GameLogic/SCA_IScene.h
index d18778a37c2..b641efc6ee1 100644
--- a/source/gameengine/GameLogic/SCA_IScene.h
+++ b/source/gameengine/GameLogic/SCA_IScene.h
@@ -52,7 +52,7 @@ public:
int lifespan=0)=0;
virtual void RemoveObject(class CValue* gameobj)=0;
virtual void DelayedRemoveObject(class CValue* gameobj)=0;
- virtual void DelayedReleaseObject(class CValue* gameobj)=0;
+ //virtual void DelayedReleaseObject(class CValue* gameobj)=0;
virtual void ReplaceMesh(class CValue* gameobj,
void* meshobj)=0;
diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp
index 68f5653d53a..2783bf14600 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ISensor.cpp
@@ -45,26 +45,28 @@ void SCA_ISensor::ReParent(SCA_IObject* parent)
SCA_ILogicBrick::ReParent(parent);
// will be done when the sensor is activated
//m_eventmgr->RegisterSensor(this);
- this->SetActive(false);
+ //this->SetActive(false);
}
SCA_ISensor::SCA_ISensor(SCA_IObject* gameobj,
class SCA_EventManager* eventmgr,
PyTypeObject* T ) :
- SCA_ILogicBrick(gameobj,T),
- m_triggered(false)
+ SCA_ILogicBrick(gameobj,T)
{
m_links = 0;
m_suspended = false;
m_invert = false;
m_level = false;
+ m_tap = false;
m_reset = false;
m_pos_ticks = 0;
m_neg_ticks = 0;
m_pos_pulsemode = false;
m_neg_pulsemode = false;
m_pulse_frequency = 0;
+ m_state = false;
+ m_prev_state = false;
m_eventmgr = eventmgr;
}
@@ -75,6 +77,12 @@ SCA_ISensor::~SCA_ISensor()
// intentionally empty
}
+void SCA_ISensor::ProcessReplica()
+{
+ SCA_ILogicBrick::ProcessReplica();
+ m_linkedcontrollers.clear();
+}
+
bool SCA_ISensor::IsPositiveTrigger() {
bool result = false;
@@ -104,9 +112,13 @@ void SCA_ISensor::SetLevel(bool lvl) {
m_level = lvl;
}
+void SCA_ISensor::SetTap(bool tap) {
+ m_tap = tap;
+}
+
double SCA_ISensor::GetNumber() {
- return IsPositiveTrigger();
+ return GetState();
}
void SCA_ISensor::Suspend() {
@@ -143,27 +155,80 @@ void SCA_ISensor::RegisterToManager()
{
// sensor is just activated, initialize it
Init();
- m_newControllers.erase(m_newControllers.begin(), m_newControllers.end());
+ m_state = false;
m_eventmgr->RegisterSensor(this);
}
+void SCA_ISensor::LinkToController(SCA_IController* controller)
+{
+ m_linkedcontrollers.push_back(controller);
+}
+
+void SCA_ISensor::UnlinkController(SCA_IController* controller)
+{
+ std::vector<class SCA_IController*>::iterator contit;
+ for (contit = m_linkedcontrollers.begin();!(contit==m_linkedcontrollers.end());++contit)
+ {
+ if ((*contit) == controller)
+ {
+ *contit = m_linkedcontrollers.back();
+ m_linkedcontrollers.pop_back();
+ return;
+ }
+ }
+ printf("Missing link from sensor %s:%s to controller %s:%s\n",
+ m_gameobj->GetName().ReadPtr(), GetName().ReadPtr(),
+ controller->GetParent()->GetName().ReadPtr(), controller->GetName().ReadPtr());
+}
+
+void SCA_ISensor::UnlinkAllControllers()
+{
+ std::vector<class SCA_IController*>::iterator contit;
+ for (contit = m_linkedcontrollers.begin();!(contit==m_linkedcontrollers.end());++contit)
+ {
+ (*contit)->UnlinkSensor(this);
+ }
+ m_linkedcontrollers.clear();
+}
+
void SCA_ISensor::UnregisterToManager()
{
m_eventmgr->RemoveSensor(this);
+ m_links = 0;
+}
+
+void SCA_ISensor::ActivateControllers(class SCA_LogicManager* logicmgr)
+{
+ for(vector<SCA_IController*>::const_iterator c= m_linkedcontrollers.begin();
+ c!=m_linkedcontrollers.end();++c)
+ {
+ SCA_IController* contr = *c;
+ if (contr->IsActive())
+ logicmgr->AddTriggeredController(contr, this);
+ }
}
-void SCA_ISensor::Activate(class SCA_LogicManager* logicmgr, CValue* event)
+void SCA_ISensor::Activate(class SCA_LogicManager* logicmgr)
{
// calculate if a __triggering__ is wanted
// don't evaluate a sensor that is not connected to any controller
if (m_links && !m_suspended) {
- bool result = this->Evaluate(event);
+ bool result = this->Evaluate();
+ // store the state for the rest of the logic system
+ m_prev_state = m_state;
+ m_state = this->IsPositiveTrigger();
if (result) {
- logicmgr->AddActivatedSensor(this);
- // reset these counters so that pulse are synchronized with transition
- m_pos_ticks = 0;
- m_neg_ticks = 0;
+ // the sensor triggered this frame
+ if (m_state || !m_tap) {
+ ActivateControllers(logicmgr);
+ // reset these counters so that pulse are synchronized with transition
+ m_pos_ticks = 0;
+ m_neg_ticks = 0;
+ } else
+ {
+ result = false;
+ }
} else
{
/* First, the pulsing behaviour, if pulse mode is
@@ -172,41 +237,55 @@ void SCA_ISensor::Activate(class SCA_LogicManager* logicmgr, CValue* event)
if (m_pos_pulsemode) {
m_pos_ticks++;
if (m_pos_ticks > m_pulse_frequency) {
- if ( this->IsPositiveTrigger() )
+ if ( m_state )
{
- logicmgr->AddActivatedSensor(this);
+ ActivateControllers(logicmgr);
+ result = true;
}
m_pos_ticks = 0;
}
}
-
- if (m_neg_pulsemode)
+ // negative pulse doesn't make sense in tap mode, skip
+ if (m_neg_pulsemode && !m_tap)
{
m_neg_ticks++;
if (m_neg_ticks > m_pulse_frequency) {
- if (!this->IsPositiveTrigger() )
+ if (!m_state )
{
- logicmgr->AddActivatedSensor(this);
+ ActivateControllers(logicmgr);
+ result = true;
}
m_neg_ticks = 0;
}
}
}
- if (!m_newControllers.empty())
+ if (m_tap)
{
- if (!IsActive() && m_level)
+ // in tap mode: we send always a negative pulse immediately after a positive pulse
+ if (!result)
{
- // This level sensor is connected to at least one controller that was just made
- // active but it did not generate an event yet, do it now to those controllers only
- for (std::vector<SCA_IController*>::iterator ci=m_newControllers.begin();
- ci != m_newControllers.end(); ci++)
+ // the sensor did not trigger on this frame
+ if (m_prev_state)
{
- logicmgr->AddTriggeredController(*ci, this);
+ // but it triggered on previous frame => send a negative pulse
+ ActivateControllers(logicmgr);
+ result = true;
}
+ // in any case, absence of trigger means sensor off
+ m_state = false;
+ }
+ }
+ if (!result && m_level)
+ {
+ // This level sensor is connected to at least one controller that was just made
+ // active but it did not generate an event yet, do it now to those controllers only
+ for(vector<SCA_IController*>::const_iterator c= m_linkedcontrollers.begin();
+ c!=m_linkedcontrollers.end();++c)
+ {
+ SCA_IController* contr = *c;
+ if (contr->IsJustActivated())
+ logicmgr->AddTriggeredController(contr, this);
}
- // clear the list. Instead of using clear, which also release the memory,
- // use erase, which keeps the memory available for next time.
- m_newControllers.erase(m_newControllers.begin(), m_newControllers.end());
}
}
}
@@ -221,7 +300,7 @@ const char SCA_ISensor::IsPositive_doc[] =
PyObject* SCA_ISensor::PyIsPositive()
{
ShowDeprecationWarning("isPositive()", "the read-only positive property");
- int retval = IsPositiveTrigger();
+ int retval = GetState();
return PyInt_FromLong(retval);
}
@@ -385,6 +464,7 @@ KX_PYMETHODDEF_DOC_NOARGS(SCA_ISensor, reset,
"\tThe sensor is put in its initial state as if it was just activated.\n")
{
Init();
+ m_prev_state = false;
Py_RETURN_NONE;
}
@@ -393,8 +473,13 @@ KX_PYMETHODDEF_DOC_NOARGS(SCA_ISensor, reset,
/* ----------------------------------------------- */
PyTypeObject SCA_ISensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_ISensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -453,18 +538,25 @@ PyAttributeDef SCA_ISensor::Attributes[] = {
KX_PYATTRIBUTE_BOOL_RW("useNegPulseMode",SCA_ISensor,m_neg_pulsemode),
KX_PYATTRIBUTE_INT_RW("frequency",0,100000,true,SCA_ISensor,m_pulse_frequency),
KX_PYATTRIBUTE_BOOL_RW("invert",SCA_ISensor,m_invert),
- KX_PYATTRIBUTE_BOOL_RW("level",SCA_ISensor,m_level),
+ KX_PYATTRIBUTE_BOOL_RW_CHECK("level",SCA_ISensor,m_level,pyattr_check_level),
+ KX_PYATTRIBUTE_BOOL_RW_CHECK("tap",SCA_ISensor,m_tap,pyattr_check_tap),
KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, pyattr_get_triggered),
KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, pyattr_get_positive),
+ //KX_PYATTRIBUTE_TODO("links"),
+ //KX_PYATTRIBUTE_TODO("posTicks"),
+ //KX_PYATTRIBUTE_TODO("negTicks"),
{ NULL } //Sentinel
};
-PyObject*
-SCA_ISensor::py_getattro(PyObject *attr)
+PyObject* SCA_ISensor::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_ILogicBrick);
}
+PyObject* SCA_ISensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ILogicBrick);
+}
+
int SCA_ISensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ILogicBrick);
@@ -482,7 +574,23 @@ PyObject* SCA_ISensor::pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_D
PyObject* SCA_ISensor::pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
- return PyInt_FromLong(self->IsPositiveTrigger());
+ return PyInt_FromLong(self->GetState());
+}
+
+int SCA_ISensor::pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ if (self->m_level)
+ self->m_tap = false;
+ return 0;
+}
+
+int SCA_ISensor::pyattr_check_tap(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ if (self->m_tap)
+ self->m_level = false;
+ return 0;
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_ISensor.h b/source/gameengine/GameLogic/SCA_ISensor.h
index 6b1c8cca104..9bbd6ed41e4 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.h
+++ b/source/gameengine/GameLogic/SCA_ISensor.h
@@ -32,18 +32,22 @@
#ifndef __SCA_ISENSOR
#define __SCA_ISENSOR
-#include "SCA_ILogicBrick.h"
+#include "SCA_IController.h"
#include <vector>
/**
* Interface Class for all logic Sensors. Implements
- * pulsemode,pulsefrequency */
+ * pulsemode,pulsefrequency
+ * Use of SG_DList element: link sensors to their respective event manager
+ * Head: SCA_EventManager::m_sensors
+ * Use of SG_QList element: not used
+ */
class SCA_ISensor : public SCA_ILogicBrick
{
Py_Header;
+protected:
class SCA_EventManager* m_eventmgr;
- bool m_triggered;
/** Pulse positive pulses? */
bool m_pos_pulsemode;
@@ -66,6 +70,9 @@ class SCA_ISensor : public SCA_ILogicBrick
/** detect level instead of edge*/
bool m_level;
+ /** tap mode */
+ bool m_tap;
+
/** sensor has been reset */
bool m_reset;
@@ -75,10 +82,24 @@ class SCA_ISensor : public SCA_ILogicBrick
/** number of connections to controller */
int m_links;
- /** list of controllers that have just activated this sensor because of a state change */
- std::vector<class SCA_IController*> m_newControllers;
+ /** current sensor state */
+ bool m_state;
+
+ /** previous state (for tap option) */
+ bool m_prev_state;
+
+ std::vector<class SCA_IController*> m_linkedcontrollers;
public:
+
+ enum sensortype {
+ ST_NONE = 0,
+ ST_TOUCH,
+ ST_NEAR,
+ ST_RADAR,
+ // to be updated as needed
+ };
+
SCA_ISensor(SCA_IObject* gameobj,
class SCA_EventManager* eventmgr,
PyTypeObject* T );;
@@ -89,8 +110,8 @@ public:
/* an implementation on this level. It requires an evaluate on the lower */
/* level of individual sensors. Mapping the old activate()s is easy. */
/* The IsPosTrig() also has to change, to keep things consistent. */
- void Activate(class SCA_LogicManager* logicmgr,CValue* event);
- virtual bool Evaluate(CValue* event) = 0;
+ void Activate(class SCA_LogicManager* logicmgr);
+ virtual bool Evaluate() = 0;
virtual bool IsPositiveTrigger();
virtual void Init();
@@ -109,23 +130,40 @@ public:
void SetInvert(bool inv);
/** set the level detection on or off */
void SetLevel(bool lvl);
+ void SetTap(bool tap);
virtual void RegisterToManager();
virtual void UnregisterToManager();
+ void ReserveController(int num)
+ {
+ m_linkedcontrollers.reserve(num);
+ }
+ void LinkToController(SCA_IController* controller);
+ void UnlinkController(SCA_IController* controller);
+ void UnlinkAllControllers();
+ void ActivateControllers(class SCA_LogicManager* logicmgr);
+
+ virtual void ProcessReplica();
virtual double GetNumber();
+ virtual sensortype GetSensorType() { return ST_NONE; }
+
/** Stop sensing for a while. */
void Suspend();
/** Is this sensor switched off? */
bool IsSuspended();
+ /** get the state of the sensor: positive or negative */
+ bool GetState()
+ {
+ return m_state;
+ }
+
/** Resume sensing. */
void Resume();
- void AddNewController(class SCA_IController* controller)
- { m_newControllers.push_back(controller); }
void ClrLink()
{ m_links = 0; }
void IncLink()
@@ -137,6 +175,7 @@ public:
/* Python functions: */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->
@@ -157,6 +196,8 @@ public:
static PyObject* pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_check_tap(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
#endif //__SCA_ISENSOR
diff --git a/source/gameengine/GameLogic/SCA_JoystickManager.cpp b/source/gameengine/GameLogic/SCA_JoystickManager.cpp
index f3ce549a637..ff8f3b1c81f 100644
--- a/source/gameengine/GameLogic/SCA_JoystickManager.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickManager.cpp
@@ -59,20 +59,21 @@ SCA_JoystickManager::~SCA_JoystickManager()
void SCA_JoystickManager::NextFrame(double curtime,double deltatime)
{
- if (m_sensors.size()==0) {
+ if (m_sensors.Empty()) {
return;
}
else {
- set<SCA_ISensor*>::iterator it;
+ ;
#ifndef DISABLE_SDL
SCA_Joystick::HandleEvents(); /* Handle all SDL Joystick events */
#endif
- for (it = m_sensors.begin(); it != m_sensors.end(); it++)
+ SG_DList::iterator<SCA_JoystickSensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- SCA_JoystickSensor* joysensor = (SCA_JoystickSensor*)(*it);
+ SCA_JoystickSensor* joysensor = *it;
if(!joysensor->IsSuspended())
{
- joysensor->Activate(m_logicmgr, NULL);
+ joysensor->Activate(m_logicmgr);
}
}
}
diff --git a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
index 1c601eded81..336529667d7 100644
--- a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
@@ -87,7 +87,7 @@ CValue* SCA_JoystickSensor::GetReplica()
{
SCA_JoystickSensor* replica = new SCA_JoystickSensor(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->Init();
return replica;
}
@@ -102,7 +102,7 @@ bool SCA_JoystickSensor::IsPositiveTrigger()
}
-bool SCA_JoystickSensor::Evaluate(CValue* event)
+bool SCA_JoystickSensor::Evaluate()
{
SCA_Joystick *js = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
bool result = false;
@@ -198,33 +198,20 @@ bool SCA_JoystickSensor::Evaluate(CValue* event)
case KX_JOYSENSORMODE_HAT:
{
/* what is what!
- numberof = m_hat -- max 2
+ numberof = m_hat -- max 4
direction= m_hatf -- max 12
*/
if (!js->IsTrigHat() && !reset) /* No events from SDL? - dont bother */
return false;
- if(m_hat == 1){
- if(js->aHatIsPositive(m_hatf)){
- m_istrig = 1;
- result = true;
- }else{
- if(m_istrig){
- m_istrig = 0;
- result = true;
- }
- }
- }
- if(m_hat == 2){
- if(js->aHatIsPositive(m_hatf)){
- m_istrig = 1;
+ if((m_bAllEvents && js->GetHat(m_hat-1)) || js->aHatIsPositive(m_hat-1, m_hatf)) {
+ m_istrig = 1;
+ result = true;
+ }else{
+ if(m_istrig){
+ m_istrig = 0;
result = true;
- }else{
- if(m_istrig){
- m_istrig = 0;
- result = true;
- }
}
}
break;
@@ -266,8 +253,13 @@ bool SCA_JoystickSensor::isValid(SCA_JoystickSensor::KX_JOYSENSORMODE m)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_JoystickSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_JoystickSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -326,11 +318,13 @@ PyAttributeDef SCA_JoystickSensor::Attributes[] = {
KX_PYATTRIBUTE_INT_LIST_RW_CHECK("hat",0,12,true,SCA_JoystickSensor,m_hat,2,CheckHat),
KX_PYATTRIBUTE_RO_FUNCTION("axisValues", SCA_JoystickSensor, pyattr_get_axis_values),
KX_PYATTRIBUTE_RO_FUNCTION("axisSingle", SCA_JoystickSensor, pyattr_get_axis_single),
+ KX_PYATTRIBUTE_RO_FUNCTION("hatValues", SCA_JoystickSensor, pyattr_get_hat_values),
+ KX_PYATTRIBUTE_RO_FUNCTION("hatSingle", SCA_JoystickSensor, pyattr_get_hat_single),
KX_PYATTRIBUTE_RO_FUNCTION("numAxis", SCA_JoystickSensor, pyattr_get_num_axis),
KX_PYATTRIBUTE_RO_FUNCTION("numButtons", SCA_JoystickSensor, pyattr_get_num_buttons),
KX_PYATTRIBUTE_RO_FUNCTION("numHats", SCA_JoystickSensor, pyattr_get_num_hats),
KX_PYATTRIBUTE_RO_FUNCTION("connected", SCA_JoystickSensor, pyattr_get_connected),
-
+ //KX_PYATTRIBUTE_TODO("events"),
{ NULL } //Sentinel
};
@@ -339,6 +333,10 @@ PyObject* SCA_JoystickSensor::py_getattro(PyObject *attr)
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_JoystickSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_JoystickSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);
@@ -394,6 +392,8 @@ PyObject* SCA_JoystickSensor::PySetAxis( PyObject* args ) {
}
m_axis = axis;
m_axisf = axisflag;
+
+ CheckAxis((void *)this, NULL); /* clamp values */
Py_RETURN_NONE;
}
@@ -535,6 +535,8 @@ PyObject* SCA_JoystickSensor::PySetHat( PyObject* args ) {
}
m_hat = hat;
m_hatf = hatflag;
+
+ CheckHat((void *)this, NULL); /* clamp values */
Py_RETURN_NONE;
}
@@ -608,6 +610,29 @@ PyObject* SCA_JoystickSensor::pyattr_get_axis_single(void *self_v, const KX_PYAT
return PyInt_FromLong(joy->GetAxisPosition(self->m_axis-1));
}
+PyObject* SCA_JoystickSensor::pyattr_get_hat_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+
+ int hat_index= joy->GetNumberOfHats();
+ PyObject *list= PyList_New(hat_index);
+
+ while(hat_index--) {
+ PyList_SET_ITEM(list, hat_index, PyInt_FromLong(joy->GetHat(hat_index)));
+ }
+
+ return list;
+}
+
+PyObject* SCA_JoystickSensor::pyattr_get_hat_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+
+ return PyInt_FromLong(joy->GetHat(self->m_hat-1));
+}
+
PyObject* SCA_JoystickSensor::pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
diff --git a/source/gameengine/GameLogic/SCA_JoystickSensor.h b/source/gameengine/GameLogic/SCA_JoystickSensor.h
index cf3e7e74414..e6a1d2eef32 100644
--- a/source/gameengine/GameLogic/SCA_JoystickSensor.h
+++ b/source/gameengine/GameLogic/SCA_JoystickSensor.h
@@ -30,6 +30,7 @@
#define __JOYSENSOR_H
#include "SCA_ISensor.h"
+#include "./Joystick/SCA_JoystickDefines.h"
class SCA_JoystickSensor :public SCA_ISensor
{
@@ -37,7 +38,7 @@ class SCA_JoystickSensor :public SCA_ISensor
class SCA_JoystickManager* m_pJoystickMgr;
/**
- * Axis 1-or-2, MUST be followed by m_axisf
+ * Axis 1-JOYAXIS_MAX, MUST be followed by m_axisf
*/
int m_axis;
/**
@@ -53,11 +54,11 @@ class SCA_JoystickSensor :public SCA_ISensor
*/
int m_buttonf;
/**
- * The actual hat. MUST be followed by m_hatf
+ * The actual hat 1-JOYHAT_MAX. MUST be followed by m_hatf
*/
int m_hat;
/**
- * Flag to find direction 0-11, MUST be an int
+ * Flag to find direction 1-12, MUST be an int
*/
int m_hatf;
/**
@@ -110,7 +111,7 @@ public:
virtual ~SCA_JoystickSensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void Init();
@@ -123,6 +124,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* Joystick Index */
@@ -151,6 +153,8 @@ public:
static PyObject* pyattr_get_axis_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_axis_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_hat_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_hat_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_num_buttons(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_num_hats(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
@@ -163,8 +167,8 @@ public:
SCA_JoystickSensor* sensor = reinterpret_cast<SCA_JoystickSensor*>(self);
if (sensor->m_axis < 1)
sensor->m_axis = 1;
- else if (sensor->m_axis > 2)
- sensor->m_axis = 2;
+ else if (sensor->m_axis > JOYAXIS_MAX)
+ sensor->m_axis = JOYAXIS_MAX;
return 0;
}
static int CheckHat(void *self, const PyAttributeDef*)
@@ -172,8 +176,8 @@ public:
SCA_JoystickSensor* sensor = reinterpret_cast<SCA_JoystickSensor*>(self);
if (sensor->m_hat < 1)
sensor->m_hat = 1;
- else if (sensor->m_hat > 2)
- sensor->m_hat = 2;
+ else if (sensor->m_hat > JOYHAT_MAX)
+ sensor->m_hat = JOYHAT_MAX;
return 0;
}
diff --git a/source/gameengine/GameLogic/SCA_KeyboardManager.cpp b/source/gameengine/GameLogic/SCA_KeyboardManager.cpp
index 6a96442b124..279adab94d8 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardManager.cpp
+++ b/source/gameengine/GameLogic/SCA_KeyboardManager.cpp
@@ -62,12 +62,11 @@ void SCA_KeyboardManager::NextFrame()
{
//const SCA_InputEvent& event = GetEventValue(SCA_IInputDevice::KX_EnumInputs inputcode)=0;
// cerr << "SCA_KeyboardManager::NextFrame"<< endl;
- set<SCA_ISensor*>::iterator it;
- for (it=m_sensors.begin(); it != m_sensors.end(); it++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- (*it)->Activate(m_logicmanager,NULL);
+ (*it)->Activate(m_logicmanager);
}
-
}
bool SCA_KeyboardManager::IsPressed(SCA_IInputDevice::KX_EnumInputs inputcode)
diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
index c946156283f..f8ee8ed8b41 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
@@ -85,7 +85,7 @@ CValue* SCA_KeyboardSensor::GetReplica()
{
SCA_KeyboardSensor* replica = new SCA_KeyboardSensor(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->Init();
return replica;
}
@@ -118,7 +118,7 @@ bool SCA_KeyboardSensor::TriggerOnAllKeys()
-bool SCA_KeyboardSensor::Evaluate(CValue* eventval)
+bool SCA_KeyboardSensor::Evaluate()
{
bool result = false;
bool reset = m_reset && m_level;
@@ -195,6 +195,9 @@ bool SCA_KeyboardSensor::Evaluate(CValue* eventval)
}
}
}
+ if (m_tap)
+ // special case for tap mode: only generate event for new activation
+ result = false;
}
@@ -612,8 +615,13 @@ KX_PYMETHODDEF_DOC_O(SCA_KeyboardSensor, getKeyStatus,
/* ------------------------------------------------------------------------- */
PyTypeObject SCA_KeyboardSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_KeyboardSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -664,12 +672,15 @@ PyAttributeDef SCA_KeyboardSensor::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject*
-SCA_KeyboardSensor::py_getattro(PyObject *attr)
+PyObject* SCA_KeyboardSensor::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_KeyboardSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_KeyboardSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);
@@ -691,7 +702,7 @@ PyObject* SCA_KeyboardSensor::pyattr_get_events(void *self_v, const KX_PYATTRIBU
{
PyObject* keypair = PyList_New(2);
PyList_SET_ITEM(keypair,0,PyInt_FromLong(i));
- PyList_SetItem(keypair,1,PyInt_FromLong(inevent.m_status));
+ PyList_SET_ITEM(keypair,1,PyInt_FromLong(inevent.m_status));
PyList_Append(resultlist,keypair);
}
}
diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.h b/source/gameengine/GameLogic/SCA_KeyboardSensor.h
index 073b3e6dbe0..033225cd9be 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardSensor.h
+++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.h
@@ -102,7 +102,7 @@ public:
short int GetHotkey();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
bool TriggerOnAllKeys();
@@ -111,6 +111,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->
diff --git a/source/gameengine/GameLogic/SCA_LogicManager.cpp b/source/gameengine/GameLogic/SCA_LogicManager.cpp
index b584b37180f..83271288154 100644
--- a/source/gameengine/GameLogic/SCA_LogicManager.cpp
+++ b/source/gameengine/GameLogic/SCA_LogicManager.cpp
@@ -49,37 +49,14 @@ SCA_LogicManager::SCA_LogicManager()
SCA_LogicManager::~SCA_LogicManager()
{
- /* AddRef() is not used when the objects are added to m_mapStringToGameObjects
- so Release() should not be used either. The memory leak big is fixed
- in BL_ConvertBlenderObjects()
-
- int numgameobj = m_mapStringToGameObjects.size();
- for (int i = 0; i < numgameobj; i++)
- {
- CValue** gameobjptr = m_mapStringToGameObjects.at(i);
- assert(gameobjptr);
- if (gameobjptr)
- (*gameobjptr)->Release();
-
- }
- */
- /*for (int i=0;i<m_sensorcontrollermap.size();i++)
- {
- vector<SCA_IController*>* controllerarray = *(m_sensorcontrollermap[i]);
- delete controllerarray;
- }
- */
- for (vector<SCA_EventManager*>::iterator it = m_eventmanagers.begin();!(it==m_eventmanagers.end());it++)
+ for (vector<SCA_EventManager*>::iterator it = m_eventmanagers.begin();!(it==m_eventmanagers.end());++it)
{
delete (*it);
}
m_eventmanagers.clear();
- m_sensorcontrollermapje.clear();
- m_removedActuators.clear();
- m_activeActuators.clear();
+ assert(m_activeActuators.Empty());
}
-
/*
// this kind of fixes bug 398 but breakes games, so better leave it out for now.
// a removed object's gameobject (and logicbricks and stuff) didn't get released
@@ -171,12 +148,7 @@ void* SCA_LogicManager::FindBlendObjByGameMeshName(const STR_String& gamemeshnam
void SCA_LogicManager::RemoveSensor(SCA_ISensor* sensor)
{
- controllerlist contlist = m_sensorcontrollermapje[sensor];
- for (controllerlist::const_iterator c= contlist.begin();!(c==contlist.end());c++)
- {
- (*c)->UnlinkSensor(sensor);
- }
- m_sensorcontrollermapje.erase(sensor);
+ sensor->UnlinkAllControllers();
sensor->UnregisterToManager();
}
@@ -184,35 +156,22 @@ void SCA_LogicManager::RemoveController(SCA_IController* controller)
{
controller->UnlinkAllSensors();
controller->UnlinkAllActuators();
- std::map<SCA_ISensor*,controllerlist>::iterator sit;
- for (sit = m_sensorcontrollermapje.begin();!(sit==m_sensorcontrollermapje.end());++sit)
- {
- (*sit).second.remove(controller);
- }
+ controller->Deactivate();
}
-void SCA_LogicManager::RemoveDestroyedActuator(SCA_IActuator* actuator)
+void SCA_LogicManager::RemoveActuator(SCA_IActuator* actuator)
{
- m_removedActuators.push_back(SmartActuatorPtr(actuator,0));
- // take care that no controller can use this actuator again !
-
- std::map<SCA_ISensor*,controllerlist>::const_iterator sit;
- for (sit = m_sensorcontrollermapje.begin();!(sit==m_sensorcontrollermapje.end());++sit)
- {
- controllerlist contlist = (*sit).second;
- for (list<SCA_IController*>::const_iterator c= contlist.begin();!(c==contlist.end());c++)
- {
- (*c)->UnlinkActuator(actuator);
- }
- }
+ actuator->UnlinkAllControllers();
+ actuator->Deactivate();
+ actuator->SetActive(false);
}
void SCA_LogicManager::RegisterToSensor(SCA_IController* controller,SCA_ISensor* sensor)
{
- m_sensorcontrollermapje[sensor].push_back(controller);
+ sensor->LinkToController(controller);
controller->LinkToSensor(sensor);
}
@@ -220,6 +179,7 @@ void SCA_LogicManager::RegisterToSensor(SCA_IController* controller,SCA_ISensor*
void SCA_LogicManager::RegisterToActuator(SCA_IController* controller,SCA_IActuator* actua)
{
+ actua->LinkToController(controller);
controller->LinkToActuator(actua);
}
@@ -230,88 +190,62 @@ void SCA_LogicManager::BeginFrame(double curtime, double fixedtime)
for (vector<SCA_EventManager*>::const_iterator ie=m_eventmanagers.begin(); !(ie==m_eventmanagers.end()); ie++)
(*ie)->NextFrame(curtime, fixedtime);
- // for this frame, look up for activated sensors, and build the collection of triggered controllers
- // int numsensors = this->m_activatedsensors.size(); /*unused*/
-
- for (vector<SCA_ISensor*>::const_iterator is=m_activatedsensors.begin();
- !(is==m_activatedsensors.end());is++)
+ for(SG_QList* obj = (SG_QList*)m_triggeredControllerSet.Remove();
+ obj != NULL;
+ obj = (SG_QList*)m_triggeredControllerSet.Remove())
{
- SCA_ISensor* sensor = *is;
- controllerlist contlist = m_sensorcontrollermapje[sensor];
- for (list<SCA_IController*>::const_iterator c= contlist.begin();
- !(c==contlist.end());c++)
+ for(SCA_IController* contr = (SCA_IController*)obj->QRemove();
+ contr != NULL;
+ contr = (SCA_IController*)obj->QRemove())
{
- SCA_IController* contr = *c;//controllerarray->at(c);
- if (contr->IsActive())
- {
- m_triggeredControllerSet.insert(SmartControllerPtr(contr,0));
- // So that the controller knows which sensor has activited it.
- // Only needed for the python controller though.
- if (contr->GetType() == &SCA_PythonController::Type)
- {
- SCA_PythonController* pythonController = (SCA_PythonController*)contr;
- pythonController->AddTriggeredSensor(sensor);
- }
- }
+ contr->Trigger(this);
+ contr->ClrJustActivated();
}
- //sensor->SetActive(false);
}
-
-
- // int numtriggered = triggeredControllerSet.size(); /*unused*/
- for (set<SmartControllerPtr>::iterator tit=m_triggeredControllerSet.begin();
- !(tit==m_triggeredControllerSet.end());tit++)
- {
- (*tit)->Trigger(this);
- }
- m_triggeredControllerSet.clear();
}
void SCA_LogicManager::UpdateFrame(double curtime, bool frame)
{
- vector<SmartActuatorPtr>::iterator ra;
- for (ra = m_removedActuators.begin(); !(ra == m_removedActuators.end()); ra++)
- {
- m_activeActuators.erase(*ra);
- (*ra)->SetActive(false);
- }
- m_removedActuators.clear();
-
- // About to run actuators, but before update the sensors for those which depends on actuators
for (vector<SCA_EventManager*>::const_iterator ie=m_eventmanagers.begin(); !(ie==m_eventmanagers.end()); ie++)
(*ie)->UpdateFrame();
- for (set<SmartActuatorPtr>::iterator ia = m_activeActuators.begin();!(ia==m_activeActuators.end());ia++)
+ SG_DList::iterator<SG_QList> io(m_activeActuators);
+ for (io.begin(); !io.end(); )
{
- //SCA_IActuator* actua = *ia;
- if (!(*ia)->Update(curtime, frame))
+ SG_QList* ahead = *io;
+ // increment now so that we can remove the current element
+ ++io;
+ SG_QList::iterator<SCA_IActuator> ia(*ahead);
+ for (ia.begin(); !ia.end(); )
{
- //*ia = m_activeactuators.back();
- m_removedActuators.push_back(*ia);
-
- (*ia)->SetActive(false);
- //m_activeactuators.pop_back();
- } else if ((*ia)->IsNoLink())
+ SCA_IActuator* actua = *ia;
+ // increment first to allow removal of inactive actuators.
+ ++ia;
+ if (!actua->Update(curtime, frame))
+ {
+ // this actuator is not active anymore, remove
+ actua->QDelink();
+ actua->SetActive(false);
+ } else if (actua->IsNoLink())
+ {
+ // This actuator has no more links but it still active
+ // make sure it will get a negative event on next frame to stop it
+ // Do this check after Update() rather than before to make sure
+ // that all the actuators that are activated at same time than a state
+ // actuator have a chance to execute.
+ bool event = false;
+ actua->RemoveAllEvents();
+ actua->AddEvent(event);
+ }
+ }
+ if (ahead->QEmpty())
{
- // This actuator has no more links but it still active
- // make sure it will get a negative event on next frame to stop it
- // Do this check after Update() rather than before to make sure
- // that all the actuators that are activated at same time than a state
- // actuator have a chance to execute.
- CValue* event = new CBoolValue(false);
- (*ia)->RemoveAllEvents();
- (*ia)->AddEvent(event);
+ // no more active controller, remove from main list
+ ahead->Delink();
}
}
-
- for ( ra = m_removedActuators.begin(); !(ra == m_removedActuators.end()); ra++)
- {
- m_activeActuators.erase(*ra);
- (*ra)->SetActive(false);
- }
- m_removedActuators.clear();
}
@@ -360,39 +294,17 @@ void SCA_LogicManager::RegisterActionName(const STR_String& actname,void* action
void SCA_LogicManager::EndFrame()
{
- for (vector<SCA_ISensor*>::const_iterator is=m_activatedsensors.begin();
- !(is==m_activatedsensors.end());is++)
- {
- SCA_ISensor* sensor = *is;
- sensor->SetActive(false);
- }
- m_activatedsensors.clear();
-
for (vector<SCA_EventManager*>::const_iterator ie=m_eventmanagers.begin();
!(ie==m_eventmanagers.end());ie++)
{
(*ie)->EndFrame();
}
-
-
}
-
-void SCA_LogicManager::AddActivatedSensor(SCA_ISensor* sensor)
-{
- // each frame, only add sensor once, and to avoid a seek, or bloated container
- // hold a flag in each sensor, with the 'framenr'
- if (!sensor->IsActive())
- {
- sensor->SetActive(true);
- m_activatedsensors.push_back(sensor);
- }
-}
-
void SCA_LogicManager::AddTriggeredController(SCA_IController* controller, SCA_ISensor* sensor)
{
- m_triggeredControllerSet.insert(SmartControllerPtr(controller,0));
+ controller->Activate(m_triggeredControllerSet);
// so that the controller knows which sensor has activited it
// only needed for python controller
if (controller->GetType() == &SCA_PythonController::Type)
@@ -402,19 +314,6 @@ void SCA_LogicManager::AddTriggeredController(SCA_IController* controller, SCA_I
}
}
-
-void SCA_LogicManager::AddActiveActuator(SCA_IActuator* actua,CValue* event)
-{
- if (!actua->IsActive())
- {
- actua->SetActive(true);
- m_activeActuators.insert(SmartActuatorPtr(actua,0));
- }
- actua->AddEvent(event->AddRef());
-}
-
-
-
SCA_EventManager* SCA_LogicManager::FindEventManager(int eventmgrtype)
{
// find an eventmanager of a certain type
@@ -432,109 +331,3 @@ SCA_EventManager* SCA_LogicManager::FindEventManager(int eventmgrtype)
}
return eventmgr;
}
-
-
-
-SmartActuatorPtr::SmartActuatorPtr(const SmartActuatorPtr& other)
-{
- this->m_actuator = other.m_actuator;
- this->m_actuator->AddRef();
-}
-
-
-
-SmartActuatorPtr::SmartActuatorPtr(SCA_IActuator* actua,int dummy)
-: m_actuator(actua)
-{
- actua->AddRef();
-}
-
-
-
-SmartActuatorPtr::~SmartActuatorPtr()
-{
- m_actuator->Release();
-}
-
-
-
-bool SmartActuatorPtr::operator <(const SmartActuatorPtr& other) const
-{
-
- return m_actuator->LessComparedTo(*other);
-}
-
-
-
-bool SmartActuatorPtr::operator ==(const SmartActuatorPtr& other) const
-{
- bool result2 = other->LessComparedTo(m_actuator);
- return (m_actuator->LessComparedTo(*other) && result2);
-}
-
-
-
-SCA_IActuator* SmartActuatorPtr::operator->() const
-{
- return m_actuator;
-}
-
-
-
-SCA_IActuator* SmartActuatorPtr::operator*() const
-{
- return m_actuator;
-}
-
-
-
-SmartControllerPtr::SmartControllerPtr(const SmartControllerPtr& copy)
-{
- this->m_controller = copy.m_controller;
- this->m_controller->AddRef();
-}
-
-
-
-SmartControllerPtr::SmartControllerPtr(SCA_IController* contr,int dummy)
-: m_controller(contr)
-{
- m_controller->AddRef();
-}
-
-
-
-SmartControllerPtr::~SmartControllerPtr()
-{
- m_controller->Release();
-}
-
-
-
-bool SmartControllerPtr::operator <(const SmartControllerPtr& other) const
-{
- return m_controller->LessComparedTo(*other);
-}
-
-
-
-bool SmartControllerPtr::operator ==(const SmartControllerPtr& other) const
-{
- return (m_controller->LessComparedTo(*other) && other->LessComparedTo(m_controller));
-}
-
-
-
-SCA_IController* SmartControllerPtr::operator->() const
-{
- return m_controller;
-}
-
-
-
-SCA_IController* SmartControllerPtr::operator*() const
-{
- return m_controller;
-}
-
-
diff --git a/source/gameengine/GameLogic/SCA_LogicManager.h b/source/gameengine/GameLogic/SCA_LogicManager.h
index 50383879d8f..53e75e1eaee 100644
--- a/source/gameengine/GameLogic/SCA_LogicManager.h
+++ b/source/gameengine/GameLogic/SCA_LogicManager.h
@@ -43,11 +43,13 @@
#include "GEN_Map.h"
#include "STR_HashedString.h"
#include "Value.h"
+#include "SG_QList.h"
#include "KX_HashedPtr.h"
using namespace std;
-typedef list<class SCA_IController*> controllerlist;
+typedef std::list<class SCA_IController*> controllerlist;
+typedef std::map<class SCA_ISensor*,controllerlist > sensormap_t;
/**
* This manager handles sensor, controllers and actuators.
@@ -63,45 +65,19 @@ typedef list<class SCA_IController*> controllerlist;
*/
#include "SCA_ILogicBrick.h"
+#include "SCA_IActuator.h"
-// todo: make this into a template, but first I want to think about what exactly to put in
-class SmartActuatorPtr
-{
- SCA_IActuator* m_actuator;
-public:
- SmartActuatorPtr(SCA_IActuator* actua,int dummy);
- SmartActuatorPtr(const SmartActuatorPtr& other);
- virtual ~SmartActuatorPtr();
- bool operator <(const SmartActuatorPtr& other) const;
- bool operator ==(const SmartActuatorPtr& other) const;
- SCA_IActuator* operator->() const;
- SCA_IActuator* operator*() const;
-
-};
-
-class SmartControllerPtr
-{
- SCA_IController* m_controller;
-public:
- SmartControllerPtr(const SmartControllerPtr& copy);
- SmartControllerPtr(SCA_IController* contr,int dummy);
- virtual ~SmartControllerPtr();
- bool operator <(const SmartControllerPtr& other) const;
- bool operator ==(const SmartControllerPtr& other) const;
- SCA_IController* operator->() const;
- SCA_IController* operator*() const;
-
-};
class SCA_LogicManager
{
vector<class SCA_EventManager*> m_eventmanagers;
- vector<class SCA_ISensor*> m_activatedsensors;
- set<class SmartActuatorPtr> m_activeActuators;
- set<class SmartControllerPtr> m_triggeredControllerSet;
-
- map<SCA_ISensor*,controllerlist > m_sensorcontrollermapje;
+ // SG_DList: Head of objects having activated actuators
+ // element: SCA_IObject::m_activeActuators
+ SG_DList m_activeActuators;
+ // SG_DList: Head of objects having activated controllers
+ // element: SCA_IObject::m_activeControllers
+ SG_DList m_triggeredControllerSet;
// need to find better way for this
// also known as FactoryManager...
@@ -111,11 +87,10 @@ class SCA_LogicManager
GEN_Map<STR_HashedString,void*> m_map_gamemeshname_to_blendobj;
GEN_Map<CHashedPtr,void*> m_map_blendobj_to_gameobj;
-
- vector<SmartActuatorPtr> m_removedActuators;
public:
SCA_LogicManager();
virtual ~SCA_LogicManager();
+
//void SetKeyboardManager(SCA_KeyboardManager* keyboardmgr) { m_keyboardmgr=keyboardmgr;}
void RegisterEventManager(SCA_EventManager* eventmgr);
void RegisterToSensor(SCA_IController* controller,
@@ -126,8 +101,13 @@ public:
void BeginFrame(double curtime, double fixedtime);
void UpdateFrame(double curtime, bool frame);
void EndFrame();
- void AddActivatedSensor(SCA_ISensor* sensor);
- void AddActiveActuator(SCA_IActuator* sensor,class CValue* event);
+ void AddActiveActuator(SCA_IActuator* actua,bool event)
+ {
+ actua->SetActive(true);
+ actua->Activate(m_activeActuators);
+ actua->AddEvent(event);
+ }
+
void AddTriggeredController(SCA_IController* controller, SCA_ISensor* sensor);
SCA_EventManager* FindEventManager(int eventmgrtype);
@@ -138,7 +118,7 @@ public:
*/
void RemoveSensor(SCA_ISensor* sensor);
void RemoveController(SCA_IController* controller);
- void RemoveDestroyedActuator(SCA_IActuator* actuator);
+ void RemoveActuator(SCA_IActuator* actuator);
// for the scripting... needs a FactoryManager later (if we would have time... ;)
diff --git a/source/gameengine/GameLogic/SCA_MouseManager.cpp b/source/gameengine/GameLogic/SCA_MouseManager.cpp
index ca875dad07c..d407647cec3 100644
--- a/source/gameengine/GameLogic/SCA_MouseManager.cpp
+++ b/source/gameengine/GameLogic/SCA_MouseManager.cpp
@@ -75,8 +75,8 @@ void SCA_MouseManager::NextFrame()
{
if (m_mousedevice)
{
- set<SCA_ISensor*>::iterator it;
- for (it=m_sensors.begin(); it!=m_sensors.end(); it++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
SCA_MouseSensor* mousesensor = (SCA_MouseSensor*)(*it);
// (0,0) is the Upper Left corner in our local window
@@ -93,7 +93,7 @@ void SCA_MouseManager::NextFrame()
mousesensor->setX(mx);
mousesensor->setY(my);
- mousesensor->Activate(m_logicmanager,NULL);
+ mousesensor->Activate(m_logicmanager);
}
}
}
diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.cpp b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
index 4dbeb156e63..c5e1c3c0441 100644
--- a/source/gameengine/GameLogic/SCA_MouseSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
@@ -111,7 +111,7 @@ CValue* SCA_MouseSensor::GetReplica()
{
SCA_MouseSensor* replica = new SCA_MouseSensor(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->Init();
return replica;
@@ -144,7 +144,7 @@ SCA_IInputDevice::KX_EnumInputs SCA_MouseSensor::GetHotKey()
-bool SCA_MouseSensor::Evaluate(CValue* event)
+bool SCA_MouseSensor::Evaluate()
{
bool result = false;
bool reset = m_reset && m_level;
@@ -296,8 +296,13 @@ KX_PYMETHODDEF_DOC_O(SCA_MouseSensor, getButtonStatus,
/* ------------------------------------------------------------------------- */
PyTypeObject SCA_MouseSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_MouseSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -342,6 +347,10 @@ PyObject* SCA_MouseSensor::py_getattro(PyObject *attr)
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_MouseSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_MouseSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);
diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.h b/source/gameengine/GameLogic/SCA_MouseSensor.h
index 2d1c496029d..6d6302b514a 100644
--- a/source/gameengine/GameLogic/SCA_MouseSensor.h
+++ b/source/gameengine/GameLogic/SCA_MouseSensor.h
@@ -97,7 +97,7 @@ class SCA_MouseSensor : public SCA_ISensor
virtual ~SCA_MouseSensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual void Init();
virtual bool IsPositiveTrigger();
short int GetModeKey();
@@ -110,6 +110,7 @@ class SCA_MouseSensor : public SCA_ISensor
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->
diff --git a/source/gameengine/GameLogic/SCA_NANDController.cpp b/source/gameengine/GameLogic/SCA_NANDController.cpp
index 703c9c1bbaf..d27aea5e6f7 100644
--- a/source/gameengine/GameLogic/SCA_NANDController.cpp
+++ b/source/gameengine/GameLogic/SCA_NANDController.cpp
@@ -66,26 +66,19 @@ void SCA_NANDController::Trigger(SCA_LogicManager* logicmgr)
!(is==m_linkedsensors.end());is++)
{
SCA_ISensor* sensor = *is;
- if (!sensor->IsPositiveTrigger())
+ if (!sensor->GetState())
{
sensorresult = true;
break;
}
}
- CValue* newevent = new CBoolValue(sensorresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
- logicmgr->AddActiveActuator(actua,newevent);
+ SCA_IActuator* actua = *i;
+ logicmgr->AddActiveActuator(actua,sensorresult);
}
-
- // every actuator that needs the event, has a it's own reference to it now so
- // release it (so to be clear: if there is no actuator, it's deleted right now)
- newevent->Release();
-
}
@@ -94,7 +87,7 @@ CValue* SCA_NANDController::GetReplica()
{
CValue* replica = new SCA_NANDController(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -107,8 +100,13 @@ CValue* SCA_NANDController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_NANDController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_NANDController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -145,4 +143,8 @@ PyObject* SCA_NANDController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
+PyObject* SCA_NANDController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_NANDController.h b/source/gameengine/GameLogic/SCA_NANDController.h
index 11600914a1a..0ae0ff19745 100644
--- a/source/gameengine/GameLogic/SCA_NANDController.h
+++ b/source/gameengine/GameLogic/SCA_NANDController.h
@@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SCA_NORController.cpp b/source/gameengine/GameLogic/SCA_NORController.cpp
index 06acae5a81a..6c9141636b2 100644
--- a/source/gameengine/GameLogic/SCA_NORController.cpp
+++ b/source/gameengine/GameLogic/SCA_NORController.cpp
@@ -66,26 +66,19 @@ void SCA_NORController::Trigger(SCA_LogicManager* logicmgr)
!(is==m_linkedsensors.end());is++)
{
SCA_ISensor* sensor = *is;
- if (sensor->IsPositiveTrigger())
+ if (sensor->GetState())
{
sensorresult = false;
break;
}
}
- CValue* newevent = new CBoolValue(sensorresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
- logicmgr->AddActiveActuator(actua,newevent);
+ SCA_IActuator* actua = *i;
+ logicmgr->AddActiveActuator(actua,sensorresult);
}
-
- // every actuator that needs the event, has a it's own reference to it now so
- // release it (so to be clear: if there is no actuator, it's deleted right now)
- newevent->Release();
-
}
@@ -94,7 +87,7 @@ CValue* SCA_NORController::GetReplica()
{
CValue* replica = new SCA_NORController(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -107,8 +100,13 @@ CValue* SCA_NORController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_NORController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_NORController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -145,4 +143,8 @@ PyObject* SCA_NORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
+PyObject* SCA_NORController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_NORController.h b/source/gameengine/GameLogic/SCA_NORController.h
index fc814e28d37..06cbb70a489 100644
--- a/source/gameengine/GameLogic/SCA_NORController.h
+++ b/source/gameengine/GameLogic/SCA_NORController.h
@@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SCA_ORController.cpp b/source/gameengine/GameLogic/SCA_ORController.cpp
index 319ff04f776..42c0a67d657 100644
--- a/source/gameengine/GameLogic/SCA_ORController.cpp
+++ b/source/gameengine/GameLogic/SCA_ORController.cpp
@@ -60,7 +60,7 @@ CValue* SCA_ORController::GetReplica()
{
CValue* replica = new SCA_ORController(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -76,21 +76,16 @@ void SCA_ORController::Trigger(SCA_LogicManager* logicmgr)
while ( (!sensorresult) && (!(is==m_linkedsensors.end())) )
{
sensor = *is;
- if (sensor->IsPositiveTrigger()) sensorresult = true;
+ if (sensor->GetState()) sensorresult = true;
is++;
}
- CValue* newevent = new CBoolValue(sensorresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
- logicmgr->AddActiveActuator(actua,newevent);
+ SCA_IActuator* actua = *i;
+ logicmgr->AddActiveActuator(actua,sensorresult);
}
-
-
- newevent->Release();
}
/* ------------------------------------------------------------------------- */
@@ -99,8 +94,13 @@ void SCA_ORController::Trigger(SCA_LogicManager* logicmgr)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_ORController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_ORController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -138,4 +138,8 @@ PyObject* SCA_ORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
+PyObject* SCA_ORController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_ORController.h b/source/gameengine/GameLogic/SCA_ORController.h
index fdc81486e74..66f772c739e 100644
--- a/source/gameengine/GameLogic/SCA_ORController.h
+++ b/source/gameengine/GameLogic/SCA_ORController.h
@@ -50,6 +50,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
};
#endif //__KX_ORCONTROLLER
diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
index c4db723ee89..4faa4b55d4a 100644
--- a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
@@ -186,11 +186,6 @@ GetReplica() {
SCA_PropertyActuator* replica = new SCA_PropertyActuator(*this);
replica->ProcessReplica();
-
- // this will copy properties and so on...
-
- CValue::AddDataToReplica(replica);
-
return replica;
};
@@ -233,8 +228,13 @@ void SCA_PropertyActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_PropertyActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_PropertyActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -270,8 +270,9 @@ PyMethodDef SCA_PropertyActuator::Methods[] = {
};
PyAttributeDef SCA_PropertyActuator::Attributes[] = {
- KX_PYATTRIBUTE_STRING_RW_CHECK("property",0,100,false,SCA_PropertyActuator,m_propname,CheckProperty),
+ KX_PYATTRIBUTE_STRING_RW_CHECK("propName",0,100,false,SCA_PropertyActuator,m_propname,CheckProperty),
KX_PYATTRIBUTE_STRING_RW("value",0,100,false,SCA_PropertyActuator,m_exprtxt),
+ KX_PYATTRIBUTE_INT_RW("mode", KX_ACT_PROP_NODEF+1, KX_ACT_PROP_MAX-1, false, SCA_PropertyActuator, m_type), /* ATTR_TODO add constents to game logic dict */
{ NULL } //Sentinel
};
@@ -279,6 +280,10 @@ PyObject* SCA_PropertyActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* SCA_PropertyActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int SCA_PropertyActuator::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_IActuator);
}
@@ -291,7 +296,7 @@ const char SCA_PropertyActuator::SetProperty_doc[] =
"\tof this name, the call is ignored.\n";
PyObject* SCA_PropertyActuator::PySetProperty(PyObject* args, PyObject* kwds)
{
- ShowDeprecationWarning("setProperty()", "the 'property' property");
+ ShowDeprecationWarning("setProperty()", "the 'propName' property");
/* Check whether the name exists first ! */
char *nameArg;
if (!PyArg_ParseTuple(args, "s:setProperty", &nameArg)) {
@@ -316,7 +321,7 @@ const char SCA_PropertyActuator::GetProperty_doc[] =
"\tReturn the property on which the actuator operates.\n";
PyObject* SCA_PropertyActuator::PyGetProperty(PyObject* args, PyObject* kwds)
{
- ShowDeprecationWarning("getProperty()", "the 'property' property");
+ ShowDeprecationWarning("getProperty()", "the 'propName' property");
return PyString_FromString(m_propname);
}
diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.h b/source/gameengine/GameLogic/SCA_PropertyActuator.h
index bb841cf88ad..a8df08dfc6e 100644
--- a/source/gameengine/GameLogic/SCA_PropertyActuator.h
+++ b/source/gameengine/GameLogic/SCA_PropertyActuator.h
@@ -87,6 +87,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// python wrapped methods
diff --git a/source/gameengine/GameLogic/SCA_PropertyEventManager.cpp b/source/gameengine/GameLogic/SCA_PropertyEventManager.cpp
index e5e3f9cced5..764465309df 100644
--- a/source/gameengine/GameLogic/SCA_PropertyEventManager.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertyEventManager.cpp
@@ -50,8 +50,9 @@ SCA_PropertyEventManager::~SCA_PropertyEventManager()
void SCA_PropertyEventManager::NextFrame()
{
// check for changed properties
- for (set<SCA_ISensor*>::const_iterator it = m_sensors.begin();!(it==m_sensors.end());it++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- (*it)->Activate(m_logicmgr,NULL);
+ (*it)->Activate(m_logicmgr);
}
}
diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.cpp b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
index de8a9fcf03e..3b343af3cba 100644
--- a/source/gameengine/GameLogic/SCA_PropertySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
@@ -37,6 +37,7 @@
#include "StringValue.h"
#include "SCA_EventManager.h"
#include "SCA_LogicManager.h"
+#include "BoolValue.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -111,7 +112,7 @@ CValue* SCA_PropertySensor::GetReplica()
{
SCA_PropertySensor* replica = new SCA_PropertySensor(*this);
// m_range_expr must be recalculated on replica!
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->Init();
replica->m_range_expr = NULL;
@@ -152,7 +153,7 @@ SCA_PropertySensor::~SCA_PropertySensor()
-bool SCA_PropertySensor::Evaluate(CValue* event)
+bool SCA_PropertySensor::Evaluate()
{
bool result = CheckPropertyCondition();
bool reset = m_reset && m_level;
@@ -182,17 +183,14 @@ bool SCA_PropertySensor::CheckPropertyCondition()
CValue* orgprop = GetParent()->FindIdentifier(m_checkpropname);
if (!orgprop->IsError())
{
- STR_String testprop = orgprop->GetText();
+ const STR_String& testprop = orgprop->GetText();
// Force strings to upper case, to avoid confusion in
// bool tests. It's stupid the prop's identity is lost
// on the way here...
- if ((testprop == "TRUE") || (testprop == "FALSE")) {
- STR_String checkprop = m_checkpropval;
- checkprop.Upper();
- result = (testprop == checkprop);
- } else {
- result = (orgprop->GetText() == m_checkpropval);
+ if ((&testprop == &CBoolValue::sTrueString) || (&testprop == &CBoolValue::sFalseString)) {
+ m_checkpropval.Upper();
}
+ result = (testprop == m_checkpropval);
}
orgprop->Release();
@@ -232,8 +230,8 @@ bool SCA_PropertySensor::CheckPropertyCondition()
CValue* vallie = m_range_expr->Calculate();
if (vallie)
{
- STR_String errtext = vallie->GetText();
- if (errtext == "TRUE")
+ const STR_String& errtext = vallie->GetText();
+ if (&errtext == &CBoolValue::sTrueString)
{
result = true;
} else
@@ -295,9 +293,8 @@ CValue* SCA_PropertySensor::FindIdentifier(const STR_String& identifiername)
int SCA_PropertySensor::validValueForProperty(void *self, const PyAttributeDef*)
{
- bool result = true;
/* There is no type checking at this moment, unfortunately... */
- return result;
+ return 0;
}
/* ------------------------------------------------------------------------- */
@@ -306,8 +303,13 @@ int SCA_PropertySensor::validValueForProperty(void *self, const PyAttributeDef*)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_PropertySensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_PropertySensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -345,8 +347,8 @@ PyMethodDef SCA_PropertySensor::Methods[] = {
};
PyAttributeDef SCA_PropertySensor::Attributes[] = {
- KX_PYATTRIBUTE_INT_RW("type",KX_PROPSENSOR_NODEF,KX_PROPSENSOR_MAX-1,false,SCA_PropertySensor,m_checktype),
- KX_PYATTRIBUTE_STRING_RW_CHECK("property",0,100,false,SCA_PropertySensor,m_checkpropname,CheckProperty),
+ KX_PYATTRIBUTE_INT_RW("mode",KX_PROPSENSOR_NODEF,KX_PROPSENSOR_MAX-1,false,SCA_PropertySensor,m_checktype),
+ KX_PYATTRIBUTE_STRING_RW_CHECK("propName",0,100,false,SCA_PropertySensor,m_checkpropname,CheckProperty),
KX_PYATTRIBUTE_STRING_RW_CHECK("value",0,100,false,SCA_PropertySensor,m_checkpropval,validValueForProperty),
{ NULL } //Sentinel
};
@@ -356,6 +358,10 @@ PyObject* SCA_PropertySensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_PropertySensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_PropertySensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}
@@ -366,7 +372,7 @@ const char SCA_PropertySensor::GetType_doc[] =
"\tReturns the type of check this sensor performs.\n";
PyObject* SCA_PropertySensor::PyGetType()
{
- ShowDeprecationWarning("getType()", "the type property");
+ ShowDeprecationWarning("getType()", "the mode property");
return PyInt_FromLong(m_checktype);
}
@@ -379,7 +385,7 @@ const char SCA_PropertySensor::SetType_doc[] =
"\tSet the type of check to perform.\n";
PyObject* SCA_PropertySensor::PySetType(PyObject* args)
{
- ShowDeprecationWarning("setType()", "the type property");
+ ShowDeprecationWarning("setType()", "the mode property");
int typeArg;
if (!PyArg_ParseTuple(args, "i:setType", &typeArg)) {
@@ -400,7 +406,7 @@ const char SCA_PropertySensor::GetProperty_doc[] =
"\tReturn the property with which the sensor operates.\n";
PyObject* SCA_PropertySensor::PyGetProperty()
{
- ShowDeprecationWarning("getProperty()", "the 'property' property");
+ ShowDeprecationWarning("getProperty()", "the 'propName' property");
return PyString_FromString(m_checkpropname);
}
@@ -412,7 +418,7 @@ const char SCA_PropertySensor::SetProperty_doc[] =
"\tof this name, the call is ignored.\n";
PyObject* SCA_PropertySensor::PySetProperty(PyObject* args)
{
- ShowDeprecationWarning("setProperty()", "the 'property' property");
+ ShowDeprecationWarning("setProperty()", "the 'propName' property");
/* We should query whether the name exists. Or should we create a prop */
/* on the fly? */
char *propNameArg = NULL;
diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.h b/source/gameengine/GameLogic/SCA_PropertySensor.h
index e1e378a973c..538ecd65949 100644
--- a/source/gameengine/GameLogic/SCA_PropertySensor.h
+++ b/source/gameengine/GameLogic/SCA_PropertySensor.h
@@ -81,7 +81,7 @@ public:
void PrecalculateRangeExpression();
bool CheckPropertyCondition();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual CValue* FindIdentifier(const STR_String& identifiername);
@@ -90,6 +90,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. getType */
diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp
index b8052555528..80e4f54c9c5 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.cpp
+++ b/source/gameengine/GameLogic/SCA_PythonController.cpp
@@ -48,12 +48,18 @@ SCA_PythonController* SCA_PythonController::m_sCurrentController = NULL;
SCA_PythonController::SCA_PythonController(SCA_IObject* gameobj,
+ int mode,
PyTypeObject* T)
: SCA_IController(gameobj, T),
m_bytecode(NULL),
+ m_function(NULL),
+ m_function_argc(0),
m_bModified(true),
+ m_debug(false),
+ m_mode(mode),
m_pythondictionary(NULL)
{
+
}
/*
@@ -74,15 +80,12 @@ int SCA_PythonController::Release()
SCA_PythonController::~SCA_PythonController()
{
- if (m_bytecode)
- {
- //
- //printf("released python byte script\n");
- Py_DECREF(m_bytecode);
- }
+ //printf("released python byte script\n");
- if (m_pythondictionary)
- {
+ Py_XDECREF(m_bytecode);
+ Py_XDECREF(m_function);
+
+ if (m_pythondictionary) {
// break any circular references in the dictionary
PyDict_Clear(m_pythondictionary);
Py_DECREF(m_pythondictionary);
@@ -94,8 +97,12 @@ SCA_PythonController::~SCA_PythonController()
CValue* SCA_PythonController::GetReplica()
{
SCA_PythonController* replica = new SCA_PythonController(*this);
- // Copy the compiled bytecode if possible.
+
+ /* why is this needed at all??? - m_bytecode is NULL'd below so this doesnt make sense
+ * but removing it crashes blender (with YoFrankie). so leave in for now - Campbell */
Py_XINCREF(replica->m_bytecode);
+
+ Py_XINCREF(replica->m_function); // this is ok since its not set to NULL
replica->m_bModified = replica->m_bytecode == NULL;
// The replica->m_pythondictionary is stolen - replace with a copy.
@@ -110,7 +117,7 @@ CValue* SCA_PythonController::GetReplica()
*/
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -140,6 +147,11 @@ void SCA_PythonController::SetDictionary(PyObject* pythondictionary)
Py_DECREF(m_pythondictionary);
}
m_pythondictionary = PyDict_Copy(pythondictionary); /* new reference */
+
+ /* Without __file__ set the sys.argv[0] is used for the filename
+ * which ends up with lines from the blender binary being printed in the console */
+ PyDict_SetItemString(m_pythondictionary, "__file__", PyString_FromString(m_scriptName.Ptr()));
+
}
int SCA_PythonController::IsTriggered(class SCA_ISensor* sensor)
@@ -150,13 +162,14 @@ int SCA_PythonController::IsTriggered(class SCA_ISensor* sensor)
return 0;
}
-#if 0
-static const char* sPyGetCurrentController__doc__;
-#endif
-
/* warning, self is not the SCA_PythonController, its a PyObjectPlus_Proxy */
PyObject* SCA_PythonController::sPyGetCurrentController(PyObject *self)
{
+ if(m_sCurrentController==NULL)
+ {
+ PyErr_SetString(PyExc_SystemError, "GameLogic.getCurrentController(), this function is being run outside the python controllers context, or blenders internal state is corrupt.");
+ return NULL;
+ }
return m_sCurrentController->GetProxy();
}
@@ -170,15 +183,15 @@ SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
if (PyString_Check(value)) {
/* get the actuator from the name */
char *name= PyString_AsString(value);
- for(it = lacts.begin(); it!= lacts.end(); it++) {
+ for(it = lacts.begin(); it!= lacts.end(); ++it) {
if( name == (*it)->GetName() ) {
return *it;
}
}
}
else if (BGE_PROXY_CHECK_TYPE(value)) {
- PyObjectPlus *value_plus= BGE_PROXY_REF(value); /* Expecting an actuator type */ // XXX TODO - CHECK TYPE
- for(it = lacts.begin(); it!= lacts.end(); it++) {
+ PyObjectPlus *value_plus= BGE_PROXY_REF(value);
+ for(it = lacts.begin(); it!= lacts.end(); ++it) {
if( static_cast<SCA_IActuator*>(value_plus) == (*it) ) {
return *it;
}
@@ -193,13 +206,11 @@ SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
return false;
}
-#if 0
-static const char* sPyAddActiveActuator__doc__;
-#endif
-
/* warning, self is not the SCA_PythonController, its a PyObjectPlus_Proxy */
PyObject* SCA_PythonController::sPyAddActiveActuator(PyObject* self, PyObject* args)
{
+ ShowDeprecationWarning("GameLogic.addActiveActuator(act, bool)", "controller.activate(act) or controller.deactivate(act)");
+
PyObject* ob1;
int activate;
if (!PyArg_ParseTuple(args, "Oi:addActiveActuator", &ob1,&activate))
@@ -209,20 +220,22 @@ PyObject* SCA_PythonController::sPyAddActiveActuator(PyObject* self, PyObject* a
if(actu==NULL)
return NULL;
- CValue* boolval = new CBoolValue(activate!=0);
+ bool boolval = (activate!=0);
m_sCurrentLogicManager->AddActiveActuator((SCA_IActuator*)actu,boolval);
- boolval->Release();
Py_RETURN_NONE;
}
-
const char* SCA_PythonController::sPyGetCurrentController__doc__ = "getCurrentController()";
const char* SCA_PythonController::sPyAddActiveActuator__doc__= "addActiveActuator(actuator,bool)";
-const char SCA_PythonController::GetActuators_doc[] = "getActuator";
PyTypeObject SCA_PythonController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_PythonController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -249,59 +262,137 @@ PyMethodDef SCA_PythonController::Methods[] = {
{"activate", (PyCFunction) SCA_PythonController::sPyActivate, METH_O},
{"deactivate", (PyCFunction) SCA_PythonController::sPyDeActivate, METH_O},
- {"getActuators", (PyCFunction) SCA_PythonController::sPyGetActuators, METH_NOARGS, (PY_METHODCHAR)SCA_PythonController::GetActuators_doc},
- {"getActuator", (PyCFunction) SCA_PythonController::sPyGetActuator, METH_O, (PY_METHODCHAR)SCA_PythonController::GetActuator_doc},
- {"getSensors", (PyCFunction) SCA_PythonController::sPyGetSensors, METH_NOARGS, (PY_METHODCHAR)SCA_PythonController::GetSensors_doc},
- {"getSensor", (PyCFunction) SCA_PythonController::sPyGetSensor, METH_O, (PY_METHODCHAR)SCA_PythonController::GetSensor_doc},
//Deprecated functions ------>
{"setScript", (PyCFunction) SCA_PythonController::sPySetScript, METH_O},
{"getScript", (PyCFunction) SCA_PythonController::sPyGetScript, METH_NOARGS},
- {"getState", (PyCFunction) SCA_PythonController::sPyGetState, METH_NOARGS},
//<----- Deprecated
{NULL,NULL} //Sentinel
};
PyAttributeDef SCA_PythonController::Attributes[] = {
- KX_PYATTRIBUTE_RO_FUNCTION("state", SCA_PythonController, pyattr_get_state),
KX_PYATTRIBUTE_RW_FUNCTION("script", SCA_PythonController, pyattr_get_script, pyattr_set_script),
+ KX_PYATTRIBUTE_INT_RO("mode", SCA_PythonController, m_mode),
{ NULL } //Sentinel
};
-bool SCA_PythonController::Compile()
+void SCA_PythonController::ErrorPrint(const char *error_msg)
{
+ // didn't compile, so instead of compile, complain
+ // something is wrong, tell the user what went wrong
+ printf("%s - controller \"%s\":\n", error_msg, GetName().Ptr());
+ //PyRun_SimpleString(m_scriptText.Ptr());
+ PyErr_Print();
+
+ /* Added in 2.48a, the last_traceback can reference Objects for example, increasing
+ * their user count. Not to mention holding references to wrapped data.
+ * This is especially bad when the PyObject for the wrapped data is free'd, after blender
+ * has alredy dealocated the pointer */
+ PySys_SetObject( (char *)"last_traceback", NULL);
+ PyErr_Clear(); /* just to be sure */
+}
+
+bool SCA_PythonController::Compile()
+{
//printf("py script modified '%s'\n", m_scriptName.Ptr());
+ m_bModified= false;
// if a script already exists, decref it before replace the pointer to a new script
- if (m_bytecode)
- {
+ if (m_bytecode) {
Py_DECREF(m_bytecode);
m_bytecode=NULL;
}
+
// recompile the scripttext into bytecode
m_bytecode = Py_CompileString(m_scriptText.Ptr(), m_scriptName.Ptr(), Py_file_input);
- m_bModified=false;
- if (m_bytecode)
- {
-
+ if (m_bytecode) {
return true;
+ } else {
+ ErrorPrint("Python error compiling script");
+ return false;
}
- else {
- // didn't compile, so instead of compile, complain
- // something is wrong, tell the user what went wrong
- printf("Python compile error from controller \"%s\": \n", GetName().Ptr());
- //PyRun_SimpleString(m_scriptText.Ptr());
- PyErr_Print();
+}
+
+bool SCA_PythonController::Import()
+{
+ //printf("py module modified '%s'\n", m_scriptName.Ptr());
+ m_bModified= false;
+
+ /* incase we re-import */
+ Py_XDECREF(m_function);
+ m_function= NULL;
+
+ vector<STR_String> py_function_path = m_scriptText.Explode('.');
+
+ if(py_function_path.size() < 2) {
+ printf("Python module name formatting error \"%s\":\n\texpected \"SomeModule.Func\", got \"%s\"\n", GetName().Ptr(), m_scriptText.Ptr());
+ return false;
+ }
+
+ PyObject *mod = PyImport_ImportModule((char *)py_function_path[0].Ptr());
+ /* Dont reload yet, do this within the loop so packages reload too */
+
+ if(mod==NULL) {
+ ErrorPrint("Python module not found");
+ return false;
+ }
+ /* 'mod' will be DECREF'd as 'base'
+ * 'm_function' will be left holding a reference that the controller owns */
+
+ PyObject *base= mod;
+
+ for(unsigned int i=1; i < py_function_path.size(); i++) {
+ if(m_debug && PyModule_Check(base)) { /* base could be a class */
+ Py_DECREF(base); /* getting a new one so dont hold a ref to the old one */
+ base= PyImport_ReloadModule(base);
+ if (base==NULL) {
+ m_function= NULL;
+ break;
+ }
+ }
- /* Added in 2.48a, the last_traceback can reference Objects for example, increasing
- * their user count. Not to mention holding references to wrapped data.
- * This is especially bad when the PyObject for the wrapped data is free'd, after blender
- * has alredy dealocated the pointer */
- PySys_SetObject( (char *)"last_traceback", NULL);
- PyErr_Clear(); /* just to be sure */
+ m_function = PyObject_GetAttrString(base, py_function_path[i].Ptr());
+ Py_DECREF(base);
+ base = m_function; /* for the next loop if there is on */
+ if(m_function==NULL) {
+ break;
+ }
+ }
+
+ if(m_function==NULL) {
+ if(PyErr_Occurred())
+ ErrorPrint("Python controller found the module but could not access the function");
+ else
+ printf("Python module error \"%s\":\n \"%s\" module found but function missing\n", GetName().Ptr(), m_scriptText.Ptr());
+ return false;
+ }
+
+ if(!PyCallable_Check(m_function)) {
+ Py_DECREF(m_function);
+ printf("Python module function error \"%s\":\n \"%s\" not callable\n", GetName().Ptr(), m_scriptText.Ptr());
+ return false;
+ }
+
+ m_function_argc = 0; /* rare cases this could be a function that isnt defined in python, assume zero args */
+ if (PyFunction_Check(m_function)) {
+ PyObject *py_arg_count = PyObject_GetAttrString(PyFunction_GET_CODE(m_function), "co_argcount");
+ if(py_arg_count) {
+ m_function_argc = PyLong_AsLong(py_arg_count);
+ Py_DECREF(py_arg_count);
+ }
+ else {
+ PyErr_Clear(); /* unlikely to fail but just incase */
+ }
+ }
+
+ if(m_function_argc > 1) {
+ Py_DECREF(m_function);
+ printf("Python module function has \"%s\":\n \"%s\" takes %d args, should be zero or 1 controller arg\n", GetName().Ptr(), m_scriptText.Ptr(), m_function_argc);
return false;
}
+
+ return true;
}
void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
@@ -309,16 +400,18 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
m_sCurrentController = this;
m_sCurrentLogicManager = logicmgr;
- if (m_bModified)
+ PyObject *excdict= NULL;
+ PyObject* resultobj= NULL;
+
+ switch(m_mode) {
+ case SCA_PYEXEC_SCRIPT:
{
- if (Compile()==false) // sets m_bModified to false
+ if (m_bModified)
+ if (Compile()==false) // sets m_bModified to false
+ return;
+ if (!m_bytecode)
return;
- }
- if (!m_bytecode) {
- return;
- }
-
/*
* This part here with excdict is a temporary patch
* to avoid python/gameengine crashes when python
@@ -337,10 +430,36 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
* should always ensure excdict is cleared).
*/
- PyObject *excdict= PyDict_Copy(m_pythondictionary);
- PyObject* resultobj = PyEval_EvalCode((PyCodeObject*)m_bytecode,
- excdict, excdict);
-
+ excdict= PyDict_Copy(m_pythondictionary);
+ resultobj = PyEval_EvalCode((PyCodeObject*)m_bytecode, excdict, excdict);
+ /* PyRun_SimpleString(m_scriptText.Ptr()); */
+ break;
+ }
+ case SCA_PYEXEC_MODULE:
+ {
+ if (m_bModified || m_debug)
+ if (Import()==false) // sets m_bModified to false
+ return;
+ if (!m_function)
+ return;
+
+ PyObject *args= NULL;
+
+ if(m_function_argc==1) {
+ args = PyTuple_New(1);
+ PyTuple_SET_ITEM(args, 0, GetProxy());
+ }
+
+ resultobj = PyObject_CallObject(m_function, args);
+ Py_XDECREF(args);
+ break;
+ }
+
+ } /* end switch */
+
+
+
+ /* Free the return value and print the error */
if (resultobj)
{
Py_DECREF(resultobj);
@@ -348,7 +467,7 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
else
{
// something is wrong, tell the user what went wrong
- printf("Python script error from controller \"%s\": \n", GetName().Ptr());
+ printf("Python script error from controller \"%s\":\n", GetName().Ptr());
PyErr_Print();
/* Added in 2.48a, the last_traceback can reference Objects for example, increasing
@@ -357,15 +476,17 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
* has alredy dealocated the pointer */
PySys_SetObject( (char *)"last_traceback", NULL);
PyErr_Clear(); /* just to be sure */
-
- //PyRun_SimpleString(m_scriptText.Ptr());
}
-
- // clear after PyErrPrint - seems it can be using
- // something in this dictionary and crash?
- PyDict_Clear(excdict);
- Py_DECREF(excdict);
- m_triggeredSensors.erase(m_triggeredSensors.begin(), m_triggeredSensors.end());
+
+ if(excdict) /* Only for SCA_PYEXEC_SCRIPT types */
+ {
+ /* clear after PyErrPrint - seems it can be using
+ * something in this dictionary and crash? */
+ PyDict_Clear(excdict);
+ Py_DECREF(excdict);
+ }
+
+ m_triggeredSensors.clear();
m_sCurrentController = NULL;
}
@@ -376,6 +497,10 @@ PyObject* SCA_PythonController::py_getattro(PyObject *attr)
py_getattro_up(SCA_IController);
}
+PyObject* SCA_PythonController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
int SCA_PythonController::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IController);
@@ -383,104 +508,32 @@ int SCA_PythonController::py_setattro(PyObject *attr, PyObject *value)
PyObject* SCA_PythonController::PyActivate(PyObject *value)
{
- SCA_IActuator* actu = LinkedActuatorFromPy(value);
- if(actu==NULL)
+ if(m_sCurrentController != this) {
+ PyErr_SetString(PyExc_SystemError, "Cannot add an actuator from a non-active controller");
return NULL;
+ }
- CValue* boolval = new CBoolValue(true);
- m_sCurrentLogicManager->AddActiveActuator((SCA_IActuator*)actu, boolval);
- boolval->Release();
- Py_RETURN_NONE;
-}
-
-PyObject* SCA_PythonController::PyDeActivate(PyObject *value)
-{
SCA_IActuator* actu = LinkedActuatorFromPy(value);
if(actu==NULL)
return NULL;
- CValue* boolval = new CBoolValue(false);
- m_sCurrentLogicManager->AddActiveActuator((SCA_IActuator*)actu, boolval);
- boolval->Release();
+ m_sCurrentLogicManager->AddActiveActuator((SCA_IActuator*)actu, true);
Py_RETURN_NONE;
}
-PyObject* SCA_PythonController::PyGetActuators()
-{
- PyObject* resultlist = PyList_New(m_linkedactuators.size());
- for (unsigned int index=0;index<m_linkedactuators.size();index++)
- {
- PyList_SET_ITEM(resultlist,index, m_linkedactuators[index]->GetProxy());
- }
-
- return resultlist;
-}
-
-const char SCA_PythonController::GetSensor_doc[] =
-"getSensor (char sensorname) return linked sensor that is named [sensorname]\n";
-PyObject*
-SCA_PythonController::PyGetSensor(PyObject* value)
+PyObject* SCA_PythonController::PyDeActivate(PyObject *value)
{
-
- char *scriptArg = PyString_AsString(value);
- if (scriptArg==NULL) {
- PyErr_SetString(PyExc_TypeError, "controller.getSensor(string): Python Controller, expected a string (sensor name)");
+ if(m_sCurrentController != this) {
+ PyErr_SetString(PyExc_SystemError, "Cannot add an actuator from a non-active controller");
return NULL;
}
- for (unsigned int index=0;index<m_linkedsensors.size();index++)
- {
- SCA_ISensor* sensor = m_linkedsensors[index];
- STR_String realname = sensor->GetName();
- if (realname == scriptArg)
- {
- return sensor->GetProxy();
- }
- }
-
- PyErr_Format(PyExc_AttributeError, "controller.getSensor(string): Python Controller, unable to find requested sensor \"%s\"", scriptArg);
- return NULL;
-}
-
-
-
-const char SCA_PythonController::GetActuator_doc[] =
-"getActuator (char sensorname) return linked actuator that is named [actuatorname]\n";
-PyObject*
-SCA_PythonController::PyGetActuator(PyObject* value)
-{
-
- char *scriptArg = PyString_AsString(value);
- if (scriptArg==NULL) {
- PyErr_SetString(PyExc_TypeError, "controller.getActuator(string): Python Controller, expected a string (actuator name)");
+ SCA_IActuator* actu = LinkedActuatorFromPy(value);
+ if(actu==NULL)
return NULL;
- }
- for (unsigned int index=0;index<m_linkedactuators.size();index++)
- {
- SCA_IActuator* actua = m_linkedactuators[index];
- if (actua->GetName() == scriptArg)
- {
- return actua->GetProxy();
- }
- }
-
- PyErr_Format(PyExc_AttributeError, "controller.getActuator(string): Python Controller, unable to find requested actuator \"%s\"", scriptArg);
- return NULL;
-}
-
-
-const char SCA_PythonController::GetSensors_doc[] = "getSensors returns a list of all attached sensors";
-PyObject*
-SCA_PythonController::PyGetSensors()
-{
- PyObject* resultlist = PyList_New(m_linkedsensors.size());
- for (unsigned int index=0;index<m_linkedsensors.size();index++)
- {
- PyList_SET_ITEM(resultlist,index, m_linkedsensors[index]->GetProxy());
- }
-
- return resultlist;
+ m_sCurrentLogicManager->AddActiveActuator((SCA_IActuator*)actu, false);
+ Py_RETURN_NONE;
}
/* 1. getScript */
@@ -510,19 +563,6 @@ PyObject* SCA_PythonController::PySetScript(PyObject* value)
Py_RETURN_NONE;
}
-/* 1. getScript */
-PyObject* SCA_PythonController::PyGetState()
-{
- ShowDeprecationWarning("getState()", "the state property");
- return PyInt_FromLong(m_statemask);
-}
-
-PyObject* SCA_PythonController::pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
-{
- SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
- return PyInt_FromLong(self->m_statemask);
-}
-
PyObject* SCA_PythonController::pyattr_get_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
@@ -537,14 +577,14 @@ int SCA_PythonController::pyattr_set_script(void *self_v, const KX_PYATTRIBUTE_D
if (scriptArg==NULL) {
PyErr_SetString(PyExc_TypeError, "controller.script = string: Python Controller, expected a string script text");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
/* set scripttext sets m_bModified to true,
so next time the script is needed, a reparse into byte code is done */
self->SetScriptText(scriptArg);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
diff --git a/source/gameengine/GameLogic/SCA_PythonController.h b/source/gameengine/GameLogic/SCA_PythonController.h
index f10c4e47ebb..0c2af79c3a3 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.h
+++ b/source/gameengine/GameLogic/SCA_PythonController.h
@@ -42,23 +42,37 @@ class SCA_IObject;
class SCA_PythonController : public SCA_IController
{
Py_Header;
- struct _object * m_bytecode;
+ struct _object * m_bytecode; /* SCA_PYEXEC_SCRIPT only */
+ PyObject* m_function; /* SCA_PYEXEC_MODULE only */
+ int m_function_argc;
bool m_bModified;
+ bool m_debug; /* use with SCA_PYEXEC_MODULE for reloading every logic run */
+ int m_mode;
+
protected:
STR_String m_scriptText;
STR_String m_scriptName;
- PyObject* m_pythondictionary;
+ PyObject* m_pythondictionary; /* for SCA_PYEXEC_SCRIPT only */
+ PyObject* m_pythonfunction; /* for SCA_PYEXEC_MODULE only */
+
std::vector<class SCA_ISensor*> m_triggeredSensors;
+
+ public:
+ enum SCA_PyExecMode
+ {
+ SCA_PYEXEC_SCRIPT = 0,
+ SCA_PYEXEC_MODULE,
+ SCA_PYEXEC_MAX
+ };
- public:
static SCA_PythonController* m_sCurrentController; // protected !!!
//for debugging
//virtual CValue* AddRef();
//virtual int Release(); // Release a reference to this value (when reference count reaches 0, the value is removed from the heap)
- SCA_PythonController(SCA_IObject* gameobj,PyTypeObject* T = &Type);
+ SCA_PythonController(SCA_IObject* gameobj, int mode, PyTypeObject* T = &Type);
virtual ~SCA_PythonController();
virtual CValue* GetReplica();
@@ -67,10 +81,14 @@ class SCA_PythonController : public SCA_IController
void SetScriptText(const STR_String& text);
void SetScriptName(const STR_String& name);
void SetDictionary(PyObject* pythondictionary);
+ void SetDebug(bool debug) { m_debug = debug; }
void AddTriggeredSensor(class SCA_ISensor* sensor)
{ m_triggeredSensors.push_back(sensor); }
int IsTriggered(class SCA_ISensor* sensor);
bool Compile();
+ bool Import();
+ void ErrorPrint(const char *error_msg);
+
static const char* sPyGetCurrentController__doc__;
static PyObject* sPyGetCurrentController(PyObject* self);
@@ -78,21 +96,18 @@ class SCA_PythonController : public SCA_IController
static PyObject* sPyAddActiveActuator(PyObject* self,
PyObject* args);
static SCA_IActuator* LinkedActuatorFromPy(PyObject *value);
+
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
KX_PYMETHOD_O(SCA_PythonController,Activate);
KX_PYMETHOD_O(SCA_PythonController,DeActivate);
- KX_PYMETHOD_DOC_NOARGS(SCA_PythonController,GetSensors);
- KX_PYMETHOD_DOC_NOARGS(SCA_PythonController,GetActuators);
- KX_PYMETHOD_DOC_O(SCA_PythonController,GetSensor);
- KX_PYMETHOD_DOC_O(SCA_PythonController,GetActuator);
KX_PYMETHOD_O(SCA_PythonController,SetScript);
KX_PYMETHOD_NOARGS(SCA_PythonController,GetScript);
- KX_PYMETHOD_NOARGS(SCA_PythonController,GetState);
+
- static PyObject* pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.cpp b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
index 3a72d9b7652..a722590dd10 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
@@ -58,7 +58,6 @@ SCA_RandomActuator::SCA_RandomActuator(SCA_IObject *gameobj,
m_parameter2(para2),
m_distribution(mode)
{
- // m_base is never deleted, probably a memory leak!
m_base = new SCA_RandomNumberGenerator(seed);
m_counter = 0;
enforceConstraints();
@@ -68,7 +67,7 @@ SCA_RandomActuator::SCA_RandomActuator(SCA_IObject *gameobj,
SCA_RandomActuator::~SCA_RandomActuator()
{
- /* intentionally empty */
+ m_base->Release();
}
@@ -78,11 +77,16 @@ CValue* SCA_RandomActuator::GetReplica()
SCA_RandomActuator* replica = new SCA_RandomActuator(*this);
// replication just copy the m_base pointer => common random generator
replica->ProcessReplica();
- CValue::AddDataToReplica(replica);
-
return replica;
}
+void SCA_RandomActuator::ProcessReplica()
+{
+ SCA_IActuator::ProcessReplica();
+ // increment reference count so that we can release the generator at the end
+ m_base->AddRef();
+}
+
bool SCA_RandomActuator::Update()
@@ -312,8 +316,13 @@ void SCA_RandomActuator::enforceConstraints() {
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_RandomActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_RandomActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -367,7 +376,7 @@ PyAttributeDef SCA_RandomActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RO("para1",SCA_RandomActuator,m_parameter1),
KX_PYATTRIBUTE_FLOAT_RO("para2",SCA_RandomActuator,m_parameter2),
KX_PYATTRIBUTE_ENUM_RO("distribution",SCA_RandomActuator,m_distribution),
- KX_PYATTRIBUTE_STRING_RW_CHECK("property",0,100,false,SCA_RandomActuator,m_propname,CheckProperty),
+ KX_PYATTRIBUTE_STRING_RW_CHECK("propName",0,100,false,SCA_RandomActuator,m_propname,CheckProperty),
KX_PYATTRIBUTE_RW_FUNCTION("seed",SCA_RandomActuator,pyattr_get_seed,pyattr_set_seed),
{ NULL } //Sentinel
};
@@ -384,10 +393,10 @@ int SCA_RandomActuator::pyattr_set_seed(void *self, const struct KX_PYATTRIBUTE_
if (PyInt_Check(value)) {
int ival = PyInt_AsLong(value);
act->m_base->SetSeed(ival);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
} else {
PyErr_SetString(PyExc_TypeError, "actuator.seed = int: Random Actuator, expected an integer");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
}
@@ -395,6 +404,10 @@ PyObject* SCA_RandomActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* SCA_RandomActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int SCA_RandomActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);
@@ -470,7 +483,7 @@ const char SCA_RandomActuator::SetProperty_doc[] =
"\tSet the property to which the random value is assigned. If the \n"
"\tgenerator and property types do not match, the assignment is ignored.\n";
PyObject* SCA_RandomActuator::PySetProperty(PyObject* args) {
- ShowDeprecationWarning("setProperty()", "the 'property' property");
+ ShowDeprecationWarning("setProperty()", "the 'propName' property");
char *nameArg;
if (!PyArg_ParseTuple(args, "s:setProperty", &nameArg)) {
return NULL;
@@ -494,7 +507,7 @@ const char SCA_RandomActuator::GetProperty_doc[] =
"\tgenerator and property types do not match, the assignment is ignored.\n";
PyObject* SCA_RandomActuator::PyGetProperty()
{
- ShowDeprecationWarning("getProperty()", "the 'property' property");
+ ShowDeprecationWarning("getProperty()", "the 'propName' property");
return PyString_FromString(m_propname);
}
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.h b/source/gameengine/GameLogic/SCA_RandomActuator.h
index 8f58ed0dcec..59863589b60 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.h
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.h
@@ -91,12 +91,14 @@ class SCA_RandomActuator : public SCA_IActuator
virtual bool Update();
virtual CValue* GetReplica();
+ virtual void ProcessReplica();
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
static PyObject* pyattr_get_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/GameLogic/SCA_RandomEventManager.cpp b/source/gameengine/GameLogic/SCA_RandomEventManager.cpp
index 156478d866d..976597aa812 100644
--- a/source/gameengine/GameLogic/SCA_RandomEventManager.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomEventManager.cpp
@@ -50,9 +50,10 @@ SCA_RandomEventManager::SCA_RandomEventManager(class SCA_LogicManager* logicmgr)
void SCA_RandomEventManager::NextFrame()
{
- for (set<class SCA_ISensor*>::const_iterator i= m_sensors.begin();!(i==m_sensors.end());i++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- (*i)->Activate(m_logicmgr, NULL);
+ (*it)->Activate(m_logicmgr);
}
}
diff --git a/source/gameengine/GameLogic/SCA_RandomNumberGenerator.cpp b/source/gameengine/GameLogic/SCA_RandomNumberGenerator.cpp
index 06b5cca6ce9..0267cc8ebbf 100644
--- a/source/gameengine/GameLogic/SCA_RandomNumberGenerator.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomNumberGenerator.cpp
@@ -59,6 +59,7 @@
SCA_RandomNumberGenerator::SCA_RandomNumberGenerator(long seed) {
// int mti = N + 1; /*unused*/
m_seed = seed;
+ m_refcount = 1;
SetStartVector();
}
diff --git a/source/gameengine/GameLogic/SCA_RandomNumberGenerator.h b/source/gameengine/GameLogic/SCA_RandomNumberGenerator.h
index b9311d31af6..842a0331752 100644
--- a/source/gameengine/GameLogic/SCA_RandomNumberGenerator.h
+++ b/source/gameengine/GameLogic/SCA_RandomNumberGenerator.h
@@ -36,6 +36,9 @@
class SCA_RandomNumberGenerator {
+ /* reference counted for memleak */
+ int m_refcount;
+
/** base seed */
long m_seed;
@@ -56,6 +59,16 @@ class SCA_RandomNumberGenerator {
float DrawFloat();
long GetSeed();
void SetSeed(long newseed);
+ SCA_RandomNumberGenerator* AddRef()
+ {
+ ++m_refcount;
+ return this;
+ }
+ void Release()
+ {
+ if (--m_refcount == 0)
+ delete this;
+ }
};
#endif /* __KX_RANDOMNUMBERGENERATOR */
diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.cpp b/source/gameengine/GameLogic/SCA_RandomSensor.cpp
index 5ead82db428..d5cbeef01ae 100644
--- a/source/gameengine/GameLogic/SCA_RandomSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomSensor.cpp
@@ -50,7 +50,6 @@ SCA_RandomSensor::SCA_RandomSensor(SCA_EventManager* eventmgr,
PyTypeObject* T)
: SCA_ISensor(gameobj,eventmgr, T)
{
- // m_basegenerator is never deleted => memory leak
m_basegenerator = new SCA_RandomNumberGenerator(startseed);
Init();
}
@@ -59,7 +58,7 @@ SCA_RandomSensor::SCA_RandomSensor(SCA_EventManager* eventmgr,
SCA_RandomSensor::~SCA_RandomSensor()
{
- /* Nothing to be done here. */
+ m_basegenerator->Release();
}
void SCA_RandomSensor::Init()
@@ -74,13 +73,18 @@ void SCA_RandomSensor::Init()
CValue* SCA_RandomSensor::GetReplica()
{
CValue* replica = new SCA_RandomSensor(*this);
- // replication copies m_basegenerator pointer => share same generator
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
+void SCA_RandomSensor::ProcessReplica()
+{
+ SCA_ISensor::ProcessReplica();
+ // increment reference count so that we can release the generator at this end
+ m_basegenerator->AddRef();
+}
bool SCA_RandomSensor::IsPositiveTrigger()
@@ -89,7 +93,7 @@ bool SCA_RandomSensor::IsPositiveTrigger()
}
-bool SCA_RandomSensor::Evaluate(CValue* event)
+bool SCA_RandomSensor::Evaluate()
{
/* Random generator is the generator from Line 25 of Table 1 in */
/* [KNUTH 1981, The Art of Computer Programming Vol. 2 */
@@ -127,8 +131,13 @@ bool SCA_RandomSensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_RandomSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_RandomSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -154,9 +163,11 @@ PyParentObject SCA_RandomSensor::Parents[] = {
};
PyMethodDef SCA_RandomSensor::Methods[] = {
+ //Deprecated functions ----->
{"setSeed", (PyCFunction) SCA_RandomSensor::sPySetSeed, METH_VARARGS, (PY_METHODCHAR)SetSeed_doc},
{"getSeed", (PyCFunction) SCA_RandomSensor::sPyGetSeed, METH_NOARGS, (PY_METHODCHAR)GetSeed_doc},
{"getLastDraw", (PyCFunction) SCA_RandomSensor::sPyGetLastDraw, METH_NOARGS, (PY_METHODCHAR)GetLastDraw_doc},
+ //<----- Deprecated
{NULL,NULL} //Sentinel
};
@@ -170,6 +181,10 @@ PyObject* SCA_RandomSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* SCA_RandomSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int SCA_RandomSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);
@@ -225,10 +240,10 @@ int SCA_RandomSensor::pyattr_set_seed(void *self_v, const KX_PYATTRIBUTE_DEF *at
SCA_RandomSensor* self= static_cast<SCA_RandomSensor*>(self_v);
if (!PyInt_Check(value)) {
PyErr_SetString(PyExc_TypeError, "sensor.seed = int: Random Sensor, expected an integer");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
self->m_basegenerator->SetSeed(PyInt_AsLong(value));
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.h b/source/gameengine/GameLogic/SCA_RandomSensor.h
index 764692600c3..b2bf2440966 100644
--- a/source/gameengine/GameLogic/SCA_RandomSensor.h
+++ b/source/gameengine/GameLogic/SCA_RandomSensor.h
@@ -52,7 +52,8 @@ public:
PyTypeObject* T=&Type);
virtual ~SCA_RandomSensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual void ProcessReplica();
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void Init();
@@ -61,6 +62,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. setSeed */
diff --git a/source/gameengine/GameLogic/SCA_TimeEventManager.cpp b/source/gameengine/GameLogic/SCA_TimeEventManager.cpp
index b7fadd3d62c..911ea772bef 100644
--- a/source/gameengine/GameLogic/SCA_TimeEventManager.cpp
+++ b/source/gameengine/GameLogic/SCA_TimeEventManager.cpp
@@ -52,7 +52,7 @@ SCA_TimeEventManager::SCA_TimeEventManager(SCA_LogicManager* logicmgr)
SCA_TimeEventManager::~SCA_TimeEventManager()
{
for (vector<CValue*>::iterator it = m_timevalues.begin();
- !(it == m_timevalues.end()); it++)
+ !(it == m_timevalues.end()); ++it)
{
(*it)->Release();
}
@@ -80,7 +80,7 @@ void SCA_TimeEventManager::NextFrame(double curtime, double fixedtime)
// update sensors, but ... need deltatime !
for (vector<CValue*>::iterator it = m_timevalues.begin();
- !(it == m_timevalues.end()); it++)
+ !(it == m_timevalues.end()); ++it)
{
float newtime = (*it)->GetNumber() + fixedtime;
floatval->SetFloat(newtime);
@@ -104,7 +104,7 @@ void SCA_TimeEventManager::AddTimeProperty(CValue* timeval)
void SCA_TimeEventManager::RemoveTimeProperty(CValue* timeval)
{
for (vector<CValue*>::iterator it = m_timevalues.begin();
- !(it == m_timevalues.end()); it++)
+ !(it == m_timevalues.end()); ++it)
{
if ((*it) == timeval)
{
diff --git a/source/gameengine/GameLogic/SCA_XNORController.cpp b/source/gameengine/GameLogic/SCA_XNORController.cpp
index e9bb37ee958..aee8e26c21a 100644
--- a/source/gameengine/GameLogic/SCA_XNORController.cpp
+++ b/source/gameengine/GameLogic/SCA_XNORController.cpp
@@ -66,7 +66,7 @@ void SCA_XNORController::Trigger(SCA_LogicManager* logicmgr)
!(is==m_linkedsensors.end());is++)
{
SCA_ISensor* sensor = *is;
- if (sensor->IsPositiveTrigger())
+ if (sensor->GetState())
{
if (sensorresult == false)
{
@@ -77,19 +77,12 @@ void SCA_XNORController::Trigger(SCA_LogicManager* logicmgr)
}
}
- CValue* newevent = new CBoolValue(sensorresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
- logicmgr->AddActiveActuator(actua,newevent);
+ SCA_IActuator* actua = *i;
+ logicmgr->AddActiveActuator(actua,sensorresult);
}
-
- // every actuator that needs the event, has a it's own reference to it now so
- // release it (so to be clear: if there is no actuator, it's deleted right now)
- newevent->Release();
-
}
@@ -98,7 +91,7 @@ CValue* SCA_XNORController::GetReplica()
{
CValue* replica = new SCA_XNORController(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -111,8 +104,13 @@ CValue* SCA_XNORController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_XNORController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_XNORController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -149,4 +147,8 @@ PyObject* SCA_XNORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
+PyObject* SCA_XNORController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_XNORController.h b/source/gameengine/GameLogic/SCA_XNORController.h
index c992d5f1834..4aad5763cb0 100644
--- a/source/gameengine/GameLogic/SCA_XNORController.h
+++ b/source/gameengine/GameLogic/SCA_XNORController.h
@@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SCA_XORController.cpp b/source/gameengine/GameLogic/SCA_XORController.cpp
index 791a139975f..5afb3a750f5 100644
--- a/source/gameengine/GameLogic/SCA_XORController.cpp
+++ b/source/gameengine/GameLogic/SCA_XORController.cpp
@@ -66,7 +66,7 @@ void SCA_XORController::Trigger(SCA_LogicManager* logicmgr)
!(is==m_linkedsensors.end());is++)
{
SCA_ISensor* sensor = *is;
- if (sensor->IsPositiveTrigger())
+ if (sensor->GetState())
{
if (sensorresult == true)
{
@@ -77,19 +77,12 @@ void SCA_XORController::Trigger(SCA_LogicManager* logicmgr)
}
}
- CValue* newevent = new CBoolValue(sensorresult);
-
for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
!(i==m_linkedactuators.end());i++)
{
- SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
- logicmgr->AddActiveActuator(actua,newevent);
+ SCA_IActuator* actua = *i;
+ logicmgr->AddActiveActuator(actua,sensorresult);
}
-
- // every actuator that needs the event, has a it's own reference to it now so
- // release it (so to be clear: if there is no actuator, it's deleted right now)
- newevent->Release();
-
}
@@ -98,7 +91,7 @@ CValue* SCA_XORController::GetReplica()
{
CValue* replica = new SCA_XORController(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -111,8 +104,13 @@ CValue* SCA_XORController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_XORController::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"SCA_XORController",
sizeof(PyObjectPlus_Proxy),
0,
@@ -149,4 +147,8 @@ PyObject* SCA_XORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
+PyObject* SCA_XORController::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IController);
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_XORController.h b/source/gameengine/GameLogic/SCA_XORController.h
index 065b31fd901..feb9f2ed07c 100644
--- a/source/gameengine/GameLogic/SCA_XORController.h
+++ b/source/gameengine/GameLogic/SCA_XORController.h
@@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
};
diff --git a/source/gameengine/GameLogic/SConscript b/source/gameengine/GameLogic/SConscript
index 88e5f7e87cc..91843eef586 100644
--- a/source/gameengine/GameLogic/SConscript
+++ b/source/gameengine/GameLogic/SConscript
@@ -5,7 +5,7 @@ sources = env.Glob('*.cpp') + env.Glob('Joystick/*.cpp')
incs = '. #/source/kernel/gen_system #/intern/string'
incs += ' #/source/gameengine/Expressions #/intern/moto/include'
-incs += ' #/source/gameengine/Rasterizer'
+incs += ' #/source/gameengine/Rasterizer #/source/gameengine/SceneGraph'
incs += ' ' + env['BF_PYTHON_INC']
diff --git a/source/gameengine/GamePlayer/CMakeLists.txt b/source/gameengine/GamePlayer/CMakeLists.txt
index fc5912155cf..134f8fce3b2 100644
--- a/source/gameengine/GamePlayer/CMakeLists.txt
+++ b/source/gameengine/GamePlayer/CMakeLists.txt
@@ -24,8 +24,9 @@
#
# ***** END GPL LICENSE BLOCK *****
-SUBDIRS(common ghost)
+ADD_SUBDIRECTORY(common)
+ADD_SUBDIRECTORY(ghost)
IF(WITH_WEBPLUGIN)
- SUBDIRS(xembed)
+ ADD_SUBDIRECTORY(xembed)
ENDIF(WITH_WEBPLUGIN)
diff --git a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
index de30bbfcf3a..c5c9dcc6c0f 100644
--- a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
@@ -74,8 +74,8 @@ void GPC_RenderTools::BeginFrame(RAS_IRasterizer* rasty)
{
m_clientobject = NULL;
m_lastlightlayer = -1;
- m_lastlighting = false;
m_lastauxinfo = NULL;
+ m_lastlighting = true; /* force disable in DisableOpenGLLights() */
DisableOpenGLLights();
}
@@ -286,10 +286,7 @@ void GPC_RenderTools::RenderText2D(RAS_TEXT_RENDER_MODE mode,
int height)
{
STR_String tmpstr(text);
- int lines;
char* s = tmpstr.Ptr();
- char* p;
-
// Save and change OpenGL settings
int texture2D;
diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
index 109ed3790ff..bdee8a78cfe 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
@@ -693,6 +693,7 @@ bool GPG_Application::startEngine(void)
initGameKeys();
initPythonConstraintBinding();
initMathutils();
+ initGeometry();
initBGL();
#ifdef WITH_FFMPEG
initVideoTexture();
@@ -700,7 +701,7 @@ bool GPG_Application::startEngine(void)
//initialize Dome Settings
if(m_startScene->r.stereomode == RAS_IRasterizer::RAS_STEREO_DOME)
- m_ketsjiengine->InitDome(m_startScene->r.domesize, m_startScene->r.domeres, m_startScene->r.domemode, m_startScene->r.domeangle, m_startScene->r.domeresbuf, m_startScene->r.dometext);
+ m_ketsjiengine->InitDome(m_startScene->r.domeres, m_startScene->r.domemode, m_startScene->r.domeangle, m_startScene->r.domeresbuf, m_startScene->r.dometilt, m_startScene->r.dometext);
// Set the GameLogic.globalDict from marshal'd data, so we can
// load new blend files and keep data in GameLogic.globalDict
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index 97b21d13e90..b69188e5476 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -703,10 +703,10 @@ int main(int argc, char** argv)
BLI_strncpy(pathname, maggie->name, sizeof(pathname));
BLI_strncpy(G.sce, maggie->name, sizeof(G.sce));
+ setGamePythonPath(G.sce);
if (firstTimeRunning)
{
- setGamePythonPath(G.sce);
firstTimeRunning = false;
if (fullScreen)
diff --git a/source/gameengine/Ketsji/BL_BlenderShader.cpp b/source/gameengine/Ketsji/BL_BlenderShader.cpp
index 3df483b0598..a0a61d01bb2 100644
--- a/source/gameengine/Ketsji/BL_BlenderShader.cpp
+++ b/source/gameengine/Ketsji/BL_BlenderShader.cpp
@@ -20,41 +20,33 @@ BL_BlenderShader::BL_BlenderShader(KX_Scene *scene, struct Material *ma, int lig
:
mScene(scene),
mMat(ma),
- mLightLayer(lightlayer)
+ mLightLayer(lightlayer),
+ mGPUMat(NULL)
{
mBlenderScene = scene->GetBlenderScene();
mBlendMode = GPU_BLEND_SOLID;
- if(mMat)
- GPU_material_from_blender(mBlenderScene, mMat);
+ ReloadMaterial();
}
BL_BlenderShader::~BL_BlenderShader()
{
- if(mMat && GPU_material_from_blender(mBlenderScene, mMat))
- GPU_material_unbind(GPU_material_from_blender(mBlenderScene, mMat));
+ if(mGPUMat)
+ GPU_material_unbind(mGPUMat);
}
-bool BL_BlenderShader::Ok()
+void BL_BlenderShader::ReloadMaterial()
{
- return VerifyShader();
-}
-
-bool BL_BlenderShader::VerifyShader()
-{
- if(mMat)
- return (GPU_material_from_blender(mBlenderScene, mMat) != 0);
- else
- return false;
+ mGPUMat = (mMat) ? GPU_material_from_blender(mBlenderScene, mMat) : NULL;
}
void BL_BlenderShader::SetProg(bool enable, double time)
{
if(VerifyShader()) {
if(enable)
- GPU_material_bind(GPU_material_from_blender(mBlenderScene, mMat), mLightLayer, mBlenderScene->lay, time);
+ GPU_material_bind(mGPUMat, mLightLayer, mBlenderScene->lay, time);
else
- GPU_material_unbind(GPU_material_from_blender(mBlenderScene, mMat));
+ GPU_material_unbind(mGPUMat);
}
}
@@ -66,7 +58,7 @@ int BL_BlenderShader::GetAttribNum()
if(!VerifyShader())
return enabled;
- GPU_material_vertex_attributes(GPU_material_from_blender(mBlenderScene, mMat), &attribs);
+ GPU_material_vertex_attributes(mGPUMat, &attribs);
for(i = 0; i < attribs.totlayer; i++)
if(attribs.layer[i].glindex+1 > enabled)
@@ -89,7 +81,7 @@ void BL_BlenderShader::SetAttribs(RAS_IRasterizer* ras, const BL_Material *mat)
if(!VerifyShader())
return;
- gpumat = GPU_material_from_blender(mBlenderScene, mMat);
+ gpumat = mGPUMat;
if(ras->GetDrawingMode() == RAS_IRasterizer::KX_TEXTURED) {
GPU_material_vertex_attributes(gpumat, &attribs);
@@ -131,7 +123,7 @@ void BL_BlenderShader::Update(const RAS_MeshSlot & ms, RAS_IRasterizer* rasty )
float obmat[4][4], viewmat[4][4], viewinvmat[4][4], obcol[4];
GPUMaterial *gpumat;
- gpumat = GPU_material_from_blender(mBlenderScene, mMat);
+ gpumat = mGPUMat;
if(!gpumat || !GPU_material_bound(gpumat))
return;
diff --git a/source/gameengine/Ketsji/BL_BlenderShader.h b/source/gameengine/Ketsji/BL_BlenderShader.h
index 5c1f59f94ad..9af53bfc863 100644
--- a/source/gameengine/Ketsji/BL_BlenderShader.h
+++ b/source/gameengine/Ketsji/BL_BlenderShader.h
@@ -32,19 +32,28 @@ private:
struct Material *mMat;
int mLightLayer;
int mBlendMode;
+ GPUMaterial *mGPUMat;
- bool VerifyShader();
+ bool VerifyShader()
+ {
+ return (NULL != mGPUMat);
+ }
public:
BL_BlenderShader(KX_Scene *scene, struct Material *ma, int lightlayer);
virtual ~BL_BlenderShader();
- bool Ok();
+ bool Ok()
+ {
+ // same as VerifyShared
+ return (NULL != mGPUMat);
+ }
void SetProg(bool enable, double time=0.0);
int GetAttribNum();
void SetAttribs(class RAS_IRasterizer* ras, const BL_Material *mat);
void Update(const class RAS_MeshSlot & ms, class RAS_IRasterizer* rasty);
+ void ReloadMaterial();
int GetBlendMode();
bool Equals(BL_BlenderShader *blshader);
diff --git a/source/gameengine/Ketsji/BL_Material.cpp b/source/gameengine/Ketsji/BL_Material.cpp
index 7e3d6984f19..c63b9d55306 100644
--- a/source/gameengine/Ketsji/BL_Material.cpp
+++ b/source/gameengine/Ketsji/BL_Material.cpp
@@ -28,6 +28,11 @@ int getNumTexChannels( Material *mat )
BL_Material::BL_Material()
{
+ Initialize();
+}
+
+void BL_Material::Initialize()
+{
rgb[0] = 0;
rgb[1] = 0;
rgb[2] = 0;
@@ -52,7 +57,7 @@ BL_Material::BL_Material()
mode = 0;
material = 0;
tface = 0;
- material_index = 0;
+ materialindex = 0;
amb=0.5f;
num_enabled = 0;
num_users = 1;
diff --git a/source/gameengine/Ketsji/BL_Material.h b/source/gameengine/Ketsji/BL_Material.h
index 0eaa234566c..4f572f95891 100644
--- a/source/gameengine/Ketsji/BL_Material.h
+++ b/source/gameengine/Ketsji/BL_Material.h
@@ -44,6 +44,7 @@ private:
public:
// -----------------------------------
BL_Material();
+ void Initialize();
int IdMode;
unsigned int ras_mode;
@@ -54,6 +55,7 @@ public:
int tile,tilexrep[MAXTEX],tileyrep[MAXTEX];
STR_String matname;
STR_String mtexname[MAXTEX];
+ int materialindex;
float matcolor[4];
float speccolor[3];
@@ -68,8 +70,6 @@ public:
int mode;
int num_enabled;
- int material_index;
-
BL_Mapping mapping[MAXTEX];
STR_String imageId[MAXTEX];
diff --git a/source/gameengine/Ketsji/BL_Shader.cpp b/source/gameengine/Ketsji/BL_Shader.cpp
index 88d920043e0..c5c517c8a65 100644
--- a/source/gameengine/Ketsji/BL_Shader.cpp
+++ b/source/gameengine/Ketsji/BL_Shader.cpp
@@ -734,6 +734,10 @@ PyObject* BL_Shader::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
+PyObject* BL_Shader::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
+
PyMethodDef BL_Shader::Methods[] =
{
@@ -772,8 +776,13 @@ PyAttributeDef BL_Shader::Attributes[] = {
};
PyTypeObject BL_Shader::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"BL_Shader",
sizeof(PyObjectPlus_Proxy),
0,
diff --git a/source/gameengine/Ketsji/BL_Shader.h b/source/gameengine/Ketsji/BL_Shader.h
index 08cad5071fd..7db40e778ae 100644
--- a/source/gameengine/Ketsji/BL_Shader.h
+++ b/source/gameengine/Ketsji/BL_Shader.h
@@ -203,6 +203,7 @@ public:
// Python interface
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual PyObject* py_repr(void) { return PyString_FromFormat("BL_Shader\n\tvertex shader:%s\n\n\tfragment shader%s\n\n", vertProg, fragProg); }
// -----------------------------------
diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt
index ca9ce4dc50c..4aaa49a8493 100644
--- a/source/gameengine/Ketsji/CMakeLists.txt
+++ b/source/gameengine/Ketsji/CMakeLists.txt
@@ -30,11 +30,10 @@ FILE(GLOB SRC *.cpp)
#SET(SRC
# ${SRC}
# ../../../source/blender/python/api2_2x/Mathutils.c
+# ../../../source/blender/python/api2_2x/Geometry.c
# ../../../source/blender/python/api2_2x/constant.c
# ../../../source/blender/python/api2_2x/euler.c
-# ../../../source/blender/python/api2_2x/gen_utils.c
# ../../../source/blender/python/api2_2x/matrix.c
-# ../../../source/blender/python/api2_2x/point.c
# ../../../source/blender/python/api2_2x/quat.c
# ../../../source/blender/python/api2_2x/vector.c
# ../../../source/blender/python/api2_2x/bpy_internal_import.c
diff --git a/source/gameengine/Ketsji/KXNetwork/CMakeLists.txt b/source/gameengine/Ketsji/KXNetwork/CMakeLists.txt
index fa0ca378c6b..d9a9fc54f4b 100644
--- a/source/gameengine/Ketsji/KXNetwork/CMakeLists.txt
+++ b/source/gameengine/Ketsji/KXNetwork/CMakeLists.txt
@@ -30,9 +30,11 @@ SET(INC
.
../../../../source/kernel/gen_system
../../../../intern/string
+ ../../../../intern/moto/include
../../../../source/gameengine/Ketsji
../../../../source/gameengine/GameLogic
../../../../source/gameengine/Expressions
+ ../../../../source/gameengine/SceneGraph
../../../../source/gameengine/Network
${PYTHON_INC}
)
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkEventManager.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkEventManager.cpp
index eee8e9f6827..738f64713b0 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkEventManager.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkEventManager.cpp
@@ -61,12 +61,12 @@ void KX_NetworkEventManager::NextFrame()
// each frame, the logicmanager will call the network
// eventmanager to look for network events, and process it's
// 'network' sensors
- set<class SCA_ISensor*>::iterator it;
-
- for (it = m_sensors.begin(); !(it==m_sensors.end()); it++) {
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
+ {
// printf("KX_NetworkEventManager::proceed sensor %.2f\n", curtime);
// process queue
- (*it)->Activate(m_logicmgr, NULL);
+ (*it)->Activate(m_logicmgr);
}
// now a list of triggerer sensors has been built
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
index 2483a6bfb39..63773352d96 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
@@ -75,7 +75,7 @@ bool KX_NetworkMessageActuator::Update()
m_toPropName,
GetParent()->GetName(),
m_subject,
- GetParent()->GetPropertyText(m_body,""));
+ GetParent()->GetPropertyText(m_body));
} else
{
m_networkscene->SendMessage(
@@ -93,9 +93,6 @@ CValue* KX_NetworkMessageActuator::GetReplica()
new KX_NetworkMessageActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
return replica;
}
@@ -105,8 +102,13 @@ CValue* KX_NetworkMessageActuator::GetReplica()
/* Integration hooks -------------------------------------------------- */
PyTypeObject KX_NetworkMessageActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_NetworkMessageActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -157,6 +159,10 @@ PyObject* KX_NetworkMessageActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_NetworkMessageActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_NetworkMessageActuator::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_IActuator);
}
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
index 850f825b8f3..cf92fd46fe0 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
@@ -62,6 +62,7 @@ public:
/* ------------------------------------------------------------ */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
index 7782567943e..8ddcd87b66f 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
@@ -79,15 +79,13 @@ CValue* KX_NetworkMessageSensor::GetReplica() {
CValue* replica = new KX_NetworkMessageSensor(*this);
if (replica == NULL) return NULL;
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
// Return true only for flank (UP and DOWN)
-bool KX_NetworkMessageSensor::Evaluate(CValue* event)
+bool KX_NetworkMessageSensor::Evaluate()
{
bool result = false;
bool WasUp = m_IsUp;
@@ -104,8 +102,8 @@ bool KX_NetworkMessageSensor::Evaluate(CValue* event)
m_SubjectList = NULL;
}
- STR_String toname=GetParent()->GetName();
- STR_String subject = this->m_subject;
+ STR_String& toname=GetParent()->GetName();
+ STR_String& subject = this->m_subject;
vector<NG_NetworkMessage*> messages =
m_NetworkScene->FindMessages(toname,"",subject,true);
@@ -125,9 +123,9 @@ bool KX_NetworkMessageSensor::Evaluate(CValue* event)
for (mesit=messages.begin();mesit!=messages.end();mesit++)
{
// save the body
- STR_String body = (*mesit)->GetMessageText();
+ const STR_String& body = (*mesit)->GetMessageText();
// save the subject
- STR_String messub = (*mesit)->GetSubject();
+ const STR_String& messub = (*mesit)->GetSubject();
#ifdef NAN_NET_DEBUG
if (body) {
cout << "body [" << body << "]\n";
@@ -168,8 +166,13 @@ bool KX_NetworkMessageSensor::IsPositiveTrigger()
/* Integration hooks --------------------------------------------------- */
PyTypeObject KX_NetworkMessageSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_NetworkMessageSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -227,6 +230,10 @@ PyObject* KX_NetworkMessageSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* KX_NetworkMessageSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int KX_NetworkMessageSensor::py_setattro(PyObject *attr, PyObject *value) {
return SCA_ISensor::py_setattro(attr, value);
}
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
index ac0e880d25c..53183f33826 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
@@ -63,7 +63,7 @@ public:
virtual ~KX_NetworkMessageSensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void Init();
void EndFrame();
@@ -73,6 +73,7 @@ public:
/* ------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->
diff --git a/source/gameengine/Ketsji/KXNetwork/Makefile b/source/gameengine/Ketsji/KXNetwork/Makefile
index ddcb03600d5..365ed8fc9c3 100644
--- a/source/gameengine/Ketsji/KXNetwork/Makefile
+++ b/source/gameengine/Ketsji/KXNetwork/Makefile
@@ -38,8 +38,10 @@ CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
CPPFLAGS += -I$(NAN_STRING)/include
+CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../Expressions
CPPFLAGS += -I../../GameLogic
+CPPFLAGS += -I../../SceneGraph
CPPFLAGS += -I../../Network
CPPFLAGS += -I../../../kernel/gen_system
CPPFLAGS += -I..
diff --git a/source/gameengine/Ketsji/KXNetwork/SConscript b/source/gameengine/Ketsji/KXNetwork/SConscript
index b417edf6413..f350b2ce25a 100644
--- a/source/gameengine/Ketsji/KXNetwork/SConscript
+++ b/source/gameengine/Ketsji/KXNetwork/SConscript
@@ -3,9 +3,9 @@ Import ('env')
sources = env.Glob('*.cpp')
-incs = '. #source/kernel/gen_system #intern/string #source/gameengine/Ketsji'
+incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/Ketsji'
incs += ' #source/gameengine/GameLogic #source/gameengine/Expressions'
-incs += ' #source/gameengine/Network'
+incs += ' #source/gameengine/Network #source/gameengine/SceneGraph'
incs += ' ' + env['BF_PYTHON_INC']
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index 849332008ce..30057fc039d 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -43,35 +43,48 @@ BL_BlenderShader *KX_BlenderMaterial::mLastBlenderShader = NULL;
//static PyObject *gTextureDict = 0;
KX_BlenderMaterial::KX_BlenderMaterial(
- KX_Scene *scene,
- BL_Material *data,
- bool skin,
- int lightlayer,
PyTypeObject *T
)
: PyObjectPlus(T),
- RAS_IPolyMaterial(
- STR_String( data->texname[0] ),
- STR_String( data->matname ), // needed for physics!
- data->tile,
- data->tilexrep[0],
- data->tileyrep[0],
- data->mode,
- data->transp,
- ((data->ras_mode &ALPHA)!=0),
- ((data->ras_mode &ZSORT)!=0),
- lightlayer
- ),
- mMaterial(data),
+ RAS_IPolyMaterial(),
+ mMaterial(NULL),
mShader(0),
mBlenderShader(0),
- mScene(scene),
+ mScene(NULL),
mUserDefBlend(0),
mModified(0),
mConstructed(false),
mPass(0)
+{
+}
+void KX_BlenderMaterial::Initialize(
+ KX_Scene *scene,
+ BL_Material *data,
+ bool skin,
+ int lightlayer)
{
+ RAS_IPolyMaterial::Initialize(
+ data->texname[0],
+ data->matname,
+ data->materialindex,
+ data->tile,
+ data->tilexrep[0],
+ data->tileyrep[0],
+ data->mode,
+ data->transp,
+ ((data->ras_mode &ALPHA)!=0),
+ ((data->ras_mode &ZSORT)!=0),
+ lightlayer
+ );
+ mMaterial = data;
+ mShader = 0;
+ mBlenderShader = 0;
+ mScene = scene;
+ mUserDefBlend = 0;
+ mModified = 0;
+ mConstructed = false;
+ mPass = 0;
// --------------------------------
// RAS_IPolyMaterial variables...
m_flag |= RAS_BLENDERMAT;
@@ -95,7 +108,6 @@ KX_BlenderMaterial::KX_BlenderMaterial(
);
}
m_multimode += mMaterial->IdMode+ (mMaterial->ras_mode & ~(COLLIDER|USE_LIGHT));
-
}
KX_BlenderMaterial::~KX_BlenderMaterial()
@@ -106,7 +118,6 @@ KX_BlenderMaterial::~KX_BlenderMaterial()
OnExit();
}
-
MTFace* KX_BlenderMaterial::GetMTFace(void) const
{
// fonts on polys
@@ -120,14 +131,41 @@ unsigned int* KX_BlenderMaterial::GetMCol(void) const
return mMaterial->rgb;
}
-void KX_BlenderMaterial::OnConstruction()
+void KX_BlenderMaterial::GetMaterialRGBAColor(unsigned char *rgba) const
+{
+ if (mMaterial) {
+ *rgba++ = (unsigned char) (mMaterial->matcolor[0]*255.0);
+ *rgba++ = (unsigned char) (mMaterial->matcolor[1]*255.0);
+ *rgba++ = (unsigned char) (mMaterial->matcolor[2]*255.0);
+ *rgba++ = (unsigned char) (mMaterial->matcolor[3]*255.0);
+ } else
+ RAS_IPolyMaterial::GetMaterialRGBAColor(rgba);
+}
+
+Material *KX_BlenderMaterial::GetBlenderMaterial() const
+{
+ return mMaterial->material;
+}
+
+Scene* KX_BlenderMaterial::GetBlenderScene() const
+{
+ return mScene->GetBlenderScene();
+}
+
+void KX_BlenderMaterial::ReleaseMaterial()
+{
+ if (mBlenderShader)
+ mBlenderShader->ReloadMaterial();
+}
+
+void KX_BlenderMaterial::OnConstruction(int layer)
{
if (mConstructed)
// when material are reused between objects
return;
if(mMaterial->glslmat)
- SetBlenderGLSLShader();
+ SetBlenderGLSLShader(layer);
// for each unique material...
int i;
@@ -377,10 +415,12 @@ KX_BlenderMaterial::ActivatShaders(
}
else
rasty->SetLines(false);
+ ActivatGLMaterials(rasty);
+ ActivateTexGen(rasty);
}
- ActivatGLMaterials(rasty);
- ActivateTexGen(rasty);
+ //ActivatGLMaterials(rasty);
+ //ActivateTexGen(rasty);
}
void
@@ -469,10 +509,12 @@ KX_BlenderMaterial::ActivateMat(
}
else
rasty->SetLines(false);
+ ActivatGLMaterials(rasty);
+ ActivateTexGen(rasty);
}
- ActivatGLMaterials(rasty);
- ActivateTexGen(rasty);
+ //ActivatGLMaterials(rasty);
+ //ActivateTexGen(rasty);
}
bool
@@ -601,8 +643,7 @@ void KX_BlenderMaterial::ActivateTexGen(RAS_IRasterizer *ras) const
if (mode &USECUSTOMUV)
{
- STR_String str = mMaterial->mapping[i].uvCoName;
- if (!str.IsEmpty())
+ if (!mMaterial->mapping[i].uvCoName.IsEmpty())
ras->SetTexCoord(RAS_IRasterizer::RAS_TEXCO_UV2, i);
continue;
}
@@ -749,12 +790,20 @@ PyMethodDef KX_BlenderMaterial::Methods[] =
};
PyAttributeDef KX_BlenderMaterial::Attributes[] = {
+ //KX_PYATTRIBUTE_TODO("shader"),
+ //KX_PYATTRIBUTE_TODO("materialIndex"),
+ //KX_PYATTRIBUTE_TODO("blending"),
{ NULL } //Sentinel
};
PyTypeObject KX_BlenderMaterial::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_BlenderMaterial",
sizeof(PyObjectPlus_Proxy),
0,
@@ -784,6 +833,10 @@ PyObject* KX_BlenderMaterial::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
+PyObject* KX_BlenderMaterial::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
+
int KX_BlenderMaterial::py_setattro(PyObject *attr, PyObject *pyvalue)
{
return PyObjectPlus::py_setattro(attr, pyvalue);
@@ -846,10 +899,10 @@ KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
}
-void KX_BlenderMaterial::SetBlenderGLSLShader(void)
+void KX_BlenderMaterial::SetBlenderGLSLShader(int layer)
{
if(!mBlenderShader)
- mBlenderShader = new BL_BlenderShader(mScene, mMaterial->material, m_lightlayer);
+ mBlenderShader = new BL_BlenderShader(mScene, mMaterial->material, layer);
if(!mBlenderShader->Ok()) {
delete mBlenderShader;
@@ -859,7 +912,7 @@ void KX_BlenderMaterial::SetBlenderGLSLShader(void)
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getMaterialIndex, "getMaterialIndex()")
{
- return PyInt_FromLong( mMaterial->material_index );
+ return PyInt_FromLong( GetMaterialIndex() );
}
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getTexture, "getTexture( index )" )
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index 48d4730ab07..b29f2df98db 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -24,11 +24,13 @@ class KX_BlenderMaterial : public PyObjectPlus, public RAS_IPolyMaterial
public:
// --------------------------------
KX_BlenderMaterial(
+ PyTypeObject* T=&Type
+ );
+ void Initialize(
class KX_Scene* scene,
BL_Material* mat,
bool skin,
- int lightlayer,
- PyTypeObject* T=&Type
+ int lightlayer
);
virtual ~KX_BlenderMaterial();
@@ -73,7 +75,6 @@ public:
Image * getImage (unsigned int idx) {
return (idx < MAXTEX && mMaterial) ? mMaterial->img[idx] : NULL;
}
-
// for ipos
void UpdateIPO(
MT_Vector4 rgba, MT_Vector3 specrgb,
@@ -83,6 +84,7 @@ public:
// --------------------------------
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
virtual PyObject* py_repr(void) { return PyString_FromString(mMaterial->matname.ReadPtr()); }
@@ -95,7 +97,7 @@ public:
// --------------------------------
// pre calculate to avoid pops/lag at startup
- virtual void OnConstruction( );
+ virtual void OnConstruction(int layer);
static void EndFrame();
@@ -110,12 +112,16 @@ private:
bool mModified;
bool mConstructed; // if false, don't clean on exit
- void SetBlenderGLSLShader();
+ void SetBlenderGLSLShader(int layer);
void ActivatGLMaterials( RAS_IRasterizer* rasty )const;
void ActivateTexGen( RAS_IRasterizer *ras ) const;
bool UsesLighting(RAS_IRasterizer *rasty) const;
+ void GetMaterialRGBAColor(unsigned char *rgba) const;
+ Material* GetBlenderMaterial() const;
+ Scene* GetBlenderScene() const;
+ void ReleaseMaterial();
// message centers
void setTexData( bool enable,RAS_IRasterizer *ras);
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
index 831f9241fec..748b0667061 100644
--- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
+++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
@@ -17,13 +17,17 @@
#include "BulletSoftBody/btSoftBody.h"
-KX_BulletPhysicsController::KX_BulletPhysicsController (const CcdConstructionInfo& ci, bool dyna, bool compound)
-: KX_IPhysicsController(dyna,compound,(PHY_IPhysicsController*)this),
+KX_BulletPhysicsController::KX_BulletPhysicsController (const CcdConstructionInfo& ci, bool dyna, bool sensor, bool compound)
+: KX_IPhysicsController(dyna,sensor,compound,(PHY_IPhysicsController*)this),
CcdPhysicsController(ci),
m_savedCollisionFlags(0),
+m_savedCollisionFilterGroup(0),
+m_savedCollisionFilterMask(0),
+m_savedMass(0.0),
+m_savedDyna(false),
+m_suspended(false),
m_bulletChildShape(NULL)
{
-
}
KX_BulletPhysicsController::~KX_BulletPhysicsController ()
@@ -88,7 +92,13 @@ void KX_BulletPhysicsController::SetObject (SG_IObject* object)
gameobj->SetPhysicsController(this,gameobj->IsDynamic());
CcdPhysicsController::setNewClientInfo(gameobj->getClientInfo());
-
+ if (m_bSensor)
+ {
+ // use a different callback function for sensor object,
+ // bullet will not synchronize, we must do it explicitely
+ SG_Callbacks& callbacks = gameobj->GetSGNode()->GetCallBackFunctions();
+ callbacks.m_updatefunc = KX_GameObject::SynchronizeTransformFunc;
+ }
}
MT_Scalar KX_BulletPhysicsController::GetRadius()
@@ -170,6 +180,20 @@ void KX_BulletPhysicsController::setScaling(const MT_Vector3& scaling)
{
CcdPhysicsController::setScaling(scaling.x(),scaling.y(),scaling.z());
}
+void KX_BulletPhysicsController::SetTransform()
+{
+ btVector3 pos;
+ btVector3 scale;
+ float ori[12];
+ m_MotionState->getWorldPosition(pos.m_floats[0],pos.m_floats[1],pos.m_floats[2]);
+ m_MotionState->getWorldScaling(scale.m_floats[0],scale.m_floats[1],scale.m_floats[2]);
+ m_MotionState->getWorldOrientation(ori);
+ btMatrix3x3 rot(ori[0], ori[4], ori[8],
+ ori[1], ori[5], ori[9],
+ ori[2], ori[6], ori[10]);
+ CcdPhysicsController::forceWorldTransform(rot, pos);
+}
+
MT_Scalar KX_BulletPhysicsController::GetMass()
{
if (GetSoftBody())
@@ -258,7 +282,7 @@ void KX_BulletPhysicsController::AddCompoundChild(KX_IPhysicsController* chil
// add to parent compound shapeinfo
GetShapeInfo()->AddShape(proxyShapeInfo);
// create new bullet collision shape from the object shapeinfo and set scaling
- btCollisionShape* newChildShape = proxyShapeInfo->CreateBulletShape();
+ btCollisionShape* newChildShape = proxyShapeInfo->CreateBulletShape(childCtrl->GetMargin());
newChildShape->setLocalScaling(relativeScale);
// add bullet collision shape to parent compound collision shape
compoundShape->addChildShape(proxyShapeInfo->m_childTrans,newChildShape);
@@ -337,8 +361,7 @@ void KX_BulletPhysicsController::RemoveCompoundChild(KX_IPhysicsController* c
void KX_BulletPhysicsController::SetMass(MT_Scalar newmass)
{
btRigidBody *body = GetRigidBody();
- if (body && body->getActivationState() != DISABLE_SIMULATION &&
- newmass>MT_EPSILON && GetMass()>MT_EPSILON)
+ if (body && !m_suspended && newmass>MT_EPSILON && GetMass()>MT_EPSILON)
{
btVector3 grav = body->getGravity();
btVector3 accel = grav / GetMass();
@@ -356,34 +379,37 @@ void KX_BulletPhysicsController::SetMass(MT_Scalar newmass)
void KX_BulletPhysicsController::SuspendDynamics(bool ghost)
{
btRigidBody *body = GetRigidBody();
- if (body && body->getActivationState() != DISABLE_SIMULATION)
+ if (body && !m_suspended && !IsSensor())
{
btBroadphaseProxy* handle = body->getBroadphaseHandle();
m_savedCollisionFlags = body->getCollisionFlags();
m_savedMass = GetMass();
+ m_savedDyna = m_bDyna;
m_savedCollisionFilterGroup = handle->m_collisionFilterGroup;
m_savedCollisionFilterMask = handle->m_collisionFilterMask;
- m_savedActivationState = body->getActivationState();
- body->forceActivationState(DISABLE_SIMULATION);
+ m_suspended = true;
GetPhysicsEnvironment()->updateCcdPhysicsController(this,
0.0,
btCollisionObject::CF_STATIC_OBJECT|((ghost)?btCollisionObject::CF_NO_CONTACT_RESPONSE:(m_savedCollisionFlags&btCollisionObject::CF_NO_CONTACT_RESPONSE)),
btBroadphaseProxy::StaticFilter,
btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);
+ m_bDyna = false;
}
}
void KX_BulletPhysicsController::RestoreDynamics()
{
btRigidBody *body = GetRigidBody();
- if (body && body->getActivationState() == DISABLE_SIMULATION)
+ if (body && m_suspended)
{
GetPhysicsEnvironment()->updateCcdPhysicsController(this,
m_savedMass,
m_savedCollisionFlags,
m_savedCollisionFilterGroup,
m_savedCollisionFilterMask);
- body->forceActivationState(m_savedActivationState);
+ body->activate();
+ m_bDyna = m_savedDyna;
+ m_suspended = false;
}
}
@@ -438,12 +464,12 @@ SG_Controller* KX_BulletPhysicsController::GetReplica(class SG_Node* destnode)
void KX_BulletPhysicsController::SetSumoTransform(bool nondynaonly)
{
- if (GetRigidBody())
- GetRigidBody()->activate(true);
- if (!m_bDyna)
+ if (!m_bDyna && !m_bSensor)
{
- GetCollisionObject()->setCollisionFlags(GetRigidBody()->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ btCollisionObject* object = GetRigidBody();
+ object->setActivationState(ACTIVE_TAG);
+ object->setCollisionFlags(object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
} else
{
if (!nondynaonly)
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.h b/source/gameengine/Ketsji/KX_BulletPhysicsController.h
index b39098206f7..755b1cbd780 100644
--- a/source/gameengine/Ketsji/KX_BulletPhysicsController.h
+++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.h
@@ -13,11 +13,13 @@ private:
short int m_savedCollisionFilterGroup;
short int m_savedCollisionFilterMask;
MT_Scalar m_savedMass;
+ bool m_savedDyna;
+ bool m_suspended;
btCollisionShape* m_bulletChildShape;
public:
- KX_BulletPhysicsController (const CcdConstructionInfo& ci, bool dyna, bool compound);
+ KX_BulletPhysicsController (const CcdConstructionInfo& ci, bool dyna, bool sensor, bool compound);
virtual ~KX_BulletPhysicsController ();
///////////////////////////////////
@@ -40,6 +42,7 @@ public:
virtual void setOrientation(const MT_Matrix3x3& orn);
virtual void setPosition(const MT_Point3& pos);
virtual void setScaling(const MT_Vector3& scaling);
+ virtual void SetTransform();
virtual MT_Scalar GetMass();
virtual void SetMass(MT_Scalar newmass);
virtual MT_Vector3 GetLocalInertia();
diff --git a/source/gameengine/Ketsji/KX_CDActuator.cpp b/source/gameengine/Ketsji/KX_CDActuator.cpp
index 121d4512265..8511526fd5f 100644
--- a/source/gameengine/Ketsji/KX_CDActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CDActuator.cpp
@@ -74,9 +74,6 @@ CValue* KX_CDActuator::GetReplica()
{
KX_CDActuator* replica = new KX_CDActuator(*this);
replica->ProcessReplica();
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
};
@@ -158,8 +155,13 @@ bool KX_CDActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_CDActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SoundActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -212,7 +214,7 @@ int KX_CDActuator::pyattr_setGain(void *self, const struct KX_PYATTRIBUTE_DEF *a
{
KX_CDActuator* act = static_cast<KX_CDActuator*>(self);
SND_CDObject::Instance()->SetGain(act->m_gain);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_CDActuator::py_getattro(PyObject *attr)
@@ -220,6 +222,10 @@ PyObject* KX_CDActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_CDActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_CDActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);
diff --git a/source/gameengine/Ketsji/KX_CDActuator.h b/source/gameengine/Ketsji/KX_CDActuator.h
index b674755e59f..2fd05ab72e5 100644
--- a/source/gameengine/Ketsji/KX_CDActuator.h
+++ b/source/gameengine/Ketsji/KX_CDActuator.h
@@ -82,6 +82,7 @@ public:
/* -------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp
index c8575424751..ba4d6e22872 100644
--- a/source/gameengine/Ketsji/KX_Camera.cpp
+++ b/source/gameengine/Ketsji/KX_Camera.cpp
@@ -28,6 +28,7 @@
* Camera in the gameengine. Cameras are also used for views.
*/
+#include "GL/glew.h"
#include "KX_Camera.h"
#include "KX_Scene.h"
#include "KX_PythonInit.h"
@@ -41,15 +42,17 @@ KX_Camera::KX_Camera(void* sgReplicationInfo,
SG_Callbacks callbacks,
const RAS_CameraData& camdata,
bool frustum_culling,
+ bool delete_node,
PyTypeObject *T)
:
KX_GameObject(sgReplicationInfo,callbacks,T),
m_camdata(camdata),
m_dirty(true),
m_normalized(false),
- m_frustum_culling(frustum_culling && camdata.m_perspective),
+ m_frustum_culling(frustum_culling),
m_set_projection_matrix(false),
- m_set_frustum_center(false)
+ m_set_frustum_center(false),
+ m_delete_node(delete_node)
{
// setting a name would be nice...
m_name = "cam";
@@ -63,6 +66,12 @@ KX_Camera::KX_Camera(void* sgReplicationInfo,
KX_Camera::~KX_Camera()
{
+ if (m_delete_node && m_pSGNode)
+ {
+ // for shadow camera, avoids memleak
+ delete m_pSGNode;
+ m_pSGNode = NULL;
+ }
}
@@ -71,15 +80,16 @@ CValue* KX_Camera::GetReplica()
KX_Camera* replica = new KX_Camera(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
-
-void KX_Camera::ProcessReplica(KX_Camera* replica)
+
+void KX_Camera::ProcessReplica()
{
- KX_GameObject::ProcessReplica(replica);
+ KX_GameObject::ProcessReplica();
+ // replicated camera are always registered in the scene
+ m_delete_node = false;
}
MT_Transform KX_Camera::GetWorldToCamera() const
@@ -190,6 +200,11 @@ float KX_Camera::GetLens() const
return m_camdata.m_lens;
}
+float KX_Camera::GetScale() const
+{
+ return m_camdata.m_scale;
+}
+
float KX_Camera::GetCameraNear() const
@@ -270,80 +285,83 @@ void KX_Camera::ExtractFrustumSphere()
MT_Matrix4x4 clip_camcs_matrix = m_projection_matrix;
clip_camcs_matrix.invert();
- // detect which of the corner of the far clipping plane is the farthest to the origin
- MT_Vector4 nfar; // far point in device normalized coordinate
- MT_Point3 farpoint; // most extreme far point in camera coordinate
- MT_Point3 nearpoint;// most extreme near point in camera coordinate
- MT_Point3 farcenter(0.,0.,0.);// center of far cliping plane in camera coordinate
- MT_Scalar F=1.0, N; // square distance of far and near point to origin
- MT_Scalar f, n; // distance of far and near point to z axis. f is always > 0 but n can be < 0
- MT_Scalar e, s; // far and near clipping distance (<0)
- MT_Scalar c; // slope of center line = distance of far clipping center to z axis / far clipping distance
- MT_Scalar z; // projection of sphere center on z axis (<0)
- // tmp value
- MT_Vector4 npoint(1., 1., 1., 1.);
- MT_Vector4 hpoint;
- MT_Point3 point;
- MT_Scalar len;
- for (int i=0; i<4; i++)
- {
- hpoint = clip_camcs_matrix*npoint;
- point.setValue(hpoint[0]/hpoint[3], hpoint[1]/hpoint[3], hpoint[2]/hpoint[3]);
- len = point.dot(point);
- if (len > F)
- {
- nfar = npoint;
- farpoint = point;
- F = len;
- }
- // rotate by 90 degree along the z axis to walk through the 4 extreme points of the far clipping plane
- len = npoint[0];
- npoint[0] = -npoint[1];
- npoint[1] = len;
- farcenter += point;
- }
- // the far center is the average of the far clipping points
- farcenter *= 0.25;
- // the extreme near point is the opposite point on the near clipping plane
- nfar.setValue(-nfar[0], -nfar[1], -1., 1.);
- nfar = clip_camcs_matrix*nfar;
- nearpoint.setValue(nfar[0]/nfar[3], nfar[1]/nfar[3], nfar[2]/nfar[3]);
- N = nearpoint.dot(nearpoint);
- e = farpoint[2];
- s = nearpoint[2];
- // projection on XY plane for distance to axis computation
- MT_Point2 farxy(farpoint[0], farpoint[1]);
- // f is forced positive by construction
- f = farxy.length();
- // get corresponding point on the near plane
- farxy *= s/e;
- // this formula preserve the sign of n
- n = f*s/e - MT_Point2(nearpoint[0]-farxy[0], nearpoint[1]-farxy[1]).length();
- c = MT_Point2(farcenter[0], farcenter[1]).length()/e;
- // the big formula, it simplifies to (F-N)/(2(e-s)) for the symmetric case
- z = (F-N)/(2.0*(e-s+c*(f-n)));
- m_frustum_center = MT_Point3(farcenter[0]*z/e, farcenter[1]*z/e, z);
- m_frustum_radius = m_frustum_center.distance(farpoint);
-
-#if 0
- // The most extreme points on the near and far plane. (normalized device coords)
- MT_Vector4 hnear(1., 1., 0., 1.), hfar(1., 1., 1., 1.);
-
- // Transform to hom camera local space
- hnear = clip_camcs_matrix*hnear;
- hfar = clip_camcs_matrix*hfar;
-
- // Tranform to 3d camera local space.
- MT_Point3 nearpoint(hnear[0]/hnear[3], hnear[1]/hnear[3], hnear[2]/hnear[3]);
- MT_Point3 farpoint(hfar[0]/hfar[3], hfar[1]/hfar[3], hfar[2]/hfar[3]);
-
- // Compute center
- // don't use camera data in case the user specifies the matrix directly
- m_frustum_center = MT_Point3(0., 0.,
- (nearpoint.dot(nearpoint) - farpoint.dot(farpoint))/(2.0*(nearpoint[2]-farpoint[2] /*m_camdata.m_clipend - m_camdata.m_clipstart*/)));
- m_frustum_radius = m_frustum_center.distance(farpoint);
-#endif
-
+ if (m_projection_matrix[3][3] == MT_Scalar(0.0))
+ {
+ // frustrum projection
+ // detect which of the corner of the far clipping plane is the farthest to the origin
+ MT_Vector4 nfar; // far point in device normalized coordinate
+ MT_Point3 farpoint; // most extreme far point in camera coordinate
+ MT_Point3 nearpoint;// most extreme near point in camera coordinate
+ MT_Point3 farcenter(0.,0.,0.);// center of far cliping plane in camera coordinate
+ MT_Scalar F=-1.0, N; // square distance of far and near point to origin
+ MT_Scalar f, n; // distance of far and near point to z axis. f is always > 0 but n can be < 0
+ MT_Scalar e, s; // far and near clipping distance (<0)
+ MT_Scalar c; // slope of center line = distance of far clipping center to z axis / far clipping distance
+ MT_Scalar z; // projection of sphere center on z axis (<0)
+ // tmp value
+ MT_Vector4 npoint(1., 1., 1., 1.);
+ MT_Vector4 hpoint;
+ MT_Point3 point;
+ MT_Scalar len;
+ for (int i=0; i<4; i++)
+ {
+ hpoint = clip_camcs_matrix*npoint;
+ point.setValue(hpoint[0]/hpoint[3], hpoint[1]/hpoint[3], hpoint[2]/hpoint[3]);
+ len = point.dot(point);
+ if (len > F)
+ {
+ nfar = npoint;
+ farpoint = point;
+ F = len;
+ }
+ // rotate by 90 degree along the z axis to walk through the 4 extreme points of the far clipping plane
+ len = npoint[0];
+ npoint[0] = -npoint[1];
+ npoint[1] = len;
+ farcenter += point;
+ }
+ // the far center is the average of the far clipping points
+ farcenter *= 0.25;
+ // the extreme near point is the opposite point on the near clipping plane
+ nfar.setValue(-nfar[0], -nfar[1], -1., 1.);
+ nfar = clip_camcs_matrix*nfar;
+ nearpoint.setValue(nfar[0]/nfar[3], nfar[1]/nfar[3], nfar[2]/nfar[3]);
+ // this is a frustrum projection
+ N = nearpoint.dot(nearpoint);
+ e = farpoint[2];
+ s = nearpoint[2];
+ // projection on XY plane for distance to axis computation
+ MT_Point2 farxy(farpoint[0], farpoint[1]);
+ // f is forced positive by construction
+ f = farxy.length();
+ // get corresponding point on the near plane
+ farxy *= s/e;
+ // this formula preserve the sign of n
+ n = f*s/e - MT_Point2(nearpoint[0]-farxy[0], nearpoint[1]-farxy[1]).length();
+ c = MT_Point2(farcenter[0], farcenter[1]).length()/e;
+ // the big formula, it simplifies to (F-N)/(2(e-s)) for the symmetric case
+ z = (F-N)/(2.0*(e-s+c*(f-n)));
+ m_frustum_center = MT_Point3(farcenter[0]*z/e, farcenter[1]*z/e, z);
+ m_frustum_radius = m_frustum_center.distance(farpoint);
+ }
+ else
+ {
+ // orthographic projection
+ // The most extreme points on the near and far plane. (normalized device coords)
+ MT_Vector4 hnear(1., 1., 1., 1.), hfar(-1., -1., -1., 1.);
+
+ // Transform to hom camera local space
+ hnear = clip_camcs_matrix*hnear;
+ hfar = clip_camcs_matrix*hfar;
+
+ // Tranform to 3d camera local space.
+ MT_Point3 nearpoint(hnear[0]/hnear[3], hnear[1]/hnear[3], hnear[2]/hnear[3]);
+ MT_Point3 farpoint(hfar[0]/hfar[3], hfar[1]/hfar[3], hfar[2]/hfar[3]);
+
+ // just use mediant point
+ m_frustum_center = (farpoint + nearpoint)*0.5;
+ m_frustum_radius = m_frustum_center.distance(farpoint);
+ }
// Transform to world space.
m_frustum_center = GetCameraToWorld()(m_frustum_center);
m_frustum_radius /= fabs(NodeGetWorldScaling()[NodeGetWorldScaling().closestAxis()]);
@@ -474,11 +492,16 @@ PyMethodDef KX_Camera::Methods[] = {
KX_PYMETHODTABLE_O(KX_Camera, pointInsideFrustum),
KX_PYMETHODTABLE_NOARGS(KX_Camera, getCameraToWorld),
KX_PYMETHODTABLE_NOARGS(KX_Camera, getWorldToCamera),
- KX_PYMETHODTABLE_NOARGS(KX_Camera, getProjectionMatrix),
- KX_PYMETHODTABLE_O(KX_Camera, setProjectionMatrix),
- KX_PYMETHODTABLE_O(KX_Camera, enableViewport),
KX_PYMETHODTABLE(KX_Camera, setViewport),
KX_PYMETHODTABLE_NOARGS(KX_Camera, setOnTop),
+ KX_PYMETHODTABLE_O(KX_Camera, getScreenPosition),
+ KX_PYMETHODTABLE(KX_Camera, getScreenVect),
+ KX_PYMETHODTABLE(KX_Camera, getScreenRay),
+
+ // DEPRECATED
+ KX_PYMETHODTABLE_O(KX_Camera, enableViewport),
+ KX_PYMETHODTABLE_NOARGS(KX_Camera, getProjectionMatrix),
+ KX_PYMETHODTABLE_O(KX_Camera, setProjectionMatrix),
{NULL,NULL} //Sentinel
};
@@ -492,7 +515,9 @@ PyAttributeDef KX_Camera::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("near", KX_Camera, pyattr_get_near, pyattr_set_near),
KX_PYATTRIBUTE_RW_FUNCTION("far", KX_Camera, pyattr_get_far, pyattr_set_far),
- KX_PYATTRIBUTE_RO_FUNCTION("projection_matrix", KX_Camera, pyattr_get_projection_matrix),
+ KX_PYATTRIBUTE_RW_FUNCTION("useViewport", KX_Camera, pyattr_get_use_viewport, pyattr_set_use_viewport),
+
+ KX_PYATTRIBUTE_RW_FUNCTION("projection_matrix", KX_Camera, pyattr_get_projection_matrix, pyattr_set_projection_matrix),
KX_PYATTRIBUTE_RO_FUNCTION("modelview_matrix", KX_Camera, pyattr_get_modelview_matrix),
KX_PYATTRIBUTE_RO_FUNCTION("camera_to_world", KX_Camera, pyattr_get_camera_to_world),
KX_PYATTRIBUTE_RO_FUNCTION("world_to_camera", KX_Camera, pyattr_get_world_to_camera),
@@ -506,8 +531,13 @@ PyAttributeDef KX_Camera::Attributes[] = {
};
PyTypeObject KX_Camera::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_Camera",
sizeof(PyObjectPlus_Proxy),
0,
@@ -544,6 +574,10 @@ PyObject* KX_Camera::py_getattro(PyObject *attr)
py_getattro_up(KX_GameObject);
}
+PyObject* KX_Camera::py_getattro_dict() {
+ py_getattro_dict_up(KX_GameObject);
+}
+
int KX_Camera::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(KX_GameObject);
@@ -678,6 +712,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Camera, getProjectionMatrix,
"\tie: [[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]])\n"
)
{
+ ShowDeprecationWarning("getProjectionMatrix()", "the projection_matrix property");
return PyObjectFrom(GetProjectionMatrix()); /* new ref */
}
@@ -723,6 +758,8 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, setProjectionMatrix,
"\tcam = co.getOwner()\n"
"\tcam.setProjectionMatrix(Perspective(-1.0, 1.0, -1.0, 1.0, 0.1, 1))\n")
{
+ ShowDeprecationWarning("setProjectionMatrix(mat)", "the projection_matrix property");
+
MT_Matrix4x4 mat;
if (!PyMatTo(value, mat))
{
@@ -739,8 +776,9 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, enableViewport,
"Sets this camera's viewport status\n"
)
{
- int viewport = PyObject_IsTrue(value);
+ ShowDeprecationWarning("enableViewport(bool)", "the useViewport property");
+ int viewport = PyObject_IsTrue(value);
if (viewport == -1) {
PyErr_SetString(PyExc_ValueError, "camera.enableViewport(bool): KX_Camera, expected True/False or 0/1");
return NULL;
@@ -770,10 +808,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Camera, setOnTop,
"setOnTop()\n"
"Sets this camera's viewport on top\n")
{
- class KX_Scene* scene;
-
- scene = KX_GetActiveScene();
- MT_assert(scene);
+ class KX_Scene* scene = KX_GetActiveScene();
scene->SetCameraOnTop(this);
Py_RETURN_NONE;
}
@@ -790,11 +825,11 @@ int KX_Camera::pyattr_set_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *at
int param = PyObject_IsTrue( value );
if (param == -1) {
PyErr_SetString(PyExc_AttributeError, "camera.perspective = bool: KX_Camera, expected True/False or 0/1");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
self->m_camdata.m_perspective= param;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_Camera::pyattr_get_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -809,12 +844,12 @@ int KX_Camera::pyattr_set_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef,
float param = PyFloat_AsDouble(value);
if (param == -1) {
PyErr_SetString(PyExc_AttributeError, "camera.lens = float: KX_Camera, expected a float greater then zero");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
self->m_camdata.m_lens= param;
self->m_set_projection_matrix = false;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_Camera::pyattr_get_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -829,12 +864,12 @@ int KX_Camera::pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef,
float param = PyFloat_AsDouble(value);
if (param == -1) {
PyErr_SetString(PyExc_AttributeError, "camera.near = float: KX_Camera, expected a float greater then zero");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
self->m_camdata.m_clipstart= param;
self->m_set_projection_matrix = false;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_Camera::pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -849,14 +884,34 @@ int KX_Camera::pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, P
float param = PyFloat_AsDouble(value);
if (param == -1) {
PyErr_SetString(PyExc_AttributeError, "camera.far = float: KX_Camera, expected a float greater then zero");
- return -1;
+ return PY_SET_ATTR_FAIL;
}
self->m_camdata.m_clipend= param;
self->m_set_projection_matrix = false;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
+}
+
+
+PyObject* KX_Camera::pyattr_get_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyBool_FromLong(self->GetViewport());
+}
+
+int KX_Camera::pyattr_set_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ int param = PyObject_IsTrue( value );
+ if (param == -1) {
+ PyErr_SetString(PyExc_AttributeError, "camera.useViewport = bool: KX_Camera, expected True or False");
+ return PY_SET_ATTR_FAIL;
+ }
+ self->EnableViewport((bool)param);
+ return PY_SET_ATTR_SUCCESS;
}
+
PyObject* KX_Camera::pyattr_get_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_Camera* self= static_cast<KX_Camera*>(self_v);
@@ -868,10 +923,10 @@ int KX_Camera::pyattr_set_projection_matrix(void *self_v, const KX_PYATTRIBUTE_D
KX_Camera* self= static_cast<KX_Camera*>(self_v);
MT_Matrix4x4 mat;
if (!PyMatTo(value, mat))
- return -1;
+ return PY_SET_ATTR_FAIL;
self->SetProjectionMatrix(mat);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_Camera::pyattr_get_modelview_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -900,3 +955,197 @@ PyObject* KX_Camera::pyattr_get_OUTSIDE(void *self_v, const KX_PYATTRIBUTE_DEF *
PyObject* KX_Camera::pyattr_get_INTERSECT(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{ return PyInt_FromLong(INTERSECT); }
+
+bool ConvertPythonToCamera(PyObject * value, KX_Camera **object, bool py_none_ok, const char *error_prefix)
+{
+ if (value==NULL) {
+ PyErr_Format(PyExc_TypeError, "%s, python pointer NULL, should never happen", error_prefix);
+ *object = NULL;
+ return false;
+ }
+
+ if (value==Py_None) {
+ *object = NULL;
+
+ if (py_none_ok) {
+ return true;
+ } else {
+ PyErr_Format(PyExc_TypeError, "%s, expected KX_Camera or a KX_Camera name, None is invalid", error_prefix);
+ return false;
+ }
+ }
+
+ if (PyString_Check(value)) {
+ STR_String value_str = PyString_AsString(value);
+ *object = KX_GetActiveScene()->FindCamera(value_str);
+
+ if (*object) {
+ return true;
+ } else {
+ PyErr_Format(PyExc_ValueError, "%s, requested name \"%s\" did not match any KX_Camera in this scene", error_prefix, PyString_AsString(value));
+ return false;
+ }
+ }
+
+ if (PyObject_TypeCheck(value, &KX_Camera::Type)) {
+ *object = static_cast<KX_Camera*>BGE_PROXY_REF(value);
+
+ /* sets the error */
+ if (*object==NULL) {
+ PyErr_Format(PyExc_SystemError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
+ return false;
+ }
+
+ return true;
+ }
+
+ *object = NULL;
+
+ if (py_none_ok) {
+ PyErr_Format(PyExc_TypeError, "%s, expect a KX_Camera, a string or None", error_prefix);
+ } else {
+ PyErr_Format(PyExc_TypeError, "%s, expect a KX_Camera or a string", error_prefix);
+ }
+
+ return false;
+}
+
+KX_PYMETHODDEF_DOC_O(KX_Camera, getScreenPosition,
+"getScreenPosition()\n"
+)
+
+{
+ MT_Vector3 vect;
+ KX_GameObject *obj = NULL;
+
+ if (!PyVecTo(value, vect))
+ {
+ if(ConvertPythonToGameObject(value, &obj, true, ""))
+ {
+ PyErr_Clear();
+ vect = MT_Vector3(obj->NodeGetWorldPosition());
+ }
+ else
+ {
+ PyErr_SetString(PyExc_TypeError, "Error in getScreenPosition. Expected a Vector3 or a KX_GameObject or a string for a name of a KX_GameObject");
+ return NULL;
+ }
+ }
+
+ GLint viewport[4];
+ GLdouble win[3];
+ GLdouble modelmatrix[16];
+ GLdouble projmatrix[16];
+
+ MT_Matrix4x4 m_modelmatrix = this->GetModelviewMatrix();
+ MT_Matrix4x4 m_projmatrix = this->GetProjectionMatrix();
+
+ m_modelmatrix.getValue(modelmatrix);
+ m_projmatrix.getValue(projmatrix);
+
+ glGetIntegerv(GL_VIEWPORT, viewport);
+
+ gluProject(vect[0], vect[1], vect[2], modelmatrix, projmatrix, viewport, &win[0], &win[1], &win[2]);
+
+ vect[0] = (win[0] - viewport[0]) / viewport[2];
+ vect[1] = (win[1] - viewport[1]) / viewport[3];
+
+ vect[1] = 1.0 - vect[1]; //to follow Blender window coordinate system (Top-Down)
+
+ PyObject* ret = PyTuple_New(2);
+ if(ret){
+ PyTuple_SET_ITEM(ret, 0, PyFloat_FromDouble(vect[0]));
+ PyTuple_SET_ITEM(ret, 1, PyFloat_FromDouble(vect[1]));
+ return ret;
+ }
+
+ return NULL;
+}
+
+KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, getScreenVect,
+"getScreenVect()\n"
+)
+{
+ double x,y;
+ if (!PyArg_ParseTuple(args,"dd:getScreenVect",&x,&y))
+ return NULL;
+
+ y = 1.0 - y; //to follow Blender window coordinate system (Top-Down)
+
+ MT_Vector3 vect;
+ MT_Point3 campos, screenpos;
+
+ GLint viewport[4];
+ GLdouble win[3];
+ GLdouble modelmatrix[16];
+ GLdouble projmatrix[16];
+
+ MT_Matrix4x4 m_modelmatrix = this->GetModelviewMatrix();
+ MT_Matrix4x4 m_projmatrix = this->GetProjectionMatrix();
+
+ m_modelmatrix.getValue(modelmatrix);
+ m_projmatrix.getValue(projmatrix);
+
+ glGetIntegerv(GL_VIEWPORT, viewport);
+
+ vect[0] = x * viewport[2];
+ vect[1] = y * viewport[3];
+
+ vect[0] += viewport[0];
+ vect[1] += viewport[1];
+
+ glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &vect[2]);
+ gluUnProject(vect[0], vect[1], vect[2], modelmatrix, projmatrix, viewport, &win[0], &win[1], &win[2]);
+
+ campos = this->GetCameraLocation();
+ screenpos = MT_Point3(win[0], win[1], win[2]);
+ vect = campos-screenpos;
+
+ vect.normalize();
+ return PyObjectFrom(vect);
+}
+
+KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, getScreenRay,
+"getScreenRay()\n"
+)
+{
+ MT_Vector3 vect;
+ double x,y,dist;
+ char *propName = NULL;
+
+ if (!PyArg_ParseTuple(args,"ddd|s:getScreenRay",&x,&y,&dist,&propName))
+ return NULL;
+
+ PyObject* argValue = PyTuple_New(2);
+ if (argValue) {
+ PyTuple_SET_ITEM(argValue, 0, PyFloat_FromDouble(x));
+ PyTuple_SET_ITEM(argValue, 1, PyFloat_FromDouble(y));
+ }
+
+ if(!PyVecTo(PygetScreenVect(argValue), vect))
+ {
+ Py_DECREF(argValue);
+ PyErr_SetString(PyExc_TypeError,
+ "Error in getScreenRay. Invalid 2D coordinate. Expected a normalized 2D screen coordinate, a distance and an optional property argument");
+ return NULL;
+ }
+ Py_DECREF(argValue);
+
+ dist = -dist;
+ vect += this->GetCameraLocation();
+
+ argValue = (propName?PyTuple_New(3):PyTuple_New(2));
+ if (argValue) {
+ PyTuple_SET_ITEM(argValue, 0, PyObjectFrom(vect));
+ PyTuple_SET_ITEM(argValue, 1, PyFloat_FromDouble(dist));
+ if (propName)
+ PyTuple_SET_ITEM(argValue, 2, PyString_FromString(propName));
+
+ PyObject* ret= this->PyrayCastTo(argValue,NULL);
+ Py_DECREF(argValue);
+ return ret;
+ }
+
+ return NULL;
+}
+
diff --git a/source/gameengine/Ketsji/KX_Camera.h b/source/gameengine/Ketsji/KX_Camera.h
index 4accd4bc2f1..aef21cd91e4 100644
--- a/source/gameengine/Ketsji/KX_Camera.h
+++ b/source/gameengine/Ketsji/KX_Camera.h
@@ -41,6 +41,9 @@
#include "IntValue.h"
#include "RAS_CameraData.h"
+/* utility conversion function */
+bool ConvertPythonToCamera(PyObject * value, KX_Camera **object, bool py_none_ok, const char *error_prefix);
+
class KX_Camera : public KX_GameObject
{
Py_Header;
@@ -110,6 +113,11 @@ protected:
bool m_set_frustum_center;
/**
+ * whether the camera should delete the node itself (only for shadow camera)
+ */
+ bool m_delete_node;
+
+ /**
* Extracts the camera clip frames from the projection and world-to-camera matrices.
*/
void ExtractClipPlanes();
@@ -135,7 +143,7 @@ public:
enum { INSIDE, INTERSECT, OUTSIDE } ;
- KX_Camera(void* sgReplicationInfo,SG_Callbacks callbacks,const RAS_CameraData& camdata, bool frustum_culling = true, PyTypeObject *T = &Type);
+ KX_Camera(void* sgReplicationInfo,SG_Callbacks callbacks,const RAS_CameraData& camdata, bool frustum_culling = true, bool delete_node = false, PyTypeObject *T = &Type);
virtual ~KX_Camera();
/**
@@ -146,15 +154,7 @@ public:
virtual CValue*
GetReplica(
);
-
- /**
- * Inherited from CValue -- Makes sure any internal
- * data owned by this class is deep copied. Called internally
- */
- virtual void
- ProcessReplica(
- KX_Camera* replica
- );
+ virtual void ProcessReplica();
MT_Transform GetWorldToCamera() const;
MT_Transform GetCameraToWorld() const;
@@ -193,6 +193,8 @@ public:
/** Gets the aperture. */
float GetLens() const;
+ /** Gets the ortho scale. */
+ float GetScale() const;
/** Gets the near clip distance. */
float GetCameraNear() const;
/** Gets the far clip distance. */
@@ -277,7 +279,12 @@ public:
KX_PYMETHOD_DOC_VARARGS(KX_Camera, setViewport);
KX_PYMETHOD_DOC_NOARGS(KX_Camera, setOnTop);
+ KX_PYMETHOD_DOC_O(KX_Camera, getScreenPosition);
+ KX_PYMETHOD_DOC_VARARGS(KX_Camera, getScreenVect);
+ KX_PYMETHOD_DOC_VARARGS(KX_Camera, getScreenRay);
+
virtual PyObject* py_getattro(PyObject *attr); /* lens, near, far, projection_matrix */
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
static PyObject* pyattr_get_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
@@ -290,6 +297,9 @@ public:
static PyObject* pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
static PyObject* pyattr_get_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.cpp b/source/gameengine/Ketsji/KX_CameraActuator.cpp
index 8ef9f318142..f8557dac2c4 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CameraActuator.cpp
@@ -82,8 +82,6 @@ GetReplica(
) {
KX_CameraActuator* replica = new KX_CameraActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
};
@@ -371,8 +369,13 @@ bool KX_CameraActuator::string2axischoice(const char *axisString)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_CameraActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_CameraActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -416,7 +419,7 @@ PyAttributeDef KX_CameraActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RW("min",-FLT_MAX,FLT_MAX,KX_CameraActuator,m_minHeight),
KX_PYATTRIBUTE_FLOAT_RW("max",-FLT_MAX,FLT_MAX,KX_CameraActuator,m_maxHeight),
KX_PYATTRIBUTE_FLOAT_RW("height",-FLT_MAX,FLT_MAX,KX_CameraActuator,m_height),
- KX_PYATTRIBUTE_BOOL_RW("xy",KX_CameraActuator,m_x),
+ KX_PYATTRIBUTE_BOOL_RW("useXY",KX_CameraActuator,m_x),
KX_PYATTRIBUTE_RW_FUNCTION("object", KX_CameraActuator, pyattr_get_object, pyattr_set_object),
{NULL}
};
@@ -425,6 +428,10 @@ PyObject* KX_CameraActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_CameraActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_CameraActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}
@@ -447,7 +454,7 @@ PyObject* KX_CameraActuator::PyGetObject(PyObject* args)
Py_RETURN_NONE;
if (ret_name_only)
- return PyString_FromString(m_ob->GetName());
+ return PyString_FromString(m_ob->GetName().ReadPtr());
else
return m_ob->GetProxy();
}
@@ -554,7 +561,7 @@ const char KX_CameraActuator::SetXY_doc[] =
"\t1=x, 0=y\n";
PyObject* KX_CameraActuator::PySetXY(PyObject* args)
{
- ShowDeprecationWarning("setXY()", "the xy property");
+ ShowDeprecationWarning("setXY()", "the useXY property");
int value;
if(PyArg_ParseTuple(args,"i:setXY", &value))
{
@@ -590,7 +597,7 @@ int KX_CameraActuator::pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF
KX_GameObject *gameobj;
if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_CameraActuator"))
- return 1; // ConvertPythonToGameObject sets the error
+ return PY_SET_ATTR_FAIL; // ConvertPythonToGameObject sets the error
if (self->m_ob)
self->m_ob->UnregisterActuator(self);
@@ -598,7 +605,7 @@ int KX_CameraActuator::pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF
if ((self->m_ob = (SCA_IObject*)gameobj))
self->m_ob->RegisterActuator(self);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
/* eof */
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.h b/source/gameengine/Ketsji/KX_CameraActuator.h
index 9298e1e868d..efa4e2f38d7 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.h
+++ b/source/gameengine/Ketsji/KX_CameraActuator.h
@@ -121,6 +121,7 @@ private :
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
/* set object to look at */
diff --git a/source/gameengine/Ketsji/KX_ClientObjectInfo.h b/source/gameengine/Ketsji/KX_ClientObjectInfo.h
index 7345edb054b..077ac96f0ac 100644
--- a/source/gameengine/Ketsji/KX_ClientObjectInfo.h
+++ b/source/gameengine/Ketsji/KX_ClientObjectInfo.h
@@ -50,8 +50,9 @@ struct KX_ClientObjectInfo
STATIC,
ACTOR,
RESERVED1,
- RADAR,
- NEAR
+ SENSOR,
+ OBSENSOR,
+ OBACTORSENSOR
} m_type;
KX_GameObject* m_gameobject;
void* m_auxilary_info;
@@ -84,6 +85,7 @@ public:
}
bool isActor() { return m_type <= ACTOR; }
+ bool isSensor() { return m_type >= SENSOR && m_type <= OBACTORSENSOR; }
};
#endif //__KX_CLIENTOBJECT_INFO_H
diff --git a/source/gameengine/Ketsji/KX_ConstraintActuator.cpp b/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
index c2b4db2de8e..bd03dea486b 100644
--- a/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
@@ -565,8 +565,13 @@ bool KX_ConstraintActuator::IsValidMode(KX_ConstraintActuator::KX_CONSTRAINTTYPE
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_ConstraintActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_ConstraintActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -625,7 +630,7 @@ PyAttributeDef KX_ConstraintActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_ARRAY_RW_CHECK("direction",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_refDirection,3,pyattr_check_direction),
KX_PYATTRIBUTE_INT_RW("option",0,0xFFFF,false,KX_ConstraintActuator,m_option),
KX_PYATTRIBUTE_INT_RW("time",0,1000,true,KX_ConstraintActuator,m_activeTime),
- KX_PYATTRIBUTE_STRING_RW("property",0,32,true,KX_ConstraintActuator,m_property),
+ KX_PYATTRIBUTE_STRING_RW("propName",0,32,true,KX_ConstraintActuator,m_property),
KX_PYATTRIBUTE_FLOAT_RW("min",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_minimumBound),
KX_PYATTRIBUTE_FLOAT_RW("distance",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_minimumBound),
KX_PYATTRIBUTE_FLOAT_RW("max",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_maximumBound),
@@ -639,6 +644,10 @@ PyObject* KX_ConstraintActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_ConstraintActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_ConstraintActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);
@@ -749,9 +758,9 @@ PyObject* KX_ConstraintActuator::PyGetDirection(){
ShowDeprecationWarning("getDirection()", "the direction property");
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_refDirection[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_refDirection[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_refDirection[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_refDirection[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_refDirection[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_refDirection[2]));
return retVal;
}
diff --git a/source/gameengine/Ketsji/KX_ConstraintActuator.h b/source/gameengine/Ketsji/KX_ConstraintActuator.h
index 98f6fcd7906..40607b44947 100644
--- a/source/gameengine/Ketsji/KX_ConstraintActuator.h
+++ b/source/gameengine/Ketsji/KX_ConstraintActuator.h
@@ -132,8 +132,6 @@ protected:
virtual CValue* GetReplica() {
KX_ConstraintActuator* replica = new KX_ConstraintActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
};
@@ -144,6 +142,7 @@ protected:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
static int pyattr_check_direction(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
index 7c3abb49159..c5cf67af67d 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
@@ -48,24 +48,48 @@ KX_ConstraintWrapper::KX_ConstraintWrapper(
KX_ConstraintWrapper::~KX_ConstraintWrapper()
{
}
-//python integration methods
-PyObject* KX_ConstraintWrapper::PyTestMethod(PyObject* args, PyObject* kwds)
-{
- Py_RETURN_NONE;
-}
-PyObject* KX_ConstraintWrapper::PyGetConstraintId(PyObject* args, PyObject* kwds)
+PyObject* KX_ConstraintWrapper::PyGetConstraintId()
{
return PyInt_FromLong(m_constraintId);
}
+PyObject* KX_ConstraintWrapper::PyGetParam(PyObject* args, PyObject* kwds)
+{
+ int dof;
+ float value;
+
+ if (!PyArg_ParseTuple(args,"i:getParam",&dof))
+ return NULL;
+
+ value = m_physenv->getConstraintParam(m_constraintId,dof);
+ return PyFloat_FromDouble(value);
+
+}
+
+PyObject* KX_ConstraintWrapper::PySetParam(PyObject* args, PyObject* kwds)
+{
+ int dof;
+ float minLimit,maxLimit;
+
+ if (!PyArg_ParseTuple(args,"iff:setParam",&dof,&minLimit,&maxLimit))
+ return NULL;
+
+ m_physenv->setConstraintParam(m_constraintId,dof,minLimit,maxLimit);
+ Py_RETURN_NONE;
+}
//python specific stuff
PyTypeObject KX_ConstraintWrapper::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_ConstraintWrapper",
sizeof(PyObjectPlus_Proxy),
0,
@@ -87,45 +111,33 @@ PyParentObject KX_ConstraintWrapper::Parents[] = {
NULL
};
-PyObject* KX_ConstraintWrapper::py_getattro(PyObject *attr)
+//here you can search for existing data members (like mass,friction etc.)
+PyObject* KX_ConstraintWrapper::py_getattro(PyObject *attr)
{
- //here you can search for existing data members (like mass,friction etc.)
py_getattro_up(PyObjectPlus);
}
-int KX_ConstraintWrapper::py_setattro(PyObject *attr,PyObject* pyobj)
+PyObject* KX_ConstraintWrapper::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
+
+int KX_ConstraintWrapper::py_setattro(PyObject *attr,PyObject* value)
{
- int result = 1;
- /* what the heck is this supposed to do?, needs attention */
- if (PyList_Check(pyobj))
- {
- result = 0;
- }
- if (PyFloat_Check(pyobj))
- {
- result = 0;
-
- }
- if (PyInt_Check(pyobj))
- {
- result = 0;
- }
- if (PyString_Check(pyobj))
- {
- result = 0;
- }
- if (result)
- result = PyObjectPlus::py_setattro(attr,pyobj);
- return result;
+ py_setattro_up(PyObjectPlus);
};
+
+
+
PyMethodDef KX_ConstraintWrapper::Methods[] = {
- {"testMethod",(PyCFunction) KX_ConstraintWrapper::sPyTestMethod, METH_VARARGS},
- {"getConstraintId",(PyCFunction) KX_ConstraintWrapper::sPyGetConstraintId, METH_VARARGS},
+ {"getConstraintId",(PyCFunction) KX_ConstraintWrapper::sPyGetConstraintId, METH_NOARGS},
+ {"setParam",(PyCFunction) KX_ConstraintWrapper::sPySetParam, METH_VARARGS},
+ {"getParam",(PyCFunction) KX_ConstraintWrapper::sPyGetParam, METH_VARARGS},
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_ConstraintWrapper::Attributes[] = {
+ //KX_PYATTRIBUTE_TODO("constraintId"),
{ NULL } //Sentinel
};
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.h b/source/gameengine/Ketsji/KX_ConstraintWrapper.h
index 6e67d842cb6..03813e0f167 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.h
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.h
@@ -36,14 +36,16 @@ class KX_ConstraintWrapper : public PyObjectPlus
{
Py_Header;
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
public:
KX_ConstraintWrapper(PHY_ConstraintType ctype,int constraintId,class PHY_IPhysicsEnvironment* physenv,PyTypeObject *T = &Type);
virtual ~KX_ConstraintWrapper ();
int getConstraintId() { return m_constraintId;};
- KX_PYMETHOD(KX_ConstraintWrapper,TestMethod);
- KX_PYMETHOD(KX_ConstraintWrapper,GetConstraintId);
+ KX_PYMETHOD_NOARGS(KX_ConstraintWrapper,GetConstraintId);
+ KX_PYMETHOD(KX_ConstraintWrapper,SetParam);
+ KX_PYMETHOD(KX_ConstraintWrapper,GetParam);
private:
int m_constraintId;
diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h b/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
index 3534500e619..74042366bae 100644
--- a/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
+++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
@@ -47,6 +47,7 @@
class RAS_MeshObject;
class KX_Scene;
+struct DerivedMesh;
typedef enum {
KX_BOUNDBOX,
@@ -82,6 +83,7 @@ struct KX_ObjectProperties
bool m_ghost;
class KX_GameObject* m_dynamic_parent;
bool m_isactor;
+ bool m_sensor;
bool m_concave;
bool m_isdeformable;
bool m_disableSleeping;
@@ -124,6 +126,7 @@ struct KX_ObjectProperties
float m_soft_kAHR; /* Anchors hardness [0,1] */
int m_soft_collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */
int m_soft_numclusteriterations; /* number of iterations to refine collision clusters*/
+ float m_soft_welding; /* threshold to remove duplicate/nearby vertices */
/////////////////////////
@@ -136,6 +139,8 @@ struct KX_ObjectProperties
/////////////////////////
double m_margin;
+ float m_contactProcessingThreshold;
+
KX_BoundBoxClass m_boundclass;
union {
KX_BoxBounds box;
@@ -182,6 +187,7 @@ bool KX_ReInstanceShapeFromMesh(RAS_MeshObject* meshobj);
void KX_ConvertBulletObject( class KX_GameObject* gameobj,
class RAS_MeshObject* meshobj,
+ struct DerivedMesh* dm,
class KX_Scene* kxscene,
struct PHY_ShapeProps* shapeprops,
struct PHY_MaterialProps* smmaterial,
diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
index 08e2ea30414..51c41c0686d 100644
--- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
+++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
@@ -34,7 +34,7 @@
// defines USE_ODE to choose physics engine
#include "KX_ConvertPhysicsObject.h"
-#include "KX_GameObject.h"
+#include "BL_DeformableGameObject.h"
#include "RAS_MeshObject.h"
#include "KX_Scene.h"
#include "SYS_System.h"
@@ -52,6 +52,10 @@
#include "KX_MotionState.h" // bridge between motionstate and scenegraph node
+extern "C"{
+ #include "BKE_DerivedMesh.h"
+}
+
#ifdef USE_ODE
#include "KX_OdePhysicsController.h"
@@ -670,11 +674,11 @@ void KX_ConvertODEEngineObject(KX_GameObject* gameobj,
class KX_SoftBodyDeformer : public RAS_Deformer
{
- class RAS_MeshObject* m_pMeshObject;
- class KX_GameObject* m_gameobj;
+ class RAS_MeshObject* m_pMeshObject;
+ class BL_DeformableGameObject* m_gameobj;
public:
- KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,KX_GameObject* gameobj)
+ KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj)
:m_pMeshObject(pMeshObject),
m_gameobj(gameobj)
{
@@ -687,7 +691,15 @@ void KX_ConvertODEEngineObject(KX_GameObject* gameobj,
};
virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
{
- //printf("relink\n");
+ void **h_obj = (*map)[m_gameobj];
+
+ if (h_obj) {
+ m_gameobj = (BL_DeformableGameObject*)(*h_obj);
+ m_pMeshObject = m_gameobj->GetMesh(0);
+ } else {
+ m_gameobj = NULL;
+ m_pMeshObject = NULL;
+ }
}
virtual bool Apply(class RAS_IPolyMaterial *polymat)
{
@@ -749,14 +761,27 @@ void KX_ConvertODEEngineObject(KX_GameObject* gameobj,
virtual bool Update(void)
{
//printf("update\n");
+ m_bDynamic = true;
return true;//??
}
- virtual RAS_Deformer *GetReplica(class KX_GameObject* replica)
+ virtual bool UpdateBuckets(void)
{
- KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(replica->GetMesh(0),replica);
- return deformer;
+ // this is to update the mesh slots outside the rasterizer,
+ // no need to do it for this deformer, it's done in any case in Apply()
+ return false;
}
+ virtual RAS_Deformer *GetReplica()
+ {
+ KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this);
+ deformer->ProcessReplica();
+ return deformer;
+ }
+ virtual void ProcessReplica()
+ {
+ // we have two pointers to deal with but we cannot do it now, will be done in Relink
+ m_bDynamic = false;
+ }
virtual bool SkipVertexTransform()
{
return true;
@@ -771,6 +796,7 @@ void KX_ConvertODEEngineObject(KX_GameObject* gameobj,
void KX_ConvertBulletObject( class KX_GameObject* gameobj,
class RAS_MeshObject* meshobj,
+ struct DerivedMesh* dm,
class KX_Scene* kxscene,
struct PHY_ShapeProps* shapeprops,
struct PHY_MaterialProps* smmaterial,
@@ -782,12 +808,12 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
bool isbulletdyna = false;
+ bool isbulletsensor = false;
CcdConstructionInfo ci;
class PHY_IMotionState* motionstate = new KX_MotionState(gameobj->GetSGNode());
class CcdShapeConstructionInfo *shapeInfo = new CcdShapeConstructionInfo();
-
if (!objprop->m_dyna)
{
ci.m_collisionFlags |= btCollisionObject::CF_STATIC_OBJECT;
@@ -806,6 +832,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
ci.m_margin = objprop->m_margin;
shapeInfo->m_radius = objprop->m_radius;
isbulletdyna = objprop->m_dyna;
+ isbulletsensor = objprop->m_sensor;
ci.m_localInertiaTensor = btVector3(ci.m_mass/3.f,ci.m_mass/3.f,ci.m_mass/3.f);
@@ -825,7 +852,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
//bm = new MultiSphereShape(inertiaHalfExtents,,&trans.getOrigin(),&radius,1);
shapeInfo->m_shapeType = PHY_SHAPE_SPHERE;
- bm = shapeInfo->CreateBulletShape();
+ bm = shapeInfo->CreateBulletShape(ci.m_margin);
break;
};
case KX_BOUNDBOX:
@@ -838,7 +865,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
shapeInfo->m_halfExtend /= 2.0;
shapeInfo->m_halfExtend = shapeInfo->m_halfExtend.absolute();
shapeInfo->m_shapeType = PHY_SHAPE_BOX;
- bm = shapeInfo->CreateBulletShape();
+ bm = shapeInfo->CreateBulletShape(ci.m_margin);
break;
};
case KX_BOUNDCYLINDER:
@@ -849,7 +876,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
objprop->m_boundobject.c.m_height * 0.5f
);
shapeInfo->m_shapeType = PHY_SHAPE_CYLINDER;
- bm = shapeInfo->CreateBulletShape();
+ bm = shapeInfo->CreateBulletShape(ci.m_margin);
break;
}
@@ -858,45 +885,41 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
shapeInfo->m_radius = objprop->m_boundobject.c.m_radius;
shapeInfo->m_height = objprop->m_boundobject.c.m_height;
shapeInfo->m_shapeType = PHY_SHAPE_CONE;
- bm = shapeInfo->CreateBulletShape();
+ bm = shapeInfo->CreateBulletShape(ci.m_margin);
break;
}
case KX_BOUNDPOLYTOPE:
{
- shapeInfo->SetMesh(meshobj, true,false);
- bm = shapeInfo->CreateBulletShape();
+ shapeInfo->SetMesh(meshobj, dm,true,false);
+ bm = shapeInfo->CreateBulletShape(ci.m_margin);
break;
}
case KX_BOUNDMESH:
{
-
- if (!ci.m_mass ||objprop->m_softbody)
- {
- // mesh shapes can be shared, check first if we already have a shape on that mesh
- class CcdShapeConstructionInfo *sharedShapeInfo = CcdShapeConstructionInfo::FindMesh(meshobj, false);
- if (sharedShapeInfo != NULL)
- {
- delete shapeInfo;
- shapeInfo = sharedShapeInfo;
- shapeInfo->AddRef();
- } else
- {
- shapeInfo->SetMesh(meshobj, false,false);
- }
-
- // Soft bodies require welding. Only avoid remove doubles for non-soft bodies!
- if (objprop->m_softbody)
- shapeInfo->setVertexWeldingThreshold1(0.01f); //todo: expose this to the UI
+ bool useGimpact = ((ci.m_mass || isbulletsensor) && !objprop->m_softbody);
- bm = shapeInfo->CreateBulletShape();
- //no moving concave meshes, so don't bother calculating inertia
- //bm->calculateLocalInertia(ci.m_mass,ci.m_localInertiaTensor);
+ // mesh shapes can be shared, check first if we already have a shape on that mesh
+ class CcdShapeConstructionInfo *sharedShapeInfo = CcdShapeConstructionInfo::FindMesh(meshobj, dm, false,useGimpact);
+ if (sharedShapeInfo != NULL)
+ {
+ delete shapeInfo;
+ shapeInfo = sharedShapeInfo;
+ shapeInfo->AddRef();
} else
{
- shapeInfo->SetMesh(meshobj, false,true);
- bm = shapeInfo->CreateBulletShape();
+ shapeInfo->SetMesh(meshobj, dm, false,useGimpact);
+ }
+
+ // Soft bodies require welding. Only avoid remove doubles for non-soft bodies!
+ if (objprop->m_softbody)
+ {
+ shapeInfo->setVertexWeldingThreshold1(objprop->m_soft_welding); //todo: expose this to the UI
}
+ bm = shapeInfo->CreateBulletShape(ci.m_margin);
+ //should we compute inertia for dynamic shape?
+ //bm->calculateLocalInertia(ci.m_mass,ci.m_localInertiaTensor);
+
break;
}
}
@@ -911,7 +934,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
return;
}
- bm->setMargin(ci.m_margin);
+ //bm->setMargin(ci.m_margin);
if (objprop->m_isCompoundChild)
@@ -926,39 +949,27 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
assert(colShape->isCompound());
btCompoundShape* compoundShape = (btCompoundShape*)colShape;
- // compute the local transform from parent, this may include a parent inverse node
+ // compute the local transform from parent, this may include several node in the chain
SG_Node* gameNode = gameobj->GetSGNode();
- SG_Node* parentInverseNode = gameNode->GetSGParent();
- if (parentInverseNode && parentInverseNode->GetSGClientObject() != NULL)
- // this is not a parent inverse node, cancel it
- parentInverseNode = NULL;
- // now combine the parent inverse node and the game node
- MT_Point3 childPos = gameNode->GetLocalPosition();
- MT_Matrix3x3 childRot = gameNode->GetLocalOrientation();
- MT_Vector3 childScale = gameNode->GetLocalScale();
- if (parentInverseNode)
- {
- const MT_Point3& parentInversePos = parentInverseNode->GetLocalPosition();
- const MT_Matrix3x3& parentInverseRot = parentInverseNode->GetLocalOrientation();
- const MT_Vector3& parentInverseScale = parentInverseNode->GetLocalScale();
- childRot = parentInverseRot * childRot;
- childScale = parentInverseScale * childScale;
- childPos = parentInversePos+parentInverseScale*(parentInverseRot*childPos);
- }
-
- shapeInfo->m_childScale.setValue(childScale.x(),childScale.y(),childScale.z());
+ SG_Node* parentNode = objprop->m_dynamic_parent->GetSGNode();
+ // relative transform
+ MT_Vector3 parentScale = parentNode->GetWorldScaling();
+ parentScale[0] = MT_Scalar(1.0)/parentScale[0];
+ parentScale[1] = MT_Scalar(1.0)/parentScale[1];
+ parentScale[2] = MT_Scalar(1.0)/parentScale[2];
+ MT_Vector3 relativeScale = gameNode->GetWorldScaling() * parentScale;
+ MT_Matrix3x3 parentInvRot = parentNode->GetWorldOrientation().transposed();
+ MT_Vector3 relativePos = parentInvRot*((gameNode->GetWorldPosition()-parentNode->GetWorldPosition())*parentScale);
+ MT_Matrix3x3 relativeRot = parentInvRot*gameNode->GetWorldOrientation();
+
+ shapeInfo->m_childScale.setValue(relativeScale[0],relativeScale[1],relativeScale[2]);
bm->setLocalScaling(shapeInfo->m_childScale);
-
- shapeInfo->m_childTrans.setOrigin(btVector3(childPos.x(),childPos.y(),childPos.z()));
- float rotval[12];
- childRot.getValue(rotval);
- btMatrix3x3 newRot;
- newRot.setValue(rotval[0],rotval[1],rotval[2],rotval[4],rotval[5],rotval[6],rotval[8],rotval[9],rotval[10]);
- newRot = newRot.transpose();
-
- shapeInfo->m_childTrans.setBasis(newRot);
+ shapeInfo->m_childTrans.getOrigin().setValue(relativePos[0],relativePos[1],relativePos[2]);
+ float rot[12];
+ relativeRot.getValue(rot);
+ shapeInfo->m_childTrans.getBasis().setFromOpenGLSubMatrix(rot);
+
parentShapeInfo->AddShape(shapeInfo);
-
compoundShape->addChildShape(shapeInfo->m_childTrans,bm);
//do some recalc?
//recalc inertia for rigidbody
@@ -969,6 +980,8 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
compoundShape->calculateLocalInertia(mass,localInertia);
rigidbody->setMassProps(mass,localInertia);
}
+ // delete motionstate as it's not used
+ delete motionstate;
return;
}
@@ -1081,26 +1094,32 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
ci.m_soft_numclusteriterations= objprop->m_soft_numclusteriterations; /* number of iterations to refine collision clusters*/
////////////////////
-
- ci.m_collisionFilterGroup = (isbulletdyna) ? short(CcdConstructionInfo::DefaultFilter) : short(CcdConstructionInfo::StaticFilter);
- ci.m_collisionFilterMask = (isbulletdyna) ? short(CcdConstructionInfo::AllFilter) : short(CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::StaticFilter);
+ ci.m_collisionFilterGroup =
+ (isbulletsensor) ? short(CcdConstructionInfo::SensorFilter) :
+ (isbulletdyna) ? short(CcdConstructionInfo::DefaultFilter) :
+ short(CcdConstructionInfo::StaticFilter);
+ ci.m_collisionFilterMask =
+ (isbulletsensor) ? short(CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::SensorFilter) :
+ (isbulletdyna) ? short(CcdConstructionInfo::AllFilter) :
+ short(CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::StaticFilter);
ci.m_bRigid = objprop->m_dyna && objprop->m_angular_rigidbody;
+
+ ci.m_contactProcessingThreshold = objprop->m_contactProcessingThreshold;//todo: expose this in advanced settings, just like margin, default to 10000 or so
ci.m_bSoft = objprop->m_softbody;
+ ci.m_bSensor = isbulletsensor;
MT_Vector3 scaling = gameobj->NodeGetWorldScaling();
ci.m_scaling.setValue(scaling[0], scaling[1], scaling[2]);
- KX_BulletPhysicsController* physicscontroller = new KX_BulletPhysicsController(ci,isbulletdyna,objprop->m_hasCompoundChildren);
+ KX_BulletPhysicsController* physicscontroller = new KX_BulletPhysicsController(ci,isbulletdyna,isbulletsensor,objprop->m_hasCompoundChildren);
// shapeInfo is reference counted, decrement now as we don't use it anymore
if (shapeInfo)
shapeInfo->Release();
- if (objprop->m_in_active_layer)
+ gameobj->SetPhysicsController(physicscontroller,isbulletdyna);
+ // don't add automatically sensor object, they are added when a collision sensor is registered
+ if (!isbulletsensor && objprop->m_in_active_layer)
{
env->addCcdPhysicsController( physicscontroller);
}
-
-
-
- gameobj->SetPhysicsController(physicscontroller,isbulletdyna);
physicscontroller->setNewClientInfo(gameobj->getClientInfo());
{
btRigidBody* rbody = physicscontroller->GetRigidBody();
@@ -1159,7 +1178,9 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
}
bool isActor = objprop->m_isactor;
- gameobj->getClientInfo()->m_type = (isActor ? KX_ClientObjectInfo::ACTOR : KX_ClientObjectInfo::STATIC);
+ gameobj->getClientInfo()->m_type =
+ (isbulletsensor) ? ((isActor) ? KX_ClientObjectInfo::OBACTORSENSOR : KX_ClientObjectInfo::OBSENSOR) :
+ (isActor) ? KX_ClientObjectInfo::ACTOR : KX_ClientObjectInfo::STATIC;
// store materialname in auxinfo, needed for touchsensors
if (meshobj)
{
@@ -1187,9 +1208,8 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
if (softBody && gameobj->GetMesh(0))//only the first mesh, if any
{
//should be a mesh then, so add a soft body deformer
- KX_SoftBodyDeformer* softbodyDeformer = new KX_SoftBodyDeformer( gameobj->GetMesh(0),gameobj);
+ KX_SoftBodyDeformer* softbodyDeformer = new KX_SoftBodyDeformer( gameobj->GetMesh(0),(BL_DeformableGameObject*)gameobj);
gameobj->SetDeformer(softbodyDeformer);
-
}
}
diff --git a/source/gameengine/Ketsji/KX_Dome.cpp b/source/gameengine/Ketsji/KX_Dome.cpp
index 321370f9f3f..daa31379985 100644
--- a/source/gameengine/Ketsji/KX_Dome.cpp
+++ b/source/gameengine/Ketsji/KX_Dome.cpp
@@ -43,29 +43,30 @@ KX_Dome::KX_Dome (
RAS_IRenderTools* rendertools,
/// engine
KX_KetsjiEngine* engine,
-
- float size, //size for adjustments
+
short res, //resolution of the mesh
short mode, //mode - fisheye, truncated, warped, panoramic, ...
short angle,
float resbuf, //size adjustment of the buffer
+ short tilt,
struct Text* warptext
):
- m_canvas(canvas),
- m_rasterizer(rasterizer),
- m_rendertools(rendertools),
- m_engine(engine),
+ dlistSupported(false),
+ canvaswidth(-1), canvasheight(-1),
m_drawingmode(engine->GetDrawType()),
- m_size(size),
m_resolution(res),
m_mode(mode),
m_angle(angle),
m_resbuffer(resbuf),
- canvaswidth(-1), canvasheight(-1),
- dlistSupported(false)
+ m_tilt(tilt),
+ m_canvas(canvas),
+ m_rasterizer(rasterizer),
+ m_rendertools(rendertools),
+ m_engine(engine)
{
warp.usemesh = false;
+ fboSupported = false;
if (mode >= DOME_NUM_MODES)
m_mode = DOME_FISHEYE;
@@ -107,15 +108,9 @@ KX_Dome::KX_Dome (
CreateMeshDome250();
m_numfaces = 5;
} break;
- case DOME_TRUNCATED:
- cubetop.resize(1);
- cubebottom.resize(1);
- cubeleft.resize(2);
- cuberight.resize(2);
-
- m_angle = 180;
- CreateMeshDome180();
- m_numfaces = 4;
+ case DOME_ENVMAP:
+ m_angle = 360;
+ m_numfaces = 6;
break;
case DOME_PANORAM_SPH:
cubeleft.resize(2);
@@ -129,6 +124,25 @@ KX_Dome::KX_Dome (
CreateMeshPanorama();
m_numfaces = 6;
break;
+ default: //DOME_TRUNCATED_FRONT and DOME_TRUNCATED_REAR
+ if (m_angle <= 180){
+ cubetop.resize(1);
+ cubebottom.resize(1);
+ cubeleft.resize(2);
+ cuberight.resize(2);
+
+ CreateMeshDome180();
+ m_numfaces = 4;
+ }else if (m_angle > 180){
+ cubetop.resize(2);
+ cubebottom.resize(2);
+ cubeleft.resize(2);
+ cubefront.resize(2);
+ cuberight.resize(2);
+
+ CreateMeshDome250();
+ m_numfaces = 5;
+ } break;
}
m_numimages =(warp.usemesh?m_numfaces+1:m_numfaces);
@@ -137,23 +151,27 @@ KX_Dome::KX_Dome (
CreateGLImages();
+ if(warp.usemesh)
+ fboSupported = CreateFBO();
+
dlistSupported = CreateDL();
}
// destructor
KX_Dome::~KX_Dome (void)
{
- GLuint m_numimages = m_numfaces;
-
ClearGLImages();
+ if(fboSupported)
+ glDeleteFramebuffersEXT(1, &warp.fboId);
+
if(dlistSupported)
glDeleteLists(dlistId, (GLsizei) m_numimages);
}
void KX_Dome::SetViewPort(GLuint viewport[4])
{
- if(canvaswidth != m_canvas->GetWidth() || canvasheight != m_canvas->GetHeight())
+ if(canvaswidth != m_viewport.GetWidth() || canvasheight != m_viewport.GetHeight())
{
m_viewport.SetLeft(viewport[0]);
m_viewport.SetBottom(viewport[1]);
@@ -180,9 +198,9 @@ void KX_Dome::CreateGLImages(void)
}
if(warp.usemesh){
glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, warp.imagewidth, warp.imageheight, 0, GL_RGB8,
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, warp.imagesize, warp.imagesize, 0, GL_RGB8,
GL_UNSIGNED_BYTE, 0);
- glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, warp.imagewidth, warp.imageheight, 0);
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, warp.imagesize, warp.imagesize, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -207,12 +225,25 @@ void KX_Dome::CalculateImageSize(void)
- reduce the buffer for better performace
- create a power of 2 texture bigger than the buffer
*/
+/*
+Blender handles Canvas size differently when in fullscreen mode.
+We are manually checking for that. Although it's a hack, it works.
+
+Bug reported here: #18655 - Inconsistency of pixels in canvas dimensions when in maximized mode (affecting BGE Dome)
+http://projects.blender.org/tracker/?func=detail&aid=18655&group_id=9&atid=125
+*/
canvaswidth = m_canvas->GetWidth();
canvasheight = m_canvas->GetHeight();
+ bool fullscreen(false); //XXX HACK
+ fullscreen = (canvaswidth != m_viewport.GetWidth());
+
m_buffersize = (canvaswidth > canvasheight?canvasheight:canvaswidth);
- m_buffersize *= m_resbuffer; //reduce buffer size for better performance
+ m_buffersize = (int)(m_buffersize*m_resbuffer); //reduce buffer size for better performance
+
+ if (fullscreen) //XXX HACK
+ m_buffersize --;
int i = 0;
while ((1 << i) <= m_buffersize)
@@ -220,27 +251,25 @@ void KX_Dome::CalculateImageSize(void)
m_imagesize = (1 << i);
if (warp.usemesh){
- warp.bufferwidth = canvaswidth;
- warp.bufferheight = canvasheight;
-
- i = 0;
- while ((1 << i) <= warp.bufferwidth)
- i++;
- warp.imagewidth = (1 << i);
+ // warp FBO needs to be up to twice as big as m_buffersize to get more resolution
+ warp.imagesize = m_imagesize;
+ if (m_buffersize == m_imagesize)
+ warp.imagesize *= 2;
- i = 0;
- while ((1 << i) <= warp.bufferheight)
- i++;
- warp.imageheight = (1 << i);
+ //if FBO is not working/supported, we use the canvas dimension as buffer
+ warp.bufferwidth = canvaswidth;
+ warp.bufferheight = canvasheight;
}
+
+ //XXX HACK
+ canvaswidth = m_viewport.GetWidth();
+ canvasheight = m_viewport.GetHeight();
}
bool KX_Dome::CreateDL(){
- int i,j;
-
dlistId = glGenLists((GLsizei) m_numimages);
if (dlistId != 0) {
- if(m_mode == DOME_FISHEYE || m_mode == DOME_TRUNCATED){
+ if(m_mode == DOME_FISHEYE || m_mode == DOME_TRUNCATED_FRONT || m_mode == DOME_TRUNCATED_REAR){
glNewList(dlistId, GL_COMPILE);
GLDrawTriangles(cubetop, nfacestop);
glEndList();
@@ -312,6 +341,46 @@ bool KX_Dome::CreateDL(){
return true;
}
+bool KX_Dome::CreateFBO(void)
+{
+ if (!GLEW_EXT_framebuffer_object)
+ {
+ printf("Dome Error: FrameBuffer unsupported. Using low resolution warp image.");
+ return false;
+ }
+
+ glGenFramebuffersEXT(1, &warp.fboId);
+ if(warp.fboId==0)
+ {
+ printf("Dome Error: Invalid frame buffer object. Using low resolution warp image.");
+ return false;
+ }
+
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, warp.fboId);
+
+ glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+ GL_TEXTURE_2D, domefacesId[m_numfaces], 0);
+
+ GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
+
+ if(status == GL_FRAMEBUFFER_UNSUPPORTED_EXT)
+ {
+ printf("Dome Error: FrameBuffer settings unsupported. Using low resolution warp image.");
+ return false;
+ }
+ else if(status != GL_FRAMEBUFFER_COMPLETE_EXT)
+ {
+ glDeleteFramebuffersEXT(1, &warp.fboId);
+ return false;
+ }
+
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+
+ //nothing failed: we can use the whole FBO as buffersize
+ warp.bufferwidth = warp.bufferheight = warp.imagesize;
+ return true;
+}
+
void KX_Dome::GLDrawTriangles(vector <DomeFace>& face, int nfaces)
{
int i,j;
@@ -328,8 +397,9 @@ void KX_Dome::GLDrawTriangles(vector <DomeFace>& face, int nfaces)
void KX_Dome::GLDrawWarpQuads(void)
{
int i, j, i2;
- float uv_width = (float)(warp.bufferwidth-1) / warp.imagewidth;
- float uv_height = (float)(warp.bufferheight-1) / warp.imageheight;
+
+ float uv_width = (float)(warp.bufferwidth) / warp.imagesize;
+ float uv_height = (float)(warp.bufferheight) / warp.imagesize;
if(warp.mode ==2 ){
glBegin(GL_QUADS);
@@ -386,7 +456,7 @@ void KX_Dome::GLDrawWarpQuads(void)
}
glEnd();
} else{
- printf("Error: Warp Mode unsupported. Try 1 for Polar Mesh or 2 for Fisheye.\n");
+ printf("Dome Error: Warp Mode %d unsupported. Try 1 for Polar Mesh or 2 for Fisheye.\n", warp.mode);
}
}
@@ -415,20 +485,22 @@ y varies from -1 to 1
u and v vary from 0 to 1
i ranges from 0 to 1, if negative don't draw that mesh node
*/
- int i,j,k;
+ int i;
int nodeX=0, nodeY=0;
vector<STR_String> columns, lines;
lines = text.Explode('\n');
if(lines.size() < 6){
- printf("Error: Warp Mesh File with insufficient data!\n");
+ printf("Dome Error: Warp Mesh File with insufficient data!\n");
return false;
}
columns = lines[1].Explode(' ');
+ if(columns.size() == 1)
+ columns = lines[1].Explode('\t');
if(columns.size() !=2){
- printf("Error: Warp Mesh File incorrect. The second line should contain: width height.\n");
+ printf("Dome Error: Warp Mesh File incorrect. The second line should contain: width height.\n");
return false;
}
@@ -437,14 +509,16 @@ i ranges from 0 to 1, if negative don't draw that mesh node
warp.n_width = atoi(columns[0]);
warp.n_height = atoi(columns[1]);
- if (lines.size() < 2 + (warp.n_width * warp.n_height)){
- printf("Error: Warp Mesh File with insufficient data!\n");
+ if ((int)lines.size() < 2 + (warp.n_width * warp.n_height)){
+ printf("Dome Error: Warp Mesh File with insufficient data!\n");
return false;
}else{
warp.nodes = vector<vector<WarpMeshNode> > (warp.n_height, vector<WarpMeshNode>(warp.n_width));
for(i=2; i-2 < (warp.n_width*warp.n_height); i++){
columns = lines[i].Explode(' ');
+ if(columns.size() == 1)
+ columns = lines[i].Explode('\t');
if (columns.size() == 5){
nodeX = (i-2)%warp.n_width;
@@ -458,7 +532,7 @@ i ranges from 0 to 1, if negative don't draw that mesh node
}
else{
warp.nodes.clear();
- printf("Error: Warp Mesh File with wrong number of fields. You should use 5: x y u v i.\n");
+ printf("Dome Error: Warp Mesh File with wrong number of fields. You should use 5: x y u v i.\n");
return false;
}
}
@@ -1373,7 +1447,7 @@ void KX_Dome::CalculateFrustum(KX_Camera * cam)
/*
// manually creating a 90º Field of View Frustum
- the original formula:
+ the original formula:
top = tan(fov*3.14159/360.0) * near [for fov in degrees]
fov*0.5 = arctan ((top-bottom)*0.5 / near) [for fov in radians]
bottom = -top
@@ -1411,11 +1485,14 @@ Uses 4 cameras for angles up to 180º
Uses 5 cameras for angles up to 250º
Uses 6 cameras for angles up to 360º
*/
+ int i;
float deg45 = MT_PI / 4;
MT_Scalar c = cos(deg45);
MT_Scalar s = sin(deg45);
- if ((m_mode == DOME_FISHEYE && m_angle <= 180)|| m_mode == DOME_TRUNCATED){
+ if (m_angle <= 180 && (m_mode == DOME_FISHEYE
+ || m_mode == DOME_TRUNCATED_FRONT
+ || m_mode == DOME_TRUNCATED_REAR)){
m_locRot[0] = MT_Matrix3x3( // 90º - Top
c, -s, 0.0,
@@ -1437,7 +1514,9 @@ Uses 6 cameras for angles up to 360º
0.0, 1.0, 0.0,
s, 0.0, c);
- } else if ((m_mode == DOME_FISHEYE && m_angle > 180)){
+ } else if (m_mode == DOME_ENVMAP || (m_angle > 180 && (m_mode == DOME_FISHEYE
+ || m_mode == DOME_TRUNCATED_FRONT
+ || m_mode == DOME_TRUNCATED_REAR))){
m_locRot[0] = MT_Matrix3x3( // 90º - Top
1.0, 0.0, 0.0,
@@ -1464,7 +1543,7 @@ Uses 6 cameras for angles up to 360º
0.0, 1.0, 0.0,
0.0, 0.0, 1.0);
- m_locRot[5] = MT_Matrix3x3( // 180º - Back - NOT USING
+ m_locRot[5] = MT_Matrix3x3( // 180º - Back - USED for ENVMAP only
-1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0,-1.0);
@@ -1501,6 +1580,23 @@ Uses 6 cameras for angles up to 360º
0.0, 1.0, 0.0,
s, 0.0, c);
}
+
+ // rotating the camera in horizontal axis
+ if (m_tilt)
+ {
+ float tiltdeg = ((m_tilt % 360) * 2 * MT_PI) / 360;
+ c = cos(tiltdeg);
+ s = sin(tiltdeg);
+
+ MT_Matrix3x3 tilt_mat = MT_Matrix3x3(
+ 1.0, 0.0, 0.0,
+ 0.0, c, -s,
+ 0.0, s, c
+ );
+
+ for (i =0;i<6;i++)
+ m_locRot[i] = tilt_mat * m_locRot[i];
+ }
}
void KX_Dome::RotateCamera(KX_Camera* cam, int i)
@@ -1515,8 +1611,7 @@ void KX_Dome::RotateCamera(KX_Camera* cam, int i)
MT_Transform camtrans(cam->GetWorldToCamera());
MT_Matrix4x4 viewmat(camtrans);
- m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldPosition(),
- cam->GetCameraLocation(), cam->GetCameraOrientation());
+ m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), cam->GetCameraData()->m_perspective);
cam->SetModelviewMatrix(viewmat);
// restore the original orientation
@@ -1527,30 +1622,49 @@ void KX_Dome::RotateCamera(KX_Camera* cam, int i)
void KX_Dome::Draw(void)
{
+ if (fboSupported){
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, warp.fboId);
+
+ glViewport(0,0,warp.imagesize, warp.imagesize);
+ glScissor(0,0,warp.imagesize, warp.imagesize);
+ }
+
switch(m_mode){
case DOME_FISHEYE:
DrawDomeFisheye();
break;
- case DOME_TRUNCATED:
- DrawDomeFisheye();
+ case DOME_ENVMAP:
+ DrawEnvMap();
break;
case DOME_PANORAM_SPH:
DrawPanorama();
break;
+ case DOME_TRUNCATED_FRONT:
+ DrawDomeFisheye();
+ break;
+ case DOME_TRUNCATED_REAR:
+ DrawDomeFisheye();
+ break;
}
if(warp.usemesh)
{
- glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_viewport.GetLeft(), m_viewport.GetBottom(), warp.bufferwidth, warp.bufferheight);
+ if(fboSupported)
+ {
+ m_canvas->SetViewPort(0, 0, m_canvas->GetWidth(), m_canvas->GetHeight());
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ }
+ else
+ {
+ glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_viewport.GetLeft(), m_viewport.GetBottom(), warp.bufferwidth, warp.bufferheight);
+ }
DrawDomeWarped();
}
}
-void KX_Dome::DrawDomeFisheye(void)
+void KX_Dome::DrawEnvMap(void)
{
- int i,j;
-
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@@ -1563,28 +1677,17 @@ void KX_Dome::DrawDomeFisheye(void)
float ortho_width, ortho_height;
if (warp.usemesh)
- glOrtho((-1.0), 1.0, (-1.0), 1.0, -20.0, 10.0); //stretch the image to reduce resolution lost
+ glOrtho((-1.0), 1.0, (-0.66), 0.66, -20.0, 10.0); //stretch the image to reduce resolution lost
- else if(m_mode == DOME_TRUNCATED){
- ortho_width = 1.0;
- ortho_height = 2 * ((float)can_height/can_width) - 1.0 ;
-
- ortho_width /= m_size;
- ortho_height /= m_size;
-
- glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_width, -20.0, 10.0);
- } else {
- if (can_width < can_height){
+ else {
+ if (can_width/3 <= can_height/2){
ortho_width = 1.0;
ortho_height = (float)can_height/can_width;
}else{
- ortho_width = (float)can_width/can_height;
- ortho_height = 1.0;
+ ortho_height = 2.0f / 3;
+ ortho_width = (float)can_width/can_height * ortho_height;
}
- ortho_width /= m_size;
- ortho_height /= m_size;
-
glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_height, -20.0, 10.0);
}
@@ -1592,6 +1695,150 @@ void KX_Dome::DrawDomeFisheye(void)
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
+ gluLookAt(0.0,0.0,1.0, 0.0,0.0,0.0, 0.0,1.0,0.0);
+
+ glPolygonMode(GL_FRONT, GL_FILL);
+ glShadeModel(GL_SMOOTH);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_DEPTH_TEST);
+
+ glEnable(GL_TEXTURE_2D);
+ glColor3f(1.0,1.0,1.0);
+
+ float uv_ratio = (float)(m_buffersize-1) / m_imagesize;
+ double onebythree = 1.0f / 3;
+
+ // domefacesId[0] => (top)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[0]);
+ glBegin(GL_QUADS);
+ glTexCoord2f(uv_ratio,uv_ratio);
+ glVertex3f( onebythree, 0.0f, 3.0f);
+ glTexCoord2f(0.0,uv_ratio);
+ glVertex3f(-onebythree, 0.0f, 3.0f);
+ glTexCoord2f(0.0,0.0);
+ glVertex3f(-onebythree,-2 * onebythree, 3.0f);
+ glTexCoord2f(uv_ratio,0.0);
+ glVertex3f(onebythree,-2 * onebythree, 3.0f);
+ glEnd();
+
+ // domefacesId[1] => (bottom)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[1]);
+ glBegin(GL_QUADS);
+ glTexCoord2f(uv_ratio,uv_ratio);
+ glVertex3f(-onebythree, 0.0f, 3.0f);
+ glTexCoord2f(0.0,uv_ratio);
+ glVertex3f(-1.0f, 0.0f, 3.0f);
+ glTexCoord2f(0.0,0.0);
+ glVertex3f(-1.0f,-2 * onebythree, 3.0f);
+ glTexCoord2f(uv_ratio,0.0);
+ glVertex3f(-onebythree,-2 * onebythree, 3.0f);
+ glEnd();
+
+ // domefacesId[2] => -90º (left)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[2]);
+ glBegin(GL_QUADS);
+ glTexCoord2f(uv_ratio,uv_ratio);
+ glVertex3f(-onebythree, 2 * onebythree, 3.0f);
+ glTexCoord2f(0.0,uv_ratio);
+ glVertex3f(-1.0f, 2 * onebythree, 3.0f);
+ glTexCoord2f(0.0,0.0);
+ glVertex3f(-1.0f, 0.0f, 3.0f);
+ glTexCoord2f(uv_ratio,0.0);
+ glVertex3f(-onebythree, 0.0f, 3.0f);
+ glEnd();
+
+ // domefacesId[3] => 90º (right)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[3]);
+ glBegin(GL_QUADS);
+ glTexCoord2f(uv_ratio,uv_ratio);
+ glVertex3f( 1.0f, 2 * onebythree, 3.0f);
+ glTexCoord2f(0.0,uv_ratio);
+ glVertex3f( onebythree, 2 * onebythree, 3.0f);
+ glTexCoord2f(0.0,0.0);
+ glVertex3f( onebythree, 0.0f, 3.0f);
+ glTexCoord2f(uv_ratio,0.0);
+ glVertex3f(1.0f, 0.0f, 3.0f);
+ glEnd();
+
+ // domefacesId[4] => 0º (front)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[4]);
+ glBegin(GL_QUADS);
+ glTexCoord2f(uv_ratio,uv_ratio);
+ glVertex3f( 1.0f, 0.0f, 3.0f);
+ glTexCoord2f(0.0,uv_ratio);
+ glVertex3f( onebythree, 0.0f, 3.0f);
+ glTexCoord2f(0.0,0.0);
+ glVertex3f( onebythree,-2 * onebythree, 3.0f);
+ glTexCoord2f(uv_ratio,0.0);
+ glVertex3f(1.0f, -2 * onebythree, 3.0f);
+ glEnd();
+
+ // domefacesId[5] => 180º (back)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[5]);
+ glBegin(GL_QUADS);
+ glTexCoord2f(uv_ratio,uv_ratio);
+ glVertex3f( onebythree, 2 * onebythree, 3.0f);
+ glTexCoord2f(0.0,uv_ratio);
+ glVertex3f(-onebythree, 2 * onebythree, 3.0f);
+ glTexCoord2f(0.0,0.0);
+ glVertex3f(-onebythree, 0.0f, 3.0f);
+ glTexCoord2f(uv_ratio,0.0);
+ glVertex3f(onebythree, 0.0f, 3.0f);
+ glEnd();
+
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_DEPTH_TEST);
+}
+
+void KX_Dome::DrawDomeFisheye(void)
+{
+ int i;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ // Making the viewport always square
+
+ int can_width = m_viewport.GetRight();
+ int can_height = m_viewport.GetTop();
+
+ float ortho_width, ortho_height;
+
+ if(m_mode == DOME_FISHEYE) {
+ if (warp.usemesh)
+ glOrtho((-1.0), 1.0, (-1.0), 1.0, -20.0, 10.0); //stretch the image to reduce resolution lost
+
+ else {
+ if (can_width < can_height){
+ ortho_width = 1.0;
+ ortho_height = (float)can_height/can_width;
+ }else{
+ ortho_width = (float)can_width/can_height;
+ ortho_height = 1.0;
+ }
+
+ glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_height, -20.0, 10.0);
+ }
+ }
+ else if(m_mode == DOME_TRUNCATED_FRONT)
+ {
+ ortho_width = 1.0;
+ ortho_height = 2 * ((float)can_height/can_width) - 1.0 ;
+
+ glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_width, -20.0, 10.0);
+ }
+ else { //m_mode == DOME_TRUNCATED_REAR
+ ortho_width = 1.0;
+ ortho_height = 2 * ((float)can_height/can_width) - 1.0 ;
+
+ glOrtho((-ortho_width), ortho_width, (-ortho_width), ortho_height, -20.0, 10.0);
+ }
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
gluLookAt(0.0,-1.0,0.0, 0.0,0.0,0.0, 0.0,0.0,1.0);
if(m_drawingmode == RAS_IRasterizer::KX_WIREFRAME)
@@ -1641,7 +1888,7 @@ void KX_Dome::DrawDomeFisheye(void)
void KX_Dome::DrawPanorama(void)
{
- int i,j;
+ int i;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@@ -1666,9 +1913,6 @@ void KX_Dome::DrawPanorama(void)
ortho_width = (float)can_width/can_height * 0.5;
ortho_height = 0.5;
}
-
- ortho_width /= m_size;
- ortho_height /= m_size;
glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_height, -20.0, 10.0);
}
@@ -1728,8 +1972,6 @@ void KX_Dome::DrawPanorama(void)
void KX_Dome::DrawDomeWarped(void)
{
- int i,j;
-
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@@ -1739,7 +1981,6 @@ void KX_Dome::DrawDomeWarped(void)
int can_height = m_viewport.GetTop();
double screen_ratio = can_width/ (double) can_height;
- screen_ratio /= m_size;
glOrtho(-screen_ratio,screen_ratio,-1.0,1.0,-20.0,10.0);
@@ -1762,10 +2003,6 @@ void KX_Dome::DrawDomeWarped(void)
glEnable(GL_TEXTURE_2D);
glColor3f(1.0,1.0,1.0);
-
- float uv_width = (float)(warp.bufferwidth-1) / warp.imagewidth;
- float uv_height = (float)(warp.bufferheight-1) / warp.imageheight;
-
if (dlistSupported){
glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
glCallList(dlistId + m_numfaces);
@@ -1806,8 +2043,7 @@ void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i)
MT_Transform camtrans(cam->GetWorldToCamera());
MT_Matrix4x4 viewmat(camtrans);
- m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldPosition(),
- cam->GetCameraLocation(), cam->GetCameraOrientation());
+ m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), 1.0);
cam->SetModelviewMatrix(viewmat);
scene->CalculateVisibleMeshes(m_rasterizer,cam);
@@ -1816,4 +2052,5 @@ void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i)
// restore the original orientation
cam->NodeSetLocalOrientation(camori);
cam->NodeUpdateGS(0.f);
-} \ No newline at end of file
+}
+
diff --git a/source/gameengine/Ketsji/KX_Dome.h b/source/gameengine/Ketsji/KX_Dome.h
index 786e04b4385..20b60ef0173 100644
--- a/source/gameengine/Ketsji/KX_Dome.h
+++ b/source/gameengine/Ketsji/KX_Dome.h
@@ -38,13 +38,14 @@ Developed as part of a Research and Development project for SAT - La Société des
#include "MEM_guardedalloc.h"
#include "BKE_text.h"
-//#include "BLI_blenlib.h"
//Dome modes: limit hardcoded in buttons_scene.c
-#define DOME_FISHEYE 1
-#define DOME_TRUNCATED 2
-#define DOME_PANORAM_SPH 3
-#define DOME_NUM_MODES 4
+#define DOME_FISHEYE 1
+#define DOME_TRUNCATED_FRONT 2
+#define DOME_TRUNCATED_REAR 3
+#define DOME_ENVMAP 4
+#define DOME_PANORAM_SPH 5
+#define DOME_NUM_MODES 6
/// class for render 3d scene
@@ -60,12 +61,12 @@ public:
RAS_IRenderTools* m_rendertools,
/// engine
KX_KetsjiEngine* m_engine,
-
- float size,
+
short res,
short mode,
short angle,
float resbuf,
+ short tilt,
struct Text* warptext
);
@@ -74,6 +75,7 @@ public:
//openGL checks:
bool dlistSupported;
+ bool fboSupported;
//openGL names:
GLuint domefacesId[7]; // ID of the images -- room for 7 images, using only 4 for 180º x 360º dome, 6 for panoramic and +1 for warp mesh
@@ -93,8 +95,9 @@ public:
bool usemesh;
int mode;
int n_width, n_height; //nodes width and height
- int imagewidth, imageheight;
+ int imagesize;
int bufferwidth, bufferheight;
+ GLuint fboId;
vector <vector <WarpMeshNode> > nodes;
} warp;
@@ -116,7 +119,7 @@ public:
void CalculateFrustum(KX_Camera* cam);
void RotateCamera(KX_Camera* cam, int i);
- //Mesh Creating Functions
+ //Mesh creation Functions
void CreateMeshDome180(void);
void CreateMeshDome250(void);
void CreateMeshPanorama(void);
@@ -131,6 +134,7 @@ public:
void GLDrawWarpQuads(void);
void Draw(void);
void DrawDomeFisheye(void);
+ void DrawEnvMap(void);
void DrawPanorama(void);
void DrawDomeWarped(void);
@@ -139,6 +143,8 @@ public:
void ClearGLImages(void);//called on resize
bool CreateDL(void); //create Display Lists
void ClearDL(void); //remove Display Lists
+ bool CreateFBO(void);//create FBO (for warp mesh)
+ void ClearFBO(void); //remove FBO
void CalculateCameraOrientation();
void CalculateImageSize(); //set m_imagesize
@@ -153,13 +159,13 @@ protected:
int m_buffersize; // canvas small dimension
int m_numfaces; // 4 to 6 depending on the kind of dome image
int m_numimages; //numfaces +1 if we have warp mesh
-
- float m_size; // size to adjust
+
short m_resolution; //resolution to tesselate the mesh
short m_mode; // the mode (truncated, warped, panoramic,...)
short m_angle; //the angle of the fisheye
float m_radangle; //the angle of the fisheye in radians
float m_resbuffer; //the resolution of the buffer
+ short m_tilt; //the dome tilt (camera rotation on horizontal axis)
RAS_Rect m_viewport;
@@ -181,3 +187,4 @@ protected:
};
#endif
+
diff --git a/source/gameengine/Ketsji/KX_GameActuator.cpp b/source/gameengine/Ketsji/KX_GameActuator.cpp
index 8b587c6f7de..28bf12f5e87 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.cpp
+++ b/source/gameengine/Ketsji/KX_GameActuator.cpp
@@ -73,8 +73,6 @@ CValue* KX_GameActuator::GetReplica()
{
KX_GameActuator* replica = new KX_GameActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
}
@@ -151,6 +149,8 @@ bool KX_GameActuator::Update()
} else {
printf("Warning: could not create marshal buffer\n");
}
+ if (marshal_buffer)
+ delete [] marshal_buffer;
}
break;
}
@@ -208,8 +208,13 @@ bool KX_GameActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_GameActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_GameActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -249,16 +254,20 @@ PyMethodDef KX_GameActuator::Methods[] =
};
PyAttributeDef KX_GameActuator::Attributes[] = {
- KX_PYATTRIBUTE_STRING_RW("file",0,100,false,KX_GameActuator,m_filename),
+ KX_PYATTRIBUTE_STRING_RW("fileName",0,100,false,KX_GameActuator,m_filename),
+ KX_PYATTRIBUTE_INT_RW("mode", KX_GAME_NODEF+1, KX_GAME_MAX-1, true, KX_GameActuator, m_mode),
{ NULL } //Sentinel
};
-PyObject*
-KX_GameActuator::py_getattro(PyObject *attr)
+PyObject* KX_GameActuator::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_GameActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_GameActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);
@@ -272,7 +281,7 @@ const char KX_GameActuator::GetFile_doc[] =
"get the name of the file to start.\n";
PyObject* KX_GameActuator::PyGetFile(PyObject* args, PyObject* kwds)
{
- ShowDeprecationWarning("getFile()", "the file property");
+ ShowDeprecationWarning("getFile()", "the fileName property");
return PyString_FromString(m_filename);
}
@@ -284,7 +293,7 @@ PyObject* KX_GameActuator::PySetFile(PyObject* args, PyObject* kwds)
{
char* new_file;
- ShowDeprecationWarning("setFile()", "the file property");
+ ShowDeprecationWarning("setFile()", "the fileName property");
if (!PyArg_ParseTuple(args, "s:setFile", &new_file))
{
diff --git a/source/gameengine/Ketsji/KX_GameActuator.h b/source/gameengine/Ketsji/KX_GameActuator.h
index 570cb2e68ef..b2b1d6ec2b9 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.h
+++ b/source/gameengine/Ketsji/KX_GameActuator.h
@@ -78,6 +78,7 @@ protected:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated functions ----->
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index bea0fcff2af..7f417b325c8 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -49,6 +49,8 @@ typedef unsigned long uint_ptr;
#include "RAS_IPolygonMaterial.h"
#include "KX_BlenderMaterial.h"
#include "KX_GameObject.h"
+#include "KX_Camera.h" // only for their ::Type
+#include "KX_Light.h" // only for their ::Type
#include "RAS_MeshObject.h"
#include "KX_MeshProxy.h"
#include "KX_PolyProxy.h"
@@ -63,6 +65,7 @@ typedef unsigned long uint_ptr;
#include "KX_RayCast.h"
#include "KX_PythonInit.h"
#include "KX_PyMath.h"
+#include "KX_PythonSeq.h"
#include "SCA_IActuator.h"
#include "SCA_ISensor.h"
#include "SCA_IController.h"
@@ -187,38 +190,23 @@ double KX_GameObject::GetNumber()
-STR_String KX_GameObject::GetName()
+STR_String& KX_GameObject::GetName()
{
return m_name;
}
-void KX_GameObject::SetName(STR_String name)
+void KX_GameObject::SetName(const char *name)
{
m_name = name;
}; // Set the name of the value
-
-
-void KX_GameObject::ReplicaSetName(STR_String name)
-{
-}
-
-
-
-
-
-
KX_IPhysicsController* KX_GameObject::GetPhysicsController()
{
return m_pPhysicsController1;
}
-
-
-
-
KX_GameObject* KX_GameObject::GetParent()
{
KX_GameObject* result = NULL;
@@ -238,7 +226,7 @@ KX_GameObject* KX_GameObject::GetParent()
}
-void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj)
+void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj, bool addToCompound, bool ghost)
{
// check on valid node in case a python controller holds a reference to a deleted object
if (obj && GetSGNode() && obj->GetSGNode() && GetSGNode()->GetSGParent() != obj->GetSGNode())
@@ -259,7 +247,7 @@ void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj)
if (m_pPhysicsController1)
{
- m_pPhysicsController1->SuspendDynamics(true);
+ m_pPhysicsController1->SuspendDynamics(ghost);
}
// Set us to our new scale, position, and orientation
scale2[0] = 1.0/scale2[0];
@@ -280,7 +268,7 @@ void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj)
Release();
// if the new parent is a compound object, add this object shape to the compound shape.
// step 0: verify this object has physical controller
- if (m_pPhysicsController1)
+ if (m_pPhysicsController1 && addToCompound)
{
// step 1: find the top parent (not necessarily obj)
KX_GameObject* rootobj = (KX_GameObject*)obj->GetSGNode()->GetRootSGParent()->GetSGClientObject();
@@ -326,33 +314,75 @@ void KX_GameObject::RemoveParent(KX_Scene *scene)
rootobj->m_pPhysicsController1->RemoveCompoundChild(m_pPhysicsController1);
}
m_pPhysicsController1->RestoreDynamics();
+ if (m_pPhysicsController1->IsDyna() && rootobj->m_pPhysicsController1)
+ {
+ // dynamic object should remember the velocity they had while being parented
+ MT_Point3 childPoint = GetSGNode()->GetWorldPosition();
+ MT_Point3 rootPoint = rootobj->GetSGNode()->GetWorldPosition();
+ MT_Point3 relPoint;
+ relPoint = (childPoint-rootPoint);
+ MT_Vector3 linVel = rootobj->m_pPhysicsController1->GetVelocity(relPoint);
+ MT_Vector3 angVel = rootobj->m_pPhysicsController1->GetAngularVelocity();
+ m_pPhysicsController1->SetLinearVelocity(linVel, false);
+ m_pPhysicsController1->SetAngularVelocity(angVel, false);
+ }
}
// graphically, the object hasn't change place, no need to update m_pGraphicController
}
}
-void KX_GameObject::ProcessReplica(KX_GameObject* replica)
+void KX_GameObject::ProcessReplica()
{
- replica->m_pPhysicsController1 = NULL;
- replica->m_pGraphicController = NULL;
- replica->m_pSGNode = NULL;
- replica->m_pClient_info = new KX_ClientObjectInfo(*m_pClient_info);
- replica->m_pClient_info->m_gameobject = replica;
- replica->m_state = 0;
+ SCA_IObject::ProcessReplica();
+
+ m_pPhysicsController1 = NULL;
+ m_pGraphicController = NULL;
+ m_pSGNode = NULL;
+ m_pClient_info = new KX_ClientObjectInfo(*m_pClient_info);
+ m_pClient_info->m_gameobject = this;
+ m_state = 0;
if(m_attr_dict)
- replica->m_attr_dict= PyDict_Copy(m_attr_dict);
+ m_attr_dict= PyDict_Copy(m_attr_dict);
+
+}
+
+static void setGraphicController_recursive(SG_Node* node)
+{
+ NodeList& children = node->GetSGChildren();
+
+ for (NodeList::iterator childit = children.begin();!(childit==children.end());++childit)
+ {
+ SG_Node* childnode = (*childit);
+ KX_GameObject *clientgameobj = static_cast<KX_GameObject*>( (*childit)->GetSGClientObject());
+ if (clientgameobj != NULL) // This is a GameObject
+ clientgameobj->ActivateGraphicController(false);
+ // if the childobj is NULL then this may be an inverse parent link
+ // so a non recursive search should still look down this node.
+ setGraphicController_recursive(childnode);
+ }
}
+void KX_GameObject::ActivateGraphicController(bool recurse)
+{
+ if (m_pGraphicController)
+ {
+ m_pGraphicController->Activate(m_bVisible);
+ }
+ if (recurse)
+ {
+ setGraphicController_recursive(GetSGNode());
+ }
+}
+
CValue* KX_GameObject::GetReplica()
{
KX_GameObject* replica = new KX_GameObject(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
- ProcessReplica(replica);
+ replica->ProcessReplica();
return replica;
}
@@ -421,6 +451,7 @@ double* KX_GameObject::GetOpenGLMatrix()
m_bIsNegativeScaling = ((scaling[0] < 0.0) ^ (scaling[1] < 0.0) ^ (scaling[2] < 0.0)) ? true : false;
trans.scale(scaling[0], scaling[1], scaling[2]);
trans.getValue(fl);
+ GetSGNode()->ClearDirty();
}
return fl;
}
@@ -428,8 +459,18 @@ double* KX_GameObject::GetOpenGLMatrix()
void KX_GameObject::AddMeshUser()
{
for (size_t i=0;i<m_meshes.size();i++)
- m_meshes[i]->AddMeshUser(this);
-
+ {
+ m_meshes[i]->AddMeshUser(this, &m_meshSlots, GetDeformer());
+ }
+ // set the part of the mesh slot that never change
+ double* fl = GetOpenGLMatrixPtr()->getPointer();
+
+ SG_QList::iterator<RAS_MeshSlot> mit(m_meshSlots);
+ RAS_MeshSlot* ms;
+ for(mit.begin(); !mit.end(); ++mit)
+ {
+ (*mit)->m_OpenGLMatrix = fl;
+ }
UpdateBuckets(false);
}
@@ -453,10 +494,27 @@ static void UpdateBuckets_recursive(SG_Node* node)
void KX_GameObject::UpdateBuckets( bool recursive )
{
if (GetSGNode()) {
- double* fl = GetOpenGLMatrixPtr()->getPointer();
+ RAS_MeshSlot *ms;
+
+ if (GetSGNode()->IsDirty())
+ GetOpenGLMatrix();
- for (size_t i=0;i<m_meshes.size();i++)
- m_meshes[i]->UpdateBuckets(this, fl, m_bUseObjectColor, m_objectColor, m_bVisible, m_bCulled);
+ SG_QList::iterator<RAS_MeshSlot> mit(m_meshSlots);
+ for(mit.begin(); !mit.end(); ++mit)
+ {
+ ms = *mit;
+ ms->m_bObjectColor = m_bUseObjectColor;
+ ms->m_RGBAcolor = m_objectColor;
+ ms->m_bVisible = m_bVisible;
+ ms->m_bCulled = m_bCulled || !m_bVisible;
+ if (!ms->m_bCulled)
+ ms->m_bucket->ActivateMesh(ms);
+
+ /* split if necessary */
+#ifdef USE_SPLIT
+ ms->Split();
+#endif
+ }
if (recursive) {
UpdateBuckets_recursive(GetSGNode());
@@ -476,11 +534,11 @@ void KX_GameObject::RemoveMeshes()
void KX_GameObject::UpdateTransform()
{
- if (m_pPhysicsController1)
- // only update the transform of static object, dynamic object are handled differently
- // note that for bullet, this does not even update the transform of static object
+ // HACK: saves function call for dynamic object, they are handled differently
+ if (m_pPhysicsController1 && !m_pPhysicsController1->IsDyna())
+ // Note that for Bullet, this does not even update the transform of static object
// but merely sets there collision flag to "kinematic" because the synchronization is
- // done differently during physics simulation
+ // done during physics simulation
m_pPhysicsController1->SetSumoTransform(true);
if (m_pGraphicController)
// update the culling tree
@@ -493,6 +551,20 @@ void KX_GameObject::UpdateTransformFunc(SG_IObject* node, void* gameobj, void* s
((KX_GameObject*)gameobj)->UpdateTransform();
}
+void KX_GameObject::SynchronizeTransform()
+{
+ // only used for sensor object, do full synchronization as bullet doesn't do it
+ if (m_pPhysicsController1)
+ m_pPhysicsController1->SetTransform();
+ if (m_pGraphicController)
+ m_pGraphicController->SetGraphicTransform();
+}
+
+void KX_GameObject::SynchronizeTransformFunc(SG_IObject* node, void* gameobj, void* scene)
+{
+ ((KX_GameObject*)gameobj)->SynchronizeTransform();
+}
+
void KX_GameObject::SetDebugColor(unsigned int bgra)
{
@@ -613,6 +685,8 @@ KX_GameObject::SetVisible(
{
if (GetSGNode()) {
m_bVisible = v;
+ if (m_pGraphicController)
+ m_pGraphicController->Activate(m_bVisible);
if (recursive)
setVisible_recursive(GetSGNode(), v);
}
@@ -1081,7 +1155,6 @@ CListValue* KX_GameObject::GetChildrenRecursive()
/* ------- python stuff ---------------------------------------------------*/
PyMethodDef KX_GameObject::Methods[] = {
- {"setWorldPosition", (PyCFunction) KX_GameObject::sPySetWorldPosition, METH_O},
{"applyForce", (PyCFunction) KX_GameObject::sPyApplyForce, METH_VARARGS},
{"applyTorque", (PyCFunction) KX_GameObject::sPyApplyTorque, METH_VARARGS},
{"applyRotation", (PyCFunction) KX_GameObject::sPyApplyRotation, METH_VARARGS},
@@ -1100,7 +1173,7 @@ PyMethodDef KX_GameObject::Methods[] = {
{"disableRigidBody", (PyCFunction)KX_GameObject::sPyDisableRigidBody,METH_NOARGS},
{"applyImpulse", (PyCFunction) KX_GameObject::sPyApplyImpulse, METH_VARARGS},
{"setCollisionMargin", (PyCFunction) KX_GameObject::sPySetCollisionMargin, METH_O},
- {"setParent", (PyCFunction)KX_GameObject::sPySetParent,METH_O},
+ {"setParent", (PyCFunction)KX_GameObject::sPySetParent,METH_VARARGS},
{"setVisible",(PyCFunction) KX_GameObject::sPySetVisible, METH_VARARGS},
{"setOcclusion",(PyCFunction) KX_GameObject::sPySetOcclusion, METH_VARARGS},
{"removeParent", (PyCFunction)KX_GameObject::sPyRemoveParent,METH_NOARGS},
@@ -1116,10 +1189,15 @@ PyMethodDef KX_GameObject::Methods[] = {
KX_PYMETHODTABLE_O(KX_GameObject, getDistanceTo),
KX_PYMETHODTABLE_O(KX_GameObject, getVectTo),
KX_PYMETHODTABLE(KX_GameObject, sendMessage),
-
+
+ // dict style access for props
+ {"has_key",(PyCFunction) KX_GameObject::sPyhas_key, METH_O},
+ {"get",(PyCFunction) KX_GameObject::sPyget, METH_VARARGS},
+
// deprecated
{"getPosition", (PyCFunction) KX_GameObject::sPyGetPosition, METH_NOARGS},
{"setPosition", (PyCFunction) KX_GameObject::sPySetPosition, METH_O},
+ {"setWorldPosition", (PyCFunction) KX_GameObject::sPySetWorldPosition, METH_O},
{"getOrientation", (PyCFunction) KX_GameObject::sPyGetOrientation, METH_NOARGS},
{"setOrientation", (PyCFunction) KX_GameObject::sPySetOrientation, METH_O},
{"getState",(PyCFunction) KX_GameObject::sPyGetState, METH_NOARGS},
@@ -1147,13 +1225,14 @@ PyAttributeDef KX_GameObject::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("state", KX_GameObject, pyattr_get_state, pyattr_set_state),
KX_PYATTRIBUTE_RO_FUNCTION("meshes", KX_GameObject, pyattr_get_meshes),
KX_PYATTRIBUTE_RW_FUNCTION("localOrientation",KX_GameObject,pyattr_get_localOrientation,pyattr_set_localOrientation),
- KX_PYATTRIBUTE_RO_FUNCTION("worldOrientation",KX_GameObject,pyattr_get_worldOrientation),
+ KX_PYATTRIBUTE_RW_FUNCTION("worldOrientation",KX_GameObject,pyattr_get_worldOrientation,pyattr_set_worldOrientation),
KX_PYATTRIBUTE_RW_FUNCTION("localPosition", KX_GameObject, pyattr_get_localPosition, pyattr_set_localPosition),
KX_PYATTRIBUTE_RW_FUNCTION("worldPosition", KX_GameObject, pyattr_get_worldPosition, pyattr_set_worldPosition),
- KX_PYATTRIBUTE_RW_FUNCTION("localScaling", KX_GameObject, pyattr_get_localScaling, pyattr_set_localScaling),
- KX_PYATTRIBUTE_RO_FUNCTION("worldScaling", KX_GameObject, pyattr_get_worldScaling),
-
- KX_PYATTRIBUTE_RO_FUNCTION("__dict__", KX_GameObject, pyattr_get_dir_dict),
+ KX_PYATTRIBUTE_RW_FUNCTION("localScale", KX_GameObject, pyattr_get_localScaling, pyattr_set_localScaling),
+ KX_PYATTRIBUTE_RO_FUNCTION("worldScale", KX_GameObject, pyattr_get_worldScaling),
+ KX_PYATTRIBUTE_RO_FUNCTION("children", KX_GameObject, pyattr_get_children),
+ KX_PYATTRIBUTE_RO_FUNCTION("childrenRecursive", KX_GameObject, pyattr_get_children_recursive),
+ KX_PYATTRIBUTE_RO_FUNCTION("attrDict", KX_GameObject, pyattr_get_attrDict),
/* Experemental, dont rely on these yet */
KX_PYATTRIBUTE_RO_FUNCTION("sensors", KX_GameObject, pyattr_get_sensors),
@@ -1193,8 +1272,8 @@ PyObject* KX_GameObject::PyReplaceMesh(PyObject* value)
PyObject* KX_GameObject::PyEndObject()
{
-
KX_Scene *scene = KX_GetActiveScene();
+
scene->DelayedRemoveObject(this);
Py_RETURN_NONE;
@@ -1208,21 +1287,6 @@ PyObject* KX_GameObject::PyGetPosition()
return PyObjectFrom(NodeGetWorldPosition());
}
-
-Py_ssize_t KX_GameObject::Map_Len(PyObject* self_v)
-{
- KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(self_v);
-
- if (self==NULL) /* not sure what to do here */
- return 0;
-
- Py_ssize_t len= self->GetPropertyCount();
- if(self->m_attr_dict)
- len += PyDict_Size(self->m_attr_dict);
- return len;
-}
-
-
PyObject *KX_GameObject::Map_GetItem(PyObject *self_v, PyObject *item)
{
KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(self_v);
@@ -1231,7 +1295,7 @@ PyObject *KX_GameObject::Map_GetItem(PyObject *self_v, PyObject *item)
PyObject* pyconvert;
if (self==NULL) {
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
return NULL;
}
@@ -1265,7 +1329,7 @@ int KX_GameObject::Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val)
PyErr_Clear();
if (self==NULL) {
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
return -1;
}
@@ -1281,7 +1345,7 @@ int KX_GameObject::Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val)
if (del==0) {
if(attr_str) PyErr_Format(PyExc_KeyError, "gameOb[key] = value: KX_GameObject, key \"%s\" could not be set", attr_str);
- else PyErr_SetString(PyExc_KeyError, "gameOb[key] = value: KX_GameObject, key could not be set");
+ else PyErr_SetString(PyExc_KeyError, "del gameOb[key]: KX_GameObject, key could not be deleted");
return -1;
}
else if (self->m_attr_dict) {
@@ -1292,9 +1356,9 @@ int KX_GameObject::Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val)
int set= 0;
/* as CValue */
- if(attr_str)
+ if(attr_str && BGE_PROXY_CHECK_TYPE(val)==0) /* dont allow GameObjects for eg to be assigned to CValue props */
{
- CValue* vallie = self->ConvertPythonToValue(val);
+ CValue* vallie = self->ConvertPythonToValue(val, ""); /* error unused */
if(vallie)
{
@@ -1345,17 +1409,21 @@ int KX_GameObject::Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val)
return 0; /* success */
}
-
+/* Cant set the len otherwise it can evaluate as false */
PyMappingMethods KX_GameObject::Mapping = {
- (lenfunc)KX_GameObject::Map_Len, /*inquiry mp_length */
+ (lenfunc)NULL , /*inquiry mp_length */
(binaryfunc)KX_GameObject::Map_GetItem, /*binaryfunc mp_subscript */
(objobjargproc)KX_GameObject::Map_SetItem, /*objobjargproc mp_ass_subscript */
};
-
PyTypeObject KX_GameObject::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_GameObject",
sizeof(PyObjectPlus_Proxy),
0,
@@ -1396,8 +1464,10 @@ PyObject* KX_GameObject::pyattr_get_parent(void *self_v, const KX_PYATTRIBUTE_DE
{
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
KX_GameObject* parent = self->GetParent();
- if (parent)
+ if (parent) {
+ parent->Release(); /* self->GetParent() AddRef's */
return parent->GetProxy();
+ }
Py_RETURN_NONE;
}
@@ -1415,13 +1485,13 @@ int KX_GameObject::pyattr_set_mass(void *self_v, const KX_PYATTRIBUTE_DEF *attrd
MT_Scalar val = PyFloat_AsDouble(value);
if (val < 0.0f) { /* also accounts for non float */
PyErr_SetString(PyExc_AttributeError, "gameOb.mass = float: KX_GameObject, expected a float zero or above");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
if (spc)
spc->SetMass(val);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1438,13 +1508,13 @@ int KX_GameObject::pyattr_set_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF
MT_Scalar val = PyFloat_AsDouble(value);
if (val < 0.0f) { /* also accounts for non float */
PyErr_SetString(PyExc_AttributeError, "gameOb.linVelocityMin = float: KX_GameObject, expected a float zero or above");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
if (spc)
spc->SetLinVelocityMin(val);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1461,13 +1531,13 @@ int KX_GameObject::pyattr_set_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF
MT_Scalar val = PyFloat_AsDouble(value);
if (val < 0.0f) { /* also accounts for non float */
PyErr_SetString(PyExc_AttributeError, "gameOb.linVelocityMax = float: KX_GameObject, expected a float zero or above");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
if (spc)
spc->SetLinVelocityMax(val);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
@@ -1483,12 +1553,12 @@ int KX_GameObject::pyattr_set_visible(void *self_v, const KX_PYATTRIBUTE_DEF *at
int param = PyObject_IsTrue( value );
if (param == -1) {
PyErr_SetString(PyExc_AttributeError, "gameOb.visible = bool: KX_GameObject, expected True or False");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
self->SetVisible(param, false);
self->UpdateBuckets(false);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_worldPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1502,11 +1572,11 @@ int KX_GameObject::pyattr_set_worldPosition(void *self_v, const KX_PYATTRIBUTE_D
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
MT_Point3 pos;
if (!PyVecTo(value, pos))
- return 1;
+ return PY_SET_ATTR_FAIL;
self->NodeSetWorldPosition(pos);
self->NodeUpdateGS(0.f);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_localPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1523,11 +1593,11 @@ int KX_GameObject::pyattr_set_localPosition(void *self_v, const KX_PYATTRIBUTE_D
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
MT_Point3 pos;
if (!PyVecTo(value, pos))
- return 1;
+ return PY_SET_ATTR_FAIL;
self->NodeSetLocalPosition(pos);
self->NodeUpdateGS(0.f);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_localInertia(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1546,6 +1616,26 @@ PyObject* KX_GameObject::pyattr_get_worldOrientation(void *self_v, const KX_PYAT
return PyObjectFrom(self->NodeGetWorldOrientation());
}
+int KX_GameObject::pyattr_set_worldOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+
+ /* if value is not a sequence PyOrientationTo makes an error */
+ MT_Matrix3x3 rot;
+ if (!PyOrientationTo(value, rot, "gameOb.worldOrientation = sequence: KX_GameObject, "))
+ return PY_SET_ATTR_FAIL;
+
+ if (self->GetSGNode() && self->GetSGNode()->GetSGParent()) {
+ self->NodeSetLocalOrientation(self->GetSGNode()->GetSGParent()->GetWorldOrientation().inverse()*rot);
+ }
+ else {
+ self->NodeSetLocalOrientation(rot);
+ }
+
+ self->NodeUpdateGS(0.f);
+ return PY_SET_ATTR_SUCCESS;
+}
+
PyObject* KX_GameObject::pyattr_get_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
@@ -1561,12 +1651,12 @@ int KX_GameObject::pyattr_set_localOrientation(void *self_v, const KX_PYATTRIBUT
/* if value is not a sequence PyOrientationTo makes an error */
MT_Matrix3x3 rot;
- if (!PyOrientationTo(value, rot, "gameOb.orientation = sequence: KX_GameObject, "))
- return NULL;
+ if (!PyOrientationTo(value, rot, "gameOb.localOrientation = sequence: KX_GameObject, "))
+ return PY_SET_ATTR_FAIL;
self->NodeSetLocalOrientation(rot);
self->NodeUpdateGS(0.f);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_worldScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1589,11 +1679,11 @@ int KX_GameObject::pyattr_set_localScaling(void *self_v, const KX_PYATTRIBUTE_DE
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
MT_Vector3 scale;
if (!PyVecTo(value, scale))
- return 1;
+ return PY_SET_ATTR_FAIL;
self->NodeSetLocalScale(scale);
self->NodeUpdateGS(0.f);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_timeOffset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1615,12 +1705,12 @@ int KX_GameObject::pyattr_set_timeOffset(void *self_v, const KX_PYATTRIBUTE_DEF
SG_Node* sg_parent= self->GetSGNode()->GetSGParent();
if (val < 0.0f) { /* also accounts for non float */
PyErr_SetString(PyExc_AttributeError, "gameOb.timeOffset = float: KX_GameObject, expected a float zero or above");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
if (sg_parent && sg_parent->IsSlowParent())
static_cast<KX_SlowParentRelation *>(sg_parent->GetParentRelation())->SetTimeOffset(val);
}
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1639,16 +1729,16 @@ int KX_GameObject::pyattr_set_state(void *self_v, const KX_PYATTRIBUTE_DEF *attr
if (state_i == -1 && PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError, "gameOb.state = int: KX_GameObject, expected an int bit field");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
state |= state_i;
if ((state & ((1<<30)-1)) == 0) {
PyErr_SetString(PyExc_AttributeError, "gameOb.state = int: KX_GameObject, state bitfield was not between 0 and 30 (1<<0 and 1<<29)");
- return 1;
+ return PY_SET_ATTR_FAIL;
}
self->SetState(state);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_GameObject::pyattr_get_meshes(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -1657,10 +1747,10 @@ PyObject* KX_GameObject::pyattr_get_meshes(void *self_v, const KX_PYATTRIBUTE_DE
PyObject *meshes= PyList_New(self->m_meshes.size());
int i;
- for(i=0; i < self->m_meshes.size(); i++)
+ for(i=0; i < (int)self->m_meshes.size(); i++)
{
KX_MeshProxy* meshproxy = new KX_MeshProxy(self->m_meshes[i]);
- PyList_SET_ITEM(meshes, i, meshproxy->GetProxy());
+ PyList_SET_ITEM(meshes, i, meshproxy->NewProxy(true));
}
return meshes;
@@ -1669,69 +1759,40 @@ PyObject* KX_GameObject::pyattr_get_meshes(void *self_v, const KX_PYATTRIBUTE_DE
/* experemental! */
PyObject* KX_GameObject::pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
- KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
- SCA_SensorList& sensors= self->GetSensors();
- PyObject* resultlist = PyList_New(sensors.size());
-
- for (unsigned int index=0;index<sensors.size();index++)
- PyList_SET_ITEM(resultlist, index, sensors[index]->GetProxy());
-
- return resultlist;
+ return KX_PythonSeq_CreatePyObject((static_cast<KX_GameObject*>(self_v))->m_proxy, KX_PYGENSEQ_OB_TYPE_SENSORS);
}
PyObject* KX_GameObject::pyattr_get_controllers(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
- KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
- SCA_ControllerList& controllers= self->GetControllers();
- PyObject* resultlist = PyList_New(controllers.size());
-
- for (unsigned int index=0;index<controllers.size();index++)
- PyList_SET_ITEM(resultlist, index, controllers[index]->GetProxy());
-
- return resultlist;
+ return KX_PythonSeq_CreatePyObject((static_cast<KX_GameObject*>(self_v))->m_proxy, KX_PYGENSEQ_OB_TYPE_CONTROLLERS);
}
PyObject* KX_GameObject::pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
+ return KX_PythonSeq_CreatePyObject((static_cast<KX_GameObject*>(self_v))->m_proxy, KX_PYGENSEQ_OB_TYPE_ACTUATORS);
+}
+
+PyObject* KX_GameObject::pyattr_get_children(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
- SCA_ActuatorList& actuators= self->GetActuators();
- PyObject* resultlist = PyList_New(actuators.size());
-
- for (unsigned int index=0;index<actuators.size();index++)
- PyList_SET_ITEM(resultlist, index, actuators[index]->GetProxy());
-
- return resultlist;
+ return self->GetChildren()->NewProxy(true);
}
-/* __dict__ only for the purpose of giving useful dir() results */
-PyObject* KX_GameObject::pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+PyObject* KX_GameObject::pyattr_get_children_recursive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ return self->GetChildrenRecursive()->NewProxy(true);
+}
+
+PyObject* KX_GameObject::pyattr_get_attrDict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
- PyObject *dict_str = PyString_FromString("__dict__");
- PyObject *dict= py_getattr_dict(self->SCA_IObject::py_getattro(dict_str), Type.tp_dict);
- Py_DECREF(dict_str);
-
- if(dict==NULL)
- return NULL;
-
- /* Not super fast getting as a list then making into dict keys but its only for dir() */
- PyObject *list= self->ConvertKeysToPython();
- if(list)
- {
- int i;
- for(i=0; i<PyList_Size(list); i++)
- PyDict_SetItem(dict, PyList_GET_ITEM(list, i), Py_None);
- }
- else
- PyErr_Clear();
-
- Py_DECREF(list);
- /* Add m_attr_dict if we have it */
- if(self->m_attr_dict)
- PyDict_Update(dict, self->m_attr_dict);
+ if(self->m_attr_dict==NULL)
+ self->m_attr_dict= PyDict_New();
- return dict;
+ Py_INCREF(self->m_attr_dict);
+ return self->m_attr_dict;
}
/* We need these because the macros have a return in them */
@@ -1772,11 +1833,38 @@ PyObject* KX_GameObject::py_getattro(PyObject *attr)
return object;
}
+PyObject* KX_GameObject::py_getattro_dict() {
+ //py_getattro_dict_up(SCA_IObject);
+ PyObject *dict= py_getattr_dict(SCA_IObject::py_getattro_dict(), Type.tp_dict);
+ if(dict==NULL)
+ return NULL;
+
+ /* normally just return this but KX_GameObject has some more items */
+
+
+ /* Not super fast getting as a list then making into dict keys but its only for dir() */
+ PyObject *list= ConvertKeysToPython();
+ if(list)
+ {
+ int i;
+ for(i=0; i<PyList_Size(list); i++)
+ PyDict_SetItem(dict, PyList_GET_ITEM(list, i), Py_None);
+ }
+ else
+ PyErr_Clear();
+
+ Py_DECREF(list);
+
+ /* Add m_attr_dict if we have it */
+ if(m_attr_dict)
+ PyDict_Update(dict, m_attr_dict);
+
+ return dict;
+}
+
int KX_GameObject::py_setattro(PyObject *attr, PyObject *value) // py_setattro method
{
- int ret;
-
- ret= py_setattro__internal(attr, value);
+ int ret= py_setattro__internal(attr, value);
if (ret==PY_SET_ATTR_SUCCESS) {
/* remove attribute in our own dict to avoid double ups */
@@ -1789,7 +1877,7 @@ int KX_GameObject::py_setattro(PyObject *attr, PyObject *value) // py_setattro m
if (ret==PY_SET_ATTR_COERCE_FAIL) {
/* CValue attribute exists, remove CValue and add PyDict value */
- RemoveProperty(STR_String(PyString_AsString(attr)));
+ RemoveProperty(PyString_AsString(attr));
ret= PY_SET_ATTR_MISSING;
}
@@ -1814,16 +1902,18 @@ int KX_GameObject::py_setattro(PyObject *attr, PyObject *value) // py_setattro m
int KX_GameObject::py_delattro(PyObject *attr)
{
+ ShowDeprecationWarning("del ob.attr", "del ob['attr'] for user defined properties");
+
char *attr_str= PyString_AsString(attr);
- if (RemoveProperty(STR_String(attr_str))) // XXX - should call CValues instead but its only 2 lines here
- return 0;
+ if (RemoveProperty(attr_str)) // XXX - should call CValues instead but its only 2 lines here
+ return PY_SET_ATTR_SUCCESS;
if (m_attr_dict && (PyDict_DelItem(m_attr_dict, attr) == 0))
- return 0;
+ return PY_SET_ATTR_SUCCESS;
PyErr_Format(PyExc_AttributeError, "del gameOb.myAttr: KX_GameObject, attribute \"%s\" dosnt exist", attr_str);
- return 1;
+ return PY_SET_ATTR_MISSING;
}
@@ -2008,14 +2098,8 @@ PyObject* KX_GameObject::PyGetVelocity(PyObject* args)
MT_Point3 point(0.0,0.0,0.0);
PyObject* pypos = NULL;
- if (PyArg_ParseTuple(args, "|O:getVelocity", &pypos))
- {
- if (pypos)
- PyVecTo(pypos, point);
- }
- else {
+ if (!PyArg_ParseTuple(args, "|O:getVelocity", &pypos) || (pypos && !PyVecTo(pypos, point)))
return NULL;
- }
if (m_pPhysicsController1)
{
@@ -2075,35 +2159,49 @@ PyObject* KX_GameObject::PyGetParent()
{
ShowDeprecationWarning("getParent()", "the parent property");
KX_GameObject* parent = this->GetParent();
- if (parent)
+ if (parent) {
+ parent->Release(); /* self->GetParent() AddRef's */
return parent->GetProxy();
+ }
Py_RETURN_NONE;
}
-PyObject* KX_GameObject::PySetParent(PyObject* value)
+PyObject* KX_GameObject::PySetParent(PyObject* args)
{
+ KX_Scene *scene = KX_GetActiveScene();
+ PyObject* pyobj;
KX_GameObject *obj;
- if (!ConvertPythonToGameObject(value, &obj, false, "gameOb.setParent(value): KX_GameObject"))
- return NULL;
+ int addToCompound=1, ghost=1;
- this->SetParent(KX_GetActiveScene(), obj);
+ if (!PyArg_ParseTuple(args,"O|ii:setParent", &pyobj, &addToCompound, &ghost)) {
+ return NULL; // Python sets a simple error
+ }
+ if (!ConvertPythonToGameObject(pyobj, &obj, true, "gameOb.setParent(obj): KX_GameObject"))
+ return NULL;
+ if (obj)
+ this->SetParent(scene, obj, addToCompound, ghost);
Py_RETURN_NONE;
}
PyObject* KX_GameObject::PyRemoveParent()
{
KX_Scene *scene = KX_GetActiveScene();
+
this->RemoveParent(scene);
Py_RETURN_NONE;
}
PyObject* KX_GameObject::PyGetChildren()
{
+ ShowDeprecationWarning("getChildren()", "the children property");
+
return GetChildren()->NewProxy(true);
}
PyObject* KX_GameObject::PyGetChildrenRecursive()
{
+ ShowDeprecationWarning("getChildrenRecursive()", "the childrenRecursive property");
+
return GetChildrenRecursive()->NewProxy(true);
}
@@ -2203,23 +2301,15 @@ PyObject* KX_GameObject::PyGetOrientation() //keywords
PyObject* KX_GameObject::PySetOrientation(PyObject* value)
{
ShowDeprecationWarning("setOrientation()", "the orientation property");
- MT_Matrix3x3 matrix;
- if (PyObject_IsMT_Matrix(value, 3) && PyMatTo(value, matrix))
- {
- NodeSetLocalOrientation(matrix);
- NodeUpdateGS(0.f);
- Py_RETURN_NONE;
- }
+ MT_Matrix3x3 rot;
+
+ /* if value is not a sequence PyOrientationTo makes an error */
+ if (!PyOrientationTo(value, rot, "gameOb.setOrientation(sequence): KX_GameObject, "))
+ return NULL;
- MT_Quaternion quat;
- if (PyVecTo(value, quat))
- {
- matrix.setRotation(quat);
- NodeSetLocalOrientation(matrix);
- NodeUpdateGS(0.f);
- Py_RETURN_NONE;
- }
- return NULL;
+ NodeSetLocalOrientation(rot);
+ NodeUpdateGS(0.f);
+ Py_RETURN_NONE;
}
PyObject* KX_GameObject::PyAlignAxisToVect(PyObject* args)
@@ -2256,7 +2346,7 @@ PyObject* KX_GameObject::PyGetAxisVect(PyObject* value)
PyObject* KX_GameObject::PySetPosition(PyObject* value)
{
- ShowDeprecationWarning("setPosition()", "the position property");
+ ShowDeprecationWarning("setPosition()", "the localPosition property");
MT_Point3 pos;
if (PyVecTo(value, pos))
{
@@ -2270,6 +2360,7 @@ PyObject* KX_GameObject::PySetPosition(PyObject* value)
PyObject* KX_GameObject::PySetWorldPosition(PyObject* value)
{
+ ShowDeprecationWarning("setWorldPosition()", "the worldPosition property");
MT_Point3 pos;
if (PyVecTo(value, pos))
{
@@ -2474,6 +2565,34 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCastTo,
Py_RETURN_NONE;
}
+/* faster then Py_BuildValue since some scripts call raycast a lot */
+static PyObject *none_tuple_3()
+{
+ PyObject *ret= PyTuple_New(3);
+ PyTuple_SET_ITEM(ret, 0, Py_None);
+ PyTuple_SET_ITEM(ret, 1, Py_None);
+ PyTuple_SET_ITEM(ret, 2, Py_None);
+
+ Py_INCREF(Py_None);
+ Py_INCREF(Py_None);
+ Py_INCREF(Py_None);
+ return ret;
+}
+static PyObject *none_tuple_4()
+{
+ PyObject *ret= PyTuple_New(4);
+ PyTuple_SET_ITEM(ret, 0, Py_None);
+ PyTuple_SET_ITEM(ret, 1, Py_None);
+ PyTuple_SET_ITEM(ret, 2, Py_None);
+ PyTuple_SET_ITEM(ret, 3, Py_None);
+
+ Py_INCREF(Py_None);
+ Py_INCREF(Py_None);
+ Py_INCREF(Py_None);
+ Py_INCREF(Py_None);
+ return ret;
+}
+
KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
"rayCast(to,from,dist,prop,face,xray,poly): cast a ray and return 3-tuple (object,hit,normal) or 4-tuple (object,hit,normal,polygon) of contact point with object within dist that matches prop.\n"
" If no hit, return (None,None,None) or (None,None,None,None).\n"
@@ -2541,12 +2660,14 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
if (dist != 0.0f) {
MT_Vector3 toDir = toPoint-fromPoint;
if (MT_fuzzyZero(toDir.length2())) {
- return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
+ //return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
+ return none_tuple_3();
}
toDir.normalize();
toPoint = fromPoint + (dist) * toDir;
} else if (MT_fuzzyZero((toPoint-fromPoint).length2())) {
- return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
+ //return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
+ return none_tuple_3();
}
PHY_IPhysicsEnvironment* pe = GetPhysicsEnvironment();
@@ -2594,9 +2715,11 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
}
// no hit
if (poly)
- return Py_BuildValue("OOOO", Py_None, Py_None, Py_None, Py_None);
+ //return Py_BuildValue("OOOO", Py_None, Py_None, Py_None, Py_None);
+ return none_tuple_4();
else
- return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
+ //return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
+ return none_tuple_3();
}
KX_PYMETHODDEF_DOC_VARARGS(KX_GameObject, sendMessage,
@@ -2606,6 +2729,7 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_GameObject, sendMessage,
"body = Message body (string)"
"to = Name of object to send the message to")
{
+ KX_Scene *scene = KX_GetActiveScene();
char* subject;
char* body = (char *)"";
char* to = (char *)"";
@@ -2613,12 +2737,58 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_GameObject, sendMessage,
if (!PyArg_ParseTuple(args, "s|sss:sendMessage", &subject, &body, &to))
return NULL;
+
+ scene->GetNetworkScene()->SendMessage(to, from, subject, body);
+ Py_RETURN_NONE;
+}
- KX_GetActiveScene()->GetNetworkScene()->SendMessage(to, from, subject, body);
+/* dict style access */
- Py_RETURN_NONE;
+
+/* Matches python dict.get(key, [default]) */
+PyObject* KX_GameObject::Pyget(PyObject *args)
+{
+ PyObject *key;
+ PyObject* def = Py_None;
+ PyObject* ret;
+
+ if (!PyArg_ParseTuple(args, "O|O:get", &key, &def))
+ return NULL;
+
+
+ if(PyString_Check(key)) {
+ CValue *item = GetProperty(PyString_AsString(key));
+ if (item) {
+ ret = item->ConvertValueToPython();
+ if(ret)
+ return ret;
+ else
+ return item->GetProxy();
+ }
+ }
+
+ if (m_attr_dict && (ret=PyDict_GetItem(m_attr_dict, key))) {
+ Py_INCREF(ret);
+ return ret;
+ }
+
+ Py_INCREF(def);
+ return def;
+}
+
+/* Matches python dict.has_key() */
+PyObject* KX_GameObject::Pyhas_key(PyObject* value)
+{
+ if(PyString_Check(value) && GetProperty(PyString_AsString(value)))
+ Py_RETURN_TRUE;
+
+ if (m_attr_dict && PyDict_GetItem(m_attr_dict, value))
+ Py_RETURN_TRUE;
+
+ Py_RETURN_FALSE;
}
+
/* ---------------------------------------------------------------------
* Some stuff taken from the header
* --------------------------------------------------------------------- */
@@ -2641,6 +2811,7 @@ void KX_GameObject::Relink(GEN_Map<GEN_HashedPtr, void*> *map_parameter)
}
}
+
bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py_none_ok, const char *error_prefix)
{
if (value==NULL) {
@@ -2671,12 +2842,15 @@ bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py
}
}
- if (PyObject_TypeCheck(value, &KX_GameObject::Type)) {
+ if ( PyObject_TypeCheck(value, &KX_GameObject::Type) ||
+ PyObject_TypeCheck(value, &KX_LightObject::Type) ||
+ PyObject_TypeCheck(value, &KX_Camera::Type) )
+ {
*object = static_cast<KX_GameObject*>BGE_PROXY_REF(value);
/* sets the error */
if (*object==NULL) {
- PyErr_Format(PyExc_RuntimeError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
+ PyErr_Format(PyExc_SystemError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
return false;
}
diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h
index ec02dc17b75..dbdea97031d 100644
--- a/source/gameengine/Ketsji/KX_GameObject.h
+++ b/source/gameengine/Ketsji/KX_GameObject.h
@@ -77,6 +77,7 @@ protected:
STR_String m_text;
int m_layer;
std::vector<RAS_MeshObject*> m_meshes;
+ SG_QList m_meshSlots; // head of mesh slots of this
struct Object* m_pBlenderObject;
struct Object* m_pBlenderGroupObject;
@@ -170,7 +171,7 @@ public:
/**
* Sets the parent of this object to a game object
*/
- void SetParent(KX_Scene *scene, KX_GameObject *obj);
+ void SetParent(KX_Scene *scene, KX_GameObject *obj, bool addToCompound=true, bool ghost=true);
/**
* Removes the parent of this object to a game object
@@ -192,11 +193,6 @@ public:
~KX_GameObject(
);
- CValue*
- AddRef() {
- /* temporarily to find memleaks */ return CValue::AddRef();
- }
-
/**
* @section Stuff which is here due to poor design.
* Inherited from CValue and needs an implementation.
@@ -245,7 +241,7 @@ public:
/**
* Inherited from CValue -- returns the name of this object.
*/
- STR_String
+ STR_String&
GetName(
);
@@ -254,15 +250,7 @@ public:
*/
void
SetName(
- STR_String name
- );
-
- /**
- * Inherited from CValue -- does nothing.
- */
- void
- ReplicaSetName(
- STR_String name
+ const char *name
);
/**
@@ -279,9 +267,7 @@ public:
* data owned by this class is deep copied. Called internally
*/
virtual void
- ProcessReplica(
- KX_GameObject* replica
- );
+ ProcessReplica();
/**
* Return the linear velocity of the game object.
@@ -395,6 +381,10 @@ public:
{
m_pGraphicController = graphiccontroller;
}
+ /*
+ * @add/remove the graphic controller to the physic system
+ */
+ void ActivateGraphicController(bool recurse);
/**
* @section Coordinate system manipulation functions
@@ -570,6 +560,13 @@ public:
static void UpdateTransformFunc(SG_IObject* node, void* gameobj, void* scene);
/**
+ * only used for sensor objects
+ */
+ void SynchronizeTransform();
+
+ static void SynchronizeTransformFunc(SG_IObject* node, void* gameobj, void* scene);
+
+ /**
* Function to set IPO option at start of IPO
*/
void
@@ -816,6 +813,7 @@ public:
*/
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value); // py_setattro method
virtual int py_delattro(PyObject *attr);
virtual PyObject* py_repr(void)
@@ -860,7 +858,7 @@ public:
KX_PYMETHOD_VARARGS(KX_GameObject,ApplyImpulse);
KX_PYMETHOD_O(KX_GameObject,SetCollisionMargin);
KX_PYMETHOD_NOARGS(KX_GameObject,GetParent);
- KX_PYMETHOD_O(KX_GameObject,SetParent);
+ KX_PYMETHOD_VARARGS(KX_GameObject,SetParent);
KX_PYMETHOD_NOARGS(KX_GameObject,RemoveParent);
KX_PYMETHOD_NOARGS(KX_GameObject,GetChildren);
KX_PYMETHOD_NOARGS(KX_GameObject,GetChildrenRecursive);
@@ -874,6 +872,11 @@ public:
KX_PYMETHOD_DOC_O(KX_GameObject,getDistanceTo);
KX_PYMETHOD_DOC_O(KX_GameObject,getVectTo);
KX_PYMETHOD_DOC_VARARGS(KX_GameObject, sendMessage);
+
+ /* Dict access */
+ KX_PYMETHOD_VARARGS(KX_GameObject,get);
+ KX_PYMETHOD_O(KX_GameObject,has_key);
+
/* attributes */
static PyObject* pyattr_get_name(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_parent(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
@@ -893,6 +896,7 @@ public:
static PyObject* pyattr_get_localInertia(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_localInertia(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_worldOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_worldOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_worldScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
@@ -903,9 +907,9 @@ public:
static PyObject* pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_meshes(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
-
- /* for dir(), python3 uses __dir__() */
- static PyObject* pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_children(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_children_recursive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_attrDict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
/* Experemental! */
static PyObject* pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/Ketsji/KX_IPO_SGController.cpp b/source/gameengine/Ketsji/KX_IPO_SGController.cpp
index 55a7e2ade60..bd7e09d1dda 100644
--- a/source/gameengine/Ketsji/KX_IPO_SGController.cpp
+++ b/source/gameengine/Ketsji/KX_IPO_SGController.cpp
@@ -194,7 +194,8 @@ bool KX_IpoSGController::Update(double currentTime)
else
newPosition = m_ipo_start_point + newPosition;
}
- ob->SetLocalPosition(newPosition);
+ if (m_game_object)
+ m_game_object->NodeSetLocalPosition(newPosition);
}
}
//modifies orientation?
@@ -233,7 +234,8 @@ bool KX_IpoSGController::Update(double currentTime)
rotation = m_ipo_start_orient * rotation;
else
rotation = rotation * m_ipo_start_orient;
- ob->SetLocalOrientation(rotation);
+ if (m_game_object)
+ m_game_object->NodeSetLocalOrientation(rotation);
}
} else if (m_ipo_channels_active[OB_ROT_X] || m_ipo_channels_active[OB_ROT_Y] || m_ipo_channels_active[OB_ROT_Z]) {
if (m_ipo_euler_initialized) {
@@ -265,7 +267,8 @@ bool KX_IpoSGController::Update(double currentTime)
else if (m_ipo_channels_active[OB_DROT_Z]) {
roll += m_ipo_xform.GetDeltaEulerAngles()[2];
}
- ob->SetLocalOrientation(MT_Vector3(yaw, pitch, roll));
+ if (m_game_object)
+ m_game_object->NodeSetLocalOrientation(MT_Vector3(yaw, pitch, roll));
}
} else if (m_ipo_start_initialized) {
// only DROT, treat as Add
@@ -286,7 +289,8 @@ bool KX_IpoSGController::Update(double currentTime)
// dRot are always local
MT_Matrix3x3 rotation(MT_Vector3(yaw, pitch, roll));
rotation = m_ipo_start_orient * rotation;
- ob->SetLocalOrientation(rotation);
+ if (m_game_object)
+ m_game_object->NodeSetLocalOrientation(rotation);
}
}
//modifies scale?
@@ -322,8 +326,8 @@ bool KX_IpoSGController::Update(double currentTime)
if (m_ipo_add) {
newScale = m_ipo_start_scale * newScale;
}
-
- ob->SetLocalScale(newScale);
+ if (m_game_object)
+ m_game_object->NodeSetLocalScale(newScale);
}
m_modified=false;
@@ -342,6 +346,7 @@ SG_Controller* KX_IpoSGController::GetReplica(class SG_Node* destnode)
KX_IpoSGController* iporeplica = new KX_IpoSGController(*this);
// clear object that ipo acts on in the replica.
iporeplica->ClearObject();
+ iporeplica->SetGameObject((KX_GameObject*)destnode->GetSGClientObject());
// dirty hack, ask Gino for a better solution in the ipo implementation
// hacken en zagen, in what we call datahiding, not written for replication :(
diff --git a/source/gameengine/Ketsji/KX_IPhysicsController.cpp b/source/gameengine/Ketsji/KX_IPhysicsController.cpp
index a38222c5f7e..673acabd774 100644
--- a/source/gameengine/Ketsji/KX_IPhysicsController.cpp
+++ b/source/gameengine/Ketsji/KX_IPhysicsController.cpp
@@ -35,9 +35,10 @@
#include "PHY_DynamicTypes.h"
-KX_IPhysicsController::KX_IPhysicsController(bool dyna, bool compound, void* userdata)
+KX_IPhysicsController::KX_IPhysicsController(bool dyna, bool sensor, bool compound, void* userdata)
: m_bDyna(dyna),
+ m_bSensor(sensor),
m_bCompound(compound),
m_suspendDynamics(false),
m_userdata(userdata)
diff --git a/source/gameengine/Ketsji/KX_IPhysicsController.h b/source/gameengine/Ketsji/KX_IPhysicsController.h
index 10b66da7b76..81c01045071 100644
--- a/source/gameengine/Ketsji/KX_IPhysicsController.h
+++ b/source/gameengine/Ketsji/KX_IPhysicsController.h
@@ -49,11 +49,12 @@ class KX_IPhysicsController : public SG_Controller
{
protected:
bool m_bDyna;
+ bool m_bSensor;
bool m_bCompound;
bool m_suspendDynamics;
void* m_userdata;
public:
- KX_IPhysicsController(bool dyna,bool compound, void* userdata);
+ KX_IPhysicsController(bool dyna,bool sensor,bool compound, void* userdata);
virtual ~KX_IPhysicsController();
@@ -74,6 +75,7 @@ public:
virtual void getOrientation(MT_Quaternion& orn)=0;
virtual void setOrientation(const MT_Matrix3x3& orn)=0;
+ virtual void SetTransform()=0;
//virtual void setOrientation(const MT_Quaternion& orn)=0;
virtual void setPosition(const MT_Point3& pos)=0;
virtual void setScaling(const MT_Vector3& scaling)=0;
@@ -100,10 +102,18 @@ public:
m_bDyna = isDynamic;
}
+ void SetSensor(bool isSensor) {
+ m_bSensor = isSensor;
+ }
+
bool IsDyna(void) {
return m_bDyna;
}
+ bool IsSensor(void) {
+ return m_bSensor;
+ }
+
bool IsCompound(void) {
return m_bCompound;
}
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.cpp b/source/gameengine/Ketsji/KX_IpoActuator.cpp
index f04e3c79a8e..3ec0598ac03 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.cpp
+++ b/source/gameengine/Ketsji/KX_IpoActuator.cpp
@@ -164,14 +164,14 @@ bool KX_IpoActuator::Update(double curtime, bool frame)
// result = true if animation has to be continued, false if animation stops
// maybe there are events for us in the queue !
bool bNegativeEvent = false;
- int numevents = 0;
+ bool numevents = false;
bool bIpoStart = false;
curtime -= KX_KetsjiEngine::GetSuspendedDelta();
if (frame)
{
- numevents = m_events.size();
+ numevents = m_posevent || m_negevent;
bNegativeEvent = IsNegativeEvent();
RemoveAllEvents();
}
@@ -273,7 +273,7 @@ bool KX_IpoActuator::Update(double curtime, bool frame)
{
result = false;
m_bNegativeEvent = false;
- numevents = 0;
+ numevents = false;
}
if (!m_bIpoPlaying)
{
@@ -413,8 +413,13 @@ int KX_IpoActuator::string2mode(char* modename) {
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_IpoActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_IpoActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -440,9 +445,8 @@ PyParentObject KX_IpoActuator::Parents[] = {
};
PyMethodDef KX_IpoActuator::Methods[] = {
- {"set", (PyCFunction) KX_IpoActuator::sPySet, METH_VARARGS, (PY_METHODCHAR)Set_doc},
-
// deprecated
+ {"set", (PyCFunction) KX_IpoActuator::sPySet, METH_VARARGS, (PY_METHODCHAR)Set_doc},
{"setProperty", (PyCFunction) KX_IpoActuator::sPySetProperty, METH_VARARGS, (PY_METHODCHAR)SetProperty_doc},
{"setStart", (PyCFunction) KX_IpoActuator::sPySetStart, METH_VARARGS, (PY_METHODCHAR)SetStart_doc},
{"getStart", (PyCFunction) KX_IpoActuator::sPyGetStart, METH_NOARGS, (PY_METHODCHAR)GetStart_doc},
@@ -460,11 +464,11 @@ PyMethodDef KX_IpoActuator::Methods[] = {
};
PyAttributeDef KX_IpoActuator::Attributes[] = {
- KX_PYATTRIBUTE_FLOAT_RW("startFrame", 0, 300000, KX_IpoActuator, m_startframe),
- KX_PYATTRIBUTE_FLOAT_RW("endFrame", 0, 300000, KX_IpoActuator, m_endframe),
+ KX_PYATTRIBUTE_FLOAT_RW("frameStart", 0, 300000, KX_IpoActuator, m_startframe),
+ KX_PYATTRIBUTE_FLOAT_RW("frameEnd", 0, 300000, KX_IpoActuator, m_endframe),
KX_PYATTRIBUTE_STRING_RW("propName", 0, 64, false, KX_IpoActuator, m_propname),
KX_PYATTRIBUTE_STRING_RW("framePropName", 0, 64, false, KX_IpoActuator, m_framepropname),
- KX_PYATTRIBUTE_INT_RW("type", KX_ACT_IPO_NODEF+1, KX_ACT_IPO_MAX-1, true, KX_IpoActuator, m_type),
+ KX_PYATTRIBUTE_INT_RW("mode", KX_ACT_IPO_NODEF+1, KX_ACT_IPO_MAX-1, true, KX_IpoActuator, m_type),
KX_PYATTRIBUTE_BOOL_RW("useIpoAsForce", KX_IpoActuator, m_ipo_as_force),
KX_PYATTRIBUTE_BOOL_RW("useIpoAdd", KX_IpoActuator, m_ipo_add),
KX_PYATTRIBUTE_BOOL_RW("useIpoLocal", KX_IpoActuator, m_ipo_local),
@@ -477,6 +481,10 @@ PyObject* KX_IpoActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_IpoActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_IpoActuator::py_setattro(PyObject *attr, PyObject *value) // py_setattro method
{
py_setattro_up(SCA_IActuator);
@@ -492,7 +500,7 @@ const char KX_IpoActuator::Set_doc[] =
"\tSet the properties of the actuator.\n";
PyObject* KX_IpoActuator::PySet(PyObject* args) {
- ShowDeprecationWarning("set()", "a number properties");
+ ShowDeprecationWarning("set()", "a range properties");
/* sets modes PLAY, PINGPONG, FLIPPER, LOOPSTOP, LOOPEND */
/* arg 1 = mode string, arg 2 = startframe, arg3 = stopframe, */
@@ -554,7 +562,7 @@ const char KX_IpoActuator::SetStart_doc[] =
"\tSet the frame from which the ipo starts playing.\n";
PyObject* KX_IpoActuator::PySetStart(PyObject* args) {
- ShowDeprecationWarning("setStart()", "the startFrame property");
+ ShowDeprecationWarning("setStart()", "the frameStart property");
float startArg;
if(!PyArg_ParseTuple(args, "f:setStart", &startArg)) {
@@ -570,7 +578,7 @@ const char KX_IpoActuator::GetStart_doc[] =
"getStart()\n"
"\tReturns the frame from which the ipo starts playing.\n";
PyObject* KX_IpoActuator::PyGetStart() {
- ShowDeprecationWarning("getStart()", "the startFrame property");
+ ShowDeprecationWarning("getStart()", "the frameStart property");
return PyFloat_FromDouble(m_startframe);
}
@@ -580,7 +588,7 @@ const char KX_IpoActuator::SetEnd_doc[] =
"\t - frame: last frame to use (int)\n"
"\tSet the frame at which the ipo stops playing.\n";
PyObject* KX_IpoActuator::PySetEnd(PyObject* args) {
- ShowDeprecationWarning("setEnd()", "the endFrame property");
+ ShowDeprecationWarning("setEnd()", "the frameEnd property");
float endArg;
if(!PyArg_ParseTuple(args, "f:setEnd", &endArg)) {
return NULL;
@@ -595,7 +603,7 @@ const char KX_IpoActuator::GetEnd_doc[] =
"getEnd()\n"
"\tReturns the frame at which the ipo stops playing.\n";
PyObject* KX_IpoActuator::PyGetEnd() {
- ShowDeprecationWarning("getEnd()", "the endFrame property");
+ ShowDeprecationWarning("getEnd()", "the frameEnd property");
return PyFloat_FromDouble(m_endframe);
}
@@ -661,7 +669,7 @@ const char KX_IpoActuator::SetType_doc[] =
"\t - mode: Play, PingPong, Flipper, LoopStop, LoopEnd or FromProp (string)\n"
"\tSet the operation mode of the actuator.\n";
PyObject* KX_IpoActuator::PySetType(PyObject* args) {
- ShowDeprecationWarning("setType()", "the type property");
+ ShowDeprecationWarning("setType()", "the mode property");
int typeArg;
if (!PyArg_ParseTuple(args, "i:setType", &typeArg)) {
@@ -680,7 +688,7 @@ const char KX_IpoActuator::GetType_doc[] =
"getType()\n"
"\tReturns the operation mode of the actuator.\n";
PyObject* KX_IpoActuator::PyGetType() {
- ShowDeprecationWarning("getType()", "the type property");
+ ShowDeprecationWarning("getType()", "the mode property");
return PyInt_FromLong(m_type);
}
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.h b/source/gameengine/Ketsji/KX_IpoActuator.h
index 184ad5512de..9ea597def1e 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.h
+++ b/source/gameengine/Ketsji/KX_IpoActuator.h
@@ -128,8 +128,6 @@ public:
virtual CValue* GetReplica() {
KX_IpoActuator* replica = new KX_IpoActuator(*this);//m_float,GetName());
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
};
@@ -142,6 +140,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//KX_PYMETHOD_DOC
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 83a2fa8a448..b30b79e7f23 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -77,6 +77,8 @@
#include "RAS_FramingManager.h"
#include "stdio.h"
+#include "DNA_world_types.h"
+#include "DNA_scene_types.h"
// If define: little test for Nzc: guarded drawing. If the canvas is
// not valid, skip rendering this frame.
@@ -97,6 +99,8 @@ const char KX_KetsjiEngine::m_profileLabels[tc_numCategories][15] = {
};
double KX_KetsjiEngine::m_ticrate = DEFAULT_LOGIC_TIC_RATE;
+int KX_KetsjiEngine::m_maxLogicFrame = 5;
+int KX_KetsjiEngine::m_maxPhysicsFrame = 5;
double KX_KetsjiEngine::m_anim_framerate = 25.0;
double KX_KetsjiEngine::m_suspendedtime = 0.0;
double KX_KetsjiEngine::m_suspendeddelta = 0.0;
@@ -145,8 +149,6 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_stereo(false),
m_curreye(0),
- m_usedome(false),
-
m_logger(NULL),
// Set up timing info display variables
@@ -164,7 +166,9 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_overrideFrameColor(false),
m_overrideFrameColorR(0.0),
m_overrideFrameColorG(0.0),
- m_overrideFrameColorB(0.0)
+ m_overrideFrameColorB(0.0),
+
+ m_usedome(false)
{
// Initialize the time logger
m_logger = new KX_TimeCategoryLogger (25);
@@ -261,9 +265,9 @@ void KX_KetsjiEngine::SetSceneConverter(KX_ISceneConverter* sceneconverter)
m_sceneconverter = sceneconverter;
}
-void KX_KetsjiEngine::InitDome(float size, short res, short mode, short angle, float resbuf, struct Text* text)
+void KX_KetsjiEngine::InitDome(short res, short mode, short angle, float resbuf, short tilt, struct Text* text)
{
- m_dome = new KX_Dome(m_canvas, m_rasterizer, m_rendertools,this, size, res, mode, angle, resbuf, text);
+ m_dome = new KX_Dome(m_canvas, m_rasterizer, m_rendertools,this, res, mode, angle, resbuf, tilt, text);
m_usedome = true;
}
@@ -271,7 +275,6 @@ void KX_KetsjiEngine::RenderDome()
{
GLuint viewport[4]={0};
glGetIntegerv(GL_VIEWPORT,(GLint *)viewport);
-// unsigned int m_viewport[4] = {viewport[0], viewport[1], viewport[2], viewport[3]};
m_dome->SetViewPort(viewport);
@@ -295,11 +298,6 @@ void KX_KetsjiEngine::RenderDome()
return;
KX_SceneList::iterator sceneit;
- for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); sceneit++)
- {
- // do this only once per scene
- (*sceneit)->UpdateMeshTransformations();
- }
int n_renders=m_dome->GetNumberRenders();// usually 4 or 6
for (int i=0;i<n_renders;i++){
@@ -353,7 +351,6 @@ void KX_KetsjiEngine::RenderDome()
m_dome->BindImages(i);
}
-// m_dome->Dome_PostRender(scene, cam, stereomode);
m_canvas->EndFrame();//XXX do we really need that?
m_canvas->SetViewPort(0, 0, m_canvas->GetWidth(), m_canvas->GetHeight());
@@ -381,7 +378,8 @@ void KX_KetsjiEngine::RenderDome()
m_dome->Draw();
- //run 2dfilters
+ // run the 2dfilters and motion blur once for all the scenes
+ PostRenderFrame();
EndFrame();
}
@@ -398,7 +396,20 @@ void KX_KetsjiEngine::StartEngine(bool clearIpo)
m_firstframe = true;
m_bInitialized = true;
- m_ticrate = DEFAULT_LOGIC_TIC_RATE;
+ // there is always one scene enabled at startup
+ World* world = m_scenes[0]->GetBlenderScene()->world;
+ if (world)
+ {
+ m_ticrate = world->ticrate;
+ m_maxLogicFrame = world->maxlogicstep;
+ m_maxPhysicsFrame = world->maxphystep;
+ }
+ else
+ {
+ m_ticrate = DEFAULT_LOGIC_TIC_RATE;
+ m_maxLogicFrame = 5;
+ m_maxPhysicsFrame = 5;
+ }
if (m_game2ipo)
{
@@ -511,7 +522,8 @@ void KX_KetsjiEngine::EndFrame()
bool KX_KetsjiEngine::NextFrame()
{
-
+ double timestep = 1.0/m_ticrate;
+ double framestep = timestep;
// static hidden::Clock sClock;
m_logger->StartLog(tc_services, m_kxsystem->GetTimeInSeconds(),true);
@@ -520,7 +532,7 @@ m_logger->StartLog(tc_services, m_kxsystem->GetTimeInSeconds(),true);
//sClock.reset();
if (m_bFixedTime)
- m_clockTime += 1./m_ticrate;
+ m_clockTime += timestep;
else
{
@@ -548,24 +560,29 @@ else
// PIL_sleep_ms(1);
KX_SceneList::iterator sceneit;
- int frameOut = 5;
- if (frames>frameOut)
+ if (frames>m_maxPhysicsFrame)
{
// printf("framedOut: %d\n",frames);
- m_frameTime+=(frames-frameOut)*(1.0/m_ticrate);
- frames = frameOut;
+ m_frameTime+=(frames-m_maxPhysicsFrame)*timestep;
+ frames = m_maxPhysicsFrame;
}
bool doRender = frames>0;
+ if (frames > m_maxLogicFrame)
+ {
+ framestep = (frames*timestep)/m_maxLogicFrame;
+ frames = m_maxLogicFrame;
+ }
+
while (frames)
{
- m_frameTime += 1.0/m_ticrate;
+ m_frameTime += framestep;
for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); ++sceneit)
// for each scene, call the proceed functions
@@ -644,7 +661,7 @@ else
// Perform physics calculations on the scene. This can involve
// many iterations of the physics solver.
- scene->GetPhysicsEnvironment()->proceedDeltaTime(m_frameTime,1.0/m_ticrate);//m_deltatimerealDeltaTime);
+ scene->GetPhysicsEnvironment()->proceedDeltaTime(m_frameTime,timestep,framestep);//m_deltatimerealDeltaTime);
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_PHYSICS2_UPDATE);
@@ -717,7 +734,7 @@ else
// Perform physics calculations on the scene. This can involve
// many iterations of the physics solver.
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
- scene->GetPhysicsEnvironment()->proceedDeltaTime(m_clockTime,0.f);
+ scene->GetPhysicsEnvironment()->proceedDeltaTime(m_clockTime,timestep,timestep);
// Update scenegraph after physics step. This maps physics calculations
// into node positions.
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
@@ -817,8 +834,8 @@ void KX_KetsjiEngine::Render()
// pass the scene's worldsettings to the rasterizer
SetWorldSettings(scene->GetWorldInfo());
- // do this only once per scene
- scene->UpdateMeshTransformations();
+ // this is now done incrementatlly in KX_Scene::CalculateVisibleMeshes
+ //scene->UpdateMeshTransformations();
// shadow buffers
RenderShadowBuffers(scene);
@@ -906,9 +923,6 @@ void KX_KetsjiEngine::Render()
}
} // if(m_rasterizer->Stereo())
- // run the 2dfilters and motion blur once for all the scenes
- PostRenderFrame();
-
EndFrame();
}
@@ -1000,7 +1014,7 @@ void KX_KetsjiEngine::SetWorldSettings(KX_WorldInfo* wi)
wi->getAmbientColorBlue()
);
- if (m_drawingmode == RAS_IRasterizer::KX_TEXTURED)
+ if (m_drawingmode >= RAS_IRasterizer::KX_SOLID)
{
if (wi->hasMist())
{
@@ -1012,10 +1026,6 @@ void KX_KetsjiEngine::SetWorldSettings(KX_WorldInfo* wi)
wi->getMistColorBlue()
);
}
- else
- {
- m_rasterizer->DisableFog();
- }
}
}
}
@@ -1097,7 +1107,7 @@ void KX_KetsjiEngine::GetSceneViewport(KX_Scene *scene, KX_Camera* cam, RAS_Rect
area = userviewport;
}
- else if ( m_overrideCam || (scene->GetName() != m_overrideSceneName) || m_overrideCamUseOrtho ) {
+ else if ( !m_overrideCam || (scene->GetName() != m_overrideSceneName) || m_overrideCamUseOrtho ) {
RAS_FramingManager::ComputeViewport(
scene->GetFramingType(),
m_canvas->GetDisplayArea(),
@@ -1117,16 +1127,13 @@ void KX_KetsjiEngine::GetSceneViewport(KX_Scene *scene, KX_Camera* cam, RAS_Rect
void KX_KetsjiEngine::RenderShadowBuffers(KX_Scene *scene)
{
- CListValue *objectlist = scene->GetObjectList();
+ CListValue *lightlist = scene->GetLightList();
int i, drawmode;
m_rendertools->SetAuxilaryClientInfo(scene);
- for(i=0; i<objectlist->GetCount(); i++) {
- KX_GameObject *gameobj = (KX_GameObject*)objectlist->GetValue(i);
-
- if(!gameobj->IsLight())
- continue;
+ for(i=0; i<lightlist->GetCount(); i++) {
+ KX_GameObject *gameobj = (KX_GameObject*)lightlist->GetValue(i);
KX_LightObject *light = (KX_LightObject*)gameobj;
@@ -1135,7 +1142,7 @@ void KX_KetsjiEngine::RenderShadowBuffers(KX_Scene *scene)
if(m_drawingmode == RAS_IRasterizer::KX_TEXTURED && light->HasShadowBuffer()) {
/* make temporary camera */
RAS_CameraData camdata = RAS_CameraData();
- KX_Camera *cam = new KX_Camera(scene, scene->m_callbacks, camdata, false);
+ KX_Camera *cam = new KX_Camera(scene, scene->m_callbacks, camdata, true, true);
cam->SetName("__shadow__cam__");
MT_Transform camtrans;
@@ -1167,13 +1174,11 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
{
bool override_camera;
RAS_Rect viewport, area;
- float left, right, bottom, top, nearfrust, farfrust, focallength;
- const float ortho = 100.0;
+ float nearfrust, farfrust, focallength;
// KX_Camera* cam = scene->GetActiveCamera();
if (!cam)
return;
-
GetSceneViewport(scene, cam, area, viewport);
// store the computed viewport in the scene
@@ -1191,19 +1196,24 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
override_camera = override_camera && (cam->GetName() == "__default__cam__");
if (override_camera && m_overrideCamUseOrtho) {
- MT_CmMatrix4x4 projmat = m_overrideCamProjMat;
- m_rasterizer->SetProjectionMatrix(projmat);
+ m_rasterizer->SetProjectionMatrix(m_overrideCamProjMat);
+ if (!cam->hasValidProjectionMatrix()) {
+ // needed to get frustrum planes for culling
+ MT_Matrix4x4 projmat;
+ projmat.setValue(m_overrideCamProjMat.getPointer());
+ cam->SetProjectionMatrix(projmat);
+ }
} else if (cam->hasValidProjectionMatrix() && !cam->GetViewport() )
{
m_rasterizer->SetProjectionMatrix(cam->GetProjectionMatrix());
} else
{
RAS_FrameFrustum frustum;
- float lens = cam->GetLens();
bool orthographic = !cam->GetCameraData()->m_perspective;
nearfrust = cam->GetCameraNear();
farfrust = cam->GetCameraFar();
focallength = cam->GetFocalLength();
+ MT_Matrix4x4 projmat;
if(override_camera) {
nearfrust = m_overrideCamNear;
@@ -1211,50 +1221,58 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
}
if (orthographic) {
- lens *= ortho;
- nearfrust = (nearfrust + 1.0)*ortho;
- farfrust *= ortho;
- }
-
- RAS_FramingManager::ComputeFrustum(
- scene->GetFramingType(),
- area,
- viewport,
- lens,
- nearfrust,
- farfrust,
- frustum
- );
- left = frustum.x1 * m_cameraZoom;
- right = frustum.x2 * m_cameraZoom;
- bottom = frustum.y1 * m_cameraZoom;
- top = frustum.y2 * m_cameraZoom;
- nearfrust = frustum.camnear;
- farfrust = frustum.camfar;
+ RAS_FramingManager::ComputeOrtho(
+ scene->GetFramingType(),
+ area,
+ viewport,
+ cam->GetScale(),
+ nearfrust,
+ farfrust,
+ frustum
+ );
+ if (!cam->GetViewport()) {
+ frustum.x1 *= m_cameraZoom;
+ frustum.x2 *= m_cameraZoom;
+ frustum.y1 *= m_cameraZoom;
+ frustum.y2 *= m_cameraZoom;
+ }
+ projmat = m_rasterizer->GetOrthoMatrix(
+ frustum.x1, frustum.x2, frustum.y1, frustum.y2, frustum.camnear, frustum.camfar);
- MT_Matrix4x4 projmat = m_rasterizer->GetFrustumMatrix(
- left, right, bottom, top, nearfrust, farfrust, focallength);
+ } else {
+ RAS_FramingManager::ComputeFrustum(
+ scene->GetFramingType(),
+ area,
+ viewport,
+ cam->GetLens(),
+ nearfrust,
+ farfrust,
+ frustum
+ );
+ if (!cam->GetViewport()) {
+ frustum.x1 *= m_cameraZoom;
+ frustum.x2 *= m_cameraZoom;
+ frustum.y1 *= m_cameraZoom;
+ frustum.y2 *= m_cameraZoom;
+ }
+ projmat = m_rasterizer->GetFrustumMatrix(
+ frustum.x1, frustum.x2, frustum.y1, frustum.y2, frustum.camnear, frustum.camfar, focallength);
+ }
cam->SetProjectionMatrix(projmat);
// Otherwise the projection matrix for each eye will be the same...
- if (m_rasterizer->Stereo())
+ if (!orthographic && m_rasterizer->Stereo())
cam->InvalidateProjectionMatrix();
}
MT_Transform camtrans(cam->GetWorldToCamera());
- if (!cam->GetCameraData()->m_perspective)
- camtrans.getOrigin()[2] *= ortho;
MT_Matrix4x4 viewmat(camtrans);
- m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldPosition(),
- cam->GetCameraLocation(), cam->GetCameraOrientation());
+ m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), cam->GetCameraData()->m_perspective);
cam->SetModelviewMatrix(viewmat);
- //redundant, already done in Render()
- //scene->UpdateMeshTransformations();
-
// The following actually reschedules all vertices to be
// redrawn. There is a cache between the actual rescheduling
// and this call though. Visibility is imparted when this call
@@ -1274,6 +1292,9 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
scene->GetPhysicsEnvironment()->debugDrawWorld();
m_rasterizer->FlushDebugLines();
+
+ //it's running once for every scene (i.e. overlay scenes have it running twice). That's not the ideal.
+ PostRenderFrame();
}
void KX_KetsjiEngine::PostRenderFrame()
@@ -1401,7 +1422,7 @@ void KX_KetsjiEngine::RenderDebugProperties()
m_canvas->GetWidth(),
m_canvas->GetHeight());
double time = m_logger->GetAverage((KX_TimeCategory)j);
- debugtxt.Format("%2.2f %%", time/tottime * 100.f);
+ debugtxt.Format("%.3fms (%2.2f %%)", time*1000.f, time/tottime * 100.f);
m_rendertools->RenderText2D(RAS_IRenderTools::RAS_TEXT_PADDED,
debugtxt.Ptr(),
xcoord + 60 ,ycoord,
@@ -1719,6 +1740,26 @@ void KX_KetsjiEngine::SetTicRate(double ticrate)
m_ticrate = ticrate;
}
+int KX_KetsjiEngine::GetMaxLogicFrame()
+{
+ return m_maxLogicFrame;
+}
+
+void KX_KetsjiEngine::SetMaxLogicFrame(int frame)
+{
+ m_maxLogicFrame = frame;
+}
+
+int KX_KetsjiEngine::GetMaxPhysicsFrame()
+{
+ return m_maxPhysicsFrame;
+}
+
+void KX_KetsjiEngine::SetMaxPhysicsFrame(int frame)
+{
+ m_maxPhysicsFrame = frame;
+}
+
double KX_KetsjiEngine::GetAnimFrameRate()
{
return m_anim_framerate;
@@ -1729,6 +1770,11 @@ double KX_KetsjiEngine::GetClockTime(void) const
return m_clockTime;
}
+double KX_KetsjiEngine::GetRealTime(void) const
+{
+ return m_kxsystem->GetTimeInSeconds();
+}
+
void KX_KetsjiEngine::SetAnimFrameRate(double framerate)
{
m_anim_framerate = framerate;
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.h b/source/gameengine/Ketsji/KX_KetsjiEngine.h
index a8ccd6100d7..6fa379e551a 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.h
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.h
@@ -103,6 +103,8 @@ private:
double m_previousClockTime;//previous clock time
double m_remainingTime;
+ static int m_maxLogicFrame; /* maximum number of consecutive logic frame */
+ static int m_maxPhysicsFrame; /* maximum number of consecutive physics frame */
static double m_ticrate;
static double m_anim_framerate; /* for animation playback only - ipo and action */
@@ -210,7 +212,7 @@ public:
RAS_IRenderTools* GetRenderTools(){return m_rendertools;};
/// Dome functions
- void InitDome(float size, short res, short mode, short angle, float resbuf, struct Text* text);
+ void InitDome(short res, short mode, short angle, float resbuf, short tilt, struct Text* text);
void EndDome();
void RenderDome();
bool m_usedome;
@@ -269,6 +271,7 @@ public:
*/
double GetClockTime(void) const;
+ double GetRealTime(void) const;
/**
* Returns the difference between the local time of the scene (when it
* was running and not suspended) and the "curtime"
@@ -283,6 +286,22 @@ public:
* Sets the number of logic updates per second.
*/
static void SetTicRate(double ticrate);
+ /**
+ * Gets the maximum number of logic frame before render frame
+ */
+ static int GetMaxLogicFrame();
+ /**
+ * Sets the maximum number of logic frame before render frame
+ */
+ static void SetMaxLogicFrame(int frame);
+ /**
+ * Gets the maximum number of physics frame before render frame
+ */
+ static int GetMaxPhysicsFrame();
+ /**
+ * Sets the maximum number of physics frame before render frame
+ */
+ static void SetMaxPhysicsFrame(int frame);
/**
* Gets the framerate for playing animations. (actions and ipos)
diff --git a/source/gameengine/Ketsji/KX_Light.cpp b/source/gameengine/Ketsji/KX_Light.cpp
index 713838c88ec..fe575384a35 100644
--- a/source/gameengine/Ketsji/KX_Light.cpp
+++ b/source/gameengine/Ketsji/KX_Light.cpp
@@ -82,10 +82,7 @@ CValue* KX_LightObject::GetReplica()
KX_LightObject* replica = new KX_LightObject(*this);
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
- ProcessReplica(replica);
+ replica->ProcessReplica();
replica->m_lightobj.m_worldmatrix = replica->GetOpenGLMatrixPtr();
m_rendertools->AddLight(&replica->m_lightobj);
@@ -105,8 +102,11 @@ void KX_LightObject::Update()
{
GPULamp *lamp;
- if((lamp = GetGPULamp())) {
+ if((lamp = GetGPULamp()) != NULL && GetSGNode()) {
float obmat[4][4];
+ // lights don't get their openGL matrix updated, do it now
+ if (GetSGNode()->IsDirty())
+ GetOpenGLMatrix();
double *dobmat = GetOpenGLMatrixPtr()->getPointer();
for(int i=0; i<4; i++)
@@ -114,6 +114,8 @@ void KX_LightObject::Update()
obmat[i][j] = (float)*dobmat;
GPU_lamp_update(lamp, m_lightobj.m_layer, obmat);
+ GPU_lamp_update_colors(lamp, m_lightobj.m_red, m_lightobj.m_green,
+ m_lightobj.m_blue, m_lightobj.m_energy);
}
}
@@ -163,8 +165,7 @@ void KX_LightObject::BindShadowBuffer(RAS_IRasterizer *ras, KX_Camera *cam, MT_T
/* setup rasterizer transformations */
ras->SetProjectionMatrix(projectionmat);
- ras->SetViewMatrix(modelviewmat, cam->NodeGetWorldPosition(),
- cam->GetCameraLocation(), cam->GetCameraOrientation());
+ ras->SetViewMatrix(modelviewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), cam->GetCameraData()->m_perspective);
}
void KX_LightObject::UnbindShadowBuffer(RAS_IRasterizer *ras)
@@ -173,160 +174,23 @@ void KX_LightObject::UnbindShadowBuffer(RAS_IRasterizer *ras)
GPU_lamp_shadow_buffer_unbind(lamp);
}
-PyObject* KX_LightObject::py_getattro(PyObject *attr)
-{
- char *attr_str= PyString_AsString(attr);
-
- if (!strcmp(attr_str, "layer"))
- return PyInt_FromLong(m_lightobj.m_layer);
-
- if (!strcmp(attr_str, "energy"))
- return PyFloat_FromDouble(m_lightobj.m_energy);
-
- if (!strcmp(attr_str, "distance"))
- return PyFloat_FromDouble(m_lightobj.m_distance);
-
- if (!strcmp(attr_str, "colour") || !strcmp(attr_str, "color"))
- return Py_BuildValue("[fff]", m_lightobj.m_red, m_lightobj.m_green, m_lightobj.m_blue);
-
- if (!strcmp(attr_str, "lin_attenuation"))
- return PyFloat_FromDouble(m_lightobj.m_att1);
-
- if (!strcmp(attr_str, "quad_attenuation"))
- return PyFloat_FromDouble(m_lightobj.m_att2);
-
- if (!strcmp(attr_str, "spotsize"))
- return PyFloat_FromDouble(m_lightobj.m_spotsize);
-
- if (!strcmp(attr_str, "spotblend"))
- return PyFloat_FromDouble(m_lightobj.m_spotblend);
-
- if (!strcmp(attr_str, "SPOT"))
- return PyInt_FromLong(RAS_LightObject::LIGHT_SPOT);
-
- if (!strcmp(attr_str, "SUN"))
- return PyInt_FromLong(RAS_LightObject::LIGHT_SUN);
-
- if (!strcmp(attr_str, "NORMAL"))
- return PyInt_FromLong(RAS_LightObject::LIGHT_NORMAL);
-
- if (!strcmp(attr_str, "type"))
- return PyInt_FromLong(m_lightobj.m_type);
-
- py_getattro_up(KX_GameObject);
-}
-
+/* ------------------------------------------------------------------------- */
+/* Python Integration Hooks */
+/* ------------------------------------------------------------------------- */
-int KX_LightObject::py_setattro(PyObject *attr, PyObject *pyvalue)
-{
- char *attr_str= PyString_AsString(attr);
-
- if (PyInt_Check(pyvalue))
- {
- int value = PyInt_AsLong(pyvalue);
- if (!strcmp(attr_str, "layer"))
- {
- m_lightobj.m_layer = value;
- return PY_SET_ATTR_SUCCESS;
- }
-
- if (!strcmp(attr_str, "type"))
- {
- if (value >= RAS_LightObject::LIGHT_SPOT && value <= RAS_LightObject::LIGHT_NORMAL)
- m_lightobj.m_type = (RAS_LightObject::LightType) value;
- return PY_SET_ATTR_SUCCESS;
- }
- }
-
- if (PyFloat_Check(pyvalue) || PyInt_Check(pyvalue))
- {
- float value = PyFloat_AsDouble(pyvalue);
- if (!strcmp(attr_str, "energy"))
- {
- m_lightobj.m_energy = value;
- return PY_SET_ATTR_SUCCESS;
- }
-
- if (!strcmp(attr_str, "distance"))
- {
- m_lightobj.m_distance = value;
- return PY_SET_ATTR_SUCCESS;
- }
-
- if (!strcmp(attr_str, "lin_attenuation"))
- {
- m_lightobj.m_att1 = value;
- return PY_SET_ATTR_SUCCESS;
- }
-
- if (!strcmp(attr_str, "quad_attenuation"))
- {
- m_lightobj.m_att2 = value;
- return PY_SET_ATTR_SUCCESS;
- }
-
- if (!strcmp(attr_str, "spotsize"))
- {
- m_lightobj.m_spotsize = value;
- return PY_SET_ATTR_SUCCESS;
- }
-
- if (!strcmp(attr_str, "spotblend"))
- {
- m_lightobj.m_spotblend = value;
- return PY_SET_ATTR_SUCCESS;
- }
- }
-
- if (PySequence_Check(pyvalue))
- {
- if (!strcmp(attr_str, "colour") || !strcmp(attr_str, "color"))
- {
- MT_Vector3 color;
- if (PyVecTo(pyvalue, color))
- {
- m_lightobj.m_red = color[0];
- m_lightobj.m_green = color[1];
- m_lightobj.m_blue = color[2];
- return PY_SET_ATTR_SUCCESS;
- }
- return PY_SET_ATTR_FAIL;
- }
- }
-
- if (!strcmp(attr_str, "SPOT") || !strcmp(attr_str, "SUN") || !strcmp(attr_str, "NORMAL"))
- {
- PyErr_Format(PyExc_RuntimeError, "Attribute %s is read only.", attr_str);
- return PY_SET_ATTR_FAIL;
- }
-
- return KX_GameObject::py_setattro(attr, pyvalue);
+PyObject* KX_LightObject::py_getattro_dict() {
+ py_getattro_dict_up(KX_GameObject);
}
-PyMethodDef KX_LightObject::Methods[] = {
- {NULL,NULL} //Sentinel
-};
-
-PyAttributeDef KX_LightObject::Attributes[] = {
- KX_PYATTRIBUTE_DUMMY("layer"),
- KX_PYATTRIBUTE_DUMMY("energy"),
- KX_PYATTRIBUTE_DUMMY("distance"),
- KX_PYATTRIBUTE_DUMMY("colour"),
- KX_PYATTRIBUTE_DUMMY("color"),
- KX_PYATTRIBUTE_DUMMY("lin_attenuation"),
- KX_PYATTRIBUTE_DUMMY("quad_attenuation"),
- KX_PYATTRIBUTE_DUMMY("spotsize"),
- KX_PYATTRIBUTE_DUMMY("spotblend"),
- KX_PYATTRIBUTE_DUMMY("SPOT"),
- KX_PYATTRIBUTE_DUMMY("SUN"),
- KX_PYATTRIBUTE_DUMMY("NORMAL"),
- KX_PYATTRIBUTE_DUMMY("type"),
- { NULL } //Sentinel
-};
PyTypeObject KX_LightObject::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_LightObject",
sizeof(PyObjectPlus_Proxy),
0,
@@ -352,3 +216,103 @@ PyParentObject KX_LightObject::Parents[] = {
&CValue::Type,
NULL
};
+
+PyMethodDef KX_LightObject::Methods[] = {
+ {NULL,NULL} //Sentinel
+};
+
+PyAttributeDef KX_LightObject::Attributes[] = {
+ KX_PYATTRIBUTE_INT_RW("layer", 1, 20, true, KX_LightObject, m_lightobj.m_layer),
+ KX_PYATTRIBUTE_FLOAT_RW("energy", 0, 10, KX_LightObject, m_lightobj.m_energy),
+ KX_PYATTRIBUTE_FLOAT_RW("distance", 0.01, 5000, KX_LightObject, m_lightobj.m_distance),
+ KX_PYATTRIBUTE_RW_FUNCTION("color", KX_LightObject, pyattr_get_color, pyattr_set_color),
+ KX_PYATTRIBUTE_RW_FUNCTION("colour", KX_LightObject, pyattr_get_color, pyattr_set_color),
+ KX_PYATTRIBUTE_FLOAT_RW("lin_attenuation", 0, 1, KX_LightObject, m_lightobj.m_att1),
+ KX_PYATTRIBUTE_FLOAT_RW("quad_attenuation", 0, 1, KX_LightObject, m_lightobj.m_att2),
+ KX_PYATTRIBUTE_FLOAT_RW("spotsize", 1, 180, KX_LightObject, m_lightobj.m_spotsize),
+ KX_PYATTRIBUTE_FLOAT_RW("spotblend", 0, 1, KX_LightObject, m_lightobj.m_spotblend),
+ KX_PYATTRIBUTE_RO_FUNCTION("SPOT", KX_LightObject, pyattr_get_typeconst),
+ KX_PYATTRIBUTE_RO_FUNCTION("SUN", KX_LightObject, pyattr_get_typeconst),
+ KX_PYATTRIBUTE_RO_FUNCTION("NORMAL", KX_LightObject, pyattr_get_typeconst),
+ KX_PYATTRIBUTE_RW_FUNCTION("type", KX_LightObject, pyattr_get_type, pyattr_set_type),
+ { NULL } //Sentinel
+};
+
+PyObject* KX_LightObject::pyattr_get_color(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_LightObject* self = static_cast<KX_LightObject*>(self_v);
+ return Py_BuildValue("[fff]", self->m_lightobj.m_red, self->m_lightobj.m_green, self->m_lightobj.m_blue);
+}
+
+int KX_LightObject::pyattr_set_color(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_LightObject* self = static_cast<KX_LightObject*>(self_v);
+
+ MT_Vector3 color;
+ if (PyVecTo(value, color))
+ {
+ self->m_lightobj.m_red = color[0];
+ self->m_lightobj.m_green = color[1];
+ self->m_lightobj.m_blue = color[2];
+ return PY_SET_ATTR_SUCCESS;
+ }
+ return PY_SET_ATTR_FAIL;
+}
+
+PyObject* KX_LightObject::pyattr_get_typeconst(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ PyObject* retvalue;
+
+ const char* type = attrdef->m_name;
+
+ if(strcmp(type, "SPOT")) {
+ retvalue = PyInt_FromLong(RAS_LightObject::LIGHT_SPOT);
+ } else if (strcmp(type, "SUN")) {
+ retvalue = PyInt_FromLong(RAS_LightObject::LIGHT_SUN);
+ } else if (strcmp(type, "NORMAL")) {
+ retvalue = PyInt_FromLong(RAS_LightObject::LIGHT_NORMAL);
+ }
+
+ return retvalue;
+}
+
+PyObject* KX_LightObject::pyattr_get_type(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_LightObject* self = static_cast<KX_LightObject*>(self_v);
+ return PyInt_FromLong(self->m_lightobj.m_type);
+}
+
+int KX_LightObject::pyattr_set_type(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject* value)
+{
+ KX_LightObject* self = static_cast<KX_LightObject*>(self_v);
+ int val = PyInt_AsLong(value);
+ if((val==-1 && PyErr_Occurred()) || val<0 || val>2) {
+ PyErr_SetString(PyExc_ValueError, "light.type= val: KX_LightObject, expected an int between 0 and 2");
+ return PY_SET_ATTR_FAIL;
+ }
+
+ switch(val) {
+ case 0:
+ self->m_lightobj.m_type = self->m_lightobj.LIGHT_SPOT;
+ break;
+ case 1:
+ self->m_lightobj.m_type = self->m_lightobj.LIGHT_SUN;
+ break;
+ case 2:
+ self->m_lightobj.m_type = self->m_lightobj.LIGHT_NORMAL;
+ break;
+ }
+
+ return PY_SET_ATTR_SUCCESS;
+}
+
+
+PyObject* KX_LightObject::py_getattro(PyObject *attr)
+{
+ py_getattro_up(KX_GameObject);
+}
+
+int KX_LightObject::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(KX_GameObject);
+}
diff --git a/source/gameengine/Ketsji/KX_Light.h b/source/gameengine/Ketsji/KX_Light.h
index 4559954c8d7..35f25515e3b 100644
--- a/source/gameengine/Ketsji/KX_Light.h
+++ b/source/gameengine/Ketsji/KX_Light.h
@@ -63,8 +63,16 @@ public:
void Update();
virtual PyObject* py_getattro(PyObject *attr); /* lens, near, far, projection_matrix */
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
+ /* attributes */
+ static PyObject* pyattr_get_color(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_color(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject* value);
+ static PyObject* pyattr_get_typeconst(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_type(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_type(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject* value);
+
virtual bool IsLight(void) { return true; }
};
diff --git a/source/gameengine/Ketsji/KX_MeshProxy.cpp b/source/gameengine/Ketsji/KX_MeshProxy.cpp
index 6be1da55ff8..11effa1ca98 100644
--- a/source/gameengine/Ketsji/KX_MeshProxy.cpp
+++ b/source/gameengine/Ketsji/KX_MeshProxy.cpp
@@ -46,8 +46,13 @@
#include "PyObjectPlus.h"
PyTypeObject KX_MeshProxy::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_MeshProxy",
sizeof(PyObjectPlus_Proxy),
0,
@@ -66,7 +71,6 @@ PyTypeObject KX_MeshProxy::Type = {
PyParentObject KX_MeshProxy::Parents[] = {
&KX_MeshProxy::Type,
- &SCA_IObject::Type,
&CValue::Type,
&PyObjectPlus::Type,
NULL
@@ -105,17 +109,21 @@ void KX_MeshProxy::SetMeshModified(bool v)
PyObject* KX_MeshProxy::py_getattro(PyObject *attr)
{
- py_getattro_up(SCA_IObject);
+ py_getattro_up(CValue);
+}
+
+PyObject* KX_MeshProxy::py_getattro_dict() {
+ py_getattro_dict_up(CValue);
}
int KX_MeshProxy::py_setattro(PyObject *attr, PyObject* value)
{
- py_setattro_up(SCA_IObject);
+ py_setattro_up(CValue);
}
KX_MeshProxy::KX_MeshProxy(RAS_MeshObject* mesh)
- : SCA_IObject(&Type), m_meshobj(mesh)
+ : CValue(&Type), m_meshobj(mesh)
{
}
@@ -131,10 +139,9 @@ CValue* KX_MeshProxy::CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValu
const STR_String & KX_MeshProxy::GetText() {return m_meshobj->GetName();};
double KX_MeshProxy::GetNumber() { return -1;}
-STR_String KX_MeshProxy::GetName() { return m_meshobj->GetName();}
-void KX_MeshProxy::SetName(STR_String name) { };
+STR_String& KX_MeshProxy::GetName() { return m_meshobj->GetName();}
+void KX_MeshProxy::SetName(const char *name) { };
CValue* KX_MeshProxy::GetReplica() { return NULL;}
-void KX_MeshProxy::ReplicaSetName(STR_String name) {};
// stuff for python integration
@@ -213,24 +220,20 @@ PyObject* KX_MeshProxy::PyGetVertexArrayLength(PyObject* args, PyObject* kwds)
PyObject* KX_MeshProxy::PyGetVertex(PyObject* args, PyObject* kwds)
{
- int vertexindex= 1;
- int matindex= 1;
- PyObject* vertexob = NULL;
+ int vertexindex;
+ int matindex;
- if (PyArg_ParseTuple(args,"ii:getVertex",&matindex,&vertexindex))
- {
- RAS_TexVert* vertex = m_meshobj->GetVertex(matindex,vertexindex);
- if (vertex)
- {
- vertexob = (new KX_VertexProxy(this, vertex))->NewProxy(true);
- }
- }
- else {
+ if (!PyArg_ParseTuple(args,"ii:getVertex",&matindex,&vertexindex))
+ return NULL;
+
+ RAS_TexVert* vertex = m_meshobj->GetVertex(matindex,vertexindex);
+
+ if(vertex==NULL) {
+ PyErr_SetString(PyExc_ValueError, "mesh.getVertex(mat_idx, vert_idx): KX_MeshProxy, could not get a vertex at the given indicies");
return NULL;
}
-
- return vertexob;
-
+
+ return (new KX_VertexProxy(this, vertex))->NewProxy(true);
}
PyObject* KX_MeshProxy::PyGetPolygon(PyObject* args, PyObject* kwds)
@@ -262,8 +265,12 @@ PyObject* KX_MeshProxy::PyGetPolygon(PyObject* args, PyObject* kwds)
KX_PYMETHODDEF_DOC(KX_MeshProxy, reinstancePhysicsMesh,
"Reinstance the physics mesh.")
{
+#if 0
//this needs to be reviewed, it is dependend on Sumo/Solid. Who is using this ?
- Py_RETURN_NONE;//(KX_ReInstanceShapeFromMesh(m_meshobj)) ? Py_RETURN_TRUE : Py_RETURN_FALSE;
+ if(KX_ReInstanceShapeFromMesh(m_meshobj))
+ Py_RETURN_TRUE;
+#endif
+ Py_RETURN_FALSE;
}
PyObject* KX_MeshProxy::pyattr_get_materials(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -341,7 +348,7 @@ bool ConvertPythonToMesh(PyObject * value, RAS_MeshObject **object, bool py_none
/* sets the error */
if (*object==NULL) {
- PyErr_Format(PyExc_RuntimeError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
+ PyErr_Format(PyExc_SystemError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
return false;
}
diff --git a/source/gameengine/Ketsji/KX_MeshProxy.h b/source/gameengine/Ketsji/KX_MeshProxy.h
index aeecefc09e6..bfdd4be4118 100644
--- a/source/gameengine/Ketsji/KX_MeshProxy.h
+++ b/source/gameengine/Ketsji/KX_MeshProxy.h
@@ -34,7 +34,7 @@
/* utility conversion function */
bool ConvertPythonToMesh(PyObject * value, class RAS_MeshObject **object, bool py_none_ok, const char *error_prefix);
-class KX_MeshProxy : public SCA_IObject
+class KX_MeshProxy : public CValue
{
Py_Header;
@@ -51,13 +51,13 @@ public:
virtual const STR_String & GetText();
virtual double GetNumber();
virtual RAS_MeshObject* GetMesh() { return m_meshobj; }
- virtual STR_String GetName();
- virtual void SetName(STR_String name); // Set the name of the value
- virtual void ReplicaSetName(STR_String name);
+ virtual STR_String& GetName();
+ virtual void SetName(const char *name); // Set the name of the value
virtual CValue* GetReplica();
// stuff for python integration
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
KX_PYMETHOD(KX_MeshProxy,GetNumMaterials); // Deprecated
diff --git a/source/gameengine/Ketsji/KX_MotionState.cpp b/source/gameengine/Ketsji/KX_MotionState.cpp
index b4d58dccfdf..60455d33312 100644
--- a/source/gameengine/Ketsji/KX_MotionState.cpp
+++ b/source/gameengine/Ketsji/KX_MotionState.cpp
@@ -73,6 +73,11 @@ void KX_MotionState::getWorldOrientation(float* ori)
mat.getValue(ori);
}
+void KX_MotionState::setWorldOrientation(const float* ori)
+{
+ m_node->SetLocalOrientation(ori);
+}
+
void KX_MotionState::setWorldPosition(float posX,float posY,float posZ)
{
m_node->SetLocalPosition(MT_Point3(posX,posY,posZ));
diff --git a/source/gameengine/Ketsji/KX_MotionState.h b/source/gameengine/Ketsji/KX_MotionState.h
index 7ba3ca2f85c..0e43e88fbeb 100644
--- a/source/gameengine/Ketsji/KX_MotionState.h
+++ b/source/gameengine/Ketsji/KX_MotionState.h
@@ -45,6 +45,7 @@ public:
virtual void setWorldPosition(float posX,float posY,float posZ);
virtual void setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal);
virtual void getWorldOrientation(float* ori);
+ virtual void setWorldOrientation(const float* ori);
virtual void calculateWorldTransformations();
};
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
index 87b5c81392d..fde10a493db 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
@@ -86,7 +86,7 @@ void KX_MouseFocusSensor::Init()
m_hitNormal.setValue(0,0,1);
}
-bool KX_MouseFocusSensor::Evaluate(CValue* event)
+bool KX_MouseFocusSensor::Evaluate()
{
bool result = false;
bool obHasFocus = false;
@@ -119,7 +119,7 @@ bool KX_MouseFocusSensor::Evaluate(CValue* event)
* mode is never used, because the converter never makes this
* sensor for a mouse-key event. It is here for
* completeness. */
- result = SCA_MouseSensor::Evaluate(event);
+ result = SCA_MouseSensor::Evaluate();
m_positive_event = (m_val!=0);
}
@@ -197,13 +197,15 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam)
* division by 0.0...*/
RAS_Rect area, viewport;
+ short m_y_inv = m_kxengine->GetCanvas()->GetHeight()-m_y;
+
m_kxengine->GetSceneViewport(m_kxscene, cam, area, viewport);
/* Check if the mouse is in the viewport */
if (( m_x < viewport.m_x2 && // less then right
m_x > viewport.m_x1 && // more then then left
- m_y < viewport.m_y2 && // below top
- m_y > viewport.m_y1) == 0) // above bottom
+ m_y_inv < viewport.m_y2 && // below top
+ m_y_inv > viewport.m_y1) == 0) // above bottom
{
return false;
}
@@ -217,6 +219,10 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam)
MT_Vector4 frompoint;
MT_Vector4 topoint;
+ /* m_y_inv - inverting for a bounds check is only part of it, now make relative to view bounds */
+ m_y_inv = (viewport.m_y2 - m_y_inv) + viewport.m_y1;
+
+
/* There's some strangeness I don't fully get here... These values
* _should_ be wrong! - see from point Z values */
@@ -229,19 +235,18 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam)
* behind of the near and far clip planes.
*/
frompoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
- 1.0 - (2 * (m_y - y_lb) / height),
+ 1.0 - (2 * (m_y_inv - y_lb) / height),
+ /*cam->GetCameraData()->m_perspective ? 0.0:cdata->m_clipstart,*/ /* real clipstart is scaled in ortho for some reason, zero is ok */
0.0, /* nearclip, see above comments */
1.0 );
topoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
- 1.0 - (2 * (m_y-y_lb) / height),
- 1.0, /* farclip, see above comments */
+ 1.0 - (2 * (m_y_inv-y_lb) / height),
+ cam->GetCameraData()->m_perspective ? 1.0:cam->GetCameraData()->m_clipend, /* farclip, see above comments */
1.0 );
/* camera to world */
MT_Transform wcs_camcs_tranform = cam->GetWorldToCamera();
- if (!cam->GetCameraData()->m_perspective)
- wcs_camcs_tranform.getOrigin()[2] *= 100.0;
MT_Transform cams_wcs_transform;
cams_wcs_transform.invert(wcs_camcs_tranform);
@@ -335,8 +340,13 @@ const MT_Vector3& KX_MouseFocusSensor::HitNormal() const
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_MouseFocusSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_MouseFocusSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -387,6 +397,10 @@ PyObject* KX_MouseFocusSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_MouseSensor);
}
+PyObject* KX_MouseFocusSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_MouseSensor);
+}
+
const char KX_MouseFocusSensor::GetHitObject_doc[] =
"getHitObject()\n"
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.h b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
index 8de1f88c5c3..29d674eb305 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.h
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
@@ -63,13 +63,13 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
virtual CValue* GetReplica() {
CValue* replica = new KX_MouseFocusSensor(*this);
// this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
};
/**
* @attention Overrides default evaluate.
*/
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual void Init();
virtual bool IsPositiveTrigger() {
@@ -89,7 +89,8 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRayTarget);
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRaySource);
diff --git a/source/gameengine/Ketsji/KX_NearSensor.cpp b/source/gameengine/Ketsji/KX_NearSensor.cpp
index 0489b7090e9..44842b7f5b3 100644
--- a/source/gameengine/Ketsji/KX_NearSensor.cpp
+++ b/source/gameengine/Ketsji/KX_NearSensor.cpp
@@ -36,6 +36,7 @@
#include "KX_Scene.h" // needed to create a replica
#include "PHY_IPhysicsEnvironment.h"
#include "PHY_IPhysicsController.h"
+#include "PHY_IMotionState.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -62,7 +63,7 @@ KX_NearSensor::KX_NearSensor(SCA_EventManager* eventmgr,
{
gameobj->getClientInfo()->m_sensors.remove(this);
- m_client_info = new KX_ClientObjectInfo(gameobj, KX_ClientObjectInfo::NEAR);
+ m_client_info = new KX_ClientObjectInfo(gameobj, KX_ClientObjectInfo::SENSOR);
m_client_info->m_sensors.push_back(this);
//DT_ShapeHandle shape = (DT_ShapeHandle) vshape;
@@ -81,81 +82,50 @@ void KX_NearSensor::SynchronizeTransform()
// not linked to the parent object, must synchronize it.
if (m_physCtrl)
{
+ PHY_IMotionState* motionState = m_physCtrl->GetMotionState();
KX_GameObject* parent = ((KX_GameObject*)GetParent());
- MT_Vector3 pos = parent->NodeGetWorldPosition();
- MT_Quaternion orn = parent->NodeGetWorldOrientation().getRotation();
- m_physCtrl->setPosition(pos.x(),pos.y(),pos.z());
- m_physCtrl->setOrientation(orn.x(),orn.y(),orn.z(),orn.w());
- m_physCtrl->calcXform();
+ const MT_Point3& pos = parent->NodeGetWorldPosition();
+ float ori[12];
+ parent->NodeGetWorldOrientation().getValue(ori);
+ motionState->setWorldPosition(pos[0], pos[1], pos[2]);
+ motionState->setWorldOrientation(ori);
+ m_physCtrl->WriteMotionStateToDynamics(true);
}
}
-void KX_NearSensor::RegisterSumo(KX_TouchEventManager *touchman)
-{
- if (m_physCtrl)
- {
- touchman->GetPhysicsEnvironment()->addSensor(m_physCtrl);
- }
-}
-
-void KX_NearSensor::UnregisterSumo(KX_TouchEventManager* touchman)
+CValue* KX_NearSensor::GetReplica()
{
- if (m_physCtrl)
- {
- touchman->GetPhysicsEnvironment()->removeSensor(m_physCtrl);
- }
+ KX_NearSensor* replica = new KX_NearSensor(*this);
+ replica->ProcessReplica();
+ return replica;
}
-CValue* KX_NearSensor::GetReplica()
+void KX_NearSensor::ProcessReplica()
{
- KX_NearSensor* replica = new KX_NearSensor(*this);
- replica->m_colliders = new CListValue();
- replica->Init();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ KX_TouchSensor::ProcessReplica();
- replica->m_client_info = new KX_ClientObjectInfo(m_client_info->m_gameobject, KX_ClientObjectInfo::NEAR);
+ m_client_info = new KX_ClientObjectInfo(m_client_info->m_gameobject, KX_ClientObjectInfo::SENSOR);
- if (replica->m_physCtrl)
+ if (m_physCtrl)
{
- replica->m_physCtrl = replica->m_physCtrl->GetReplica();
- if (replica->m_physCtrl)
+ m_physCtrl = m_physCtrl->GetReplica();
+ if (m_physCtrl)
{
//static_cast<KX_TouchEventManager*>(m_eventmgr)->GetPhysicsEnvironment()->addSensor(replica->m_physCtrl);
- replica->m_physCtrl->SetMargin(m_Margin);
- replica->m_physCtrl->setNewClientInfo(replica->m_client_info);
+ m_physCtrl->SetMargin(m_Margin);
+ m_physCtrl->setNewClientInfo(m_client_info);
}
}
- //Wrong: the parent object could be a child, this code works only if it is a root parent.
- //Anyway, at this stage, the parent object is already synchronized, nothing to do.
- //bool parentUpdated = false;
- //((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL, parentUpdated);
- replica->SynchronizeTransform();
-
- return replica;
}
-
-
void KX_NearSensor::ReParent(SCA_IObject* parent)
{
+ SCA_ISensor::ReParent(parent);
m_client_info->m_gameobject = static_cast<KX_GameObject*>(parent);
m_client_info->m_sensors.push_back(this);
-
-
-/* KX_ClientObjectInfo *client_info = gameobj->getClientInfo();
- client_info->m_gameobject = gameobj;
- client_info->m_auxilary_info = NULL;
-
- client_info->m_sensors.push_back(this);
- SCA_ISensor::ReParent(parent);
-*/
- //Not needed, was done in GetReplica() already
- //bool parentUpdated = false;
- //((KX_GameObject*)GetParent())->GetSGNode()->ComputeWorldTransforms(NULL,parentUpdated);
- //SynchronizeTransform();
- SCA_ISensor::ReParent(parent);
+ //Synchronize here with the actual parent.
+ SynchronizeTransform();
}
@@ -177,7 +147,7 @@ KX_NearSensor::~KX_NearSensor()
}
-bool KX_NearSensor::Evaluate(CValue* event)
+bool KX_NearSensor::Evaluate()
{
bool result = false;
// KX_GameObject* parent = static_cast<KX_GameObject*>(GetParent());
@@ -286,8 +256,13 @@ bool KX_NearSensor::NewHandleCollision(void* obj1,void* obj2,const PHY_CollData
/* ------------------------------------------------------------------------- */
PyTypeObject KX_NearSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_NearSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -334,6 +309,10 @@ PyObject* KX_NearSensor::py_getattro(PyObject *attr)
py_getattro_up(KX_TouchSensor);
}
+PyObject* KX_NearSensor::py_getattro_dict() {
+ py_getattro_dict_up(KX_TouchSensor);
+}
+
int KX_NearSensor::py_setattro(PyObject*attr, PyObject* value)
{
py_setattro_up(KX_TouchSensor);
diff --git a/source/gameengine/Ketsji/KX_NearSensor.h b/source/gameengine/Ketsji/KX_NearSensor.h
index 26c5feb4e67..63099e181a0 100644
--- a/source/gameengine/Ketsji/KX_NearSensor.h
+++ b/source/gameengine/Ketsji/KX_NearSensor.h
@@ -70,19 +70,21 @@ public:
virtual ~KX_NearSensor();
virtual void SynchronizeTransform();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual void ProcessReplica();
+ virtual bool Evaluate();
virtual void ReParent(SCA_IObject* parent);
virtual bool NewHandleCollision(void* obj1,void* obj2,
const PHY_CollData * coll_data);
virtual bool BroadPhaseFilterCollision(void*obj1,void*obj2);
- virtual void RegisterSumo(KX_TouchEventManager *touchman);
- virtual void UnregisterSumo(KX_TouchEventManager* touchman);
+ virtual bool BroadPhaseSensorFilterCollision(void*obj1,void*obj2) { return false; };
+ virtual sensortype GetSensorType() { return ST_NEAR; }
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
//No methods
diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.cpp b/source/gameengine/Ketsji/KX_ObjectActuator.cpp
index 861c5757971..eaae04d406d 100644
--- a/source/gameengine/Ketsji/KX_ObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ObjectActuator.cpp
@@ -31,6 +31,7 @@
#include "KX_ObjectActuator.h"
#include "KX_GameObject.h"
+#include "KX_PyMath.h" // For PyVecTo - should this include be put in PyObjectPlus?
#include "KX_IPhysicsController.h"
#ifdef HAVE_CONFIG_H
@@ -44,6 +45,7 @@
KX_ObjectActuator::
KX_ObjectActuator(
SCA_IObject* gameobj,
+ KX_GameObject* refobj,
const MT_Vector3& force,
const MT_Vector3& torque,
const MT_Vector3& dloc,
@@ -68,6 +70,7 @@ KX_ObjectActuator(
m_previous_error(0.0,0.0,0.0),
m_error_accumulator(0.0,0.0,0.0),
m_bitLocalFlag (flag),
+ m_reference(refobj),
m_active_combined_velocity (false),
m_linear_damping_active(false),
m_angular_damping_active(false)
@@ -76,10 +79,20 @@ KX_ObjectActuator(
{
// in servo motion, the force is local if the target velocity is local
m_bitLocalFlag.Force = m_bitLocalFlag.LinearVelocity;
+
+ m_pid = m_torque;
}
+ if (m_reference)
+ m_reference->RegisterActuator(this);
UpdateFuzzyFlags();
}
+KX_ObjectActuator::~KX_ObjectActuator()
+{
+ if (m_reference)
+ m_reference->UnregisterActuator(this);
+}
+
bool KX_ObjectActuator::Update()
{
@@ -128,11 +141,23 @@ bool KX_ObjectActuator::Update()
if (mass < MT_EPSILON)
return false;
MT_Vector3 v = parent->GetLinearVelocity(m_bitLocalFlag.LinearVelocity);
+ if (m_reference)
+ {
+ const MT_Point3& mypos = parent->NodeGetWorldPosition();
+ const MT_Point3& refpos = m_reference->NodeGetWorldPosition();
+ MT_Point3 relpos;
+ relpos = (mypos-refpos);
+ MT_Vector3 vel= m_reference->GetVelocity(relpos);
+ if (m_bitLocalFlag.LinearVelocity)
+ // must convert in local space
+ vel = parent->NodeGetWorldOrientation().transposed()*vel;
+ v -= vel;
+ }
MT_Vector3 e = m_linear_velocity - v;
MT_Vector3 dv = e - m_previous_error;
MT_Vector3 I = m_error_accumulator + e;
- m_force = m_torque.x()*e+m_torque.y()*I+m_torque.z()*dv;
+ m_force = m_pid.x()*e+m_pid.y()*I+m_pid.z()*dv;
// to automatically adapt the PID coefficient to mass;
m_force *= mass;
if (m_bitLocalFlag.Torque)
@@ -253,13 +278,37 @@ CValue* KX_ObjectActuator::GetReplica()
KX_ObjectActuator* replica = new KX_ObjectActuator(*this);//m_float,GetName());
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
return replica;
}
+void KX_ObjectActuator::ProcessReplica()
+{
+ SCA_IActuator::ProcessReplica();
+ if (m_reference)
+ m_reference->RegisterActuator(this);
+}
+bool KX_ObjectActuator::UnlinkObject(SCA_IObject* clientobj)
+{
+ if (clientobj == (SCA_IObject*)m_reference)
+ {
+ // this object is being deleted, we cannot continue to use it as reference.
+ m_reference = NULL;
+ return true;
+ }
+ return false;
+}
+
+void KX_ObjectActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
+{
+ void **h_obj = (*obj_map)[m_reference];
+ if (h_obj) {
+ if (m_reference)
+ m_reference->UnregisterActuator(this);
+ m_reference = (KX_GameObject*)(*h_obj);
+ m_reference->RegisterActuator(this);
+ }
+}
/* some 'standard' utilities... */
bool KX_ObjectActuator::isValid(KX_ObjectActuator::KX_OBJECT_ACT_VEC_TYPE type)
@@ -277,8 +326,13 @@ bool KX_ObjectActuator::isValid(KX_ObjectActuator::KX_OBJECT_ACT_VEC_TYPE type)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_ObjectActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_ObjectActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -304,6 +358,7 @@ PyParentObject KX_ObjectActuator::Parents[] = {
};
PyMethodDef KX_ObjectActuator::Methods[] = {
+ // Deprecated ----->
{"getForce", (PyCFunction) KX_ObjectActuator::sPyGetForce, METH_NOARGS},
{"setForce", (PyCFunction) KX_ObjectActuator::sPySetForce, METH_VARARGS},
{"getTorque", (PyCFunction) KX_ObjectActuator::sPyGetTorque, METH_NOARGS},
@@ -327,18 +382,188 @@ PyMethodDef KX_ObjectActuator::Methods[] = {
{"setPID", (PyCFunction) KX_ObjectActuator::sPyGetPID, METH_NOARGS},
{"getPID", (PyCFunction) KX_ObjectActuator::sPySetPID, METH_VARARGS},
-
+ // <----- Deprecated
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_ObjectActuator::Attributes[] = {
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("force", -1000, 1000, false, KX_ObjectActuator, m_force, PyUpdateFuzzyFlags),
+ KX_PYATTRIBUTE_BOOL_RW("useLocalForce", KX_ObjectActuator, m_bitLocalFlag.Force),
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("torque", -1000, 1000, false, KX_ObjectActuator, m_torque, PyUpdateFuzzyFlags),
+ KX_PYATTRIBUTE_BOOL_RW("useLocalTorque", KX_ObjectActuator, m_bitLocalFlag.Torque),
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("dLoc", -1000, 1000, false, KX_ObjectActuator, m_dloc, PyUpdateFuzzyFlags),
+ KX_PYATTRIBUTE_BOOL_RW("useLocalDLoc", KX_ObjectActuator, m_bitLocalFlag.DLoc),
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("dRot", -1000, 1000, false, KX_ObjectActuator, m_drot, PyUpdateFuzzyFlags),
+ KX_PYATTRIBUTE_BOOL_RW("useLocalDRot", KX_ObjectActuator, m_bitLocalFlag.DRot),
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("linV", -1000, 1000, false, KX_ObjectActuator, m_linear_velocity, PyUpdateFuzzyFlags),
+ KX_PYATTRIBUTE_BOOL_RW("useLocalLinV", KX_ObjectActuator, m_bitLocalFlag.LinearVelocity),
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("angV", -1000, 1000, false, KX_ObjectActuator, m_angular_velocity, PyUpdateFuzzyFlags),
+ KX_PYATTRIBUTE_BOOL_RW("useLocalAngV", KX_ObjectActuator, m_bitLocalFlag.AngularVelocity),
+ KX_PYATTRIBUTE_SHORT_RW("damping", 0, 1000, false, KX_ObjectActuator, m_damping),
+ KX_PYATTRIBUTE_RW_FUNCTION("forceLimitX", KX_ObjectActuator, pyattr_get_forceLimitX, pyattr_set_forceLimitX),
+ KX_PYATTRIBUTE_RW_FUNCTION("forceLimitY", KX_ObjectActuator, pyattr_get_forceLimitY, pyattr_set_forceLimitY),
+ KX_PYATTRIBUTE_RW_FUNCTION("forceLimitZ", KX_ObjectActuator, pyattr_get_forceLimitZ, pyattr_set_forceLimitZ),
+ KX_PYATTRIBUTE_VECTOR_RW_CHECK("pid", -100, 200, true, KX_ObjectActuator, m_pid, PyCheckPid),
+ KX_PYATTRIBUTE_RW_FUNCTION("reference", KX_ObjectActuator,pyattr_get_reference,pyattr_set_reference),
{ NULL } //Sentinel
};
PyObject* KX_ObjectActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
-};
+}
+
+
+PyObject* KX_ObjectActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
+int KX_ObjectActuator::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_IActuator);
+}
+
+/* Attribute get/set functions */
+
+PyObject* KX_ObjectActuator::pyattr_get_forceLimitX(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ObjectActuator* self = reinterpret_cast<KX_ObjectActuator*>(self_v);
+ PyObject *retVal = PyList_New(3);
+
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(self->m_drot[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(self->m_dloc[0]));
+ PyList_SET_ITEM(retVal, 2, PyBool_FromLong(self->m_bitLocalFlag.Torque));
+
+ return retVal;
+}
+
+int KX_ObjectActuator::pyattr_set_forceLimitX(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_ObjectActuator* self = reinterpret_cast<KX_ObjectActuator*>(self_v);
+
+ PyObject* seq = PySequence_Fast(value, "");
+ if (seq && PySequence_Fast_GET_SIZE(seq) == 3)
+ {
+ self->m_drot[0] = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, 0));
+ self->m_dloc[0] = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, 1));
+ self->m_bitLocalFlag.Torque = (PyInt_AsLong(PySequence_Fast_GET_ITEM(value, 2)) != 0);
+
+ if (!PyErr_Occurred())
+ {
+ Py_DECREF(seq);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+
+ Py_XDECREF(seq);
+
+ PyErr_SetString(PyExc_ValueError, "expected a sequence of 2 floats and a bool");
+ return PY_SET_ATTR_FAIL;
+}
+
+PyObject* KX_ObjectActuator::pyattr_get_forceLimitY(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ObjectActuator* self = reinterpret_cast<KX_ObjectActuator*>(self_v);
+ PyObject *retVal = PyList_New(3);
+
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(self->m_drot[1]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(self->m_dloc[1]));
+ PyList_SET_ITEM(retVal, 2, PyBool_FromLong(self->m_bitLocalFlag.DLoc));
+
+ return retVal;
+}
+
+int KX_ObjectActuator::pyattr_set_forceLimitY(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_ObjectActuator* self = reinterpret_cast<KX_ObjectActuator*>(self_v);
+
+ PyObject* seq = PySequence_Fast(value, "");
+ if (seq && PySequence_Fast_GET_SIZE(seq) == 3)
+ {
+ self->m_drot[1] = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, 0));
+ self->m_dloc[1] = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, 1));
+ self->m_bitLocalFlag.DLoc = (PyInt_AsLong(PySequence_Fast_GET_ITEM(value, 2)) != 0);
+
+ if (!PyErr_Occurred())
+ {
+ Py_DECREF(seq);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+
+ Py_XDECREF(seq);
+
+ PyErr_SetString(PyExc_ValueError, "expected a sequence of 2 floats and a bool");
+ return PY_SET_ATTR_FAIL;
+}
+
+PyObject* KX_ObjectActuator::pyattr_get_forceLimitZ(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ObjectActuator* self = reinterpret_cast<KX_ObjectActuator*>(self_v);
+ PyObject *retVal = PyList_New(3);
+
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(self->m_drot[2]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(self->m_dloc[2]));
+ PyList_SET_ITEM(retVal, 2, PyBool_FromLong(self->m_bitLocalFlag.DRot));
+
+ return retVal;
+}
+
+int KX_ObjectActuator::pyattr_set_forceLimitZ(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_ObjectActuator* self = reinterpret_cast<KX_ObjectActuator*>(self_v);
+
+ PyObject* seq = PySequence_Fast(value, "");
+ if (seq && PySequence_Fast_GET_SIZE(seq) == 3)
+ {
+ self->m_drot[2] = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, 0));
+ self->m_dloc[2] = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, 1));
+ self->m_bitLocalFlag.DRot = (PyInt_AsLong(PySequence_Fast_GET_ITEM(value, 2)) != 0);
+
+ if (!PyErr_Occurred())
+ {
+ Py_DECREF(seq);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+
+ Py_XDECREF(seq);
+
+ PyErr_SetString(PyExc_ValueError, "expected a sequence of 2 floats and a bool");
+ return PY_SET_ATTR_FAIL;
+}
+
+PyObject* KX_ObjectActuator::pyattr_get_reference(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ObjectActuator* actuator = static_cast<KX_ObjectActuator*>(self);
+ if (!actuator->m_reference)
+ Py_RETURN_NONE;
+
+ return actuator->m_reference->GetProxy();
+}
+
+int KX_ObjectActuator::pyattr_set_reference(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_ObjectActuator* actuator = static_cast<KX_ObjectActuator*>(self);
+ KX_GameObject *refOb;
+
+ if (!ConvertPythonToGameObject(value, &refOb, true, "actu.reference = value: KX_ObjectActuator"))
+ return PY_SET_ATTR_FAIL;
+
+ if (actuator->m_reference)
+ actuator->m_reference->UnregisterActuator(actuator);
+
+ if(refOb==NULL) {
+ actuator->m_reference= NULL;
+ }
+ else {
+ actuator->m_reference = refOb;
+ actuator->m_reference->RegisterActuator(actuator);
+ }
+
+ return PY_SET_ATTR_SUCCESS;
+}
+
/* 1. set ------------------------------------------------------------------ */
/* Removed! */
@@ -346,18 +571,20 @@ PyObject* KX_ObjectActuator::py_getattro(PyObject *attr) {
/* 2. getForce */
PyObject* KX_ObjectActuator::PyGetForce()
{
+ ShowDeprecationWarning("getForce()", "the force and the useLocalForce properties");
PyObject *retVal = PyList_New(4);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_force[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_force[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_force[2]));
- PyList_SetItem(retVal, 3, BoolToPyArg(m_bitLocalFlag.Force));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_force[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_force[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_force[2]));
+ PyList_SET_ITEM(retVal, 3, BoolToPyArg(m_bitLocalFlag.Force));
return retVal;
}
/* 3. setForce */
PyObject* KX_ObjectActuator::PySetForce(PyObject* args)
{
+ ShowDeprecationWarning("setForce()", "the force and the useLocalForce properties");
float vecArg[3];
int bToggle = 0;
if (!PyArg_ParseTuple(args, "fffi:setForce", &vecArg[0], &vecArg[1],
@@ -373,18 +600,20 @@ PyObject* KX_ObjectActuator::PySetForce(PyObject* args)
/* 4. getTorque */
PyObject* KX_ObjectActuator::PyGetTorque()
{
+ ShowDeprecationWarning("getTorque()", "the torque and the useLocalTorque properties");
PyObject *retVal = PyList_New(4);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_torque[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_torque[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_torque[2]));
- PyList_SetItem(retVal, 3, BoolToPyArg(m_bitLocalFlag.Torque));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_torque[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_torque[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_torque[2]));
+ PyList_SET_ITEM(retVal, 3, BoolToPyArg(m_bitLocalFlag.Torque));
return retVal;
}
/* 5. setTorque */
PyObject* KX_ObjectActuator::PySetTorque(PyObject* args)
{
+ ShowDeprecationWarning("setTorque()", "the torque and the useLocalTorque properties");
float vecArg[3];
int bToggle = 0;
if (!PyArg_ParseTuple(args, "fffi:setTorque", &vecArg[0], &vecArg[1],
@@ -400,18 +629,20 @@ PyObject* KX_ObjectActuator::PySetTorque(PyObject* args)
/* 6. getDLoc */
PyObject* KX_ObjectActuator::PyGetDLoc()
{
+ ShowDeprecationWarning("getDLoc()", "the dLoc and the useLocalDLoc properties");
PyObject *retVal = PyList_New(4);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_dloc[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_dloc[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_dloc[2]));
- PyList_SetItem(retVal, 3, BoolToPyArg(m_bitLocalFlag.DLoc));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_dloc[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_dloc[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_dloc[2]));
+ PyList_SET_ITEM(retVal, 3, BoolToPyArg(m_bitLocalFlag.DLoc));
return retVal;
}
/* 7. setDLoc */
PyObject* KX_ObjectActuator::PySetDLoc(PyObject* args)
{
+ ShowDeprecationWarning("setDLoc()", "the dLoc and the useLocalDLoc properties");
float vecArg[3];
int bToggle = 0;
if(!PyArg_ParseTuple(args, "fffi:setDLoc", &vecArg[0], &vecArg[1],
@@ -427,18 +658,20 @@ PyObject* KX_ObjectActuator::PySetDLoc(PyObject* args)
/* 8. getDRot */
PyObject* KX_ObjectActuator::PyGetDRot()
{
+ ShowDeprecationWarning("getDRot()", "the dRot and the useLocalDRot properties");
PyObject *retVal = PyList_New(4);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_drot[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_drot[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_drot[2]));
- PyList_SetItem(retVal, 3, BoolToPyArg(m_bitLocalFlag.DRot));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_drot[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_drot[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_drot[2]));
+ PyList_SET_ITEM(retVal, 3, BoolToPyArg(m_bitLocalFlag.DRot));
return retVal;
}
/* 9. setDRot */
PyObject* KX_ObjectActuator::PySetDRot(PyObject* args)
{
+ ShowDeprecationWarning("setDRot()", "the dRot and the useLocalDRot properties");
float vecArg[3];
int bToggle = 0;
if (!PyArg_ParseTuple(args, "fffi:setDRot", &vecArg[0], &vecArg[1],
@@ -453,18 +686,20 @@ PyObject* KX_ObjectActuator::PySetDRot(PyObject* args)
/* 10. getLinearVelocity */
PyObject* KX_ObjectActuator::PyGetLinearVelocity() {
+ ShowDeprecationWarning("getLinearVelocity()", "the linV and the useLocalLinV properties");
PyObject *retVal = PyList_New(4);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_linear_velocity[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_linear_velocity[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_linear_velocity[2]));
- PyList_SetItem(retVal, 3, BoolToPyArg(m_bitLocalFlag.LinearVelocity));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_linear_velocity[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_linear_velocity[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_linear_velocity[2]));
+ PyList_SET_ITEM(retVal, 3, BoolToPyArg(m_bitLocalFlag.LinearVelocity));
return retVal;
}
/* 11. setLinearVelocity */
PyObject* KX_ObjectActuator::PySetLinearVelocity(PyObject* args) {
+ ShowDeprecationWarning("setLinearVelocity()", "the linV and the useLocalLinV properties");
float vecArg[3];
int bToggle = 0;
if (!PyArg_ParseTuple(args, "fffi:setLinearVelocity", &vecArg[0], &vecArg[1],
@@ -480,17 +715,19 @@ PyObject* KX_ObjectActuator::PySetLinearVelocity(PyObject* args) {
/* 12. getAngularVelocity */
PyObject* KX_ObjectActuator::PyGetAngularVelocity() {
+ ShowDeprecationWarning("getAngularVelocity()", "the angV and the useLocalAngV properties");
PyObject *retVal = PyList_New(4);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_angular_velocity[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_angular_velocity[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_angular_velocity[2]));
- PyList_SetItem(retVal, 3, BoolToPyArg(m_bitLocalFlag.AngularVelocity));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_angular_velocity[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_angular_velocity[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_angular_velocity[2]));
+ PyList_SET_ITEM(retVal, 3, BoolToPyArg(m_bitLocalFlag.AngularVelocity));
return retVal;
}
/* 13. setAngularVelocity */
PyObject* KX_ObjectActuator::PySetAngularVelocity(PyObject* args) {
+ ShowDeprecationWarning("setAngularVelocity()", "the angV and the useLocalAngV properties");
float vecArg[3];
int bToggle = 0;
if (!PyArg_ParseTuple(args, "fffi:setAngularVelocity", &vecArg[0], &vecArg[1],
@@ -505,6 +742,7 @@ PyObject* KX_ObjectActuator::PySetAngularVelocity(PyObject* args) {
/* 13. setDamping */
PyObject* KX_ObjectActuator::PySetDamping(PyObject* args) {
+ ShowDeprecationWarning("setDamping()", "the damping property");
int damping = 0;
if (!PyArg_ParseTuple(args, "i:setDamping", &damping) || damping < 0 || damping > 1000) {
return NULL;
@@ -515,22 +753,25 @@ PyObject* KX_ObjectActuator::PySetDamping(PyObject* args) {
/* 13. getVelocityDamping */
PyObject* KX_ObjectActuator::PyGetDamping() {
+ ShowDeprecationWarning("getDamping()", "the damping property");
return Py_BuildValue("i",m_damping);
}
/* 6. getForceLimitX */
PyObject* KX_ObjectActuator::PyGetForceLimitX()
{
+ ShowDeprecationWarning("getForceLimitX()", "the forceLimitX property");
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_drot[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_dloc[0]));
- PyList_SetItem(retVal, 2, BoolToPyArg(m_bitLocalFlag.Torque));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_drot[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_dloc[0]));
+ PyList_SET_ITEM(retVal, 2, BoolToPyArg(m_bitLocalFlag.Torque));
return retVal;
}
/* 7. setForceLimitX */
PyObject* KX_ObjectActuator::PySetForceLimitX(PyObject* args)
{
+ ShowDeprecationWarning("setForceLimitX()", "the forceLimitX property");
float vecArg[2];
int bToggle = 0;
if(!PyArg_ParseTuple(args, "ffi:setForceLimitX", &vecArg[0], &vecArg[1], &bToggle)) {
@@ -545,17 +786,19 @@ PyObject* KX_ObjectActuator::PySetForceLimitX(PyObject* args)
/* 6. getForceLimitY */
PyObject* KX_ObjectActuator::PyGetForceLimitY()
{
+ ShowDeprecationWarning("getForceLimitY()", "the forceLimitY property");
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_drot[1]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_dloc[1]));
- PyList_SetItem(retVal, 2, BoolToPyArg(m_bitLocalFlag.DLoc));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_drot[1]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_dloc[1]));
+ PyList_SET_ITEM(retVal, 2, BoolToPyArg(m_bitLocalFlag.DLoc));
return retVal;
}
/* 7. setForceLimitY */
PyObject* KX_ObjectActuator::PySetForceLimitY(PyObject* args)
{
+ ShowDeprecationWarning("setForceLimitY()", "the forceLimitY property");
float vecArg[2];
int bToggle = 0;
if(!PyArg_ParseTuple(args, "ffi:setForceLimitY", &vecArg[0], &vecArg[1], &bToggle)) {
@@ -570,17 +813,19 @@ PyObject* KX_ObjectActuator::PySetForceLimitY(PyObject* args)
/* 6. getForceLimitZ */
PyObject* KX_ObjectActuator::PyGetForceLimitZ()
{
+ ShowDeprecationWarning("getForceLimitZ()", "the forceLimitZ property");
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_drot[2]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_dloc[2]));
- PyList_SetItem(retVal, 2, BoolToPyArg(m_bitLocalFlag.DRot));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_drot[2]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_dloc[2]));
+ PyList_SET_ITEM(retVal, 2, BoolToPyArg(m_bitLocalFlag.DRot));
return retVal;
}
/* 7. setForceLimitZ */
PyObject* KX_ObjectActuator::PySetForceLimitZ(PyObject* args)
{
+ ShowDeprecationWarning("setForceLimitZ()", "the forceLimitZ property");
float vecArg[2];
int bToggle = 0;
if(!PyArg_ParseTuple(args, "ffi:setForceLimitZ", &vecArg[0], &vecArg[1], &bToggle)) {
@@ -595,22 +840,24 @@ PyObject* KX_ObjectActuator::PySetForceLimitZ(PyObject* args)
/* 4. getPID */
PyObject* KX_ObjectActuator::PyGetPID()
{
+ ShowDeprecationWarning("getPID()", "the pid property");
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_torque[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_torque[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_torque[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_pid[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_pid[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_pid[2]));
return retVal;
}
/* 5. setPID */
PyObject* KX_ObjectActuator::PySetPID(PyObject* args)
{
+ ShowDeprecationWarning("setPID()", "the pid property");
float vecArg[3];
if (!PyArg_ParseTuple(args, "fff:setPID", &vecArg[0], &vecArg[1], &vecArg[2])) {
return NULL;
}
- m_torque.setValue(vecArg);
+ m_pid.setValue(vecArg);
Py_RETURN_NONE;
}
diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.h b/source/gameengine/Ketsji/KX_ObjectActuator.h
index a812942a0ae..f9bd2a0c748 100644
--- a/source/gameengine/Ketsji/KX_ObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_ObjectActuator.h
@@ -35,8 +35,10 @@
#include "SCA_IActuator.h"
#include "MT_Vector3.h"
+class KX_GameObject;
+
//
-// Bitfield that stores the flags for each CValue derived class
+// Stores the flags for each CValue derived class
//
struct KX_LocalFlags {
KX_LocalFlags() :
@@ -55,20 +57,20 @@ struct KX_LocalFlags {
{
}
- unsigned short Force : 1;
- unsigned short Torque : 1;
- unsigned short DRot : 1;
- unsigned short DLoc : 1;
- unsigned short LinearVelocity : 1;
- unsigned short AngularVelocity : 1;
- unsigned short AddOrSetLinV : 1;
- unsigned short ServoControl : 1;
- unsigned short ZeroForce : 1;
- unsigned short ZeroTorque : 1;
- unsigned short ZeroDRot : 1;
- unsigned short ZeroDLoc : 1;
- unsigned short ZeroLinearVelocity : 1;
- unsigned short ZeroAngularVelocity : 1;
+ bool Force;
+ bool Torque;
+ bool DRot;
+ bool DLoc;
+ bool LinearVelocity;
+ bool AngularVelocity;
+ bool AddOrSetLinV;
+ bool ServoControl;
+ bool ZeroForce;
+ bool ZeroTorque;
+ bool ZeroDRot;
+ bool ZeroDLoc;
+ bool ZeroLinearVelocity;
+ bool ZeroAngularVelocity;
};
class KX_ObjectActuator : public SCA_IActuator
@@ -80,7 +82,8 @@ class KX_ObjectActuator : public SCA_IActuator
MT_Vector3 m_dloc;
MT_Vector3 m_drot;
MT_Vector3 m_linear_velocity;
- MT_Vector3 m_angular_velocity;
+ MT_Vector3 m_angular_velocity;
+ MT_Vector3 m_pid;
MT_Scalar m_linear_length2;
MT_Scalar m_angular_length2;
// used in damping
@@ -91,7 +94,7 @@ class KX_ObjectActuator : public SCA_IActuator
MT_Vector3 m_previous_error;
MT_Vector3 m_error_accumulator;
KX_LocalFlags m_bitLocalFlag;
-
+ KX_GameObject* m_reference;
// A hack bool -- oh no sorry everyone
// This bool is used to check if we have informed
// the physics object that we are no longer
@@ -120,6 +123,7 @@ public:
KX_ObjectActuator(
SCA_IObject* gameobj,
+ KX_GameObject* refobj,
const MT_Vector3& force,
const MT_Vector3& torque,
const MT_Vector3& dloc,
@@ -130,8 +134,11 @@ public:
const KX_LocalFlags& flag,
PyTypeObject* T=&Type
);
-
+ ~KX_ObjectActuator();
CValue* GetReplica();
+ void ProcessReplica();
+ bool UnlinkObject(SCA_IObject* clientobj);
+ void Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map);
void SetForceLoc(const double force[3]) { /*m_force=force;*/ }
void UpdateFuzzyFlags()
@@ -154,6 +161,8 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
+ virtual int py_setattro(PyObject *attr, PyObject *value);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetForce);
KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForce);
@@ -177,6 +186,53 @@ public:
KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForceLimitZ);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetPID);
KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetPID);
+
+ /* Attributes */
+ static PyObject* pyattr_get_forceLimitX(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_forceLimitX(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_forceLimitY(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_forceLimitY(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_forceLimitZ(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_forceLimitZ(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_reference(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_reference(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
+ // This lets the attribute macros use UpdateFuzzyFlags()
+ static int PyUpdateFuzzyFlags(void *self, const PyAttributeDef *attrdef)
+ {
+ KX_ObjectActuator* act = reinterpret_cast<KX_ObjectActuator*>(self);
+ act->UpdateFuzzyFlags();
+ return 0;
+ }
+
+ // This is the keep the PID values in check after they are assigned with Python
+ static int PyCheckPid(void *self, const PyAttributeDef *attrdef)
+ {
+ KX_ObjectActuator* act = reinterpret_cast<KX_ObjectActuator*>(self);
+
+ //P 0 to 200
+ if (act->m_pid[0] < 0) {
+ act->m_pid[0] = 0;
+ } else if (act->m_pid[0] > 200) {
+ act->m_pid[0] = 200;
+ }
+
+ //I 0 to 3
+ if (act->m_pid[1] < 0) {
+ act->m_pid[1] = 0;
+ } else if (act->m_pid[1] > 3) {
+ act->m_pid[1] = 3;
+ }
+
+ //D -100 to 100
+ if (act->m_pid[2] < -100) {
+ act->m_pid[2] = -100;
+ } else if (act->m_pid[2] > 100) {
+ act->m_pid[2] = 100;
+ }
+
+ return 0;
+ }
};
#endif //__KX_OBJECTACTUATOR
diff --git a/source/gameengine/Ketsji/KX_OdePhysicsController.h b/source/gameengine/Ketsji/KX_OdePhysicsController.h
index 21b7e632d83..8c3974c38a3 100644
--- a/source/gameengine/Ketsji/KX_OdePhysicsController.h
+++ b/source/gameengine/Ketsji/KX_OdePhysicsController.h
@@ -70,6 +70,7 @@ public:
virtual void setOrientation(const MT_Matrix3x3& orn);
virtual void setPosition(const MT_Point3& pos);
virtual void setScaling(const MT_Vector3& scaling);
+ virtual void SetTransform() {}
virtual MT_Scalar GetMass();
virtual MT_Vector3 getReactionForce();
virtual void setRigidBody(bool rigid);
diff --git a/source/gameengine/Ketsji/KX_ParentActuator.cpp b/source/gameengine/Ketsji/KX_ParentActuator.cpp
index 0093cf5f313..cd2ed456c48 100644
--- a/source/gameengine/Ketsji/KX_ParentActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ParentActuator.cpp
@@ -48,10 +48,14 @@
KX_ParentActuator::KX_ParentActuator(SCA_IObject *gameobj,
int mode,
+ bool addToCompound,
+ bool ghost,
SCA_IObject *ob,
PyTypeObject* T)
: SCA_IActuator(gameobj, T),
m_mode(mode),
+ m_addToCompound(addToCompound),
+ m_ghost(ghost),
m_ob(ob)
{
if (m_ob)
@@ -73,8 +77,6 @@ CValue* KX_ParentActuator::GetReplica()
KX_ParentActuator* replica = new KX_ParentActuator(*this);
// replication just copy the m_base pointer => common random generator
replica->ProcessReplica();
- CValue::AddDataToReplica(replica);
-
return replica;
}
@@ -123,7 +125,7 @@ bool KX_ParentActuator::Update()
switch (m_mode) {
case KX_PARENT_SET:
if (m_ob)
- obj->SetParent(scene, (KX_GameObject*)m_ob);
+ obj->SetParent(scene, (KX_GameObject*)m_ob, m_addToCompound, m_ghost);
break;
case KX_PARENT_REMOVE:
obj->RemoveParent(scene);
@@ -139,8 +141,13 @@ bool KX_ParentActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_ParentActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_ParentActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -175,6 +182,9 @@ PyMethodDef KX_ParentActuator::Methods[] = {
PyAttributeDef KX_ParentActuator::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("object", KX_ParentActuator, pyattr_get_object, pyattr_set_object),
+ KX_PYATTRIBUTE_INT_RW("mode", KX_PARENT_NODEF+1, KX_PARENT_MAX-1, true, KX_ParentActuator, m_mode),
+ KX_PYATTRIBUTE_BOOL_RW("compound", KX_ParentActuator, m_addToCompound),
+ KX_PYATTRIBUTE_BOOL_RW("ghost", KX_ParentActuator, m_ghost),
{ NULL } //Sentinel
};
@@ -193,7 +203,7 @@ int KX_ParentActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUTE
KX_GameObject *gameobj;
if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_ParentActuator"))
- return 1; // ConvertPythonToGameObject sets the error
+ return PY_SET_ATTR_FAIL; // ConvertPythonToGameObject sets the error
if (actuator->m_ob != NULL)
actuator->m_ob->UnregisterActuator(actuator);
@@ -203,7 +213,7 @@ int KX_ParentActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUTE
if (actuator->m_ob)
actuator->m_ob->RegisterActuator(actuator);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
@@ -211,6 +221,10 @@ PyObject* KX_ParentActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_ParentActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_ParentActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}
@@ -259,7 +273,7 @@ PyObject* KX_ParentActuator::PyGetObject(PyObject* args)
Py_RETURN_NONE;
if (ret_name_only)
- return PyString_FromString(m_ob->GetName());
+ return PyString_FromString(m_ob->GetName().ReadPtr());
else
return m_ob->GetProxy();
}
diff --git a/source/gameengine/Ketsji/KX_ParentActuator.h b/source/gameengine/Ketsji/KX_ParentActuator.h
index f9f0b73b876..148375e994c 100644
--- a/source/gameengine/Ketsji/KX_ParentActuator.h
+++ b/source/gameengine/Ketsji/KX_ParentActuator.h
@@ -46,6 +46,9 @@ class KX_ParentActuator : public SCA_IActuator
/** Mode */
int m_mode;
+ /** option */
+ bool m_addToCompound;
+ bool m_ghost;
/** Object to set as parent */
SCA_IObject *m_ob;
@@ -57,11 +60,14 @@ class KX_ParentActuator : public SCA_IActuator
KX_PARENT_NODEF = 0,
KX_PARENT_SET,
KX_PARENT_REMOVE,
+ KX_PARENT_MAX
};
KX_ParentActuator(class SCA_IObject* gameobj,
int mode,
+ bool addToCompound,
+ bool ghost,
SCA_IObject *ob,
PyTypeObject* T=&Type);
virtual ~KX_ParentActuator();
@@ -77,6 +83,7 @@ class KX_ParentActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
/* These are used to get and set m_ob */
diff --git a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
index fda639c09e0..c968e50957e 100644
--- a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
@@ -113,8 +113,13 @@ PyAttributeDef KX_PhysicsObjectWrapper::Attributes[] = {
//python specific stuff
PyTypeObject KX_PhysicsObjectWrapper::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_PhysicsObjectWrapper",
sizeof(PyObjectPlus_Proxy),
0,
@@ -136,11 +141,14 @@ PyParentObject KX_PhysicsObjectWrapper::Parents[] = {
NULL
};
-PyObject* KX_PhysicsObjectWrapper::py_getattro(PyObject *attr)
+PyObject* KX_PhysicsObjectWrapper::py_getattro(PyObject *attr)
{
py_getattro_up(PyObjectPlus);
}
+PyObject* KX_PhysicsObjectWrapper::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
int KX_PhysicsObjectWrapper::py_setattro(PyObject *attr,PyObject *pyobj)
{
diff --git a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
index 7e10dc3ccf4..1b59686babc 100644
--- a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
+++ b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
@@ -37,6 +37,7 @@ class KX_PhysicsObjectWrapper : public PyObjectPlus
Py_Header;
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
public:
KX_PhysicsObjectWrapper(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsEnvironment* physenv,PyTypeObject *T = &Type);
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.cpp b/source/gameengine/Ketsji/KX_PolyProxy.cpp
index 2e5dd72db0e..b56b5500c39 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.cpp
+++ b/source/gameengine/Ketsji/KX_PolyProxy.cpp
@@ -39,8 +39,13 @@
#include "KX_PyMath.h"
PyTypeObject KX_PolyProxy::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_PolyProxy",
sizeof(PyObjectPlus_Proxy),
0,
@@ -59,8 +64,8 @@ PyTypeObject KX_PolyProxy::Type = {
PyParentObject KX_PolyProxy::Parents[] = {
&KX_PolyProxy::Type,
- &SCA_IObject::Type,
&CValue::Type,
+ &PyObjectPlus::Type,
NULL
};
@@ -79,6 +84,7 @@ PyMethodDef KX_PolyProxy::Methods[] = {
PyAttributeDef KX_PolyProxy::Attributes[] = {
/* All dummy's so they come up in a dir() */
+ //KX_PYATTRIBUTE_TODO("DummyProps"),
KX_PYATTRIBUTE_DUMMY("matname"),
KX_PYATTRIBUTE_DUMMY("texture"),
KX_PYATTRIBUTE_DUMMY("material"),
@@ -156,7 +162,11 @@ PyObject* KX_PolyProxy::py_getattro(PyObject *attr)
{
return PyInt_FromLong(m_polygon->IsCollider());
}
- py_getattro_up(SCA_IObject);
+ py_getattro_up(CValue);
+}
+
+PyObject* KX_PolyProxy::py_getattro_dict() {
+ py_getattro_dict_up(CValue);
}
KX_PolyProxy::KX_PolyProxy(const RAS_MeshObject*mesh, RAS_Polygon* polygon)
@@ -176,11 +186,9 @@ CValue* KX_PolyProxy::CalcFinal(VALUE_DATA_TYPE, VALUE_OPERATOR, CValue *) { re
STR_String sPolyName="polygone";
const STR_String & KX_PolyProxy::GetText() {return sPolyName;};
double KX_PolyProxy::GetNumber() { return -1;}
-STR_String KX_PolyProxy::GetName() { return sPolyName;}
-void KX_PolyProxy::SetName(STR_String) { };
+STR_String& KX_PolyProxy::GetName() { return sPolyName;}
+void KX_PolyProxy::SetName(const char *) { };
CValue* KX_PolyProxy::GetReplica() { return NULL;}
-void KX_PolyProxy::ReplicaSetName(STR_String) {};
-
// stuff for python integration
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.h b/source/gameengine/Ketsji/KX_PolyProxy.h
index 275e65da810..d8fd36fec6c 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.h
+++ b/source/gameengine/Ketsji/KX_PolyProxy.h
@@ -31,7 +31,7 @@
#include "SCA_IObject.h"
-class KX_PolyProxy : public SCA_IObject
+class KX_PolyProxy : public CValue
{
Py_Header;
protected:
@@ -46,14 +46,14 @@ public:
CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
const STR_String & GetText();
double GetNumber();
- STR_String GetName();
- void SetName(STR_String name); // Set the name of the value
- void ReplicaSetName(STR_String name);
+ STR_String& GetName();
+ void SetName(const char *name); // Set the name of the value
CValue* GetReplica();
// stuff for python integration
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getMaterialIndex)
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getNumVertex)
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
index 46d04486cc6..506c167a905 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
@@ -51,22 +51,37 @@
#include "KX_PyMath.h"
-KX_PolygonMaterial::KX_PolygonMaterial(const STR_String &texname,
- Material *material,
- int tile,
- int tilexrep,
- int tileyrep,
- int mode,
- int transp,
- bool alpha,
- bool zsort,
- int lightlayer,
- struct MTFace* tface,
- unsigned int* mcol,
- PyTypeObject *T)
+KX_PolygonMaterial::KX_PolygonMaterial(PyTypeObject *T)
: PyObjectPlus(T),
- RAS_IPolyMaterial(texname,
- STR_String(material?material->id.name:""),
+ RAS_IPolyMaterial(),
+
+ m_tface(NULL),
+ m_mcol(NULL),
+ m_material(NULL),
+ m_pymaterial(NULL),
+ m_pass(0)
+{
+}
+
+void KX_PolygonMaterial::Initialize(
+ const STR_String &texname,
+ Material* ma,
+ int materialindex,
+ int tile,
+ int tilexrep,
+ int tileyrep,
+ int mode,
+ int transp,
+ bool alpha,
+ bool zsort,
+ int lightlayer,
+ struct MTFace* tface,
+ unsigned int* mcol)
+{
+ RAS_IPolyMaterial::Initialize(
+ texname,
+ ma?ma->id.name:"",
+ materialindex,
tile,
tilexrep,
tileyrep,
@@ -74,13 +89,12 @@ KX_PolygonMaterial::KX_PolygonMaterial(const STR_String &texname,
transp,
alpha,
zsort,
- lightlayer),
- m_tface(tface),
- m_mcol(mcol),
- m_material(material),
- m_pymaterial(0),
- m_pass(0)
-{
+ lightlayer);
+ m_tface = tface;
+ m_mcol = mcol;
+ m_material = ma;
+ m_pymaterial = 0;
+ m_pass = 0;
}
KX_PolygonMaterial::~KX_PolygonMaterial()
@@ -158,15 +172,32 @@ void KX_PolygonMaterial::DefaultActivate(RAS_IRasterizer* rasty, TCachingInfo& c
rasty->SetLines(true);
else
rasty->SetLines(false);
+ rasty->SetSpecularity(m_specular[0],m_specular[1],m_specular[2],m_specularity);
+ rasty->SetShinyness(m_shininess);
+ rasty->SetDiffuse(m_diffuse[0], m_diffuse[1],m_diffuse[2], 1.0);
+ if (m_material)
+ rasty->SetPolygonOffset(-m_material->zoffs, 0.0);
}
- rasty->SetSpecularity(m_specular[0],m_specular[1],m_specular[2],m_specularity);
- rasty->SetShinyness(m_shininess);
- rasty->SetDiffuse(m_diffuse[0], m_diffuse[1],m_diffuse[2], 1.0);
- if (m_material)
- rasty->SetPolygonOffset(-m_material->zoffs, 0.0);
+ //rasty->SetSpecularity(m_specular[0],m_specular[1],m_specular[2],m_specularity);
+ //rasty->SetShinyness(m_shininess);
+ //rasty->SetDiffuse(m_diffuse[0], m_diffuse[1],m_diffuse[2], 1.0);
+ //if (m_material)
+ // rasty->SetPolygonOffset(-m_material->zoffs, 0.0);
+}
+
+void KX_PolygonMaterial::GetMaterialRGBAColor(unsigned char *rgba) const
+{
+ if (m_material) {
+ *rgba++ = (unsigned char) (m_material->r*255.0);
+ *rgba++ = (unsigned char) (m_material->g*255.0);
+ *rgba++ = (unsigned char) (m_material->b*255.0);
+ *rgba++ = (unsigned char) (m_material->alpha*255.0);
+ } else
+ RAS_IPolyMaterial::GetMaterialRGBAColor(rgba);
}
+
//----------------------------------------------------------------------------
//Python
@@ -189,7 +220,7 @@ PyAttributeDef KX_PolygonMaterial::Attributes[] = {
KX_PYATTRIBUTE_INT_RW("tilexrep", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_tilexrep),
KX_PYATTRIBUTE_INT_RW("tileyrep", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_tileyrep),
KX_PYATTRIBUTE_INT_RW("drawingmode", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_drawingmode),
- KX_PYATTRIBUTE_INT_RW("lightlayer", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_lightlayer),
+ //KX_PYATTRIBUTE_INT_RW("lightlayer", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_lightlayer),
KX_PYATTRIBUTE_BOOL_RW("transparent", KX_PolygonMaterial, m_alpha),
KX_PYATTRIBUTE_BOOL_RW("zsort", KX_PolygonMaterial, m_zsort),
@@ -208,8 +239,13 @@ PyAttributeDef KX_PolygonMaterial::Attributes[] = {
};
PyTypeObject KX_PolygonMaterial::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_PolygonMaterial",
sizeof(PyObjectPlus_Proxy),
0,
@@ -237,6 +273,10 @@ PyObject* KX_PolygonMaterial::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
+PyObject* KX_PolygonMaterial::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
+
int KX_PolygonMaterial::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(PyObjectPlus);
@@ -346,10 +386,10 @@ int KX_PolygonMaterial::pyattr_set_diffuse(void *self_v, const KX_PYATTRIBUTE_DE
MT_Vector3 vec;
if (!PyVecTo(value, vec))
- return -1;
+ return PY_SET_ATTR_FAIL;
self->m_diffuse= vec;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_PolygonMaterial::pyattr_get_specular(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
@@ -364,8 +404,8 @@ int KX_PolygonMaterial::pyattr_set_specular(void *self_v, const KX_PYATTRIBUTE_D
MT_Vector3 vec;
if (!PyVecTo(value, vec))
- return -1;
+ return PY_SET_ATTR_FAIL;
self->m_specular= vec;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.h b/source/gameengine/Ketsji/KX_PolygonMaterial.h
index 9865a66e836..89ecb026da9 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.h
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.h
@@ -53,14 +53,14 @@ private:
MTFace* m_tface;
unsigned int* m_mcol;
Material* m_material;
-
PyObject* m_pymaterial;
mutable int m_pass;
public:
-
- KX_PolygonMaterial(const STR_String &texname,
+ KX_PolygonMaterial(PyTypeObject *T = &Type);
+ void Initialize(const STR_String &texname,
Material* ma,
+ int materialindex,
int tile,
int tilexrep,
int tileyrep,
@@ -70,8 +70,8 @@ public:
bool zsort,
int lightlayer,
struct MTFace* tface,
- unsigned int* mcol,
- PyTypeObject *T = &Type);
+ unsigned int* mcol);
+
virtual ~KX_PolygonMaterial();
/**
@@ -107,8 +107,8 @@ public:
{
return m_mcol;
}
-
-
+ virtual void GetMaterialRGBAColor(unsigned char *rgba) const;
+
KX_PYMETHOD_DOC(KX_PolygonMaterial, updateTexture);
KX_PYMETHOD_DOC(KX_PolygonMaterial, setTexture);
KX_PYMETHOD_DOC(KX_PolygonMaterial, activate);
@@ -117,6 +117,7 @@ public:
KX_PYMETHOD_DOC(KX_PolygonMaterial, loadProgram);
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
virtual PyObject* py_repr(void) { return PyString_FromString(m_material ? ((ID *)m_material)->name+2 : ""); }
diff --git a/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp b/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
index 2c65c184a9c..a098d99864f 100644
--- a/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
+++ b/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
@@ -33,6 +33,7 @@
#include "KX_PhysicsObjectWrapper.h"
#include "PHY_IPhysicsController.h"
#include "PHY_IVehicle.h"
+#include "MT_Matrix3x3.h"
#include "PyObjectPlus.h"
@@ -404,6 +405,8 @@ static PyObject* gPyCreateConstraint(PyObject* self,
int physicsid=0,physicsid2 = 0,constrainttype=0,extrainfo=0;
int len = PyTuple_Size(args);
int success = 1;
+ int flag = 0;
+
float pivotX=1,pivotY=1,pivotZ=1,axisX=0,axisY=0,axisZ=1;
if (len == 3)
{
@@ -420,6 +423,11 @@ static PyObject* gPyCreateConstraint(PyObject* self,
success = PyArg_ParseTuple(args,"iiiffffff",&physicsid,&physicsid2,&constrainttype,
&pivotX,&pivotY,&pivotZ,&axisX,&axisY,&axisZ);
}
+ else if (len == 10)
+ {
+ success = PyArg_ParseTuple(args,"iiiffffffi",&physicsid,&physicsid2,&constrainttype,
+ &pivotX,&pivotY,&pivotZ,&axisX,&axisY,&axisZ,&flag);
+ }
else if (len==4)
{
success = PyArg_ParseTuple(args,"iiii",&physicsid,&physicsid2,&constrainttype,&extrainfo);
@@ -435,7 +443,31 @@ static PyObject* gPyCreateConstraint(PyObject* self,
PHY_IPhysicsController* physctrl2 = (PHY_IPhysicsController*) physicsid2;
if (physctrl) //TODO:check for existance of this pointer!
{
- int constraintid = PHY_GetActiveEnvironment()->createConstraint(physctrl,physctrl2,(enum PHY_ConstraintType)constrainttype,pivotX,pivotY,pivotZ,axisX,axisY,axisZ,0);
+ PHY_ConstraintType ct = (PHY_ConstraintType) constrainttype;
+ int constraintid =0;
+
+ if (ct == PHY_GENERIC_6DOF_CONSTRAINT)
+ {
+ //convert from euler angle into axis
+ float radsPerDeg = 6.283185307179586232f / 360.f;
+
+ //we need to pass a full constraint frame, not just axis
+ //localConstraintFrameBasis
+ MT_Matrix3x3 localCFrame(MT_Vector3(radsPerDeg*axisX,radsPerDeg*axisY,radsPerDeg*axisZ));
+ MT_Vector3 axis0 = localCFrame.getColumn(0);
+ MT_Vector3 axis1 = localCFrame.getColumn(1);
+ MT_Vector3 axis2 = localCFrame.getColumn(2);
+
+ constraintid = PHY_GetActiveEnvironment()->createConstraint(physctrl,physctrl2,(enum PHY_ConstraintType)constrainttype,
+ pivotX,pivotY,pivotZ,
+ (float)axis0.x(),(float)axis0.y(),(float)axis0.z(),
+ (float)axis1.x(),(float)axis1.y(),(float)axis1.z(),
+ (float)axis2.x(),(float)axis2.y(),(float)axis2.z(),flag);
+
+ } else
+ {
+ constraintid = PHY_GetActiveEnvironment()->createConstraint(physctrl,physctrl2,(enum PHY_ConstraintType)constrainttype,pivotX,pivotY,pivotZ,axisX,axisY,axisZ,0);
+ }
KX_ConstraintWrapper* wrap = new KX_ConstraintWrapper((enum PHY_ConstraintType)constrainttype,constraintid,PHY_GetActiveEnvironment());
@@ -565,6 +597,19 @@ static struct PyMethodDef physicsconstraints_methods[] = {
};
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef PhysicsConstraints_module_def = {
+ {}, /* m_base */
+ "PhysicsConstraints", /* m_name */
+ PhysicsConstraints_module_documentation, /* m_doc */
+ 0, /* m_size */
+ physicsconstraints_methods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
PyObject* initPythonConstraintBinding()
{
@@ -573,10 +618,24 @@ PyObject* initPythonConstraintBinding()
PyObject* m;
PyObject* d;
-
- m = Py_InitModule4("PhysicsConstraints", physicsconstraints_methods,
+ /* Use existing module where possible
+ * be careful not to init any runtime vars after this */
+ m = PyImport_ImportModule( "PhysicsConstraints" );
+ if(m) {
+ Py_DECREF(m);
+ return m;
+ }
+ else {
+ PyErr_Clear();
+
+#if (PY_VERSION_HEX >= 0x03000000)
+ m = PyModule_Create(&PhysicsConstraints_module_def);
+#else
+ m = Py_InitModule4("PhysicsConstraints", physicsconstraints_methods,
PhysicsConstraints_module_documentation,
(PyObject*)NULL,PYTHON_API_VERSION);
+#endif
+ }
// Add some symbolic constants to the module
d = PyModule_GetDict(m);
diff --git a/source/gameengine/Ketsji/KX_PyMath.cpp b/source/gameengine/Ketsji/KX_PyMath.cpp
index 0093a72808e..051d7ae7dba 100644
--- a/source/gameengine/Ketsji/KX_PyMath.cpp
+++ b/source/gameengine/Ketsji/KX_PyMath.cpp
@@ -75,9 +75,8 @@ bool PyObject_IsMT_Matrix(PyObject *pymat, unsigned int rank)
return false;
}
-bool PyOrientationTo(PyObject* pyval, MT_Matrix3x3 &mat, const char *error_prefix)
+bool PyOrientationTo(PyObject* pyval, MT_Matrix3x3 &rot, const char *error_prefix)
{
- MT_Matrix3x3 rot;
int size= PySequence_Size(pyval);
if (size == 4)
diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h
index 00f7c5cad93..a7ce4bc6930 100644
--- a/source/gameengine/Ketsji/KX_PyMath.h
+++ b/source/gameengine/Ketsji/KX_PyMath.h
@@ -40,6 +40,7 @@
#include "MT_Matrix4x4.h"
#include "KX_Python.h"
+#include "PyObjectPlus.h"
inline unsigned int Size(const MT_Matrix4x4&) { return 4; }
inline unsigned int Size(const MT_Matrix3x3&) { return 3; }
@@ -116,6 +117,19 @@ bool PyVecTo(PyObject* pyval, T& vec)
return true;
}
+ else if (BGE_PROXY_CHECK_TYPE(pyval))
+ { /* note, include this check because PySequence_Check does too much introspection
+ * on the PyObject (like getting its __class__, on a BGE type this means searching up
+ * the parent list each time only to discover its not a sequence.
+ * GameObjects are often used as an alternative to vectors so this is a common case
+ * better to do a quick check for it, likely the error below will be ignored.
+ *
+ * This is not 'correct' since we have proxy type CListValues's which could
+ * contain floats/ints but there no cases of CValueLists being this way
+ */
+ PyErr_Format(PyExc_AttributeError, "expected a sequence type");
+ return false;
+ }
else if (PySequence_Check(pyval))
{
unsigned int numitems = PySequence_Size(pyval);
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index ffcf7d7162e..fc3e48f504c 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -49,6 +49,9 @@
#include "KX_KetsjiEngine.h"
#include "KX_RadarSensor.h"
#include "KX_RaySensor.h"
+#include "KX_SceneActuator.h"
+#include "KX_GameActuator.h"
+#include "KX_ParentActuator.h"
#include "KX_SCA_DynamicActuator.h"
#include "SCA_IInputDevice.h"
@@ -83,10 +86,16 @@
#include "KX_PythonInitTypes.h"
+/* we only need this to get a list of libraries from the main struct */
+#include "DNA_ID.h"
+
extern "C" {
- #include "Mathutils.h" // Blender.Mathutils module copied here so the blenderlayer can use.
#include "bpy_internal_import.h" /* from the blender python api, but we want to import text too! */
+#if PY_VERSION_HEX < 0x03000000
+ #include "Mathutils.h" // Blender.Mathutils module copied here so the blenderlayer can use.
+ #include "Geometry.h" // Blender.Geometry module copied here so the blenderlayer can use.
#include "BGL.h"
+#endif
}
#endif
@@ -100,13 +109,13 @@ extern "C" {
//#include "BPY_extern.h"
#endif
+#include "BKE_main.h"
#include "BKE_utildefines.h"
#include "BKE_global.h"
#include "BLI_blenlib.h"
#include "GPU_material.h"
static void setSandbox(TPythonSecurityLevel level);
-static void clearGameModules();
// 'local' copy of canvas ptr, for window height/width python scripts
static RAS_ICanvas* gp_Canvas = NULL;
@@ -114,6 +123,9 @@ static KX_Scene* gp_KetsjiScene = NULL;
static KX_KetsjiEngine* gp_KetsjiEngine = NULL;
static RAS_IRasterizer* gp_Rasterizer = NULL;
static char gp_GamePythonPath[FILE_MAXDIR + FILE_MAXFILE] = "";
+static char gp_GamePythonPathOrig[FILE_MAXDIR + FILE_MAXFILE] = ""; // not super happy about this, but we need to remember the first loaded file for the global/dict load save
+static PyObject *gp_OrigPythonSysPath= NULL;
+static PyObject *gp_OrigPythonSysModules= NULL;
void KX_RasterizerDrawDebugLine(const MT_Vector3& from,const MT_Vector3& to,const MT_Vector3& color)
{
@@ -220,13 +232,13 @@ static PyObject* gPyGetSpectrum(PyObject*)
for (int index = 0; index < 512; index++)
{
- PyList_SetItem(resultlist, index, PyFloat_FromDouble(spectrum[index]));
+ PyList_SET_ITEM(resultlist, index, PyFloat_FromDouble(spectrum[index]));
}
}
else {
for (int index = 0; index < 512; index++)
{
- PyList_SetItem(resultlist, index, PyFloat_FromDouble(0.0));
+ PyList_SET_ITEM(resultlist, index, PyFloat_FromDouble(0.0));
}
}
@@ -286,6 +298,36 @@ static PyObject* gPyGetLogicTicRate(PyObject*)
return PyFloat_FromDouble(KX_KetsjiEngine::GetTicRate());
}
+static PyObject* gPySetMaxLogicFrame(PyObject*, PyObject* args)
+{
+ int frame;
+ if (!PyArg_ParseTuple(args, "i:setMaxLogicFrame", &frame))
+ return NULL;
+
+ KX_KetsjiEngine::SetMaxLogicFrame(frame);
+ Py_RETURN_NONE;
+}
+
+static PyObject* gPyGetMaxLogicFrame(PyObject*)
+{
+ return PyInt_FromLong(KX_KetsjiEngine::GetMaxLogicFrame());
+}
+
+static PyObject* gPySetMaxPhysicsFrame(PyObject*, PyObject* args)
+{
+ int frame;
+ if (!PyArg_ParseTuple(args, "i:setMaxPhysicsFrame", &frame))
+ return NULL;
+
+ KX_KetsjiEngine::SetMaxPhysicsFrame(frame);
+ Py_RETURN_NONE;
+}
+
+static PyObject* gPyGetMaxPhysicsFrame(PyObject*)
+{
+ return PyInt_FromLong(KX_KetsjiEngine::GetMaxPhysicsFrame());
+}
+
static PyObject* gPySetPhysicsTicRate(PyObject*, PyObject* args)
{
float ticrate;
@@ -477,6 +519,10 @@ static struct PyMethodDef game_methods[] = {
{"setGravity",(PyCFunction) gPySetGravity, METH_O, (PY_METHODCHAR)"set Gravitation"},
{"getSpectrum",(PyCFunction) gPyGetSpectrum, METH_NOARGS, (PY_METHODCHAR)"get audio spectrum"},
{"stopDSP",(PyCFunction) gPyStopDSP, METH_VARARGS, (PY_METHODCHAR)"stop using the audio dsp (for performance reasons)"},
+ {"getMaxLogicFrame", (PyCFunction) gPyGetMaxLogicFrame, METH_NOARGS, (PY_METHODCHAR)"Gets the max number of logic frame per render frame"},
+ {"setMaxLogicFrame", (PyCFunction) gPySetMaxLogicFrame, METH_VARARGS, (PY_METHODCHAR)"Sets the max number of logic frame per render frame"},
+ {"getMaxPhysicsFrame", (PyCFunction) gPyGetMaxPhysicsFrame, METH_NOARGS, (PY_METHODCHAR)"Gets the max number of physics frame per render frame"},
+ {"setMaxPhysicsFrame", (PyCFunction) gPySetMaxPhysicsFrame, METH_VARARGS, (PY_METHODCHAR)"Sets the max number of physics farme per render frame"},
{"getLogicTicRate", (PyCFunction) gPyGetLogicTicRate, METH_NOARGS, (PY_METHODCHAR)"Gets the logic tic rate"},
{"setLogicTicRate", (PyCFunction) gPySetLogicTicRate, METH_VARARGS, (PY_METHODCHAR)"Sets the logic tic rate"},
{"getPhysicsTicRate", (PyCFunction) gPyGetPhysicsTicRate, METH_NOARGS, (PY_METHODCHAR)"Gets the physics tic rate"},
@@ -487,7 +533,6 @@ static struct PyMethodDef game_methods[] = {
{NULL, (PyCFunction) NULL, 0, NULL }
};
-
static PyObject* gPyGetWindowHeight(PyObject*, PyObject* args)
{
return PyInt_FromLong((gp_Canvas ? gp_Canvas->GetHeight() : 0));
@@ -636,6 +681,17 @@ static PyObject* gPySetMistColor(PyObject*, PyObject* value)
Py_RETURN_NONE;
}
+static PyObject* gPyDisableMist(PyObject*)
+{
+
+ if (!gp_Rasterizer) {
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setMistColor(color), Rasterizer not available");
+ return NULL;
+ }
+ gp_Rasterizer->DisableFog();
+
+ Py_RETURN_NONE;
+}
static PyObject* gPySetMistStart(PyObject*, PyObject* args)
@@ -724,7 +780,7 @@ static PyObject* gPyEnableMotionBlur(PyObject*, PyObject* args)
Py_RETURN_NONE;
}
-static PyObject* gPyDisableMotionBlur(PyObject*, PyObject* args)
+static PyObject* gPyDisableMotionBlur(PyObject*)
{
if (!gp_Rasterizer) {
PyErr_SetString(PyExc_RuntimeError, "Rasterizer.disableMotionBlur(), Rasterizer not available");
@@ -780,16 +836,17 @@ static PyObject* gPySetGLSLMaterialSetting(PyObject*,
/* display lists and GLSL materials need to be remade */
if(G.fileflags != fileflags) {
+ GPU_materials_free();
if(gp_KetsjiEngine) {
KX_SceneList *scenes = gp_KetsjiEngine->CurrentScenes();
KX_SceneList::iterator it;
for(it=scenes->begin(); it!=scenes->end(); it++)
- if((*it)->GetBucketManager())
+ if((*it)->GetBucketManager()) {
(*it)->GetBucketManager()->ReleaseDisplayLists();
+ (*it)->GetBucketManager()->ReleaseMaterials();
+ }
}
-
- GPU_materials_free();
}
Py_RETURN_NONE;
@@ -850,7 +907,7 @@ static PyObject* gPyGetMaterialType(PyObject*)
{
int flag;
- if(G.fileflags & (G_FILE_GAME_MAT|G_FILE_GAME_MAT_GLSL))
+ if(G.fileflags & G_FILE_GAME_MAT_GLSL)
flag = KX_BLENDER_GLSL_MATERIAL;
else if(G.fileflags & G_FILE_GAME_MAT)
flag = KX_BLENDER_MULTITEX_MATERIAL;
@@ -904,11 +961,12 @@ static struct PyMethodDef rasterizer_methods[] = {
METH_VARARGS, "setMousePosition(int x,int y)"},
{"setBackgroundColor",(PyCFunction)gPySetBackgroundColor,METH_O,"set Background Color (rgb)"},
{"setAmbientColor",(PyCFunction)gPySetAmbientColor,METH_O,"set Ambient Color (rgb)"},
+ {"disableMist",(PyCFunction)gPyDisableMist,METH_NOARGS,"turn off mist"},
{"setMistColor",(PyCFunction)gPySetMistColor,METH_O,"set Mist Color (rgb)"},
{"setMistStart",(PyCFunction)gPySetMistStart,METH_VARARGS,"set Mist Start(rgb)"},
{"setMistEnd",(PyCFunction)gPySetMistEnd,METH_VARARGS,"set Mist End(rgb)"},
{"enableMotionBlur",(PyCFunction)gPyEnableMotionBlur,METH_VARARGS,"enable motion blur"},
- {"disableMotionBlur",(PyCFunction)gPyDisableMotionBlur,METH_VARARGS,"disable motion blur"},
+ {"disableMotionBlur",(PyCFunction)gPyDisableMotionBlur,METH_NOARGS,"disable motion blur"},
{"setEyeSeparation", (PyCFunction) gPySetEyeSeparation, METH_VARARGS, "set the eye separation for stereo mode"},
@@ -938,7 +996,19 @@ static char Rasterizer_module_documentation[] =
"This is the Python API for the game engine of Rasterizer"
;
-
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef GameLogic_module_def = {
+ {}, /* m_base */
+ "GameLogic", /* m_name */
+ GameLogic_module_documentation, /* m_doc */
+ 0, /* m_size */
+ game_methods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack to get gravity hook
{
@@ -950,12 +1020,29 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
gp_KetsjiScene = scene;
gUseVisibilityTemp=false;
-
- // Create the module and add the functions
- m = Py_InitModule4("GameLogic", game_methods,
- GameLogic_module_documentation,
- (PyObject*)NULL,PYTHON_API_VERSION);
-
+
+ PyObjectPlus::ClearDeprecationWarning(); /* Not that nice to call here but makes sure warnings are reset between loading scenes */
+
+ /* Use existing module where possible
+ * be careful not to init any runtime vars after this */
+ m = PyImport_ImportModule( "GameLogic" );
+ if(m) {
+ Py_DECREF(m);
+ return m;
+ }
+ else {
+ PyErr_Clear();
+
+ // Create the module and add the functions
+#if (PY_VERSION_HEX >= 0x03000000)
+ m = PyModule_Create(&GameLogic_module_def);
+#else
+ m = Py_InitModule4("GameLogic", game_methods,
+ GameLogic_module_documentation,
+ (PyObject*)NULL,PYTHON_API_VERSION);
+#endif
+ }
+
// Add some symbolic constants to the module
d = PyModule_GetDict(m);
@@ -1172,6 +1259,28 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_LOCAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCAL);
KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_DOROTFH, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DOROTFH);
+ /* Game Actuator Modes */
+ KX_MACRO_addTypesToDict(d, KX_GAME_LOAD, KX_GameActuator::KX_GAME_LOAD);
+ KX_MACRO_addTypesToDict(d, KX_GAME_START, KX_GameActuator::KX_GAME_START);
+ KX_MACRO_addTypesToDict(d, KX_GAME_RESTART, KX_GameActuator::KX_GAME_RESTART);
+ KX_MACRO_addTypesToDict(d, KX_GAME_QUIT, KX_GameActuator::KX_GAME_QUIT);
+ KX_MACRO_addTypesToDict(d, KX_GAME_SAVECFG, KX_GameActuator::KX_GAME_SAVECFG);
+ KX_MACRO_addTypesToDict(d, KX_GAME_LOADCFG, KX_GameActuator::KX_GAME_LOADCFG);
+
+ /* Scene Actuator Modes */
+ KX_MACRO_addTypesToDict(d, KX_SCENE_RESTART, KX_SceneActuator::KX_SCENE_RESTART);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_SET_SCENE, KX_SceneActuator::KX_SCENE_SET_SCENE);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_SET_CAMERA, KX_SceneActuator::KX_SCENE_SET_CAMERA);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_ADD_FRONT_SCENE, KX_SceneActuator::KX_SCENE_ADD_FRONT_SCENE);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_ADD_BACK_SCENE, KX_SceneActuator::KX_SCENE_ADD_BACK_SCENE);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_REMOVE_SCENE, KX_SceneActuator::KX_SCENE_REMOVE_SCENE);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_SUSPEND, KX_SceneActuator::KX_SCENE_SUSPEND);
+ KX_MACRO_addTypesToDict(d, KX_SCENE_RESUME, KX_SceneActuator::KX_SCENE_RESUME);
+
+ /* Parent Actuator Modes */
+ KX_MACRO_addTypesToDict(d, KX_PARENT_SET, KX_ParentActuator::KX_PARENT_SET);
+ KX_MACRO_addTypesToDict(d, KX_PARENT_REMOVE, KX_ParentActuator::KX_PARENT_REMOVE);
+
// Check for errors
if (PyErr_Occurred())
{
@@ -1238,7 +1347,7 @@ PyObject *KXpy_import(PyObject *self, PyObject *args)
/* quick hack for GamePython modules
TODO: register builtin modules properly by ExtendInittab */
if (!strcmp(name, "GameLogic") || !strcmp(name, "GameKeys") || !strcmp(name, "PhysicsConstraints") ||
- !strcmp(name, "Rasterizer") || !strcmp(name, "Mathutils") || !strcmp(name, "BGL")) {
+ !strcmp(name, "Rasterizer") || !strcmp(name, "Mathutils") || !strcmp(name, "BGL") || !strcmp(name, "Geometry")) {
return PyImport_ImportModuleEx(name, globals, locals, fromlist);
}
@@ -1359,20 +1468,141 @@ void setSandbox(TPythonSecurityLevel level)
}
}
+/* Explanation of
+ *
+ * - backupPySysObjects() : stores sys.path in gp_OrigPythonSysPath
+ * - initPySysObjects(main) : initializes the blendfile and library paths
+ * - restorePySysObjects() : restores sys.path from gp_OrigPythonSysPath
+ *
+ * These exist so the current blend dir "//" can always be used to import modules from.
+ * the reason we need a few functions for this is that python is not only used by the game engine
+ * so we cant just add to sys.path all the time, it would leave pythons state in a mess.
+ * It would also be incorrect since loading blend files for new levels etc would alwasy add to sys.path
+ *
+ * To play nice with blenders python, the sys.path is backed up and the current blendfile along
+ * with all its lib paths are added to the sys path.
+ * When loading a new blendfile, the original sys.path is restored and the new paths are added over the top.
+ */
+
+/**
+ * So we can have external modules mixed with our blend files.
+ */
+static void backupPySysObjects(void)
+{
+ PyObject *sys_path= PySys_GetObject("path"); /* should never fail */
+ PyObject *sys_mods= PySys_GetObject("modules"); /* should never fail */
+
+ /* paths */
+ Py_XDECREF(gp_OrigPythonSysPath); /* just incase its set */
+ gp_OrigPythonSysPath = PyList_GetSlice(sys_path, 0, INT_MAX); /* copy the list */
+
+ /* modules */
+ Py_XDECREF(gp_OrigPythonSysModules); /* just incase its set */
+ gp_OrigPythonSysModules = PyDict_Copy(sys_mods); /* copy the list */
+
+}
+
+/* for initPySysObjects only,
+ * takes a blend path and adds a scripts dir from it
+ *
+ * "/home/me/foo.blend" -> "/home/me/scripts"
+ */
+static void initPySysObjects__append(PyObject *sys_path, char *filename)
+{
+ PyObject *item;
+ char expanded[FILE_MAXDIR + FILE_MAXFILE];
+
+ BLI_split_dirfile_basic(filename, expanded, NULL); /* get the dir part of filename only */
+ BLI_convertstringcode(expanded, gp_GamePythonPath); /* filename from lib->filename is (always?) absolute, so this may not be needed but it wont hurt */
+ BLI_cleanup_file(gp_GamePythonPath, expanded); /* Dont use BLI_cleanup_dir because it adds a slash - BREAKS WIN32 ONLY */
+ item= PyString_FromString(expanded);
+
+// printf("SysPath - '%s', '%s', '%s'\n", expanded, filename, gp_GamePythonPath);
+
+ if(PySequence_Index(sys_path, item) == -1) {
+ PyErr_Clear(); /* PySequence_Index sets a ValueError */
+ PyList_Insert(sys_path, 0, item);
+ }
+
+ Py_DECREF(item);
+}
+static void initPySysObjects(Main *maggie)
+{
+ PyObject *sys_path= PySys_GetObject("path"); /* should never fail */
+
+ if (gp_OrigPythonSysPath==NULL) {
+ /* backup */
+ backupPySysObjects();
+ }
+ else {
+ /* get the original sys path when the BGE started */
+ PyList_SetSlice(sys_path, 0, INT_MAX, gp_OrigPythonSysPath);
+ }
+
+ Library *lib= (Library *)maggie->library.first;
+
+ while(lib) {
+ /* lib->name wont work in some cases (on win32),
+ * even when expanding with gp_GamePythonPath, using lib->filename is less trouble */
+ initPySysObjects__append(sys_path, lib->filename);
+ lib= (Library *)lib->id.next;
+ }
+
+ initPySysObjects__append(sys_path, gp_GamePythonPath);
+
+// fprintf(stderr, "\nNew Path: %d ", PyList_Size(sys_path));
+// PyObject_Print(sys_path, stderr, 0);
+}
+
+static void restorePySysObjects(void)
+{
+ if (gp_OrigPythonSysPath==NULL)
+ return;
+
+ PyObject *sys_path= PySys_GetObject("path"); /* should never fail */
+ PyObject *sys_mods= PySys_GetObject("modules"); /* should never fail */
+
+ /* paths */
+ PyList_SetSlice(sys_path, 0, INT_MAX, gp_OrigPythonSysPath);
+ Py_DECREF(gp_OrigPythonSysPath);
+ gp_OrigPythonSysPath= NULL;
+
+ /* modules */
+ PyDict_Clear(sys_mods);
+ PyDict_Update(sys_mods, gp_OrigPythonSysModules);
+ Py_DECREF(gp_OrigPythonSysModules);
+ gp_OrigPythonSysModules= NULL;
+
+
+// fprintf(stderr, "\nRestore Path: %d ", PyList_Size(sys_path));
+// PyObject_Print(sys_path, stderr, 0);
+}
+
/**
* Python is not initialised.
*/
PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecurityLevel level, Main *maggie, int argc, char** argv)
{
+ /* Yet another gotcha in the py api
+ * Cant run PySys_SetArgv more then once because this adds the
+ * binary dir to the sys.path each time.
+ * Id have thaught python being totally restarted would make this ok but
+ * somehow it remembers the sys.path - Campbell
+ */
+ static bool first_time = true;
+
+#if (PY_VERSION_HEX < 0x03000000)
STR_String pname = progname;
Py_SetProgramName(pname.Ptr());
+#endif
Py_NoSiteFlag=1;
Py_FrozenFlag=1;
Py_Initialize();
- if(argv) /* browser plugins dont currently set this */
+#if (PY_VERSION_HEX < 0x03000000)
+ if(argv && first_time) /* browser plugins dont currently set this */
PySys_SetArgv(argc, argv);
-
+#endif
//importBlenderModules()
setSandbox(level);
@@ -1380,24 +1610,37 @@ PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecur
/* XXX 2.5 bpy_import_main_set(maggie); */
+ initPySysObjects(maggie);
+
+ first_time = false;
+
+ PyObjectPlus::ClearDeprecationWarning();
+
PyObject* moduleobj = PyImport_AddModule("__main__");
return PyModule_GetDict(moduleobj);
}
void exitGamePlayerPythonScripting()
-{
- //clearGameModules(); // were closing python anyway
+{
+ /* since python restarts we cant let the python backup of the sys.path hang around in a global pointer */
+ restorePySysObjects(); /* get back the original sys.path and clear the backup */
+
Py_Finalize();
/* XXX 2.5 bpy_import_main_set(NULL); */
+ PyObjectPlus::ClearDeprecationWarning();
}
+
+
/**
* Python is already initialized.
*/
PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLevel level, Main *maggie)
{
+#if (PY_VERSION_HEX < 0x03000000)
STR_String pname = progname;
Py_SetProgramName(pname.Ptr());
+#endif
Py_NoSiteFlag=1;
Py_FrozenFlag=1;
@@ -1406,53 +1649,35 @@ PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLev
/* XXX 2.5 bpy_import_main_set(maggie); */
- /* run this to clear game modules and user modules which
- * may contain references to in game data */
- clearGameModules();
+ initPySysObjects(maggie);
+ PyObjectPlus::NullDeprecationWarning();
+
PyObject* moduleobj = PyImport_AddModule("__main__");
return PyModule_GetDict(moduleobj);
}
-static void clearModule(PyObject *modules, const char *name)
-{
- PyObject *mod= PyDict_GetItemString(modules, name);
-
- if (mod==NULL)
- return;
-
- PyDict_Clear(PyModule_GetDict(mod)); /* incase there are any circular refs */
- PyDict_DelItemString(modules, name);
-}
-
-static void clearGameModules()
-{
- /* Note, user modules could still reference these modules
- * but since the dict's are cleared their members wont be accessible */
-
- PyObject *modules= PySys_GetObject((char *)"modules");
- clearModule(modules, "Expression");
- clearModule(modules, "CValue");
- clearModule(modules, "PhysicsConstraints");
- clearModule(modules, "GameLogic");
- clearModule(modules, "Rasterizer");
- clearModule(modules, "GameKeys");
- clearModule(modules, "VideoTexture");
- clearModule(modules, "Mathutils");
- clearModule(modules, "BGL");
- PyErr_Clear(); // incase some of these were alredy removed.
-
- /* clear user defined modules */
- /* XXX 2.5 bpy_text_clear_modules(); */
-}
-
void exitGamePythonScripting()
{
- clearGameModules();
+ restorePySysObjects(); /* get back the original sys.path and clear the backup */
/* XXX 2.5 bpy_import_main_set(NULL); */
+ PyObjectPlus::ClearDeprecationWarning();
}
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef Rasterizer_module_def = {
+ {}, /* m_base */
+ "Rasterizer", /* m_name */
+ Rasterizer_module_documentation, /* m_doc */
+ 0, /* m_size */
+ rasterizer_methods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
PyObject* initRasterizer(RAS_IRasterizer* rasty,RAS_ICanvas* canvas)
{
@@ -1464,10 +1689,25 @@ PyObject* initRasterizer(RAS_IRasterizer* rasty,RAS_ICanvas* canvas)
PyObject* d;
PyObject* item;
- // Create the module and add the functions
- m = Py_InitModule4("Rasterizer", rasterizer_methods,
+ /* Use existing module where possible
+ * be careful not to init any runtime vars after this */
+ m = PyImport_ImportModule( "Rasterizer" );
+ if(m) {
+ Py_DECREF(m);
+ return m;
+ }
+ else {
+ PyErr_Clear();
+
+ // Create the module and add the functions
+#if (PY_VERSION_HEX >= 0x03000000)
+ m = PyModule_Create(&Rasterizer_module_def);
+#else
+ m = Py_InitModule4("Rasterizer", rasterizer_methods,
Rasterizer_module_documentation,
(PyObject*)NULL,PYTHON_API_VERSION);
+#endif
+ }
// Add some symbolic constants to the module
d = PyModule_GetDict(m);
@@ -1517,7 +1757,12 @@ static PyObject* gPyEventToString(PyObject*, PyObject* value)
dict = PyModule_GetDict(mod);
while (PyDict_Next(dict, &pos, &key, &val)) {
+#if (PY_VERSION_HEX >= 0x03000000)
+ if (PyObject_RichCompareBool(value, val, Py_EQ)) {
+#else
if (PyObject_Compare(value, val)==0) {
+#endif
+
ret = key;
break;
}
@@ -1559,17 +1804,44 @@ static struct PyMethodDef gamekeys_methods[] = {
};
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef GameKeys_module_def = {
+ {}, /* m_base */
+ "GameKeys", /* m_name */
+ GameKeys_module_documentation, /* m_doc */
+ 0, /* m_size */
+ gamekeys_methods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
PyObject* initGameKeys()
{
PyObject* m;
PyObject* d;
PyObject* item;
-
- // Create the module and add the functions
- m = Py_InitModule4("GameKeys", gamekeys_methods,
+
+ /* Use existing module where possible */
+ m = PyImport_ImportModule( "GameKeys" );
+ if(m) {
+ Py_DECREF(m);
+ return m;
+ }
+ else {
+ PyErr_Clear();
+
+ // Create the module and add the functions
+#if (PY_VERSION_HEX >= 0x03000000)
+ m = PyModule_Create(&GameKeys_module_def);
+#else
+ m = Py_InitModule4("GameKeys", gamekeys_methods,
GameKeys_module_documentation,
(PyObject*)NULL,PYTHON_API_VERSION);
+#endif
+ }
// Add some symbolic constants to the module
d = PyModule_GetDict(m);
@@ -1698,15 +1970,26 @@ PyObject* initGameKeys()
return d;
}
+#if PY_VERSION_HEX < 0x03000000
PyObject* initMathutils()
{
return NULL; //XXX Mathutils_Init("Mathutils"); // Use as a top level module in BGE
}
+PyObject* initGeometry()
+{
+ return NULL; // XXX Geometry_Init("Geometry"); // Use as a top level module in BGE
+}
+
PyObject* initBGL()
{
return NULL; // XXX 2.5 BGL_Init("BGL"); // Use as a top level module in BGE
}
+#else // TODO Py3k conversion
+PyObject* initMathutils() {Py_INCREF(Py_None);return Py_None;}
+PyObject* initGeometry() {Py_INCREF(Py_None);return Py_None;}
+PyObject* initBGL() {Py_INCREF(Py_None);return Py_None;}
+#endif
void KX_SetActiveScene(class KX_Scene* scene)
{
@@ -1794,9 +2077,9 @@ int loadGamePythonConfig(char *marshal_buffer, int marshal_length)
void pathGamePythonConfig( char *path )
{
- int len = strlen(gp_GamePythonPath);
+ int len = strlen(gp_GamePythonPathOrig); // Always use the first loaded blend filename
- BLI_strncpy(path, gp_GamePythonPath, sizeof(gp_GamePythonPath));
+ BLI_strncpy(path, gp_GamePythonPathOrig, sizeof(gp_GamePythonPathOrig));
/* replace extension */
if (BLI_testextensie(path, ".blend")) {
@@ -1809,5 +2092,16 @@ void pathGamePythonConfig( char *path )
void setGamePythonPath(char *path)
{
BLI_strncpy(gp_GamePythonPath, path, sizeof(gp_GamePythonPath));
+ BLI_cleanup_file(NULL, gp_GamePythonPath); /* not absolutely needed but makes resolving path problems less confusing later */
+
+ if (gp_GamePythonPathOrig[0] == '\0')
+ BLI_strncpy(gp_GamePythonPathOrig, path, sizeof(gp_GamePythonPathOrig));
}
+// we need this so while blender is open (not blenderplayer)
+// loading new blendfiles will reset this on starting the
+// engine but loading blend files within the BGE wont overwrite gp_GamePythonPathOrig
+void resetGamePythonPath()
+{
+ gp_GamePythonPathOrig[0] == '\0';
+}
diff --git a/source/gameengine/Ketsji/KX_PythonInit.h b/source/gameengine/Ketsji/KX_PythonInit.h
index 11360197b95..8f102d13a18 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.h
+++ b/source/gameengine/Ketsji/KX_PythonInit.h
@@ -45,6 +45,7 @@ PyObject* initGameKeys();
PyObject* initRasterizer(class RAS_IRasterizer* rasty,class RAS_ICanvas* canvas);
PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecurityLevel level, struct Main *maggie, int argc, char** argv);
PyObject* initMathutils();
+PyObject* initGeometry();
PyObject* initBGL();
PyObject* initVideoTexture(void);
void exitGamePlayerPythonScripting();
@@ -52,6 +53,7 @@ PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLev
void exitGamePythonScripting();
void setGamePythonPath(char *path);
+void resetGamePythonPath();
void pathGamePythonConfig( char *path );
int saveGamePythonConfig( char **marshal_buffer);
int loadGamePythonConfig(char *marshal_buffer, int marshal_length);
diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
index dcd11b551a1..83c4dcbb34c 100644
--- a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
@@ -51,6 +51,7 @@
#include "KX_PhysicsObjectWrapper.h"
#include "KX_PolyProxy.h"
#include "KX_PolygonMaterial.h"
+#include "KX_PythonSeq.h"
#include "KX_SCA_AddObjectActuator.h"
#include "KX_SCA_EndObjectActuator.h"
#include "KX_SCA_ReplaceMeshActuator.h"
@@ -84,6 +85,7 @@
#include "SCA_PropertySensor.h"
#include "SCA_PythonController.h"
#include "SCA_RandomActuator.h"
+#include "SCA_IController.h"
void initPyObjectPlusType(PyTypeObject **parents)
@@ -225,9 +227,10 @@ void initPyTypes(void)
PyType_Ready_Attr(dict, SCA_RandomSensor);
PyType_Ready_Attr(dict, SCA_XNORController);
PyType_Ready_Attr(dict, SCA_XORController);
+ PyType_Ready_Attr(dict, SCA_IController);
-
-
+ /* Normal python type */
+ PyType_Ready(&KX_PythonSeq_Type);
}
#endif \ No newline at end of file
diff --git a/source/gameengine/Ketsji/KX_PythonSeq.cpp b/source/gameengine/Ketsji/KX_PythonSeq.cpp
new file mode 100644
index 00000000000..cc8021fc2e4
--- /dev/null
+++ b/source/gameengine/Ketsji/KX_PythonSeq.cpp
@@ -0,0 +1,382 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: none of this file.
+ *
+ * Contributor(s): Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ * Readonly sequence wrapper for lookups on logic bricks
+ */
+
+
+#include "KX_PythonSeq.h"
+#include "KX_GameObject.h"
+#include "SCA_ISensor.h"
+#include "SCA_IController.h"
+#include "SCA_IActuator.h"
+
+
+PyObject *KX_PythonSeq_CreatePyObject( PyObject *base, short type )
+{
+ KX_PythonSeq *seq = PyObject_NEW( KX_PythonSeq, &KX_PythonSeq_Type);
+ seq->base = base;
+ Py_INCREF(base); /* so we can always access to check if its valid */
+ seq->type = type;
+ seq->iter = -1; /* init */
+ return (PyObject *)seq;
+ }
+
+ static void KX_PythonSeq_dealloc( KX_PythonSeq * self )
+{
+ Py_DECREF(self->base);
+ PyObject_DEL( self );
+}
+
+static Py_ssize_t KX_PythonSeq_len( PyObject * self )
+{
+ PyObjectPlus *self_plus= BGE_PROXY_REF(((KX_PythonSeq *)self)->base);
+
+ if(self_plus==NULL) {
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
+ return -1;
+ }
+
+ switch(((KX_PythonSeq *)self)->type) {
+ case KX_PYGENSEQ_CONT_TYPE_SENSORS:
+ return ((SCA_IController *)self_plus)->GetLinkedSensors().size();
+ case KX_PYGENSEQ_CONT_TYPE_ACTUATORS:
+ return ((SCA_IController *)self_plus)->GetLinkedActuators().size();
+ case KX_PYGENSEQ_OB_TYPE_SENSORS:
+ return ((KX_GameObject *)self_plus)->GetSensors().size();
+ case KX_PYGENSEQ_OB_TYPE_CONTROLLERS:
+ return ((KX_GameObject *)self_plus)->GetControllers().size();
+ case KX_PYGENSEQ_OB_TYPE_ACTUATORS:
+ return ((KX_GameObject *)self_plus)->GetActuators().size();
+ default:
+ /* Should never happen */
+ PyErr_SetString(PyExc_SystemError, "invalid type, internal error");
+ return -1;
+ }
+}
+
+static PyObject *KX_PythonSeq_getIndex(PyObject* self, int index)
+{
+ PyObjectPlus *self_plus= BGE_PROXY_REF(((KX_PythonSeq *)self)->base);
+
+ if(self_plus==NULL) {
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ switch(((KX_PythonSeq *)self)->type) {
+ case KX_PYGENSEQ_CONT_TYPE_SENSORS:
+ {
+ vector<SCA_ISensor*>& linkedsensors = ((SCA_IController *)self_plus)->GetLinkedSensors();
+ if(index<0) index += linkedsensors.size();
+ if(index<0 || index>= linkedsensors.size()) {
+ PyErr_SetString(PyExc_IndexError, "seq[i]: index out of range");
+ return NULL;
+ }
+ return linkedsensors[index]->GetProxy();
+ }
+ case KX_PYGENSEQ_CONT_TYPE_ACTUATORS:
+ {
+ vector<SCA_IActuator*>& linkedactuators = ((SCA_IController *)self_plus)->GetLinkedActuators();
+ if(index<0) index += linkedactuators.size();
+ if(index<0 || index>= linkedactuators.size()) {
+ PyErr_SetString(PyExc_IndexError, "seq[i]: index out of range");
+ return NULL;
+ }
+ return linkedactuators[index]->GetProxy();
+ }
+ case KX_PYGENSEQ_OB_TYPE_SENSORS:
+ {
+ SCA_SensorList& linkedsensors= ((KX_GameObject *)self_plus)->GetSensors();
+ if(index<0) index += linkedsensors.size();
+ if(index<0 || index>= linkedsensors.size()) {
+ PyErr_SetString(PyExc_IndexError, "seq[i]: index out of range");
+ return NULL;
+ }
+ return linkedsensors[index]->GetProxy();
+ }
+ case KX_PYGENSEQ_OB_TYPE_CONTROLLERS:
+ {
+ SCA_ControllerList& linkedcontrollers= ((KX_GameObject *)self_plus)->GetControllers();
+ if(index<0) index += linkedcontrollers.size();
+ if(index<0 || index>= linkedcontrollers.size()) {
+ PyErr_SetString(PyExc_IndexError, "seq[i]: index out of range");
+ return NULL;
+ }
+ return linkedcontrollers[index]->GetProxy();
+ }
+ case KX_PYGENSEQ_OB_TYPE_ACTUATORS:
+ {
+ SCA_ActuatorList& linkedactuators= ((KX_GameObject *)self_plus)->GetActuators();
+ if(index<0) index += linkedactuators.size();
+ if(index<0 || index>= linkedactuators.size()) {
+ PyErr_SetString(PyExc_IndexError, "seq[i]: index out of range");
+ return NULL;
+ }
+ return linkedactuators[index]->GetProxy();
+ }
+ }
+
+ PyErr_SetString(PyExc_SystemError, "invalid sequence type, this is a bug");
+ return NULL;
+}
+
+
+static PyObject * KX_PythonSeq_subscript(PyObject * self, PyObject *key)
+{
+ PyObjectPlus *self_plus= BGE_PROXY_REF(((KX_PythonSeq *)self)->base);
+ char *name = NULL;
+
+ if(self_plus==NULL) {
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ if (PyInt_Check(key)) {
+ return KX_PythonSeq_getIndex(self, PyInt_AS_LONG( key ));
+ } else if ( PyString_Check(key) ) {
+ name = PyString_AsString( key );
+ } else {
+ PyErr_SetString( PyExc_TypeError, "expected a string or an index" );
+ return NULL;
+ }
+
+ switch(((KX_PythonSeq *)self)->type) {
+ case KX_PYGENSEQ_CONT_TYPE_SENSORS:
+ {
+ vector<SCA_ISensor*>& linkedsensors = ((SCA_IController *)self_plus)->GetLinkedSensors();
+ SCA_ISensor* sensor;
+ for (unsigned int index=0;index<linkedsensors.size();index++) {
+ sensor = linkedsensors[index];
+ if (sensor->GetName() == name)
+ return sensor->GetProxy();
+ }
+ break;
+ }
+ case KX_PYGENSEQ_CONT_TYPE_ACTUATORS:
+ {
+ vector<SCA_IActuator*>& linkedactuators = ((SCA_IController *)self_plus)->GetLinkedActuators();
+ SCA_IActuator* actuator;
+ for (unsigned int index=0;index<linkedactuators.size();index++) {
+ actuator = linkedactuators[index];
+ if (actuator->GetName() == name)
+ return actuator->GetProxy();
+ }
+ break;
+ }
+ case KX_PYGENSEQ_OB_TYPE_SENSORS:
+ {
+ SCA_SensorList& linkedsensors= ((KX_GameObject *)self_plus)->GetSensors();
+ SCA_ISensor *sensor;
+ for (unsigned int index=0;index<linkedsensors.size();index++) {
+ sensor= linkedsensors[index];
+ if (sensor->GetName() == name)
+ return sensor->GetProxy();
+ }
+ break;
+ }
+ case KX_PYGENSEQ_OB_TYPE_CONTROLLERS:
+ {
+ SCA_ControllerList& linkedcontrollers= ((KX_GameObject *)self_plus)->GetControllers();
+ SCA_IController *controller;
+ for (unsigned int index=0;index<linkedcontrollers.size();index++) {
+ controller= linkedcontrollers[index];
+ if (controller->GetName() == name)
+ return controller->GetProxy();
+ }
+ break;
+ }
+ case KX_PYGENSEQ_OB_TYPE_ACTUATORS:
+ {
+ SCA_ActuatorList& linkedactuators= ((KX_GameObject *)self_plus)->GetActuators();
+ SCA_IActuator *actuator;
+ for (unsigned int index=0;index<linkedactuators.size();index++) {
+ actuator= linkedactuators[index];
+ if (actuator->GetName() == name)
+ return actuator->GetProxy();
+ }
+ break;
+ }
+ }
+
+ PyErr_Format( PyExc_KeyError, "requested item \"%s\" does not exist", name);
+ return NULL;
+}
+
+static PyMappingMethods KX_PythonSeq_as_mapping = {
+ KX_PythonSeq_len, /* mp_length */
+ KX_PythonSeq_subscript, /* mp_subscript */
+ 0, /* mp_ass_subscript */
+};
+
+
+/*
+ * Initialize the interator index
+ */
+
+static PyObject *KX_PythonSeq_getIter(KX_PythonSeq *self)
+{
+ if(BGE_PROXY_REF(self->base)==NULL) {
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ /* create a new iterator if were alredy using this one */
+ if (self->iter == -1) {
+ self->iter = 0;
+ Py_INCREF(self);
+ return (PyObject *)self;
+ } else {
+ return KX_PythonSeq_CreatePyObject(self->base, self->type);
+ }
+ }
+
+
+/*
+ * Return next KX_PythonSeq iter.
+ */
+
+static PyObject *KX_PythonSeq_nextIter(KX_PythonSeq *self)
+{
+ PyObject *object = KX_PythonSeq_getIndex((PyObject *)self, self->iter);
+
+ self->iter++;
+ if( object==NULL ) {
+ self->iter= -1; /* for reuse */
+ PyErr_SetString(PyExc_StopIteration, "iterator at end");
+ }
+ return object; /* can be NULL for end of iterator */
+}
+
+
+static int KX_PythonSeq_compare( KX_PythonSeq * a, KX_PythonSeq * b ) /* TODO - python3.x wants richcmp */
+{
+ return ( a->type == b->type && a->base == b->base) ? 0 : -1;
+}
+
+/*
+ * repr function
+ * convert to a list and get its string value
+ */
+static PyObject *KX_PythonSeq_repr( KX_PythonSeq * self )
+{
+ PyObject *list = PySequence_List((PyObject *)self);
+ PyObject *repr = PyObject_Repr(list);
+ Py_DECREF(list);
+ return repr;
+}
+
+
+/*****************************************************************************/
+/* Python KX_PythonSeq_Type structure definition: */
+/*****************************************************************************/
+PyTypeObject KX_PythonSeq_Type = {
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
+ /* For printing, in format "<module>.<name>" */
+ "KX_PythonSeq", /* char *tp_name; */
+ sizeof( KX_PythonSeq ), /* int tp_basicsize; */
+ 0, /* tp_itemsize; For allocation */
+
+ /* Methods to implement standard operations */
+
+ ( destructor ) KX_PythonSeq_dealloc, /* destructor tp_dealloc; */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
+ ( cmpfunc ) KX_PythonSeq_compare, /* cmpfunc tp_compare; */
+ ( reprfunc ) KX_PythonSeq_repr, /* reprfunc tp_repr; */
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ NULL, /* PySequenceMethods *tp_as_sequence; */
+ &KX_PythonSeq_as_mapping, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ ( getiterfunc) KX_PythonSeq_getIter, /* getiterfunc tp_iter; */
+ ( iternextfunc ) KX_PythonSeq_nextIter, /* iternextfunc tp_iternext; */
+
+ /*** Attribute descriptor and subclassing stuff ***/
+ NULL, /* struct PyMethodDef *tp_methods; */
+ NULL, /* struct PyMemberDef *tp_members; */
+ NULL, /* struct PyGetSetDef *tp_getset; */
+ NULL, /* struct _typeobject *tp_base; */
+ NULL, /* PyObject *tp_dict; */
+ NULL, /* descrgetfunc tp_descr_get; */
+ NULL, /* descrsetfunc tp_descr_set; */
+ 0, /* long tp_dictoffset; */
+ NULL, /* initproc tp_init; */
+ NULL, /* allocfunc tp_alloc; */
+ NULL, /* newfunc tp_new; */
+ /* Low-level free-memory routine */
+ NULL, /* freefunc tp_free; */
+ /* For PyObject_IS_GC */
+ NULL, /* inquiry tp_is_gc; */
+ NULL, /* PyObject *tp_bases; */
+ /* method resolution order */
+ NULL, /* PyObject *tp_mro; */
+ NULL, /* PyObject *tp_cache; */
+ NULL, /* PyObject *tp_subclasses; */
+ NULL, /* PyObject *tp_weaklist; */
+ NULL
+};
diff --git a/source/gameengine/Ketsji/KX_PythonSeq.h b/source/gameengine/Ketsji/KX_PythonSeq.h
new file mode 100644
index 00000000000..15a016224a9
--- /dev/null
+++ b/source/gameengine/Ketsji/KX_PythonSeq.h
@@ -0,0 +1,60 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ * Readonly sequence wrapper for lookups on logic bricks
+ */
+
+#ifndef _adr_py_seq_h_ // only process once,
+#define _adr_py_seq_h_ // even if multiply included
+
+#include "PyObjectPlus.h"
+
+// -------------------------
+enum KX_PYGENSEQ_TYPE {
+ KX_PYGENSEQ_CONT_TYPE_SENSORS,
+ KX_PYGENSEQ_CONT_TYPE_ACTUATORS,
+ KX_PYGENSEQ_OB_TYPE_SENSORS,
+ KX_PYGENSEQ_OB_TYPE_CONTROLLERS,
+ KX_PYGENSEQ_OB_TYPE_ACTUATORS
+};
+
+/* The Main PyType Object defined in Main.c */
+extern PyTypeObject KX_PythonSeq_Type;
+
+#define BPy_KX_PythonSeq_Check(v) \
+ ((v)->ob_type == &KX_PythonSeq_Type)
+
+typedef struct {
+ PyObject_VAR_HEAD
+ PyObject *base;
+ short type;
+ short iter;
+} KX_PythonSeq;
+
+PyObject *KX_PythonSeq_CreatePyObject(PyObject *base, short type);
+
+#endif // _adr_py_seq_h_
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.cpp b/source/gameengine/Ketsji/KX_RadarSensor.cpp
index 8277e7ef19c..064dc9126ac 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.cpp
+++ b/source/gameengine/Ketsji/KX_RadarSensor.cpp
@@ -30,6 +30,7 @@
#include "KX_GameObject.h"
#include "KX_PyMath.h"
#include "PHY_IPhysicsController.h"
+#include "PHY_IMotionState.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -66,7 +67,7 @@ KX_RadarSensor::KX_RadarSensor(SCA_EventManager* eventmgr,
m_coneheight(coneheight),
m_axis(axis)
{
- m_client_info->m_type = KX_ClientObjectInfo::RADAR;
+ m_client_info->m_type = KX_ClientObjectInfo::SENSOR;
//m_client_info->m_clientobject = gameobj;
//m_client_info->m_auxilary_info = NULL;
//sumoObj->setClientObject(&m_client_info);
@@ -80,35 +81,10 @@ KX_RadarSensor::~KX_RadarSensor()
CValue* KX_RadarSensor::GetReplica()
{
KX_RadarSensor* replica = new KX_RadarSensor(*this);
- replica->m_colliders = new CListValue();
- replica->Init();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
- replica->m_client_info = new KX_ClientObjectInfo(m_client_info->m_gameobject, KX_ClientObjectInfo::RADAR);
-
- if (replica->m_physCtrl)
- {
- replica->m_physCtrl = replica->m_physCtrl->GetReplica();
- if (replica->m_physCtrl)
- {
- replica->m_physCtrl->setNewClientInfo(replica->m_client_info);
- }
- }
-
- //todo: make sure replication works fine!
- //>m_sumoObj = new SM_Object(DT_NewCone(m_coneradius, m_coneheight),NULL,NULL,NULL);
- //replica->m_sumoObj->setMargin(m_Margin);
- //replica->m_sumoObj->setClientObject(replica->m_client_info);
- //Wrong: see KX_TouchSensor
- //bool parentUpdated = false;
- //((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL,parentUpdated);
- replica->SynchronizeTransform();
-
+ replica->ProcessReplica();
return replica;
}
-
/**
* Transforms the collision object. A cone is not correctly centered
* for usage. */
@@ -188,11 +164,13 @@ void KX_RadarSensor::SynchronizeTransform()
if (m_physCtrl)
{
- MT_Quaternion orn = trans.getRotation();
- MT_Point3 pos = trans.getOrigin();
- m_physCtrl->setPosition(pos[0],pos[1],pos[2]);
- m_physCtrl->setOrientation(orn[0],orn[1],orn[2],orn[3]);
- m_physCtrl->calcXform();
+ PHY_IMotionState* motionState = m_physCtrl->GetMotionState();
+ const MT_Point3& pos = trans.getOrigin();
+ float ori[12];
+ trans.getBasis().getValue(ori);
+ motionState->setWorldPosition(pos[0], pos[1], pos[2]);
+ motionState->setWorldOrientation(ori);
+ m_physCtrl->WriteMotionStateToDynamics(true);
}
}
@@ -212,9 +190,9 @@ PyObject* KX_RadarSensor::PyGetConeOrigin() {
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_cone_origin[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_cone_origin[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_cone_origin[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_cone_origin[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_cone_origin[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_cone_origin[2]));
return retVal;
}
@@ -228,9 +206,9 @@ PyObject* KX_RadarSensor::PyGetConeTarget() {
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_cone_target[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_cone_target[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_cone_target[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_cone_target[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_cone_target[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_cone_target[2]));
return retVal;
}
@@ -251,8 +229,13 @@ PyObject* KX_RadarSensor::PyGetConeHeight() {
/* Python Integration Hooks */
/* ------------------------------------------------------------------------- */
PyTypeObject KX_RadarSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_RadarSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -294,6 +277,7 @@ PyMethodDef KX_RadarSensor::Methods[] = {
PyAttributeDef KX_RadarSensor::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_ARRAY_RO("coneOrigin", KX_RadarSensor, m_cone_origin, 3),
KX_PYATTRIBUTE_FLOAT_ARRAY_RO("coneTarget", KX_RadarSensor, m_cone_target, 3),
+ KX_PYATTRIBUTE_FLOAT_RO("distance", KX_RadarSensor, m_coneheight),
KX_PYATTRIBUTE_FLOAT_RW("angle", 0, 360, KX_RadarSensor, m_coneradius),
KX_PYATTRIBUTE_INT_RW("axis", 0, 5, true, KX_RadarSensor, m_axis),
{NULL} //Sentinel
@@ -304,6 +288,10 @@ PyObject* KX_RadarSensor::py_getattro(PyObject *attr)
py_getattro_up(KX_NearSensor);
}
+PyObject* KX_RadarSensor::py_getattro_dict() {
+ py_getattro_dict_up(KX_NearSensor);
+}
+
int KX_RadarSensor::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(KX_NearSensor);
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.h b/source/gameengine/Ketsji/KX_RadarSensor.h
index c3a941696ce..2e5a0e68bed 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.h
+++ b/source/gameengine/Ketsji/KX_RadarSensor.h
@@ -90,7 +90,9 @@ public:
};
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
+ virtual sensortype GetSensorType() { return ST_RADAR; }
//Deprecated ----->
KX_PYMETHOD_DOC_NOARGS(KX_RadarSensor,GetConeOrigin);
diff --git a/source/gameengine/Ketsji/KX_RayEventManager.cpp b/source/gameengine/Ketsji/KX_RayEventManager.cpp
index 1af29151adf..50fa4f5e310 100644
--- a/source/gameengine/Ketsji/KX_RayEventManager.cpp
+++ b/source/gameengine/Ketsji/KX_RayEventManager.cpp
@@ -44,9 +44,10 @@ using namespace std;
void KX_RayEventManager::NextFrame()
{
- for (set<class SCA_ISensor*>::const_iterator i= m_sensors.begin();!(i==m_sensors.end());i++)
+ SG_DList::iterator<SCA_ISensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- (*i)->Activate(m_logicmgr, NULL);
+ (*it)->Activate(m_logicmgr);
}
}
diff --git a/source/gameengine/Ketsji/KX_RaySensor.cpp b/source/gameengine/Ketsji/KX_RaySensor.cpp
index 06c04dbf10d..78a61e9d95e 100644
--- a/source/gameengine/Ketsji/KX_RaySensor.cpp
+++ b/source/gameengine/Ketsji/KX_RaySensor.cpp
@@ -88,8 +88,7 @@ KX_RaySensor::~KX_RaySensor()
CValue* KX_RaySensor::GetReplica()
{
KX_RaySensor* replica = new KX_RaySensor(*this);
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
replica->Init();
return replica;
@@ -179,7 +178,7 @@ bool KX_RaySensor::NeedRayCast(KX_ClientObjectInfo* client)
return true;
}
-bool KX_RaySensor::Evaluate(CValue* event)
+bool KX_RaySensor::Evaluate()
{
bool result = false;
bool reset = m_reset && m_level;
@@ -321,8 +320,13 @@ bool KX_RaySensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_RaySensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_RaySensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -362,7 +366,7 @@ PyAttributeDef KX_RaySensor::Attributes[] = {
KX_PYATTRIBUTE_BOOL_RW("useMaterial", KX_RaySensor, m_bFindMaterial),
KX_PYATTRIBUTE_BOOL_RW("useXRay", KX_RaySensor, m_bXRay),
KX_PYATTRIBUTE_FLOAT_RW("range", 0, 10000, KX_RaySensor, m_distance),
- KX_PYATTRIBUTE_STRING_RW("property", 0, 100, false, KX_RaySensor, m_propertyname),
+ KX_PYATTRIBUTE_STRING_RW("propName", 0, 100, false, KX_RaySensor, m_propertyname),
KX_PYATTRIBUTE_INT_RW("axis", 0, 5, true, KX_RaySensor, m_axis),
KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitPosition", KX_RaySensor, m_hitPosition, 3),
KX_PYATTRIBUTE_FLOAT_ARRAY_RO("rayDirection", KX_RaySensor, m_rayDirection, 3),
@@ -404,9 +408,9 @@ PyObject* KX_RaySensor::PyGetHitPosition()
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_hitPosition[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_hitPosition[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_hitPosition[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_hitPosition[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_hitPosition[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_hitPosition[2]));
return retVal;
}
@@ -420,9 +424,9 @@ PyObject* KX_RaySensor::PyGetRayDirection()
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_rayDirection[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_rayDirection[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_rayDirection[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_rayDirection[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_rayDirection[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_rayDirection[2]));
return retVal;
}
@@ -436,9 +440,9 @@ PyObject* KX_RaySensor::PyGetHitNormal()
PyObject *retVal = PyList_New(3);
- PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_hitNormal[0]));
- PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_hitNormal[1]));
- PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_hitNormal[2]));
+ PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_hitNormal[0]));
+ PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_hitNormal[1]));
+ PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_hitNormal[2]));
return retVal;
}
@@ -449,6 +453,10 @@ PyObject* KX_RaySensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
+PyObject* KX_RaySensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int KX_RaySensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}
diff --git a/source/gameengine/Ketsji/KX_RaySensor.h b/source/gameengine/Ketsji/KX_RaySensor.h
index a5d7d15c60c..9efb046742f 100644
--- a/source/gameengine/Ketsji/KX_RaySensor.h
+++ b/source/gameengine/Ketsji/KX_RaySensor.h
@@ -67,7 +67,7 @@ public:
virtual ~KX_RaySensor();
virtual CValue* GetReplica();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual bool IsPositiveTrigger();
virtual void Init();
@@ -87,6 +87,7 @@ public:
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
index c45d89a2815..75435b97797 100644
--- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
@@ -86,7 +86,7 @@ KX_SCA_AddObjectActuator::~KX_SCA_AddObjectActuator()
if (m_OriginalObject)
m_OriginalObject->UnregisterActuator(this);
if (m_lastCreatedObject)
- m_lastCreatedObject->Release();
+ m_lastCreatedObject->UnregisterActuator(this);
}
@@ -124,7 +124,6 @@ CValue* KX_SCA_AddObjectActuator::GetReplica()
// this will copy properties and so on...
replica->ProcessReplica();
- CValue::AddDataToReplica(replica);
return replica;
}
@@ -145,6 +144,12 @@ bool KX_SCA_AddObjectActuator::UnlinkObject(SCA_IObject* clientobj)
m_OriginalObject = NULL;
return true;
}
+ if (clientobj == m_lastCreatedObject)
+ {
+ // this object is being deleted, we cannot continue to track it.
+ m_lastCreatedObject = NULL;
+ return true;
+ }
return false;
}
@@ -166,8 +171,13 @@ void KX_SCA_AddObjectActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_SCA_AddObjectActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SCA_AddObjectActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -231,7 +241,7 @@ int KX_SCA_AddObjectActuator::pyattr_set_object(void *self, const struct KX_PYAT
KX_GameObject *gameobj;
if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_SCA_AddObjectActuator"))
- return 1; // ConvertPythonToGameObject sets the error
+ return PY_SET_ATTR_FAIL; // ConvertPythonToGameObject sets the error
if (actuator->m_OriginalObject != NULL)
actuator->m_OriginalObject->UnregisterActuator(actuator);
@@ -241,7 +251,7 @@ int KX_SCA_AddObjectActuator::pyattr_set_object(void *self, const struct KX_PYAT
if (actuator->m_OriginalObject)
actuator->m_OriginalObject->RegisterActuator(actuator);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
PyObject* KX_SCA_AddObjectActuator::pyattr_get_objectLastCreated(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
@@ -259,6 +269,10 @@ PyObject* KX_SCA_AddObjectActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_SCA_AddObjectActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_SCA_AddObjectActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);
@@ -347,7 +361,7 @@ PyObject* KX_SCA_AddObjectActuator::PyGetObject(PyObject* args)
Py_RETURN_NONE;
if (ret_name_only)
- return PyString_FromString(m_OriginalObject->GetName());
+ return PyString_FromString(m_OriginalObject->GetName().ReadPtr());
else
return m_OriginalObject->GetProxy();
}
@@ -455,13 +469,21 @@ void KX_SCA_AddObjectActuator::InstantAddObject()
// keep a copy of the last object, to allow python scripters to change it
if (m_lastCreatedObject)
{
- //careful with destruction, it might still have outstanding collision callbacks
- m_scene->DelayedReleaseObject(m_lastCreatedObject);
- m_lastCreatedObject->Release();
+ //Let's not keep a reference to the object: it's bad, if the object is deleted
+ //this will force to keep a "zombie" in the game for no good reason.
+ //m_scene->DelayedReleaseObject(m_lastCreatedObject);
+ //m_lastCreatedObject->Release();
+
+ //Instead we use the registration mechanism
+ m_lastCreatedObject->UnregisterActuator(this);
+ m_lastCreatedObject = NULL;
}
m_lastCreatedObject = replica;
- m_lastCreatedObject->AddRef();
+ // no reference
+ //m_lastCreatedObject->AddRef();
+ // but registration
+ m_lastCreatedObject->RegisterActuator(this);
// finished using replica? then release it
replica->Release();
}
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
index 4ece5a6d83b..6746b7d1bc6 100644
--- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
@@ -111,6 +111,7 @@ public:
Update();
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
SCA_IObject*
diff --git a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
index 83dfdc2484c..a50764a54e6 100644
--- a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
@@ -50,8 +50,13 @@
PyTypeObject
KX_SCA_DynamicActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SCA_DynamicActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -85,7 +90,7 @@ PyMethodDef KX_SCA_DynamicActuator::Methods[] = {
};
PyAttributeDef KX_SCA_DynamicActuator::Attributes[] = {
- KX_PYATTRIBUTE_SHORT_RW("operation",0,4,false,KX_SCA_DynamicActuator,m_dyn_operation),
+ KX_PYATTRIBUTE_SHORT_RW("mode",0,4,false,KX_SCA_DynamicActuator,m_dyn_operation),
KX_PYATTRIBUTE_FLOAT_RW("mass",0.0,FLT_MAX,KX_SCA_DynamicActuator,m_setmass),
{ NULL } //Sentinel
};
@@ -96,6 +101,10 @@ PyObject* KX_SCA_DynamicActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_SCA_DynamicActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_SCA_DynamicActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);
@@ -112,7 +121,7 @@ KX_PYMETHODDEF_DOC(KX_SCA_DynamicActuator, setOperation,
"\t 3 = disable rigid body\n"
"Change the dynamic status of the parent object.\n")
{
- ShowDeprecationWarning("setOperation()", "the operation property");
+ ShowDeprecationWarning("setOperation()", "the mode property");
int dyn_operation;
if (!PyArg_ParseTuple(args, "i:setOperation", &dyn_operation))
@@ -132,7 +141,7 @@ KX_PYMETHODDEF_DOC(KX_SCA_DynamicActuator, getOperation,
"Returns the operation type of this actuator.\n"
)
{
- ShowDeprecationWarning("getOperation()", "the operation property");
+ ShowDeprecationWarning("getOperation()", "the mode property");
return PyInt_FromLong((long)m_dyn_operation);
}
@@ -210,10 +219,6 @@ CValue* KX_SCA_DynamicActuator::GetReplica()
return NULL;
replica->ProcessReplica();
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
return replica;
};
diff --git a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
index 99855124bdb..4add707f8cd 100644
--- a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
@@ -75,6 +75,7 @@ class KX_SCA_DynamicActuator : public SCA_IActuator
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. setOperation */
diff --git a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
index 3b42577810e..728254e7f48 100644
--- a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
@@ -82,8 +82,6 @@ CValue* KX_SCA_EndObjectActuator::GetReplica()
if (replica == NULL) return NULL;
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
};
@@ -94,8 +92,13 @@ CValue* KX_SCA_EndObjectActuator::GetReplica()
/* ------------------------------------------------------------------------- */
PyTypeObject KX_SCA_EndObjectActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SCA_EndObjectActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -136,4 +139,8 @@ PyObject* KX_SCA_EndObjectActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_SCA_EndObjectActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
/* eof */
diff --git a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
index 2940246f443..70d72f1f8da 100644
--- a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
@@ -65,6 +65,7 @@ class KX_SCA_EndObjectActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
}; /* end of class KX_EditObjectActuator : public SCA_PropertyActuator */
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
index 38f8d581d55..00842d7012a 100644
--- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
@@ -53,8 +53,13 @@
PyTypeObject
KX_SCA_ReplaceMeshActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SCA_ReplaceMeshActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -99,6 +104,10 @@ PyObject* KX_SCA_ReplaceMeshActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_SCA_ReplaceMeshActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_SCA_ReplaceMeshActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);
@@ -119,10 +128,10 @@ int KX_SCA_ReplaceMeshActuator::pyattr_set_mesh(void *self, const struct KX_PYAT
RAS_MeshObject* new_mesh;
if (!ConvertPythonToMesh(value, &new_mesh, true, "actuator.mesh = value: KX_SCA_ReplaceMeshActuator"))
- return 1;
+ return PY_SET_ATTR_FAIL;
actuator->m_mesh = new_mesh;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
/* 1. setMesh */
@@ -213,9 +222,6 @@ CValue* KX_SCA_ReplaceMeshActuator::GetReplica()
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
return replica;
};
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
index 7a18df2356d..0e7f7852701 100644
--- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
@@ -72,6 +72,7 @@ class KX_SCA_ReplaceMeshActuator : public SCA_IActuator
void InstantReplaceMesh();
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
static PyObject* pyattr_get_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp b/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
index 0e7571031e8..cb933419c57 100644
--- a/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
+++ b/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
@@ -125,7 +125,9 @@ UpdateChildCoordinates(
else {
child->SetWorldFromLocalTransform();
}
- child->SetModified(false);
+ child->ClearModified();
+ // this node must always be updated, so reschedule it for next time
+ child->ActivateRecheduleUpdateCallback();
return valid_parent_transform;
}
diff --git a/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp b/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
index c3b0c21c8e0..c49b6d671a7 100644
--- a/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
+++ b/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
@@ -63,7 +63,7 @@ UpdateChildCoordinates(
if (parent==NULL) { /* Simple case */
child->SetWorldFromLocalTransform();
- child->SetModified(false);
+ child->ClearModified();
return true; //false;
}
else {
@@ -75,7 +75,7 @@ UpdateChildCoordinates(
child->SetWorldScale(p_world_scale * child->GetLocalScale());
child->SetWorldOrientation(p_world_rotation * child->GetLocalOrientation());
child->SetWorldPosition(p_world_pos + p_world_scale * (p_world_rotation * child->GetLocalPosition()));
- child->SetModified(false);
+ child->ClearModified();
return true;
}
}
@@ -137,7 +137,7 @@ UpdateChildCoordinates(
child->SetWorldPosition(child->GetLocalPosition());
child->SetWorldOrientation(child->GetLocalOrientation());
- child->SetModified(false);
+ child->ClearModified();
return true; //parent != NULL;
}
@@ -259,7 +259,9 @@ UpdateChildCoordinates(
child->SetWorldScale(child_w_scale);
child->SetWorldPosition(child_w_pos);
child->SetWorldOrientation(child_w_rotation);
- child->SetModified(false);
+ child->ClearModified();
+ // this node must always be updated, so reschedule it for next time
+ child->ActivateRecheduleUpdateCallback();
return true; //parent != NULL;
}
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index aa7bd65f240..c0d8a7090c4 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -34,7 +34,7 @@
#include "KX_Scene.h"
#include "MT_assert.h"
-
+#include "SND_Scene.h"
#include "KX_KetsjiEngine.h"
#include "KX_BlenderMaterial.h"
#include "RAS_IPolygonMaterial.h"
@@ -80,6 +80,7 @@
#include "KX_BlenderSceneConverter.h"
#include "KX_MotionState.h"
+#include "BL_ModifierDeformer.h"
#include "BL_ShapeDeformer.h"
#include "BL_DeformableGameObject.h"
@@ -110,7 +111,22 @@ void* KX_SceneDestructionFunc(SG_IObject* node,void* gameobj,void* scene)
return NULL;
};
-SG_Callbacks KX_Scene::m_callbacks = SG_Callbacks(KX_SceneReplicationFunc,KX_SceneDestructionFunc,KX_GameObject::UpdateTransformFunc);
+bool KX_Scene::KX_ScenegraphUpdateFunc(SG_IObject* node,void* gameobj,void* scene)
+{
+ return ((SG_Node*)node)->Schedule(((KX_Scene*)scene)->m_sghead);
+}
+
+bool KX_Scene::KX_ScenegraphRescheduleFunc(SG_IObject* node,void* gameobj,void* scene)
+{
+ return ((SG_Node*)node)->Reschedule(((KX_Scene*)scene)->m_sghead);
+}
+
+SG_Callbacks KX_Scene::m_callbacks = SG_Callbacks(
+ KX_SceneReplicationFunc,
+ KX_SceneDestructionFunc,
+ KX_GameObject::UpdateTransformFunc,
+ KX_Scene::KX_ScenegraphUpdateFunc,
+ KX_Scene::KX_ScenegraphRescheduleFunc);
// temporarily var until there is a button in the userinterface
// (defined in KX_PythonInit.cpp)
@@ -148,7 +164,6 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice,
m_lightlist= new CListValue();
m_inactivelist = new CListValue();
m_euthanasyobjects = new CListValue();
- m_delayReleaseObjects = new CListValue();
m_logicmgr = new SCA_LogicManager();
@@ -192,9 +207,6 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice,
m_rootnode = NULL;
m_bucketmanager=new RAS_BucketManager();
-
- m_canvasDesignWidth = 0;
- m_canvasDesignHeight = 0;
m_attr_dict = PyDict_New(); /* new ref */
}
@@ -231,8 +243,6 @@ KX_Scene::~KX_Scene()
if (m_euthanasyobjects)
m_euthanasyobjects->Release();
- if (m_delayReleaseObjects)
- m_delayReleaseObjects->Release();
if (m_logicmgr)
delete m_logicmgr;
@@ -254,13 +264,6 @@ KX_Scene::~KX_Scene()
Py_DECREF(m_attr_dict);
}
-void KX_Scene::SetProjectionMatrix(MT_CmMatrix4x4& pmat)
-{
- m_projectionmat = pmat;
-}
-
-
-
RAS_BucketManager* KX_Scene::GetBucketManager()
{
return m_bucketmanager;
@@ -408,11 +411,11 @@ void KX_Scene::RemoveNodeDestructObject(class SG_IObject* node,class CValue* gam
KX_GameObject* orgobj = (KX_GameObject*)gameobj;
if (NewRemoveObject(orgobj) != 0)
{
- // object is not yet deleted (this can happen when it hangs in an add object actuator
- // last object created reference. It's a bad situation, don't know how to fix it exactly
- // The least I can do, is remove the reference to the node in the object as the node
- // will in any case be deleted. This ensures that the object will not try to use the node
- // when it is finally deleted (see KX_GameObject destructor)
+ // object is not yet deleted because a reference is hanging somewhere.
+ // This should not happen anymore since we use proxy object for Python
+ // confident enough to put an assert?
+ //assert(false);
+ printf("Zombie object! name=%s\n", orgobj->GetName().ReadPtr());
orgobj->SetSGNode(NULL);
PHY_IGraphicController* ctrl = orgobj->GetGraphicController();
if (ctrl)
@@ -477,6 +480,8 @@ KX_GameObject* KX_Scene::AddNodeReplicaObject(class SG_IObject* node, class CVal
// this is the list of object that are send to the graphics pipeline
m_objectlist->Add(newobj->AddRef());
+ if (newobj->IsLight())
+ m_lightlist->Add(newobj->AddRef());
newobj->AddMeshUser();
// logic cannot be replicated, until the whole hierarchy is replicated.
@@ -537,8 +542,9 @@ void KX_Scene::ReplicateLogic(KX_GameObject* newobj)
vector<SCA_IActuator*> linkedactuators = cont->GetLinkedActuators();
// disconnect the sensors and actuators
- cont->UnlinkAllSensors();
- cont->UnlinkAllActuators();
+ // do it directly on the list at this controller is not connected to anything at this stage
+ cont->GetLinkedSensors().clear();
+ cont->GetLinkedActuators().clear();
// now relink each sensor
for (vector<SCA_ISensor*>::iterator its = linkedsensors.begin();!(its==linkedsensors.end());its++)
@@ -716,16 +722,20 @@ void KX_Scene::DupliGroupRecurse(CValue* obj, int level)
// set the replica's relative scale with the rootnode's scale
replica->NodeSetRelativeScale(newscale);
- MT_Matrix3x3 newori = groupobj->NodeGetWorldOrientation() * gameobj->NodeGetWorldOrientation();
- replica->NodeSetLocalOrientation(newori);
MT_Point3 offset(group->dupli_ofs);
MT_Point3 newpos = groupobj->NodeGetWorldPosition() +
newscale*(groupobj->NodeGetWorldOrientation() * (gameobj->NodeGetWorldPosition()-offset));
replica->NodeSetLocalPosition(newpos);
-
+ // set the orientation after position for softbody!
+ MT_Matrix3x3 newori = groupobj->NodeGetWorldOrientation() * gameobj->NodeGetWorldOrientation();
+ replica->NodeSetLocalOrientation(newori);
+ // update scenegraph for entire tree of children
replica->GetSGNode()->UpdateWorldData(0);
replica->GetSGNode()->SetBBox(gameobj->GetSGNode()->BBox());
replica->GetSGNode()->SetRadius(gameobj->GetSGNode()->Radius());
+ // we can now add the graphic controller to the physic engine
+ replica->ActivateGraphicController(true);
+
// done with replica
replica->Release();
}
@@ -836,6 +846,8 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
replica->GetSGNode()->UpdateWorldData(0);
replica->GetSGNode()->SetBBox(originalobj->GetSGNode()->BBox());
replica->GetSGNode()->SetRadius(originalobj->GetSGNode()->Radius());
+ // the size is correct, we can add the graphic controller to the physic engine
+ replica->ActivateGraphicController(true);
// now replicate logic
vector<KX_GameObject*>::iterator git;
@@ -889,7 +901,7 @@ void KX_Scene::RemoveObject(class CValue* gameobj)
{
KX_GameObject* newobj = (KX_GameObject*) gameobj;
- // first disconnect child from parent
+ // disconnect child from parent
SG_Node* node = newobj->GetSGNode();
if (node)
@@ -903,12 +915,6 @@ void KX_Scene::RemoveObject(class CValue* gameobj)
//newobj->SetSGNode(0);
}
-void KX_Scene::DelayedReleaseObject(CValue* gameobj)
-{
- m_delayReleaseObjects->Add(gameobj->AddRef());
-}
-
-
void KX_Scene::DelayedRemoveObject(class CValue* gameobj)
{
//KX_GameObject* newobj = (KX_GameObject*) gameobj;
@@ -925,6 +931,13 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
int ret;
KX_GameObject* newobj = (KX_GameObject*) gameobj;
+ /* Invalidate the python reference, since the object may exist in script lists
+ * its possible that it wont be automatically invalidated, so do it manually here,
+ *
+ * if for some reason the object is added back into the scene python can always get a new Proxy
+ */
+ newobj->InvalidateProxy();
+
// keep the blender->game object association up to date
// note that all the replicas of an object will have the same
// blender object, that's why we need to check the game object
@@ -954,7 +967,7 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
for (SCA_ActuatorList::iterator ita = actuators.begin();
!(ita==actuators.end());ita++)
{
- m_logicmgr->RemoveDestroyedActuator(*ita);
+ m_logicmgr->RemoveActuator(*ita);
}
// the sensors/controllers/actuators must also be released, this is done in ~SCA_IObject
@@ -1038,6 +1051,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj)
Object* oldblendobj = static_cast<struct Object*>(m_logicmgr->FindBlendObjByGameMeshName(mesh->GetName()));
Mesh* blendmesh = mesh->GetMesh();
+ bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(blendobj);
bool bHasShapeKey = blendmesh->key != NULL && blendmesh->key->type==KEY_RELATIVE;
bool bHasDvert = blendmesh->dvert != NULL;
bool bHasArmature =
@@ -1053,10 +1067,39 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj)
if (oldblendobj==NULL) {
std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl;
- bHasShapeKey= bHasDvert= bHasArmature= false;
+ bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false;
}
- if (bHasShapeKey)
+ if (bHasModifier)
+ {
+ BL_ModifierDeformer* modifierDeformer;
+ if (bHasShapeKey || bHasArmature)
+ {
+ modifierDeformer = new BL_ModifierDeformer(
+ newobj,
+ m_blenderScene,
+ oldblendobj, blendobj,
+ static_cast<BL_SkinMeshObject*>(mesh),
+ true,
+ static_cast<BL_ArmatureObject*>( parentobj )
+ );
+ releaseParent= false;
+ modifierDeformer->LoadShapeDrivers(blendobj->parent);
+ }
+ else
+ {
+ modifierDeformer = new BL_ModifierDeformer(
+ newobj,
+ m_blenderScene,
+ oldblendobj, blendobj,
+ static_cast<BL_SkinMeshObject*>(mesh),
+ false,
+ NULL
+ );
+ }
+ newobj->SetDeformer(modifierDeformer);
+ }
+ else if (bHasShapeKey)
{
BL_ShapeDeformer* shapeDeformer;
if (bHasArmature)
@@ -1066,6 +1109,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj)
oldblendobj, blendobj,
static_cast<BL_SkinMeshObject*>(mesh),
true,
+ true,
static_cast<BL_ArmatureObject*>( parentobj )
);
releaseParent= false;
@@ -1078,6 +1122,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj)
oldblendobj, blendobj,
static_cast<BL_SkinMeshObject*>(mesh),
false,
+ true,
NULL
);
}
@@ -1090,6 +1135,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj)
oldblendobj, blendobj,
static_cast<BL_SkinMeshObject*>(mesh),
true,
+ true,
static_cast<BL_ArmatureObject*>( parentobj )
);
releaseParent= false;
@@ -1112,24 +1158,6 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj)
gameobj->AddMeshUser();
}
-
-
-MT_CmMatrix4x4& KX_Scene::GetViewMatrix()
-{
- MT_Scalar cammat[16];
- m_active_camera->GetWorldToCamera().getValue(cammat);
- m_viewmat = cammat;
- return m_viewmat;
-}
-
-
-
-MT_CmMatrix4x4& KX_Scene::GetProjectionMatrix()
-{
- return m_projectionmat;
-}
-
-
KX_Camera* KX_Scene::FindCamera(KX_Camera* cam)
{
list<KX_Camera*>::iterator it = m_cameras.begin();
@@ -1423,24 +1451,17 @@ void KX_Scene::LogicEndFrame()
{
m_logicmgr->EndFrame();
int numobj = m_euthanasyobjects->GetCount();
- int i;
- for (i = numobj - 1; i >= 0; i--)
- {
- KX_GameObject* gameobj = (KX_GameObject*)m_euthanasyobjects->GetValue(i);
- // KX_Scene::RemoveObject will also remove the object from this list
- // that's why we start from the end
- this->RemoveObject(gameobj);
- }
- numobj= m_delayReleaseObjects->GetCount();
- for (i = numobj-1;i>=0;i--)
+ KX_GameObject* obj;
+
+ while ((numobj = m_euthanasyobjects->GetCount()) > 0)
{
- KX_GameObject* gameobj = (KX_GameObject*)m_delayReleaseObjects->GetValue(i);
- // This list is not for object removal, but just object release
- gameobj->Release();
+ // remove the object from this list to make sure we will not hit it again
+ obj = (KX_GameObject*)m_euthanasyobjects->GetValue(numobj-1);
+ m_euthanasyobjects->Remove(numobj-1);
+ obj->Release();
+ RemoveObject(obj);
}
- // empty the list as we have removed all references
- m_delayReleaseObjects->Resize(0);
}
@@ -1450,15 +1471,28 @@ void KX_Scene::LogicEndFrame()
*/
void KX_Scene::UpdateParents(double curtime)
{
-// int numrootobjects = GetRootParentList()->GetCount();
+ // we use the SG dynamic list
+ SG_Node* node;
- for (int i=0; i<GetRootParentList()->GetCount(); i++)
+ while ((node = SG_Node::GetNextScheduled(m_sghead)) != NULL)
{
- KX_GameObject* parentobj = (KX_GameObject*)GetRootParentList()->GetValue(i);
- parentobj->NodeUpdateGS(curtime);
+ node->UpdateWorldData(curtime);
}
-}
+ //for (int i=0; i<GetRootParentList()->GetCount(); i++)
+ //{
+ // KX_GameObject* parentobj = (KX_GameObject*)GetRootParentList()->GetValue(i);
+ // parentobj->NodeUpdateGS(curtime);
+ //}
+
+ // the list must be empty here
+ assert(m_sghead.Empty());
+ // some nodes may be ready for reschedule, move them to schedule list for next time
+ while ((node = SG_Node::GetNextRescheduled(m_sghead)) != NULL)
+ {
+ node->Schedule(m_sghead);
+ }
+}
RAS_MaterialBucket* KX_Scene::FindBucket(class RAS_IPolyMaterial* polymat, bool &bucketCreated)
@@ -1579,8 +1613,13 @@ double KX_Scene::getSuspendedDelta()
//Python
PyTypeObject KX_Scene::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_Scene",
sizeof(PyObjectPlus_Proxy),
0,
@@ -1604,9 +1643,9 @@ PyParentObject KX_Scene::Parents[] = {
};
PyMethodDef KX_Scene::Methods[] = {
- KX_PYMETHODTABLE(KX_Scene, getLightList),
- KX_PYMETHODTABLE(KX_Scene, getObjectList),
- KX_PYMETHODTABLE(KX_Scene, getName),
+ KX_PYMETHODTABLE_NOARGS(KX_Scene, getLightList),
+ KX_PYMETHODTABLE_NOARGS(KX_Scene, getObjectList),
+ KX_PYMETHODTABLE_NOARGS(KX_Scene, getName),
KX_PYMETHODTABLE(KX_Scene, addObject),
{NULL,NULL} //Sentinel
@@ -1624,46 +1663,81 @@ PyObject* KX_Scene::pyattr_get_objects(void *self_v, const KX_PYATTRIBUTE_DEF *a
return self->GetObjectList()->GetProxy();
}
+PyObject* KX_Scene::pyattr_get_objects_inactive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ return self->GetInactiveList()->GetProxy();
+}
+
+PyObject* KX_Scene::pyattr_get_lights(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ return self->GetLightList()->GetProxy();
+}
+
+PyObject* KX_Scene::pyattr_get_cameras(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ /* With refcounts in this case...
+ * the new CListValue is owned by python, so its possible python holds onto it longer then the BGE
+ * however this is the same with "scene.objects + []", when you make a copy by adding lists.
+ */
+
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ CListValue* clist = new CListValue();
+
+ /* return self->GetCameras()->GetProxy(); */
+
+ list<KX_Camera*>::iterator it = self->GetCameras()->begin();
+ while (it != self->GetCameras()->end()) {
+ clist->Add((*it)->AddRef());
+ it++;
+ }
+
+ return clist->NewProxy(true);
+}
+
PyObject* KX_Scene::pyattr_get_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_Scene* self= static_cast<KX_Scene*>(self_v);
return self->GetActiveCamera()->GetProxy();
}
-/* __dict__ only for the purpose of giving useful dir() results */
-PyObject* KX_Scene::pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+
+int KX_Scene::pyattr_set_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
KX_Scene* self= static_cast<KX_Scene*>(self_v);
- /* Useually done by py_getattro_up but in this case we want to include m_attr_dict dict */
- PyObject *dict_str= PyString_FromString("__dict__");
- PyObject *dict= py_getattr_dict(self->PyObjectPlus::py_getattro(dict_str), Type.tp_dict);
- Py_DECREF(dict_str);
+ KX_Camera *camOb;
- PyDict_Update(dict, self->m_attr_dict);
- return dict;
+ if (!ConvertPythonToCamera(value, &camOb, false, "scene.active_camera = value: KX_Scene"))
+ return PY_SET_ATTR_FAIL;
+
+ self->SetActiveCamera(camOb);
+ return PY_SET_ATTR_SUCCESS;
}
+
PyAttributeDef KX_Scene::Attributes[] = {
- KX_PYATTRIBUTE_RO_FUNCTION("name", KX_Scene, pyattr_get_name),
- KX_PYATTRIBUTE_RO_FUNCTION("objects", KX_Scene, pyattr_get_objects),
- KX_PYATTRIBUTE_RO_FUNCTION("active_camera", KX_Scene, pyattr_get_active_camera),
- KX_PYATTRIBUTE_BOOL_RO("suspended", KX_Scene, m_suspend),
- KX_PYATTRIBUTE_BOOL_RO("activity_culling", KX_Scene, m_activity_culling),
+ KX_PYATTRIBUTE_RO_FUNCTION("name", KX_Scene, pyattr_get_name),
+ KX_PYATTRIBUTE_RO_FUNCTION("objects", KX_Scene, pyattr_get_objects),
+ KX_PYATTRIBUTE_RO_FUNCTION("objectsInactive", KX_Scene, pyattr_get_objects_inactive), KX_PYATTRIBUTE_RO_FUNCTION("lights", KX_Scene, pyattr_get_lights),
+ KX_PYATTRIBUTE_RO_FUNCTION("cameras", KX_Scene, pyattr_get_cameras),
+ KX_PYATTRIBUTE_RO_FUNCTION("lights", KX_Scene, pyattr_get_lights),
+ KX_PYATTRIBUTE_RW_FUNCTION("active_camera", KX_Scene, pyattr_get_active_camera, pyattr_set_active_camera),
+ KX_PYATTRIBUTE_BOOL_RO("suspended", KX_Scene, m_suspend),
+ KX_PYATTRIBUTE_BOOL_RO("activity_culling", KX_Scene, m_activity_culling),
KX_PYATTRIBUTE_FLOAT_RW("activity_culling_radius", 0.5f, FLT_MAX, KX_Scene, m_activity_box_radius),
- KX_PYATTRIBUTE_BOOL_RO("dbvt_culling", KX_Scene, m_dbvt_culling),
- KX_PYATTRIBUTE_RO_FUNCTION("__dict__", KX_Scene, pyattr_get_dir_dict),
+ KX_PYATTRIBUTE_BOOL_RO("dbvt_culling", KX_Scene, m_dbvt_culling),
{ NULL } //Sentinel
};
-
PyObject* KX_Scene::py_getattro__internal(PyObject *attr)
{
py_getattro_up(PyObjectPlus);
}
-int KX_Scene::py_setattro__internal(PyObject *attr, PyObject *pyvalue)
+int KX_Scene::py_setattro__internal(PyObject *attr, PyObject *value)
{
- return PyObjectPlus::py_setattro(attr, pyvalue);
+ py_setattro_up(PyObjectPlus);
}
PyObject* KX_Scene::py_getattro(PyObject *attr)
@@ -1685,6 +1759,18 @@ PyObject* KX_Scene::py_getattro(PyObject *attr)
return object;
}
+PyObject* KX_Scene::py_getattro_dict() {
+ //py_getattro_dict_up(PyObjectPlus);
+
+ PyObject *dict= py_getattr_dict(PyObjectPlus::py_getattro_dict(), Type.tp_dict);
+ if(dict==NULL)
+ return NULL;
+
+ /* normally just return this but KX_Scene has some more items */
+
+ PyDict_Update(dict, m_attr_dict);
+ return dict;
+}
int KX_Scene::py_setattro(PyObject *attr, PyObject *value)
{
@@ -1715,6 +1801,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getLightList,
"Returns a list of all lights in the scene.\n"
)
{
+ ShowDeprecationWarning("getLightList()", "the lights property");
return m_lightlist->GetProxy();
}
@@ -1723,7 +1810,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getObjectList,
"Returns a list of all game objects in the scene.\n"
)
{
- // ShowDeprecationWarning("getObjectList()", "the objects property"); // XXX Grr, why doesnt this work?
+ ShowDeprecationWarning("getObjectList()", "the objects property");
return m_objectlist->GetProxy();
}
@@ -1732,6 +1819,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getName,
"Returns the name of the scene.\n"
)
{
+ ShowDeprecationWarning("getName()", "the name property");
return PyString_FromString(GetName());
}
@@ -1753,5 +1841,9 @@ KX_PYMETHODDEF_DOC(KX_Scene, addObject,
SCA_IObject* replica = AddReplicaObject((SCA_IObject*)ob, other, time);
+
+ // release here because AddReplicaObject AddRef's
+ // the object is added to the scene so we dont want python to own a reference
+ replica->Release();
return replica->GetProxy();
-} \ No newline at end of file
+}
diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h
index a06c66ec5dd..79d3f7fd828 100644
--- a/source/gameengine/Ketsji/KX_Scene.h
+++ b/source/gameengine/Ketsji/KX_Scene.h
@@ -32,8 +32,6 @@
#include "KX_PhysicsEngineEnums.h"
-#include "MT_CmMatrix4x4.h"
-
#include <vector>
#include <set>
#include <list>
@@ -43,7 +41,7 @@
#include "SG_IObject.h"
#include "SCA_IScene.h"
#include "MT_Transform.h"
-#include "SND_Scene.h"
+
#include "RAS_FramingManager.h"
#include "RAS_Rect.h"
@@ -110,16 +108,16 @@ protected:
* LogicEndFrame() via a call to RemoveObject().
*/
CListValue* m_euthanasyobjects;
- /**
- * The list of objects that couldn't be released during logic update.
- * for example, AddObject actuator sometimes releases an object that was cached from previous frame
- */
- CListValue* m_delayReleaseObjects;
CListValue* m_objectlist;
CListValue* m_parentlist; // all 'root' parents
CListValue* m_lightlist;
CListValue* m_inactivelist; // all objects that are not in the active layer
+
+ SG_QList m_sghead; // list of nodes that needs scenegraph update
+ // the Dlist is not object that must be updated
+ // the Qlist is for objects that needs to be rescheduled
+ // for updates after udpate is over (slow parent, bone parent)
/**
* The tree of objects in the scene.
@@ -191,20 +189,6 @@ protected:
*/
KX_Camera* m_active_camera;
- /**
- * The projection and view matrices of this scene
- * The projection matrix is computed externally by KX_Engine
- * The view mat is stored as a side effect of GetViewMatrix()
- * and is totally unnessary.
- */
- MT_CmMatrix4x4 m_projectionmat;
- MT_CmMatrix4x4 m_viewmat;
-
- /** Desired canvas width set at design time. */
- unsigned int m_canvasDesignWidth;
- /** Desired canvas height set at design time. */
- unsigned int m_canvasDesignHeight;
-
/**
* Another temporary variable outstaying its welcome
* used in AddReplicaObject to map game objects to their
@@ -318,6 +302,8 @@ public:
/**
* Update all transforms according to the scenegraph.
*/
+ static bool KX_ScenegraphUpdateFunc(SG_IObject* node,void* gameobj,void* scene);
+ static bool KX_ScenegraphRescheduleFunc(SG_IObject* node,void* gameobj,void* scene);
void UpdateParents(double curtime);
void DupliGroupRecurse(CValue* gameobj, int level);
bool IsObjectInGroup(CValue* gameobj)
@@ -335,8 +321,6 @@ public:
void RemoveObject(CValue* gameobj);
void DelayedRemoveObject(CValue* gameobj);
- void DelayedReleaseObject(CValue* gameobj);
-
int NewRemoveObject(CValue* gameobj);
void ReplaceMesh(CValue* gameobj,
void* meshobj);
@@ -422,25 +406,6 @@ public:
class KX_Camera*
);
- /** Return the viewmatrix as used by the last frame. */
- MT_CmMatrix4x4&
- GetViewMatrix(
- );
-
- /**
- * Return the projectionmatrix as used by the last frame. This is
- * set by hand :)
- */
- MT_CmMatrix4x4&
- GetProjectionMatrix(
- );
-
- /** Sets the projection matrix. */
- void
- SetProjectionMatrix(
- MT_CmMatrix4x4& pmat
- );
-
/**
* Activates new desired canvas width set at design time.
* @param width The new desired width.
@@ -592,14 +557,16 @@ public:
/* attributes */
static PyObject* pyattr_get_name(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_objects(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_objects_inactive(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_lights(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_cameras(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_active_camera(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
-
- /* for dir(), python3 uses __dir__() */
- static PyObject* pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
-
+ static int pyattr_set_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
virtual PyObject* py_getattro(PyObject *attr); /* name, active_camera, gravity, suspended, viewport, framing, activity_culling, activity_culling_radius */
- virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
+ virtual PyObject* py_getattro_dict();
+
+ virtual int py_setattro(PyObject *attr, PyObject *value);
virtual int py_delattro(PyObject *attr);
virtual PyObject* py_repr(void) { return PyString_FromString(GetName().ReadPtr()); }
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.cpp b/source/gameengine/Ketsji/KX_SceneActuator.cpp
index f54d8542260..1b790ec9824 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SceneActuator.cpp
@@ -76,9 +76,6 @@ CValue* KX_SceneActuator::GetReplica()
{
KX_SceneActuator* replica = new KX_SceneActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
-
return replica;
}
@@ -226,8 +223,13 @@ KX_Scene* KX_SceneActuator::FindScene(char * sceneName)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_SceneActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SceneActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -262,7 +264,7 @@ PyMethodDef KX_SceneActuator::Methods[] =
//Deprecated functions ------>
{"setUseRestart", (PyCFunction) KX_SceneActuator::sPySetUseRestart, METH_VARARGS, (PY_METHODCHAR)SetUseRestart_doc},
{"setScene", (PyCFunction) KX_SceneActuator::sPySetScene, METH_VARARGS, (PY_METHODCHAR)SetScene_doc},
- {"setCamera", (PyCFunction) KX_SceneActuator::sPySetCamera, METH_VARARGS, (PY_METHODCHAR)SetCamera_doc},
+ {"setCamera", (PyCFunction) KX_SceneActuator::sPySetCamera, METH_O, (PY_METHODCHAR)SetCamera_doc},
{"getUseRestart", (PyCFunction) KX_SceneActuator::sPyGetUseRestart, METH_NOARGS, (PY_METHODCHAR)GetUseRestart_doc},
{"getScene", (PyCFunction) KX_SceneActuator::sPyGetScene, METH_NOARGS, (PY_METHODCHAR)GetScene_doc},
{"getCamera", (PyCFunction) KX_SceneActuator::sPyGetCamera, METH_NOARGS, (PY_METHODCHAR)GetCamera_doc},
@@ -273,6 +275,8 @@ PyMethodDef KX_SceneActuator::Methods[] =
PyAttributeDef KX_SceneActuator::Attributes[] = {
KX_PYATTRIBUTE_STRING_RW("scene",0,32,true,KX_SceneActuator,m_nextSceneName),
KX_PYATTRIBUTE_RW_FUNCTION("camera",KX_SceneActuator,pyattr_get_camera,pyattr_set_camera),
+ KX_PYATTRIBUTE_BOOL_RW("useRestart", KX_SceneActuator, m_restart),
+ KX_PYATTRIBUTE_INT_RW("mode", KX_SCENE_NODEF+1, KX_SCENE_MAX-1, true, KX_SceneActuator, m_mode),
{ NULL } //Sentinel
};
@@ -281,6 +285,10 @@ PyObject* KX_SceneActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_SceneActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_SceneActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);
@@ -300,51 +308,21 @@ int KX_SceneActuator::pyattr_set_camera(void *self, const struct KX_PYATTRIBUTE_
KX_SceneActuator* actuator = static_cast<KX_SceneActuator*>(self);
KX_Camera *camOb;
- if(value==Py_None)
- {
- if (actuator->m_camera)
- actuator->m_camera->UnregisterActuator(actuator);
-
+ if (!ConvertPythonToCamera(value, &camOb, true, "actu.camera = value: KX_SceneActuator"))
+ return PY_SET_ATTR_FAIL;
+
+ if (actuator->m_camera)
+ actuator->m_camera->UnregisterActuator(actuator);
+
+ if(camOb==NULL) {
actuator->m_camera= NULL;
- return 0;
}
-
- if (PyObject_TypeCheck(value, &KX_Camera::Type))
- {
- KX_Camera *camOb= static_cast<KX_Camera*>BGE_PROXY_REF(value);
-
- if(camOb==NULL)
- {
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
- return 1;
- }
-
- if (actuator->m_camera)
- actuator->m_camera->UnregisterActuator(actuator);
-
+ else {
actuator->m_camera = camOb;
actuator->m_camera->RegisterActuator(actuator);
- return 0;
- }
-
- if (PyString_Check(value))
- {
- char *camName = PyString_AsString(value);
-
- camOb = actuator->FindCamera(camName);
- if (camOb)
- {
- if (actuator->m_camera)
- actuator->m_camera->UnregisterActuator(actuator);
- actuator->m_camera = camOb;
- actuator->m_camera->RegisterActuator(actuator);
- return 0;
- }
- PyErr_SetString(PyExc_TypeError, "not a valid camera name");
- return 1;
}
- PyErr_SetString(PyExc_TypeError, "expected a string or a camera object reference");
- return 1;
+
+ return PY_SET_ATTR_SUCCESS;
}
@@ -355,7 +333,7 @@ const char KX_SceneActuator::SetUseRestart_doc[] =
"\tSet flag to 1 to restart the scene.\n" ;
PyObject* KX_SceneActuator::PySetUseRestart(PyObject* args)
{
- ShowDeprecationWarning("setUseRestart()", "(no replacement)");
+ ShowDeprecationWarning("setUseRestart()", "the useRestart property");
int boolArg;
if (!PyArg_ParseTuple(args, "i:setUseRestart", &boolArg))
@@ -376,7 +354,7 @@ const char KX_SceneActuator::GetUseRestart_doc[] =
"\tReturn whether the scene will be restarted.\n" ;
PyObject* KX_SceneActuator::PyGetUseRestart()
{
- ShowDeprecationWarning("getUseRestart()", "(no replacement)");
+ ShowDeprecationWarning("getUseRestart()", "the useRestart property");
return PyInt_FromLong(!(m_restart == 0));
}
@@ -423,47 +401,24 @@ const char KX_SceneActuator::SetCamera_doc[] =
"setCamera(camera)\n"
"\t- camera: string\n"
"\tSet the camera to switch to.\n" ;
-PyObject* KX_SceneActuator::PySetCamera(PyObject* args)
+PyObject* KX_SceneActuator::PySetCamera(PyObject* value)
{
ShowDeprecationWarning("setCamera()", "the camera property");
- PyObject *cam;
- if (PyArg_ParseTuple(args, "O!:setCamera", &KX_Camera::Type, &cam))
- {
- KX_Camera *new_camera;
-
- new_camera = static_cast<KX_Camera*>BGE_PROXY_REF(cam);
- if(new_camera==NULL)
- {
- PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
- return NULL;
- }
-
- if (m_camera)
- m_camera->UnregisterActuator(this);
-
- m_camera= new_camera;
-
- m_camera->RegisterActuator(this);
- Py_RETURN_NONE;
- }
- PyErr_Clear();
-
- /* one argument: a scene, ignore the rest */
- char *camName;
- if(!PyArg_ParseTuple(args, "s:setCamera", &camName))
- {
+ KX_Camera *camOb;
+
+ if (!ConvertPythonToCamera(value, &camOb, true, "actu.setCamera(value): KX_SceneActuator"))
return NULL;
+
+ if (m_camera)
+ m_camera->UnregisterActuator(this);
+
+ if(camOb==NULL) {
+ m_camera= NULL;
}
-
- KX_Camera *camOb = FindCamera(camName);
- if (camOb)
- {
- if (m_camera)
- m_camera->UnregisterActuator(this);
+ else {
m_camera = camOb;
m_camera->RegisterActuator(this);
}
-
Py_RETURN_NONE;
}
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.h b/source/gameengine/Ketsji/KX_SceneActuator.h
index 803c5106a60..2412dd02590 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.h
+++ b/source/gameengine/Ketsji/KX_SceneActuator.h
@@ -93,6 +93,7 @@ class KX_SceneActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. set */
@@ -107,7 +108,7 @@ class KX_SceneActuator : public SCA_IActuator
/* 5. getScene: */
KX_PYMETHOD_DOC_NOARGS(KX_SceneActuator,GetScene);
/* 6. setCamera: */
- KX_PYMETHOD_DOC_VARARGS(KX_SceneActuator,SetCamera);
+ KX_PYMETHOD_DOC_O(KX_SceneActuator,SetCamera);
/* 7. getCamera: */
KX_PYMETHOD_DOC_NOARGS(KX_SceneActuator,GetCamera);
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.cpp b/source/gameengine/Ketsji/KX_SoundActuator.cpp
index 412be497c5a..5c02a2db646 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SoundActuator.cpp
@@ -83,19 +83,19 @@ CValue* KX_SoundActuator::GetReplica()
{
KX_SoundActuator* replica = new KX_SoundActuator(*this);
replica->ProcessReplica();
+ return replica;
+};
+
+void KX_SoundActuator::ProcessReplica()
+{
+ SCA_IActuator::ProcessReplica();
if (m_soundObject)
{
SND_SoundObject* soundobj = new SND_SoundObject(*m_soundObject);
- replica->setSoundObject(soundobj);
+ setSoundObject(soundobj);
m_soundScene->AddObject(soundobj);
}
-
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
- return replica;
-};
-
-
+}
bool KX_SoundActuator::Update(double curtime, bool frame)
{
@@ -234,8 +234,13 @@ void KX_SoundActuator::setSoundObject(class SND_SoundObject* soundobject)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_SoundActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_SoundActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -290,7 +295,7 @@ PyMethodDef KX_SoundActuator::Methods[] = {
};
PyAttributeDef KX_SoundActuator::Attributes[] = {
- KX_PYATTRIBUTE_RW_FUNCTION("filename", KX_SoundActuator, pyattr_get_filename, pyattr_set_filename),
+ KX_PYATTRIBUTE_RW_FUNCTION("fileName", KX_SoundActuator, pyattr_get_filename, pyattr_set_filename),
KX_PYATTRIBUTE_RW_FUNCTION("volume", KX_SoundActuator, pyattr_get_gain, pyattr_set_gain),
KX_PYATTRIBUTE_RW_FUNCTION("pitch", KX_SoundActuator, pyattr_get_pitch, pyattr_set_pitch),
KX_PYATTRIBUTE_RW_FUNCTION("rollOffFactor", KX_SoundActuator, pyattr_get_rollOffFactor, pyattr_set_rollOffFactor),
@@ -298,7 +303,7 @@ PyAttributeDef KX_SoundActuator::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("position", KX_SoundActuator, pyattr_get_position, pyattr_set_position),
KX_PYATTRIBUTE_RW_FUNCTION("velocity", KX_SoundActuator, pyattr_get_velocity, pyattr_set_velocity),
KX_PYATTRIBUTE_RW_FUNCTION("orientation", KX_SoundActuator, pyattr_get_orientation, pyattr_set_orientation),
- KX_PYATTRIBUTE_ENUM_RW("type",KX_SoundActuator::KX_SOUNDACT_NODEF+1,KX_SoundActuator::KX_SOUNDACT_MAX-1,false,KX_SoundActuator,m_type),
+ KX_PYATTRIBUTE_ENUM_RW("mode",KX_SoundActuator::KX_SOUNDACT_NODEF+1,KX_SoundActuator::KX_SOUNDACT_MAX-1,false,KX_SoundActuator,m_type),
{ NULL } //Sentinel
};
@@ -340,6 +345,10 @@ PyObject* KX_SoundActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_SoundActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_SoundActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}
@@ -355,7 +364,7 @@ PyObject* KX_SoundActuator::pyattr_get_filename(void *self, const struct KX_PYAT
char* name = objectname.Ptr();
if (!name) {
- PyErr_SetString(PyExc_RuntimeError, "value = actuator.filename: KX_SoundActuator, unable to get sound filename");
+ PyErr_SetString(PyExc_RuntimeError, "value = actuator.fileName: KX_SoundActuator, unable to get sound fileName");
return NULL;
} else
return PyString_FromString(name);
@@ -441,13 +450,13 @@ int KX_SoundActuator::pyattr_set_filename(void *self, const struct KX_PYATTRIBUT
// void *soundPointer = NULL; /*unused*/
if (!PyArg_Parse(value, "s", &soundName))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject) {
actuator->m_soundObject->SetObjectName(soundName);
}
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
@@ -456,12 +465,12 @@ int KX_SoundActuator::pyattr_set_gain(void *self, const struct KX_PYATTRIBUTE_DE
float gain = 1.0;
KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
if (!PyArg_Parse(value, "f", &gain))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject)
actuator->m_soundObject->SetGain(gain);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
int KX_SoundActuator::pyattr_set_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
@@ -469,12 +478,12 @@ int KX_SoundActuator::pyattr_set_pitch(void *self, const struct KX_PYATTRIBUTE_D
float pitch = 1.0;
KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
if (!PyArg_Parse(value, "f", &pitch))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject)
actuator->m_soundObject->SetPitch(pitch);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
int KX_SoundActuator::pyattr_set_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
@@ -482,12 +491,12 @@ int KX_SoundActuator::pyattr_set_rollOffFactor(void *self, const struct KX_PYATT
KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
float rollofffactor = 1.0;
if (!PyArg_Parse(value, "f", &rollofffactor))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject)
actuator->m_soundObject->SetRollOffFactor(rollofffactor);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
int KX_SoundActuator::pyattr_set_looping(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
@@ -495,12 +504,12 @@ int KX_SoundActuator::pyattr_set_looping(void *self, const struct KX_PYATTRIBUTE
KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
int looping = 1;
if (!PyArg_Parse(value, "i", &looping))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject)
actuator->m_soundObject->SetLoopMode(looping);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
int KX_SoundActuator::pyattr_set_position(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
@@ -510,12 +519,12 @@ int KX_SoundActuator::pyattr_set_position(void *self, const struct KX_PYATTRIBUT
KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
if (!PyArg_ParseTuple(value, "fff", &pos[0], &pos[1], &pos[2]))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject)
actuator->m_soundObject->SetPosition(MT_Vector3(pos));
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
int KX_SoundActuator::pyattr_set_velocity(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
@@ -525,12 +534,12 @@ int KX_SoundActuator::pyattr_set_velocity(void *self, const struct KX_PYATTRIBUT
if (!PyArg_ParseTuple(value, "fff", &vel[0], &vel[1], &vel[2]))
- return 1;
+ return PY_SET_ATTR_FAIL;
if (actuator->m_soundObject)
actuator->m_soundObject->SetVelocity(MT_Vector3(vel));
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
@@ -542,21 +551,22 @@ int KX_SoundActuator::pyattr_set_orientation(void *self, const struct KX_PYATTRI
/* if value is not a sequence PyOrientationTo makes an error */
if (!PyOrientationTo(value, rot, "actuator.orientation = value: KX_SoundActuator"))
- return NULL;
+ return PY_SET_ATTR_FAIL;
+ /* Since not having m_soundObject didn't do anything in the old version,
+ * it probably should be kept that way */
if (!actuator->m_soundObject)
- return 0; /* Since not having m_soundObject didn't do anything in the old version,
- * it probably should be kept that way */
+ return PY_SET_ATTR_SUCCESS;
actuator->m_soundObject->SetOrientation(rot);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
// Deprecated ----->
PyObject* KX_SoundActuator::PySetFilename(PyObject* args)
{
char *soundName = NULL;
- ShowDeprecationWarning("setFilename()", "the filename property");
+ ShowDeprecationWarning("setFilename()", "the fileName property");
// void *soundPointer = NULL; /*unused*/
if (!PyArg_ParseTuple(args, "s", &soundName))
@@ -567,7 +577,7 @@ PyObject* KX_SoundActuator::PySetFilename(PyObject* args)
PyObject* KX_SoundActuator::PyGetFilename()
{
- ShowDeprecationWarning("getFilename()", "the filename property");
+ ShowDeprecationWarning("getFilename()", "the fileName property");
if (!m_soundObject)
{
return PyString_FromString("");
@@ -576,7 +586,7 @@ PyObject* KX_SoundActuator::PyGetFilename()
char* name = objectname.Ptr();
if (!name) {
- PyErr_SetString(PyExc_RuntimeError, "Unable to get sound filename");
+ PyErr_SetString(PyExc_RuntimeError, "Unable to get sound fileName");
return NULL;
} else
return PyString_FromString(name);
@@ -750,7 +760,7 @@ PyObject* KX_SoundActuator::PySetOrientation(PyObject* args)
PyObject* KX_SoundActuator::PySetType(PyObject* args)
{
int typeArg;
- ShowDeprecationWarning("setType()", "the type property");
+ ShowDeprecationWarning("setType()", "the mode property");
if (!PyArg_ParseTuple(args, "i:setType", &typeArg)) {
return NULL;
@@ -766,7 +776,7 @@ PyObject* KX_SoundActuator::PySetType(PyObject* args)
PyObject* KX_SoundActuator::PyGetType()
{
- ShowDeprecationWarning("getType()", "the type property");
+ ShowDeprecationWarning("getType()", "the mode property");
return PyInt_FromLong(m_type);
}
// <-----
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.h b/source/gameengine/Ketsji/KX_SoundActuator.h
index d5e678bbecd..a7491355667 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.h
+++ b/source/gameengine/Ketsji/KX_SoundActuator.h
@@ -75,12 +75,14 @@ public:
virtual bool Update(double curtime, bool frame);
CValue* GetReplica();
+ void ProcessReplica();
/* -------------------------------------------------------------------- */
/* Python interface --------------------------------------------------- */
/* -------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
KX_PYMETHOD_DOC_NOARGS(KX_SoundActuator, startSound);
diff --git a/source/gameengine/Ketsji/KX_StateActuator.cpp b/source/gameengine/Ketsji/KX_StateActuator.cpp
index 976e7ea5204..f6979eee0f4 100644
--- a/source/gameengine/Ketsji/KX_StateActuator.cpp
+++ b/source/gameengine/Ketsji/KX_StateActuator.cpp
@@ -55,6 +55,9 @@ KX_StateActuator::~KX_StateActuator(
// intentionally empty
}
+// used to put state actuator to be executed before any other actuators
+SG_QList KX_StateActuator::m_stateActuatorHead;
+
CValue*
KX_StateActuator::GetReplica(
void
@@ -62,8 +65,6 @@ KX_StateActuator::GetReplica(
{
KX_StateActuator* replica = new KX_StateActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
}
@@ -72,7 +73,10 @@ KX_StateActuator::Update()
{
bool bNegativeEvent = IsNegativeEvent();
unsigned int objMask;
-
+
+ // execution of state actuator means that we are in the execution phase, reset this pointer
+ // because all the active actuator of this object will be removed for sure.
+ m_gameobj->m_firstState = NULL;
RemoveAllEvents();
if (bNegativeEvent) return false;
@@ -101,6 +105,31 @@ KX_StateActuator::Update()
return false;
}
+// this function is only used to deactivate actuators outside the logic loop
+// e.g. when an object is deleted.
+void KX_StateActuator::Deactivate()
+{
+ if (QDelink())
+ {
+ // the actuator was in the active list
+ if (m_stateActuatorHead.QEmpty())
+ // no more state object active
+ m_stateActuatorHead.Delink();
+ }
+}
+
+void KX_StateActuator::Activate(SG_DList& head)
+{
+ // sort the state actuators per object on the global list
+ if (QEmpty())
+ {
+ InsertSelfActiveQList(m_stateActuatorHead, &m_gameobj->m_firstState);
+ // add front to make sure it runs before other actuators
+ head.AddFront(&m_stateActuatorHead);
+ }
+}
+
+
/* ------------------------------------------------------------------------- */
/* Python functions */
/* ------------------------------------------------------------------------- */
@@ -109,8 +138,13 @@ KX_StateActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_StateActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_StateActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -156,7 +190,11 @@ PyAttributeDef KX_StateActuator::Attributes[] = {
PyObject* KX_StateActuator::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_IActuator);
-};
+}
+
+PyObject* KX_StateActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
int KX_StateActuator::py_setattro(PyObject *attr, PyObject* value)
{
diff --git a/source/gameengine/Ketsji/KX_StateActuator.h b/source/gameengine/Ketsji/KX_StateActuator.h
index 4a64894259d..a4191a4c5fd 100644
--- a/source/gameengine/Ketsji/KX_StateActuator.h
+++ b/source/gameengine/Ketsji/KX_StateActuator.h
@@ -33,6 +33,13 @@
#include "SCA_IActuator.h"
+
+/*
+ * Use of SG_DList : element of actuator being deactivated
+ * Head: SCA_LogicManager::m_removedActuators
+ * Use of SG_QList : element of global activated state actuator list
+ * Head: KX_StateActuator::m_stateActuatorHead
+ */
class KX_StateActuator : public SCA_IActuator
{
Py_Header;
@@ -46,6 +53,11 @@ class KX_StateActuator : public SCA_IActuator
OP_NEG,
OP_COUNT
};
+ // SG_Dlist: element of objects with active actuators, always put in front of the list
+ // Head: SCA_LogicManager::m_activeActuators
+ // SG_QList: Head of active state actuators list globally
+ // Elements: KX_StateActuator
+ static SG_QList m_stateActuatorHead;
int m_operation;
int m_mask;
@@ -71,11 +83,15 @@ class KX_StateActuator : public SCA_IActuator
virtual bool
Update();
+ virtual void Deactivate();
+ virtual void Activate(SG_DList& head);
+
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
//KX_PYMETHOD_DOC
KX_PYMETHOD_DOC_VARARGS(KX_StateActuator,SetOperation);
diff --git a/source/gameengine/Ketsji/KX_SumoPhysicsController.h b/source/gameengine/Ketsji/KX_SumoPhysicsController.h
index 083d89896f6..278994c6ae7 100644
--- a/source/gameengine/Ketsji/KX_SumoPhysicsController.h
+++ b/source/gameengine/Ketsji/KX_SumoPhysicsController.h
@@ -53,7 +53,7 @@ public:
class SM_Object* sumoObj,
class PHY_IMotionState* motionstate
,bool dyna)
- : KX_IPhysicsController(dyna,false,NULL) ,
+ : KX_IPhysicsController(dyna,false,false,NULL) ,
SumoPhysicsController(sumoScene,/*solidscene,*/sumoObj,motionstate,dyna)
{
};
@@ -83,6 +83,7 @@ public:
virtual void getOrientation(MT_Quaternion& orn);
virtual void setOrientation(const MT_Matrix3x3& orn);
+ virtual void SetTransform() {}
virtual void setPosition(const MT_Point3& pos);
virtual void setScaling(const MT_Vector3& scaling);
diff --git a/source/gameengine/Ketsji/KX_TouchEventManager.cpp b/source/gameengine/Ketsji/KX_TouchEventManager.cpp
index 48d4cf59a2b..712a512995e 100644
--- a/source/gameengine/Ketsji/KX_TouchEventManager.cpp
+++ b/source/gameengine/Ketsji/KX_TouchEventManager.cpp
@@ -85,14 +85,35 @@ bool KX_TouchEventManager::newBroadphaseResponse(void *client_data,
PHY_IPhysicsController* ctrl = static_cast<PHY_IPhysicsController*>(object1);
KX_ClientObjectInfo* info = (ctrl) ? static_cast<KX_ClientObjectInfo*>(ctrl->getNewClientInfo()) : NULL;
// This call back should only be called for controllers of Near and Radar sensor
- if (info &&
- info->m_sensors.size() == 1 &&
- (info->m_type == KX_ClientObjectInfo::NEAR ||
- info->m_type == KX_ClientObjectInfo::RADAR))
+ if (!info)
+ return true;
+
+ switch (info->m_type)
{
- // only one sensor for this type of object
- KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(*info->m_sensors.begin());
- return touchsensor->BroadPhaseFilterCollision(object1,object2);
+ case KX_ClientObjectInfo::SENSOR:
+ if (info->m_sensors.size() == 1)
+ {
+ // only one sensor for this type of object
+ KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(*info->m_sensors.begin());
+ return touchsensor->BroadPhaseFilterCollision(object1,object2);
+ }
+ break;
+ case KX_ClientObjectInfo::OBSENSOR:
+ case KX_ClientObjectInfo::OBACTORSENSOR:
+ // this object may have multiple collision sensors,
+ // check is any of them is interested in this object
+ for(std::list<SCA_ISensor*>::iterator it = info->m_sensors.begin();
+ it != info->m_sensors.end();
+ ++it)
+ {
+ if ((*it)->GetSensorType() == SCA_ISensor::ST_TOUCH)
+ {
+ KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(*it);
+ if (touchsensor->BroadPhaseSensorFilterCollision(object1, object2))
+ return true;
+ }
+ }
+ return false;
}
return true;
}
@@ -100,7 +121,7 @@ bool KX_TouchEventManager::newBroadphaseResponse(void *client_data,
void KX_TouchEventManager::RegisterSensor(SCA_ISensor* sensor)
{
KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(sensor);
- if (m_sensors.insert(touchsensor).second)
+ if (m_sensors.AddBack(touchsensor))
// the sensor was effectively inserted, register it
touchsensor->RegisterSumo(this);
}
@@ -108,7 +129,7 @@ void KX_TouchEventManager::RegisterSensor(SCA_ISensor* sensor)
void KX_TouchEventManager::RemoveSensor(SCA_ISensor* sensor)
{
KX_TouchSensor* touchsensor = static_cast<KX_TouchSensor*>(sensor);
- if (m_sensors.erase(touchsensor))
+ if (touchsensor->Delink())
// the sensor was effectively removed, unregister it
touchsensor->UnregisterSumo(this);
}
@@ -117,12 +138,10 @@ void KX_TouchEventManager::RemoveSensor(SCA_ISensor* sensor)
void KX_TouchEventManager::EndFrame()
{
- set<SCA_ISensor*>::iterator it;
- for ( it = m_sensors.begin();
- !(it==m_sensors.end());it++)
+ SG_DList::iterator<KX_TouchSensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
{
- ((KX_TouchSensor*)*it)->EndFrame();
-
+ (*it)->EndFrame();
}
}
@@ -130,12 +149,11 @@ void KX_TouchEventManager::EndFrame()
void KX_TouchEventManager::NextFrame()
{
- if (m_sensors.size() > 0)
+ if (!m_sensors.Empty())
{
- set<SCA_ISensor*>::iterator it;
-
- for (it = m_sensors.begin();!(it==m_sensors.end());++it)
- static_cast<KX_TouchSensor*>(*it)->SynchronizeTransform();
+ SG_DList::iterator<KX_TouchSensor> it(m_sensors);
+ for (it.begin();!it.end();++it)
+ (*it)->SynchronizeTransform();
for (std::set<NewCollision>::iterator cit = m_newCollisions.begin(); cit != m_newCollisions.end(); ++cit)
{
@@ -161,7 +179,7 @@ void KX_TouchEventManager::NextFrame()
m_newCollisions.clear();
- for (it = m_sensors.begin();!(it==m_sensors.end());++it)
- (*it)->Activate(m_logicmgr,NULL);
+ for (it.begin();!it.end();++it)
+ (*it)->Activate(m_logicmgr);
}
}
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.cpp b/source/gameengine/Ketsji/KX_TouchSensor.cpp
index 5a6e8e6f501..c06acd4a873 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.cpp
+++ b/source/gameengine/Ketsji/KX_TouchSensor.cpp
@@ -66,10 +66,10 @@ void KX_TouchSensor::UnregisterToManager()
{
// before unregistering the sensor, make sure we release all references
EndFrame();
- m_eventmgr->RemoveSensor(this);
+ SCA_ISensor::UnregisterToManager();
}
-bool KX_TouchSensor::Evaluate(CValue* event)
+bool KX_TouchSensor::Evaluate()
{
bool result = false;
bool reset = m_reset && m_level;
@@ -142,13 +142,17 @@ KX_TouchSensor::~KX_TouchSensor()
CValue* KX_TouchSensor::GetReplica()
{
KX_TouchSensor* replica = new KX_TouchSensor(*this);
- replica->m_colliders = new CListValue();
- replica->Init();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
+ replica->ProcessReplica();
return replica;
}
+void KX_TouchSensor::ProcessReplica()
+{
+ SCA_ISensor::ProcessReplica();
+ m_colliders = new CListValue();
+ Init();
+}
+
void KX_TouchSensor::ReParent(SCA_IObject* parent)
{
KX_GameObject *gameobj = static_cast<KX_GameObject *>(parent);
@@ -169,21 +173,69 @@ void KX_TouchSensor::RegisterSumo(KX_TouchEventManager *touchman)
{
if (m_physCtrl)
{
- touchman->GetPhysicsEnvironment()->requestCollisionCallback(m_physCtrl);
- // collision
- // Deprecated
-
+ if (touchman->GetPhysicsEnvironment()->requestCollisionCallback(m_physCtrl))
+ {
+ KX_ClientObjectInfo* client_info = static_cast<KX_ClientObjectInfo*>(m_physCtrl->getNewClientInfo());
+ if (client_info->isSensor())
+ touchman->GetPhysicsEnvironment()->addSensor(m_physCtrl);
+ }
}
}
-
void KX_TouchSensor::UnregisterSumo(KX_TouchEventManager* touchman)
{
if (m_physCtrl)
{
- touchman->GetPhysicsEnvironment()->removeCollisionCallback(m_physCtrl);
+ if (touchman->GetPhysicsEnvironment()->removeCollisionCallback(m_physCtrl))
+ {
+ // no more sensor on the controller, can remove it if it is a sensor object
+ KX_ClientObjectInfo* client_info = static_cast<KX_ClientObjectInfo*>(m_physCtrl->getNewClientInfo());
+ if (client_info->isSensor())
+ touchman->GetPhysicsEnvironment()->removeSensor(m_physCtrl);
+ }
}
}
+// this function is called only for sensor objects
+// return true if the controller can collide with the object
+bool KX_TouchSensor::BroadPhaseSensorFilterCollision(void*obj1,void*obj2)
+{
+ assert(obj1==m_physCtrl && obj2);
+
+ KX_GameObject* myobj = (KX_GameObject*)GetParent();
+ KX_GameObject* myparent = myobj->GetParent();
+ KX_ClientObjectInfo* client_info = static_cast<KX_ClientObjectInfo*>(((PHY_IPhysicsController*)obj2)->getNewClientInfo());
+ KX_ClientObjectInfo* my_client_info = static_cast<KX_ClientObjectInfo*>(m_physCtrl->getNewClientInfo());
+ KX_GameObject* otherobj = ( client_info ? client_info->m_gameobject : NULL);
+
+ // first, decrement refcount as GetParent() increases it
+ if (myparent)
+ myparent->Release();
+
+ // we can only check on persistent characteristic: m_link and m_suspended are not
+ // good candidate because they are transient. That must be handled at another level
+ if (!otherobj ||
+ otherobj == myparent || // don't interact with our parent
+ (my_client_info->m_type == KX_ClientObjectInfo::OBACTORSENSOR &&
+ client_info->m_type != KX_ClientObjectInfo::ACTOR)) // only with actor objects
+ return false;
+
+ bool found = m_touchedpropname.IsEmpty();
+ if (!found)
+ {
+ if (m_bFindMaterial)
+ {
+ if (client_info->m_auxilary_info)
+ {
+ found = (!strcmp(m_touchedpropname.Ptr(), (char*)client_info->m_auxilary_info));
+ }
+ } else
+ {
+ found = (otherobj->GetProperty(m_touchedpropname) != NULL);
+ }
+ }
+ return found;
+}
+
bool KX_TouchSensor::NewHandleCollision(void*object1,void*object2,const PHY_CollData* colldata)
{
// KX_TouchEventManager* toucheventmgr = (KX_TouchEventManager*)m_eventmgr;
@@ -242,8 +294,13 @@ bool KX_TouchSensor::NewHandleCollision(void*object1,void*object2,const PHY_Coll
/* ------------------------------------------------------------------------- */
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_TouchSensor::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_TouchSensor",
sizeof(PyObjectPlus_Proxy),
0,
@@ -283,11 +340,11 @@ PyMethodDef KX_TouchSensor::Methods[] = {
};
PyAttributeDef KX_TouchSensor::Attributes[] = {
- KX_PYATTRIBUTE_STRING_RW("property",0,100,false,KX_TouchSensor,m_touchedpropname),
+ KX_PYATTRIBUTE_STRING_RW("propName",0,100,false,KX_TouchSensor,m_touchedpropname),
KX_PYATTRIBUTE_BOOL_RW("useMaterial",KX_TouchSensor,m_bFindMaterial),
- KX_PYATTRIBUTE_BOOL_RW("pulseCollisions",KX_TouchSensor,m_bTouchPulse),
- KX_PYATTRIBUTE_RO_FUNCTION("objectHit", KX_TouchSensor, pyattr_get_object_hit),
- KX_PYATTRIBUTE_RO_FUNCTION("objectHitList", KX_TouchSensor, pyattr_get_object_hit_list),
+ KX_PYATTRIBUTE_BOOL_RW("usePulseCollision",KX_TouchSensor,m_bTouchPulse),
+ KX_PYATTRIBUTE_RO_FUNCTION("hitObject", KX_TouchSensor, pyattr_get_object_hit),
+ KX_PYATTRIBUTE_RO_FUNCTION("hitObjectList", KX_TouchSensor, pyattr_get_object_hit_list),
{ NULL } //Sentinel
};
@@ -296,6 +353,10 @@ PyObject* KX_TouchSensor::py_getattro(PyObject *attr)
py_getattro_up(SCA_ISensor);
}
+PyObject* KX_TouchSensor::py_getattro_dict() {
+ py_getattro_dict_up(SCA_ISensor);
+}
+
int KX_TouchSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);
@@ -312,7 +373,7 @@ const char KX_TouchSensor::SetProperty_doc[] =
"\tmaterials.";
PyObject* KX_TouchSensor::PySetProperty(PyObject* value)
{
- ShowDeprecationWarning("setProperty()", "the propertyName property");
+ ShowDeprecationWarning("setProperty()", "the propName property");
char *nameArg= PyString_AsString(value);
if (nameArg==NULL) {
PyErr_SetString(PyExc_ValueError, "expected a ");
@@ -329,6 +390,8 @@ const char KX_TouchSensor::GetProperty_doc[] =
"\tgetTouchMaterial() to find out whether this sensor\n"
"\tlooks for properties or materials.";
PyObject* KX_TouchSensor::PyGetProperty() {
+ ShowDeprecationWarning("getProperty()", "the propName property");
+
return PyString_FromString(m_touchedpropname);
}
@@ -337,7 +400,7 @@ const char KX_TouchSensor::GetHitObject_doc[] =
;
PyObject* KX_TouchSensor::PyGetHitObject()
{
- ShowDeprecationWarning("getHitObject()", "the objectHit property");
+ ShowDeprecationWarning("getHitObject()", "the hitObject property");
/* to do: do Py_IncRef if the object is already known in Python */
/* otherwise, this leaks memory */
if (m_hitObject)
@@ -353,7 +416,7 @@ const char KX_TouchSensor::GetHitObjectList_doc[] =
"\tbut only those matching the property/material condition.\n";
PyObject* KX_TouchSensor::PyGetHitObjectList()
{
- ShowDeprecationWarning("getHitObjectList()", "the objectHitList property");
+ ShowDeprecationWarning("getHitObjectList()", "the hitObjectList property");
/* to do: do Py_IncRef if the object is already known in Python */
/* otherwise, this leaks memory */ /* Edit, this seems ok and not to leak memory - Campbell */
return m_colliders->GetProxy();
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.h b/source/gameengine/Ketsji/KX_TouchSensor.h
index 15ef653c1b2..476c63e89db 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.h
+++ b/source/gameengine/Ketsji/KX_TouchSensor.h
@@ -84,8 +84,9 @@ public:
virtual ~KX_TouchSensor();
virtual CValue* GetReplica();
+ virtual void ProcessReplica();
virtual void SynchronizeTransform();
- virtual bool Evaluate(CValue* event);
+ virtual bool Evaluate();
virtual void Init();
virtual void ReParent(SCA_IObject* parent);
@@ -102,7 +103,8 @@ public:
// obj1 = sensor physical controller, obj2 = physical controller of second object
// return value = true if collision should be checked on pair of object
virtual bool BroadPhaseFilterCollision(void*obj1,void*obj2) { return true; }
-
+ virtual bool BroadPhaseSensorFilterCollision(void*obj1,void*obj2);
+ virtual sensortype GetSensorType() { return ST_TOUCH; }
virtual bool IsPositiveTrigger() {
@@ -121,6 +123,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated ----->
diff --git a/source/gameengine/Ketsji/KX_TrackToActuator.cpp b/source/gameengine/Ketsji/KX_TrackToActuator.cpp
index fbf43de6cf4..5a50d0fb944 100644
--- a/source/gameengine/Ketsji/KX_TrackToActuator.cpp
+++ b/source/gameengine/Ketsji/KX_TrackToActuator.cpp
@@ -83,6 +83,10 @@ KX_TrackToActuator::KX_TrackToActuator(SCA_IObject *gameobj,
// if so, store the initial local rotation
// this is needed to revert the effect of the parent inverse node (TBC)
m_parentlocalmat = m_parentobj->GetSGNode()->GetLocalOrientation();
+ // use registration mechanism rather than AddRef, it creates zombie objects
+ m_parentobj->RegisterActuator(this);
+ // GetParent did AddRef, undo here
+ m_parentobj->Release();
}
}
}
@@ -189,7 +193,7 @@ KX_TrackToActuator::~KX_TrackToActuator()
if (m_object)
m_object->UnregisterActuator(this);
if (m_parentobj)
- m_parentobj->Release();
+ m_parentobj->UnregisterActuator(this);
} /* end of destructor */
void KX_TrackToActuator::ProcessReplica()
@@ -198,7 +202,7 @@ void KX_TrackToActuator::ProcessReplica()
if (m_object)
m_object->RegisterActuator(this);
if (m_parentobj)
- m_parentobj->AddRef();
+ m_parentobj->RegisterActuator(this);
SCA_IActuator::ProcessReplica();
}
@@ -211,6 +215,11 @@ bool KX_TrackToActuator::UnlinkObject(SCA_IObject* clientobj)
m_object = NULL;
return true;
}
+ if (clientobj == m_parentobj)
+ {
+ m_parentobj = NULL;
+ return true;
+ }
return false;
}
@@ -227,9 +236,9 @@ void KX_TrackToActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
void **h_parobj = (*obj_map)[m_parentobj];
if (h_parobj) {
if (m_parentobj)
- m_parentobj->Release();
+ m_parentobj->UnregisterActuator(this);
m_parentobj= (KX_GameObject*)(*h_parobj);
- m_parentobj->AddRef();
+ m_parentobj->RegisterActuator(this);
}
}
@@ -425,8 +434,13 @@ bool KX_TrackToActuator::Update(double curtime, bool frame)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_TrackToActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_TrackToActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -490,7 +504,7 @@ int KX_TrackToActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUT
KX_GameObject *gameobj;
if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_TrackToActuator"))
- return 1; // ConvertPythonToGameObject sets the error
+ return PY_SET_ATTR_FAIL; // ConvertPythonToGameObject sets the error
if (actuator->m_object != NULL)
actuator->m_object->UnregisterActuator(actuator);
@@ -500,7 +514,7 @@ int KX_TrackToActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUT
if (actuator->m_object)
actuator->m_object->RegisterActuator(actuator);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
@@ -509,6 +523,10 @@ PyObject* KX_TrackToActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_TrackToActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_TrackToActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);
diff --git a/source/gameengine/Ketsji/KX_TrackToActuator.h b/source/gameengine/Ketsji/KX_TrackToActuator.h
index 99505f93cfe..c4cc2b1f062 100644
--- a/source/gameengine/Ketsji/KX_TrackToActuator.h
+++ b/source/gameengine/Ketsji/KX_TrackToActuator.h
@@ -61,8 +61,6 @@ class KX_TrackToActuator : public SCA_IActuator
virtual CValue* GetReplica() {
KX_TrackToActuator* replica = new KX_TrackToActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
};
@@ -73,6 +71,7 @@ class KX_TrackToActuator : public SCA_IActuator
/* Python part */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
/* These are used to get and set m_ob */
diff --git a/source/gameengine/Ketsji/KX_VehicleWrapper.cpp b/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
index 1a6fb196db5..8146d04a878 100644
--- a/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
@@ -273,8 +273,13 @@ PyObject* KX_VehicleWrapper::PyGetConstraintType(PyObject* args)
//python specific stuff
PyTypeObject KX_VehicleWrapper::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_VehicleWrapper",
sizeof(PyObjectPlus_Proxy),
0,
@@ -303,32 +308,13 @@ PyObject* KX_VehicleWrapper::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
-int KX_VehicleWrapper::py_setattro(PyObject *attr,PyObject* pyobj)
-{
- /* TODO - strange setattr, needs updating */
- PyTypeObject* type = pyobj->ob_type;
- int result = 1;
-
- if (type == &PyList_Type)
- {
- result = 0;
- }
- if (type == &PyFloat_Type)
- {
- result = 0;
+PyObject* KX_VehicleWrapper::py_getattro_dict() {
+ py_getattro_dict_up(PyObjectPlus);
+}
- }
- if (type == &PyInt_Type)
- {
- result = 0;
- }
- if (type == &PyString_Type)
- {
- result = 0;
- }
- if (result)
- result = PyObjectPlus::py_setattro(attr,pyobj);
- return result;
+int KX_VehicleWrapper::py_setattro(PyObject *attr,PyObject* value)
+{
+ py_setattro_up(PyObjectPlus);
};
diff --git a/source/gameengine/Ketsji/KX_VehicleWrapper.h b/source/gameengine/Ketsji/KX_VehicleWrapper.h
index de7fe75cfba..c2b5e3d9251 100644
--- a/source/gameengine/Ketsji/KX_VehicleWrapper.h
+++ b/source/gameengine/Ketsji/KX_VehicleWrapper.h
@@ -13,6 +13,7 @@ class KX_VehicleWrapper : public PyObjectPlus
{
Py_Header;
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
std::vector<PHY_IMotionState*> m_motionStates;
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.cpp b/source/gameengine/Ketsji/KX_VertexProxy.cpp
index 88f63334285..4b0ad083473 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.cpp
+++ b/source/gameengine/Ketsji/KX_VertexProxy.cpp
@@ -37,8 +37,13 @@
#include "KX_PyMath.h"
PyTypeObject KX_VertexProxy::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_VertexProxy",
sizeof(PyObjectPlus_Proxy),
0,
@@ -57,8 +62,8 @@ PyTypeObject KX_VertexProxy::Type = {
PyParentObject KX_VertexProxy::Parents[] = {
&KX_VertexProxy::Type,
- &SCA_IObject::Type,
&CValue::Type,
+ &PyObjectPlus::Type,
NULL
};
@@ -79,6 +84,7 @@ PyMethodDef KX_VertexProxy::Methods[] = {
};
PyAttributeDef KX_VertexProxy::Attributes[] = {
+ //KX_PYATTRIBUTE_TODO("DummyProps"),
KX_PYATTRIBUTE_DUMMY("x"),
KX_PYATTRIBUTE_DUMMY("y"),
@@ -156,7 +162,11 @@ KX_VertexProxy::py_getattro(PyObject *attr)
return PyObjectFrom(MT_Vector3(m_vertex->getNormal()));
}
- py_getattro_up(SCA_IObject);
+ py_getattro_up(CValue);
+}
+
+PyObject* KX_VertexProxy::py_getattro_dict() {
+ py_getattro_dict_up(CValue);
}
int KX_VertexProxy::py_setattro(PyObject *attr, PyObject *pyvalue)
@@ -312,7 +322,7 @@ int KX_VertexProxy::py_setattro(PyObject *attr, PyObject *pyvalue)
}
}
- return SCA_IObject::py_setattro(attr, pyvalue);
+ return CValue::py_setattro(attr, pyvalue);
}
KX_VertexProxy::KX_VertexProxy(KX_MeshProxy*mesh, RAS_TexVert* vertex)
@@ -333,11 +343,9 @@ CValue* KX_VertexProxy::CalcFinal(VALUE_DATA_TYPE, VALUE_OPERATOR, CValue *) {
STR_String sVertexName="vertex";
const STR_String & KX_VertexProxy::GetText() {return sVertexName;};
double KX_VertexProxy::GetNumber() { return -1;}
-STR_String KX_VertexProxy::GetName() { return sVertexName;}
-void KX_VertexProxy::SetName(STR_String) { };
+STR_String& KX_VertexProxy::GetName() { return sVertexName;}
+void KX_VertexProxy::SetName(const char *) { };
CValue* KX_VertexProxy::GetReplica() { return NULL;}
-void KX_VertexProxy::ReplicaSetName(STR_String) {};
-
// stuff for python integration
@@ -427,9 +435,10 @@ PyObject* KX_VertexProxy::PyGetUV2()
PyObject* KX_VertexProxy::PySetUV2(PyObject* args)
{
MT_Point2 vec;
- unsigned int unit=0;
+ unsigned int unit= RAS_TexVert::SECOND_UV;
+
PyObject* list= NULL;
- if(!PyArg_ParseTuple(args, "Oi:setUV2", &list, &unit))
+ if(!PyArg_ParseTuple(args, "O|i:setUV2", &list, &unit))
return NULL;
if (!PyVecTo(list, vec))
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.h b/source/gameengine/Ketsji/KX_VertexProxy.h
index 67a15d96768..42db5fbc322 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.h
+++ b/source/gameengine/Ketsji/KX_VertexProxy.h
@@ -31,7 +31,7 @@
#include "SCA_IObject.h"
-class KX_VertexProxy : public SCA_IObject
+class KX_VertexProxy : public CValue
{
Py_Header;
protected:
@@ -47,14 +47,14 @@ public:
CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
const STR_String & GetText();
double GetNumber();
- STR_String GetName();
- void SetName(STR_String name); // Set the name of the value
- void ReplicaSetName(STR_String name);
+ STR_String& GetName();
+ void SetName(const char *name); // Set the name of the value
CValue* GetReplica();
// stuff for python integration
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetXYZ);
diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
index ba59d0d3d47..d848065ad73 100644
--- a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
+++ b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
@@ -64,8 +64,6 @@ KX_VisibilityActuator::GetReplica(
{
KX_VisibilityActuator* replica = new KX_VisibilityActuator(*this);
replica->ProcessReplica();
- // this will copy properties and so on...
- CValue::AddDataToReplica(replica);
return replica;
}
@@ -94,8 +92,13 @@ KX_VisibilityActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_VisibilityActuator::Type = {
- PyObject_HEAD_INIT(NULL)
- 0,
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+#endif
"KX_VisibilityActuator",
sizeof(PyObjectPlus_Proxy),
0,
@@ -133,8 +136,8 @@ KX_VisibilityActuator::Methods[] = {
PyAttributeDef KX_VisibilityActuator::Attributes[] = {
KX_PYATTRIBUTE_BOOL_RW("visibility", KX_VisibilityActuator, m_visible),
- KX_PYATTRIBUTE_BOOL_RW("occlusion", KX_VisibilityActuator, m_occlusion),
- KX_PYATTRIBUTE_BOOL_RW("recursion", KX_VisibilityActuator, m_recursive),
+ KX_PYATTRIBUTE_BOOL_RW("useOcclusion", KX_VisibilityActuator, m_occlusion),
+ KX_PYATTRIBUTE_BOOL_RW("useRecursion", KX_VisibilityActuator, m_recursive),
{ NULL } //Sentinel
};
@@ -143,6 +146,10 @@ PyObject* KX_VisibilityActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
+PyObject* KX_VisibilityActuator::py_getattro_dict() {
+ py_getattro_dict_up(SCA_IActuator);
+}
+
int KX_VisibilityActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);
diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.h b/source/gameengine/Ketsji/KX_VisibilityActuator.h
index 04633bce665..45aba50f645 100644
--- a/source/gameengine/Ketsji/KX_VisibilityActuator.h
+++ b/source/gameengine/Ketsji/KX_VisibilityActuator.h
@@ -70,6 +70,7 @@ class KX_VisibilityActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->
diff --git a/source/gameengine/Ketsji/SConscript b/source/gameengine/Ketsji/SConscript
index 921aba9c11f..5ab15c9eab3 100644
--- a/source/gameengine/Ketsji/SConscript
+++ b/source/gameengine/Ketsji/SConscript
@@ -8,25 +8,28 @@ defs = ''
# XXX 2.5
# Mathutils C files.
-#sources.extend([\
-# '#source/blender/python/api2_2x/Mathutils.c',\
-# '#source/blender/python/api2_2x/constant.c',\
-# '#source/blender/python/api2_2x/euler.c',\
-# '#source/blender/python/api2_2x/gen_utils.c',\
-# '#source/blender/python/api2_2x/matrix.c',\
-# '#source/blender/python/api2_2x/point.c',\
-# '#source/blender/python/api2_2x/quat.c',\
-# '#source/blender/python/api2_2x/vector.c',\
-#])
-#
-#sources.extend([\
-# '#source/blender/python/api2_2x/bpy_internal_import.c'
-#])
-#
-#
-#sources.extend([\
-# '#source/blender/python/api2_2x/BGL.c'
-#])
+"""
+if not env['BF_PYTHON_VERSION'].startswith('3'):
+ # TODO - py3 support
+ sources.extend([\
+ '#source/blender/python/api2_2x/Mathutils.c',\
+ '#source/blender/python/api2_2x/Geometry.c',\
+ '#source/blender/python/api2_2x/euler.c',\
+ '#source/blender/python/api2_2x/matrix.c',\
+ '#source/blender/python/api2_2x/quat.c',\
+ '#source/blender/python/api2_2x/vector.c',\
+ '#source/blender/python/api2_2x/constant.c',\
+ ])
+
+ sources.extend([\
+ '#source/blender/python/api2_2x/BGL.c'
+ ])
+
+sources.extend([\
+ '#source/blender/python/api2_2x/bpy_internal_import.c'
+])
+"""
+
incs = '. #source/blender/python/api2_2x' # Only for Mathutils! and bpy_internal_import.h, be very careful
diff --git a/source/gameengine/Network/NG_NetworkScene.cpp b/source/gameengine/Network/NG_NetworkScene.cpp
index 22263a2bdda..f8e489a8f48 100644
--- a/source/gameengine/Network/NG_NetworkScene.cpp
+++ b/source/gameengine/Network/NG_NetworkScene.cpp
@@ -119,7 +119,7 @@ void NG_NetworkScene::AddObject(NG_NetworkObject* object)
{
if (! m_networkdevice->IsOnline()) return;
- STR_String name = object->GetName();
+ const STR_String& name = object->GetName();
m_networkObjects.insert(name, object);
}
@@ -130,7 +130,7 @@ void NG_NetworkScene::RemoveObject(NG_NetworkObject* object)
{
if (! m_networkdevice->IsOnline()) return;
- STR_String name = object->GetName();
+ const STR_String& name = object->GetName();
m_networkObjects.remove(name);
}
diff --git a/source/gameengine/Physics/BlOde/OdePhysicsController.cpp b/source/gameengine/Physics/BlOde/OdePhysicsController.cpp
index efe4554d970..5efd0994311 100644
--- a/source/gameengine/Physics/BlOde/OdePhysicsController.cpp
+++ b/source/gameengine/Physics/BlOde/OdePhysicsController.cpp
@@ -379,7 +379,10 @@ bool ODEPhysicsController::SynchronizeMotionStates(float time)
return false; //it update the worldpos
}
-
+PHY_IMotionState* ODEPhysicsController::GetMotionState()
+{
+ return m_MotionState;
+}
// kinematic methods
diff --git a/source/gameengine/Physics/BlOde/OdePhysicsController.h b/source/gameengine/Physics/BlOde/OdePhysicsController.h
index e97afdb68c3..544d11da2ca 100644
--- a/source/gameengine/Physics/BlOde/OdePhysicsController.h
+++ b/source/gameengine/Physics/BlOde/OdePhysicsController.h
@@ -102,6 +102,7 @@ public:
virtual void WriteDynamicsToMotionState() {};
virtual void WriteMotionStateToDynamics(bool nondynaonly);
+ virtual class PHY_IMotionState* GetMotionState();
/**
call from Scene Graph Node to 'update'.
diff --git a/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.cpp b/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.cpp
index 2e8ee31058f..54e97858b7f 100644
--- a/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.cpp
@@ -75,7 +75,7 @@ float ODEPhysicsEnvironment::getFixedTimeStep()
-bool ODEPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep1)
+bool ODEPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep1,float interval)
{
float deltaTime = timeStep1;
diff --git a/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h b/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h
index 2e4709cf420..54e4f7f90e1 100644
--- a/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h
+++ b/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h
@@ -44,7 +44,7 @@ public:
// Perform an integration step of duration 'timeStep'.
- virtual bool proceedDeltaTime(double curTime,float timeStep);
+ virtual bool proceedDeltaTime(double curTime,float timeStep,float interval);
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep);
virtual float getFixedTimeStep();
@@ -64,8 +64,8 @@ public:
virtual void addTouchCallback(int response_class, PHY_ResponseCallback callback, void *user)
{
}
- virtual void requestCollisionCallback(PHY_IPhysicsController* ctrl) {}
- virtual void removeCollisionCallback(PHY_IPhysicsController* ctrl) {}
+ virtual bool requestCollisionCallback(PHY_IPhysicsController* ctrl) {return false;}
+ virtual bool removeCollisionCallback(PHY_IPhysicsController* ctrl) {return false;}
virtual PHY_IPhysicsController* CreateSphereController(float radius,const PHY__Vector3& position) {return 0;}
virtual PHY_IPhysicsController* CreateConeController(float coneradius,float coneheight) { return 0;}
diff --git a/source/gameengine/Physics/Bullet/CMakeLists.txt b/source/gameengine/Physics/Bullet/CMakeLists.txt
index ec2cdede683..02f2aa635af 100644
--- a/source/gameengine/Physics/Bullet/CMakeLists.txt
+++ b/source/gameengine/Physics/Bullet/CMakeLists.txt
@@ -32,6 +32,7 @@ SET(INC
../../../../extern/bullet2/src
../../../../extern/glew/include
../../../../intern/moto/include
+ ../../../../intern/guardedalloc
../../../kernel/gen_system
../../../../intern/string
../../../../intern/SoundSystem
@@ -41,6 +42,8 @@ SET(INC
../../GameLogic
../../SceneGraph
../../../../source/blender/makesdna
+ ../../../../source/blender/blenlib
+ ../../../../source/blender/blenkernel
${PYTHON_INC}
)
diff --git a/source/gameengine/Physics/Bullet/CcdGraphicController.cpp b/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
index caf18fd28ba..2dbbb7fa4a0 100644
--- a/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
@@ -47,11 +47,24 @@ void CcdGraphicController::setLocalAabb(const btVector3& aabbMin,const btVector3
void CcdGraphicController::setLocalAabb(const MT_Point3& aabbMin,const MT_Point3& aabbMax)
{
- m_localAabbMin = btVector3(aabbMin[0],aabbMin[1],aabbMin[2]);
- m_localAabbMax = btVector3(aabbMax[0],aabbMax[1],aabbMax[2]);
+ m_localAabbMin.setValue(aabbMin[0],aabbMin[1],aabbMin[2]);
+ m_localAabbMax.setValue(aabbMax[0],aabbMax[1],aabbMax[2]);
SetGraphicTransform();
}
+void CcdGraphicController::setLocalAabb(const PHY__Vector3& aabbMin,const PHY__Vector3& aabbMax)
+{
+ m_localAabbMin.setValue(aabbMin[0],aabbMin[1],aabbMin[2]);
+ m_localAabbMax.setValue(aabbMax[0],aabbMax[1],aabbMax[2]);
+ SetGraphicTransform();
+}
+
+void CcdGraphicController::setLocalAabb(const float* aabbMin,const float* aabbMax)
+{
+ m_localAabbMin.setValue(aabbMin[0],aabbMin[1],aabbMin[2]);
+ m_localAabbMax.setValue(aabbMax[0],aabbMax[1],aabbMax[2]);
+ SetGraphicTransform();
+}
void CcdGraphicController::getAabb(btVector3& aabbMin, btVector3& aabbMax)
{
@@ -105,8 +118,17 @@ PHY_IGraphicController* CcdGraphicController::GetReplica(class PHY_IMotionState*
replica->m_motionState = motionState;
replica->m_newClientInfo = NULL;
replica->m_handle = NULL;
- m_phyEnv->addCcdGraphicController(replica);
+ // don't add the graphic controller now: work around a bug in Bullet with rescaling,
+ // (the scale of the controller is not yet defined).
+ //m_phyEnv->addCcdGraphicController(replica);
return replica;
}
+void CcdGraphicController::Activate(bool active)
+{
+ if (active)
+ m_phyEnv->addCcdGraphicController(this);
+ else
+ m_phyEnv->removeCcdGraphicController(this);
+}
diff --git a/source/gameengine/Physics/Bullet/CcdGraphicController.h b/source/gameengine/Physics/Bullet/CcdGraphicController.h
index 8faa0944313..b0626f902c2 100644
--- a/source/gameengine/Physics/Bullet/CcdGraphicController.h
+++ b/source/gameengine/Physics/Bullet/CcdGraphicController.h
@@ -38,6 +38,8 @@ public:
void setLocalAabb(const btVector3& aabbMin,const btVector3& aabbMax);
void setLocalAabb(const MT_Point3& aabbMin,const MT_Point3& aabbMax);
+ virtual void setLocalAabb(const PHY__Vector3& aabbMin,const PHY__Vector3& aabbMax);
+ virtual void setLocalAabb(const float aabbMin[3],const float aabbMax[3]);
PHY_IMotionState* GetMotionState() { return m_motionState; }
void getAabb(btVector3& aabbMin, btVector3& aabbMax);
@@ -53,6 +55,10 @@ public:
* Updates the Aabb based on the motion state
*/
virtual bool SetGraphicTransform();
+ /**
+ * Add/remove to environment
+ */
+ virtual void Activate(bool active);
// client info for culling
virtual void* getNewClientInfo() { return m_newClientInfo; }
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
index 0b9da8f46d3..d22c09b4d3e 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
@@ -35,6 +35,10 @@ subject to the following restrictions:
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
+extern "C"{
+#include "BKE_cdderivedmesh.h"
+}
+
class BP_Proxy;
///todo: fill all the empty CcdPhysicsController methods, hook them up to the btRigidBody class
@@ -88,16 +92,19 @@ CcdPhysicsController::CcdPhysicsController (const CcdConstructionInfo& ci)
}
-btTransform CcdPhysicsController::GetTransformFromMotionState(PHY_IMotionState* motionState)
+btTransform& CcdPhysicsController::GetTransformFromMotionState(PHY_IMotionState* motionState)
{
- btTransform trans;
- float tmp[3];
- motionState->getWorldPosition(tmp[0],tmp[1],tmp[2]);
- trans.setOrigin(btVector3(tmp[0],tmp[1],tmp[2]));
-
- btQuaternion orn;
- motionState->getWorldOrientation(orn[0],orn[1],orn[2],orn[3]);
- trans.setRotation(orn);
+ static btTransform trans;
+ btVector3 tmp;
+ motionState->getWorldPosition(tmp.m_floats[0], tmp.m_floats[1], tmp.m_floats[2]);
+ trans.setOrigin(tmp);
+
+ float ori[12];
+ motionState->getWorldOrientation(ori);
+ trans.getBasis().setFromOpenGLSubMatrix(ori);
+ //btQuaternion orn;
+ //motionState->getWorldOrientation(orn[0],orn[1],orn[2],orn[3]);
+ //trans.setRotation(orn);
return trans;
}
@@ -114,18 +121,18 @@ public:
}
- virtual void getWorldTransform(btTransform& worldTrans ) const
+ void getWorldTransform(btTransform& worldTrans ) const
{
- float pos[3];
- float quatOrn[4];
+ btVector3 pos;
+ float ori[12];
- m_blenderMotionState->getWorldPosition(pos[0],pos[1],pos[2]);
- m_blenderMotionState->getWorldOrientation(quatOrn[0],quatOrn[1],quatOrn[2],quatOrn[3]);
- worldTrans.setOrigin(btVector3(pos[0],pos[1],pos[2]));
- worldTrans.setBasis(btMatrix3x3(btQuaternion(quatOrn[0],quatOrn[1],quatOrn[2],quatOrn[3])));
+ m_blenderMotionState->getWorldPosition(pos.m_floats[0],pos.m_floats[1],pos.m_floats[2]);
+ m_blenderMotionState->getWorldOrientation(ori);
+ worldTrans.setOrigin(pos);
+ worldTrans.getBasis().setFromOpenGLSubMatrix(ori);
}
- virtual void setWorldTransform(const btTransform& worldTrans)
+ void setWorldTransform(const btTransform& worldTrans)
{
m_blenderMotionState->setWorldPosition(worldTrans.getOrigin().getX(),worldTrans.getOrigin().getY(),worldTrans.getOrigin().getZ());
btQuaternion rotQuat = worldTrans.getRotation();
@@ -178,12 +185,12 @@ void CcdPhysicsController::CreateRigidbody()
rbci.m_restitution = m_cci.m_restitution;
- int nodecount = 0;
+
+
- int numtriangles = 1;
btVector3 p(0,0,0);// = getOrigin();
- btScalar h = 1.f;
+
btSoftRigidDynamicsWorld* softDynaWorld = (btSoftRigidDynamicsWorld*)m_cci.m_physicsEnv->getDynamicsWorld();
@@ -289,7 +296,11 @@ void CcdPhysicsController::CreateRigidbody()
}
}
-
+ if (m_cci.m_margin > 0.f)
+ {
+ psb->getCollisionShape()->setMargin(m_cci.m_margin);
+ psb->updateBounds();
+ }
m_object = psb;
@@ -489,10 +500,12 @@ void CcdPhysicsController::CreateRigidbody()
//convert collision flags!
//special case: a near/radar sensor controller should not be defined static or it will
//generate loads of static-static collision messages on the console
- if ((m_cci.m_collisionFilterGroup & CcdConstructionInfo::SensorFilter) != 0)
+ if (m_cci.m_bSensor)
{
// reset the flags that have been set so far
GetCollisionObject()->setCollisionFlags(0);
+ // sensor must never go to sleep: they need to detect continously
+ GetCollisionObject()->setActivationState(DISABLE_DEACTIVATION);
}
GetCollisionObject()->setCollisionFlags(m_object->getCollisionFlags() | m_cci.m_collisionFlags);
btRigidBody* body = GetRigidBody();
@@ -506,6 +519,8 @@ void CcdPhysicsController::CreateRigidbody()
{
body->setAngularFactor(0.f);
}
+ body->setContactProcessingThreshold(m_cci.m_contactProcessingThreshold);
+
}
if (m_object && m_cci.m_do_anisotropic)
{
@@ -572,10 +587,22 @@ bool CcdPhysicsController::SynchronizeMotionStates(float time)
btSoftBody* sb = GetSoftBody();
if (sb)
{
- btVector3 aabbMin,aabbMax;
- sb->getAabb(aabbMin,aabbMax);
- btVector3 worldPos = (aabbMax+aabbMin)*0.5f;
- m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
+ if (sb->m_pose.m_bframe)
+ {
+ btVector3 worldPos = sb->m_pose.m_com;
+ btQuaternion worldquat;
+ btMatrix3x3 trs = sb->m_pose.m_rot*sb->m_pose.m_scl;
+ trs.getRotation(worldquat);
+ m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
+ m_MotionState->setWorldOrientation(worldquat[0],worldquat[1],worldquat[2],worldquat[3]);
+ }
+ else
+ {
+ btVector3 aabbMin,aabbMax;
+ sb->getAabb(aabbMin,aabbMax);
+ btVector3 worldPos = (aabbMax+aabbMin)*0.5f;
+ m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
+ }
m_MotionState->calculateWorldTransformations();
return true;
}
@@ -597,12 +624,13 @@ bool CcdPhysicsController::SynchronizeMotionStates(float time)
body->setLinearVelocity(linvel * (m_cci.m_clamp_vel_min / len));
}
- const btVector3& worldPos = body->getCenterOfMassPosition();
+ const btTransform& xform = body->getCenterOfMassTransform();
+ const btMatrix3x3& worldOri = xform.getBasis();
+ const btVector3& worldPos = xform.getOrigin();
+ float ori[12];
+ worldOri.getOpenGLSubMatrix(ori);
+ m_MotionState->setWorldOrientation(ori);
m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
-
- const btQuaternion& worldquat = body->getOrientation();
- m_MotionState->setWorldOrientation(worldquat[0],worldquat[1],worldquat[2],worldquat[3]);
-
m_MotionState->calculateWorldTransformations();
float scale[3];
@@ -639,8 +667,10 @@ bool CcdPhysicsController::SynchronizeMotionStates(float time)
void CcdPhysicsController::WriteMotionStateToDynamics(bool nondynaonly)
{
-
+ btTransform& xform = CcdPhysicsController::GetTransformFromMotionState(m_MotionState);
+ SetCenterOfMassTransform(xform);
}
+
void CcdPhysicsController::WriteDynamicsToMotionState()
{
}
@@ -657,12 +687,12 @@ void CcdPhysicsController::PostProcessReplica(class PHY_IMotionState* motionsta
if (m_shapeInfo)
{
m_shapeInfo->AddRef();
- m_collisionShape = m_shapeInfo->CreateBulletShape();
+ m_collisionShape = m_shapeInfo->CreateBulletShape(m_cci.m_margin);
if (m_collisionShape)
{
// new shape has no scaling, apply initial scaling
- m_collisionShape->setMargin(m_cci.m_margin);
+ //m_collisionShape->setMargin(m_cci.m_margin);
m_collisionShape->setLocalScaling(m_cci.m_scaling);
if (m_cci.m_mass)
@@ -670,19 +700,29 @@ void CcdPhysicsController::PostProcessReplica(class PHY_IMotionState* motionsta
}
}
+ // load some characterists that are not
+ btRigidBody* oldbody = GetRigidBody();
m_object = 0;
CreateRigidbody();
-
btRigidBody* body = GetRigidBody();
-
if (body)
{
if (m_cci.m_mass)
{
body->setMassProps(m_cci.m_mass, m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor);
}
- }
- m_cci.m_physicsEnv->addCcdPhysicsController(this);
+
+ if (oldbody)
+ {
+ body->setLinearFactor(oldbody->getLinearFactor());
+ body->setAngularFactor(oldbody->getAngularFactor());
+ if (oldbody->getActivationState() == DISABLE_DEACTIVATION)
+ body->setActivationState(DISABLE_DEACTIVATION);
+ }
+ }
+ // sensor object are added when needed
+ if (!m_cci.m_bSensor)
+ m_cci.m_physicsEnv->addCcdPhysicsController(this);
/* SM_Object* dynaparent=0;
@@ -759,10 +799,13 @@ void CcdPhysicsController::RelativeTranslate(float dlocX,float dlocY,float dloc
m_object->activate(true);
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ // kinematic object should not set the transform, it disturbs the velocity interpolation
+ return;
}
- btRigidBody* body = GetRigidBody();
+ // btRigidBody* body = GetRigidBody(); // not used anymore
btVector3 dloc(dlocX,dlocY,dlocZ);
btTransform xform = m_object->getWorldTransform();
@@ -785,7 +828,10 @@ void CcdPhysicsController::RelativeRotate(const float rotval[9],bool local)
m_object->activate(true);
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ // kinematic object should not set the transform, it disturbs the velocity interpolation
+ return;
}
btMatrix3x3 drotmat( rotval[0],rotval[4],rotval[8],
@@ -808,10 +854,9 @@ void CcdPhysicsController::RelativeRotate(const float rotval[9],bool local)
void CcdPhysicsController::GetWorldOrientation(btMatrix3x3& mat)
{
- float orn[4];
- m_MotionState->getWorldOrientation(orn[0],orn[1],orn[2],orn[3]);
- btQuaternion quat(orn[0],orn[1],orn[2],orn[3]);
- mat.setRotation(quat);
+ float ori[12];
+ m_MotionState->getWorldOrientation(ori);
+ mat.setFromOpenGLSubMatrix(ori);
}
void CcdPhysicsController::getOrientation(float &quatImag0,float &quatImag1,float &quatImag2,float &quatReal)
@@ -829,7 +874,10 @@ void CcdPhysicsController::setOrientation(float quatImag0,float quatImag1,float
m_object->activate(true);
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ // kinematic object should not set the transform, it disturbs the velocity interpolation
+ return;
}
// not required
//m_MotionState->setWorldOrientation(quatImag0,quatImag1,quatImag2,quatReal);
@@ -850,7 +898,7 @@ void CcdPhysicsController::setWorldOrientation(const btMatrix3x3& orn)
if (m_object)
{
m_object->activate(true);
- if (m_object->isStaticObject())
+ if (m_object->isStaticObject() && !m_cci.m_bSensor)
{
m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
}
@@ -881,7 +929,10 @@ void CcdPhysicsController::setPosition(float posX,float posY,float posZ)
m_object->activate(true);
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ // kinematic object should not set the transform, it disturbs the velocity interpolation
+ return;
}
// not required, this function is only used to update the physic controller
//m_MotionState->setWorldPosition(posX,posY,posZ);
@@ -893,9 +944,19 @@ void CcdPhysicsController::setPosition(float posX,float posY,float posZ)
// not required
//m_bulletMotionState->setWorldTransform(xform);
}
+}
-
+void CcdPhysicsController::forceWorldTransform(const btMatrix3x3& mat, const btVector3& pos)
+{
+ if (m_object)
+ {
+ btTransform& xform = m_object->getWorldTransform();
+ xform.setBasis(mat);
+ xform.setOrigin(pos);
+ }
}
+
+
void CcdPhysicsController::resolveCombinedVelocities(float linvelX,float linvelY,float linvelZ,float angVelX,float angVelY,float angVelZ)
{
}
@@ -945,14 +1006,24 @@ void CcdPhysicsController::ApplyTorque(float torqueX,float torqueY,float torque
m_object->activate();
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ return;
}
if (local)
{
torque = xform.getBasis()*torque;
}
if (body)
+ {
+ //workaround for incompatibility between 'DYNAMIC' game object, and angular factor
+ //a DYNAMIC object has some inconsistency: it has no angular effect due to collisions, but still has torque
+ const btVector3& angFac = body->getAngularFactor();
+ btVector3 tmpFac(0,0,1);
+ body->setAngularFactor(tmpFac);
body->applyTorque(torque);
+ body->setAngularFactor(angFac);
+ }
}
}
@@ -966,27 +1037,26 @@ void CcdPhysicsController::ApplyForce(float forceX,float forceY,float forceZ,bo
m_object->activate();
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ return;
}
-
+ btTransform xform = m_object->getWorldTransform();
+
+ if (local)
+ {
+ force = xform.getBasis()*force;
+ }
+ btRigidBody* body = GetRigidBody();
+ if (body)
+ body->applyCentralForce(force);
+ btSoftBody* soft = GetSoftBody();
+ if (soft)
{
- btTransform xform = m_object->getWorldTransform();
-
- if (local)
- {
- force = xform.getBasis()*force;
- }
- btRigidBody* body = GetRigidBody();
- if (body)
- body->applyCentralForce(force);
- btSoftBody* soft = GetSoftBody();
- if (soft)
- {
- // the force is applied on each node, must reduce it in the same extend
- if (soft->m_nodes.size() > 0)
- force /= soft->m_nodes.size();
- soft->addForce(force);
- }
+ // the force is applied on each node, must reduce it in the same extend
+ if (soft->m_nodes.size() > 0)
+ force /= soft->m_nodes.size();
+ soft->addForce(force);
}
}
}
@@ -998,19 +1068,18 @@ void CcdPhysicsController::SetAngularVelocity(float ang_velX,float ang_velY,flo
m_object->activate(true);
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
- } else
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ return;
+ }
+ btTransform xform = m_object->getWorldTransform();
+ if (local)
{
- btTransform xform = m_object->getWorldTransform();
- if (local)
- {
- angvel = xform.getBasis()*angvel;
- }
- btRigidBody* body = GetRigidBody();
- if (body)
- body->setAngularVelocity(angvel);
-
+ angvel = xform.getBasis()*angvel;
}
+ btRigidBody* body = GetRigidBody();
+ if (body)
+ body->setAngularVelocity(angvel);
}
}
@@ -1023,7 +1092,8 @@ void CcdPhysicsController::SetLinearVelocity(float lin_velX,float lin_velY,floa
m_object->activate(true);
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
return;
}
@@ -1057,7 +1127,9 @@ void CcdPhysicsController::applyImpulse(float attachX,float attachY,float attac
m_object->activate();
if (m_object->isStaticObject())
{
- m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ if (!m_cci.m_bSensor)
+ m_object->setCollisionFlags(m_object->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
+ return;
}
btVector3 pos(attachX,attachY,attachZ);
@@ -1184,7 +1256,7 @@ PHY_IPhysicsController* CcdPhysicsController::GetReplica()
if (m_shapeInfo)
{
// This situation does not normally happen
- cinfo.m_collisionShape = m_shapeInfo->CreateBulletShape();
+ cinfo.m_collisionShape = m_shapeInfo->CreateBulletShape(0.01);
}
else if (m_collisionShape)
{
@@ -1251,28 +1323,22 @@ void DefaultMotionState::getWorldScaling(float& scaleX,float& scaleY,float& scal
void DefaultMotionState::getWorldOrientation(float& quatIma0,float& quatIma1,float& quatIma2,float& quatReal)
{
- quatIma0 = m_worldTransform.getRotation().x();
- quatIma1 = m_worldTransform.getRotation().y();
- quatIma2 = m_worldTransform.getRotation().z();
- quatReal = m_worldTransform.getRotation()[3];
+ btQuaternion quat = m_worldTransform.getRotation();
+ quatIma0 = quat.x();
+ quatIma1 = quat.y();
+ quatIma2 = quat.z();
+ quatReal = quat[3];
}
void DefaultMotionState::getWorldOrientation(float* ori)
{
- *ori++ = m_worldTransform.getBasis()[0].x();
- *ori++ = m_worldTransform.getBasis()[1].x();
- *ori++ = m_worldTransform.getBasis()[1].x();
- *ori++ = 0.f;
- *ori++ = m_worldTransform.getBasis()[0].y();
- *ori++ = m_worldTransform.getBasis()[1].y();
- *ori++ = m_worldTransform.getBasis()[1].y();
- *ori++ = 0.f;
- *ori++ = m_worldTransform.getBasis()[0].z();
- *ori++ = m_worldTransform.getBasis()[1].z();
- *ori++ = m_worldTransform.getBasis()[1].z();
- *ori++ = 0.f;
+ m_worldTransform.getBasis().getOpenGLSubMatrix(ori);
}
+void DefaultMotionState::setWorldOrientation(const float* ori)
+{
+ m_worldTransform.getBasis().setFromOpenGLSubMatrix(ori);
+}
void DefaultMotionState::setWorldPosition(float posX,float posY,float posZ)
{
btVector3 pos(posX,posY,posZ);
@@ -1293,9 +1359,9 @@ void DefaultMotionState::calculateWorldTransformations()
// Shape constructor
std::map<RAS_MeshObject*, CcdShapeConstructionInfo*> CcdShapeConstructionInfo::m_meshShapeMap;
-CcdShapeConstructionInfo* CcdShapeConstructionInfo::FindMesh(RAS_MeshObject* mesh, bool polytope)
+CcdShapeConstructionInfo* CcdShapeConstructionInfo::FindMesh(RAS_MeshObject* mesh, struct DerivedMesh* dm, bool polytope, bool gimpact)
{
- if (polytope)
+ if (polytope || dm || gimpact)
// not yet supported
return NULL;
@@ -1305,9 +1371,9 @@ CcdShapeConstructionInfo* CcdShapeConstructionInfo::FindMesh(RAS_MeshObject* mes
return NULL;
}
-bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, bool polytope,bool useGimpact)
+bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, bool polytope,bool useGimpact)
{
- int numpolys;
+ int numpolys, numverts;
m_useGimpact = useGimpact;
@@ -1316,6 +1382,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, bool polytope,bo
assert(IsUnused());
m_shapeType = PHY_SHAPE_NONE;
m_meshObject = NULL;
+ bool free_dm = false;
// No mesh object or mesh has no polys
if (!meshobj || meshobj->HasColliderPolygon()==false) {
@@ -1325,164 +1392,182 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, bool polytope,bo
return false;
}
- numpolys = meshobj->NumPolygons();
+ if (!dm) {
+ free_dm = true;
+ dm = CDDM_from_mesh(meshobj->GetMesh(), NULL);
+ }
+
+ MVert *mvert = dm->getVertArray(dm);
+ MFace *mface = dm->getFaceArray(dm);
+ numpolys = dm->getNumFaces(dm);
+ numverts = dm->getNumVerts(dm);
+ int* index = (int*)dm->getFaceDataArray(dm, CD_ORIGINDEX);
m_shapeType = (polytope) ? PHY_SHAPE_POLYTOPE : PHY_SHAPE_MESH;
/* Convert blender geometry into bullet mesh, need these vars for mapping */
- vector<bool> vert_tag_array(meshobj->GetMesh()->totvert, false);
+ vector<bool> vert_tag_array(numverts, false);
unsigned int tot_bt_verts= 0;
- unsigned int orig_index;
- int i;
if (polytope)
{
// Tag verts we're using
for (int p2=0; p2<numpolys; p2++)
{
- RAS_Polygon* poly= meshobj->GetPolygon(p2);
+ MFace* mf = &mface[p2];
+ RAS_Polygon* poly = meshobj->GetPolygon(index[p2]);
// only add polygons that have the collision flag set
if (poly->IsCollider())
{
- for(i=0; i<poly->VertexCount(); i++) {
- orig_index= poly->GetVertex(i)->getOrigIndex();
- if (vert_tag_array[orig_index]==false)
- {
- vert_tag_array[orig_index]= true;
- tot_bt_verts++;
- }
- }
+ if (vert_tag_array[mf->v1]==false) {vert_tag_array[mf->v1]= true;tot_bt_verts++;}
+ if (vert_tag_array[mf->v2]==false) {vert_tag_array[mf->v2]= true;tot_bt_verts++;}
+ if (vert_tag_array[mf->v3]==false) {vert_tag_array[mf->v3]= true;tot_bt_verts++;}
+ if (mf->v4 && vert_tag_array[mf->v4]==false) {vert_tag_array[mf->v4]= true;tot_bt_verts++;}
}
}
- m_vertexArray.resize(tot_bt_verts);
+ m_vertexArray.resize(tot_bt_verts*3);
- btVector3 *bt= &m_vertexArray[0];
+ btScalar *bt= &m_vertexArray[0];
for (int p2=0; p2<numpolys; p2++)
{
- RAS_Polygon* poly= meshobj->GetPolygon(p2);
+ MFace* mf = &mface[p2];
+ RAS_Polygon* poly= meshobj->GetPolygon(index[p2]);
// only add polygons that have the collisionflag set
if (poly->IsCollider())
{
- for(i=0; i<poly->VertexCount(); i++) {
- RAS_TexVert *v= poly->GetVertex(i);
- orig_index= v->getOrigIndex();
-
- if (vert_tag_array[orig_index]==true)
- {
- const float* vtx = v->getXYZ();
- vert_tag_array[orig_index]= false;
-
- bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
- bt++;
- }
+ if (vert_tag_array[mf->v1]==true)
+ {
+ const float* vtx = mvert[mf->v1].co;
+ vert_tag_array[mf->v1]= false;
+ *bt++ = vtx[0];
+ *bt++ = vtx[1];
+ *bt++ = vtx[2];
+ }
+ if (vert_tag_array[mf->v2]==true)
+ {
+ const float* vtx = mvert[mf->v2].co;
+ vert_tag_array[mf->v2]= false;
+ *bt++ = vtx[0];
+ *bt++ = vtx[1];
+ *bt++ = vtx[2];
+ }
+ if (vert_tag_array[mf->v3]==true)
+ {
+ const float* vtx = mvert[mf->v3].co;
+ vert_tag_array[mf->v3]= false;
+ *bt++ = vtx[0];
+ *bt++ = vtx[1];
+ *bt++ = vtx[2];
+ }
+ if (mf->v4 && vert_tag_array[mf->v4]==true)
+ {
+ const float* vtx = mvert[mf->v4].co;
+ vert_tag_array[mf->v4]= false;
+ *bt++ = vtx[0];
+ *bt++ = vtx[1];
+ *bt++ = vtx[2];
}
}
}
}
else {
unsigned int tot_bt_tris= 0;
- vector<int> vert_remap_array(meshobj->GetMesh()->totvert, 0);
+ vector<int> vert_remap_array(numverts, 0);
// Tag verts we're using
for (int p2=0; p2<numpolys; p2++)
{
- RAS_Polygon* poly= meshobj->GetPolygon(p2);
+ MFace* mf = &mface[p2];
+ RAS_Polygon* poly= meshobj->GetPolygon(index[p2]);
// only add polygons that have the collision flag set
if (poly->IsCollider())
{
- for(i=0; i<poly->VertexCount(); i++) {
- orig_index= poly->GetVertex(i)->getOrigIndex();
- if (vert_tag_array[orig_index]==false)
- {
- vert_tag_array[orig_index]= true;
- vert_remap_array[orig_index]= tot_bt_verts;
- tot_bt_verts++;
- }
- }
-
- tot_bt_tris += (i==4 ? 2:1); /* a quad or a tri */
+ if (vert_tag_array[mf->v1]==false)
+ {vert_tag_array[mf->v1]= true;vert_remap_array[mf->v1]= tot_bt_verts;tot_bt_verts++;}
+ if (vert_tag_array[mf->v2]==false)
+ {vert_tag_array[mf->v2]= true;vert_remap_array[mf->v2]= tot_bt_verts;tot_bt_verts++;}
+ if (vert_tag_array[mf->v3]==false)
+ {vert_tag_array[mf->v3]= true;vert_remap_array[mf->v3]= tot_bt_verts;tot_bt_verts++;}
+ if (mf->v4 && vert_tag_array[mf->v4]==false)
+ {vert_tag_array[mf->v4]= true;vert_remap_array[mf->v4]= tot_bt_verts;tot_bt_verts++;}
+ tot_bt_tris += (mf->v4 ? 2:1); /* a quad or a tri */
}
}
- m_vertexArray.resize(tot_bt_verts);
+ m_vertexArray.resize(tot_bt_verts*3);
m_polygonIndexArray.resize(tot_bt_tris);
m_triFaceArray.resize(tot_bt_tris*3);
- btVector3 *bt= &m_vertexArray[0];
+ btScalar *bt= &m_vertexArray[0];
int *poly_index_pt= &m_polygonIndexArray[0];
int *tri_pt= &m_triFaceArray[0];
-
for (int p2=0; p2<numpolys; p2++)
{
- RAS_Polygon* poly= meshobj->GetPolygon(p2);
+ MFace* mf = &mface[p2];
+ RAS_Polygon* poly= meshobj->GetPolygon(index[p2]);
// only add polygons that have the collisionflag set
if (poly->IsCollider())
{
- RAS_TexVert *v1= poly->GetVertex(0);
- RAS_TexVert *v2= poly->GetVertex(1);
- RAS_TexVert *v3= poly->GetVertex(2);
- int i1= v1->getOrigIndex();
- int i2= v2->getOrigIndex();
- int i3= v3->getOrigIndex();
- const float* vtx;
+ MVert *v1= &mvert[mf->v1];
+ MVert *v2= &mvert[mf->v2];
+ MVert *v3= &mvert[mf->v3];
// the face indicies
- tri_pt[0]= vert_remap_array[i1];
- tri_pt[1]= vert_remap_array[i2];
- tri_pt[2]= vert_remap_array[i3];
+ tri_pt[0]= vert_remap_array[mf->v1];
+ tri_pt[1]= vert_remap_array[mf->v2];
+ tri_pt[2]= vert_remap_array[mf->v3];
tri_pt= tri_pt+3;
// m_polygonIndexArray
- *poly_index_pt= p2;
+ *poly_index_pt= index[p2];
poly_index_pt++;
// the vertex location
- if (vert_tag_array[i1]==true) { /* *** v1 *** */
- vert_tag_array[i1]= false;
- vtx = v1->getXYZ();
- bt->setX(vtx[0]); bt->setY( vtx[1]); bt->setZ(vtx[2]);
- bt++;
+ if (vert_tag_array[mf->v1]==true) { /* *** v1 *** */
+ vert_tag_array[mf->v1]= false;
+ *bt++ = v1->co[0];
+ *bt++ = v1->co[1];
+ *bt++ = v1->co[2];
}
- if (vert_tag_array[i2]==true) { /* *** v2 *** */
- vert_tag_array[i2]= false;
- vtx = v2->getXYZ();
- bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
- bt++;
+ if (vert_tag_array[mf->v2]==true) { /* *** v2 *** */
+ vert_tag_array[mf->v2]= false;
+ *bt++ = v2->co[0];
+ *bt++ = v2->co[1];
+ *bt++ = v2->co[2];
}
- if (vert_tag_array[i3]==true) { /* *** v3 *** */
- vert_tag_array[i3]= false;
- vtx = v3->getXYZ();
- bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
- bt++;
+ if (vert_tag_array[mf->v3]==true) { /* *** v3 *** */
+ vert_tag_array[mf->v3]= false;
+ *bt++ = v3->co[0];
+ *bt++ = v3->co[1];
+ *bt++ = v3->co[2];
}
- if (poly->VertexCount()==4)
+ if (mf->v4)
{
- RAS_TexVert *v4= poly->GetVertex(3);
- int i4= v4->getOrigIndex();
+ MVert *v4= &mvert[mf->v4];
- tri_pt[0]= vert_remap_array[i1];
- tri_pt[1]= vert_remap_array[i3];
- tri_pt[2]= vert_remap_array[i4];
+ tri_pt[0]= vert_remap_array[mf->v1];
+ tri_pt[1]= vert_remap_array[mf->v3];
+ tri_pt[2]= vert_remap_array[mf->v4];
tri_pt= tri_pt+3;
// m_polygonIndexArray
- *poly_index_pt= p2;
+ *poly_index_pt= index[p2];
poly_index_pt++;
// the vertex location
- if (vert_tag_array[i4]==true) { /* *** v4 *** */
- vert_tag_array[i4]= false;
- vtx = v4->getXYZ();
- bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
- bt++;
+ if (vert_tag_array[mf->v4]==true) { /* *** v4 *** */
+ vert_tag_array[mf->v4]= false;
+ *bt++ = v4->co[0];
+ *bt++ = v4->co[1];
+ *bt++ = v4->co[2];
}
}
}
@@ -1514,7 +1599,13 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, bool polytope,bo
#endif
m_meshObject = meshobj;
- if (!polytope)
+ if (free_dm) {
+ dm->release(dm);
+ dm = NULL;
+ }
+
+ // sharing only on static mesh at present, if you change that, you must also change in FindMesh
+ if (!polytope && !dm && !useGimpact)
{
// triangle shape can be shared, store the mesh object in the map
m_meshShapeMap.insert(std::pair<RAS_MeshObject*,CcdShapeConstructionInfo*>(meshobj,this));
@@ -1533,15 +1624,13 @@ bool CcdShapeConstructionInfo::SetProxy(CcdShapeConstructionInfo* shapeInfo)
return true;
}
-btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
+btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape(btScalar margin)
{
btCollisionShape* collisionShape = 0;
- btTriangleMeshShape* concaveShape = 0;
- btCompoundShape* compoundShape = 0;
- CcdShapeConstructionInfo* nextShapeInfo;
+ btCompoundShape* compoundShape = 0;
if (m_shapeType == PHY_SHAPE_PROXY && m_shapeProxy != NULL)
- return m_shapeProxy->CreateBulletShape();
+ return m_shapeProxy->CreateBulletShape(margin);
switch (m_shapeType)
{
@@ -1550,22 +1639,27 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
case PHY_SHAPE_BOX:
collisionShape = new btBoxShape(m_halfExtend);
+ collisionShape->setMargin(margin);
break;
case PHY_SHAPE_SPHERE:
collisionShape = new btSphereShape(m_radius);
+ collisionShape->setMargin(margin);
break;
case PHY_SHAPE_CYLINDER:
collisionShape = new btCylinderShapeZ(m_halfExtend);
+ collisionShape->setMargin(margin);
break;
case PHY_SHAPE_CONE:
collisionShape = new btConeShapeZ(m_radius, m_height);
+ collisionShape->setMargin(margin);
break;
case PHY_SHAPE_POLYTOPE:
- collisionShape = new btConvexHullShape(&m_vertexArray[0].getX(), m_vertexArray.size());
+ collisionShape = new btConvexHullShape(&m_vertexArray[0], m_vertexArray.size()/3, 3*sizeof(btScalar));
+ collisionShape->setMargin(margin);
break;
case PHY_SHAPE_MESH:
@@ -1582,13 +1676,13 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
m_polygonIndexArray.size(),
&m_triFaceArray[0],
3*sizeof(int),
- m_vertexArray.size(),
- (btScalar*) &m_vertexArray[0].x(),
- sizeof(btVector3)
+ m_vertexArray.size()/3,
+ &m_vertexArray[0],
+ 3*sizeof(btScalar)
);
btGImpactMeshShape* gimpactShape = new btGImpactMeshShape(indexVertexArrays);
-
+ gimpactShape->setMargin(margin);
collisionShape = gimpactShape;
gimpactShape->updateBound();
@@ -1606,13 +1700,14 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
collisionMeshData->m_weldingThreshold = m_weldingThreshold1;
bool removeDuplicateVertices=true;
// m_vertexArray not in multiple of 3 anymore, use m_triFaceArray
- for(int i=0; i<m_triFaceArray.size(); i+=3) {
- collisionMeshData->addTriangle(
- m_vertexArray[m_triFaceArray[i]],
- m_vertexArray[m_triFaceArray[i+1]],
- m_vertexArray[m_triFaceArray[i+2]],
- removeDuplicateVertices
- );
+ for(unsigned int i=0; i<m_triFaceArray.size(); i+=3) {
+ btScalar *bt = &m_vertexArray[3*m_triFaceArray[i]];
+ btVector3 v1(bt[0], bt[1], bt[2]);
+ bt = &m_vertexArray[3*m_triFaceArray[i+1]];
+ btVector3 v2(bt[0], bt[1], bt[2]);
+ bt = &m_vertexArray[3*m_triFaceArray[i+2]];
+ btVector3 v3(bt[0], bt[1], bt[2]);
+ collisionMeshData->addTriangle(v1, v2, v3, removeDuplicateVertices);
}
indexVertexArrays = collisionMeshData;
@@ -1622,9 +1717,9 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
m_polygonIndexArray.size(),
&m_triFaceArray[0],
3*sizeof(int),
- m_vertexArray.size(),
- (btScalar*) &m_vertexArray[0].x(),
- sizeof(btVector3));
+ m_vertexArray.size()/3,
+ &m_vertexArray[0],
+ 3*sizeof(btScalar));
}
// this shape will be shared and not deleted until shapeInfo is deleted
@@ -1632,6 +1727,7 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
m_unscaledShape->recalcLocalAabb();
}
collisionShape = new btScaledBvhTriangleMeshShape(m_unscaledShape, btVector3(1.0f,1.0f,1.0f));
+ collisionShape->setMargin(margin);
}
break;
@@ -1643,7 +1739,7 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
sit != m_shapeArray.end();
sit++)
{
- collisionShape = (*sit)->CreateBulletShape();
+ collisionShape = (*sit)->CreateBulletShape(margin);
if (collisionShape)
{
collisionShape->setLocalScaling((*sit)->m_childScale);
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
index 4510bbddf65..d73759bac76 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
@@ -36,6 +36,7 @@ extern bool gDisableDeactivation;
class CcdPhysicsEnvironment;
class btMotionState;
class RAS_MeshObject;
+struct DerivedMesh;
class btCollisionShape;
@@ -59,7 +60,7 @@ class CcdShapeConstructionInfo
public:
- static CcdShapeConstructionInfo* FindMesh(RAS_MeshObject* mesh, bool polytope);
+ static CcdShapeConstructionInfo* FindMesh(class RAS_MeshObject* mesh, struct DerivedMesh* dm, bool polytope, bool gimpact);
CcdShapeConstructionInfo() :
m_shapeType(PHY_SHAPE_NONE),
@@ -139,7 +140,7 @@ public:
return true;
}
- bool SetMesh(RAS_MeshObject* mesh, bool polytope,bool useGimpact);
+ bool SetMesh(class RAS_MeshObject* mesh, struct DerivedMesh* dm, bool polytope,bool useGimpact);
RAS_MeshObject* GetMesh(void)
{
return m_meshObject;
@@ -151,7 +152,7 @@ public:
return m_shapeProxy;
}
- btCollisionShape* CreateBulletShape();
+ btCollisionShape* CreateBulletShape(btScalar margin);
// member variables
PHY_ShapeType m_shapeType;
@@ -161,8 +162,8 @@ public:
btTransform m_childTrans;
btVector3 m_childScale;
void* m_userData;
- btAlignedObjectArray<btVector3> m_vertexArray; // Contains both vertex array for polytope shape and
- // triangle array for concave mesh shape.
+ btAlignedObjectArray<btScalar> m_vertexArray; // Contains both vertex array for polytope shape and
+ // triangle array for concave mesh shape. Each vertex is 3 consecutive values
// In this case a triangle is made of 3 consecutive points
std::vector<int> m_polygonIndexArray; // Contains the array of polygon index in the
// original mesh that correspond to shape triangles.
@@ -173,11 +174,7 @@ public:
void setVertexWeldingThreshold1(float threshold)
{
- m_weldingThreshold1 = threshold;
- }
- float getVertexWeldingThreshold1() const
- {
- return m_weldingThreshold1;
+ m_weldingThreshold1 = threshold*threshold;
}
protected:
static std::map<RAS_MeshObject*, CcdShapeConstructionInfo*> m_meshShapeMap;
@@ -225,6 +222,7 @@ struct CcdConstructionInfo
m_collisionFlags(0),
m_bRigid(false),
m_bSoft(false),
+ m_bSensor(false),
m_collisionFilterGroup(DefaultFilter),
m_collisionFilterMask(AllFilter),
m_collisionShape(0),
@@ -233,7 +231,8 @@ struct CcdConstructionInfo
m_physicsEnv(0),
m_inertiaFactor(1.f),
m_do_anisotropic(false),
- m_anisotropicFriction(1.f,1.f,1.f)
+ m_anisotropicFriction(1.f,1.f,1.f),
+ m_contactProcessingThreshold(1e10)
{
}
@@ -291,6 +290,7 @@ struct CcdConstructionInfo
int m_collisionFlags;
bool m_bRigid;
bool m_bSoft;
+ bool m_bSensor;
///optional use of collision group/mask:
///only collision with object goups that match the collision mask.
@@ -318,6 +318,13 @@ struct CcdConstructionInfo
btScalar m_fh_distance; ///< The range above the surface where Fh is active.
bool m_fh_normal; ///< Should the object slide off slopes?
float m_radius;//for fh backwards compatibility
+
+ ///m_contactProcessingThreshold allows to process contact points with positive distance
+ ///normally only contacts with negative distance (penetration) are solved
+ ///however, rigid body stacking is more stable when positive contacts are still passed into the constraint solver
+ ///this might sometimes lead to collisions with 'internal edges' such as a sliding character controller
+ ///so disable/set m_contactProcessingThreshold to zero for sliding characters etc.
+ float m_contactProcessingThreshold;///< Process contacts with positive distance in range [0..INF]
};
@@ -329,7 +336,7 @@ class btSoftBody;
///CcdPhysicsController is a physics object that supports continuous collision detection and time of impact based physics resolution.
class CcdPhysicsController : public PHY_IPhysicsController
{
-
+protected:
btCollisionObject* m_object;
@@ -364,8 +371,8 @@ class CcdPhysicsController : public PHY_IPhysicsController
return (--m_registerCount == 0) ? true : false;
}
- protected:
- void setWorldOrientation(const btMatrix3x3& mat);
+ void setWorldOrientation(const btMatrix3x3& mat);
+ void forceWorldTransform(const btMatrix3x3& mat, const btVector3& pos);
public:
@@ -410,6 +417,7 @@ class CcdPhysicsController : public PHY_IPhysicsController
virtual void WriteMotionStateToDynamics(bool nondynaonly);
virtual void WriteDynamicsToMotionState();
+
// controller replication
virtual void PostProcessReplica(class PHY_IMotionState* motionstate,class PHY_IPhysicsController* parentctrl);
@@ -508,7 +516,7 @@ class CcdPhysicsController : public PHY_IPhysicsController
void SetCenterOfMassTransform(btTransform& xform);
- static btTransform GetTransformFromMotionState(PHY_IMotionState* motionState);
+ static btTransform& GetTransformFromMotionState(PHY_IMotionState* motionState);
void setAabb(const btVector3& aabbMin,const btVector3& aabbMax);
@@ -566,6 +574,7 @@ class DefaultMotionState : public PHY_IMotionState
virtual void setWorldPosition(float posX,float posY,float posZ);
virtual void setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal);
virtual void getWorldOrientation(float* ori);
+ virtual void setWorldOrientation(const float* ori);
virtual void calculateWorldTransformations();
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index 3e1e0294321..bc7ccacc39b 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -415,61 +415,7 @@ void CcdPhysicsEnvironment::addCcdPhysicsController(CcdPhysicsController* ctrl)
obj->setActivationState(ISLAND_SLEEPING);
}
-
- //CollisionObject(body,ctrl->GetCollisionFilterGroup(),ctrl->GetCollisionFilterMask());
-
assert(obj->getBroadphaseHandle());
-
- btBroadphaseInterface* scene = getBroadphase();
-
-
- btCollisionShape* shapeinterface = ctrl->GetCollisionShape();
-
- assert(shapeinterface);
-
- const btTransform& t = ctrl->GetCollisionObject()->getWorldTransform();
-
-
- btVector3 minAabb,maxAabb;
-
- shapeinterface->getAabb(t,minAabb,maxAabb);
-
- float timeStep = 0.02f;
-
-
- //extent it with the motion
-
- if (body)
- {
- btVector3 linMotion = body->getLinearVelocity()*timeStep;
-
- float maxAabbx = maxAabb.getX();
- float maxAabby = maxAabb.getY();
- float maxAabbz = maxAabb.getZ();
- float minAabbx = minAabb.getX();
- float minAabby = minAabb.getY();
- float minAabbz = minAabb.getZ();
-
- if (linMotion.x() > 0.f)
- maxAabbx += linMotion.x();
- else
- minAabbx += linMotion.x();
- if (linMotion.y() > 0.f)
- maxAabby += linMotion.y();
- else
- minAabby += linMotion.y();
- if (linMotion.z() > 0.f)
- maxAabbz += linMotion.z();
- else
- minAabbz += linMotion.z();
-
-
- minAabb = btVector3(minAabbx,minAabby,minAabbz);
- maxAabb = btVector3(maxAabbx,maxAabby,maxAabbz);
- }
-
-
-
}
@@ -480,6 +426,13 @@ void CcdPhysicsEnvironment::removeCcdPhysicsController(CcdPhysicsController* ctr
btRigidBody* body = ctrl->GetRigidBody();
if (body)
{
+ for (int i=body->getNumConstraintRefs()-1;i>=0;i--)
+ {
+ btTypedConstraint* con = body->getConstraintRef(i);
+ m_dynamicsWorld->removeConstraint(con);
+ body->removeConstraintRef(con);
+ //delete con; //might be kept by python KX_ConstraintWrapper
+ }
m_dynamicsWorld->removeRigidBody(ctrl->GetRigidBody());
} else
{
@@ -533,6 +486,12 @@ void CcdPhysicsEnvironment::enableCcdPhysicsController(CcdPhysicsController* ctr
{
btCollisionObject* obj = ctrl->GetCollisionObject();
obj->setUserPointer(ctrl);
+ // update the position of the object from the user
+ if (ctrl->GetMotionState())
+ {
+ btTransform xform = CcdPhysicsController::GetTransformFromMotionState(ctrl->GetMotionState());
+ ctrl->SetCenterOfMassTransform(xform);
+ }
m_dynamicsWorld->addCollisionObject(obj,
ctrl->GetCollisionFilterGroup(), ctrl->GetCollisionFilterMask());
}
@@ -573,7 +532,7 @@ void CcdPhysicsEnvironment::refreshCcdPhysicsController(CcdPhysicsController* ct
void CcdPhysicsEnvironment::addCcdGraphicController(CcdGraphicController* ctrl)
{
- if (m_cullingTree)
+ if (m_cullingTree && !ctrl->getBroadphaseHandle())
{
btVector3 minAabb;
btVector3 maxAabb;
@@ -617,7 +576,7 @@ void CcdPhysicsEnvironment::debugDrawWorld()
m_dynamicsWorld->debugDrawWorld();
}
-bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
+bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep,float interval)
{
std::set<CcdPhysicsController*>::iterator it;
int i;
@@ -627,14 +586,9 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
(*it)->SynchronizeMotionStates(timeStep);
}
- processFhSprings(curTime,timeStep);
-
float subStep = timeStep / float(m_numTimeSubSteps);
- for (i=0;i<m_numTimeSubSteps;i++)
- {
-// m_dynamicsWorld->stepSimulation(subStep,20,1./240.);//perform always a full simulation step
- m_dynamicsWorld->stepSimulation(subStep,0);//perform always a full simulation step
- }
+ i = m_dynamicsWorld->stepSimulation(interval,25,subStep);//perform always a full simulation step
+ processFhSprings(curTime,i*subStep);
for (it=m_controllers.begin(); it!=m_controllers.end(); it++)
{
@@ -686,9 +640,11 @@ public:
};
-void CcdPhysicsEnvironment::processFhSprings(double curTime,float timeStep)
+void CcdPhysicsEnvironment::processFhSprings(double curTime,float interval)
{
std::set<CcdPhysicsController*>::iterator it;
+ // dynamic of Fh spring is based on a timestep of 1/60
+ int numIter = (int)(interval*60.0001f);
for (it=m_controllers.begin(); it!=m_controllers.end(); it++)
{
@@ -700,8 +656,6 @@ void CcdPhysicsEnvironment::processFhSprings(double curTime,float timeStep)
//printf("has Fh or RotFh\n");
//re-implement SM_FhObject.cpp using btCollisionWorld::rayTest and info from ctrl->getConstructionInfo()
//send a ray from {0.0, 0.0, 0.0} towards {0.0, 0.0, -10.0}, in local coordinates
-
-
CcdPhysicsController* parentCtrl = ctrl->getParentCtrl();
btRigidBody* parentBody = parentCtrl?parentCtrl->GetRigidBody() : 0;
btRigidBody* cl_object = parentBody ? parentBody : body;
@@ -748,82 +702,78 @@ void CcdPhysicsEnvironment::processFhSprings(double curTime,float timeStep)
btVector3 normal = resultCallback.m_hitNormalWorld;
normal.normalize();
-
- if (ctrl->getConstructionInfo().m_do_fh)
+ for (int i=0; i<numIter; i++)
{
- btVector3 lspot = cl_object->getCenterOfMassPosition()
- + rayDirLocal * resultCallback.m_closestHitFraction;
+ if (ctrl->getConstructionInfo().m_do_fh)
+ {
+ btVector3 lspot = cl_object->getCenterOfMassPosition()
+ + rayDirLocal * resultCallback.m_closestHitFraction;
+
+
+ lspot -= hit_object->getCenterOfMassPosition();
+ btVector3 rel_vel = cl_object->getLinearVelocity() - hit_object->getVelocityInLocalPoint(lspot);
+ btScalar rel_vel_ray = ray_dir.dot(rel_vel);
+ btScalar spring_extent = 1.0 - distance / hitObjShapeProps.m_fh_distance;
+
+ btScalar i_spring = spring_extent * hitObjShapeProps.m_fh_spring;
+ btScalar i_damp = rel_vel_ray * hitObjShapeProps.m_fh_damping;
+
+ cl_object->setLinearVelocity(cl_object->getLinearVelocity() + (-(i_spring + i_damp) * ray_dir));
+ if (hitObjShapeProps.m_fh_normal)
+ {
+ cl_object->setLinearVelocity(cl_object->getLinearVelocity()+(i_spring + i_damp) *(normal - normal.dot(ray_dir) * ray_dir));
+ }
+ btVector3 lateral = rel_vel - rel_vel_ray * ray_dir;
+
+
+ if (ctrl->getConstructionInfo().m_do_anisotropic) {
+ //Bullet basis contains no scaling/shear etc.
+ const btMatrix3x3& lcs = cl_object->getCenterOfMassTransform().getBasis();
+ btVector3 loc_lateral = lateral * lcs;
+ const btVector3& friction_scaling = cl_object->getAnisotropicFriction();
+ loc_lateral *= friction_scaling;
+ lateral = lcs * loc_lateral;
+ }
- lspot -= hit_object->getCenterOfMassPosition();
- btVector3 rel_vel = cl_object->getLinearVelocity() - hit_object->getVelocityInLocalPoint(lspot);
- btScalar rel_vel_ray = ray_dir.dot(rel_vel);
- btScalar spring_extent = 1.0 - distance / hitObjShapeProps.m_fh_distance;
-
- btScalar i_spring = spring_extent * hitObjShapeProps.m_fh_spring;
- btScalar i_damp = rel_vel_ray * hitObjShapeProps.m_fh_damping;
-
- cl_object->setLinearVelocity(cl_object->getLinearVelocity() + (-(i_spring + i_damp) * ray_dir));
- if (hitObjShapeProps.m_fh_normal)
- {
- cl_object->setLinearVelocity(cl_object->getLinearVelocity()+(i_spring + i_damp) *(normal - normal.dot(ray_dir) * ray_dir));
- }
-
- btVector3 lateral = rel_vel - rel_vel_ray * ray_dir;
-
-
- if (ctrl->getConstructionInfo().m_do_anisotropic) {
- //Bullet basis contains no scaling/shear etc.
- const btMatrix3x3& lcs = cl_object->getCenterOfMassTransform().getBasis();
- btVector3 loc_lateral = lateral * lcs;
- const btVector3& friction_scaling = cl_object->getAnisotropicFriction();
- loc_lateral *= friction_scaling;
- lateral = lcs * loc_lateral;
+ btScalar rel_vel_lateral = lateral.length();
+
+ if (rel_vel_lateral > SIMD_EPSILON) {
+ btScalar friction_factor = hit_object->getFriction();//cl_object->getFriction();
+
+ btScalar max_friction = friction_factor * btMax(btScalar(0.0), i_spring);
+
+ btScalar rel_mom_lateral = rel_vel_lateral / cl_object->getInvMass();
+
+ btVector3 friction = (rel_mom_lateral > max_friction) ?
+ -lateral * (max_friction / rel_vel_lateral) :
+ -lateral;
+
+ cl_object->applyCentralImpulse(friction);
+ }
}
- btScalar rel_vel_lateral = lateral.length();
- if (rel_vel_lateral > SIMD_EPSILON) {
- btScalar friction_factor = hit_object->getFriction();//cl_object->getFriction();
+ if (ctrl->getConstructionInfo().m_do_rot_fh) {
+ btVector3 up2 = cl_object->getWorldTransform().getBasis().getColumn(2);
- btScalar max_friction = friction_factor * btMax(btScalar(0.0), i_spring);
+ btVector3 t_spring = up2.cross(normal) * hitObjShapeProps.m_fh_spring;
+ btVector3 ang_vel = cl_object->getAngularVelocity();
- btScalar rel_mom_lateral = rel_vel_lateral / cl_object->getInvMass();
+ // only rotations that tilt relative to the normal are damped
+ ang_vel -= ang_vel.dot(normal) * normal;
- btVector3 friction = (rel_mom_lateral > max_friction) ?
- -lateral * (max_friction / rel_vel_lateral) :
- -lateral;
+ btVector3 t_damp = ang_vel * hitObjShapeProps.m_fh_damping;
- cl_object->applyCentralImpulse(friction);
+ cl_object->setAngularVelocity(cl_object->getAngularVelocity() + (t_spring - t_damp));
}
}
-
-
- if (ctrl->getConstructionInfo().m_do_rot_fh) {
- btVector3 up2 = cl_object->getWorldTransform().getBasis().getColumn(2);
-
- btVector3 t_spring = up2.cross(normal) * hitObjShapeProps.m_fh_spring;
- btVector3 ang_vel = cl_object->getAngularVelocity();
-
- // only rotations that tilt relative to the normal are damped
- ang_vel -= ang_vel.dot(normal) * normal;
-
- btVector3 t_damp = ang_vel * hitObjShapeProps.m_fh_damping;
-
- cl_object->setAngularVelocity(cl_object->getAngularVelocity() + (t_spring - t_damp));
- }
-
}
-
-
}
-
-
}
}
-
}
void CcdPhysicsEnvironment::setDebugMode(int debugMode)
@@ -972,7 +922,7 @@ int CcdPhysicsEnvironment::createUniversalD6Constraint(
bool useReferenceFrameA = true;
- genericConstraint = new btGeneric6DofConstraint(
+ genericConstraint = new btGeneric6DofSpringConstraint(
*rb0,*rb1,
frameInA,frameInB,useReferenceFrameA);
genericConstraint->setLinearLowerLimit(linearMinLimits);
@@ -1053,7 +1003,7 @@ struct FilterClosestRayResultCallback : public btCollisionWorld::ClosestRayResul
virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace)
{
- CcdPhysicsController* curHit = static_cast<CcdPhysicsController*>(rayResult.m_collisionObject->getUserPointer());
+ //CcdPhysicsController* curHit = static_cast<CcdPhysicsController*>(rayResult.m_collisionObject->getUserPointer());
// save shape information as ClosestRayResultCallback::AddSingleResult() does not do it
if (rayResult.m_localShapeInfo)
{
@@ -1071,10 +1021,6 @@ struct FilterClosestRayResultCallback : public btCollisionWorld::ClosestRayResul
PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float toZ)
{
-
-
- float minFraction = 1.f;
-
btVector3 rayFrom(fromX,fromY,fromZ);
btVector3 rayTo(toX,toY,toZ);
@@ -1224,7 +1170,7 @@ struct OcclusionBuffer
{
m_initialized=false;
m_occlusion = false;
- m_buffer == NULL;
+ m_buffer = NULL;
m_bufferSize = 0;
}
// multiplication of column major matrices: m=m1*m2
@@ -1332,8 +1278,7 @@ struct OcclusionBuffer
static bool project(btVector4* p,int n)
{
for(int i=0;i<n;++i)
- {
- const btScalar iw=1/p[i][3];
+ {
p[i][2]=1/p[i][3];
p[i][0]*=p[i][2];
p[i][1]*=p[i][2];
@@ -1651,7 +1596,7 @@ struct OcclusionBuffer
6,5,1,2,
7,6,2,3,
5,4,0,1};
- for(int i=0;i<(sizeof(d)/sizeof(d[0]));)
+ for(unsigned int i=0;i<(sizeof(d)/sizeof(d[0]));)
{
const btVector4 p[]={ x[d[i++]],
x[d[i++]],
@@ -1841,6 +1786,45 @@ CcdPhysicsEnvironment::~CcdPhysicsEnvironment()
}
+float CcdPhysicsEnvironment::getConstraintParam(int constraintId,int param)
+{
+ btTypedConstraint* typedConstraint = getConstraintById(constraintId);
+ switch (typedConstraint->getUserConstraintType())
+ {
+ case PHY_GENERIC_6DOF_CONSTRAINT:
+ {
+
+ switch (param)
+ {
+ case 0: case 1: case 2:
+ {
+ //param = 0..2 are linear constraint values
+ btGeneric6DofConstraint* genCons = (btGeneric6DofConstraint*)typedConstraint;
+ genCons->calculateTransforms();
+ return genCons->getRelativePivotPosition(param);
+ break;
+ }
+ case 3: case 4: case 5:
+ {
+ //param = 3..5 are relative constraint (Euler) angles
+ btGeneric6DofConstraint* genCons = (btGeneric6DofConstraint*)typedConstraint;
+ genCons->calculateTransforms();
+ return genCons->getAngle(param-3);
+ break;
+ }
+ default:
+ {
+ }
+ }
+ break;
+ };
+ default:
+ {
+ };
+ };
+ return 0.f;
+}
+
void CcdPhysicsEnvironment::setConstraintParam(int constraintId,int param,float value0,float value1)
{
btTypedConstraint* typedConstraint = getConstraintById(constraintId);
@@ -1848,9 +1832,63 @@ void CcdPhysicsEnvironment::setConstraintParam(int constraintId,int param,float
{
case PHY_GENERIC_6DOF_CONSTRAINT:
{
- //param = 1..12, min0,max0,min1,max1...min6,max6
- btGeneric6DofConstraint* genCons = (btGeneric6DofConstraint*)typedConstraint;
- genCons->setLimit(param,value0,value1);
+
+ switch (param)
+ {
+ case 0: case 1: case 2: case 3: case 4: case 5:
+ {
+ //param = 0..5 are constraint limits, with low/high limit value
+ btGeneric6DofConstraint* genCons = (btGeneric6DofConstraint*)typedConstraint;
+ genCons->setLimit(param,value0,value1);
+ break;
+ }
+ case 6: case 7: case 8:
+ {
+ //param = 6,7,8 are translational motors, with value0=target velocity, value1 = max motor force
+ btGeneric6DofConstraint* genCons = (btGeneric6DofConstraint*)typedConstraint;
+ int transMotorIndex = param-6;
+ btTranslationalLimitMotor* transMotor = genCons->getTranslationalLimitMotor();
+ transMotor->m_targetVelocity[transMotorIndex]= value0;
+ transMotor->m_maxMotorForce[transMotorIndex]=value1;
+ transMotor->m_enableMotor[transMotorIndex] = (value1>0.f);
+ break;
+ }
+ case 9: case 10: case 11:
+ {
+ //param = 9,10,11 are rotational motors, with value0=target velocity, value1 = max motor force
+ btGeneric6DofConstraint* genCons = (btGeneric6DofConstraint*)typedConstraint;
+ int angMotorIndex = param-9;
+ btRotationalLimitMotor* rotMotor = genCons->getRotationalLimitMotor(angMotorIndex);
+ rotMotor->m_enableMotor = (value1 > 0.f);
+ rotMotor->m_targetVelocity = value0;
+ rotMotor->m_maxMotorForce = value1;
+ break;
+ }
+
+ case 12: case 13: case 14: case 15: case 16: case 17:
+ {
+ //param 13-17 are for motorized springs on each of the degrees of freedom
+ btGeneric6DofSpringConstraint* genCons = (btGeneric6DofSpringConstraint*)typedConstraint;
+ int springIndex = param-12;
+ if (value0!=0.f)
+ {
+ bool springEnabled = true;
+ genCons->setStiffness(springIndex,value0);
+ genCons->setDamping(springIndex,value1);
+ genCons->enableSpring(springIndex,springEnabled);
+ genCons->setEquilibriumPoint(springIndex);
+ } else
+ {
+ bool springEnabled = false;
+ genCons->enableSpring(springIndex,springEnabled);
+ }
+ break;
+ }
+
+ default:
+ {
+ }
+ }
break;
};
default:
@@ -1887,29 +1925,20 @@ void CcdPhysicsEnvironment::addSensor(PHY_IPhysicsController* ctrl)
// addCcdPhysicsController(ctrl1);
//}
enableCcdPhysicsController(ctrl1);
-
- //Collision filter/mask is now set at the time of the creation of the controller
- //force collision detection with everything, including static objects (might hurt performance!)
- //ctrl1->GetRigidBody()->getBroadphaseHandle()->m_collisionFilterMask = btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::SensorTrigger;
- //ctrl1->GetRigidBody()->getBroadphaseHandle()->m_collisionFilterGroup = btBroadphaseProxy::SensorTrigger;
- //todo: make this 'sensor'!
-
- requestCollisionCallback(ctrl);
- //printf("addSensor\n");
}
-void CcdPhysicsEnvironment::removeCollisionCallback(PHY_IPhysicsController* ctrl)
+bool CcdPhysicsEnvironment::removeCollisionCallback(PHY_IPhysicsController* ctrl)
{
CcdPhysicsController* ccdCtrl = (CcdPhysicsController*)ctrl;
- if (ccdCtrl->Unregister())
- m_triggerControllers.erase(ccdCtrl);
+ if (!ccdCtrl->Unregister())
+ return false;
+ m_triggerControllers.erase(ccdCtrl);
+ return true;
}
void CcdPhysicsEnvironment::removeSensor(PHY_IPhysicsController* ctrl)
{
- removeCollisionCallback(ctrl);
-
disableCcdPhysicsController((CcdPhysicsController*)ctrl);
}
@@ -1945,19 +1974,18 @@ void CcdPhysicsEnvironment::addTouchCallback(int response_class, PHY_ResponseCal
m_triggerCallbacksUserPtrs[response_class] = user;
}
-void CcdPhysicsEnvironment::requestCollisionCallback(PHY_IPhysicsController* ctrl)
+bool CcdPhysicsEnvironment::requestCollisionCallback(PHY_IPhysicsController* ctrl)
{
CcdPhysicsController* ccdCtrl = static_cast<CcdPhysicsController*>(ctrl);
- if (ccdCtrl->Register())
- m_triggerControllers.insert(ccdCtrl);
+ if (!ccdCtrl->Register())
+ return false;
+ m_triggerControllers.insert(ccdCtrl);
+ return true;
}
void CcdPhysicsEnvironment::CallbackTriggers()
{
-
- CcdPhysicsController* ctrl0=0,*ctrl1=0;
-
if (m_triggerCallbacks[PHY_OBJECT_RESPONSE] || (m_debugDrawer && (m_debugDrawer->getDebugMode() & btIDebugDraw::DBG_DrawContactPoints)))
{
//walk over all overlapping pairs, and if one of the involved bodies is registered for trigger callback, perform callback
@@ -2099,12 +2127,13 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::CreateSphereController(float radi
// declare this object as Dyamic rather then static!!
// The reason as it is designed to detect all type of object, including static object
// It would cause static-static message to be printed on the console otherwise
- cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE/* | btCollisionObject::CF_KINEMATIC_OBJECT*/;
+ cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE | btCollisionObject::CF_STATIC_OBJECT;
DefaultMotionState* motionState = new DefaultMotionState();
cinfo.m_MotionState = motionState;
// we will add later the possibility to select the filter from option
cinfo.m_collisionFilterMask = CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::SensorFilter;
cinfo.m_collisionFilterGroup = CcdConstructionInfo::SensorFilter;
+ cinfo.m_bSensor = true;
motionState->m_worldTransform.setIdentity();
motionState->m_worldTransform.setOrigin(btVector3(position[0],position[1],position[2]));
@@ -2373,7 +2402,7 @@ int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl
frameInB = inv * globalFrameA;
bool useReferenceFrameA = true;
- genericConstraint = new btGeneric6DofConstraint(
+ genericConstraint = new btGeneric6DofSpringConstraint(
*rb0,*rb1,
frameInA,frameInB,useReferenceFrameA);
@@ -2397,7 +2426,7 @@ int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl
frameInB = rb0->getCenterOfMassTransform() * frameInA;
bool useReferenceFrameA = true;
- genericConstraint = new btGeneric6DofConstraint(
+ genericConstraint = new btGeneric6DofSpringConstraint(
*rb0,s_fixedObject2,
frameInA,frameInB,useReferenceFrameA);
}
@@ -2558,13 +2587,14 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::CreateConeController(float conera
cinfo.m_collisionShape = new btConeShape(coneradius,coneheight);
cinfo.m_MotionState = 0;
cinfo.m_physicsEnv = this;
- cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE;
+ cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE | btCollisionObject::CF_STATIC_OBJECT;
DefaultMotionState* motionState = new DefaultMotionState();
cinfo.m_MotionState = motionState;
// we will add later the possibility to select the filter from option
cinfo.m_collisionFilterMask = CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::SensorFilter;
cinfo.m_collisionFilterGroup = CcdConstructionInfo::SensorFilter;
+ cinfo.m_bSensor = true;
motionState->m_worldTransform.setIdentity();
// motionState->m_worldTransform.setOrigin(btVector3(position[0],position[1],position[2]));
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
index f861621ae37..bc5491e00cc 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
@@ -114,7 +114,7 @@ protected:
virtual void beginFrame();
virtual void endFrame() {};
/// Perform an integration step of duration 'timeStep'.
- virtual bool proceedDeltaTime(double curTime,float timeStep);
+ virtual bool proceedDeltaTime(double curTime,float timeStep,float interval);
virtual void debugDrawWorld();
// virtual bool proceedDeltaTimeOneStep(float timeStep);
@@ -149,7 +149,10 @@ protected:
const btVector3& angularMaxLimits,int flags
);
+
virtual void setConstraintParam(int constraintId,int param,float value,float value1);
+
+ virtual float getConstraintParam(int constraintId,int param);
virtual void removeConstraint(int constraintid);
@@ -179,8 +182,8 @@ protected:
virtual void addSensor(PHY_IPhysicsController* ctrl);
virtual void removeSensor(PHY_IPhysicsController* ctrl);
virtual void addTouchCallback(int response_class, PHY_ResponseCallback callback, void *user);
- virtual void requestCollisionCallback(PHY_IPhysicsController* ctrl);
- virtual void removeCollisionCallback(PHY_IPhysicsController* ctrl);
+ virtual bool requestCollisionCallback(PHY_IPhysicsController* ctrl);
+ virtual bool removeCollisionCallback(PHY_IPhysicsController* ctrl);
//These two methods are used *solely* to create controllers for Near/Radar sensor! Don't use for anything else
virtual PHY_IPhysicsController* CreateSphereController(float radius,const PHY__Vector3& position);
virtual PHY_IPhysicsController* CreateConeController(float coneradius,float coneheight);
diff --git a/source/gameengine/Physics/Bullet/Makefile b/source/gameengine/Physics/Bullet/Makefile
index 48e537bb6a3..19b17de275a 100644
--- a/source/gameengine/Physics/Bullet/Makefile
+++ b/source/gameengine/Physics/Bullet/Makefile
@@ -51,4 +51,6 @@ CPPFLAGS += -I../../Expressions
CPPFLAGS += -I../../GameLogic
CPPFLAGS += -I../../SceneGraph
CPPFLAGS += -I../../../../source/blender/makesdna
+CPPFLAGS += -I../../../../source/blender/blenkernel
+CPPFLAGS += -I../../../../source/blender/blenlib
diff --git a/source/gameengine/Physics/Bullet/SConscript b/source/gameengine/Physics/Bullet/SConscript
index ab2c68ddfd5..ed53e8112cd 100644
--- a/source/gameengine/Physics/Bullet/SConscript
+++ b/source/gameengine/Physics/Bullet/SConscript
@@ -14,7 +14,10 @@ incs += ' #source/gameengine/Expressions'
incs += ' #source/gameengine/GameLogic'
incs += ' #source/gameengine/SceneGraph'
incs += ' #source/blender/makesdna'
+incs += ' #source/blender/blenkernel'
+incs += ' #source/blender/blenlib'
incs += ' #intern/SoundSystem'
+incs += ' #intern/guardedalloc'
incs += ' ' + env['BF_BULLET_INC']
incs += ' ' + env['BF_PYTHON_INC']
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
index ba196b5cf55..e41574ff181 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
@@ -57,7 +57,7 @@ void DummyPhysicsEnvironment::endFrame()
-bool DummyPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
+bool DummyPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep,float interval)
{
//step physics simulation, typically perform
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
index 4e15e6ec130..8dbd137f9de 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
@@ -48,7 +48,7 @@ public:
virtual void beginFrame();
virtual void endFrame();
// Perform an integration step of duration 'timeStep'.
- virtual bool proceedDeltaTime(double curTime,float timeStep);
+ virtual bool proceedDeltaTime(double curTime,float timeStep,float interval);
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep);
virtual float getFixedTimeStep();
@@ -79,8 +79,8 @@ public:
virtual void addTouchCallback(int response_class, PHY_ResponseCallback callback, void *user)
{
}
- virtual void requestCollisionCallback(PHY_IPhysicsController* ctrl) {}
- virtual void removeCollisionCallback(PHY_IPhysicsController* ctrl) {}
+ virtual bool requestCollisionCallback(PHY_IPhysicsController* ctrl) { return false; }
+ virtual bool removeCollisionCallback(PHY_IPhysicsController* ctrl) { return false;}
virtual PHY_IPhysicsController* CreateSphereController(float radius,const PHY__Vector3& position) {return 0;}
virtual PHY_IPhysicsController* CreateConeController(float coneradius,float coneheight) { return 0;}
@@ -88,6 +88,11 @@ public:
{
}
+ virtual float getConstraintParam(int constraintId,int param)
+ {
+ return 0.f;
+ }
+
};
#endif //_DUMMYPHYSICSENVIRONMENT
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp b/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp
index 3451e6c3ec8..56caa9236bf 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp
@@ -390,6 +390,11 @@ void SumoPhysicsController::PostProcessReplica(class PHY_IMotionState* motionst
m_sumoScene->add(* (m_sumoObj));
}
+PHY_IMotionState* SumoPhysicsController::GetMotionState()
+{
+ return m_MotionState;
+}
+
void SumoPhysicsController::SetSimulatedTime(float)
{
}
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsController.h b/source/gameengine/Physics/Sumo/SumoPhysicsController.h
index 415bc1e3982..adf29649f18 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsController.h
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsController.h
@@ -110,6 +110,7 @@ public:
virtual void WriteDynamicsToMotionState() {};
virtual void WriteMotionStateToDynamics(bool nondynaonly);
+ virtual class PHY_IMotionState* GetMotionState();
/**
* call from Scene Graph Node to 'update'.
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
index 3be5e027345..b4daf0a3f80 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
@@ -81,7 +81,7 @@ float SumoPhysicsEnvironment::getFixedTimeStep()
}
-bool SumoPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
+bool SumoPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep,float interval)
{
bool result = false;
@@ -213,7 +213,7 @@ void SumoPhysicsEnvironment::addTouchCallback(int response_class, PHY_ResponseCa
m_sumoScene->addTouchCallback(sumoRespClass,SumoPHYCallbackBridge::StaticSolidToPHYCallback,bridge);
}
-void SumoPhysicsEnvironment::requestCollisionCallback(PHY_IPhysicsController* ctrl)
+bool SumoPhysicsEnvironment::requestCollisionCallback(PHY_IPhysicsController* ctrl)
{
SumoPhysicsController* smctrl = dynamic_cast<SumoPhysicsController*>(ctrl);
MT_assert(smctrl);
@@ -225,12 +225,15 @@ void SumoPhysicsEnvironment::requestCollisionCallback(PHY_IPhysicsController* ct
smObject->setPhysicsClientObject(ctrl);
m_sumoScene->requestCollisionCallback(*smObject);
+ return true;
}
+ return false;
}
-void SumoPhysicsEnvironment::removeCollisionCallback(PHY_IPhysicsController* ctrl)
+bool SumoPhysicsEnvironment::removeCollisionCallback(PHY_IPhysicsController* ctrl)
{
// intentionally empty
+ return false;
}
PHY_IPhysicsController* SumoPhysicsEnvironment::CreateSphereController(float radius,const PHY__Vector3& position)
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
index 418a361a065..5ae33eb4b0e 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
@@ -54,7 +54,7 @@ public:
virtual void beginFrame();
virtual void endFrame();
// Perform an integration step of duration 'timeStep'.
- virtual bool proceedDeltaTime(double curTime,float timeStep);
+ virtual bool proceedDeltaTime(double curTime,float timeStep,float interval);
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep);
virtual float getFixedTimeStep();
@@ -83,11 +83,15 @@ public:
virtual void addSensor(PHY_IPhysicsController* ctrl);
virtual void removeSensor(PHY_IPhysicsController* ctrl);
virtual void addTouchCallback(int response_class, PHY_ResponseCallback callback, void *user);
- virtual void requestCollisionCallback(PHY_IPhysicsController* ctrl);
- virtual void removeCollisionCallback(PHY_IPhysicsController* ctrl);
+ virtual bool requestCollisionCallback(PHY_IPhysicsController* ctrl);
+ virtual bool removeCollisionCallback(PHY_IPhysicsController* ctrl);
virtual PHY_IPhysicsController* CreateSphereController(float radius,const PHY__Vector3& position);
virtual PHY_IPhysicsController* CreateConeController(float coneradius,float coneheight);
+ virtual float getConstraintParam(int constraintId,int param)
+ {
+ return 0.f;
+ }
virtual void setConstraintParam(int constraintId,int param,float value,float value1)
{
}
diff --git a/source/gameengine/Physics/common/PHY_IGraphicController.h b/source/gameengine/Physics/common/PHY_IGraphicController.h
index 36b8a978e87..470d42cb84a 100644
--- a/source/gameengine/Physics/common/PHY_IGraphicController.h
+++ b/source/gameengine/Physics/common/PHY_IGraphicController.h
@@ -47,6 +47,9 @@ class PHY_IGraphicController : public PHY_IController
SynchronizeMotionStates ynchronizes dynas, kinematic and deformable entities (and do 'late binding')
*/
virtual bool SetGraphicTransform()=0;
+ virtual void Activate(bool active=true)=0;
+ virtual void setLocalAabb(const PHY__Vector3& aabbMin,const PHY__Vector3& aabbMax)=0;
+ virtual void setLocalAabb(const float* aabbMin,const float* aabbMax)=0;
virtual PHY_IGraphicController* GetReplica(class PHY_IMotionState* motionstate) {return 0;}
diff --git a/source/gameengine/Physics/common/PHY_IMotionState.h b/source/gameengine/Physics/common/PHY_IMotionState.h
index 64bb810ee7c..f7bcbd4f2d0 100644
--- a/source/gameengine/Physics/common/PHY_IMotionState.h
+++ b/source/gameengine/Physics/common/PHY_IMotionState.h
@@ -45,10 +45,12 @@ class PHY_IMotionState
virtual void getWorldOrientation(float& quatIma0,float& quatIma1,float& quatIma2,float& quatReal)=0;
// ori = array 12 floats, [0..3] = first column + 0, [4..7] = second colum, [8..11] = third column
virtual void getWorldOrientation(float* ori)=0;
+ virtual void setWorldOrientation(const float* ori)=0;
virtual void setWorldPosition(float posX,float posY,float posZ)=0;
virtual void setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal)=0;
+
virtual void calculateWorldTransformations()=0;
};
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsController.h b/source/gameengine/Physics/common/PHY_IPhysicsController.h
index 770426b48db..d7b8cb0b54f 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsController.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsController.h
@@ -31,7 +31,7 @@
#include "PHY_IController.h"
-
+class PHY_IMotionState;
/**
PHY_IPhysicsController is the abstract simplified Interface to a physical object.
@@ -53,6 +53,7 @@ class PHY_IPhysicsController : public PHY_IController
virtual void WriteMotionStateToDynamics(bool nondynaonly)=0;
virtual void WriteDynamicsToMotionState()=0;
+ virtual class PHY_IMotionState* GetMotionState() = 0;
// controller replication
virtual void PostProcessReplica(class PHY_IMotionState* motionstate,class PHY_IPhysicsController* parentctrl)=0;
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
index 9a4500c3214..c76e9d175ce 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
@@ -89,7 +89,7 @@ class PHY_IPhysicsEnvironment
virtual void beginFrame() = 0;
virtual void endFrame() = 0;
/// Perform an integration step of duration 'timeStep'.
- virtual bool proceedDeltaTime(double curTime,float timeStep)=0;
+ virtual bool proceedDeltaTime(double curTime,float timeStep,float interval)=0;
///draw debug lines (make sure to call this during the render phase, otherwise lines are not drawn properly)
virtual void debugDrawWorld(){}
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep)=0;
@@ -152,13 +152,14 @@ class PHY_IPhysicsEnvironment
virtual void addSensor(PHY_IPhysicsController* ctrl)=0;
virtual void removeSensor(PHY_IPhysicsController* ctrl)=0;
virtual void addTouchCallback(int response_class, PHY_ResponseCallback callback, void *user)=0;
- virtual void requestCollisionCallback(PHY_IPhysicsController* ctrl)=0;
- virtual void removeCollisionCallback(PHY_IPhysicsController* ctrl)=0;
+ virtual bool requestCollisionCallback(PHY_IPhysicsController* ctrl)=0;
+ virtual bool removeCollisionCallback(PHY_IPhysicsController* ctrl)=0;
//These two methods are *solely* used to create controllers for sensor! Don't use for anything else
virtual PHY_IPhysicsController* CreateSphereController(float radius,const PHY__Vector3& position) =0;
virtual PHY_IPhysicsController* CreateConeController(float coneradius,float coneheight)=0;
virtual void setConstraintParam(int constraintId,int param,float value,float value1) = 0;
+ virtual float getConstraintParam(int constraintId,int param) = 0;
};
#endif //_IPHYSICSENVIRONMENT
diff --git a/source/gameengine/PyDoc/API_intro.py b/source/gameengine/PyDoc/API_intro.py
new file mode 100644
index 00000000000..ad37e34fbac
--- /dev/null
+++ b/source/gameengine/PyDoc/API_intro.py
@@ -0,0 +1,103 @@
+# This is not a real module, it's simply an introductory text.
+
+"""
+The Blender Game Engine Python API Reference
+============================================
+
+ See U{release notes<http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.49/Game_Engine>} for updates, changes and new functionality in the Game Engine Python API.
+
+ Top Module:
+ -----------
+
+ - L{GameLogic}
+ - L{GameKeys}
+ - L{GameTypes}
+ - L{Mathutils}
+ - L{Geometry}
+ - L{BGL}
+
+ Undocumented modules:
+ ---------------------
+ - VideoTexture
+ - CValue
+ - Expression
+ - PhysicsConstraints
+
+
+Introduction:
+=============
+
+ This reference documents the Blender Python API, a growing collection of
+ Python modules (libraries) that give access to part of the program's internal
+ data and functions.
+
+ Through scripting Blender can be extended in real-time via
+ U{Python <www.python.org>}, an impressive high level, multi-paradigm, open
+ source language. Newcomers are recommended to start with the tutorial that
+ comes with it.
+
+ This opens many interesting possibilities not available with logic bricks.
+
+ Game Engine API Stability:
+ --------------------------
+
+ When writing python scripts there are a number of situations you should avoid to prevent crashes or unstable behavior.
+ While the API tries to prevent problems there are some situations where error checking would be too time consuming.
+
+ Known cases:
+ - Memory Limits.
+
+ There is nothing stopping you from filling a list or making a string so big that that causes blender to run out of memory, in this case python should rasie a MemoryError, but its likely blender will crash before this point.
+
+ - Accessing any data that has been freed.
+
+ For instance accessing a KX_GameObject after its End Object actuator runs.
+ This will cause a SystemError, however for L{KX_MeshProxy}, L{KX_VertexProxy} and L{KX_VertexProxy} it will crash the blender game engine.
+
+ See: L{GameTypes.PyObjectPlus.invalid} which many types inherit.
+
+ - Mixing L{KX_GameObject} between scenes.
+
+ For instance tracking/parenting an L{KX_GameObject} object to an object from other scene.
+
+ External Modules:
+ -----------------
+
+ Since 2.49 support for importing modules has been added.
+
+ This allows you to import any blender textblock with a .py extension.
+
+ External python scripts may be imported as modules when the script is in the same directory as the blend file.
+
+ The current blend files path is included in the sys.path for loading modules.
+ All linked libraries will also be included so you can be sure when linking in assets from another blend file the scripts will load too.
+
+ A note to newbie script writers:
+ --------------------------------
+
+ Interpreted languages are known to be much slower than compiled code, but for
+ many applications the difference is negligible or acceptable. Also, with
+ profiling (or even simple direct timing with L{Blender.sys.time<Sys.time>}) to
+ identify slow areas and well thought optimizations, the speed can be
+ I{considerably} improved in many cases. Try some of the best BPython scripts
+ to get an idea of what can be done, you may be surprised.
+
+@author: The Blender Python Team
+@requires: Blender 2.49 or newer.
+@version: 2.49
+@see: U{www.blender.org<http://www.blender.org>}: documentation and forum
+@see: U{blenderartists.org<http://blenderartists.org>}: user forum
+@see: U{projects.blender.org<http://projects.blender.org>}
+@see: U{www.python.org<http://www.python.org>}
+@see: U{www.python.org/doc<http://www.python.org/doc>}
+@see: U{Blending into Python<en.wikibooks.org/wiki/Blender_3D:_Blending_Into_Python>}: User contributed documentation, featuring a blender/python cookbook with many examples.
+
+@note: the official version of this reference guide is only updated for each
+ new Blender release. But you can build the current SVN
+ version yourself: install epydoc, grab all files in the
+ source/gameengine/PyDoc/ folder of Blender's SVN and use the
+ epy_docgen.sh script also found there to generate the html docs.
+ Naturally you will also need a recent Blender binary to try the new
+ features. If you prefer not to compile it yourself, there is a testing
+ builds forum at U{blender.org<http://www.blender.org>}.
+"""
diff --git a/source/gameengine/PyDoc/BL_ActionActuator.py b/source/gameengine/PyDoc/BL_ActionActuator.py
deleted file mode 100644
index 480681dc14a..00000000000
--- a/source/gameengine/PyDoc/BL_ActionActuator.py
+++ /dev/null
@@ -1,230 +0,0 @@
-# $Id$
-# Documentation for BL_ActionActuator
-import SCA_ILogicBrick
-from SCA_IActuator import *
-
-
-class BL_ActionActuator(SCA_IActuator):
- """
- Action Actuators apply an action to an actor.
-
- @ivar action: The name of the action to set as the current action.
- @type action: string
- @ivar start: Specifies the starting frame of the animation.
- @type start: float
- @ivar end: Specifies the ending frame of the animation.
- @type end: float
- @ivar blendin: Specifies the number of frames of animation to generate when making transitions between actions.
- @type blendin: float
- @ivar priority: Sets the priority of this actuator. Actuators will lower
- priority numbers will override actuators with higher
- numbers.
- @type priority: integer
- @ivar frame: Sets the current frame for the animation.
- @type frame: float
- @ivar property: Sets the property to be used in FromProp playback mode.
- @type property: string
- @ivar blendTime: Sets the internal frame timer. This property must be in
- the range from 0.0 to blendin.
- @type blendTime: float
- @ivar type: The operation mode of the actuator. KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
- @type type: integer
- @ivar continue: The actions continue option, True or False.
- When True, the action will always play from where last left off,
- otherwise negative events to this actuator will reset it to its start frame.
- @type: boolean
- @ivar frameProperty: The name of the property that is set to the current frame number.
- @type frameProperty: string
- """
- def setChannel(channel, matrix, mode = False):
- """
- @param channel: A string specifying the name of the bone channel.
- @type channel: string
- @param matrix: A 4x4 matrix specifying the overriding transformation
- as an offset from the bone's rest position.
- @type matrix: list [[float]]
- @param mode: True for armature/world space, False for bone space
- @type mode: boolean
- """
-
- #--The following methods are deprecated--
- def setAction(action, reset = True):
- """
- DEPRECATED: use the 'action' property
- Sets the current action.
-
- @param action: The name of the action to set as the current action.
- @type action: string
- @param reset: Optional parameter indicating whether to reset the
- blend timer or not. A value of 1 indicates that the
- timer should be reset. A value of 0 will leave it
- unchanged. If reset is not specified, the timer will
- be reset.
- """
-
- def setStart(start):
- """
- DEPRECATED: use the 'start' property
- Specifies the starting frame of the animation.
-
- @param start: the starting frame of the animation
- @type start: float
- """
-
- def setEnd(end):
- """
- DEPRECATED: use the 'end' property
- Specifies the ending frame of the animation.
-
- @param end: the ending frame of the animation
- @type end: float
- """
- def setBlendin(blendin):
- """
- DEPRECATED: use the 'blendin' property
- Specifies the number of frames of animation to generate
- when making transitions between actions.
-
- @param blendin: the number of frames in transition.
- @type blendin: float
- """
-
- def setPriority(priority):
- """
- DEPRECATED: use the 'priority' property
- Sets the priority of this actuator.
-
- @param priority: Specifies the new priority. Actuators will lower
- priority numbers will override actuators with higher
- numbers.
- @type priority: integer
- """
- def setFrame(frame):
- """
- DEPRECATED: use the 'frame' property
- Sets the current frame for the animation.
-
- @param frame: Specifies the new current frame for the animation
- @type frame: float
- """
-
- def setProperty(prop):
- """
- DEPRECATED: use the 'property' property
- Sets the property to be used in FromProp playback mode.
-
- @param prop: the name of the property to use.
- @type prop: string.
- """
-
- def setBlendtime(blendtime):
- """
- DEPRECATED: use the 'blendTime' property
- Sets the internal frame timer.
-
- Allows the script to directly modify the internal timer
- used when generating transitions between actions.
-
- @param blendtime: The new time. This parameter must be in the range from 0.0 to 1.0.
- @type blendtime: float
- """
-
- def setType(mode):
- """
- DEPRECATED: use the 'type' property
- Sets the operation mode of the actuator
-
- @param mode: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
- @type mode: integer
- """
-
- def setContinue(cont):
- """
- DEPRECATED: use the 'continue' property
- Set the actions continue option True or False. see getContinue.
-
- @param cont: The continue option.
- @type cont: bool
- """
-
- def getType():
- """
- DEPRECATED: use the 'type' property
- Returns the operation mode of the actuator
-
- @rtype: integer
- @return: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
- """
-
- def getContinue():
- """
- DEPRECATED: use the 'continue' property
- When True, the action will always play from where last left off, otherwise negative events to this actuator will reset it to its start frame.
-
- @rtype: bool
- """
-
- def getAction():
- """
- DEPRECATED: use the 'action' property
- getAction() returns the name of the action associated with this actuator.
-
- @rtype: string
- """
-
- def getStart():
- """
- DEPRECATED: use the 'start' property
- Returns the starting frame of the action.
-
- @rtype: float
- """
- def getEnd():
- """
- DEPRECATED: use the 'end' property
- Returns the last frame of the action.
-
- @rtype: float
- """
- def getBlendin():
- """
- DEPRECATED: use the 'blendin' property
- Returns the number of interpolation animation frames to be generated when this actuator is triggered.
-
- @rtype: float
- """
- def getPriority():
- """
- DEPRECATED: use the 'priority' property
- Returns the priority for this actuator. Actuators with lower Priority numbers will
- override actuators with higher numbers.
-
- @rtype: integer
- """
- def getFrame():
- """
- DEPRECATED: use the 'frame' property
- Returns the current frame number.
-
- @rtype: float
- """
- def getProperty():
- """
- DEPRECATED: use the 'property' property
- Returns the name of the property to be used in FromProp mode.
-
- @rtype: string
- """
- def setFrameProperty(prop):
- """
- DEPRECATED: use the 'frameProperty' property
- @param prop: A string specifying the property of the object that will be updated with the action frame number.
- @type prop: string
- """
- def getFrameProperty():
- """
- DEPRECATED: use the 'frameProperty' property
- Returns the name of the property that is set to the current frame number.
-
- @rtype: string
- """
diff --git a/source/gameengine/PyDoc/BL_Shader.py b/source/gameengine/PyDoc/BL_Shader.py
deleted file mode 100644
index 182b73d437b..00000000000
--- a/source/gameengine/PyDoc/BL_Shader.py
+++ /dev/null
@@ -1,228 +0,0 @@
-class BL_Shader: # (PyObjectPlus)
- """
- BL_Shader GLSL shaders.
-
- All placeholders have a __ prefix
- """
-
- def __setUniformfv(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
-
- def __delSource(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getFragmentProg(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getVertexProg(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __isValid(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setAttrib(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setNumberOfPasses(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setSampler(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setSource(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform1f(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform1i(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform2f(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform2i(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform3f(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform3i(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform4f(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniform4i(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniformDef(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniformMatrix3(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniformMatrix4(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setUniformiv(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __validate(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
diff --git a/source/gameengine/PyDoc/BL_ShapeActionActuator.py b/source/gameengine/PyDoc/BL_ShapeActionActuator.py
deleted file mode 100644
index e1e8b039749..00000000000
--- a/source/gameengine/PyDoc/BL_ShapeActionActuator.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# $Id$
-# Documentation for BL_ShapeActionActuator
-from SCA_IActuator import *
-from SCA_ILogicBrick import *
-
-class BL_ShapeActionActuator(SCA_IActuator):
- """
- ShapeAction Actuators apply an shape action to an mesh object.\
-
- @ivar action: The name of the action to set as the current shape action.
- @type action: string
- @ivar start: Specifies the starting frame of the shape animation.
- @type start: float
- @ivar end: Specifies the ending frame of the shape animation.
- @type end: float
- @ivar blendin: Specifies the number of frames of animation to generate when making transitions between actions.
- @type blendin: float
- @ivar priority: Sets the priority of this actuator. Actuators will lower
- priority numbers will override actuators with higher
- numbers.
- @type priority: integer
- @ivar frame: Sets the current frame for the animation.
- @type frame: float
- @ivar property: Sets the property to be used in FromProp playback mode.
- @type property: string
- @ivar blendTime: Sets the internal frame timer. This property must be in
- the range from 0.0 to blendin.
- @type blendTime: float
- @ivar type: The operation mode of the actuator.
- KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER,
- KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
- @type type: integer
- @ivar frameProperty: The name of the property that is set to the current frame number.
- @type frameProperty: string
-
- """
- def setAction(action, reset = True):
- """
- DEPRECATED: use the 'action' property
- Sets the current action.
-
- @param action: The name of the action to set as the current action.
- @type action: string
- @param reset: Optional parameter indicating whether to reset the
- blend timer or not. A value of 1 indicates that the
- timer should be reset. A value of 0 will leave it
- unchanged. If reset is not specified, the timer will
- be reset.
- """
-
- def setStart(start):
- """
- DEPRECATED: use the 'start' property
- Specifies the starting frame of the animation.
-
- @param start: the starting frame of the animation
- @type start: float
- """
-
- def setEnd(end):
- """
- DEPRECATED: use the 'end' property
- Specifies the ending frame of the animation.
-
- @param end: the ending frame of the animation
- @type end: float
- """
- def setBlendin(blendin):
- """
- DEPRECATED: use the 'blendin' property
- Specifies the number of frames of animation to generate
- when making transitions between actions.
-
- @param blendin: the number of frames in transition.
- @type blendin: float
- """
-
- def setPriority(priority):
- """
- DEPRECATED: use the 'priority' property
- Sets the priority of this actuator.
-
- @param priority: Specifies the new priority. Actuators will lower
- priority numbers will override actuators with higher
- numbers.
- @type priority: integer
- """
- def setFrame(frame):
- """
- DEPRECATED: use the 'frame' property
- Sets the current frame for the animation.
-
- @param frame: Specifies the new current frame for the animation
- @type frame: float
- """
-
- def setProperty(prop):
- """
- DEPRECATED: use the 'property' property
- Sets the property to be used in FromProp playback mode.
-
- @param prop: the name of the property to use.
- @type prop: string.
- """
-
- def setBlendtime(blendtime):
- """
- DEPRECATED: use the 'blendTime' property
- Sets the internal frame timer.
-
- Allows the script to directly modify the internal timer
- used when generating transitions between actions.
-
- @param blendtime: The new time. This parameter must be in the range from 0.0 to 1.0.
- @type blendtime: float
- """
-
- def setType(mode):
- """
- DEPRECATED: use the 'type' property
- Sets the operation mode of the actuator
-
- @param mode: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
- @type mode: integer
- """
-
- def getType():
- """
- DEPRECATED: use the 'type' property
- Returns the operation mode of the actuator
-
- @rtype: integer
- @return: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
- """
-
- def getAction():
- """
- DEPRECATED: use the 'action' property
- getAction() returns the name of the action associated with this actuator.
-
- @rtype: string
- """
-
- def getStart():
- """
- DEPRECATED: use the 'start' property
- Returns the starting frame of the action.
-
- @rtype: float
- """
- def getEnd():
- """
- DEPRECATED: use the 'end' property
- Returns the last frame of the action.
-
- @rtype: float
- """
- def getBlendin():
- """
- DEPRECATED: use the 'blendin' property
- Returns the number of interpolation animation frames to be generated when this actuator is triggered.
-
- @rtype: float
- """
- def getPriority():
- """
- DEPRECATED: use the 'priority' property
- Returns the priority for this actuator. Actuators with lower Priority numbers will
- override actuators with higher numbers.
-
- @rtype: integer
- """
- def getFrame():
- """
- DEPRECATED: use the 'frame' property
- Returns the current frame number.
-
- @rtype: float
- """
- def getProperty():
- """
- DEPRECATED: use the 'property' property
- Returns the name of the property to be used in FromProp mode.
-
- @rtype: string
- """
- def setFrameProperty(prop):
- """
- DEPRECATED: use the 'frameProperty' property
- @param prop: A string specifying the property of the object that will be updated with the action frame number.
- @type prop: string
- """
- def getFrameProperty():
- """
- DEPRECATED: use the 'frameProperty' property
- Returns the name of the property that is set to the current frame number.
-
- @rtype: string
- """
diff --git a/source/gameengine/PyDoc/CListValue.py b/source/gameengine/PyDoc/CListValue.py
deleted file mode 100644
index e9fc4215bb6..00000000000
--- a/source/gameengine/PyDoc/CListValue.py
+++ /dev/null
@@ -1,59 +0,0 @@
-class CListValue: # (PyObjectPlus)
- """
- CListValue
-
- This is a list like object used in the game engine internally that behaves similar to a python list in most ways.
-
- As well as the normal index lookup.
- C{val= clist[i]}
-
- CListValue supports string lookups.
- C{val= scene.objects["OBCube"]}
-
- Other operations such as C{len(clist), list(clist), clist[0:10]} are also supported.
- """
- def append(val):
- """
- Add an item to the list (like pythons append)
-
- Warning: Appending values to the list can cause crashes when the list is used internally by the game engine.
- """
-
- def count(val):
- """
- Count the number of instances of a value in the list.
-
- @rtype: integer
- @return: number of instances
- """
- def index(val):
- """
- Return the index of a value in the list.
-
- @rtype: integer
- @return: The index of the value in the list.
- """
- def reverse():
- """
- Reverse the order of the list.
- """
- def from_id(id):
- """
- This is a funtion especially for the game engine to return a value with a spesific id.
-
- Since object names are not always unique, the id of an object can be used to get an object from the CValueList.
-
- Example.
-
- C{myObID = id(gameObject)}
-
- C{...}
-
- C{ob= scene.objects.from_id(myObID)}
-
- Where myObID is an int or long from the id function.
-
- This has the advantage that you can store the id in places you could not store a gameObject.
-
- Warning: the id is derived from a memory location and will be different each time the game engine starts.
- """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/GameKeys.py b/source/gameengine/PyDoc/GameKeys.py
index 310f2b0d506..e798f6c901b 100644
--- a/source/gameengine/PyDoc/GameKeys.py
+++ b/source/gameengine/PyDoc/GameKeys.py
@@ -5,126 +5,6 @@ Documentation for the GameKeys module.
This module holds key constants for the SCA_KeyboardSensor.
-Alphabet keys
--------------
- - AKEY
- - BKEY
- - CKEY
- - DKEY
- - EKEY
- - FKEY
- - GKEY
- - HKEY
- - IKEY
- - JKEY
- - KKEY
- - LKEY
- - MKEY
- - NKEY
- - OKEY
- - PKEY
- - QKEY
- - RKEY
- - SKEY
- - TKEY
- - UKEY
- - VKEY
- - WKEY
- - XKEY
- - YKEY
- - ZKEY
-
-Number keys
------------
- - ZEROKEY
- - ONEKEY
- - TWOKEY
- - THREEKEY
- - FOURKEY
- - FIVEKEY
- - SIXKEY
- - SEVENKEY
- - EIGHTKEY
- - NINEKEY
-
-Shift Modifiers
----------------
- - CAPSLOCKKEY
-
- - LEFTCTRLKEY
- - LEFTALTKEY
- - RIGHTALTKEY
- - RIGHTCTRLKEY
- - RIGHTSHIFTKEY
- - LEFTSHIFTKEY
-
-Arrow Keys
-----------
- - LEFTARROWKEY
- - DOWNARROWKEY
- - RIGHTARROWKEY
- - UPARROWKEY
-
-Numberpad Keys
---------------
- - PAD0
- - PAD1
- - PAD2
- - PAD3
- - PAD4
- - PAD5
- - PAD6
- - PAD7
- - PAD8
- - PAD9
- - PADPERIOD
- - PADSLASHKEY
- - PADASTERKEY
- - PADMINUS
- - PADENTER
- - PADPLUSKEY
-
-Function Keys
--------------
- - F1KEY
- - F2KEY
- - F3KEY
- - F4KEY
- - F5KEY
- - F6KEY
- - F7KEY
- - F8KEY
- - F9KEY
- - F10KEY
- - F11KEY
- - F12KEY
-
-Other Keys
-----------
- - ACCENTGRAVEKEY
- - BACKSLASHKEY
- - BACKSPACEKEY
- - COMMAKEY
- - DELKEY
- - ENDKEY
- - EQUALKEY
- - ESCKEY
- - HOMEKEY
- - INSERTKEY
- - LEFTBRACKETKEY
- - LINEFEEDKEY
- - MINUSKEY
- - PAGEDOWNKEY
- - PAGEUPKEY
- - PAUSEKEY
- - PERIODKEY
- - QUOTEKEY
- - RIGHTBRACKETKEY
- - RETKEY
- - SEMICOLONKEY
- - SLASHKEY
- - SPACEKEY
- - TABKEY
Example::
# Set a connected keyboard sensor to accept F1
@@ -156,7 +36,120 @@ Example::
# Activate Left!
if key[0] == GameKeys.DKEY:
# Activate Right!
-
+
+@group Alphabet keys: AKEY, BKEY, CKEY, DKEY, EKEY, FKEY, GKEY, HKEY, IKEY, JKEY, KKEY, LKEY, MKEY, NKEY, OKEY, PKEY, QKEY, RKEY, SKEY, TKEY, UKEY, VKEY, WKEY, XKEY, YKEY, ZKEY
+@var AKEY:
+@var BKEY:
+@var CKEY:
+@var DKEY:
+@var EKEY:
+@var FKEY:
+@var GKEY:
+@var HKEY:
+@var IKEY:
+@var JKEY:
+@var KKEY:
+@var LKEY:
+@var MKEY:
+@var NKEY:
+@var OKEY:
+@var PKEY:
+@var QKEY:
+@var RKEY:
+@var SKEY:
+@var TKEY:
+@var UKEY:
+@var VKEY:
+@var WKEY:
+@var XKEY:
+@var YKEY:
+@var ZKEY:
+
+@group Number keys: ZEROKEY, ONEKEY, TWOKEY, THREEKEY, FOURKEY, FIVEKEY, SIXKEY, SEVENKEY, EIGHTKEY, NINEKEY
+@var ZEROKEY:
+@var ONEKEY:
+@var TWOKEY:
+@var THREEKEY:
+@var FOURKEY:
+@var FIVEKEY:
+@var SIXKEY:
+@var SEVENKEY:
+@var EIGHTKEY:
+@var NINEKEY:
+
+@group Modifiers: CAPSLOCKKEY, LEFTCTRLKEY, LEFTALTKEY, RIGHTALTKEY, RIGHTCTRLKEY, RIGHTSHIFTKEY, LEFTSHIFTKEY
+@var CAPSLOCKKEY:
+@var LEFTCTRLKEY:
+@var LEFTALTKEY:
+@var RIGHTALTKEY:
+@var RIGHTCTRLKEY:
+@var RIGHTSHIFTKEY:
+@var LEFTSHIFTKEY:
+
+@group Arrow Keys: LEFTARROWKEY, DOWNARROWKEY, RIGHTARROWKEY, UPARROWKEY
+@var LEFTARROWKEY:
+@var DOWNARROWKEY:
+@var RIGHTARROWKEY:
+@var UPARROWKEY:
+
+@group Numberpad Keys: PAD0, PAD1, PAD2, PAD3, PAD4, PAD5, PAD6, PAD7, PAD8, PAD9, PADPERIOD, PADSLASHKEY, PADASTERKEY, PADMINUS, PADENTER, PADPLUSKEY
+@var PAD0:
+@var PAD1:
+@var PAD2:
+@var PAD3:
+@var PAD4:
+@var PAD5:
+@var PAD6:
+@var PAD7:
+@var PAD8:
+@var PAD9:
+@var PADPERIOD:
+@var PADSLASHKEY:
+@var PADASTERKEY:
+@var PADMINUS:
+@var PADENTER:
+@var PADPLUSKEY:
+
+@group Function Keys: F1KEY, F2KEY, F3KEY, F4KEY, F5KEY, F6KEY, F7KEY, F8KEY, F9KEY, F10KEY, F11KEY, F12KEY
+@var F1KEY:
+@var F2KEY:
+@var F3KEY:
+@var F4KEY:
+@var F5KEY:
+@var F6KEY:
+@var F7KEY:
+@var F8KEY:
+@var F9KEY:
+@var F10KEY:
+@var F11KEY:
+@var F12KEY:
+
+@group Other Keys: ACCENTGRAVEKEY, BACKSLASHKEY, BACKSPACEKEY, COMMAKEY, DELKEY, ENDKEY, EQUALKEY, ESCKEY, HOMEKEY, INSERTKEY, LEFTBRACKETKEY, LINEFEEDKEY, MINUSKEY, PAGEDOWNKEY, PAGEUPKEY, PAUSEKEY, PERIODKEY, QUOTEKEY, RIGHTBRACKETKEY, RETKEY, SEMICOLONKEY, SLASHKEY, SPACEKEY, TABKEY
+@var ACCENTGRAVEKEY:
+@var BACKSLASHKEY:
+@var BACKSPACEKEY:
+@var COMMAKEY:
+@var DELKEY:
+@var ENDKEY:
+@var EQUALKEY:
+@var ESCKEY:
+@var HOMEKEY:
+@var INSERTKEY:
+@var LEFTBRACKETKEY:
+@var LINEFEEDKEY:
+@var MINUSKEY:
+@var PAGEDOWNKEY:
+@var PAGEUPKEY:
+@var PAUSEKEY:
+@var PERIODKEY:
+@var QUOTEKEY:
+@var RIGHTBRACKETKEY:
+@var RETKEY:
+@var SEMICOLONKEY:
+@var SLASHKEY:
+@var SPACEKEY:
+@var TABKEY:
+
"""
def EventToString(event):
@@ -174,8 +167,8 @@ def EventToCharacter(event, shift):
@type event: int
@param event: key event from GameKeys or the keyboard sensor.
- @type event: bool
- @param event: set to true if shift is held.
+ @type shift: bool
+ @param shift: set to true if shift is held.
@rtype: string
"""
diff --git a/source/gameengine/PyDoc/GameLogic.py b/source/gameengine/PyDoc/GameLogic.py
index 1996aa3f8a9..3ec30a63c58 100644
--- a/source/gameengine/PyDoc/GameLogic.py
+++ b/source/gameengine/PyDoc/GameLogic.py
@@ -2,29 +2,15 @@
"""
Documentation for the GameLogic Module.
=======================================
-
- Modules available in the game engine:
- - GameLogic
- - L{GameKeys}
- - L{Rasterizer}
- - L{GameTypes}
-
- Undocumented modules:
- - VideoTexture
- - CValue
- - Expression
- - PhysicsConstraints
-
- All the other modules are accessible through the methods in GameLogic.
- See L{WhatsNew} for updates, changes and new functionality in the Game Engine Python API.
+ Module to access logic functions, imported automatically into the python controllers namespace.
Examples::
# To get the controller thats running this python script:
- co = GameLogic.getCurrentController() # GameLogic is automatically imported
+ cont = GameLogic.getCurrentController() # GameLogic is automatically imported
# To get the game object this controller is on:
- obj = co.getOwner()
+ obj = cont.owner
L{KX_GameObject} and L{KX_Camera} or L{KX_LightObject} methods are
available depending on the type of object::
# To get a sensor linked to this controller.
@@ -32,55 +18,59 @@ Documentation for the GameLogic Module.
# +---------------------+ +--------+
# | Sensor "sensorname" +--+ Python +
# +---------------------+ +--------+
- sens = co.getSensor("sensorname")
+ sens = cont.sensors["sensorname"]
- # To get a list of all sensors:
- sensors = co.getSensors()
+ # To get a sequence of all sensors:
+ sensors = co.sensors
See the sensor's reference for available methods:
- - L{DelaySensor<SCA_DelaySensor.SCA_DelaySensor>}
- - L{JoystickSensor<SCA_JoystickSensor.SCA_JoystickSensor>}
- - L{KeyboardSensor<SCA_KeyboardSensor.SCA_KeyboardSensor>}
- - L{MouseFocusSensor<KX_MouseFocusSensor.KX_MouseFocusSensor>}
- - L{MouseSensor<SCA_MouseSensor.SCA_MouseSensor>}
- - L{NearSensor<KX_NearSensor.KX_NearSensor>}
- - L{NetworkMessageSensor<KX_NetworkMessageSensor.KX_NetworkMessageSensor>}
- - L{PropertySensor<SCA_PropertySensor.SCA_PropertySensor>}
- - L{RadarSensor<KX_RadarSensor.KX_RadarSensor>}
- - L{RandomSensor<SCA_RandomSensor.SCA_RandomSensor>}
- - L{RaySensor<KX_RaySensor.KX_RaySensor>}
- - L{TouchSensor<KX_TouchSensor.KX_TouchSensor>}
+ - L{DelaySensor<GameTypes.SCA_DelaySensor>}
+ - L{JoystickSensor<GameTypes.SCA_JoystickSensor>}
+ - L{KeyboardSensor<GameTypes.SCA_KeyboardSensor>}
+ - L{MouseFocusSensor<GameTypes.KX_MouseFocusSensor>}
+ - L{MouseSensor<GameTypes.SCA_MouseSensor>}
+ - L{NearSensor<GameTypes.KX_NearSensor>}
+ - L{NetworkMessageSensor<GameTypes.KX_NetworkMessageSensor>}
+ - L{PropertySensor<GameTypes.SCA_PropertySensor>}
+ - L{RadarSensor<GameTypes.KX_RadarSensor>}
+ - L{RandomSensor<GameTypes.SCA_RandomSensor>}
+ - L{RaySensor<GameTypes.KX_RaySensor>}
+ - L{TouchSensor<GameTypes.KX_TouchSensor>}
You can also access actuators linked to the controller::
# To get an actuator attached to the controller:
# +--------+ +-------------------------+
# + Python +--+ Actuator "actuatorname" |
# +--------+ +-------------------------+
- actuator = co.getActuator("actuatorname")
+ actuator = co.actuators["actuatorname"]
# Activate an actuator
- GameLogic.addActiveActuator(actuator, True)
+ controller.activate(actuator)
See the actuator's reference for available methods:
- - L{ActionActuator<BL_ActionActuator.BL_ActionActuator>}
- - L{AddObjectActuator<KX_SCA_AddObjectActuator.KX_SCA_AddObjectActuator>}
- - L{CameraActuator<KX_CameraActuator.KX_CameraActuator>}
- - L{CDActuator<KX_CDActuator.KX_CDActuator>}
- - L{ConstraintActuator<KX_ConstraintActuator.KX_ConstraintActuator>}
- - L{EndObjectActuator<KX_SCA_EndObjectActuator.KX_SCA_EndObjectActuator>}
- - L{GameActuator<KX_GameActuator.KX_GameActuator>}
- - L{IpoActuator<KX_IpoActuator.KX_IpoActuator>}
- - L{NetworkMessageActuator<KX_NetworkMessageActuator.KX_NetworkMessageActuator>}
- - L{ObjectActuator<KX_ObjectActuator.KX_ObjectActuator>}
- - L{PropertyActuator<SCA_PropertyActuator.SCA_PropertyActuator>}
- - L{RandomActuator<SCA_RandomActuator.SCA_RandomActuator>}
- - L{ReplaceMeshActuator<KX_SCA_ReplaceMeshActuator.KX_SCA_ReplaceMeshActuator>}
- - L{SceneActuator<KX_SceneActuator.KX_SceneActuator>}
- - L{SoundActuator<KX_SoundActuator.KX_SoundActuator>}
- - L{TrackToActuator<KX_TrackToActuator.KX_TrackToActuator>}
- - L{VisibilityActuator<KX_VisibilityActuator.KX_VisibilityActuator>}
- - L{DynamicActuator<KX_SCA_DynamicActuator.KX_SCA_DynamicActuator>}
-
+ - L{2DFilterActuator<GameTypes.SCA_2DFilterActuator>}
+ - L{ActionActuator<GameTypes.BL_ActionActuator>}
+ - L{AddObjectActuator<GameTypes.KX_SCA_AddObjectActuator>}
+ - L{CameraActuator<GameTypes.KX_CameraActuator>}
+ - L{CDActuator<GameTypes.KX_CDActuator>}
+ - L{ConstraintActuator<GameTypes.KX_ConstraintActuator>}
+ - L{DynamicActuator<GameTypes.KX_SCA_DynamicActuator>}
+ - L{EndObjectActuator<GameTypes.KX_SCA_EndObjectActuator>}
+ - L{GameActuator<GameTypes.KX_GameActuator>}
+ - L{IpoActuator<GameTypes.KX_IpoActuator>}
+ - L{NetworkMessageActuator<GameTypes.KX_NetworkMessageActuator>}
+ - L{ObjectActuator<GameTypes.KX_ObjectActuator>}
+ - L{ParentActuator<GameTypes.KX_ParentActuator>}
+ - L{PropertyActuator<GameTypes.SCA_PropertyActuator>}
+ - L{RandomActuator<GameTypes.SCA_RandomActuator>}
+ - L{ReplaceMeshActuator<GameTypes.KX_SCA_ReplaceMeshActuator>}
+ - L{SceneActuator<GameTypes.KX_SceneActuator>}
+ - L{ShapeActionActuator<GameTypes.BL_ShapeActionActuator>}
+ - L{SoundActuator<GameTypes.KX_SoundActuator>}
+ - L{StateActuator<GameTypes.KX_StateActuator>}
+ - L{TrackToActuator<GameTypes.KX_TrackToActuator>}
+ - L{VisibilityActuator<GameTypes.KX_VisibilityActuator>}
+
Most logic brick's methods are accessors for the properties available in the logic buttons.
Consult the logic bricks documentation for more information on how each logic brick works.
@@ -92,7 +82,7 @@ Documentation for the GameLogic Module.
cam = scene.active_camera
Matricies as used by the game engine are B{row major}::
- matrix[row][col] = blah
+ matrix[row][col] = float
L{KX_Camera} has some examples using matricies.
@@ -100,29 +90,37 @@ Documentation for the GameLogic Module.
@var KX_TRUE: True value used by some modules.
@var KX_FALSE: False value used by some modules.
-@group Property Sensor: KX_PROPSENSOR_EQUAL, KX_PROPSENSOR_NOTEQUAL, KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED, KX_PROPSENSOR_EXPRESSION
+@group Property Sensor: KX_PROPSENSOR_*
@var KX_PROPSENSOR_EQUAL: Activate when the property is equal to the sensor value.
@var KX_PROPSENSOR_NOTEQUAL: Activate when the property is not equal to the sensor value.
@var KX_PROPSENSOR_INTERVAL: Activate when the property is between the specified limits.
@var KX_PROPSENSOR_CHANGED: Activate when the property changes
@var KX_PROPSENSOR_EXPRESSION: Activate when the expression matches
-@group Constraint Actuator: KX_CONSTRAINTACT_LOCX, KX_CONSTRAINTACT_LOCY, KX_CONSTRAINTACT_LOCZ, KX_CONSTRAINTACT_ROTX, KX_CONSTRAINTACT_ROTY, KX_CONSTRAINTACT_ROTZ
+@group Constraint Actuator: KX_CONSTRAINTACT_*
@var KX_CONSTRAINTACT_LOCX: See L{KX_ConstraintActuator}
@var KX_CONSTRAINTACT_LOCY: See L{KX_ConstraintActuator}
@var KX_CONSTRAINTACT_LOCZ: See L{KX_ConstraintActuator}
@var KX_CONSTRAINTACT_ROTX: See L{KX_ConstraintActuator}
@var KX_CONSTRAINTACT_ROTY: See L{KX_ConstraintActuator}
@var KX_CONSTRAINTACT_ROTZ: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_DIRNX: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_DIRNY: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_DIRPX: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_DIRPY: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_ORIX: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_ORIY: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_ORIZ: See L{KX_ConstraintActuator}
-@group IPO Actuator: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
+@group IPO Actuator: KX_IPOACT_*
@var KX_IPOACT_PLAY: See L{KX_IpoActuator}
@var KX_IPOACT_PINGPONG: See L{KX_IpoActuator}
@var KX_IPOACT_FLIPPER: See L{KX_IpoActuator}
@var KX_IPOACT_LOOPSTOP: See L{KX_IpoActuator}
@var KX_IPOACT_LOOPEND: See L{KX_IpoActuator}
+@var KX_IPOACT_FROM_PROP: See L{KX_IpoActuator}
-@group Random Distributions: KX_RANDOMACT_BOOL_CONST, KX_RANDOMACT_BOOL_UNIFORM, KX_RANDOMACT_BOOL_BERNOUILLI, KX_RANDOMACT_INT_CONST, KX_RANDOMACT_INT_UNIFORM, KX_RANDOMACT_INT_POISSON, KX_RANDOMACT_FLOAT_CONST, KX_RANDOMACT_FLOAT_UNIFORM, KX_RANDOMACT_FLOAT_NORMAL, KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
+@group Random Distributions: KX_RANDOMACT_*
@var KX_RANDOMACT_BOOL_CONST: See L{SCA_RandomActuator}
@var KX_RANDOMACT_BOOL_UNIFORM: See L{SCA_RandomActuator}
@var KX_RANDOMACT_BOOL_BERNOUILLI: See L{SCA_RandomActuator}
@@ -134,14 +132,14 @@ Documentation for the GameLogic Module.
@var KX_RANDOMACT_FLOAT_NORMAL: See L{SCA_RandomActuator}
@var KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL: See L{SCA_RandomActuator}
-@group Action Actuator: KX_ACTIONACT_PLAY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND, KX_ACTIONACT_PROPERTY
+@group Action Actuator: KX_ACTIONACT_*
@var KX_ACTIONACT_PLAY: See L{BL_ActionActuator}
@var KX_ACTIONACT_FLIPPER: See L{BL_ActionActuator}
@var KX_ACTIONACT_LOOPSTOP: See L{BL_ActionActuator}
@var KX_ACTIONACT_LOOPEND: See L{BL_ActionActuator}
@var KX_ACTIONACT_PROPERTY: See L{BL_ActionActuator}
-@group Sound Actuator: KX_SOUNDACT_PLAYSTOP, KX_SOUNDACT_PLAYEND, KX_SOUNDACT_LOOPSTOP, KX_SOUNDACT_LOOPEND, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP
+@group Sound Actuator: KX_SOUNDACT_*
@var KX_SOUNDACT_PLAYSTOP: See L{KX_SoundActuator}
@var KX_SOUNDACT_PLAYEND: See L{KX_SoundActuator}
@var KX_SOUNDACT_LOOPSTOP: See L{KX_SoundActuator}
@@ -149,7 +147,7 @@ Documentation for the GameLogic Module.
@var KX_SOUNDACT_LOOPBIDIRECTIONAL: See L{KX_SoundActuator}
@var KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP: See L{KX_SoundActuator}
-@group Radar Sensor: KX_RADAR_AXIS_POS_X, KX_RADAR_AXIS_POS_Y, KX_RADAR_AXIS_POS_Z, KX_RADAR_AXIS_NEG_X, KX_RADAR_AXIS_NEG_Y, KX_RADAR_AXIS_NEG_Z
+@group Radar Sensor: KX_RADAR_*
@var KX_RADAR_AXIS_POS_X: See L{KX_RadarSensor}
@var KX_RADAR_AXIS_POS_Y: See L{KX_RadarSensor}
@var KX_RADAR_AXIS_POS_Z: See L{KX_RadarSensor}
@@ -157,7 +155,7 @@ Documentation for the GameLogic Module.
@var KX_RADAR_AXIS_NEG_Y: See L{KX_RadarSensor}
@var KX_RADAR_AXIS_NEG_Z: See L{KX_RadarSensor}
-@group Ray Sensor: KX_RAY_AXIS_POS_X, KX_RAY_AXIS_POS_Y, KX_RAY_AXIS_POS_Z, KX_RAY_AXIS_NEG_X, KX_RAY_AXIS_NEG_Y, KX_RAY_AXIS_NEG_Z
+@group Ray Sensor: KX_RAY_*
@var KX_RAY_AXIS_POS_X: See L{KX_RaySensor}
@var KX_RAY_AXIS_POS_Y: See L{KX_RaySensor}
@var KX_RAY_AXIS_POS_Z: See L{KX_RaySensor}
@@ -165,26 +163,153 @@ Documentation for the GameLogic Module.
@var KX_RAY_AXIS_NEG_Y: See L{KX_RaySensor}
@var KX_RAY_AXIS_NEG_Z: See L{KX_RaySensor}
-@group Dynamic Actuator: KX_DYN_RESTORE_DYNAMICS, KX_DYN_DISABLE_DYNAMICS, KX_DYN_ENABLE_RIGID_BODY, KX_DYN_DISABLE_RIGID_BODY, KX_DYN_SET_MASS
+@group Dynamic Actuator: KX_DYN_*
@var KX_DYN_RESTORE_DYNAMICS: See L{KX_SCA_DynamicActuator}
@var KX_DYN_DISABLE_DYNAMICS: See L{KX_SCA_DynamicActuator}
@var KX_DYN_ENABLE_RIGID_BODY: See L{KX_SCA_DynamicActuator}
@var KX_DYN_DISABLE_RIGID_BODY: See L{KX_SCA_DynamicActuator}
@var KX_DYN_SET_MASS: See L{KX_SCA_DynamicActuator}
-@group Input Status: KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED
+@group Game Actuator: KX_GAME_*
+@var KX_GAME_LOAD: See L{KX_GameActuator}
+@var KX_GAME_START: See L{KX_GameActuator}
+@var KX_GAME_RESTART: See L{KX_GameActuator}
+@var KX_GAME_QUIT: See L{KX_GameActuator}
+@var KX_GAME_SAVECFG: See L{KX_GameActuator}
+@var KX_GAME_LOADCFG: See L{KX_GameActuator}
+
+@group Scene Actuator: KX_SCENE_*
+@var KX_SCENE_RESTART: See L{KX_SceneActuator}
+@var KX_SCENE_SET_SCENE: See L{KX_SceneActuator}
+@var KX_SCENE_SET_CAMERA: See L{KX_SceneActuator}
+@var KX_SCENE_ADD_FRONT_SCENE: See L{KX_SceneActuator}
+@var KX_SCENE_ADD_BACK_SCENE: See L{KX_SceneActuator}
+@var KX_SCENE_REMOVE_SCENE: See L{KX_SceneActuator}
+@var KX_SCENE_SUSPEND: See L{KX_SceneActuator}
+@var KX_SCENE_RESUME: See L{KX_SceneActuator}
+
+@group Input Status: KX_INPUT_*
@var KX_INPUT_NONE: See L{SCA_MouseSensor}
@var KX_INPUT_JUST_ACTIVATED: See L{SCA_MouseSensor}
@var KX_INPUT_ACTIVE: See L{SCA_MouseSensor}
@var KX_INPUT_JUST_RELEASED: See L{SCA_MouseSensor}
-@group Mouse Buttons: KX_MOUSE_BUT_LEFT, KX_MOUSE_BUT_MIDDLE, KX_MOUSE_BUT_RIGHT
+@group Mouse Buttons: KX_MOUSE_BUT_*
@var KX_MOUSE_BUT_LEFT: See L{SCA_MouseSensor}
@var KX_MOUSE_BUT_MIDDLE: See L{SCA_MouseSensor}
@var KX_MOUSE_BUT_RIGHT: See L{SCA_MouseSensor}
+
+@group States: KX_STATE*
+@var KX_STATE1:
+@var KX_STATE10:
+@var KX_STATE11:
+@var KX_STATE12:
+@var KX_STATE13:
+@var KX_STATE14:
+@var KX_STATE15:
+@var KX_STATE16:
+@var KX_STATE17:
+@var KX_STATE18:
+@var KX_STATE19:
+@var KX_STATE2:
+@var KX_STATE20:
+@var KX_STATE21:
+@var KX_STATE22:
+@var KX_STATE23:
+@var KX_STATE24:
+@var KX_STATE25:
+@var KX_STATE26:
+@var KX_STATE27:
+@var KX_STATE28:
+@var KX_STATE29:
+@var KX_STATE3:
+@var KX_STATE30:
+@var KX_STATE4:
+@var KX_STATE5:
+@var KX_STATE6:
+@var KX_STATE7:
+@var KX_STATE8:
+@var KX_STATE9:
+@var KX_STATE_OP_CLR:
+@var KX_STATE_OP_CPY:
+@var KX_STATE_OP_NEG:
+@var KX_STATE_OP_SET:
+
+@group 2D Filter: RAS_2DFILTER_*
+@var RAS_2DFILTER_BLUR:
+@var RAS_2DFILTER_CUSTOMFILTER:
+@var RAS_2DFILTER_DILATION:
+@var RAS_2DFILTER_DISABLED:
+@var RAS_2DFILTER_ENABLED:
+@var RAS_2DFILTER_EROSION:
+@var RAS_2DFILTER_GRAYSCALE:
+@var RAS_2DFILTER_INVERT:
+@var RAS_2DFILTER_LAPLACIAN:
+@var RAS_2DFILTER_MOTIONBLUR:
+@var RAS_2DFILTER_NOFILTER:
+@var RAS_2DFILTER_PREWITT:
+@var RAS_2DFILTER_SEPIA:
+@var RAS_2DFILTER_SHARPEN:
+@var RAS_2DFILTER_SOBEL:
+
+@group Constraint Actuator: KX_ACT_CONSTRAINT_*
+@var KX_ACT_CONSTRAINT_DISTANCE:
+@var KX_ACT_CONSTRAINT_DOROTFH:
+@var KX_ACT_CONSTRAINT_FHNX:
+@var KX_ACT_CONSTRAINT_FHNY:
+@var KX_ACT_CONSTRAINT_FHNZ:
+@var KX_ACT_CONSTRAINT_FHPX:
+@var KX_ACT_CONSTRAINT_FHPY:
+@var KX_ACT_CONSTRAINT_FHPZ:
+@var KX_ACT_CONSTRAINT_LOCAL:
+@var KX_ACT_CONSTRAINT_MATERIAL:
+@var KX_ACT_CONSTRAINT_NORMAL:
+@var KX_ACT_CONSTRAINT_PERMANENT:
+
+@group Parent Actuator: KX_PARENT_*
+@var KX_PARENT_REMOVE:
+@var KX_PARENT_SET:
+
+@group Shader: MODELMATRIX*, MODELVIEWMATRIX*, VIEWMATRIX*, CAM_POS, CONSTANT_TIMER
+@var VIEWMATRIX:
+@var VIEWMATRIX_INVERSE:
+@var VIEWMATRIX_INVERSETRANSPOSE:
+@var VIEWMATRIX_TRANSPOSE:
+@var MODELMATRIX:
+@var MODELMATRIX_INVERSE:
+@var MODELMATRIX_INVERSETRANSPOSE:
+@var MODELMATRIX_TRANSPOSE:
+@var MODELVIEWMATRIX:
+@var MODELVIEWMATRIX_INVERSE:
+@var MODELVIEWMATRIX_INVERSETRANSPOSE:
+@var MODELVIEWMATRIX_TRANSPOSE:
+@var CAM_POS: Current camera position
+@var CONSTANT_TIMER: Current camera position
+@var SHD_TANGENT: Current camera position
+
+@group Blender Material: BL_*
+@var BL_DST_ALPHA:
+@var BL_DST_COLOR:
+@var BL_ONE:
+@var BL_ONE_MINUS_DST_ALPHA:
+@var BL_ONE_MINUS_DST_COLOR:
+@var BL_ONE_MINUS_SRC_ALPHA:
+@var BL_ONE_MINUS_SRC_COLOR:
+@var BL_SRC_ALPHA:
+@var BL_SRC_ALPHA_SATURATE:
+@var BL_SRC_COLOR:
+@var BL_ZERO:
+
+@group Deprecated: addActiveActuator
"""
+import GameTypes
+
+# TODO
+# globalDict
+# error
+
def getCurrentController():
"""
Gets the Python controller associated with this Python script.
@@ -197,10 +322,19 @@ def getCurrentScene():
@rtype: L{KX_Scene}
"""
+def getSceneList():
+ """
+ Gets a list of the current scenes loaded in the game engine.
+
+ @note: Scenes in your blend file that have not been converted wont be in this list. This list will only contain scenes such as overlays scenes.
+
+ @rtype: list of L{KX_Scene}
+ """
def addActiveActuator(actuator, activate):
"""
Activates the given actuator.
+ @deprecated: Use L{GameTypes.SCA_PythonController.activate} and L{GameTypes.SCA_PythonController.deactivate} instead.
@type actuator: L{SCA_IActuator} or the actuator name as a string.
@type activate: boolean
@param activate: whether to activate or deactivate the given actuator.
@@ -218,10 +352,6 @@ def sendMessage(subject, body="", to="", message_from=""):
@param message_from: The name of the object that the message is coming from (optional)
@type message_from: string
"""
-def getRandomFloat():
- """
- Returns a random floating point value in the range [0...1)
- """
def setGravity(gravity):
"""
Sets the world gravity.
@@ -242,6 +372,38 @@ def stopDSP():
Only the fmod sound driver supports this.
DSP can be computationally expensive.
"""
+def getMaxLogicFrame():
+ """
+ Gets the maximum number of logic frame per render frame.
+
+ @return: The maximum number of logic frame per render frame
+ @rtype: interger
+ """
+def setMaxLogicFrame(maxlogic):
+ """
+ Sets the maximum number of logic frame that are executed per render frame.
+ This does not affect the physic system that still runs at full frame rate.
+
+ @param maxlogic: The new maximum number of logic frame per render frame. Valid values: 1..5
+ @type maxlogic: integer
+ """
+def getMaxPhysicsFrame():
+ """
+ Gets the maximum number of physics frame per render frame.
+
+ @return: The maximum number of physics frame per render frame
+ @rtype: interger
+ """
+def setMaxPhysicsFrame(maxphysics):
+ """
+ Sets the maximum number of physics timestep that are executed per render frame.
+ Higher value allows physics to keep up with realtime even if graphics slows down the game.
+ Physics timestep is fixed and equal to 1/tickrate (see setLogicTicRate)
+ maxphysics/ticrate is the maximum delay of the renderer that physics can compensate.
+
+ @param maxphysics: The new maximum number of physics timestep per render frame. Valid values: 1..5.
+ @type maxphysics: integer
+ """
def getLogicTicRate():
"""
Gets the logic update frequency.
@@ -254,13 +416,14 @@ def setLogicTicRate(ticrate):
Sets the logic update frequency.
The logic update frequency is the number of times logic bricks are executed every second.
- The default is 30 Hz.
+ The default is 60 Hz.
@param ticrate: The new logic update frequency (in Hz).
@type ticrate: float
"""
def getPhysicsTicRate():
"""
+ NOT IMPLEMENTED
Gets the physics update frequency
@return: The physics update frequency in Hz
@@ -268,6 +431,7 @@ def getPhysicsTicRate():
"""
def setPhysicsTicRate(ticrate):
"""
+ NOT IMPLEMENTED
Sets the physics update frequency
The physics update frequency is the number of times the physics system is executed every second.
@@ -276,6 +440,8 @@ def setPhysicsTicRate(ticrate):
@param ticrate: The new update frequency (in Hz).
@type ticrate: float
"""
+
+#{ Utility functions
def getAverageFrameRate():
"""
Gets the estimated average framerate
@@ -283,7 +449,6 @@ def getAverageFrameRate():
@return: The estimed average framerate in frames per second
@rtype: float
"""
-
def expandPath(path):
"""
Converts a blender internal path into a proper file system path.
@@ -309,3 +474,12 @@ def getBlendFileList(path = "//"):
@return: A list of filenames, with no directory prefix
@rtype: list
"""
+def PrintGLInfo():
+ """
+ Prints GL Extension Info into the console
+ """
+def getRandomFloat():
+ """
+ Returns a random floating point value in the range [0...1)
+ """
+#}
diff --git a/source/gameengine/PyDoc/GameTypes.py b/source/gameengine/PyDoc/GameTypes.py
index 2b07a18247c..4ab175a8f6c 100644
--- a/source/gameengine/PyDoc/GameTypes.py
+++ b/source/gameengine/PyDoc/GameTypes.py
@@ -1,75 +1,5796 @@
-# $Id$
"""
-GameEngine Types
-================
-@var BL_ActionActuator: L{BL_ActionActuator<BL_ActionActuator.BL_ActionActuator>}
-@var BL_Shader: L{BL_Shader<BL_Shader.BL_Shader>}
-@var BL_ShapeActionActuator: L{BL_ShapeActionActuator<BL_ShapeActionActuator.BL_ShapeActionActuator>}
-@var CListValue: L{CListValue<CListValue.CListValue>}
-@var CValue: L{CValue<CValue.CValue>}
-@var KX_BlenderMaterial: L{KX_BlenderMaterial<KX_BlenderMaterial.KX_BlenderMaterial>}
-@var KX_CDActuator: L{KX_CDActuator<KX_CDActuator.KX_CDActuator>}
-@var KX_Camera: L{KX_Camera<KX_Camera.KX_Camera>}
-@var KX_CameraActuator: L{KX_CameraActuator<KX_CameraActuator.KX_CameraActuator>}
-@var KX_ConstraintActuator: L{KX_ConstraintActuator<KX_ConstraintActuator.KX_ConstraintActuator>}
-@var KX_ConstraintWrapper: L{KX_ConstraintWrapper<KX_ConstraintWrapper.KX_ConstraintWrapper>}
-@var KX_GameActuator: L{KX_GameActuator<KX_GameActuator.KX_GameActuator>}
-@var KX_GameObject: L{KX_GameObject<KX_GameObject.KX_GameObject>}
-@var KX_IpoActuator: L{KX_IpoActuator<KX_IpoActuator.KX_IpoActuator>}
-@var KX_LightObject: L{KX_LightObject<KX_LightObject.KX_LightObject>}
-@var KX_MeshProxy: L{KX_MeshProxy<KX_MeshProxy.KX_MeshProxy>}
-@var KX_MouseFocusSensor: L{KX_MouseFocusSensor<KX_MouseFocusSensor.KX_MouseFocusSensor>}
-@var KX_NearSensor: L{KX_NearSensor<KX_NearSensor.KX_NearSensor>}
-@var KX_NetworkMessageActuator: L{KX_NetworkMessageActuator<KX_NetworkMessageActuator.KX_NetworkMessageActuator>}
-@var KX_NetworkMessageSensor: L{KX_NetworkMessageSensor<KX_NetworkMessageSensor.KX_NetworkMessageSensor>}
-@var KX_ObjectActuator: L{KX_ObjectActuator<KX_ObjectActuator.KX_ObjectActuator>}
-@var KX_ParentActuator: L{KX_ParentActuator<KX_ParentActuator.KX_ParentActuator>}
-@var KX_PhysicsObjectWrapper: L{KX_PhysicsObjectWrapper<KX_PhysicsObjectWrapper.KX_PhysicsObjectWrapper>}
-@var KX_PolyProxy: L{KX_PolyProxy<KX_PolyProxy.KX_PolyProxy>}
-@var KX_PolygonMaterial: L{KX_PolygonMaterial<KX_PolygonMaterial.KX_PolygonMaterial>}
-@var KX_RadarSensor: L{KX_RadarSensor<KX_RadarSensor.KX_RadarSensor>}
-@var KX_RaySensor: L{KX_RaySensor<KX_RaySensor.KX_RaySensor>}
-@var KX_SCA_AddObjectActuator: L{KX_SCA_AddObjectActuator<KX_SCA_AddObjectActuator.KX_SCA_AddObjectActuator>}
-@var KX_SCA_DynamicActuator: L{KX_SCA_DynamicActuator<KX_SCA_DynamicActuator.KX_SCA_DynamicActuator>}
-@var KX_SCA_EndObjectActuator: L{KX_SCA_EndObjectActuator<KX_SCA_EndObjectActuator.KX_SCA_EndObjectActuator>}
-@var KX_SCA_ReplaceMeshActuator: L{KX_SCA_ReplaceMeshActuator<KX_SCA_ReplaceMeshActuator.KX_SCA_ReplaceMeshActuator>}
-@var KX_Scene: L{KX_Scene<KX_Scene.KX_Scene>}
-@var KX_SceneActuator: L{KX_SceneActuator<KX_SceneActuator.KX_SceneActuator>}
-@var KX_SoundActuator: L{KX_SoundActuator<KX_SoundActuator.KX_SoundActuator>}
-@var KX_StateActuator: L{KX_StateActuator<KX_StateActuator.KX_StateActuator>}
-@var KX_TouchSensor: L{KX_TouchSensor<KX_TouchSensor.KX_TouchSensor>}
-@var KX_TrackToActuator: L{KX_TrackToActuator<KX_TrackToActuator.KX_TrackToActuator>}
-@var KX_VehicleWrapper: L{KX_VehicleWrapper<KX_VehicleWrapper.KX_VehicleWrapper>}
-@var KX_VertexProxy: L{KX_VertexProxy<KX_VertexProxy.KX_VertexProxy>}
-@var KX_VisibilityActuator: L{KX_VisibilityActuator<KX_VisibilityActuator.KX_VisibilityActuator>}
-@var PyObjectPlus: L{PyObjectPlus<PyObjectPlus.PyObjectPlus>}
-@var SCA_2DFilterActuator: L{SCA_2DFilterActuator<SCA_2DFilterActuator.SCA_2DFilterActuator>}
-@var SCA_ANDController: L{SCA_ANDController<SCA_ANDController.SCA_ANDController>}
-@var SCA_ActuatorSensor: L{SCA_ActuatorSensor<SCA_ActuatorSensor.SCA_ActuatorSensor>}
-@var SCA_AlwaysSensor: L{SCA_AlwaysSensor<SCA_AlwaysSensor.SCA_AlwaysSensor>}
-@var SCA_DelaySensor: L{SCA_DelaySensor<SCA_DelaySensor.SCA_DelaySensor>}
-@var SCA_ILogicBrick: L{SCA_ILogicBrick<SCA_ILogicBrick.SCA_ILogicBrick>}
-@var SCA_IObject: L{SCA_IObject<SCA_IObject.SCA_IObject>}
-@var SCA_ISensor: L{SCA_ISensor<SCA_ISensor.SCA_ISensor>}
-@var SCA_JoystickSensor: L{SCA_JoystickSensor<SCA_JoystickSensor.SCA_JoystickSensor>}
-@var SCA_KeyboardSensor: L{SCA_KeyboardSensor<SCA_KeyboardSensor.SCA_KeyboardSensor>}
-@var SCA_MouseSensor: L{SCA_MouseSensor<SCA_MouseSensor.SCA_MouseSensor>}
-@var SCA_NANDController: L{SCA_NANDController<SCA_NANDController.SCA_NANDController>}
-@var SCA_NORController: L{SCA_NORController<SCA_NORController.SCA_NORController>}
-@var SCA_ORController: L{SCA_ORController<SCA_ORController.SCA_ORController>}
-@var SCA_PropertyActuator: L{SCA_PropertyActuator<SCA_PropertyActuator.SCA_PropertyActuator>}
-@var SCA_PropertySensor: L{SCA_PropertySensor<SCA_PropertySensor.SCA_PropertySensor>}
-@var SCA_PythonController: L{SCA_PythonController<SCA_PythonController.SCA_PythonController>}
-@var SCA_RandomActuator: L{SCA_RandomActuator<SCA_RandomActuator.SCA_RandomActuator>}
-@var SCA_RandomSensor: L{SCA_RandomSensor<SCA_RandomSensor.SCA_RandomSensor>}
-@var SCA_XNORController: L{SCA_XNORController<SCA_XNORController.SCA_XNORController>}
-@var SCA_XORController: L{SCA_XORController<SCA_XORController.SCA_XORController>}
+Documentation for the GameTypes Module.
+=======================================
+
+@group Base: PyObjectPlus, CValue, CPropValue, SCA_ILogicBrick, SCA_IObject, SCA_ISensor, SCA_IController, SCA_IActuator
+
+@group Object: KX_GameObject, KX_LightObject, KX_Camera
+
+@group Mesh: KX_MeshProxy, KX_PolyProxy, KX_VertexProxy
+
+@group Shading: KX_PolygonMaterial, KX_BlenderMaterial, BL_Shader
+
+@group Sensors: SCA_ActuatorSensor, SCA_AlwaysSensor, SCA_DelaySensor, SCA_JoystickSensor, SCA_KeyboardSensor, KX_MouseFocusSensor, SCA_MouseSensor, KX_NearSensor, KX_NetworkMessageSensor, SCA_PropertySensor, KX_RadarSensor, SCA_RandomSensor, KX_RaySensor, KX_TouchSensor
+
+@group Actuators: SCA_2DFilterActuator, BL_ActionActuator, KX_SCA_AddObjectActuator, KX_CameraActuator, KX_CDActuator, KX_ConstraintActuator, KX_SCA_DynamicActuator, KX_SCA_EndObjectActuator, KX_GameActuator, KX_IpoActuator, KX_NetworkMessageActuator, KX_ObjectActuator, KX_ParentActuator, SCA_PropertyActuator, SCA_RandomActuator, KX_SCA_ReplaceMeshActuator, KX_SceneActuator, BL_ShapeActionActuator, KX_SoundActuator, KX_StateActuator, KX_TrackToActuator, KX_VisibilityActuator
+
+@group Controllers: SCA_ANDController, SCA_NANDController, SCA_NORController, SCA_ORController, SCA_PythonController, SCA_XNORController, SCA_XORController
+"""
+import GameLogic
+
+class PyObjectPlus:
+ """
+ PyObjectPlus base class of most other types in the Game Engine.
+
+ @ivar invalid: Test if the object has been freed by the game engine and is no longer valid.
+
+ Normally this is not a problem but when storing game engine data in the GameLogic module,
+ KX_Scenes or other KX_GameObjects its possible to hold a reference to invalid data.
+ Calling an attribute or method on an invalid object will raise a SystemError.
+
+ The invalid attribute allows testing for this case without exception handling.
+ @type invalid: bool
+ """
+
+ def isA(game_type):
+ """
+ Check if this is a type or a subtype game_type.
+
+ @param game_type: the name of the type or the type its self from the L{GameTypes} module.
+ @type game_type: string or type
+ @return: True if this object is a type or a subtype of game_type.
+ @rtype: bool
+ """
+
+class CValue(PyObjectPlus):
+ """
+ This class is a basis for other classes.
+ @ivar name: The name of this CValue derived object (read-only).
+ @type name: string
+ @group Deprecated: getName
+ """
+ def getName():
+ """
+ Returns the name of the CValue.
+
+ @deprecated: Use the L{name} attribute instead.
+ @note: in most cases the CValue's subclasses will override this function.
+ @rtype: string
+ """
+
+class CPropValue(CValue):
+ """
+ This class has no python functions
+ """
+ pass
+
+class SCA_ILogicBrick(CValue):
+ """
+ Base class for all logic bricks.
+
+ @ivar executePriority: This determines the order controllers are evaluated, and actuators are activated (lower priority is executed first).
+ @type executePriority: int
+ @ivar owner: The game object this logic brick is attached to (read-only).
+ @type owner: L{KX_GameObject} or None in exceptional cases.
+ @ivar name: The name of this logic brick (read-only).
+ @type name: string
+ """
+
+#{ Deprecated
+ def getOwner():
+ """
+ Gets the game object associated with this logic brick.
+
+ @deprecated: Use the L{owner} attribute instead.
+ @rtype: L{KX_GameObject}
+ """
+
+ def setExecutePriority(priority):
+ """
+ Sets the priority of this logic brick.
+
+ This determines the order controllers are evaluated, and actuators are activated.
+ Bricks with lower priority will be executed first.
+
+ @deprecated: Use the L{executePriority} attribute instead.
+ @type priority: integer
+ @param priority: the priority of this logic brick.
+ """
+ def getExecutePriority():
+ """
+ Gets the execution priority of this logic brick.
+
+ @deprecated: Use the L{executePriority} attribute instead.
+ @rtype: integer
+ @return: this logic bricks current priority.
+ """
+#}
+
+class SCA_IObject(CValue):
+ """
+ This class has no python functions
+ """
+ pass
+
+class SCA_ISensor(SCA_ILogicBrick):
+ """
+ Base class for all sensor logic bricks.
+
+ @ivar usePosPulseMode: Flag to turn positive pulse mode on and off.
+ @type usePosPulseMode: boolean
+ @ivar useNegPulseMode: Flag to turn negative pulse mode on and off.
+ @type useNegPulseMode: boolean
+ @ivar frequency: The frequency for pulse mode sensors.
+ @type frequency: int
+ @ivar level: Option whether to detect level or edge transition when entering a state.
+ It makes a difference only in case of logic state transition (state actuator).
+ A level detector will immediately generate a pulse, negative or positive
+ depending on the sensor condition, as soon as the state is activated.
+ A edge detector will wait for a state change before generating a pulse.
+ note: mutually exclusive with L{tap}, enabling will disable L{tap}.
+ @type level: boolean
+ @ivar tap: When enabled only sensors that are just activated will send a positive event,
+ after this they will be detected as negative by the controllers.
+ This will make a key thats held act as if its only tapped for an instant.
+ note: mutually exclusive with L{level}, enabling will disable L{level}.
+ @type tap: boolean
+ @ivar invert: Flag to set if this sensor activates on positive or negative events.
+ @type invert: boolean
+ @ivar triggered: True if this sensor brick is in a positive state. (read-only)
+ @type triggered: boolean
+ @ivar positive: True if this sensor brick is in a positive state. (read-only)
+ @type positive: boolean
+ """
+
+ def reset():
+ """
+ Reset sensor internal state, effect depends on the type of sensor and settings.
+
+ The sensor is put in its initial state as if it was just activated.
+ """
+#{ Deprecated
+ def isPositive():
+ """
+ True if this sensor brick is in a positive state.
+
+ @deprecated: use L{positive}
+ """
+
+ def isTriggered():
+ """
+ True if this sensor brick has triggered the current controller.
+
+ @deprecated: use L{triggered}
+ """
+
+ def getUsePosPulseMode():
+ """
+ True if the sensor is in positive pulse mode.
+
+ @deprecated: use L{usePosPulseMode}
+ """
+ def setUsePosPulseMode(pulse):
+ """
+ Sets positive pulse mode.
+
+ @type pulse: boolean
+ @param pulse: If True, will activate positive pulse mode for this sensor.
+ @deprecated: use L{usePosPulseMode}
+ """
+ def getFrequency():
+ """
+ The frequency for pulse mode sensors.
+
+ @rtype: integer
+ @return: the pulse frequency in 1/50 sec.
+ @deprecated: use L{frequency}
+ """
+ def setFrequency(freq):
+ """
+ Sets the frequency for pulse mode sensors.
+
+ @type freq: integer
+ @return: the pulse frequency in 1/50 sec.
+ @deprecated: use L{frequency}
+ """
+ def getUseNegPulseMode():
+ """
+ True if the sensor is in negative pulse mode.
+
+ @deprecated: use L{useNegPulseMode}
+ """
+ def setUseNegPulseMode(pulse):
+ """
+ Sets negative pulse mode.
+
+ @type pulse: boolean
+ @param pulse: If True, will activate negative pulse mode for this sensor.
+ @deprecated: use L{useNegPulseMode}
+ """
+ def getInvert():
+ """
+ True if this sensor activates on negative events.
+
+ @deprecated: use L{invert}
+ """
+ def setInvert(invert):
+ """
+ Sets if this sensor activates on positive or negative events.
+
+ @type invert: boolean
+ @param invert: true if activates on negative events; false if activates on positive events.
+ @deprecated: use L{invert}
+ """
+ def getLevel():
+ """
+ Returns whether this sensor is a level detector or a edge detector.
+ It makes a difference only in case of logic state transition (state actuator).
+ A level detector will immediately generate a pulse, negative or positive
+ depending on the sensor condition, as soon as the state is activated.
+ A edge detector will wait for a state change before generating a pulse.
+
+ @rtype: boolean
+ @return: true if sensor is level sensitive, false if it is edge sensitive
+ @deprecated: use L{level}
+ """
+ def setLevel(level):
+ """
+ Set whether to detect level or edge transition when entering a state.
+
+ @param level: Detect level instead of edge? (KX_TRUE, KX_FALSE)
+ @type level: boolean
+ @deprecated: use L{level}
+ """
+#}
+
+class SCA_IController(SCA_ILogicBrick):
+ """
+ Base class for all controller logic bricks.
+
+ @ivar state: the controllers state bitmask.
+ This can be used with the GameObject's state to test if the controller is active.
+ @type state: int bitmask
+ @ivar sensors: a list of sensors linked to this controller
+ - note: the sensors are not necessarily owned by the same object.
+ - note: when objects are instanced in dupligroups links may be lost from objects outside the dupligroup.
+ @type sensors: sequence supporting index/string lookups and iteration.
+ @ivar actuators: a list of actuators linked to this controller.
+ - note: the sensors are not necessarily owned by the same object.
+ - note: when objects are instanced in dupligroups links may be lost from objects outside the dupligroup.
+ @type actuators: sequence supporting index/string lookups and iteration.
+ @ivar useHighPriority: When set the controller executes always before all other controllers that dont have this set.
+ note: Order of execution between high priority controllers is not guaranteed.
+ @type useHighPriority: bool
+ """
+#{ Deprecated
+ def getState():
+ """
+ Get the controllers state bitmask, this can be used with the GameObject's state to test if the the controller is active.
+ This for instance will always be true however you could compare with a previous state to see when the state was activated.
+ GameLogic.getCurrentController().state & GameLogic.getCurrentController().owner.state
+ @deprecated: Use the L{state} property
+ @rtype: int
+ """
+ def getSensors():
+ """
+ Gets a list of all sensors attached to this controller.
+ @deprecated: use the L{sensors} property
+ @rtype: list [L{SCA_ISensor}]
+ """
+ def getSensor(name):
+ """
+ Gets the named linked sensor.
+ @deprecated: use the L{sensors}[name] property
+ @type name: string
+ @rtype: L{SCA_ISensor}
+ """
+ def getActuators():
+ """
+ Gets a list of all actuators linked to this controller.
+ @deprecated: Use the L{actuators} property
+ @rtype: list [L{SCA_IActuator}]
+ """
+ def getActuator(name):
+ """
+ Gets the named linked actuator.
+ @deprecated: use the L{actuators}[name] property
+ @type name: string
+ @rtype: L{SCA_IActuator}
+ """
+#}
+
+class SCA_IActuator(SCA_ILogicBrick):
+ """
+ Base class for all actuator logic bricks.
+ """
+
+class BL_ActionActuator(SCA_IActuator):
+ """
+ Action Actuators apply an action to an actor.
+
+ @ivar action: The name of the action to set as the current action.
+ @type action: string
+ @ivar frameStart: Specifies the starting frame of the animation.
+ @type frameStart: float
+ @ivar frameEnd: Specifies the ending frame of the animation.
+ @type frameEnd: float
+ @ivar blendIn: Specifies the number of frames of animation to generate when making transitions between actions.
+ @type blendIn: float
+ @ivar priority: Sets the priority of this actuator. Actuators will lower
+ priority numbers will override actuators with higher
+ numbers.
+ @type priority: integer
+ @ivar frame: Sets the current frame for the animation.
+ @type frame: float
+ @ivar propName: Sets the property to be used in FromProp playback mode.
+ @type propName: string
+ @ivar blendTime: Sets the internal frame timer. This property must be in
+ the range from 0.0 to blendIn.
+ @type blendTime: float
+ @ivar mode: The operation mode of the actuator. KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ @type mode: integer
+ @ivar useContinue: The actions continue option, True or False.
+ When True, the action will always play from where last left off,
+ otherwise negative events to this actuator will reset it to its start frame.
+ @type useContinue: boolean
+ @ivar framePropName: The name of the property that is set to the current frame number.
+ @type framePropName: string
+ """
+ def setChannel(channel, matrix, mode = False):
+ """
+ @param channel: A string specifying the name of the bone channel.
+ @type channel: string
+ @param matrix: A 4x4 matrix specifying the overriding transformation
+ as an offset from the bone's rest position.
+ @type matrix: list [[float]]
+ @param mode: True for armature/world space, False for bone space
+ @type mode: boolean
+ """
+
+#{ Deprecated
+ def setAction(action, reset = True):
+ """
+ Sets the current action.
+ @deprecated: use the L{action} property
+ @param action: The name of the action to set as the current action.
+ @type action: string
+ @param reset: Optional parameter indicating whether to reset the
+ blend timer or not. A value of 1 indicates that the
+ timer should be reset. A value of 0 will leave it
+ unchanged. If reset is not specified, the timer will
+ be reset.
+ """
+
+ def setStart(start):
+ """
+ Specifies the starting frame of the animation.
+ @deprecated: Use the L{frameStart} property
+ @param start: the starting frame of the animation
+ @type start: float
+ """
+
+ def setEnd(end):
+ """
+ Specifies the ending frame of the animation.
+ @deprecated: use the L{frameEnd} property
+ @param end: the ending frame of the animation
+ @type end: float
+ """
+ def setBlendin(blendin):
+ """
+ Specifies the number of frames of animation to generate
+ when making transitions between actions.
+ @deprecated: use the L{blendIn} property
+ @param blendin: the number of frames in transition.
+ @type blendin: float
+ """
+
+ def setPriority(priority):
+ """
+ Sets the priority of this actuator.
+
+ @deprecated: Use use the L{priority} property
+ @param priority: Specifies the new priority. Actuators will lower
+ priority numbers will override actuators with higher
+ numbers.
+ @type priority: integer
+ """
+ def setFrame(frame):
+ """
+ Sets the current frame for the animation.
+
+ @deprecated: use the L{frame} property
+ @param frame: Specifies the new current frame for the animation
+ @type frame: float
+ """
+
+ def setProperty(prop):
+ """
+ Sets the property to be used in FromProp playback mode.
+
+ @deprecated: use the L{property} property
+ @param prop: the name of the property to use.
+ @type prop: string.
+ """
+
+ def setBlendtime(blendtime):
+ """
+ Sets the internal frame timer.
+
+ Allows the script to directly modify the internal timer
+ used when generating transitions between actions.
+
+ @deprecated: use the L{blendTime} property
+ @param blendtime: The new time. This parameter must be in the range from 0.0 to 1.0.
+ @type blendtime: float
+ """
+
+ def setType(mode):
+ """
+ Sets the operation mode of the actuator
+
+ @deprecated: use the L{type} property
+ @param mode: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ @type mode: integer
+ """
+
+ def setContinue(cont):
+ """
+ Set the actions continue option True or False. see getContinue.
+
+ @deprecated: use the L{useContinue} property
+ @param cont: The continue option.
+ @type cont: bool
+ """
+
+ def getType():
+ """
+ Returns the operation mode of the actuator
+
+ @deprecated: use the L{type} property
+ @rtype: integer
+ @return: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ """
+
+ def getContinue():
+ """
+ When True, the action will always play from where last left off, otherwise negative events to this actuator will reset it to its start frame.
+
+ @deprecated: use the L{useContinue} property
+ @rtype: bool
+ """
+
+ def getAction():
+ """
+ getAction() returns the name of the action associated with this actuator.
+
+ @deprecated: use the L{action} property
+ @rtype: string
+ """
+
+ def getStart():
+ """
+ Returns the starting frame of the action.
+
+ @deprecated: use the L{frameStart} property
+ @rtype: float
+ """
+ def getEnd():
+ """
+ Returns the last frame of the action.
+
+ @deprecated: use the L{frameEnd} property
+ @rtype: float
+ """
+ def getBlendin():
+ """
+ Returns the number of interpolation animation frames to be generated when this actuator is triggered.
+
+ @deprecated: use the L{blendIn} property
+ @rtype: float
+ """
+ def getPriority():
+ """
+ Returns the priority for this actuator. Actuators with lower Priority numbers will
+ override actuators with higher numbers.
+
+ @deprecated: use the L{priority} property
+ @rtype: integer
+ """
+ def getFrame():
+ """
+ Returns the current frame number.
+
+ @deprecated: use the L{frame} property
+ @rtype: float
+ """
+ def getProperty():
+ """
+ Returns the name of the property to be used in FromProp mode.
+
+ @deprecated: use the L{property} property
+ @rtype: string
+ """
+ def setFrameProperty(prop):
+ """
+ @deprecated: use the L{framePropName} property
+ @param prop: A string specifying the property of the object that will be updated with the action frame number.
+ @type prop: string
+ """
+ def getFrameProperty():
+ """
+ Returns the name of the property that is set to the current frame number.
+
+ @deprecated: use the L{framePropName} property
+ @rtype: string
+ """
+#}
+
+class BL_Shader(PyObjectPlus):
+ """
+ BL_Shader GLSL shaders.
+
+ TODO - Description
+ """
+
+ def setUniformfv(name, fList):
+ """
+ Set a uniform with a list of float values
+
+ @param name: the uniform name
+ @type name: string
+
+ @param fList: a list (2, 3 or 4 elements) of float values
+ @type fList: list[float]
+ """
+
+ def delSource():
+ """
+ Clear the shader. Use this method before the source is changed with L{setSource}.
+ """
+ def getFragmentProg():
+ """
+ Returns the fragment program.
+
+ @rtype: string
+ @return: The fragment program.
+ """
+ def getVertexProg():
+ """
+ Get the vertex program.
+
+ @rtype: string
+ @return: The vertex program.
+ """
+ def isValid():
+ """
+ Check if the shader is valid.
+
+ @rtype: bool
+ @return: True if the shader is valid
+ """
+ def setAttrib(enum):
+ """
+ Set attribute location. (The parameter is ignored a.t.m. and the value of "tangent" is always used.)
+
+ @param enum: attribute location value
+ @type enum: integer
+ """
+ def setNumberOfPasses( max_pass ):
+ """
+ Set the maximum number of passes. Not used a.t.m.
+
+ @param max_pass: the maximum number of passes
+ @type max_pass: integer
+ """
+ def setSampler(name, index):
+ """
+ Set uniform texture sample index.
+
+ @param name: Uniform name
+ @type name: string
+
+ @param index: Texture sample index.
+ @type index: integer
+ """
+ def setSource(vertexProgram, fragmentProgram):
+ """
+ Set the vertex and fragment programs
+
+ @param vertexProgram: Vertex program
+ @type vertexProgram: string
+
+ @param fragmentProgram: Fragment program
+ @type fragmentProgram: string
+ """
+ def setUniform1f(name, fx):
+ """
+ Set a uniform with 1 float value.
+
+ @param name: the uniform name
+ @type name: string
+
+ @param fx: Uniform value
+ @type fx: float
+ """
+ def setUniform1i(name, ix):
+ """
+ Set a uniform with an integer value.
+
+ @param name: the uniform name
+ @type name: string
+
+ @param ix: the uniform value
+ @type ix: integer
+ """
+ def setUniform2f(name, fx, fy):
+ """
+ Set a uniform with 2 float values
+
+ @param name: the uniform name
+ @type name: string
+
+ @param fx: first float value
+ @type fx: float
+
+ @param fy: second float value
+ @type fy: float
+ """
+ def setUniform2i(name, ix, iy):
+ """
+ Set a uniform with 2 integer values
+
+ @param name: the uniform name
+ @type name: string
+
+ @param ix: first integer value
+ @type ix: integer
+
+ @param iy: second integer value
+ @type iy: integer
+ """
+ def setUniform3f(name, fx,fy,fz):
+ """
+ Set a uniform with 3 float values.
+
+ @param name: the uniform name
+ @type name: string
+
+ @param fx: first float value
+ @type fx: float
+
+ @param fy: second float value
+ @type fy: float
+
+ @param fz: third float value
+ @type fz: float
+ """
+ def setUniform3i(name, ix,iy,iz):
+ """
+ Set a uniform with 3 integer values
+
+ @param name: the uniform name
+ @type name: string
+
+ @param ix: first integer value
+ @type ix: integer
+
+ @param iy: second integer value
+ @type iy: integer
+
+ @param iz: third integer value
+ @type iz: integer
+ """
+ def setUniform4f(name, fx,fy,fz,fw):
+ """
+ Set a uniform with 4 float values.
+
+ @param name: the uniform name
+ @type name: string
+
+ @param fx: first float value
+ @type fx: float
+
+ @param fy: second float value
+ @type fy: float
+
+ @param fz: third float value
+ @type fz: float
+
+ @param fw: fourth float value
+ @type fw: float
+ """
+ def setUniform4i(name, ix,iy,iz, iw):
+ """
+ Set a uniform with 4 integer values
+
+ @param name: the uniform name
+ @type name: string
+
+ @param ix: first integer value
+ @type ix: integer
+
+ @param iy: second integer value
+ @type iy: integer
+
+ @param iz: third integer value
+ @type iz: integer
+
+ @param iw: fourth integer value
+ @type iw: integer
+ """
+ def setUniformDef(name, type):
+ """
+ Define a new uniform
+
+ @param name: the uniform name
+ @type name: string
+
+ @param type: uniform type
+ @type type: UNI_NONE, UNI_INT, UNI_FLOAT, UNI_INT2, UNI_FLOAT2, UNI_INT3, UNI_FLOAT3, UNI_INT4, UNI_FLOAT4, UNI_MAT3, UNI_MAT4, UNI_MAX
+ """
+ def setUniformMatrix3(name, mat, transpose):
+ """
+ Set a uniform with a 3x3 matrix value
+
+ @param name: the uniform name
+ @type name: string
+
+ @param mat: A 3x3 matrix [[f,f,f], [f,f,f], [f,f,f]]
+ @type mat: 3x3 matrix
+
+ @param transpose: set to True to transpose the matrix
+ @type transpose: bool
+ """
+ def setUniformMatrix4(name, mat, transpose):
+ """
+ Set a uniform with a 4x4 matrix value
+
+ @param name: the uniform name
+ @type name: string
+
+ @param mat: A 4x4 matrix [[f,f,f,f], [f,f,f,f], [f,f,f,f], [f,f,f,f]]
+ @type mat: 4x4 matrix
+
+ @param transpose: set to True to transpose the matrix
+ @type transpose: bool
+ """
+ def setUniformiv(name, iList):
+ """
+ Set a uniform with a list of integer values
+
+ @param name: the uniform name
+ @type name: string
+
+ @param iList: a list (2, 3 or 4 elements) of integer values
+ @type iList: list[integer]
+ """
+ def validate():
+ """
+ Validate the shader object.
+
+ """
+
+class BL_ShapeActionActuator(SCA_IActuator):
+ """
+ ShapeAction Actuators apply an shape action to an mesh object.\
+
+ @ivar action: The name of the action to set as the current shape action.
+ @type action: string
+ @ivar frameStart: Specifies the starting frame of the shape animation.
+ @type frameStart: float
+ @ivar frameEnd: Specifies the ending frame of the shape animation.
+ @type frameEnd: float
+ @ivar blendIn: Specifies the number of frames of animation to generate when making transitions between actions.
+ @type blendIn: float
+ @ivar priority: Sets the priority of this actuator. Actuators will lower
+ priority numbers will override actuators with higher
+ numbers.
+ @type priority: integer
+ @ivar frame: Sets the current frame for the animation.
+ @type frame: float
+ @ivar propName: Sets the property to be used in FromProp playback mode.
+ @type propName: string
+ @ivar blendTime: Sets the internal frame timer. This property must be in
+ the range from 0.0 to blendin.
+ @type blendTime: float
+ @ivar mode: The operation mode of the actuator.
+ KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER,
+ KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ @type mode: integer
+ @ivar framePropName: The name of the property that is set to the current frame number.
+ @type framePropName: string
+
+ """
+#{ Deprecated
+ def setAction(action, reset = True):
+ """
+ Sets the current action.
+
+ @deprecated: use the L{action} property
+ @param action: The name of the action to set as the current action.
+ @type action: string
+ @param reset: Optional parameter indicating whether to reset the
+ blend timer or not. A value of 1 indicates that the
+ timer should be reset. A value of 0 will leave it
+ unchanged. If reset is not specified, the timer will
+ be reset.
+ """
+
+ def setStart(start):
+ """
+ Specifies the starting frame of the animation.
+
+ @deprecated: use the L{frameStart} property
+ @param start: the starting frame of the animation
+ @type start: float
+ """
+
+ def setEnd(end):
+ """
+ Specifies the ending frame of the animation.
+
+ @deprecated: use the L{frameEnd} property
+ @param end: the ending frame of the animation
+ @type end: float
+ """
+ def setBlendin(blendin):
+ """
+ Specifies the number of frames of animation to generate
+ when making transitions between actions.
+
+ @deprecated: use the L{blendIn} property
+ @param blendin: the number of frames in transition.
+ @type blendin: float
+ """
+
+ def setPriority(priority):
+ """
+ Sets the priority of this actuator.
+
+ @deprecated: use the L{priority} property
+ @param priority: Specifies the new priority. Actuators will lower
+ priority numbers will override actuators with higher
+ numbers.
+ @type priority: integer
+ """
+ def setFrame(frame):
+ """
+ Sets the current frame for the animation.
+
+ @deprecated: use the L{frame} property
+ @param frame: Specifies the new current frame for the animation
+ @type frame: float
+ """
+
+ def setProperty(prop):
+ """
+ Sets the property to be used in FromProp playback mode.
+
+ @deprecated: use the L{property} property
+ @param prop: the name of the property to use.
+ @type prop: string.
+ """
+
+ def setBlendtime(blendtime):
+ """
+ Sets the internal frame timer.
+
+ Allows the script to directly modify the internal timer
+ used when generating transitions between actions.
+
+ @deprecated: use the L{blendTime} property
+ @param blendtime: The new time. This parameter must be in the range from 0.0 to 1.0.
+ @type blendtime: float
+ """
+
+ def setType(mode):
+ """
+ Sets the operation mode of the actuator
+
+ @deprecated: use the L{type} property
+ @param mode: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ @type mode: integer
+ """
+
+ def getType():
+ """
+ Returns the operation mode of the actuator
+
+ @deprecated: use the L{type} property
+ @rtype: integer
+ @return: KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ """
+
+ def getAction():
+ """
+ getAction() returns the name of the action associated with this actuator.
+
+ @deprecated: use the L{action} property
+ @rtype: string
+ """
+
+ def getStart():
+ """
+ Returns the starting frame of the action.
+
+ @deprecated: use the L{frameStart} property
+ @rtype: float
+ """
+ def getEnd():
+ """
+ Returns the last frame of the action.
+
+ @deprecated: use the L{frameEnd} property
+ @rtype: float
+ """
+ def getBlendin():
+ """
+ Returns the number of interpolation animation frames to be generated when this actuator is triggered.
+
+ @deprecated: use the L{blendIn} property
+ @rtype: float
+ """
+ def getPriority():
+ """
+ Returns the priority for this actuator. Actuators with lower Priority numbers will
+ override actuators with higher numbers.
+
+ @deprecated: use the L{priority} property
+ @rtype: integer
+ """
+ def getFrame():
+ """
+ Returns the current frame number.
+
+ @deprecated: use the L{frame} property
+ @rtype: float
+ """
+ def getProperty():
+ """
+ Returns the name of the property to be used in FromProp mode.
+
+ @deprecated: use the L{property} property
+ @rtype: string
+ """
+ def setFrameProperty(prop):
+ """
+ @deprecated: use the L{framePropName} property
+ @param prop: A string specifying the property of the object that will be updated with the action frame number.
+ @type prop: string
+ """
+ def getFrameProperty():
+ """
+ Returns the name of the property that is set to the current frame number.
+
+ @deprecated: use the L{framePropName} property
+ @rtype: string
+ """
+#}
+
+class CListValue(CPropValue):
+ """
+ CListValue
+
+ This is a list like object used in the game engine internally that behaves similar to a python list in most ways.
+
+ As well as the normal index lookup.
+ C{val= clist[i]}
+
+ CListValue supports string lookups.
+ C{val= scene.objects["OBCube"]}
+
+ Other operations such as C{len(clist), list(clist), clist[0:10]} are also supported.
+ """
+ def append(val):
+ """
+ Add an item to the list (like pythons append)
+
+ Warning: Appending values to the list can cause crashes when the list is used internally by the game engine.
+ """
+
+ def count(val):
+ """
+ Count the number of instances of a value in the list.
+
+ @rtype: integer
+ @return: number of instances
+ """
+ def index(val):
+ """
+ Return the index of a value in the list.
+
+ @rtype: integer
+ @return: The index of the value in the list.
+ """
+ def reverse():
+ """
+ Reverse the order of the list.
+ """
+ def get(key, default=None):
+ """
+ Return the value matching key, or the default value if its not found.
+ @return: The key value or a default.
+ """
+ def has_key(key):
+ """
+ Return True if the key is found.
+ @rtype: boolean
+ @return: The key value or a default.
+ """
+ def from_id(id):
+ """
+ This is a funtion especially for the game engine to return a value with a spesific id.
+
+ Since object names are not always unique, the id of an object can be used to get an object from the CValueList.
+
+ Example.
+
+ C{myObID = id(gameObject)}
+
+ C{...}
+
+ C{ob= scene.objects.from_id(myObID)}
+
+ Where myObID is an int or long from the id function.
+
+ This has the advantage that you can store the id in places you could not store a gameObject.
+
+ Warning: the id is derived from a memory location and will be different each time the game engine starts.
+ """
+
+class KX_BlenderMaterial(PyObjectPlus): # , RAS_IPolyMaterial)
+ """
+ KX_BlenderMaterial
+
+ """
+
+ def getShader():
+ """
+ Returns the material's shader.
+
+ @rtype: L{BL_Shader}
+ @return: the material's shader
+ """
+
+ def setBlending(src, dest):
+ """
+ Set the pixel color arithmetic functions.
+
+ @param src: Specifies how the red, green, blue,
+ and alpha source blending factors are computed.
+ @type src: GL_ZERO,
+ GL_ONE,
+ GL_SRC_COLOR,
+ GL_ONE_MINUS_SRC_COLOR,
+ GL_DST_COLOR,
+ GL_ONE_MINUS_DST_COLOR,
+ GL_SRC_ALPHA,
+ GL_ONE_MINUS_SRC_ALPHA,
+ GL_DST_ALPHA,
+ GL_ONE_MINUS_DST_ALPHA,
+ GL_SRC_ALPHA_SATURATE
+
+
+ @param dest: Specifies how the red, green, blue,
+ and alpha destination blending factors are computed.
+ @type dest: GL_ZERO,
+ GL_ONE,
+ GL_SRC_COLOR,
+ GL_ONE_MINUS_SRC_COLOR,
+ GL_DST_COLOR,
+ GL_ONE_MINUS_DST_COLOR,
+ GL_SRC_ALPHA,
+ GL_ONE_MINUS_SRC_ALPHA,
+ GL_DST_ALPHA,
+ GL_ONE_MINUS_DST_ALPHA,
+ GL_SRC_ALPHA_SATURATE
+
+ """
+ def getMaterialIndex():
+ """
+ Returns the material's index.
+
+ @rtype: integer
+ @return: the material's index
+ """
+
+class KX_CDActuator(SCA_IActuator):
+ """
+ CD Controller actuator.
+ @ivar volume: controls the volume to set the CD to. 0.0 = silent, 1.0 = max volume.
+ @type volume: float
+ @ivar track: the track selected to be played
+ @type track: integer
+ @ivar gain: the gain (volume) of the CD between 0.0 and 1.0.
+ @type gain: float
+ """
+ def startCD():
+ """
+ Starts the CD playing.
+ """
+ def stopCD():
+ """
+ Stops the CD playing.
+ """
+ def pauseCD():
+ """
+ Pauses the CD.
+ """
+ def resumeCD():
+ """
+ Resumes the CD after a pause.
+ """
+ def playAll():
+ """
+ Plays the CD from the beginning.
+ """
+ def playTrack(trackNumber):
+ """
+ Plays the track selected.
+ """
+#{ Deprecated
+ def setGain(gain):
+ """
+ Sets the gain (volume) of the CD.
+
+ @deprecated: Use the L{volume} property.
+ @type gain: float
+ @param gain: the gain to set the CD to. 0.0 = silent, 1.0 = max volume.
+ """
+ def getGain():
+ """
+ Gets the current gain (volume) of the CD.
+
+ @deprecated: Use the L{volume} property.
+ @rtype: float
+ @return: Between 0.0 (silent) and 1.0 (max volume)
+ """
+#}
+
+class KX_CameraActuator(SCA_IActuator):
+ """
+ Applies changes to a camera.
+
+ @ivar min: minimum distance to the target object maintained by the actuator
+ @type min: float
+ @ivar max: maximum distance to stay from the target object
+ @type max: float
+ @ivar height: height to stay above the target object
+ @type height: float
+ @ivar useXY: axis this actuator is tracking, true=X, false=Y
+ @type useXY: boolean
+ @ivar object: the object this actuator tracks.
+ @type object: KX_GameObject or None
+ @author: snail
+ """
+#{ Deprecated
+ def getObject(name_only = 1):
+ """
+ Returns the name of the object this actuator tracks.
+
+ @deprecated: Use the L{object} attribute instead.
+ @type name_only: bool
+ @param name_only: optional argument, when 0 return a KX_GameObject
+ @rtype: string, KX_GameObject or None if no object is set
+ """
+
+ def setObject(target):
+ """
+ Sets the object this actuator tracks.
+
+ @deprecated: Use the L{object} attribute instead.
+ @param target: the object to track.
+ @type target: L{KX_GameObject}, string or None
+ """
+
+ def getMin():
+ """
+ Returns the minimum distance to target maintained by the actuator.
+
+ @deprecated: Use the L{min} attribute instead.
+ @rtype: float
+ """
+
+ def setMin(distance):
+ """
+ Sets the minimum distance to the target object maintained by the
+ actuator.
+
+ @deprecated: Use the L{min} attribute instead.
+ @param distance: The minimum distance to maintain.
+ @type distance: float
+ """
+
+ def getMax():
+ """
+ Gets the maximum distance to stay from the target object.
+
+ @deprecated: Use the L{max} attribute instead.
+ @rtype: float
+ """
+
+ def setMax(distance):
+ """
+ Sets the maximum distance to stay from the target object.
+
+ @deprecated: Use the L{max} attribute instead.
+ @param distance: The maximum distance to maintain.
+ @type distance: float
+ """
+
+ def getHeight():
+ """
+ Returns the height to stay above the target object.
+
+ @deprecated: Use the L{height} attribute instead.
+ @rtype: float
+ """
+
+ def setHeight(height):
+ """
+ Sets the height to stay above the target object.
+
+ @deprecated: Use the L{height} attribute instead.
+ @type height: float
+ @param height: The height to stay above the target object.
+ """
+
+ def setXY(xaxis):
+ """
+ Sets the axis to get behind.
+
+ @deprecated: Use the L{useXY} attribute instead.
+ @param xaxis: False to track Y axis, True to track X axis.
+ @type xaxis: boolean
+ """
+
+ def getXY():
+ """
+ Returns the axis this actuator is tracking.
+
+ @deprecated: Use the L{useXY} attribute instead.
+ @return: True if tracking X axis, False if tracking Y axis.
+ @rtype: boolean
+ """
+#}
+
+class KX_ConstraintActuator(SCA_IActuator):
+ """
+ A constraint actuator limits the position, rotation, distance or orientation of an object.
+
+ Properties:
+
+ @ivar damp: time constant of the constraint expressed in frame (not use by Force field constraint)
+ @type damp: integer
+
+ @ivar rotDamp: time constant for the rotation expressed in frame (only for the distance constraint)
+ 0 = use damp for rotation as well
+ @type rotDamp: integer
+
+ @ivar direction: the reference direction in world coordinate for the orientation constraint
+ @type direction: 3-tuple of float: [x,y,z]
+
+ @ivar option: Binary combination of the following values:
+ Applicable to Distance constraint:
+ - KX_ACT_CONSTRAINT_NORMAL ( 64) : Activate alignment to surface
+ - KX_ACT_CONSTRAINT_DISTANCE ( 512) : Activate distance control
+ - KX_ACT_CONSTRAINT_LOCAL (1024) : direction of the ray is along the local axis
+ Applicable to Force field constraint:
+ - KX_ACT_CONSTRAINT_DOROTFH (2048) : Force field act on rotation as well
+ Applicable to both:
+ - KX_ACT_CONSTRAINT_MATERIAL ( 128) : Detect material rather than property
+ - KX_ACT_CONSTRAINT_PERMANENT ( 256) : No deactivation if ray does not hit target
+ @type option: integer
+
+ @ivar time: activation time of the actuator. The actuator disables itself after this many frame.
+ If set to 0, the actuator is not limited in time.
+ @type time: integer
+
+ @ivar propName: the name of the property or material for the ray detection of the distance constraint.
+ @type propName: string
+
+ @ivar min: The lower bound of the constraint
+ For the rotation and orientation constraint, it represents radiant
+ @type min: float
+
+ @ivar distance: the target distance of the distance constraint
+ @type distance: float
+
+ @ivar max: the upper bound of the constraint.
+ For rotation and orientation constraints, it represents radiant.
+ @type max: float
+
+ @ivar rayLength: the length of the ray of the distance constraint.
+ @type rayLength: float
+
+ @ivar limit: type of constraint, use one of the following constant:
+ KX_ACT_CONSTRAINT_LOCX ( 1) : limit X coord
+ KX_ACT_CONSTRAINT_LOCY ( 2) : limit Y coord
+ KX_ACT_CONSTRAINT_LOCZ ( 3) : limit Z coord
+ KX_ACT_CONSTRAINT_ROTX ( 4) : limit X rotation
+ KX_ACT_CONSTRAINT_ROTY ( 5) : limit Y rotation
+ KX_ACT_CONSTRAINT_ROTZ ( 6) : limit Z rotation
+ KX_ACT_CONSTRAINT_DIRPX ( 7) : set distance along positive X axis
+ KX_ACT_CONSTRAINT_DIRPY ( 8) : set distance along positive Y axis
+ KX_ACT_CONSTRAINT_DIRPZ ( 9) : set distance along positive Z axis
+ KX_ACT_CONSTRAINT_DIRNX (10) : set distance along negative X axis
+ KX_ACT_CONSTRAINT_DIRNY (11) : set distance along negative Y axis
+ KX_ACT_CONSTRAINT_DIRNZ (12) : set distance along negative Z axis
+ KX_ACT_CONSTRAINT_ORIX (13) : set orientation of X axis
+ KX_ACT_CONSTRAINT_ORIY (14) : set orientation of Y axis
+ KX_ACT_CONSTRAINT_ORIZ (15) : set orientation of Z axis
+ KX_ACT_CONSTRAINT_FHPX (16) : set force field along positive X axis
+ KX_ACT_CONSTRAINT_FHPY (17) : set force field along positive Y axis
+ KX_ACT_CONSTRAINT_FHPZ (18) : set force field along positive Z axis
+ KX_ACT_CONSTRAINT_FHNX (19) : set force field along negative X axis
+ KX_ACT_CONSTRAINT_FHNY (20) : set force field along negative Y axis
+ KX_ACT_CONSTRAINT_FHNZ (21) : set force field along negative Z axis
+ @type limit: integer
+ """
+#{ Deprecated
+ def setDamp(time):
+ """
+ Sets the time this constraint is delayed.
+
+ @param time: The number of frames to delay.
+ Negative values are ignored.
+ @type time: integer
+ """
+ def getDamp():
+ """
+ Returns the damping time of the constraint.
+
+ @rtype: integer
+ """
+ def setMin(lower):
+ """
+ Sets the lower bound of the constraint.
+
+ For rotational and orientation constraints, lower is specified in degrees.
+
+ @type lower: float
+ """
+ def getMin():
+ """
+ Gets the lower bound of the constraint.
+
+ For rotational and orientation constraints, the lower bound is returned in radians.
+
+ @rtype: float
+ """
+ def setMax(upper):
+ """
+ Sets the upper bound of the constraint.
+
+ For rotational and orientation constraints, upper is specified in degrees.
+
+ @type upper: float
+ """
+ def getMax():
+ """
+ Gets the upper bound of the constraint.
+
+ For rotational and orientation constraints, the upper bound is returned in radians.
+
+ @rtype: float
+ """
+ def setLimit(limit):
+ """
+ Sets the type of constraint.
+
+ See module L{GameLogic} for valid constraint types.
+
+ @param limit:
+ Position constraints: KX_CONSTRAINTACT_LOCX, KX_CONSTRAINTACT_LOCY, KX_CONSTRAINTACT_LOCZ
+ Rotation constraints: KX_CONSTRAINTACT_ROTX, KX_CONSTRAINTACT_ROTY or KX_CONSTRAINTACT_ROTZ
+ Distance contraints: KX_ACT_CONSTRAINT_DIRPX, KX_ACT_CONSTRAINT_DIRPY, KX_ACT_CONSTRAINT_DIRPZ, KX_ACT_CONSTRAINT_DIRNX, KX_ACT_CONSTRAINT_DIRNY, KX_ACT_CONSTRAINT_DIRNZ
+ Orientation constraints: KX_ACT_CONSTRAINT_ORIX, KX_ACT_CONSTRAINT_ORIY, KX_ACT_CONSTRAINT_ORIZ
+ """
+ def getLimit():
+ """
+ Gets the type of constraint.
+
+ See module L{GameLogic} for valid constraints.
+
+ @return:
+ Position constraints: KX_CONSTRAINTACT_LOCX, KX_CONSTRAINTACT_LOCY, KX_CONSTRAINTACT_LOCZ,
+ Rotation constraints: KX_CONSTRAINTACT_ROTX, KX_CONSTRAINTACT_ROTY, KX_CONSTRAINTACT_ROTZ,
+ Distance contraints: KX_ACT_CONSTRAINT_DIRPX, KX_ACT_CONSTRAINT_DIRPY, KX_ACT_CONSTRAINT_DIRPZ, KX_ACT_CONSTRAINT_DIRNX, KX_ACT_CONSTRAINT_DIRNY, KX_ACT_CONSTRAINT_DIRNZ,
+ Orientation constraints: KX_ACT_CONSTRAINT_ORIX, KX_ACT_CONSTRAINT_ORIY, KX_ACT_CONSTRAINT_ORIZ
+ """
+ def setRotDamp(duration):
+ """
+ Sets the time constant of the orientation constraint.
+
+ @param duration: If the duration is negative, it is set to 0.
+ @type duration: integer
+ """
+ def getRotDamp():
+ """
+ Returns the damping time for application of the constraint.
+
+ @rtype: integer
+ """
+ def setDirection(vector):
+ """
+ Sets the reference direction in world coordinate for the orientation constraint
+
+ @type vector: 3-tuple
+ """
+ def getDirection():
+ """
+ Returns the reference direction of the orientation constraint in world coordinate.
+
+ @rtype: 3-tuple
+ """
+ def setOption(option):
+ """
+ Sets several options of the distance constraint.
+
+ @type option: integer
+ @param option: Binary combination of the following values:
+ 64 : Activate alignment to surface
+ 128 : Detect material rather than property
+ 256 : No deactivation if ray does not hit target
+ 512 : Activate distance control
+ """
+ def getOption():
+ """
+ Returns the option parameter.
+
+ @rtype: integer
+ """
+ def setTime(duration):
+ """
+ Sets the activation time of the actuator.
+
+ @type duration: integer
+ @param duration: The actuator disables itself after this many frame.
+ If set to 0 or negative, the actuator is not limited in time.
+ """
+ def getTime():
+ """
+ Returns the time parameter.
+
+ @rtype: integer
+ """
+ def setProperty(property):
+ """
+ Sets the name of the property or material for the ray detection of the distance constraint.
+
+ @type property: string
+ @param property: If empty, the ray will detect any collisioning object.
+ """
+ def getProperty():
+ """
+ Returns the property parameter.
+
+ @rtype: string
+ """
+ def setDistance(distance):
+ """
+ Sets the target distance in distance constraint.
+
+ @type distance: float
+ """
+ def getDistance():
+ """
+ Returns the distance parameter.
+
+ @rtype: float
+ """
+ def setRayLength(length):
+ """
+ Sets the maximum ray length of the distance constraint.
+
+ @type length: float
+ """
+ def getRayLength():
+ """
+ Returns the length of the ray
+
+ @rtype: float
+ """
+#}
+
+class KX_ConstraintWrapper(PyObjectPlus):
+ """
+ KX_ConstraintWrapper
+
+ """
+ def getConstraintId(val):
+ """
+ Returns the contraint's ID
+
+ @rtype: integer
+ @return: the constraint's ID
+ """
+
+class KX_GameActuator(SCA_IActuator):
+ """
+ The game actuator loads a new .blend file, restarts the current .blend file or quits the game.
+
+ Properties:
+
+ @ivar fileName: the new .blend file to load
+ @type fileName: string.
+ @ivar mode: The mode of this actuator
+ @type mode: Constant in...
+ - L{GameLogic.KX_GAME_LOAD}
+ - L{GameLogic.KX_GAME_START}
+ - L{GameLogic.KX_GAME_RESTART}
+ - L{GameLogic.KX_GAME_QUIT}
+ - L{GameLogic.KX_GAME_SAVECFG}
+ - L{GameLogic.KX_GAME_LOADCFG}
+ """
+#{ Deprecated
+ def getFile():
+ """
+ Returns the filename of the new .blend file to load.
+
+ @deprecated: use the L{fileName} property
+ @rtype: string
+ """
+ def setFile(filename):
+ """
+ Sets the new .blend file to load.
+
+ @deprecated: use the L{fileName} property
+ @param filename: The file name this actuator will load.
+ @type filename: string
+ """
+#}
+
+class KX_GameObject(SCA_IObject):
+ """
+ All game objects are derived from this class.
+
+ Properties assigned to game objects are accessible as attributes of this class.
+ - note: Calling ANY method or attribute on an object that has been removed from a scene will raise a SystemError, if an object may have been removed since last accessing it use the L{invalid} attribute to check.
+
+ @ivar name: The object's name. (read-only)
+ - note: Currently (Blender 2.49) the prefix "OB" is added to all objects name. This may change in blender 2.5.
+ @type name: string.
+ @ivar mass: The object's mass
+ - note: The object must have a physics controller for the mass to be applied, otherwise the mass value will be returned as 0.0
+ @type mass: float
+ @ivar linVelocityMin: Enforces the object keeps moving at a minimum velocity.
+ - note: Applies to dynamic and rigid body objects only.
+ - note: A value of 0.0 disables this option.
+ - note: While objects are stationary the minimum velocity will not be applied.
+ @type linVelocityMin: float
+ @ivar linVelocityMax: Clamp the maximum linear velocity to prevent objects moving beyond a set speed.
+ - note: Applies to dynamic and rigid body objects only.
+ - note: A value of 0.0 disables this option (rather then setting it stationary).
+ @type linVelocityMax: float
+ @ivar localInertia: the object's inertia vector in local coordinates. Read only.
+ @type localInertia: list [ix, iy, iz]
+ @ivar parent: The object's parent object. (read-only)
+ @type parent: L{KX_GameObject} or None
+ @ivar visible: visibility flag.
+ - note: Game logic will still run for invisible objects.
+ @type visible: boolean
+ @ivar occlusion: occlusion capability flag.
+ @type occlusion: boolean
+ @ivar position: The object's position.
+
+ deprecated: use L{localPosition} and L{worldPosition}
+ @type position: list [x, y, z] On write: local position, on read: world position
+ @ivar orientation: The object's orientation. 3x3 Matrix. You can also write a Quaternion or Euler vector.
+
+ deprecated: use L{localOrientation} and L{worldOrientation}
+ @type orientation: 3x3 Matrix [[float]] On write: local orientation, on read: world orientation
+ @ivar scaling: The object's scaling factor. list [sx, sy, sz]
+
+ deprecated: use L{localScale} and L{worldScale}
+ @type scaling: list [sx, sy, sz] On write: local scaling, on read: world scaling
+ @ivar localOrientation: The object's local orientation. 3x3 Matrix. You can also write a Quaternion or Euler vector.
+ @type localOrientation: 3x3 Matrix [[float]]
+ @ivar worldOrientation: The object's world orientation.
+ @type worldOrientation: 3x3 Matrix [[float]]
+ @ivar localScale: The object's local scaling factor.
+ @type localScale: list [sx, sy, sz]
+ @ivar worldScale: The object's world scaling factor. Read-only
+ @type worldScale: list [sx, sy, sz]
+ @ivar localPosition: The object's local position.
+ @type localPosition: list [x, y, z]
+ @ivar worldPosition: The object's world position.
+ @type worldPosition: list [x, y, z]
+ @ivar timeOffset: adjust the slowparent delay at runtime.
+ @type timeOffset: float
+ @ivar state: the game object's state bitmask, using the first 30 bits, one bit must always be set.
+ @type state: int
+ @ivar meshes: a list meshes for this object.
+ - note: Most objects use only 1 mesh.
+ - note: Changes to this list will not update the KX_GameObject.
+ @type meshes: list of L{KX_MeshProxy}
+ @ivar sensors: a sequence of L{SCA_ISensor} objects with string/index lookups and iterator support.
+ - note: This attribute is experemental and may be removed (but probably wont be).
+ - note: Changes to this list will not update the KX_GameObject.
+ @type sensors: list
+ @ivar controllers: a sequence of L{SCA_IController} objects with string/index lookups and iterator support.
+ - note: This attribute is experemental and may be removed (but probably wont be).
+ - note: Changes to this list will not update the KX_GameObject.
+ @type controllers: list of L{SCA_ISensor}.
+ @ivar actuators: a list of L{SCA_IActuator} with string/index lookups and iterator support.
+ - note: This attribute is experemental and may be removed (but probably wont be).
+ - note: Changes to this list will not update the KX_GameObject.
+ @type actuators: list
+ @ivar attrDict: get the objects internal python attribute dictionary for direct (faster) access.
+ @type attrDict: dict
+ @ivar children: direct children of this object, (read-only).
+ @type children: L{CListValue} of L{KX_GameObject}'s
+ @ivar childrenRecursive: all children of this object including childrens children, (read-only).
+ @type childrenRecursive: L{CListValue} of L{KX_GameObject}'s
+ @group Deprecated: getPosition, setPosition, setWorldPosition, getOrientation, setOrientation, getState, setState, getParent, getVisible, getMass, getMesh, getChildren, getChildrenRecursive
+ @group Property Access: get, has_key, attrDict, getPropertyNames
+ """
+ def endObject():
+ """
+ Delete this object, can be used inpace of the EndObject Actuator.
+ The actual removal of the object from the scene is delayed.
+ """
+ def replaceMesh(mesh):
+ """
+ Replace the mesh of this object with a new mesh. This works the same was as the actuator.
+ @type mesh: L{KX_MeshProxy} or mesh name
+ """
+ def getVisible():
+ """
+ Gets the game object's visible flag.
+
+ @deprecated: use L{visible}
+ @rtype: boolean
+ """
+ def setVisible(visible, recursive):
+ """
+ Sets the game object's visible flag.
+
+ @type visible: boolean
+ @type recursive: boolean
+ @param recursive: optional argument to set all childrens visibility flag too.
+ """
+ def setOcclusion(occlusion, recursive):
+ """
+ Sets the game object's occlusion capability.
+
+ @type occlusion: boolean
+ @type recursive: boolean
+ @param recursive: optional argument to set all childrens occlusion flag too.
+ """
+ def getState():
+ """
+ Gets the game object's state bitmask.
+
+ @deprecated: use L{state}
+ @rtype: int
+ @return: the objects state.
+ """
+ def setState(state):
+ """
+ Sets the game object's state flag.
+ The bitmasks for states from 1 to 30 can be set with (1<<0, 1<<1, 1<<2 ... 1<<29)
+ @deprecated: use L{state}
+ @type state: integer
+ """
+ def setPosition(pos):
+ """
+ Sets the game object's position.
+ Global coordinates for root object, local for child objects.
+
+ @deprecated: use L{localPosition}
+ @type pos: [x, y, z]
+ @param pos: the new position, in local coordinates.
+ """
+ def setWorldPosition(pos):
+ """
+ Sets the game object's position in world coordinates regardless if the object is root or child.
+
+ @deprecated: use L{worldPosition}
+ @type pos: [x, y, z]
+ @param pos: the new position, in world coordinates.
+ """
+ def getPosition():
+ """
+ Gets the game object's position.
+
+ @deprecated: use L{worldPosition}
+ @rtype: list [x, y, z]
+ @return: the object's position in world coordinates.
+ """
+ def setOrientation(orn):
+ """
+ Sets the game object's orientation.
+
+ @deprecated: use L{localOrientation}
+ @type orn: 3x3 rotation matrix, or Quaternion.
+ @param orn: a rotation matrix specifying the new rotation.
+ @note: When using this matrix with Blender.Mathutils.Matrix() types, it will need to be transposed.
+ """
+ def alignAxisToVect(vect, axis, factor):
+ """
+ Aligns any of the game object's axis along the given vector.
+
+ @type vect: 3d vector.
+ @param vect: a vector to align the axis.
+ @type axis: integer.
+ @param axis:The axis you want to align
+ - 0: X axis
+ - 1: Y axis
+ - 2: Z axis (default)
+ @type factor: float
+ @param factor: Only rotate a feaction of the distance to the target vector (0.0 - 1.0)
+ """
+ def getAxisVect(vect):
+ """
+ Returns the axis vector rotates by the objects worldspace orientation.
+ This is the equivalent if multiplying the vector by the orientation matrix.
+
+ @type vect: 3d vector.
+ @param vect: a vector to align the axis.
+ @rtype: 3d vector.
+ @return: The vector in relation to the objects rotation.
+
+ """
+ def getOrientation():
+ """
+ Gets the game object's orientation.
+
+ @deprecated: use L{worldOrientation}
+ @rtype: 3x3 rotation matrix
+ @return: The game object's rotation matrix
+ @note: When using this matrix with Blender.Mathutils.Matrix() types, it will need to be transposed.
+ """
+ def applyMovement(movement, local = 0):
+ """
+ Sets the game object's movement.
+
+ @type movement: 3d vector.
+ @param movement: movement vector.
+ @type local: boolean
+ @param local: - False: you get the "global" movement ie: relative to world orientation (default).
+ - True: you get the "local" movement ie: relative to object orientation.
+ """
+ def applyRotation(rotation, local = 0):
+ """
+ Sets the game object's rotation.
+
+ @type rotation: 3d vector.
+ @param rotation: rotation vector.
+ @type local: boolean
+ @param local: - False: you get the "global" rotation ie: relative to world orientation (default).
+ - True: you get the "local" rotation ie: relative to object orientation.
+ """
+ def applyForce(force, local = 0):
+ """
+ Sets the game object's force.
+
+ This requires a dynamic object.
+
+ @type force: 3d vector.
+ @param force: force vector.
+ @type local: boolean
+ @param local: - False: you get the "global" force ie: relative to world orientation (default).
+ - True: you get the "local" force ie: relative to object orientation.
+ """
+ def applyTorque(torque, local = 0):
+ """
+ Sets the game object's torque.
+
+ This requires a dynamic object.
+
+ @type torque: 3d vector.
+ @param torque: torque vector.
+ @type local: boolean
+ @param local: - False: you get the "global" torque ie: relative to world orientation (default).
+ - True: you get the "local" torque ie: relative to object orientation.
+ """
+ def getLinearVelocity(local = 0):
+ """
+ Gets the game object's linear velocity.
+
+ This method returns the game object's velocity through it's centre of mass,
+ ie no angular velocity component.
+
+ @type local: boolean
+ @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
+ - True: you get the "local" velocity ie: relative to object orientation.
+ @rtype: list [vx, vy, vz]
+ @return: the object's linear velocity.
+ """
+ def setLinearVelocity(velocity, local = 0):
+ """
+ Sets the game object's linear velocity.
+
+ This method sets game object's velocity through it's centre of mass,
+ ie no angular velocity component.
+
+ This requires a dynamic object.
+
+ @type velocity: 3d vector.
+ @param velocity: linear velocity vector.
+ @type local: boolean
+ @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
+ - True: you get the "local" velocity ie: relative to object orientation.
+ """
+ def getAngularVelocity(local = 0):
+ """
+ Gets the game object's angular velocity.
+
+ @type local: boolean
+ @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
+ - True: you get the "local" velocity ie: relative to object orientation.
+ @rtype: list [vx, vy, vz]
+ @return: the object's angular velocity.
+ """
+ def setAngularVelocity(velocity, local = 0):
+ """
+ Sets the game object's angular velocity.
+
+ This requires a dynamic object.
+
+ @type velocity: 3d vector.
+ @param velocity: angular velocity vector.
+ @type local: boolean
+ @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
+ - True: you get the "local" velocity ie: relative to object orientation.
+ """
+ def getVelocity(point):
+ """
+ Gets the game object's velocity at the specified point.
+
+ Gets the game object's velocity at the specified point, including angular
+ components.
+
+ @type point: list [x, y, z]
+ @param point: the point to return the velocity for, in local coordinates. (optional: default = [0, 0, 0])
+ @rtype: list [vx, vy, vz]
+ @return: the velocity at the specified point.
+ """
+ def getMass():
+ """
+ Gets the game object's mass.
+
+ @deprecated: use L{mass}
+ @rtype: float
+ @return: the object's mass.
+ """
+ def getReactionForce():
+ """
+ Gets the game object's reaction force.
+
+ The reaction force is the force applied to this object over the last simulation timestep.
+ This also includes impulses, eg from collisions.
+
+ (B{This is not implimented for bullet physics at the moment})
+
+ @rtype: list [fx, fy, fz]
+ @return: the reaction force of this object.
+ """
+ def applyImpulse(point, impulse):
+ """
+ Applies an impulse to the game object.
+
+ This will apply the specified impulse to the game object at the specified point.
+ If point != getPosition(), applyImpulse will also change the object's angular momentum.
+ Otherwise, only linear momentum will change.
+
+ @type point: list [x, y, z]
+ @param point: the point to apply the impulse to (in world coordinates)
+ """
+ def suspendDynamics():
+ """
+ Suspends physics for this object.
+ """
+ def restoreDynamics():
+ """
+ Resumes physics for this object.
+ @Note: The objects linear velocity will be applied from when the dynamics were suspended.
+ """
+ def enableRigidBody():
+ """
+ Enables rigid body physics for this object.
+
+ Rigid body physics allows the object to roll on collisions.
+ @Note: This is not working with bullet physics yet.
+ """
+ def disableRigidBody():
+ """
+ Disables rigid body physics for this object.
+ @Note: This is not working with bullet physics yet. The angular is removed but rigid body physics can still rotate it later.
+ """
+ def getParent():
+ """
+ Gets this object's parent.
+
+ @deprecated: use L{parent}
+ @rtype: L{KX_GameObject}
+ @return: this object's parent object, or None if this object has no parent.
+ """
+ def setParent(parent,compound,ghost):
+ """
+ Sets this object's parent.
+ Control the shape status with the optional compound and ghost parameters:
+ compound=1: the object shape should be added to the parent compound shape (default)
+ compound=0: the object should keep its individual shape.
+ In that case you can control if it should be ghost or not:
+ ghost=1 if the object should be made ghost while parented (default)
+ ghost=0 if the object should be solid while parented
+ Note: if the object type is sensor, it stays ghost regardless of ghost parameter
+
+ @type parent: L{KX_GameObject}
+ @param parent: new parent object.
+ @type compound: int
+ @param compound: whether the shape should be added to the parent compound shape
+ @type ghost: int
+ @param ghost: whether the object should be ghost while parented
+ """
+ def removeParent():
+ """
+ Removes this objects parent.
+ """
+ def getChildren():
+ """
+ Return a list of immediate children of this object.
+ @rtype: L{CListValue} of L{KX_GameObject}
+ @return: a list of all this objects children.
+ """
+ def getChildrenRecursive():
+ """
+ Return a list of children of this object, including all their childrens children.
+ @rtype: L{CListValue} of L{KX_GameObject}
+ @return: a list of all this objects children recursivly.
+ """
+ def getMesh(mesh):
+ """
+ Gets the mesh object for this object.
+
+ @type mesh: integer
+ @param mesh: the mesh object to return (optional: default mesh = 0)
+ @rtype: L{KX_MeshProxy}
+ @return: the first mesh object associated with this game object, or None if this object has no meshs.
+ """
+ def getPhysicsId():
+ """
+ Returns the user data object associated with this game object's physics controller.
+ """
+ def getPropertyNames():
+ """
+ Gets a list of all property names.
+ @rtype: list
+ @return: All property names for this object.
+ """
+ def getDistanceTo(other):
+ """
+ Returns the distance to another object or point.
+
+ @param other: a point or another L{KX_GameObject} to measure the distance to.
+ @type other: L{KX_GameObject} or list [x, y, z]
+ @rtype: float
+ """
+ def getVectTo(other):
+ """
+ Returns the vector and the distance to another object or point.
+ The vector is normalized unless the distance is 0, in which a NULL vector is returned.
+
+ @param other: a point or another L{KX_GameObject} to get the vector and distance to.
+ @type other: L{KX_GameObject} or list [x, y, z]
+ @rtype: 3-tuple (float, 3-tuple (x,y,z), 3-tuple (x,y,z))
+ @return: (distance, globalVector(3), localVector(3))
+ """
+ def rayCastTo(other,dist,prop):
+ """
+ Look towards another point/object and find first object hit within dist that matches prop.
+
+ The ray is always casted from the center of the object, ignoring the object itself.
+ The ray is casted towards the center of another object or an explicit [x,y,z] point.
+ Use rayCast() if you need to retrieve the hit point
+
+ @param other: [x,y,z] or object towards which the ray is casted
+ @type other: L{KX_GameObject} or 3-tuple
+ @param dist: max distance to look (can be negative => look behind); 0 or omitted => detect up to other
+ @type dist: float
+ @param prop: property name that object must have; can be omitted => detect any object
+ @type prop: string
+ @rtype: L{KX_GameObject}
+ @return: the first object hit or None if no object or object does not match prop
+ """
+ def rayCast(objto,objfrom,dist,prop,face,xray,poly):
+ """
+ Look from a point/object to another point/object and find first object hit within dist that matches prop.
+ if poly is 0, returns a 3-tuple with object reference, hit point and hit normal or (None,None,None) if no hit.
+ if poly is 1, returns a 4-tuple with in addition a L{KX_PolyProxy} as 4th element.
+
+ Ex::
+ # shoot along the axis gun-gunAim (gunAim should be collision-free)
+ ob,point,normal = gun.rayCast(gunAim,None,50)
+ if ob:
+ # hit something
+
+ Notes:
+ The ray ignores the object on which the method is called.
+ It is casted from/to object center or explicit [x,y,z] points.
+
+ The face paremeter determines the orientation of the normal::
+ 0 => hit normal is always oriented towards the ray origin (as if you casted the ray from outside)
+ 1 => hit normal is the real face normal (only for mesh object, otherwise face has no effect)
+
+ The ray has X-Ray capability if xray parameter is 1, otherwise the first object hit (other than self object) stops the ray.
+ The prop and xray parameters interact as follow::
+ prop off, xray off: return closest hit or no hit if there is no object on the full extend of the ray.
+ prop off, xray on : idem.
+ prop on, xray off: return closest hit if it matches prop, no hit otherwise.
+ prop on, xray on : return closest hit matching prop or no hit if there is no object matching prop on the full extend of the ray.
+ The L{KX_PolyProxy} 4th element of the return tuple when poly=1 allows to retrieve information on the polygon hit by the ray.
+ If there is no hit or the hit object is not a static mesh, None is returned as 4th element.
+
+ The ray ignores collision-free objects and faces that dont have the collision flag enabled, you can however use ghost objects.
+
+ @param objto: [x,y,z] or object to which the ray is casted
+ @type objto: L{KX_GameObject} or 3-tuple
+ @param objfrom: [x,y,z] or object from which the ray is casted; None or omitted => use self object center
+ @type objfrom: L{KX_GameObject} or 3-tuple or None
+ @param dist: max distance to look (can be negative => look behind); 0 or omitted => detect up to to
+ @type dist: float
+ @param prop: property name that object must have; can be omitted or "" => detect any object
+ @type prop: string
+ @param face: normal option: 1=>return face normal; 0 or omitted => normal is oriented towards origin
+ @type face: int
+ @param xray: X-ray option: 1=>skip objects that don't match prop; 0 or omitted => stop on first object
+ @type xray: int
+ @param poly: polygon option: 1=>return value is a 4-tuple and the 4th element is a L{KX_PolyProxy}
+ @type poly: int
+ @rtype: 3-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz))
+ or 4-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz), L{KX_PolyProxy})
+ @return: (object,hitpoint,hitnormal) or (object,hitpoint,hitnormal,polygon)
+ If no hit, returns (None,None,None) or (None,None,None,None)
+ If the object hit is not a static mesh, polygon is None
+ """
+ def setCollisionMargin(margin):
+ """
+ Set the objects collision margin.
+
+ note: If this object has no physics controller (a physics ID of zero), this function will raise RuntimeError.
+
+ @type margin: float
+ @param margin: the collision margin distance in blender units.
+ """
+ def sendMessage(subject, body="", to=""):
+ """
+ Sends a message.
+
+ @param subject: The subject of the message
+ @type subject: string
+ @param body: The body of the message (optional)
+ @type body: string
+ @param to: The name of the object to send the message to (optional)
+ @type to: string
+ """
+ def get(key, default=None):
+ """
+ Return the value matching key, or the default value if its not found.
+ @return: The key value or a default.
+ """
+ def has_key(key):
+ """
+ Return True if the key is found.
+ @rtype: boolean
+ @return: The key value or a default.
+ """
+
+
+class KX_IpoActuator(SCA_IActuator):
+ """
+ IPO actuator activates an animation.
+
+ @ivar frameStart: Start frame.
+ @type frameStart: float
+ @ivar frameEnd: End frame.
+ @type frameEnd: float
+ @ivar propName: Use this property to define the Ipo position
+ @type propName: string
+ @ivar framePropName: Assign this property this action current frame number
+ @type framePropName: string
+ @ivar mode: Play mode for the ipo. (In GameLogic.KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND, KX_IPOACT_FROM_PROP)
+ @type mode: int
+ @ivar useIpoAsForce: Apply Ipo as a global or local force depending on the local option (dynamic objects only)
+ @type useIpoAsForce: bool
+ @ivar useIpoAdd: Ipo is added to the current loc/rot/scale in global or local coordinate according to Local flag
+ @type useIpoAdd: bool
+ @ivar useIpoLocal: Let the ipo acts in local coordinates, used in Force and Add mode.
+ @type useIpoLocal: bool
+ @ivar useChildren: Update IPO on all children Objects as well
+ @type useChildren: bool
+ """
+#{ Deprecated
+ def set(mode, startframe, endframe, force):
+ """
+ Sets the properties of the actuator.
+
+ @deprecated: use other attributes.
+ @param mode: "Play", "PingPong", "Flipper", "LoopStop", "LoopEnd" or "FromProp"
+ @type mode: string
+ @param startframe: first frame to use
+ @type startframe: integer
+ @param endframe: last frame to use
+ @type endframe: integer
+ @param force: special mode
+ @type force: integer (0=normal, 1=interpret location as force, 2=additive)
+ """
+ def setProperty(property):
+ """
+ Sets the name of the property to be used in FromProp mode.
+
+ @deprecated: use L{propName}
+ @type property: string
+ """
+ def setStart(startframe):
+ """
+ Sets the frame from which the IPO starts playing.
+
+ @deprecated: use L{frameStart}
+ @type startframe: integer
+ """
+ def getStart():
+ """
+ Returns the frame from which the IPO starts playing.
+
+ @deprecated: use L{frameStart}
+ @rtype: integer
+ """
+ def setEnd(endframe):
+ """
+ Sets the frame at which the IPO stops playing.
+
+ @deprecated: use L{frameEnd}
+ @type endframe: integer
+ """
+ def getEnd():
+ """
+ Returns the frame at which the IPO stops playing.
+
+ @deprecated: use L{frameEnd}
+ @rtype: integer
+ """
+ def setIpoAsForce(force):
+ """
+ Set whether to interpret the ipo as a force rather than a displacement.
+
+ @deprecated: use L{useIpoAsForce}
+ @type force: boolean
+ @param force: KX_TRUE or KX_FALSE
+ """
+ def getIpoAsForce():
+ """
+ Returns whether to interpret the ipo as a force rather than a displacement.
+
+ @deprecated: use L{useIpoAsForce}
+ @rtype: boolean
+ """
+ def setIpoAdd(add):
+ """
+ Set whether to interpret the ipo as additive rather than absolute.
+
+ @deprecated: use L{useIpoAdd}
+ @type add: boolean
+ @param add: KX_TRUE or KX_FALSE
+ """
+ def getIpoAdd():
+ """
+ Returns whether to interpret the ipo as additive rather than absolute.
+
+ @deprecated: use L{useIpoAdd}
+ @rtype: boolean
+ """
+ def setType(mode):
+ """
+ Sets the operation mode of the actuator.
+
+ @deprecated: use L{type}
+ @param mode: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
+ @type mode: string
+ """
+ def getType():
+ """
+ Returns the operation mode of the actuator.
+
+ @deprecated: use L{type}
+ @rtype: integer
+ @return: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
+ """
+ def setForceIpoActsLocal(local):
+ """
+ Set whether to apply the force in the object's local
+ coordinates rather than the world global coordinates.
+
+ @deprecated: use L{useIpoLocal}
+ @param local: Apply the ipo-as-force in the object's local
+ coordinates? (KX_TRUE, KX_FALSE)
+ @type local: boolean
+ """
+ def getForceIpoActsLocal():
+ """
+ Return whether to apply the force in the object's local
+ coordinates rather than the world global coordinates.
+
+ @deprecated: use L{useIpoLocal}
+ """
+#}
+
+class KX_LightObject(KX_GameObject):
+ """
+ A Light object.
+
+ Example:
+
+ # Turn on a red alert light.
+ import GameLogic
+
+ co = GameLogic.getCurrentController()
+ light = co.owner
+
+ light.energy = 1.0
+ light.colour = [1.0, 0.0, 0.0]
+
+ @group Constants: NORMAL, SPOT, SUN
+ @ivar SPOT: A spot light source. See attribute 'type'
+ @ivar SUN: A point light source with no attenuation. See attribute 'type'
+ @ivar NORMAL: A point light source. See attribute 'type'
+
+ @ivar type: The type of light - must be SPOT, SUN or NORMAL
+ @ivar layer: The layer mask that this light affects object on.
+ @type layer: bitfield
+ @ivar energy: The brightness of this light.
+ @type energy: float
+ @ivar distance: The maximum distance this light can illuminate. (SPOT and NORMAL lights only)
+ @type distance: float
+ @ivar colour: The colour of this light. Black = [0.0, 0.0, 0.0], White = [1.0, 1.0, 1.0]
+ @type colour: list [r, g, b]
+ @ivar color: Synonym for colour.
+ @ivar lin_attenuation: The linear component of this light's attenuation. (SPOT and NORMAL lights only)
+ @type lin_attenuation: float
+ @ivar quad_attenuation: The quadratic component of this light's attenuation (SPOT and NORMAL lights only)
+ @type quad_attenuation: float
+ @ivar spotsize: The cone angle of the spot light, in degrees. (float) (SPOT lights only)
+ 0.0 <= spotsize <= 180.0. Spotsize = 360.0 is also accepted.
+ @ivar spotblend: Specifies the intensity distribution of the spot light. (float) (SPOT lights only)
+ Higher values result in a more focused light source.
+ 0.0 <= spotblend <= 1.0.
+
+ """
+
+class KX_MeshProxy(SCA_IObject):
+ """
+ A mesh object.
+
+ You can only change the vertex properties of a mesh object, not the mesh topology.
+
+ To use mesh objects effectively, you should know a bit about how the game engine handles them.
+ 1. Mesh Objects are converted from Blender at scene load.
+ 2. The Converter groups polygons by Material. This means they can be sent to the
+ renderer efficiently. A material holds:
+ 1. The texture.
+ 2. The Blender material.
+ 3. The Tile properties
+ 4. The face properties - (From the "Texture Face" panel)
+ 5. Transparency & z sorting
+ 6. Light layer
+ 7. Polygon shape (triangle/quad)
+ 8. Game Object
+ 3. Verticies will be split by face if necessary. Verticies can only be shared between
+ faces if:
+ 1. They are at the same position
+ 2. UV coordinates are the same
+ 3. Their normals are the same (both polygons are "Set Smooth")
+ 4. They are the same colour
+ For example: a cube has 24 verticies: 6 faces with 4 verticies per face.
+
+ The correct method of iterating over every L{KX_VertexProxy} in a game object::
+ import GameLogic
+
+ co = GameLogic.getCurrentController()
+ obj = co.owner
+
+ m_i = 0
+ mesh = obj.getMesh(m_i) # There can be more than one mesh...
+ while mesh != None:
+ for mat in range(mesh.getNumMaterials()):
+ for v_index in range(mesh.getVertexArrayLength(mat)):
+ vertex = mesh.getVertex(mat, v_index)
+ # Do something with vertex here...
+ # ... eg: colour the vertex red.
+ vertex.colour = [1.0, 0.0, 0.0, 1.0]
+ m_i += 1
+ mesh = obj.getMesh(m_i)
+
+ @ivar materials:
+ @type materials: list of L{KX_BlenderMaterial} or L{KX_PolygonMaterial} types
+
+ @ivar numPolygons:
+ @type numPolygons: integer
+
+ @ivar numMaterials:
+ @type numMaterials: integer
+ """
+
+ def getNumMaterials():
+ """
+ Gets the number of materials associated with this object.
+
+ @rtype: integer
+ """
+
+ def getMaterialName(matid):
+ """
+ Gets the name of the specified material.
+
+ @type matid: integer
+ @param matid: the specified material.
+ @rtype: string
+ @return: the attached material name.
+ """
+ def getTextureName(matid):
+ """
+ Gets the name of the specified material's texture.
+
+ @type matid: integer
+ @param matid: the specified material
+ @rtype: string
+ @return: the attached material's texture name.
+ """
+ def getVertexArrayLength(matid):
+ """
+ Gets the length of the vertex array associated with the specified material.
+
+ There is one vertex array for each material.
+
+ @type matid: integer
+ @param matid: the specified material
+ @rtype: integer
+ @return: the number of verticies in the vertex array.
+ """
+ def getVertex(matid, index):
+ """
+ Gets the specified vertex from the mesh object.
+
+ @type matid: integer
+ @param matid: the specified material
+ @type index: integer
+ @param index: the index into the vertex array.
+ @rtype: L{KX_VertexProxy}
+ @return: a vertex object.
+ """
+ def getNumPolygons():
+ """
+ Returns the number of polygon in the mesh.
+
+ @rtype: integer
+ """
+ def getPolygon(index):
+ """
+ Gets the specified polygon from the mesh.
+
+ @type index: integer
+ @param index: polygon number
+ @rtype: L{KX_PolyProxy}
+ @return: a polygon object.
+ """
+ def reinstancePhysicsMesh():
+ """
+ Updates the physics system with the changed mesh.
+
+ A mesh must have only one material with collision flags,
+ and have all collision primitives in one vertex array (ie. < 65535 verts) and
+ be either a polytope or polyheder mesh. If you don't get a warning in the
+ console when the collision type is polytope, the mesh is suitable for reinstance.
+ @bug: This currently does not work.
+ @rtype: boolean
+ @return: True if reinstance succeeded, False if it failed.
+ """
+
+class SCA_MouseSensor(SCA_ISensor):
+ """
+ Mouse Sensor logic brick.
+
+ Properties:
+
+ @ivar position: current [x,y] coordinates of the mouse, in frame coordinates (pixels)
+ @type position: [integer,interger]
+ @ivar mode: sensor mode: 1=KX_MOUSESENSORMODE_LEFTBUTTON 2=KX_MOUSESENSORMODE_MIDDLEBUTTON
+ 3=KX_MOUSESENSORMODE_RIGHTBUTTON 4=KX_MOUSESENSORMODE_WHEELUP
+ 5=KX_MOUSESENSORMODE_WHEELDOWN 9=KX_MOUSESENSORMODE_MOVEMENT
+ @type mode: integer
+ """
+
+ def getXPosition():
+ """
+ Gets the x coordinate of the mouse.
+
+ @deprecated: use the L{position} property
+ @rtype: integer
+ @return: the current x coordinate of the mouse, in frame coordinates (pixels)
+ """
+ def getYPosition():
+ """
+ Gets the y coordinate of the mouse.
+
+ @deprecated: use the L{position} property
+ @rtype: integer
+ @return: the current y coordinate of the mouse, in frame coordinates (pixels).
+ """
+ def getButtonStatus(button):
+ """
+ Get the mouse button status.
+
+ @type button: int
+ @param button: value in GameLogic members KX_MOUSE_BUT_LEFT, KX_MOUSE_BUT_MIDDLE, KX_MOUSE_BUT_RIGHT
+
+ @rtype: integer
+ @return: value in GameLogic members KX_INPUT_NONE, KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED
+ """
+
+class KX_MouseFocusSensor(SCA_MouseSensor):
+ """
+ The mouse focus sensor detects when the mouse is over the current game object.
+
+ The mouse focus sensor works by transforming the mouse coordinates from 2d device
+ space to 3d space then raycasting away from the camera.
+
+ @ivar raySource: The worldspace source of the ray (the view position)
+ @type raySource: list (vector of 3 floats)
+ @ivar rayTarget: The worldspace target of the ray.
+ @type rayTarget: list (vector of 3 floats)
+ @ivar rayDirection: The L{rayTarget} - L{raySource} normalized.
+ @type rayDirection: list (normalized vector of 3 floats)
+ @ivar hitObject: the last object the mouse was over.
+ @type hitObject: L{KX_GameObject} or None
+ @ivar hitPosition: The worldspace position of the ray intersecton.
+ @type hitPosition: list (vector of 3 floats)
+ @ivar hitNormal: the worldspace normal from the face at point of intersection.
+ @type hitNormal: list (normalized vector of 3 floats)
+ """
+#{ Deprecated
+ def getHitNormal():
+ """
+ Returns the normal (in worldcoordinates) at the point of collision where the object was hit by this ray.
+
+ @deprecated: use the L{hitNormal} property
+ @rtype: list [x, y, z]
+ @return: the ray collision normal.
+ """
+ def getHitObject():
+ """
+ Returns the object that was hit by this ray or None.
+
+ @deprecated: use the L{hitObject} property
+ @rtype: L{KX_GameObject} or None
+ @return: the collision object.
+ """
+ def getHitPosition():
+ """
+ Returns the position (in worldcoordinates) at the point of collision where the object was hit by this ray.
+
+ @deprecated: use the L{hitPosition} property
+ @rtype: list [x, y, z]
+ @return: the ray collision position.
+ """
+ def getRayDirection():
+ """
+ Returns the normalized direction (in worldcoordinates) of the ray cast by the mouse.
+
+ @deprecated: use the L{rayDirection} property
+ @rtype: list [x, y, z]
+ @return: the ray direction.
+ """
+ def getRaySource():
+ """
+ Returns the position (in worldcoordinates) the ray was cast from by the mouse.
+
+ @deprecated: use the L{raySource} property
+ @rtype: list [x, y, z]
+ @return: the ray source.
+ """
+ def getRayTarget():
+ """
+ Returns the target of the ray (in worldcoordinates) that seeks the focus object.
+
+ @deprecated: use the L{rayTarget} property
+ @rtype: list [x, y, z]
+ @return: the ray target.
+ """
+#}
+
+class KX_TouchSensor(SCA_ISensor):
+ """
+ Touch sensor detects collisions between objects.
+
+ @ivar propName: The property or material to collide with.
+ @type propName: string
+ @ivar useMaterial: Determines if the sensor is looking for a property or material.
+ KX_True = Find material; KX_False = Find property
+ @type useMaterial: boolean
+ @ivar usePulseCollision: The last collided object.
+ @type usePulseCollision: bool
+ @ivar hitObject: The last collided object. (read-only)
+ @type hitObject: L{KX_GameObject} or None
+ @ivar hitObjectList: A list of colliding objects. (read-only)
+ @type hitObjectList: L{CListValue} of L{KX_GameObject}
+ """
+#{ Deprecated
+ def setProperty(name):
+ """
+ Set the property or material to collide with. Use
+ setTouchMaterial() to switch between properties and
+ materials.
+
+ @deprecated: use the L{property} property
+ @type name: string
+ """
+
+ def getProperty():
+ """
+ Returns the property or material to collide with. Use
+ getTouchMaterial() to find out whether this sensor
+ looks for properties or materials.
+
+ @deprecated: use the L{property} property
+ @rtype: string
+ """
+ def getHitObject():
+ """
+ Returns the last object hit by this touch sensor.
+
+ @deprecated: use the L{hitObject} property
+ @rtype: L{KX_GameObject}
+ """
+ def getHitObjectList():
+ """
+ Returns a list of all objects hit in the last frame. (B{deprecated})
+
+ Only objects that have the requisite material/property are listed.
+
+ @deprecated: use the L{hitObjectList} property
+ @rtype: L{CListValue} of L{hitObjectList}
+ """
+ def getTouchMaterial():
+ """
+ Returns KX_TRUE if this sensor looks for a specific material,
+ KX_FALSE if it looks for a specific property. (B{deprecated})
+
+ @deprecated: use the L{useMaterial} property
+ """
+#}
+
+class KX_NearSensor(KX_TouchSensor):
+ """
+ A near sensor is a specialised form of touch sensor.
+
+ @ivar distance: The near sensor activates when an object is within this distance.
+ @type distance: float
+ @ivar resetDistance: The near sensor deactivates when the object exceeds this distance.
+ @type resetDistance: float
+ """
+
+class KX_NetworkMessageActuator(SCA_IActuator):
+ """
+ Message Actuator
+
+ @ivar propName: Messages will only be sent to objects with the given property name.
+ @type propName: string
+ @ivar subject: The subject field of the message.
+ @type subject: string
+ @ivar body: The body of the message.
+ @type body: string
+ @ivar usePropBody: Send a property instead of a regular body message.
+ @type usePropBody: boolean
+ """
+#{Deprecated
+ def setToPropName(name):
+ """
+ Messages will only be sent to objects with the given property name.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @type name: string
+ """
+ def setSubject(subject):
+ """
+ Sets the subject field of the message.
+
+ @deprecated: Use the L{subject} attribute instead.
+ @type subject: string
+ """
+ def setBodyType(bodytype):
+ """
+ Sets the type of body to send.
+
+ @deprecated: Use the L{usePropBody} attribute instead.
+ @type bodytype: boolean
+ @param bodytype: True to send the value of a property, False to send the body text.
+ """
+ def setBody(body):
+ """
+ Sets the message body.
+
+ @deprecated: Use the L{body} attribute instead.
+ @type body: string
+ @param body: if the body type is True, this is the name of the property to send.
+ if the body type is False, this is the text to send.
+ """
+#}
+
+class KX_NetworkMessageSensor(SCA_ISensor):
+ """
+ The Message Sensor logic brick.
+
+ Currently only loopback (local) networks are supported.
+
+ @ivar subject: The subject the sensor is looking for.
+ @type subject: string
+ @ivar frameMessageCount: The number of messages received since the last frame.
+ (Read-only)
+ @type frameMessageCount: int
+ @ivar subjects: The list of message subjects received. (Read-only)
+ @type subjects: list of strings
+ @ivar bodies: The list of message bodies received. (Read-only)
+ @type bodies: list of strings
+ """
+#{ Deprecated
+ def setSubjectFilterText(subject):
+ """
+ Change the message subject text that this sensor is listening to.
+
+ @deprecated: Use the L{subject} attribute instead.
+ @type subject: string
+ @param subject: the new message subject to listen for.
+ """
+
+ def getFrameMessageCount():
+ """
+ Get the number of messages received since the last frame.
+
+ @deprecated: Use the L{frameMessageCount} attribute instead.
+ @rtype: integer
+ """
+ def getBodies():
+ """
+ Gets the list of message bodies.
+
+ @deprecated: Use the L{bodies} attribute instead.
+ @rtype: list
+ """
+ def getSubject():
+ """
+ Gets the message subject this sensor is listening for from the Subject: field.
+
+ @deprecated: Use the L{subject} attribute instead.
+ @rtype: string
+ """
+ def getSubjects():
+ """
+ Gets the list of message subjects received.
+
+ @deprecated: Use the L{subjects} attribute instead.
+ @rtype: list
+ """
+#}
+
+class KX_ObjectActuator(SCA_IActuator):
+ """
+ The object actuator ("Motion Actuator") applies force, torque, displacement, angular displacement,
+ velocity, or angular velocity to an object.
+ Servo control allows to regulate force to achieve a certain speed target.
+
+ @ivar force: The force applied by the actuator
+ @type force: list [x, y, z]
+ @ivar useLocalForce: A flag specifying if the force is local
+ @type useLocalForce: bool
+ @ivar torque: The torque applied by the actuator
+ @type torque: list [x, y, z]
+ @ivar useLocalTorque: A flag specifying if the torque is local
+ @type useLocalTorque: bool
+ @ivar dLoc: The displacement vector applied by the actuator
+ @type dLoc: list [x, y, z]
+ @ivar useLocalDLoc: A flag specifying if the dLoc is local
+ @type useLocalDLoc: bool
+ @ivar dRot: The angular displacement vector applied by the actuator
+ - note: Since the displacement is applied every frame, you must adjust the displacement
+ based on the frame rate, or you game experience will depend on the player's computer
+ speed.
+ @type dRot: list [x, y, z]
+ @ivar useLocalDRot: A flag specifying if the dRot is local
+ @type useLocalDRot: bool
+ @ivar linV: The linear velocity applied by the actuator
+ @type linV: list [x, y, z]
+ @ivar useLocalLinV: A flag specifying if the linear velocity is local
+ - note: This is the target speed for servo controllers
+ @type useLocalLinV: bool
+ @ivar angV: The angular velocity applied by the actuator
+ @type angV: list [x, y, z]
+ @ivar useLocalAngV: A flag specifying if the angular velocity is local
+ @type useLocalAngV: bool
+
+ @ivar damping: The damping parameter of the servo controller
+ @type damping: short
+
+ @ivar forceLimitX: The min/max force limit along the X axis and activates or deactivates the limits in the servo controller
+ @type forceLimitX: list [min(float), max(float), bool]
+ @ivar forceLimitY: The min/max force limit along the Y axis and activates or deactivates the limits in the servo controller
+ @type forceLimitY: list [min(float), max(float), bool]
+ @ivar forceLimitZ: The min/max force limit along the Z axis and activates or deactivates the limits in the servo controller
+ @type forceLimitZ: list [min(float), max(float), bool]
+
+ @ivar pid: The PID coefficients of the servo controller
+ @type pid: list of floats [proportional, integral, derivate]
+ @ivar reference: The object that is used as reference to compute the velocity for the servo controller.
+ @type reference: KX_GameObject or None
+
+ @group Deprecated: getForce, setForce, getTorque, setTorque, getDLoc, setDLoc, getDRot, setDRot, getLinearVelocity, setLinearVelocity, getAngularVelocity,
+ setAngularVelocity, getDamping, setDamping, getForceLimitX, setForceLimitX, getForceLimitY, setForceLimitY, getForceLimitZ, setForceLimitZ,
+ getPID, setPID
+ """
+ def getForce():
+ """
+ Returns the force applied by the actuator.
+
+ @deprecated: Use L{force} and L{useLocalForce} instead.
+ @rtype: list [fx, fy, fz, local]
+ @return: A four item list, containing the vector force, and a flag specifying whether the force is local.
+ """
+ def setForce(fx, fy, fz, local):
+ """
+ Sets the force applied by the actuator.
+
+ @deprecated: Use L{force} and L{useLocalForce} instead.
+ @type fx: float
+ @param fx: the x component of the force.
+ @type fy: float
+ @param fy: the z component of the force.
+ @type fz: float
+ @param fz: the z component of the force.
+ @type local: boolean
+ @param local: - False: the force is applied in world coordinates.
+ - True: the force is applied in local coordinates.
+ """
+ def getTorque():
+ """
+ Returns the torque applied by the actuator.
+
+ @deprecated: Use L{torque} and L{useLocalTorque} instead.
+ @rtype: list [S{Tau}x, S{Tau}y, S{Tau}z, local]
+ @return: A four item list, containing the vector torque, and a flag specifying whether
+ the torque is applied in local coordinates (True) or world coordinates (False)
+ """
+ def setTorque(tx, ty, tz, local):
+ """
+ Sets the torque applied by the actuator.
+
+ @deprecated: Use L{torque} and L{useLocalTorque} instead.
+ @type tx: float
+ @param tx: the x component of the torque.
+ @type ty: float
+ @param ty: the z component of the torque.
+ @type tz: float
+ @param tz: the z component of the torque.
+ @type local: boolean
+ @param local: - False: the torque is applied in world coordinates.
+ - True: the torque is applied in local coordinates.
+ """
+ def getDLoc():
+ """
+ Returns the displacement vector applied by the actuator.
+
+ @deprecated: Use L{dLoc} and L{useLocalDLoc} instead.
+ @rtype: list [dx, dy, dz, local]
+ @return: A four item list, containing the vector displacement, and whether
+ the displacement is applied in local coordinates (True) or world
+ coordinates (False)
+ """
+ def setDLoc(dx, dy, dz, local):
+ """
+ Sets the displacement vector applied by the actuator.
+
+ Since the displacement is applied every frame, you must adjust the displacement
+ based on the frame rate, or you game experience will depend on the player's computer
+ speed.
+
+ @deprecated: Use L{dLoc} and L{useLocalDLoc} instead.
+ @type dx: float
+ @param dx: the x component of the displacement vector.
+ @type dy: float
+ @param dy: the z component of the displacement vector.
+ @type dz: float
+ @param dz: the z component of the displacement vector.
+ @type local: boolean
+ @param local: - False: the displacement vector is applied in world coordinates.
+ - True: the displacement vector is applied in local coordinates.
+ """
+ def getDRot():
+ """
+ Returns the angular displacement vector applied by the actuator.
+
+ @deprecated: Use L{dRot} and L{useLocalDRot} instead.
+ @rtype: list [dx, dy, dz, local]
+ @return: A four item list, containing the angular displacement vector, and whether
+ the displacement is applied in local coordinates (True) or world coordinates (False)
+ """
+ def setDRot(dx, dy, dz, local):
+ """
+ Sets the angular displacement vector applied by the actuator.
+
+ Since the displacement is applied every frame, you must adjust the displacement
+ based on the frame rate, or you game experience will depend on the player's computer
+ speed.
+
+ @deprecated: Use L{dRot} and L{useLocalDRot} instead.
+ @type dx: float
+ @param dx: the x component of the angular displacement vector.
+ @type dy: float
+ @param dy: the z component of the angular displacement vector.
+ @type dz: float
+ @param dz: the z component of the angular displacement vector.
+ @type local: boolean
+ @param local: - False: the angular displacement vector is applied in world coordinates.
+ - True: the angular displacement vector is applied in local coordinates.
+ """
+ def getLinearVelocity():
+ """
+ Returns the linear velocity applied by the actuator.
+ For the servo control actuator, this is the target speed.
+
+ @deprecated: Use L{linV} and L{useLocalLinV} instead.
+ @rtype: list [vx, vy, vz, local]
+ @return: A four item list, containing the vector velocity, and whether the velocity is applied in local coordinates (True) or world coordinates (False)
+ """
+ def setLinearVelocity(vx, vy, vz, local):
+ """
+ Sets the linear velocity applied by the actuator.
+ For the servo control actuator, sets the target speed.
+
+ @deprecated: Use L{linV} and L{useLocalLinV} instead.
+ @type vx: float
+ @param vx: the x component of the velocity vector.
+ @type vy: float
+ @param vy: the z component of the velocity vector.
+ @type vz: float
+ @param vz: the z component of the velocity vector.
+ @type local: boolean
+ @param local: - False: the velocity vector is in world coordinates.
+ - True: the velocity vector is in local coordinates.
+ """
+ def getAngularVelocity():
+ """
+ Returns the angular velocity applied by the actuator.
+
+ @deprecated: Use L{angV} and L{useLocalAngV} instead.
+ @rtype: list [S{omega}x, S{omega}y, S{omega}z, local]
+ @return: A four item list, containing the vector velocity, and whether
+ the velocity is applied in local coordinates (True) or world
+ coordinates (False)
+ """
+ def setAngularVelocity(wx, wy, wz, local):
+ """
+ Sets the angular velocity applied by the actuator.
+
+ @deprecated: Use L{angV} and L{useLocalAngV} instead.
+ @type wx: float
+ @param wx: the x component of the velocity vector.
+ @type wy: float
+ @param wy: the z component of the velocity vector.
+ @type wz: float
+ @param wz: the z component of the velocity vector.
+ @type local: boolean
+ @param local: - False: the velocity vector is applied in world coordinates.
+ - True: the velocity vector is applied in local coordinates.
+ """
+ def getDamping():
+ """
+ Returns the damping parameter of the servo controller.
+
+ @deprecated: Use L{damping} instead.
+ @rtype: integer
+ @return: the time constant of the servo controller in frame unit.
+ """
+ def setDamping(damp):
+ """
+ Sets the damping parameter of the servo controller.
+
+ @deprecated: Use L{damping} instead.
+ @type damp: integer
+ @param damp: the damping parameter in frame unit.
+ """
+ def getForceLimitX():
+ """
+ Returns the min/max force limit along the X axis used by the servo controller.
+
+ @deprecated: Use L{forceLimitX} instead.
+ @rtype: list [min, max, enabled]
+ @return: A three item list, containing the min and max limits of the force as float
+ and whether the limits are active(true) or inactive(true)
+ """
+ def setForceLimitX(min, max, enable):
+ """
+ Sets the min/max force limit along the X axis and activates or deactivates the limits in the servo controller.
+
+ @deprecated: Use L{forceLimitX} instead.
+ @type min: float
+ @param min: the minimum value of the force along the X axis.
+ @type max: float
+ @param max: the maximum value of the force along the X axis.
+ @type enable: boolean
+ @param enable: - True: the force will be limited to the min/max
+ - False: the force will not be limited
+ """
+ def getForceLimitY():
+ """
+ Returns the min/max force limit along the Y axis used by the servo controller.
+
+ @deprecated: Use L{forceLimitY} instead.
+ @rtype: list [min, max, enabled]
+ @return: A three item list, containing the min and max limits of the force as float
+ and whether the limits are active(true) or inactive(true)
+ """
+ def setForceLimitY(min, max, enable):
+ """
+ Sets the min/max force limit along the Y axis and activates or deactivates the limits in the servo controller.
+
+ @deprecated: Use L{forceLimitY} instead.
+ @type min: float
+ @param min: the minimum value of the force along the Y axis.
+ @type max: float
+ @param max: the maximum value of the force along the Y axis.
+ @type enable: boolean
+ @param enable: - True: the force will be limited to the min/max
+ - False: the force will not be limited
+ """
+ def getForceLimitZ():
+ """
+ Returns the min/max force limit along the Z axis used by the servo controller.
+
+ @deprecated: Use L{forceLimitZ} instead.
+ @rtype: list [min, max, enabled]
+ @return: A three item list, containing the min and max limits of the force as float
+ and whether the limits are active(true) or inactive(true)
+ """
+ def setForceLimitZ(min, max, enable):
+ """
+ Sets the min/max force limit along the Z axis and activates or deactivates the limits in the servo controller.
+
+ @deprecated: Use L{forceLimitZ} instead.
+ @type min: float
+ @param min: the minimum value of the force along the Z axis.
+ @type max: float
+ @param max: the maximum value of the force along the Z axis.
+ @type enable: boolean
+ @param enable: - True: the force will be limited to the min/max
+ - False: the force will not be limited
+ """
+ def getPID():
+ """
+ Returns the PID coefficient of the servo controller.
+
+ @deprecated: Use L{pid} instead.
+ @rtype: list [P, I, D]
+ @return: A three item list, containing the PID coefficient as floats:
+ P : proportional coefficient
+ I : Integral coefficient
+ D : Derivate coefficient
+ """
+ def setPID(P, I, D):
+ """
+ Sets the PID coefficients of the servo controller.
+
+ @deprecated: Use L{pid} instead.
+ @type P: flat
+ @param P: proportional coefficient
+ @type I: float
+ @param I: Integral coefficient
+ @type D: float
+ @param D: Derivate coefficient
+ """
+
+class KX_ParentActuator(SCA_IActuator):
+ """
+ The parent actuator can set or remove an objects parent object.
+ @ivar object: the object this actuator sets the parent too.
+ @type object: KX_GameObject or None
+ @ivar mode: The mode of this actuator
+ @type mode: int from 0 to 1 L{GameLogic.Parent Actuator}
+ @ivar compound: Whether the object shape should be added to the parent compound shape when parenting
+ Effective only if the parent is already a compound shape
+ @type compound: bool
+ @ivar ghost: whether the object should be made ghost when parenting
+ Effective only if the shape is not added to the parent compound shape
+ @type ghost: bool
+
+ """
+ def setObject(object):
+ """
+ Sets the object to set as parent.
+
+ Object can be either a L{KX_GameObject} or the name of the object.
+
+ @deprecated: Use the L{object} property.
+ @type object: L{KX_GameObject}, string or None
+ """
+ def getObject(name_only = 1):
+ """
+ Returns the name of the object to change to.
+
+ @deprecated: Use the L{object} property.
+ @type name_only: bool
+ @param name_only: optional argument, when 0 return a KX_GameObject
+ @rtype: string, KX_GameObject or None if no object is set
+ """
+
+class KX_PhysicsObjectWrapper(PyObjectPlus):
+ """
+ KX_PhysicsObjectWrapper
+
+ """
+ def setActive(active):
+ """
+ Set the object to be active.
+
+ @param active: set to True to be active
+ @type active: bool
+ """
+
+ def setAngularVelocity(x, y, z, local):
+ """
+ Set the angular velocity of the object.
+
+ @param x: angular velocity for the x-axis
+ @type x: float
+
+ @param y: angular velocity for the y-axis
+ @type y: float
+
+ @param z: angular velocity for the z-axis
+ @type z: float
+
+ @param local: set to True for local axis
+ @type local: bool
+ """
+ def setLinearVelocity(x, y, z, local):
+ """
+ Set the linear velocity of the object.
+
+ @param x: linear velocity for the x-axis
+ @type x: float
+
+ @param y: linear velocity for the y-axis
+ @type y: float
+
+ @param z: linear velocity for the z-axis
+ @type z: float
+
+ @param local: set to True for local axis
+ @type local: bool
+ """
+ def setPosition(x, y, z):
+ """
+ Set the position of the object
+
+ @param x: x coordinate
+ @type x: float
+
+ @param y: y coordinate
+ @type y: float
+
+ @param z: z coordinate
+ @type z: float
+ """
+
+class KX_PolyProxy(SCA_IObject):
+ """
+ A polygon holds the index of the vertex forming the poylgon.
+
+ Note:
+ The polygon attributes are read-only, you need to retrieve the vertex proxy if you want
+ to change the vertex settings.
+
+ @ivar matname: The name of polygon material, empty if no material.
+ @type matname: string
+ @ivar material: The material of the polygon
+ @type material: L{KX_PolygonMaterial} or L{KX_BlenderMaterial}
+ @ivar texture: The texture name of the polygon.
+ @type texture: string
+ @ivar matid: The material index of the polygon, use this to retrieve vertex proxy from mesh proxy
+ @type matid: integer
+ @ivar v1: vertex index of the first vertex of the polygon, use this to retrieve vertex proxy from mesh proxy
+ @type v1: integer
+ @ivar v2: vertex index of the second vertex of the polygon, use this to retrieve vertex proxy from mesh proxy
+ @type v2: integer
+ @ivar v3: vertex index of the third vertex of the polygon, use this to retrieve vertex proxy from mesh proxy
+ @type v3: integer
+ @ivar v4: vertex index of the fourth vertex of the polygon, 0 if polygon has only 3 vertex
+ use this to retrieve vertex proxy from mesh proxy
+ @type v4: integer
+ @ivar visible: visible state of the polygon: 1=visible, 0=invisible
+ @type visible: integer
+ @ivar collide: collide state of the polygon: 1=receives collision, 0=collision free.
+ @type collide: integer
+ """
+
+ def getMaterialName():
+ """
+ Returns the polygon material name with MA prefix
+
+ @rtype: string
+ @return: material name
+ """
+ def getMaterial():
+ """
+ Returns the polygon material
+
+ @rtype: L{KX_PolygonMaterial} or L{KX_BlenderMaterial}
+ """
+ def getTextureName():
+ """
+ Returns the polygon texture name
+
+ @rtype: string
+ @return: texture name
+ """
+ def getMaterialIndex():
+ """
+ Returns the material bucket index of the polygon.
+ This index and the ones returned by getVertexIndex() are needed to retrieve the vertex proxy from L{KX_MeshProxy}.
+
+ @rtype: integer
+ @return: the material index in the mesh
+ """
+ def getNumVertex():
+ """
+ Returns the number of vertex of the polygon.
+
+ @rtype: integer
+ @return: number of vertex, 3 or 4.
+ """
+ def isVisible():
+ """
+ Returns whether the polygon is visible or not
+
+ @rtype: integer
+ @return: 0=invisible, 1=visible
+ """
+ def isCollider():
+ """
+ Returns whether the polygon is receives collision or not
+
+ @rtype: integer
+ @return: 0=collision free, 1=receives collision
+ """
+ def getVertexIndex(vertex):
+ """
+ Returns the mesh vertex index of a polygon vertex
+ This index and the one returned by getMaterialIndex() are needed to retrieve the vertex proxy from L{KX_MeshProxy}.
+
+ @type vertex: integer
+ @param vertex: index of the vertex in the polygon: 0->3
+ @rtype: integer
+ @return: mesh vertex index
+ """
+ def getMesh():
+ """
+ Returns a mesh proxy
+
+ @rtype: L{KX_MeshProxy}
+ @return: mesh proxy
+ """
+
+class KX_PolygonMaterial:
+ """
+ This is the interface to materials in the game engine.
+
+ Materials define the render state to be applied to mesh objects.
+
+ Warning: Some of the methods/variables are CObjects. If you mix these up,
+ you will crash blender.
+
+ This example requires:
+ - PyOpenGL http://pyopengl.sourceforge.net/
+ - GLEWPy http://glewpy.sourceforge.net/
+ Example::
+
+ import GameLogic
+ import OpenGL
+ from OpenGL.GL import *
+ from OpenGL.GLU import *
+ import glew
+ from glew import *
+
+ glewInit()
+
+ vertex_shader = \"\"\"
+
+ void main(void)
+ {
+ gl_Position = ftransform();
+ }
+ \"\"\"
+
+ fragment_shader =\"\"\"
+
+ void main(void)
+ {
+ gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
+ }
+ \"\"\"
+
+ class MyMaterial:
+ def __init__(self):
+ self.pass_no = 0
+ # Create a shader
+ self.m_program = glCreateProgramObjectARB()
+ # Compile the vertex shader
+ self.shader(GL_VERTEX_SHADER_ARB, (vertex_shader))
+ # Compile the fragment shader
+ self.shader(GL_FRAGMENT_SHADER_ARB, (fragment_shader))
+ # Link the shaders together
+ self.link()
+
+ def PrintInfoLog(self, tag, object):
+ \"\"\"
+ PrintInfoLog prints the GLSL compiler log
+ \"\"\"
+ print "Tag: def PrintGLError(self, tag = ""):
+
+ def PrintGLError(self, tag = ""):
+ \"\"\"
+ Prints the current GL error status
+ \"\"\"
+ if len(tag):
+ print tag
+ err = glGetError()
+ if err != GL_NO_ERROR:
+ print "GL Error: %s\\n"%(gluErrorString(err))
+
+ def shader(self, type, shaders):
+ \"\"\"
+ shader compiles a GLSL shader and attaches it to the current
+ program.
+
+ type should be either GL_VERTEX_SHADER_ARB or GL_FRAGMENT_SHADER_ARB
+ shaders should be a sequence of shader source to compile.
+ \"\"\"
+ # Create a shader object
+ shader_object = glCreateShaderObjectARB(type)
+
+ # Add the source code
+ glShaderSourceARB(shader_object, len(shaders), shaders)
+
+ # Compile the shader
+ glCompileShaderARB(shader_object)
+
+ # Print the compiler log
+ self.PrintInfoLog("vertex shader", shader_object)
+
+ # Check if compiled, and attach if it did
+ compiled = glGetObjectParameterivARB(shader_object, GL_OBJECT_COMPILE_STATUS_ARB)
+ if compiled:
+ glAttachObjectARB(self.m_program, shader_object)
+
+ # Delete the object (glAttachObjectARB makes a copy)
+ glDeleteObjectARB(shader_object)
+
+ # print the gl error log
+ self.PrintGLError()
+
+ def link(self):
+ \"\"\"
+ Links the shaders together.
+ \"\"\"
+ # clear error indicator
+ glGetError()
+
+ glLinkProgramARB(self.m_program)
+
+ self.PrintInfoLog("link", self.m_program)
+
+ linked = glGetObjectParameterivARB(self.m_program, GL_OBJECT_LINK_STATUS_ARB)
+ if not linked:
+ print "Shader failed to link"
+ return
+
+ glValidateProgramARB(self.m_program)
+ valid = glGetObjectParameterivARB(self.m_program, GL_OBJECT_VALIDATE_STATUS_ARB)
+ if not valid:
+ print "Shader failed to validate"
+ return
+
+ def activate(self, rasty, cachingInfo, mat):
+ self.pass_no+=1
+ if (self.pass_no == 1):
+ glDisable(GL_COLOR_MATERIAL)
+ glUseProgramObjectARB(self.m_program)
+ return True
+
+ glEnable(GL_COLOR_MATERIAL)
+ glUseProgramObjectARB(0)
+ self.pass_no = 0
+ return False
+
+ obj = GameLogic.getCurrentController().owner
+
+ mesh = obj.meshes[0]
+
+ for mat in mesh.materials:
+ mat.setCustomMaterial(MyMaterial())
+ print mat.texture
+
+ @ivar texture: Texture name
+ @type texture: string (read-only)
+
+ @ivar gl_texture: OpenGL texture handle (eg for glBindTexture(GL_TEXTURE_2D, gl_texture)
+ @type gl_texture: integer (read-only)
+
+ @ivar material: Material name
+ @type material: string (read-only)
+
+ @ivar tface: Texture face properties
+ @type tface: CObject (read-only)
+
+ @ivar tile: Texture is tiling
+ @type tile: boolean
+ @ivar tilexrep: Number of tile repetitions in x direction.
+ @type tilexrep: integer
+ @ivar tileyrep: Number of tile repetitions in y direction.
+ @type tileyrep: integer
+
+ @ivar drawingmode: Drawing mode for the material.
+ - 2 (drawingmode & 4) Textured
+ - 4 (drawingmode & 16) Light
+ - 14 (drawingmode & 16384) 3d Polygon Text
+ @type drawingmode: bitfield
+
+ @ivar transparent: This material is transparent. All meshes with this
+ material will be rendered after non transparent meshes from back
+ to front.
+ @type transparent: boolean
+
+ @ivar zsort: Transparent polygons in meshes with this material will be sorted back to
+ front before rendering.
+ Non-Transparent polygons will be sorted front to back before rendering.
+ @type zsort: boolean
+
+ @ivar lightlayer: Light layers this material affects.
+ @type lightlayer: bitfield.
+
+ @ivar triangle: Mesh data with this material is triangles. It's probably not safe to change this.
+ @type triangle: boolean
+
+ @ivar diffuse: The diffuse colour of the material. black = [0.0, 0.0, 0.0] white = [1.0, 1.0, 1.0]
+ @type diffuse: list [r, g, b]
+ @ivar specular: The specular colour of the material. black = [0.0, 0.0, 0.0] white = [1.0, 1.0, 1.0]
+ @type specular: list [r, g, b]
+ @ivar shininess: The shininess (specular exponent) of the material. 0.0 <= shininess <= 128.0
+ @type shininess: float
+ @ivar specularity: The amount of specular of the material. 0.0 <= specularity <= 1.0
+ @type specularity: float
+ """
+ def updateTexture(tface, rasty):
+ """
+ Updates a realtime animation.
+
+ @param tface: Texture face (eg mat.tface)
+ @type tface: CObject
+ @param rasty: Rasterizer
+ @type rasty: CObject
+ """
+ def setTexture(tface):
+ """
+ Sets texture render state.
+
+ Example::
+ mat.setTexture(mat.tface)
+
+ @param tface: Texture face
+ @type tface: CObject
+ """
+ def activate(rasty, cachingInfo):
+ """
+ Sets material parameters for this object for rendering.
+
+ Material Parameters set:
+ 1. Texture
+ 2. Backface culling
+ 3. Line drawing
+ 4. Specular Colour
+ 5. Shininess
+ 6. Diffuse Colour
+ 7. Polygon Offset.
+
+ @param rasty: Rasterizer instance.
+ @type rasty: CObject
+ @param cachingInfo: Material cache instance.
+ @type cachingInfo: CObject
+ """
+ def setCustomMaterial(material):
+ """
+ Sets the material state setup object.
+
+ Using this method, you can extend or completely replace the gameengine material
+ to do your own advanced multipass effects.
+
+ Use this method to register your material class. Instead of the normal material,
+ your class's activate method will be called just before rendering the mesh.
+ This should setup the texture, material, and any other state you would like.
+ It should return True to render the mesh, or False if you are finished. You should
+ clean up any state Blender does not set before returning False.
+
+ Activate Method Definition::
+ def activate(self, rasty, cachingInfo, material):
+
+ Example::
+ class PyMaterial:
+ def __init__(self):
+ self.pass_no = -1
+
+ def activate(self, rasty, cachingInfo, material):
+ # Activate the material here.
+ #
+ # The activate method will be called until it returns False.
+ # Every time the activate method returns True the mesh will
+ # be rendered.
+ #
+ # rasty is a CObject for passing to material.updateTexture()
+ # and material.activate()
+ # cachingInfo is a CObject for passing to material.activate()
+ # material is the KX_PolygonMaterial instance this material
+ # was added to
+
+ # default material properties:
+ self.pass_no += 1
+ if self.pass_no == 0:
+ material.activate(rasty, cachingInfo)
+ # Return True to do this pass
+ return True
+
+ # clean up and return False to finish.
+ self.pass_no = -1
+ return False
+
+ # Create a new Python Material and pass it to the renderer.
+ mat.setCustomMaterial(PyMaterial())
+
+ @param material: The material object.
+ @type material: instance
+ """
+
+class KX_RadarSensor(KX_NearSensor):
+ """
+ Radar sensor is a near sensor with a conical sensor object.
+
+ @ivar coneOrigin: The origin of the cone with which to test. The origin
+ is in the middle of the cone.
+ (read-only)
+ @type coneOrigin: list of floats [x, y, z]
+ @ivar coneTarget: The center of the bottom face of the cone with which to test.
+ (read-only)
+ @type coneTarget: list of floats [x, y, z]
+ @ivar distance: The height of the cone with which to test.
+ @type distance: float
+ @ivar angle: The angle of the cone (in degrees) with which to test.
+ @type angle: float from 0 to 360
+ @ivar axis: The axis on which the radar cone is cast
+ @type axis: int from 0 to 5
+ KX_RADAR_AXIS_POS_X, KX_RADAR_AXIS_POS_Y, KX_RADAR_AXIS_POS_Z,
+ KX_RADAR_AXIS_NEG_X, KX_RADAR_AXIS_NEG_Y, KX_RADAR_AXIS_NEG_Z
+ """
+#{Deprecated
+ #--The following methods are deprecated, please use properties instead.
+ def getConeOrigin():
+ """
+ Returns the origin of the cone with which to test. The origin
+ is in the middle of the cone.
+
+ @deprecated: Use the L{coneOrigin} property.
+ @rtype: list [x, y, z]
+ """
+
+ def getConeTarget():
+ """
+ Returns the center of the bottom face of the cone with which to test.
+
+ @deprecated: Use the L{coneTarget} property.
+ @rtype: list [x, y, z]
+ """
+#}
+
+ def getConeHeight():
+ """
+ Returns the height of the cone with which to test.
+
+ @rtype: float
+ """
+
+class KX_RaySensor(SCA_ISensor):
+ """
+ A ray sensor detects the first object in a given direction.
+
+ @ivar propName: The property the ray is looking for.
+ @type propName: string
+ @ivar range: The distance of the ray.
+ @type range: float
+ @ivar useMaterial: Whether or not to look for a material (false = property)
+ @type useMaterial: boolean
+ @ivar useXRay: Whether or not to use XRay.
+ @type useXRay: boolean
+ @ivar hitObject: The game object that was hit by the ray. (Read-only)
+ @type hitObject: KX_GameObject
+ @ivar hitPosition: The position (in worldcoordinates) where the object was hit by the ray. (Read-only)
+ @type hitPosition: list [x, y, z]
+ @ivar hitNormal: The normal (in worldcoordinates) of the object at the location where the object was hit by the ray. (Read-only)
+ @type hitNormal: list [x, y, z]
+ @ivar rayDirection: The direction from the ray (in worldcoordinates). (Read-only)
+ @type rayDirection: list [x, y, z]
+ @ivar axis: The axis the ray is pointing on.
+ @type axis: int from 0 to 5
+ KX_RAY_AXIS_POS_X, KX_RAY_AXIS_POS_Y, KX_RAY_AXIS_POS_Z,
+ KX_RAY_AXIS_NEG_X, KX_RAY_AXIS_NEG_Y, KX_RAY_AXIS_NEG_Z
+ """
+#{ Deprecated
+ def getHitObject():
+ """
+ Returns the game object that was hit by this ray.
+
+ @deprecated: Use the L{hitObject} attribute instead.
+ @rtype: KX_GameObject
+ """
+ def getHitPosition():
+ """
+ Returns the position (in worldcoordinates) where the object was hit by this ray.
+
+ @deprecated: Use the L{hitPosition} attribute instead.
+ @rtype: list [x, y, z]
+ """
+ def getHitNormal():
+ """
+ Returns the normal (in worldcoordinates) of the object at the location where the object was hit by this ray.
+
+ @deprecated: Use the L{hitNormal} attribute instead.
+ @rtype: list [nx, ny, nz]
+ """
+ def getRayDirection():
+ """
+ Returns the direction from the ray (in worldcoordinates)
+
+ @deprecated: Use the L{rayDirection} attribute instead.
+ @rtype: list [dx, dy, dz]
+ """
+#}
+
+class KX_SCA_AddObjectActuator(SCA_IActuator):
+ """
+ Edit Object Actuator (in Add Object Mode)
+ @ivar object: the object this actuator adds.
+ @type object: KX_GameObject or None
+ @ivar objectLastCreated: the last added object from this actuator (read-only).
+ @type objectLastCreated: KX_GameObject or None
+ @ivar time: the lifetime of added objects, in frames. Set to 0 to disable automatic deletion.
+ @type time: integer
+ @ivar linearVelocity: the initial linear velocity of added objects.
+ @type linearVelocity: list [vx, vy, vz]
+ @ivar angularVelocity: the initial angular velocity of added objects.
+ @type angularVelocity: list [vx, vy, vz]
+
+ @warning: An Add Object actuator will be ignored if at game start, the linked object doesn't exist
+ (or is empty) or the linked object is in an active layer.
+
+ This will genereate a warning in the console:
+
+ C{ERROR: GameObject I{OBName} has a AddObjectActuator I{ActuatorName} without object (in 'nonactive' layer)}
+ """
+#{Deprecated
+ def setObject(object):
+ """
+ Sets the game object to add.
+
+ A copy of the object will be added to the scene when the actuator is activated.
+
+ If the object does not exist, this function is ignored.
+
+ object can either be a L{KX_GameObject} or the name of an object or None.
+
+ @deprecated: use the L{object} property
+ @type object: L{KX_GameObject}, string or None
+ """
+ def getObject(name_only = 0):
+ """
+ Returns the name of the game object to be added.
+
+ Returns None if no game object has been assigned to be added.
+
+ @deprecated: use the L{object} property
+ @type name_only: bool
+ @param name_only: optional argument, when 0 return a KX_GameObject
+ @rtype: string, KX_GameObject or None if no object is set
+ """
+ def setTime(time):
+ """
+ Sets the lifetime of added objects, in frames.
+
+ If time == 0, the object will last forever.
+
+ @deprecated: use the L{time} property
+ @type time: integer
+ @param time: The minimum value for time is 0.
+ """
+ def getTime():
+ """
+ Returns the lifetime of the added object, in frames.
+
+ @deprecated: use the L{time} property
+ @rtype: integer
+ """
+ def setLinearVelocity(vx, vy, vz):
+ """
+ Sets the initial linear velocity of added objects.
+
+ @deprecated: use the L{linearVelocity} property
+ @type vx: float
+ @param vx: the x component of the initial linear velocity.
+ @type vy: float
+ @param vy: the y component of the initial linear velocity.
+ @type vz: float
+ @param vz: the z component of the initial linear velocity.
+ """
+ def getLinearVelocity():
+ """
+ Returns the initial linear velocity of added objects.
+
+ @deprecated: use the L{linearVelocity} property
+ @rtype: list [vx, vy, vz]
+ """
+ def setAngularVelocity(vx, vy, vz):
+ """
+ Sets the initial angular velocity of added objects.
+
+ @deprecated: use the L{angularVelocity} property
+ @type vx: float
+ @param vx: the x component of the initial angular velocity.
+ @type vy: float
+ @param vy: the y component of the initial angular velocity.
+ @type vz: float
+ @param vz: the z component of the initial angular velocity.
+ """
+ def getAngularVelocity():
+ """
+ Returns the initial angular velocity of added objects.
+
+ @deprecated: use the L{angularVelocity} property
+ @rtype: list [vx, vy, vz]
+ """
+ def getLastCreatedObject():
+ """
+ Returns the last object created by this actuator.
+
+ @deprecated: use the L{objectLastCreated} property
+ @rtype: L{KX_GameObject}
+ @return: A L{KX_GameObject} or None if no object has been created.
+ """
+#}
+ def instantAddObject():
+ """
+ Returns the last object created by this actuator. The object can then be accessed from L{objectLastCreated}.
+
+ @rtype: None
+ """
+
+class KX_SCA_DynamicActuator(SCA_IActuator):
+ """
+ Dynamic Actuator.
+ @ivar mode: the type of operation of the actuator, 0-4
+ KX_DYN_RESTORE_DYNAMICS, KX_DYN_DISABLE_DYNAMICS,
+ KX_DYN_ENABLE_RIGID_BODY, KX_DYN_DISABLE_RIGID_BODY, KX_DYN_SET_MASS
+ @type mode: integer
+ @ivar mass: the mass value for the KX_DYN_SET_MASS operation
+ @type mass: float
+ """
+#{ Deprecated
+ def setOperation(operation):
+ """
+ Set the type of operation when the actuator is activated:
+ - 0 = restore dynamics
+ - 1 = disable dynamics
+ - 2 = enable rigid body
+ - 3 = disable rigid body
+ - 4 = set mass
+
+ @deprecated: Use the L{mode} attribute instead.
+ """
+ def getOperation():
+ """
+ return the type of operation
+ @deprecated: Use the L{mode} attribute instead.
+ """
+#}
+
+class KX_SCA_EndObjectActuator(SCA_IActuator):
+ """
+ Edit Object Actuator (in End Object mode)
+
+ This actuator has no python methods.
+ """
+
+class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
+ """
+ Edit Object actuator, in Replace Mesh mode.
+
+ Example::
+ # Level-of-detail
+ # Switch a game object's mesh based on its depth in the camera view.
+ # +----------+ +-----------+ +-------------------------------------+
+ # | Always +-----+ Python +-----+ Edit Object (Replace Mesh) LOD.Mesh |
+ # +----------+ +-----------+ +-------------------------------------+
+ import GameLogic
+
+ # List detail meshes here
+ # Mesh (name, near, far)
+ # Meshes overlap so that they don't 'pop' when on the edge of the distance.
+ meshes = ((".Hi", 0.0, -20.0),
+ (".Med", -15.0, -50.0),
+ (".Lo", -40.0, -100.0)
+ )
+
+ co = GameLogic.getCurrentController()
+ obj = co.owner
+ act = co.actuators["LOD." + obj.name]
+ cam = GameLogic.getCurrentScene().active_camera
+
+ def Depth(pos, plane):
+ return pos[0]*plane[0] + pos[1]*plane[1] + pos[2]*plane[2] + plane[3]
+
+ # Depth is negative and decreasing further from the camera
+ depth = Depth(obj.position, cam.world_to_camera[2])
+
+ newmesh = None
+ curmesh = None
+ # Find the lowest detail mesh for depth
+ for mesh in meshes:
+ if depth < mesh[1] and depth > mesh[2]:
+ newmesh = mesh
+ if "ME" + obj.name + mesh[0] == act.getMesh():
+ curmesh = mesh
+
+ if newmesh != None and "ME" + obj.name + newmesh[0] != act.getMesh():
+ # The mesh is a different mesh - switch it.
+ # Check the current mesh is not a better fit.
+ if curmesh == None or curmesh[1] < depth or curmesh[2] > depth:
+ act.mesh = obj.getName() + newmesh[0]
+ GameLogic.addActiveActuator(act, True)
+
+ @warning: Replace mesh actuators will be ignored if at game start, the
+ named mesh doesn't exist.
+
+ This will generate a warning in the console:
+
+ C{ERROR: GameObject I{OBName} ReplaceMeshActuator I{ActuatorName} without object}
+
+ @ivar mesh: L{KX_MeshProxy} or the name of the mesh that will replace the current one
+ Set to None to disable actuator
+ @type mesh: L{KX_MeshProxy} or None if no mesh is set
+ """
+ def setMesh(name):
+ """
+ Sets the name of the mesh that will replace the current one.
+ When the name is None it will unset the mesh value so no action is taken.
+
+ @deprecated: Use the L{mesh} attribute instead.
+ @type name: string or None
+ """
+ def getMesh():
+ """
+ Returns the name of the mesh that will replace the current one.
+
+ Returns None if no mesh has been scheduled to be added.
+
+ @deprecated: Use the L{mesh} attribute instead.
+ @rtype: string or None
+ """
+ def instantReplaceMesh():
+ """
+ Immediately replace mesh without delay.
+ @rtype: None
+ """
+
+class KX_Scene(PyObjectPlus):
+ """
+ An active scene that gives access to objects, cameras, lights and scene attributes.
+
+ The activity culling stuff is supposed to disable logic bricks when their owner gets too far
+ from the active camera. It was taken from some code lurking at the back of KX_Scene - who knows
+ what it does!
+
+ Example::
+ import GameLogic
+
+ # get the scene
+ scene = GameLogic.getCurrentScene()
+
+ # print all the objects in the scene
+ for obj in scene.objects:
+ print obj.name
+
+ # get an object named 'Cube'
+ obj = scene.objects["OBCube"]
+
+ # get the first object in the scene.
+ obj = scene.objects[0]
+
+ Example::
+ # Get the depth of an object in the camera view.
+ import GameLogic
+
+ obj = GameLogic.getCurrentController().owner
+ cam = GameLogic.getCurrentScene().active_camera
+
+ # Depth is negative and decreasing further from the camera
+ depth = obj.position[0]*cam.world_to_camera[2][0] + obj.position[1]*cam.world_to_camera[2][1] + obj.position[2]*cam.world_to_camera[2][2] + cam.world_to_camera[2][3]
+
+ @bug: All attributes are read only at the moment.
+
+ @ivar name: The scene's name, (read-only).
+ @type name: string
+ @ivar objects: A list of objects in the scene, (read-only).
+ @type objects: L{CListValue} of L{KX_GameObject}
+ @ivar objectsInactive: A list of objects on background layers (used for the addObject actuator), (read-only).
+ @type objectsInactive: L{CListValue} of L{KX_GameObject}
+ @ivar lights: A list of lights in the scene, (read-only).
+ @type lights: L{CListValue} of L{KX_LightObject}
+ @ivar cameras: A list of cameras in the scene, (read-only).
+ @type cameras: L{CListValue} of L{KX_Camera}
+ @ivar active_camera: The current active camera.
+ note: this can be set directly from python to avoid using the L{KX_SceneActuator}.
+ @type active_camera: L{KX_Camera}
+ @ivar suspended: True if the scene is suspended, (read-only).
+ @type suspended: boolean
+ @ivar activity_culling: True if the scene is activity culling
+ @type activity_culling: boolean
+ @ivar activity_culling_radius: The distance outside which to do activity culling. Measured in manhattan distance.
+ @type activity_culling_radius: float
+ @ivar dbvt_culling: True when Dynamic Bounding box Volume Tree is set (read-only).
+ @type dbvt_culling: bool
+ @group Deprecated: getLightList, getObjectList, getName
+ """
+
+ def getLightList():
+ """
+ Returns the list of lights in the scene.
+
+ @deprecated: Use the L{lights} attribute instead.
+ @rtype: list [L{KX_LightObject}]
+ """
+ def getObjectList():
+ """
+ Returns the list of objects in the scene.
+
+ @deprecated: Use the L{objects} attribute instead.
+ @rtype: list [L{KX_GameObject}]
+ """
+ def getName():
+ """
+ Returns the name of the scene.
+
+ @deprecated: Use the L{name} attribute instead.
+ @rtype: string
+ """
+
+ def addObject(object, other, time=0):
+ """
+ Adds an object to the scene like the Add Object Actuator would, and returns the created object.
+
+ @param object: The object to add
+ @type object: L{KX_GameObject} or string
+ @param other: The object's center to use when adding the object
+ @type other: L{KX_GameObject} or string
+ @param time: The lifetime of the added object, in frames. A time of 0 means the object will last forever.
+ @type time: int
+
+ @rtype: L{KX_GameObject}
+ """
+
+class KX_SceneActuator(SCA_IActuator):
+ """
+ Scene Actuator logic brick.
+
+ @warning: Scene actuators that use a scene name will be ignored if at game start, the
+ named scene doesn't exist or is empty
+
+ This will generate a warning in the console:
+
+ C{ERROR: GameObject I{OBName} has a SceneActuator I{ActuatorName} (SetScene) without scene}
+
+ @ivar scene: the name of the scene to change to/overlay/underlay/remove/suspend/resume
+ @type scene: string.
+ @ivar camera: the camera to change to.
+ When setting the attribute, you can use either a L{KX_Camera} or the name of the camera.
+ @type camera: L{KX_Camera} on read, string or L{KX_Camera} on write
+ @ivar useRestart: Set flag to True to restart the sene
+ @type useRestart: bool
+ @ivar mode: The mode of the actuator
+ @type mode: int from 0 to 5 L{GameLogic.Scene Actuator}
+ """
+#{ Deprecated
+ def setUseRestart(flag):
+ """
+ Set flag to True to restart the scene.
+
+ @deprecated: Use the L{useRestart} attribute instead.
+ @type flag: boolean
+ """
+ def setScene(scene):
+ """
+ Sets the name of the scene to change to/overlay/underlay/remove/suspend/resume.
+
+ @deprecated: use the L{scene} attribute instead.
+ @type scene: string
+ """
+ def setCamera(camera):
+ """
+ Sets the camera to change to.
+
+ Camera can be either a L{KX_Camera} or the name of the camera.
+
+ @deprecated: use the L{camera} attribute instead.
+ @type camera: L{KX_Camera} or string
+ """
+ def getUseRestart():
+ """
+ Returns True if the scene will be restarted.
+
+ @deprecated: use the L{useRestart} attribute instead.
+ @rtype: boolean
+ """
+ def getScene():
+ """
+ Returns the name of the scene to change to/overlay/underlay/remove/suspend/resume.
+
+ Returns an empty string ("") if no scene has been set.
+
+ @deprecated: use the L{scene} attribute instead.
+ @rtype: string
+ """
+ def getCamera():
+ """
+ Returns the name of the camera to change to.
+
+ @deprecated: use the L{camera} attribute instead.
+ @rtype: string
+ """
+#}
+
+class KX_SoundActuator(SCA_IActuator):
+ """
+ Sound Actuator.
+
+ The L{startSound()}, L{pauseSound()} and L{stopSound()} do not require
+ the actuator to be activated - they act instantly provided that the actuator has
+ been activated once at least.
+
+ @ivar fileName: The filename of the sound this actuator plays.
+ @type fileName: string
+
+ @ivar volume: The volume (gain) of the sound.
+ @type volume: float
+
+ @ivar pitch: The pitch of the sound.
+ @type pitch: float
+
+ @ivar rollOffFactor: The roll off factor. Rolloff defines the rate of attenuation as the sound gets further away.
+ @type rollOffFactor: float
+
+ @ivar looping: The loop mode of the actuator.
+ @type looping: integer
+
+ @ivar position: The position of the sound as a list: [x, y, z].
+ @type position: float array
+
+ @ivar velocity: The velocity of the emitter as a list: [x, y, z]. The relative velocity to the observer determines the pitch. List of 3 floats: [x, y, z].
+ @type velocity: float array
+
+ @ivar orientation: The orientation of the sound. When setting the orientation you can also use quaternion [float,float,float,float] or euler angles [float,float,float]
+ @type orientation: 3x3 matrix [[float]]
+
+ @ivar mode: The operation mode of the actuator. You can use one of the following constants:
+ - KX_SOUNDACT_PLAYSTOP (1)
+ - KX_SOUNDACT_PLAYEND (2)
+ - KX_SOUNDACT_LOOPSTOP (3)
+ - KX_SOUNDACT_LOOPEND (4)
+ - KX_SOUNDACT_LOOPBIDIRECTIONAL (5)
+ - KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP (6)
+ @type mode: integer
+ """
+
+#{ Play Methods
+ def startSound():
+ """
+ Starts the sound.
+ """
+ def pauseSound():
+ """
+ Pauses the sound.
+ """
+ def stopSound():
+ """
+ Stops the sound.
+ """
+#}
+
+#{ Deprecated
+ def setFilename(filename):
+ """
+ Sets the filename of the sound this actuator plays.
+
+ @deprecated: Use the L{fileName} attribute instead.
+ @type filename: string
+ """
+ def getFilename():
+ """
+ Returns the filename of the sound this actuator plays.
+
+ @deprecated: Use the L{fileName} attribute instead.
+ @rtype: string
+ """
+ def setGain(gain):
+ """
+ Sets the gain (volume) of the sound
+
+ @deprecated: Use the L{volume} attribute instead.
+ @type gain: float
+ @param gain: 0.0 (quiet) <= gain <= 1.0 (loud)
+ """
+ def getGain():
+ """
+ Gets the gain (volume) of the sound.
+
+ @deprecated: Use the L{volume} attribute instead.
+ @rtype: float
+ """
+ def setPitch(pitch):
+ """
+ Sets the pitch of the sound.
+
+ @deprecated: Use the L{pitch} attribute instead.
+ @type pitch: float
+ """
+ def getPitch():
+ """
+ Returns the pitch of the sound.
+
+ @deprecated: Use the L{pitch} attribute instead.
+ @rtype: float
+ """
+ def setRollOffFactor(rolloff):
+ """
+ Sets the rolloff factor for the sounds.
+
+ Rolloff defines the rate of attenuation as the sound gets further away.
+ Higher rolloff factors shorten the distance at which the sound can be heard.
+
+ @deprecated: Use the L{rollOffFactor} attribute instead.
+ @type rolloff: float
+ """
+ def getRollOffFactor():
+ """
+ Returns the rolloff factor for the sound.
+
+ @deprecated: Use the L{rollOffFactor} attribute instead.
+ @rtype: float
+ """
+ def setLooping(loop):
+ """
+ Sets the loop mode of the actuator.
+
+ @bug: There are no constants defined for this method!
+ @param loop: - Play Stop 1
+ - Play End 2
+ - Loop Stop 3
+ - Loop End 4
+ - Bidirection Stop 5
+ - Bidirection End 6
+
+ @deprecated: Use the L{looping} attribute instead.
+ @type loop: integer
+ """
+ def getLooping():
+ """
+ Returns the current loop mode of the actuator.
+
+ @deprecated: Use the L{looping} attribute instead.
+ @rtype: integer
+ """
+ def setPosition(x, y, z):
+ """
+ Sets the position this sound will come from.
+
+ @deprecated: Use the L{position} attribute instead.
+ @type x: float
+ @param x: The x coordinate of the sound.
+ @type y: float
+ @param y: The y coordinate of the sound.
+ @type z: float
+ @param z: The z coordinate of the sound.
+ """
+ def setVelocity(vx, vy, vz):
+ """
+ Sets the velocity this sound is moving at.
+
+ The sound's pitch is determined from the velocity.
+
+ @deprecated: Use the L{velocity} attribute instead.
+ @type vx: float
+ @param vx: The vx coordinate of the sound.
+ @type vy: float
+ @param vy: The vy coordinate of the sound.
+ @type vz: float
+ @param vz: The vz coordinate of the sound.
+ """
+ def setOrientation(o11, o12, o13, o21, o22, o23, o31, o32, o33):
+ """
+ Sets the orientation of the sound.
+
+ The nine parameters specify a rotation matrix::
+ | o11, o12, o13 |
+ | o21, o22, o23 |
+ | o31, o32, o33 |
+ @deprecated: Use the L{orientation} attribute instead.
+ """
+
+ def setType(mode):
+ """
+ Sets the operation mode of the actuator.
+
+ @deprecated: Use the L{type} attribute instead.
+ @param mode: KX_SOUNDACT_PLAYSTOP, KX_SOUNDACT_PLAYEND, KX_SOUNDACT_LOOPSTOP, KX_SOUNDACT_LOOPEND, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP
+ @type mode: integer
+ """
+
+ def getType():
+ """
+ Returns the operation mode of the actuator.
+
+ @deprecated: Use the L{type} attribute instead.
+ @rtype: integer
+ @return: KX_SOUNDACT_PLAYSTOP, KX_SOUNDACT_PLAYEND, KX_SOUNDACT_LOOPSTOP, KX_SOUNDACT_LOOPEND, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP
+ """
+#}
+
+class KX_StateActuator(SCA_IActuator):
+ """
+ State actuator changes the state mask of parent object.
+
+ Property:
+
+ @ivar operation: type of bit operation to be applied on object state mask.
+ You can use one of the following constant:
+ - KX_STATE_OP_CPY (0) : Copy state mask
+ - KX_STATE_OP_SET (1) : Add bits to state mask
+ - KX_STATE_OP_CLR (2) : Substract bits to state mask
+ - KX_STATE_OP_NEG (3) : Invert bits to state mask
+ @type operation: integer
+
+ @ivar mask: value that defines the bits that will be modified by the operation.
+ The bits that are 1 in the mask will be updated in the object state,
+ the bits that are 0 are will be left unmodified expect for the Copy operation
+ which copies the mask to the object state
+ @type mask: integer
+ """
+ def setOperation(op):
+ """
+ Set the type of bit operation to be applied on object state mask.
+ Use setMask() to specify the bits that will be modified.
+
+ @deprecated: Use the L{operation} attribute instead.
+ @param op: bit operation (0=Copy, 1=Add, 2=Substract, 3=Invert)
+ @type op: integer
+ """
+ def setMask(mask):
+ """
+ Set the value that defines the bits that will be modified by the operation.
+ The bits that are 1 in the value will be updated in the object state,
+ the bits that are 0 are will be left unmodified expect for the Copy operation
+ which copies the value to the object state.
+
+ @deprecated: Use the L{mask} attribute instead.
+ @param mask: bits that will be modified
+ @type mask: integer
+ """
+
+class KX_TrackToActuator(SCA_IActuator):
+ """
+ Edit Object actuator in Track To mode.
+
+ @warning: Track To Actuators will be ignored if at game start, the
+ object to track to is invalid.
+
+ This will generate a warning in the console:
+
+ C{ERROR: GameObject I{OBName} no object in EditObjectActuator I{ActuatorName}}
+
+ @ivar object: the object this actuator tracks.
+ @type object: KX_GameObject or None
+ @ivar time: the time in frames with which to delay the tracking motion
+ @type time: integer
+ @ivar use3D: the tracking motion to use 3D
+ @type use3D: boolean
+
+ """
+#{ Deprecated
+ def setObject(object):
+ """
+ Sets the object to track.
+
+ @deprecated: Use the L{object} attribute instead.
+ @type object: L{KX_GameObject}, string or None
+ @param object: Either a reference to a game object or the name of the object to track.
+ """
+ def getObject(name_only):
+ """
+ Returns the name of the object to track.
+
+ @deprecated: Use the L{object} attribute instead.
+ @type name_only: bool
+ @param name_only: optional argument, when 0 return a KX_GameObject
+ @rtype: string, KX_GameObject or None if no object is set
+ """
+ def setTime(time):
+ """
+ Sets the time in frames with which to delay the tracking motion.
+
+ @deprecated: Use the L{time} attribute instead.
+ @type time: integer
+ """
+ def getTime():
+ """
+ Returns the time in frames with which the tracking motion is delayed.
+
+ @deprecated: Use the L{time} attribute instead.
+ @rtype: integer
+ """
+ def setUse3D(use3d):
+ """
+ DEPRECATED: Use the property.
+ Sets the tracking motion to use 3D.
+
+ @deprecated: Use the L{use3D} attribute instead.
+ @type use3d: boolean
+ @param use3d: - True: allow the tracking motion to extend in the z-direction.
+ - False: lock the tracking motion to the x-y plane.
+ """
+ def getUse3D():
+ """
+ Returns True if the tracking motion will track in the z direction.
+
+ @deprecated: Use the L{use3D} attribute instead.
+ @rtype: boolean
+ """
+#}
+
+class KX_VehicleWrapper(PyObjectPlus):
+ """
+ KX_VehicleWrapper
+
+ TODO - description
+ """
+
+ def addWheel(wheel, attachPos, attachDir, axleDir, suspensionRestLength, wheelRadius, hasSteering):
+
+ """
+ Add a wheel to the vehicle
+
+ @param wheel: The object to use as a wheel.
+ @type wheel: L{KX_GameObject} or a KX_GameObject name
+ @param attachPos: The position that this wheel will attach to.
+ @type attachPos: vector of 3 floats
+ @param attachDir: The direction this wheel points.
+ @type attachDir: vector of 3 floats
+ @param axleDir: The direction of this wheels axle.
+ @type axleDir: vector of 3 floats
+ @param suspensionRestLength: TODO - Description
+ @type suspensionRestLength: float
+ @param wheelRadius: The size of the wheel.
+ @type wheelRadius: float
+ """
+
+ def applyBraking(force, wheelIndex):
+ """
+ Apply a braking force to the specified wheel
+
+ @param force: the brake force
+ @type force: float
+
+ @param wheelIndex: index of the wheel where the force needs to be applied
+ @type wheelIndex: integer
+ """
+ def applyEngineForce(force, wheelIndex):
+ """
+ Apply an engine force to the specified wheel
+
+ @param force: the engine force
+ @type force: float
+
+ @param wheelIndex: index of the wheel where the force needs to be applied
+ @type wheelIndex: integer
+ """
+ def getConstraintId():
+ """
+ Get the constraint ID
+
+ @rtype: integer
+ @return: the constraint id
+ """
+ def getConstraintType():
+ """
+ Returns the constraint type.
+
+ @rtype: integer
+ @return: constraint type
+ """
+ def getNumWheels():
+ """
+ Returns the number of wheels.
+
+ @rtype: integer
+ @return: the number of wheels for this vehicle
+ """
+ def getWheelOrientationQuaternion(wheelIndex):
+ """
+ Returns the wheel orientation as a quaternion.
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+
+ @rtype: TODO - type should be quat as per method name but from the code it looks like a matrix
+ @return: TODO Description
+ """
+ def getWheelPosition(wheelIndex):
+ """
+ Returns the position of the specified wheel
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+
+ @rtype: list[x, y, z]
+ @return: position vector
+ """
+ def getWheelRotation(wheelIndex):
+ """
+ Returns the rotation of the specified wheel
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+
+ @rtype: float
+ @return: the wheel rotation
+ """
+ def setRollInfluence(rollInfluece, wheelIndex):
+ """
+ Set the specified wheel's roll influence.
+ The higher the roll influence the more the vehicle will tend to roll over in corners.
+
+ @param rollInfluece: the wheel roll influence
+ @type rollInfluece: float
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+ """
+ def setSteeringValue(steering, wheelIndex):
+ """
+ Set the specified wheel's steering
+
+ @param steering: the wheel steering
+ @type steering: float
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+ """
+ def setSuspensionCompression(compression, wheelIndex):
+ """
+ Set the specified wheel's compression
+
+ @param compression: the wheel compression
+ @type compression: float
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+ """
+ def setSuspensionDamping(damping, wheelIndex):
+ """
+ Set the specified wheel's damping
+
+ @param damping: the wheel damping
+ @type damping: float
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+ """
+ def setSuspensionStiffness(stiffness, wheelIndex):
+ """
+ Set the specified wheel's stiffness
+
+ @param stiffness: the wheel stiffness
+ @type stiffness: float
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+ """
+ def setTyreFriction(friction, wheelIndex):
+ """
+ Set the specified wheel's tyre friction
+
+ @param friction: the tyre friction
+ @type friction: float
+
+ @param wheelIndex: the wheel index
+ @type wheelIndex: integer
+ """
+
+class KX_VertexProxy(SCA_IObject):
+ """
+ A vertex holds position, UV, colour and normal information.
+
+ Note:
+ The physics simulation is NOT currently updated - physics will not respond
+ to changes in the vertex position.
+
+ @ivar XYZ: The position of the vertex.
+ @type XYZ: list [x, y, z]
+ @ivar UV: The texture coordinates of the vertex.
+ @type UV: list [u, v]
+ @ivar normal: The normal of the vertex
+ @type normal: list [nx, ny, nz]
+ @ivar colour: The colour of the vertex.
+ Black = [0.0, 0.0, 0.0, 1.0], White = [1.0, 1.0, 1.0, 1.0]
+ @type colour: list [r, g, b, a]
+ @ivar color: Synonym for colour.
+
+ @group Position: x, y, z
+ @ivar x: The x coordinate of the vertex.
+ @type x: float
+ @ivar y: The y coordinate of the vertex.
+ @type y: float
+ @ivar z: The z coordinate of the vertex.
+ @type z: float
+
+ @group Texture Coordinates: u, v
+ @ivar u: The u texture coordinate of the vertex.
+ @type u: float
+ @ivar v: The v texture coordinate of the vertex.
+ @type v: float
+
+ @ivar u2: The second u texture coordinate of the vertex.
+ @type u2: float
+ @ivar v2: The second v texture coordinate of the vertex.
+ @type v2: float
+
+ @group Colour: r, g, b, a
+ @ivar r: The red component of the vertex colour. 0.0 <= r <= 1.0
+ @type r: float
+ @ivar g: The green component of the vertex colour. 0.0 <= g <= 1.0
+ @type g: float
+ @ivar b: The blue component of the vertex colour. 0.0 <= b <= 1.0
+ @type b: float
+ @ivar a: The alpha component of the vertex colour. 0.0 <= a <= 1.0
+ @type a: float
+ """
+
+ def getXYZ():
+ """
+ Gets the position of this vertex.
+
+ @rtype: list [x, y, z]
+ @return: this vertexes position in local coordinates.
+ """
+ def setXYZ(pos):
+ """
+ Sets the position of this vertex.
+
+ @type pos: list [x, y, z]
+ @param pos: the new position for this vertex in local coordinates.
+ """
+ def getUV():
+ """
+ Gets the UV (texture) coordinates of this vertex.
+
+ @rtype: list [u, v]
+ @return: this vertexes UV (texture) coordinates.
+ """
+ def setUV(uv):
+ """
+ Sets the UV (texture) coordinates of this vertex.
+
+ @type uv: list [u, v]
+ """
+ def getUV2():
+ """
+ Gets the 2nd UV (texture) coordinates of this vertex.
+
+ @rtype: list [u, v]
+ @return: this vertexes UV (texture) coordinates.
+ """
+ def setUV2(uv, unit):
+ """
+ Sets the 2nd UV (texture) coordinates of this vertex.
+
+ @type uv: list [u, v]
+ @param unit: optional argument, FLAT==1, SECOND_UV==2, defaults to SECOND_UV
+ @param unit: int
+ """
+ def getRGBA():
+ """
+ Gets the colour of this vertex.
+
+ The colour is represented as four bytes packed into an integer value. The colour is
+ packed as RGBA.
+
+ Since Python offers no way to get each byte without shifting, you must use the struct module to
+ access colour in an machine independent way.
+
+ Because of this, it is suggested you use the r, g, b and a attributes or the colour attribute instead.
+
+ Example::
+ import struct;
+ col = struct.unpack('4B', struct.pack('I', v.getRGBA()))
+ # col = (r, g, b, a)
+ # black = ( 0, 0, 0, 255)
+ # white = (255, 255, 255, 255)
+
+ @rtype: integer
+ @return: packed colour. 4 byte integer with one byte per colour channel in RGBA format.
+ """
+ def setRGBA(col):
+ """
+ Sets the colour of this vertex.
+
+ See getRGBA() for the format of col, and its relevant problems. Use the r, g, b and a attributes
+ or the colour attribute instead.
+
+ setRGBA() also accepts a four component list as argument col. The list represents the colour as [r, g, b, a]
+ with black = [0.0, 0.0, 0.0, 1.0] and white = [1.0, 1.0, 1.0, 1.0]
+
+ Example::
+ v.setRGBA(0xff0000ff) # Red
+ v.setRGBA(0xff00ff00) # Green on little endian, transparent purple on big endian
+ v.setRGBA([1.0, 0.0, 0.0, 1.0]) # Red
+ v.setRGBA([0.0, 1.0, 0.0, 1.0]) # Green on all platforms.
+
+ @type col: integer or list [r, g, b, a]
+ @param col: the new colour of this vertex in packed RGBA format.
+ """
+ def getNormal():
+ """
+ Gets the normal vector of this vertex.
+
+ @rtype: list [nx, ny, nz]
+ @return: normalised normal vector.
+ """
+ def setNormal(normal):
+ """
+ Sets the normal vector of this vertex.
+
+ @type normal: sequence of floats [r, g, b]
+ @param normal: the new normal of this vertex.
+ """
+
+class KX_VisibilityActuator(SCA_IActuator):
+ """
+ Visibility Actuator.
+ @ivar visibility: whether the actuator makes its parent object visible or invisible
+ @type visibility: boolean
+ @ivar useOcclusion: whether the actuator makes its parent object an occluder or not
+ @type useOcclusion: boolean
+ @ivar useRecursion: whether the visibility/occlusion should be propagated to all children of the object
+ @type useRecursion: boolean
+ """
+#{ Deprecated
+ def set(visible):
+ """
+ Sets whether the actuator makes its parent object visible or invisible.
+
+ @deprecated: Use the L{visibility} attribute instead.
+ @param visible: - True: Makes its parent visible.
+ - False: Makes its parent invisible.
+ """
+#}
+
+class SCA_2DFilterActuator(SCA_IActuator):
+ """
+ Create, enable and disable 2D filters
+
+ Properties:
+
+ The following properties don't have an immediate effect.
+ You must active the actuator to get the result.
+ The actuator is not persistent: it automatically stops itself after setting up the filter
+ but the filter remains active. To stop a filter you must activate the actuator with 'type'
+ set to RAS_2DFILTER_DISABLED or RAS_2DFILTER_NOFILTER.
+
+ @ivar shaderText: shader source code for custom shader
+ @type shaderText: string
+ @ivar disableMotionBlur: action on motion blur: 0=enable, 1=disable
+ @type disableMotionBlur: integer
+ @ivar mode: type of 2D filter, use one of the following constants:
+ RAS_2DFILTER_ENABLED (-2) : enable the filter that was previously disabled
+ RAS_2DFILTER_DISABLED (-1) : disable the filter that is currently active
+ RAS_2DFILTER_NOFILTER (0) : disable and destroy the filter that is currently active
+ RAS_2DFILTER_MOTIONBLUR (1) : create and enable preset filters
+ RAS_2DFILTER_BLUR (2)
+ RAS_2DFILTER_SHARPEN (3)
+ RAS_2DFILTER_DILATION (4)
+ RAS_2DFILTER_EROSION (5)
+ RAS_2DFILTER_LAPLACIAN (6)
+ RAS_2DFILTER_SOBEL (7)
+ RAS_2DFILTER_PREWITT (8)
+ RAS_2DFILTER_GRAYSCALE (9)
+ RAS_2DFILTER_SEPIA (10)
+ RAS_2DFILTER_INVERT (11)
+ RAS_2DFILTER_CUSTOMFILTER (12) : customer filter, the code code is set via shaderText property
+ @type mode: integer
+ @ivar passNumber: order number of filter in the stack of 2D filters. Filters are executed in increasing order of passNb.
+ Only be one filter can be defined per passNb.
+ @type passNumber: integer (0-100)
+ @ivar value: argument for motion blur filter
+ @type value: float (0.0-100.0)
+ """
+
+class SCA_ANDController(SCA_IController):
+ """
+ An AND controller activates only when all linked sensors are activated.
+
+ There are no special python methods for this controller.
+ """
+
+class SCA_ActuatorSensor(SCA_ISensor):
+ """
+ Actuator sensor detect change in actuator state of the parent object.
+ It generates a positive pulse if the corresponding actuator is activated
+ and a negative pulse if the actuator is deactivated.
+
+ Properties:
+
+ @ivar actuator: the name of the actuator that the sensor is monitoring.
+ @type actuator: string
+ """
+#{Deprecated
+ def getActuator():
+ """
+ Return the Actuator with which the sensor operates.
+
+ @deprecated: Use the L{actuator} attribute instead.
+ @rtype: string
+ """
+ def setActuator(name):
+ """
+ Sets the Actuator with which to operate. If there is no Actuator
+ of this name, the function has no effect.
+
+ @deprecated: Use the L{actuator} attribute instead.
+ @param name: actuator name
+ @type name: string
+ """
+#}
+
+class SCA_AlwaysSensor(SCA_ISensor):
+ """
+ This sensor is always activated.
+ """
+
+class SCA_DelaySensor(SCA_ISensor):
+ """
+ The Delay sensor generates positive and negative triggers at precise time,
+ expressed in number of frames. The delay parameter defines the length
+ of the initial OFF period. A positive trigger is generated at the end of this period.
+ The duration parameter defines the length of the ON period following the OFF period.
+ There is a negative trigger at the end of the ON period. If duration is 0, the sensor
+ stays ON and there is no negative trigger.
+ The sensor runs the OFF-ON cycle once unless the repeat option is set: the
+ OFF-ON cycle repeats indefinately (or the OFF cycle if duration is 0).
+ Use SCA_ISensor::reset() at any time to restart sensor.
+
+ Properties:
+
+ @ivar delay: length of the initial OFF period as number of frame, 0 for immediate trigger.
+ @type delay: integer.
+ @ivar duration: length of the ON period in number of frame after the initial OFF period.
+ If duration is greater than 0, a negative trigger is sent at the end of the ON pulse.
+ @type duration: integer
+ @ivar repeat: 1 if the OFF-ON cycle should be repeated indefinately, 0 if it should run once.
+ @type repeat: integer
+ """
+#{Deprecated
+ def setDelay(delay):
+ """
+ Set the initial delay before the positive trigger.
+
+ @deprecated: Use the L{delay} attribute instead.
+ @param delay: length of the initial OFF period as number of frame, 0 for immediate trigger
+ @type delay: integer
+ """
+ def setDuration(duration):
+ """
+ Set the duration of the ON pulse after initial delay and the generation of the positive trigger.
+ If duration is greater than 0, a negative trigger is sent at the end of the ON pulse.
+
+ @deprecated: Use the L{duration} attribute instead.
+ @param duration: length of the ON period in number of frame after the initial OFF period
+ @type duration: integer
+ """
+ def setRepeat(repeat):
+ """
+ Set if the sensor repeat mode.
+
+ @deprecated: Use the L{repeat} attribute instead.
+ @param repeat: 1 if the OFF-ON cycle should be repeated indefinately, 0 if it should run once.
+ @type repeat: integer
+ """
+ def getDelay():
+ """
+ Return the delay parameter value.
+
+ @deprecated: Use the L{delay} attribute instead.
+ @rtype: integer
+ """
+ def getDuration():
+ """
+ Return the duration parameter value
+
+ @deprecated: Use the L{duration} attribute instead.
+ @rtype: integer
+ """
+ def getRepeat():
+ """
+ Return the repeat parameter value
+
+ @deprecated: Use the L{repeat} attribute instead.
+ @rtype: KX_TRUE or KX_FALSE
+ """
+#}
+
+class SCA_JoystickSensor(SCA_ISensor):
+ """
+ This sensor detects player joystick events.
+
+ Properties:
+
+ @ivar axisValues: (read-only) The state of the joysticks axis as a list of values L{numAxis} long.
+ each spesifying the value of an axis between -32767 and 32767 depending on how far the axis is pushed, 0 for nothing.
+ The first 2 values are used by most joysticks and gamepads for directional control. 3rd and 4th values are only on some joysticks and can be used for arbitary controls.
+ left:[-32767, 0, ...], right:[32767, 0, ...], up:[0, -32767, ...], down:[0, 32767, ...]
+ @type axisValues: list of ints
+
+ @ivar axisSingle: (read-only) like L{axisValues} but returns a single axis value that is set by the sensor.
+ Only use this for "Single Axis" type sensors otherwise it will raise an error.
+ @type axisSingle: int
+
+ @ivar hatValues: (read-only) The state of the joysticks hats as a list of values L{numHats} long.
+ each spesifying the direction of the hat from 1 to 12, 0 when inactive.
+ Hat directions are as follows...
+ - 0:None
+ - 1:Up
+ - 2:Right
+ - 4:Down
+ - 8:Left
+ - 3:Up - Right
+ - 6:Down - Right
+ - 12:Down - Left
+ - 9:Up - Left
+
+ @type hatValues: list of ints
+
+ @ivar hatSingle: (read-only) like L{hatValues} but returns a single hat direction value that is set by the sensor.
+ @type hatSingle: int
+
+ @ivar numAxis: (read-only) The number of axes for the joystick at this index.
+ @type numAxis: integer
+ @ivar numButtons: (read-only) The number of buttons for the joystick at this index.
+ @type numButtons: integer
+ @ivar numHats: (read-only) The number of hats for the joystick at this index.
+ @type numHats: integer
+ @ivar connected: (read-only) True if a joystick is connected at this joysticks index.
+ @type connected: boolean
+ @ivar index: The joystick index to use (from 0 to 7). The first joystick is always 0.
+ @type index: integer
+ @ivar threshold: Axis threshold. Joystick axis motion below this threshold wont trigger an event. Use values between (0 and 32767), lower values are more sensitive.
+ @type threshold: integer
+ @ivar button: The button index the sensor reacts to (first button = 0). When the "All Events" toggle is set, this option has no effect.
+ @type button: integer
+ @ivar axis: The axis this sensor reacts to, as a list of two values [axisIndex, axisDirection]
+ axisIndex: the axis index to use when detecting axis movement, 1=primary directional control, 2=secondary directional control.
+ axisDirection: 0=right, 1=up, 2=left, 3=down
+ @type axis: [integer, integer]
+ @ivar hat: The hat the sensor reacts to, as a list of two values: [hatIndex, hatDirection]
+ hatIndex: the hat index to use when detecting hat movement, 1=primary hat, 2=secondary hat (4 max).
+ hatDirection: 1-12
+ @type hat: [integer, integer]
+ """
+
+ def getButtonActiveList():
+ """
+ Returns a list containing the indicies of the currently pressed buttons.
+ @rtype: list
+ """
+ def getButtonStatus(buttonIndex):
+ """
+ Returns a bool of the current pressed state of the specified button.
+ @param buttonIndex: the button index, 0=first button
+ @type buttonIndex: integer
+ @rtype: bool
+ """
+#{Deprecated
+ def getIndex():
+ """
+ Returns the joystick index to use (from 1 to 8).
+
+ @deprecated: Use the L{index} attribute instead.
+ @rtype: integer
+ """
+ def setIndex(index):
+ """
+ Sets the joystick index to use.
+
+ @deprecated: Use the L{index} attribute instead.
+ @param index: The index of this joystick sensor, Clamped between 1 and 8.
+ @type index: integer
+ @note: This is only useful when you have more then 1 joystick connected to your computer - multiplayer games.
+ """
+ def getAxis():
+ """
+ Returns the current axis this sensor reacts to. See L{getAxisValue()<SCA_JoystickSensor.getAxisValue>} for the current axis state.
+
+ @deprecated: Use the L{axis} attribute instead.
+ @rtype: list
+ @return: 2 values returned are [axisIndex, axisDirection] - see L{setAxis()<SCA_JoystickSensor.setAxis>} for their purpose.
+ @note: When the "All Events" toggle is set, this option has no effect.
+ """
+ def setAxis(axisIndex, axisDirection):
+ """
+ @deprecated: Use the L{axis} attribute instead.
+ @param axisIndex: Set the axis index to use when detecting axis movement.
+ @type axisIndex: integer from 1 to 2
+ @param axisDirection: Set the axis direction used for detecting motion. 0:right, 1:up, 2:left, 3:down.
+ @type axisDirection: integer from 0 to 3
+ @note: When the "All Events" toggle is set, this option has no effect.
+ """
+ def getAxisValue():
+ """
+ Returns the state of the joysticks axis. See differs to L{getAxis()<SCA_JoystickSensor.getAxis>} returning the current state of the joystick.
+
+ @deprecated: Use the L{axisValues} attribute instead.
+ @rtype: list
+ @return: 4 values, each spesifying the value of an axis between -32767 and 32767 depending on how far the axis is pushed, 0 for nothing.
+
+ The first 2 values are used by most joysticks and gamepads for directional control. 3rd and 4th values are only on some joysticks and can be used for arbitary controls.
+
+ left:[-32767, 0, ...], right:[32767, 0, ...], up:[0, -32767, ...], down:[0, 32767, ...]
+ @note: Some gamepads only set the axis on and off like a button.
+ """
+ def getThreshold():
+ """
+ Get the axis threshold. See L{setThreshold()<SCA_JoystickSensor.setThreshold>} for details.
+
+ @deprecated: Use the L{threshold} attribute instead.
+ @rtype: integer
+ """
+ def setThreshold(threshold):
+ """
+ Set the axis threshold.
+
+ @deprecated: Use the L{threshold} attribute instead.
+ @param threshold: Joystick axis motion below this threshold wont trigger an event. Use values between (0 and 32767), lower values are more sensitive.
+ @type threshold: integer
+ """
+ def getButton():
+ """
+ Returns the button index the sensor reacts to. See L{getButtonValue()<SCA_JoystickSensor.getButtonValue>} for a list of pressed buttons.
+
+ @deprecated: Use the L{button} attribute instead.
+ @rtype: integer
+ @note: When the "All Events" toggle is set, this option has no effect.
+ """
+ def setButton(index):
+ """
+ Sets the button index the sensor reacts to when the "All Events" option is not set.
+
+ @deprecated: Use the L{button} attribute instead.
+ @note: When the "All Events" toggle is set, this option has no effect.
+ """
+ def getButtonValue():
+ """
+ Returns a list containing the indicies of the currently pressed buttons.
+
+ @deprecated: Use the L{getButtonActiveList} method instead.
+ @rtype: list
+ """
+ def getHat():
+ """
+ Returns the current hat direction this sensor is set to.
+ [hatNumber, hatDirection].
+
+ @deprecated: Use the L{hat} attribute instead.
+ @rtype: list
+ @note: When the "All Events" toggle is set, this option has no effect.
+ """
+ def setHat(index,direction):
+ """
+ Sets the hat index the sensor reacts to when the "All Events" option is not set.
+
+ @deprecated: Use the L{hat} attribute instead.
+ @type index: integer
+ """
+ def getNumAxes():
+ """
+ Returns the number of axes for the joystick at this index.
+
+ @deprecated: Use the L{numAxis} attribute instead.
+ @rtype: integer
+ """
+ def getNumButtons():
+ """
+ Returns the number of buttons for the joystick at this index.
+
+ @deprecated: Use the L{numButtons} attribute instead.
+ @rtype: integer
+ """
+ def getNumHats():
+ """
+ Returns the number of hats for the joystick at this index.
+
+ @deprecated: Use the L{numHats} attribute instead.
+ @rtype: integer
+ """
+ def isConnected():
+ """
+ Returns True if a joystick is detected at this joysticks index.
+
+ @deprecated: Use the L{connected} attribute instead.
+ @rtype: bool
+ """
+#}
+
+class SCA_KeyboardSensor(SCA_ISensor):
+ """
+ A keyboard sensor detects player key presses.
+
+ See module L{GameKeys} for keycode values.
+
+ @ivar key: The key code this sensor is looking for.
+ @type key: keycode from L{GameKeys} module
+ @ivar hold1: The key code for the first modifier this sensor is looking for.
+ @type hold1: keycode from L{GameKeys} module
+ @ivar hold2: The key code for the second modifier this sensor is looking for.
+ @type hold2: keycode from L{GameKeys} module
+ @ivar toggleProperty: The name of the property that indicates whether or not to log keystrokes as a string.
+ @type toggleProperty: string
+ @ivar targetProperty: The name of the property that receives keystrokes in case in case a string is logged.
+ @type targetProperty: string
+ @ivar useAllKeys: Flag to determine whether or not to accept all keys.
+ @type useAllKeys: boolean
+ @ivar events: a list of pressed keys that have either been pressed, or just released, or are active this frame. (read-only).
+
+ - 'keycode' matches the values in L{GameKeys}.
+ - 'status' uses...
+ - L{GameLogic.KX_INPUT_NONE}
+ - L{GameLogic.KX_INPUT_JUST_ACTIVATED}
+ - L{GameLogic.KX_INPUT_ACTIVE}
+ - L{GameLogic.KX_INPUT_JUST_RELEASED}
+
+ @type events: list [[keycode, status], ...]
+ """
+
+ def getKeyStatus(keycode):
+ """
+ Get the status of a key.
+
+ @rtype: key state L{GameLogic} members (KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED)
+ @return: The state of the given key
+ @type keycode: integer
+ @param keycode: The code that represents the key you want to get the state of
+ """
+
+#{Deprecated
+ def getKey():
+ """
+ Returns the key code this sensor is looking for.
+
+ @deprecated: Use the L{key} attribute instead.
+ @rtype: keycode from L{GameKeys} module
+ """
+
+ def setKey(keycode):
+ """
+ Set the key this sensor should listen for.
+
+ @deprecated: Use the L{key} attribute instead.
+ @type keycode: keycode from L{GameKeys} module
+ """
+
+ def getHold1():
+ """
+ Returns the key code for the first modifier this sensor is looking for.
+
+ @deprecated: Use the L{hold1} attribute instead.
+ @rtype: keycode from L{GameKeys} module
+ """
+
+ def setHold1(keycode):
+ """
+ Sets the key code for the first modifier this sensor should look for.
+
+ @deprecated: Use the L{hold1} attribute instead.
+ @type keycode: keycode from L{GameKeys} module
+ """
+
+ def getHold2():
+ """
+ Returns the key code for the second modifier this sensor is looking for.
+
+ @deprecated: Use the L{hold2} attribute instead.
+ @rtype: keycode from L{GameKeys} module
+ """
+
+ def setHold2(keycode):
+ """
+ Sets the key code for the second modifier this sensor should look for.
+
+ @deprecated: Use the L{hold2} attribute instead.
+ @type keycode: keycode from L{GameKeys} module
+ """
+
+ def getPressedKeys():
+ """
+ Get a list of keys that have either been pressed, or just released this frame.
+
+ @deprecated: Use the L{events} attribute instead.
+ @rtype: list of key status. [[keycode, status]]
+ """
+
+ def getCurrentlyPressedKeys():
+ """
+ Get a list of currently pressed keys that have either been pressed, or just released
+
+ @deprecated: Use the L{events} attribute instead.
+ @rtype: list of key status. [[keycode, status]]
+ """
+#}
+
+class SCA_NANDController(SCA_IController):
+ """
+ An NAND controller activates when all linked sensors are not active.
+
+ There are no special python methods for this controller.
+ """
+
+class SCA_NORController(SCA_IController):
+ """
+ An NOR controller activates only when all linked sensors are de-activated.
+
+ There are no special python methods for this controller.
+ """
+
+class SCA_ORController(SCA_IController):
+ """
+ An OR controller activates when any connected sensor activates.
+
+ There are no special python methods for this controller.
+ """
+
+class SCA_PropertyActuator(SCA_IActuator):
+ """
+ Property Actuator
+
+ Properties:
+
+ @ivar propName: the property on which to operate.
+ @type propName: string
+ @ivar value: the value with which the actuator operates.
+ @type value: string
+ @ivar mode: TODO - add constants to game logic dict!.
+ @type mode: int
+ """
+#{ Deprecated
+ def setProperty(prop):
+ """
+ Set the property on which to operate.
+
+ If there is no property of this name, the call is ignored.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @type prop: string
+ @param prop: The name of the property to set.
+ """
+ def getProperty():
+ """
+ Returns the name of the property on which to operate.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @rtype: string
+ """
+ def setValue(value):
+ """
+ Set the value with which the actuator operates.
+
+ If the value is not compatible with the type of the
+ property, the subsequent action is ignored.
+
+ @deprecated: Use the L{value} attribute instead.
+ @type value: string
+ """
+ def getValue():
+ """
+ Gets the value with which this actuator operates.
+
+ @deprecated: Use the L{value} attribute instead.
+ @rtype: string
+ """
+#}
+
+class SCA_PropertySensor(SCA_ISensor):
+ """
+ Activates when the game object property matches.
+
+ Properties:
+
+ @ivar mode: type of check on the property:
+ KX_PROPSENSOR_EQUAL(1), KX_PROPSENSOR_NOTEQUAL(2), KX_PROPSENSOR_INTERVAL(3),
+ KX_PROPSENSOR_CHANGED(4), KX_PROPSENSOR_EXPRESSION(5)
+ @type mode: integer
+ @ivar propName: the property the sensor operates.
+ @type propName: string
+ @ivar value: the value with which the sensor compares to the value of the property.
+ @type value: string
+ """
+#{ Deprecated
+ def getType():
+ """
+ Gets when to activate this sensor.
+
+ @deprecated: Use the L{mode} attribute instead.
+ @return: KX_PROPSENSOR_EQUAL, KX_PROPSENSOR_NOTEQUAL,
+ KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED,
+ or KX_PROPSENSOR_EXPRESSION.
+ """
+
+ def setType(checktype):
+ """
+ Set the type of check to perform.
+
+ @deprecated: Use the L{mode} attribute instead.
+ @type checktype: KX_PROPSENSOR_EQUAL, KX_PROPSENSOR_NOTEQUAL,
+ KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED,
+ or KX_PROPSENSOR_EXPRESSION.
+ """
+
+ def getProperty():
+ """
+ Return the property with which the sensor operates.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @rtype: string
+ @return: the name of the property this sensor is watching.
+ """
+ def setProperty(name):
+ """
+ Sets the property with which to operate. If there is no property
+ of that name, this call is ignored.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @type name: string.
+ """
+ def getValue():
+ """
+ Return the value with which the sensor compares to the value of the property.
+
+ @deprecated: Use the L{value} attribute instead.
+ @rtype: string
+ @return: the value of the property this sensor is watching.
+ """
+ def setValue(value):
+ """
+ Set the value with which the sensor operates. If the value
+ is not compatible with the type of the property, the subsequent
+ action is ignored.
+
+ @deprecated: Use the L{value} attribute instead.
+ @type value: string
+ """
+#}
+
+class SCA_PythonController(SCA_IController):
+ """
+ A Python controller uses a Python script to activate it's actuators,
+ based on it's sensors.
+
+ Properties:
+
+ @ivar script: The value of this variable depends on the execution methid.
+ - When 'Script' execution mode is set this value contains the entire python script as a single string (not the script name as you might expect) which can be modified to run different scripts.
+ - When 'Module' execution mode is set this value will contain a single line string - module name and function "module.func" or "package.modile.func" where the module names are python textblocks or external scripts.
+ note: once this is set the script name given for warnings will remain unchanged.
+ @type script: string
+ @ivar mode: the execution mode for this controller (read-only).
+ - Script: 0, Execite the L{script} as a python code.
+ - Module: 1, Execite the L{script} as a module and function.
+ @type mode: int
+
+ @group Deprecated: getScript, setScript
+ """
+ def activate(actuator):
+ """
+ Activates an actuator attached to this controller.
+ @type actuator: actuator or the actuator name as a string
+ """
+ def deactivate(actuator):
+ """
+ Deactivates an actuator attached to this controller.
+ @type actuator: actuator or the actuator name as a string
+ """
+ def getScript():
+ """
+ Gets the Python script body this controller executes.
+
+ @deprecated: Use the L{script} attribute instead.
+ @rtype: string
+ """
+ def setScript(script_body):
+ """
+ Sets the Python script string this controller executes.
+
+ @deprecated: Use the L{script} attribute instead.
+ @type script_body: string.
+ """
+
+class SCA_RandomActuator(SCA_IActuator):
+ """
+ Random Actuator
+
+ Properties:
+
+ @ivar seed: Seed of the random number generator.
+ Equal seeds produce equal series. If the seed is 0,
+ the generator will produce the same value on every call.
+ @type seed: integer
+ @ivar para1: the first parameter of the active distribution.
+ Refer to the documentation of the generator types for the meaning
+ of this value.
+ @type para1: float, read-only
+ @ivar para2: the second parameter of the active distribution.
+ Refer to the documentation of the generator types for the meaning
+ of this value.
+ @type para2: float, read-only
+ @ivar distribution: distribution type:
+ KX_RANDOMACT_BOOL_CONST, KX_RANDOMACT_BOOL_UNIFORM, KX_RANDOMACT_BOOL_BERNOUILLI,
+ KX_RANDOMACT_INT_CONST, KX_RANDOMACT_INT_UNIFORM, KX_RANDOMACT_INT_POISSON,
+ KX_RANDOMACT_FLOAT_CONST, KX_RANDOMACT_FLOAT_UNIFORM, KX_RANDOMACT_FLOAT_NORMAL,
+ KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
+ @type distribution: integer, read-only
+ @ivar propName: the name of the property to set with the random value.
+ If the generator and property types do not match, the assignment is ignored.
+ @type propName: string
+
+ """
+ def setBoolConst(value):
+ """
+ Sets this generator to produce a constant boolean value.
+
+ @param value: The value to return.
+ @type value: boolean
+ """
+ def setBoolUniform():
+ """
+ Sets this generator to produce a uniform boolean distribution.
+
+ The generator will generate True or False with 50% chance.
+ """
+ def setBoolBernouilli(value):
+ """
+ Sets this generator to produce a Bernouilli distribution.
+
+ @param value: Specifies the proportion of False values to produce.
+ - 0.0: Always generate True
+ - 1.0: Always generate False
+ @type value: float
+ """
+ def setIntConst(value):
+ """
+ Sets this generator to always produce the given value.
+
+ @param value: the value this generator produces.
+ @type value: integer
+ """
+ def setIntUniform(lower_bound, upper_bound):
+ """
+ Sets this generator to produce a random value between the given lower and
+ upper bounds (inclusive).
+
+ @type lower_bound: integer
+ @type upper_bound: integer
+ """
+ def setIntPoisson(value):
+ """
+ Generate a Poisson-distributed number.
+
+ This performs a series of Bernouilli tests with parameter value.
+ It returns the number of tries needed to achieve succes.
+
+ @type value: float
+ """
+ def setFloatConst(value):
+ """
+ Always generate the given value.
+
+ @type value: float
+ """
+ def setFloatUniform(lower_bound, upper_bound):
+ """
+ Generates a random float between lower_bound and upper_bound with a
+ uniform distribution.
+
+ @type lower_bound: float
+ @type upper_bound: float
+ """
+ def setFloatNormal(mean, standard_deviation):
+ """
+ Generates a random float from the given normal distribution.
+
+ @type mean: float
+ @param mean: The mean (average) value of the generated numbers
+ @type standard_deviation: float
+ @param standard_deviation: The standard deviation of the generated numbers.
+ """
+ def setFloatNegativeExponential(half_life):
+ """
+ Generate negative-exponentially distributed numbers.
+
+ The half-life 'time' is characterized by half_life.
+
+ @type half_life: float
+ """
+#{ Deprecated
+ def setSeed(seed):
+ """
+ Sets the seed of the random number generator.
+
+ Equal seeds produce equal series. If the seed is 0,
+ the generator will produce the same value on every call.
+
+ @deprecated: Use the L{seed} attribute instead.
+ @type seed: integer
+ """
+ def getSeed():
+ """
+ Returns the initial seed of the generator.
+
+ @deprecated: Use the L{seed} attribute instead.
+ @rtype: integer
+ """
+ def getPara1():
+ """
+ Returns the first parameter of the active distribution.
+
+ Refer to the documentation of the generator types for the meaning
+ of this value.
+
+ @deprecated: Use the L{para1} attribute instead.
+ @rtype: float
+ """
+ def getPara2():
+ """
+ Returns the second parameter of the active distribution.
+
+ Refer to the documentation of the generator types for the meaning
+ of this value.
+
+ @deprecated: Use the L{para2} attribute instead.
+ @rtype: float
+ """
+ def getDistribution():
+ """
+ Returns the type of random distribution.
+
+ @deprecated: Use the L{distribution} attribute instead.
+ @rtype: distribution type
+ @return: KX_RANDOMACT_BOOL_CONST, KX_RANDOMACT_BOOL_UNIFORM, KX_RANDOMACT_BOOL_BERNOUILLI,
+ KX_RANDOMACT_INT_CONST, KX_RANDOMACT_INT_UNIFORM, KX_RANDOMACT_INT_POISSON,
+ KX_RANDOMACT_FLOAT_CONST, KX_RANDOMACT_FLOAT_UNIFORM, KX_RANDOMACT_FLOAT_NORMAL,
+ KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
+ """
+ def setProperty(property):
+ """
+ Set the property to which the random value is assigned.
+
+ If the generator and property types do not match, the assignment is ignored.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @type property: string
+ @param property: The name of the property to set.
+ """
+ def getProperty():
+ """
+ Returns the name of the property to set.
+
+ @deprecated: Use the L{propName} attribute instead.
+ @rtype: string
+ """
+#}
+
+
+class SCA_RandomSensor(SCA_ISensor):
+ """
+ This sensor activates randomly.
+
+ @ivar lastDraw: The seed of the random number generator.
+ @type lastDraw: int
+ @ivar seed: The seed of the random number generator.
+ @type seed: int
+ """
+
+ def setSeed(seed):
+ """
+ Sets the seed of the random number generator.
+
+ If the seed is 0, the generator will produce the same value on every call.
+
+ @type seed: integer.
+ """
+ def getSeed():
+ """
+ Returns the initial seed of the generator. Equal seeds produce equal random
+ series.
+
+ @rtype: integer
+ """
+ def getLastDraw():
+ """
+ Returns the last random number generated.
+
+ @rtype: integer
+ """
+
+class SCA_XNORController(SCA_IController):
+ """
+ An XNOR controller activates when all linked sensors are the same (activated or inative).
+
+ There are no special python methods for this controller.
+ """
+
+class SCA_XORController(SCA_IController):
+ """
+ An XOR controller activates when there is the input is mixed, but not when all are on or off.
+
+ There are no special python methods for this controller.
+ """
+
+class KX_Camera(KX_GameObject):
+ """
+ A Camera object.
+
+ @group Constants: INSIDE, INTERSECT, OUTSIDE
+ @ivar INSIDE: see sphereInsideFrustum() and boxInsideFrustum()
+ @ivar INTERSECT: see sphereInsideFrustum() and boxInsideFrustum()
+ @ivar OUTSIDE: see sphereInsideFrustum() and boxInsideFrustum()
+
+ @ivar lens: The camera's lens value.
+ @type lens: float
+ @ivar near: The camera's near clip distance.
+ @type near: float
+ @ivar far: The camera's far clip distance.
+ @type far: float
+ @ivar perspective: True if this camera has a perspective transform, False for an orthographic projection.
+ @type perspective: boolean
+ @ivar frustum_culling: True if this camera is frustum culling.
+ @type frustum_culling: boolean
+ @ivar projection_matrix: This camera's 4x4 projection matrix.
+ @type projection_matrix: 4x4 Matrix [[float]]
+ @ivar modelview_matrix: This camera's 4x4 model view matrix. (read-only)
+ Regenerated every frame from the camera's position and orientation.
+ @type modelview_matrix: 4x4 Matrix [[float]]
+ @ivar camera_to_world: This camera's camera to world transform. (read-only)
+ Regenerated every frame from the camera's position and orientation.
+ @type camera_to_world: 4x4 Matrix [[float]]
+ @ivar world_to_camera: This camera's world to camera transform. (read-only)
+ Regenerated every frame from the camera's position and orientation.
+ This is camera_to_world inverted.
+ @type world_to_camera: 4x4 Matrix [[float]]
+ @ivar useViewport: True when the camera is used as a viewport, set True to enable a viewport for this camera.
+ @type useViewport: bool
+
+ @group Deprecated: enableViewport, getProjectionMatrix, setProjectionMatrix
+ """
+
+ def sphereInsideFrustum(centre, radius):
+ """
+ Tests the given sphere against the view frustum.
+
+ @note: when the camera is first initialized the result will be invalid because the projection matrix has not been set.
+ @param centre: The centre of the sphere (in world coordinates.)
+ @type centre: list [x, y, z]
+ @param radius: the radius of the sphere
+ @type radius: float
+ @return: INSIDE, OUTSIDE or INTERSECT
+
+ Example::
+ import GameLogic
+ co = GameLogic.getCurrentController()
+ cam = co.owner
+
+ # A sphere of radius 4.0 located at [x, y, z] = [1.0, 1.0, 1.0]
+ if (cam.sphereInsideFrustum([1.0, 1.0, 1.0], 4) != cam.OUTSIDE):
+ # Sphere is inside frustum !
+ # Do something useful !
+ else:
+ # Sphere is outside frustum
+ """
+ def boxInsideFrustum(box):
+ """
+ Tests the given box against the view frustum.
+
+ Example::
+ import GameLogic
+ co = GameLogic.getCurrentController()
+ cam = co.owner
+
+ # Box to test...
+ box = []
+ box.append([-1.0, -1.0, -1.0])
+ box.append([-1.0, -1.0, 1.0])
+ box.append([-1.0, 1.0, -1.0])
+ box.append([-1.0, 1.0, 1.0])
+ box.append([ 1.0, -1.0, -1.0])
+ box.append([ 1.0, -1.0, 1.0])
+ box.append([ 1.0, 1.0, -1.0])
+ box.append([ 1.0, 1.0, 1.0])
+
+ if (cam.boxInsideFrustum(box) != cam.OUTSIDE):
+ # Box is inside/intersects frustum !
+ # Do something useful !
+ else:
+ # Box is outside the frustum !
+
+ @note: when the camera is first initialized the result will be invalid because the projection matrix has not been set.
+ @return: INSIDE, OUTSIDE or INTERSECT
+ @type box: list
+ @param box: Eight (8) corner points of the box (in world coordinates.)
+ """
+ def pointInsideFrustum(point):
+ """
+ Tests the given point against the view frustum.
+
+ Example::
+ import GameLogic
+ co = GameLogic.getCurrentController()
+ cam = co.owner
+
+ # Test point [0.0, 0.0, 0.0]
+ if (cam.pointInsideFrustum([0.0, 0.0, 0.0])):
+ # Point is inside frustum !
+ # Do something useful !
+ else:
+ # Box is outside the frustum !
+
+ @note: when the camera is first initialized the result will be invalid because the projection matrix has not been set.
+ @rtype: boolean
+ @return: True if the given point is inside this camera's viewing frustum.
+ @type point: [x, y, z]
+ @param point: The point to test (in world coordinates.)
+ """
+ def getCameraToWorld():
+ """
+ Returns the camera-to-world transform.
+
+ @rtype: matrix (4x4 list)
+ @return: the camera-to-world transform matrix.
+ """
+ def getWorldToCamera():
+ """
+ Returns the world-to-camera transform.
+
+ This returns the inverse matrix of getCameraToWorld().
+
+ @rtype: matrix (4x4 list)
+ @return: the world-to-camera transform matrix.
+ """
+ def getProjectionMatrix():
+ """
+ Returns the camera's projection matrix.
+
+ @deprecated: Use the L{projection_matrix} attribute instead.
+ @rtype: matrix (4x4 list)
+ @return: the camera's projection matrix.
+ """
+ def setProjectionMatrix(matrix):
+ """
+ Sets the camera's projection matrix.
+
+ You should use normalised device coordinates for the clipping planes:
+ left = -1.0, right = 1.0, top = 1.0, bottom = -1.0, near = cam.near, far = cam.far
+
+ Example::
+ import GameLogic
+
+ def Scale(matrix, size):
+ for y in range(4):
+ for x in range(4):
+ matrix[y][x] = matrix[y][x] * size[y]
+ return matrix
+
+ # Generate a perspective projection matrix
+ def Perspective(cam):
+ return [[cam.near, 0.0 , 0.0 , 0.0 ],
+ [0.0 , cam.near, 0.0 , 0.0 ],
+ [0.0 , 0.0 , -(cam.far+cam.near)/(cam.far-cam.near), -2.0*cam.far*cam.near/(cam.far - cam.near)],
+ [0.0 , 0.0 , -1.0 , 0.0 ]]
+
+ # Generate an orthographic projection matrix
+ # You will need to scale the camera
+ def Orthographic(cam):
+ return [[1.0/cam.scaling[0], 0.0 , 0.0 , 0.0 ],
+ [0.0 , 1.0/cam.scaling[1], 0.0 , 0.0 ],
+ [0.0 , 0.0 , -2.0/(cam.far-cam.near), -(cam.far+cam.near)/(cam.far-cam.near)],
+ [0.0 , 0.0 , 0.0 , 1.0 ]]
+
+ # Generate an isometric projection matrix
+ def Isometric(cam):
+ return Scale([[0.707, 0.0 , 0.707, 0.0],
+ [0.408, 0.816,-0.408, 0.0],
+ [0.0 , 0.0 , 0.0 , 0.0],
+ [0.0 , 0.0 , 0.0 , 1.0]],
+ [1.0/cam.scaling[0], 1.0/cam.scaling[1], 1.0/cam.scaling[2], 1.0])
+
+ co = GameLogic.getCurrentController()
+ cam = co.owner
+ cam.setProjectionMatrix(Perspective(cam)))
+
+ @deprecated: Use the L{projection_matrix} attribute instead.
+ @type matrix: 4x4 matrix.
+ @param matrix: The new projection matrix for this camera.
+ """
+
+ def enableViewport(viewport):
+ """
+ Use this camera to draw a viewport on the screen (for split screen games or overlay scenes). The viewport region is defined with L{setViewport}.
+
+ @deprecated: Use the L{useViewport} attribute instead.
+ @type viewport: bool
+ @param viewport: the new viewport status
+ """
+ def setOnTop():
+ """
+ Set this cameras viewport ontop of all other viewport.
+ """
+ def setViewport(left, bottom, right, top):
+ """
+ Sets the region of this viewport on the screen in pixels.
+
+ Use L{Rasterizer.getWindowHeight} L{Rasterizer.getWindowWidth} to calculate values relative to the entire display.
+
+ @type left: int
+ @type bottom: int
+ @type right: int
+ @type top: int
+ """
+ def getScreenPosition(arg):
+ """
+ Gets the position of an object projected on screen space.
+
+ Example:
+ # For an object in the middle of the screen, coord = [0.5,0.5]
+ coord = camera.getScreenPosition(object)
+
+ @param arg: L{KX_GameObject}, object name or list [x, y, z]
+ @rtype: list [x, y]
+ @return: the object's position in screen coordinates.
+ """
+ def getScreenVect(x, y):
+ """
+ Gets the vector from the camera position in the screen coordinate direction.
+
+ Example:
+ # Gets the vector of the camera front direction:
+ m_vect = camera.getScreenVect(0.5,0.5)
+
+ @type x: float
+ @type y: float
+ @rtype: 3d vector
+ @return: the vector from a screen coordinate.
+ """
+ def getScreenRay(x, y, dist, property):
+ """
+ Look towards a screen coordinate (x,y) and find first object hit within dist that matches prop.
+ The ray is similar to KX_GameObject->rayCastTo.
+
+ Example:
+ # Gets an object with a property "wall" in front of the camera within a distance of 100:
+ target = camera.getScreenRay(0.5,0.5,100,"wall")
+
+ @type x: float
+ @type y: float
+ @param dist: max distance to look (can be negative => look behind); 0 or omitted => detect up to other
+ @type dist: float
+ @param property: property name that object must have; can be omitted => detect any object
+ @type property: string
+ @rtype: L{KX_GameObject}
+ @return: the first object hit or None if no object or object does not match prop
+ """
+
+# Util func to extract all attrs
+"""
+import types
+attrs = []
+for name, val in locals().items():
+ if name.startswith('__'):
+ continue
+ if type(val) == types.ClassType:
+ for line in val.__doc__.split('\n'):
+ if '@ivar' in line:
+ attrs.append(name + '::' + line.split()[1].replace(':', ''))
+
+for a in attrs:
+ print a
"""
-if 0:
- # Use to print out all the links
- for i in a.split('\n'):
- if i.startswith('@var'):
- var = i.split(' ')[1].split(':')[0]
- print '@var %s: L{%s<%s.%s>}' % (var, var, var, var)
+# Util func to construct a mapping from deprecated attrs to new ones.
+"""
+import types
+import re
+import pprint
+depAttrs = {}
+for name, val in locals().items():
+ if name.startswith('__'):
+ continue
+ if type(val) == types.ClassType:
+ print "\t# %s" % name
+
+ # Inspect each attribute.
+ for attrName in dir(val):
+ if attrName.startswith('__'):
+ continue
+ attr = getattr(val, attrName)
+
+ # Check whether this attribute is deprecated by searching each line.
+ newAttrName = None
+ for line in attr.__doc__.split('\n'):
+ match = re.search(r'@deprecated.*L{(\w+)}', line)
+ if match:
+ newAttrName = match.group(1)
+ break
+ if not newAttrName:
+ continue
+
+ # Store the mappings to new attributes in a list (because there
+ # could be collisions).
+ if not depAttrs.has_key(attrName):
+ depAttrs[attrName] = {}
+ mapping = depAttrs[attrName]
+
+ for line in val.__doc__.split('\n'):
+ if ("@type %s:" % newAttrName) in line:
+ # The attribute is being replaced in this class (i.e. the
+ # deprecated attribute wasn't inherited from a parent). We
+ # have a winner!
+ funcType = None
+ if 'sequence' in line:
+ funcType = 'Keyed'
+ else:
+ funcType = 'Simple'
+
+ if attrName.startswith('get') or attrName.startswith('is'):
+ func = "replace%sGetter" % funcType
+ elif attrName.startswith('set') or attrName.startswith('enable'):
+ func = "replace%sSetter" % funcType
+ else:
+ func = 'UNKNOWN'
+
+ # Another mapping, from a conversion tuple to lists of class
+ # names.
+ conversion = (func, newAttrName)
+ if not mapping.has_key(conversion):
+ mapping[conversion] = []
+ mapping[conversion].append(name)
+ break
+
+pprint.pprint(depAttrs, width = 100)
+"""
diff --git a/source/gameengine/PyDoc/KX_BlenderMaterial.py b/source/gameengine/PyDoc/KX_BlenderMaterial.py
deleted file mode 100644
index 21417db1802..00000000000
--- a/source/gameengine/PyDoc/KX_BlenderMaterial.py
+++ /dev/null
@@ -1,38 +0,0 @@
-class KX_BlenderMaterial: # (PyObjectPlus)
- """
- KX_BlenderMaterial
-
- All placeholders have a __ prefix
- """
-
- def __getShader(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
-
- def __setBlending(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getMaterialIndex(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
diff --git a/source/gameengine/PyDoc/KX_CDActuator.py b/source/gameengine/PyDoc/KX_CDActuator.py
deleted file mode 100644
index e1067674e7e..00000000000
--- a/source/gameengine/PyDoc/KX_CDActuator.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# $Id$
-# Documentation for CD Actuator
-from SCA_IActuator import *
-
-class KX_CDActuator(SCA_IActuator):
- """
- CD Controller actuator.
- @ivar volume: controls the volume to set the CD to. 0.0 = silent, 1.0 = max volume.
- @type volume: float
- @ivar track: the track selected to be played
- @type track: integer
- @ivar gain: the gain (volume) of the CD between 0.0 and 1.0.
- @type gain: float
- """
- def startCD():
- """
- Starts the CD playing.
- """
- def stopCD():
- """
- Stops the CD playing.
- """
- def pauseCD():
- """
- Pauses the CD.
- """
- def resumeCD():
- """
- Resumes the CD after a pause.
- """
- def playAll():
- """
- Plays the CD from the beginning.
- """
- def playTrack(trackNumber):
- """
- Plays the track selected.
- """
- def setGain(gain):
- """
- DEPRECATED: Use the volume property.
- Sets the gain (volume) of the CD.
-
- @type gain: float
- @param gain: the gain to set the CD to. 0.0 = silent, 1.0 = max volume.
- """
- def getGain():
- """
- DEPRECATED: Use the volume property.
- Gets the current gain (volume) of the CD.
-
- @rtype: float
- @return: Between 0.0 (silent) and 1.0 (max volume)
- """
-
diff --git a/source/gameengine/PyDoc/KX_Camera.py b/source/gameengine/PyDoc/KX_Camera.py
deleted file mode 100644
index f5d0d45f968..00000000000
--- a/source/gameengine/PyDoc/KX_Camera.py
+++ /dev/null
@@ -1,209 +0,0 @@
-# $Id$
-# Documentation for Camera game objects.
-from KX_GameObject import *
-
-class KX_Camera(KX_GameObject):
- """
- A Camera object.
-
- @group Constants: INSIDE, INTERSECT, OUTSIDE
- @ivar INSIDE: see sphereInsideFrustum() and boxInsideFrustum()
- @ivar INTERSECT: see sphereInsideFrustum() and boxInsideFrustum()
- @ivar OUTSIDE: see sphereInsideFrustum() and boxInsideFrustum()
-
- @ivar lens: The camera's lens value.
- @type lens: float
- @ivar near: The camera's near clip distance.
- @type near: float
- @ivar far: The camera's far clip distance.
- @type far: float
- @ivar perspective: True if this camera has a perspective transform.
-
- If perspective is False, this camera has an orthographic transform.
-
- Note that the orthographic transform is faked by multiplying the lens attribute
- by 100.0 and translating the camera 100.0 along the z axis.
-
- This is the same as Blender. If you want a true orthographic transform, see L{setProjectionMatrix}.
- @type perspective: boolean
- @ivar frustum_culling: True if this camera is frustum culling.
- @type frustum_culling: boolean
- @ivar projection_matrix: This camera's 4x4 projection matrix.
- @type projection_matrix: 4x4 Matrix [[float]]
- @ivar modelview_matrix: This camera's 4x4 model view matrix. (read only)
- Regenerated every frame from the camera's position and orientation.
- @type modelview_matrix: 4x4 Matrix [[float]]
- @ivar camera_to_world: This camera's camera to world transform. (read only)
- Regenerated every frame from the camera's position and orientation.
- @type camera_to_world: 4x4 Matrix [[float]]
- @ivar world_to_camera: This camera's world to camera transform. (read only)
- Regenerated every frame from the camera's position and orientation.
- This is camera_to_world inverted.
- @type world_to_camera: 4x4 Matrix [[float]]
- """
-
- def sphereInsideFrustum(centre, radius):
- """
- Tests the given sphere against the view frustum.
-
- @param centre: The centre of the sphere (in world coordinates.)
- @type centre: list [x, y, z]
- @param radius: the radius of the sphere
- @type radius: float
- @return: INSIDE, OUTSIDE or INTERSECT
-
- Example::
- import GameLogic
- co = GameLogic.getCurrentController()
- cam = co.GetOwner()
-
- # A sphere of radius 4.0 located at [x, y, z] = [1.0, 1.0, 1.0]
- if (cam.sphereInsideFrustum([1.0, 1.0, 1.0], 4) != cam.OUTSIDE):
- # Sphere is inside frustum !
- # Do something useful !
- else:
- # Sphere is outside frustum
- """
- def boxInsideFrustum(box):
- """
- Tests the given box against the view frustum.
-
- Example::
- import GameLogic
- co = GameLogic.getCurrentController()
- cam = co.GetOwner()
-
- # Box to test...
- box = []
- box.append([-1.0, -1.0, -1.0])
- box.append([-1.0, -1.0, 1.0])
- box.append([-1.0, 1.0, -1.0])
- box.append([-1.0, 1.0, 1.0])
- box.append([ 1.0, -1.0, -1.0])
- box.append([ 1.0, -1.0, 1.0])
- box.append([ 1.0, 1.0, -1.0])
- box.append([ 1.0, 1.0, 1.0])
-
- if (cam.boxInsideFrustum(box) != cam.OUTSIDE):
- # Box is inside/intersects frustum !
- # Do something useful !
- else:
- # Box is outside the frustum !
-
- @return: INSIDE, OUTSIDE or INTERSECT
- @type box: list
- @param box: Eight (8) corner points of the box (in world coordinates.)
- """
- def pointInsideFrustum(point):
- """
- Tests the given point against the view frustum.
-
- Example::
- import GameLogic
- co = GameLogic.getCurrentController()
- cam = co.GetOwner()
-
- # Test point [0.0, 0.0, 0.0]
- if (cam.pointInsideFrustum([0.0, 0.0, 0.0])):
- # Point is inside frustum !
- # Do something useful !
- else:
- # Box is outside the frustum !
-
- @rtype: boolean
- @return: True if the given point is inside this camera's viewing frustum.
- @type point: [x, y, z]
- @param point: The point to test (in world coordinates.)
- """
- def getCameraToWorld():
- """
- Returns the camera-to-world transform.
-
- @rtype: matrix (4x4 list)
- @return: the camera-to-world transform matrix.
- """
- def getWorldToCamera():
- """
- Returns the world-to-camera transform.
-
- This returns the inverse matrix of getCameraToWorld().
-
- @rtype: matrix (4x4 list)
- @return: the world-to-camera transform matrix.
- """
- def getProjectionMatrix():
- """
- Returns the camera's projection matrix.
-
- @rtype: matrix (4x4 list)
- @return: the camera's projection matrix.
- """
- def setProjectionMatrix(matrix):
- """
- Sets the camera's projection matrix.
-
- You should use normalised device coordinates for the clipping planes:
- left = -1.0, right = 1.0, top = 1.0, bottom = -1.0, near = cam.near, far = cam.far
-
- Example::
- import GameLogic
-
- def Scale(matrix, size):
- for y in range(4):
- for x in range(4):
- matrix[y][x] = matrix[y][x] * size[y]
- return matrix
-
- # Generate a perspective projection matrix
- def Perspective(cam):
- return [[cam.near, 0.0 , 0.0 , 0.0 ],
- [0.0 , cam.near, 0.0 , 0.0 ],
- [0.0 , 0.0 , -(cam.far+cam.near)/(cam.far-cam.near), -2.0*cam.far*cam.near/(cam.far - cam.near)],
- [0.0 , 0.0 , -1.0 , 0.0 ]]
-
- # Generate an orthographic projection matrix
- # You will need to scale the camera
- def Orthographic(cam):
- return [[1.0/cam.scaling[0], 0.0 , 0.0 , 0.0 ],
- [0.0 , 1.0/cam.scaling[1], 0.0 , 0.0 ],
- [0.0 , 0.0 , -2.0/(cam.far-cam.near), -(cam.far+cam.near)/(cam.far-cam.near)],
- [0.0 , 0.0 , 0.0 , 1.0 ]]
-
- # Generate an isometric projection matrix
- def Isometric(cam):
- return Scale([[0.707, 0.0 , 0.707, 0.0],
- [0.408, 0.816,-0.408, 0.0],
- [0.0 , 0.0 , 0.0 , 0.0],
- [0.0 , 0.0 , 0.0 , 1.0]],
- [1.0/cam.scaling[0], 1.0/cam.scaling[1], 1.0/cam.scaling[2], 1.0])
-
- co = GameLogic.getCurrentController()
- cam = co.getOwner()
- cam.setProjectionMatrix(Perspective(cam)))
-
- @type matrix: 4x4 matrix.
- @param matrix: The new projection matrix for this camera.
- """
-
- def enableViewport(viewport):
- """
- Use this camera to draw a viewport on the screen (for split screen games or overlay scenes). The viewport region is defined with L{setViewport}.
-
- @type viewport: bool
- @param viewport: the new viewport status
- """
- def setOnTop():
- """
- Set this cameras viewport ontop of all other viewport.
- """
- def setViewport(left, bottom, right, top):
- """
- Sets the region of this viewport on the screen in pixels.
-
- Use L{Rasterizer.getWindowHeight} L{Rasterizer.getWindowWidth} to calculate values relative to the entire display.
-
- @type left: int
- @type bottom: int
- @type right: int
- @type top: int
- """
diff --git a/source/gameengine/PyDoc/KX_CameraActuator.py b/source/gameengine/PyDoc/KX_CameraActuator.py
deleted file mode 100644
index 6ffc55a5854..00000000000
--- a/source/gameengine/PyDoc/KX_CameraActuator.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# $Id$
-# Documentation for KX_CameraActuator
-from SCA_IActuator import *
-
-class KX_CameraActuator(SCA_IActuator):
- """
- Applies changes to a camera.
-
- @ivar min: minimum distance to the target object maintained by the actuator
- @type min: float
- @ivar max: maximum distance to stay from the target object
- @type max: float
- @ivar height: height to stay above the target object
- @type height: float
- @ivar xy: axis this actuator is tracking, true=X, false=Y
- @type xy: boolean
- @ivar object: the object this actuator tracks.
- @type object: KX_GameObject or None
- @author: snail
- """
- def getObject(name_only = 1):
- """
- Returns the name of the object this actuator tracks.
-
- @type name_only: bool
- @param name_only: optional argument, when 0 return a KX_GameObject
- @rtype: string, KX_GameObject or None if no object is set
- """
-
- def setObject(target):
- """
- Sets the object this actuator tracks.
-
- @param target: the object to track.
- @type target: L{KX_GameObject}, string or None
- """
-
- def getMin():
- """
- Returns the minimum distance to target maintained by the actuator.
-
- @rtype: float
- """
-
- def setMin(distance):
- """
- Sets the minimum distance to the target object maintained by the
- actuator.
-
- @param distance: The minimum distance to maintain.
- @type distance: float
- """
-
- def getMax():
- """
- Gets the maximum distance to stay from the target object.
-
- @rtype: float
- """
-
- def setMax(distance):
- """
- Sets the maximum distance to stay from the target object.
-
- @param distance: The maximum distance to maintain.
- @type distance: float
- """
-
- def getHeight():
- """
- Returns the height to stay above the target object.
-
- @rtype: float
- """
-
- def setHeight(height):
- """
- Sets the height to stay above the target object.
-
- @type height: float
- @param height: The height to stay above the target object.
- """
-
- def setXY(xaxis):
- """
- Sets the axis to get behind.
-
- @param xaxis: False to track Y axis, True to track X axis.
- @type xaxis: boolean
- """
-
- def getXY():
- """
- Returns the axis this actuator is tracking.
-
- @return: True if tracking X axis, False if tracking Y axis.
- @rtype: boolean
- """
diff --git a/source/gameengine/PyDoc/KX_ConstraintActuator.py b/source/gameengine/PyDoc/KX_ConstraintActuator.py
deleted file mode 100644
index a30b859548b..00000000000
--- a/source/gameengine/PyDoc/KX_ConstraintActuator.py
+++ /dev/null
@@ -1,249 +0,0 @@
-# $Id$
-# Documentation for KX_ConstraintActuator
-from SCA_IActuator import *
-
-class KX_ConstraintActuator(SCA_IActuator):
- """
- A constraint actuator limits the position, rotation, distance or orientation of an object.
-
- Properties:
-
- @ivar damp: time constant of the constraint expressed in frame (not use by Force field constraint)
- @type damp: integer
-
- @ivar rotDamp: time constant for the rotation expressed in frame (only for the distance constraint)
- 0 = use damp for rotation as well
- @type rotDamp: integer
-
- @ivar direction: the reference direction in world coordinate for the orientation constraint
- @type direction: 3-tuple of float: [x,y,z]
-
- @ivar option: Binary combination of the following values:
- Applicable to Distance constraint:
- KX_ACT_CONSTRAINT_NORMAL ( 64) : Activate alignment to surface
- KX_ACT_CONSTRAINT_DISTANCE ( 512) : Activate distance control
- KX_ACT_CONSTRAINT_LOCAL (1024) : direction of the ray is along the local axis
- Applicable to Force field constraint:
- KX_ACT_CONSTRAINT_DOROTFH (2048) : Force field act on rotation as well
- Applicable to both:
- KX_ACT_CONSTRAINT_MATERIAL ( 128) : Detect material rather than property
- KX_ACT_CONSTRAINT_PERMANENT ( 256) : No deactivation if ray does not hit target
- @type option: integer
-
- @ivar time: activation time of the actuator. The actuator disables itself after this many frame.
- If set to 0, the actuator is not limited in time.
- @type time: integer
-
- @ivar property: the name of the property or material for the ray detection of the distance constraint.
- @type property: string
-
- @ivar min: The lower bound of the constraint
- For the rotation and orientation constraint, it represents radiant
- @type min: float
-
- @ivar distance: the target distance of the distance constraint
- @type distance: float
-
- @ivar max: the upper bound of the constraint.
- For rotation and orientation constraints, it represents radiant.
- @type max: float
-
- @ivar rayLength: the length of the ray of the distance constraint.
- @type rayLength: float
-
- @ivar limit: type of constraint, use one of the following constant:
- KX_ACT_CONSTRAINT_LOCX ( 1) : limit X coord
- KX_ACT_CONSTRAINT_LOCY ( 2) : limit Y coord
- KX_ACT_CONSTRAINT_LOCZ ( 3) : limit Z coord
- KX_ACT_CONSTRAINT_ROTX ( 4) : limit X rotation
- KX_ACT_CONSTRAINT_ROTY ( 5) : limit Y rotation
- KX_ACT_CONSTRAINT_ROTZ ( 6) : limit Z rotation
- KX_ACT_CONSTRAINT_DIRPX ( 7) : set distance along positive X axis
- KX_ACT_CONSTRAINT_DIRPY ( 8) : set distance along positive Y axis
- KX_ACT_CONSTRAINT_DIRPZ ( 9) : set distance along positive Z axis
- KX_ACT_CONSTRAINT_DIRNX (10) : set distance along negative X axis
- KX_ACT_CONSTRAINT_DIRNY (11) : set distance along negative Y axis
- KX_ACT_CONSTRAINT_DIRNZ (12) : set distance along negative Z axis
- KX_ACT_CONSTRAINT_ORIX (13) : set orientation of X axis
- KX_ACT_CONSTRAINT_ORIY (14) : set orientation of Y axis
- KX_ACT_CONSTRAINT_ORIZ (15) : set orientation of Z axis
- KX_ACT_CONSTRAINT_FHPX (16) : set force field along positive X axis
- KX_ACT_CONSTRAINT_FHPY (17) : set force field along positive Y axis
- KX_ACT_CONSTRAINT_FHPZ (18) : set force field along positive Z axis
- KX_ACT_CONSTRAINT_FHNX (19) : set force field along negative X axis
- KX_ACT_CONSTRAINT_FHNY (20) : set force field along negative Y axis
- KX_ACT_CONSTRAINT_FHNZ (21) : set force field along negative Z axis
- @type limit: integer
- """
- def setDamp(time):
- """
- Sets the time this constraint is delayed.
-
- @param time: The number of frames to delay.
- Negative values are ignored.
- @type time: integer
- """
- def getDamp():
- """
- Returns the damping time of the constraint.
-
- @rtype: integer
- """
- def setMin(lower):
- """
- Sets the lower bound of the constraint.
-
- For rotational and orientation constraints, lower is specified in degrees.
-
- @type lower: float
- """
- def getMin():
- """
- Gets the lower bound of the constraint.
-
- For rotational and orientation constraints, the lower bound is returned in radians.
-
- @rtype: float
- """
- def setMax(upper):
- """
- Sets the upper bound of the constraint.
-
- For rotational and orientation constraints, upper is specified in degrees.
-
- @type upper: float
- """
- def getMax():
- """
- Gets the upper bound of the constraint.
-
- For rotational and orientation constraints, the upper bound is returned in radians.
-
- @rtype: float
- """
- def setLimit(limit):
- """
- Sets the type of constraint.
-
- See module L{GameLogic} for valid constraint types.
-
- @param limit:
- Position constraints: KX_CONSTRAINTACT_LOCX, KX_CONSTRAINTACT_LOCY, KX_CONSTRAINTACT_LOCZ
- Rotation constraints: KX_CONSTRAINTACT_ROTX, KX_CONSTRAINTACT_ROTY or KX_CONSTRAINTACT_ROTZ
- Distance contraints: KX_ACT_CONSTRAINT_DIRPX, KX_ACT_CONSTRAINT_DIRPY, KX_ACT_CONSTRAINT_DIRPZ, KX_ACT_CONSTRAINT_DIRNX, KX_ACT_CONSTRAINT_DIRNY, KX_ACT_CONSTRAINT_DIRNZ
- Orientation constraints: KX_ACT_CONSTRAINT_ORIX, KX_ACT_CONSTRAINT_ORIY, KX_ACT_CONSTRAINT_ORIZ
- """
- def getLimit():
- """
- Gets the type of constraint.
-
- See module L{GameLogic} for valid constraints.
-
- @return:
- Position constraints: KX_CONSTRAINTACT_LOCX, KX_CONSTRAINTACT_LOCY, KX_CONSTRAINTACT_LOCZ,
- Rotation constraints: KX_CONSTRAINTACT_ROTX, KX_CONSTRAINTACT_ROTY, KX_CONSTRAINTACT_ROTZ,
- Distance contraints: KX_ACT_CONSTRAINT_DIRPX, KX_ACT_CONSTRAINT_DIRPY, KX_ACT_CONSTRAINT_DIRPZ, KX_ACT_CONSTRAINT_DIRNX, KX_ACT_CONSTRAINT_DIRNY, KX_ACT_CONSTRAINT_DIRNZ,
- Orientation constraints: KX_ACT_CONSTRAINT_ORIX, KX_ACT_CONSTRAINT_ORIY, KX_ACT_CONSTRAINT_ORIZ
- """
- def setRotDamp(duration):
- """
- Sets the time constant of the orientation constraint.
-
- @param duration: If the duration is negative, it is set to 0.
- @type duration: integer
- """
- def getRotDamp():
- """
- Returns the damping time for application of the constraint.
-
- @rtype: integer
- """
- def setDirection(vector):
- """
- Sets the reference direction in world coordinate for the orientation constraint
-
- @type vector: 3-tuple
- """
- def getDirection():
- """
- Returns the reference direction of the orientation constraint in world coordinate.
-
- @rtype: 3-tuple
- """
- def setOption(option):
- """
- Sets several options of the distance constraint.
-
- @type option: integer
- @param option: Binary combination of the following values:
- 64 : Activate alignment to surface
- 128 : Detect material rather than property
- 256 : No deactivation if ray does not hit target
- 512 : Activate distance control
- """
- def getOption():
- """
- Returns the option parameter.
-
- @rtype: integer
- """
- def setTime(duration):
- """
- Sets the activation time of the actuator.
-
- @type duration: integer
- @param duration: The actuator disables itself after this many frame.
- If set to 0 or negative, the actuator is not limited in time.
- """
- def getTime():
- """
- Returns the time parameter.
-
- @rtype: integer
- """
- def setProperty(property):
- """
- Sets the name of the property or material for the ray detection of the distance constraint.
-
- @type property: string
- @param property: If empty, the ray will detect any collisioning object.
- """
- def getProperty():
- """
- Returns the property parameter.
-
- @rtype: string
- """
- def setDistance(distance):
- """
- Sets the target distance in distance constraint.
-
- @type distance: float
- """
- def getDistance():
- """
- Returns the distance parameter.
-
- @rtype: float
- """
- def setRayLength(length):
- """
- Sets the maximum ray length of the distance constraint.
-
- @type length: float
- """
- def getRayLength():
- """
- Returns the length of the ray
-
- @rtype: float
- """
-
-
-
-
-
-
-
-
-
diff --git a/source/gameengine/PyDoc/KX_ConstraintWrapper.py b/source/gameengine/PyDoc/KX_ConstraintWrapper.py
deleted file mode 100644
index 5b34e1609e8..00000000000
--- a/source/gameengine/PyDoc/KX_ConstraintWrapper.py
+++ /dev/null
@@ -1,28 +0,0 @@
-class KX_ConstraintWrapper: # (PyObjectPlus)
- """
- KX_ConstraintWrapper
-
- All placeholders have a __ prefix
- """
- def __getConstraintId(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
-
- def __testMethod(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
-
diff --git a/source/gameengine/PyDoc/KX_GameActuator.py b/source/gameengine/PyDoc/KX_GameActuator.py
deleted file mode 100644
index fc5bd6005fc..00000000000
--- a/source/gameengine/PyDoc/KX_GameActuator.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# $Id$
-# Documentation for KX_GameActuator
-from SCA_IActuator import *
-
-class KX_GameActuator(SCA_IActuator):
- """
- The game actuator loads a new .blend file, restarts the current .blend file or quits the game.
-
- Properties:
-
- @ivar file: the new .blend file to load
- @type file: string.
- """
- def getFile():
- """
- DEPRECATED: use the file property
- Returns the filename of the new .blend file to load.
-
- @rtype: string
- """
- def setFile(filename):
- """
- DEPRECATED: use the file property
- Sets the new .blend file to load.
-
- @param filename: The file name this actuator will load.
- @type filename: string
- """
-
diff --git a/source/gameengine/PyDoc/KX_GameObject.py b/source/gameengine/PyDoc/KX_GameObject.py
deleted file mode 100644
index 21ddf439924..00000000000
--- a/source/gameengine/PyDoc/KX_GameObject.py
+++ /dev/null
@@ -1,504 +0,0 @@
-# $Id$
-# Documentation for game objects
-
-# from SCA_IObject import *
-# from SCA_ISensor import *
-# from SCA_IController import *
-# from SCA_IActuator import *
-
-
-class KX_GameObject: # (SCA_IObject)
- """
- All game objects are derived from this class.
-
- Properties assigned to game objects are accessible as attributes of this class.
- - note: Calling ANY method or attribute on an object that has been removed from a scene will raise a RuntimeError, if an object may have been removed since last accessing it use the L{isValid} attribute to check.
-
- @ivar name: The object's name. (Read only)
- - note: Currently (Blender 2.49) the prefix "OB" is added to all objects name. This may change in blender 2.5.
- @type name: string.
- @ivar mass: The object's mass
- - note: The object must have a physics controller for the mass to be applied, otherwise the mass value will be returned as 0.0
- @type mass: float
- @ivar linVelocityMin: Enforces the object keeps moving at a minimum velocity.
- - note: Applies to dynamic and rigid body objects only.
- - note: A value of 0.0 disables this option.
- - note: While objects are stationary the minimum velocity will not be applied.
- @type linVelocityMin: float
- @ivar linVelocityMax: Clamp the maximum linear velocity to prevent objects moving beyond a set speed.
- - note: Applies to dynamic and rigid body objects only.
- - note: A value of 0.0 disables this option (rather then setting it stationary).
- @type linVelocityMax: float
- @ivar localInertia: the object's inertia vector in local coordinates. Read only.
- @type localInertia: list [ix, iy, iz]
- @ivar parent: The object's parent object. (Read only)
- @type parent: L{KX_GameObject} or None
- @ivar visible: visibility flag.
- - note: Game logic will still run for invisible objects.
- @type visible: boolean
- @ivar occlusion: occlusion capability flag.
- @type occlusion: boolean
- @ivar position: The object's position.
- DEPRECATED: use localPosition and worldPosition
- @type position: list [x, y, z] On write: local position, on read: world position
- @ivar orientation: The object's orientation. 3x3 Matrix. You can also write a Quaternion or Euler vector.
- DEPRECATED: use localOrientation and worldOrientation
- @type orientation: 3x3 Matrix [[float]] On write: local orientation, on read: world orientation
- @ivar scaling: The object's scaling factor. list [sx, sy, sz]
- DEPRECATED: use localScaling and worldScaling
- @type scaling: list [sx, sy, sz] On write: local scaling, on read: world scaling
- @ivar localOrientation: The object's local orientation. 3x3 Matrix. You can also write a Quaternion or Euler vector.
- @type localOrientation: 3x3 Matrix [[float]]
- @ivar worldOrientation: The object's world orientation. Read-only.
- @type worldOrientation: 3x3 Matrix [[float]]
- @ivar localScaling: The object's local scaling factor.
- @type localScaling: list [sx, sy, sz]
- @ivar worldScaling: The object's world scaling factor. Read-only
- @type worldScaling: list [sx, sy, sz]
- @ivar localPosition: The object's local position.
- @type localPosition: list [x, y, z]
- @ivar worldPosition: The object's world position.
- @type worldPosition: list [x, y, z]
- @ivar timeOffset: adjust the slowparent delay at runtime.
- @type timeOffset: float
- @ivar state: the game object's state bitmask, using the first 30 bits, one bit must always be set.
- @type state: int
- @ivar meshes: a list meshes for this object.
- - note: Most objects use only 1 mesh.
- - note: Changes to this list will not update the KX_GameObject.
- @type meshes: list of L{KX_MeshProxy}
- @ivar sensors: a list of L{SCA_ISensor} objects.
- - note: This attribute is experemental and may be removed (but probably wont be).
- - note: Changes to this list will not update the KX_GameObject.
- @type sensors: list
- @ivar controllers: a list of L{SCA_IController} objects.
- - note: This attribute is experemental and may be removed (but probably wont be).
- - note: Changes to this list will not update the KX_GameObject.
- @type controllers: list of L{SCA_ISensor}.
- @ivar actuators: a list of L{SCA_IActuator} objects.
- - note: This attribute is experemental and may be removed (but probably wont be).
- - note: Changes to this list will not update the KX_GameObject.
- @type actuators: list
- @ivar isValid: Retuerns fails when the object has been removed from the scene and can no longer be used.
- @type isValid: bool
- """
- def endObject(visible):
- """
- Delete this object, can be used inpace of the EndObject Actuator.
- The actual removal of the object from the scene is delayed.
- """
- def replaceMesh(mesh_name):
- """
- Replace the mesh of this object with a new mesh. This works the same was as the actuator.
- @type mesh_name: string
- """
- def getVisible():
- """
- Gets the game object's visible flag. (B{deprecated})
-
- @rtype: boolean
- """
- def setVisible(visible, recursive):
- """
- Sets the game object's visible flag.
-
- @type visible: boolean
- @type recursive: boolean
- @param recursive: optional argument to set all childrens visibility flag too.
- """
- def setOcclusion(occlusion, recursive):
- """
- Sets the game object's occlusion capability.
-
- @type visible: boolean
- @type recursive: boolean
- @param recursive: optional argument to set all childrens occlusion flag too.
- """
- def getState():
- """
- Gets the game object's state bitmask. (B{deprecated})
-
- @rtype: int
- @return: the objects state.
- """
- def setState(state):
- """
- Sets the game object's state flag. (B{deprecated}).
- The bitmasks for states from 1 to 30 can be set with (1<<0, 1<<1, 1<<2 ... 1<<29)
-
- @type state: integer
- """
- def setPosition(pos):
- """
- Sets the game object's position. (B{deprecated})
- Global coordinates for root object, local for child objects.
-
-
- @type pos: [x, y, z]
- @param pos: the new position, in local coordinates.
- """
- def setWorldPosition(pos):
- """
- Sets the game object's position in world coordinates regardless if the object is root or child.
-
- @type pos: [x, y, z]
- @param pos: the new position, in world coordinates.
- """
- def getPosition():
- """
- Gets the game object's position. (B{deprecated})
-
- @rtype: list [x, y, z]
- @return: the object's position in world coordinates.
- """
- def setOrientation(orn):
- """
- Sets the game object's orientation. (B{deprecated})
-
- @type orn: 3x3 rotation matrix, or Quaternion.
- @param orn: a rotation matrix specifying the new rotation.
- @note: When using this matrix with Blender.Mathutils.Matrix() types, it will need to be transposed.
- """
- def alignAxisToVect(vect, axis):
- """
- Aligns any of the game object's axis along the given vector.
-
- @type vect: 3d vector.
- @param vect: a vector to align the axis.
- @type axis: integer.
- @param axis:The axis you want to align
- - 0: X axis
- - 1: Y axis
- - 2: Z axis (default)
- """
- def getAxisVect(vect):
- """
- Returns the axis vector rotates by the objects worldspace orientation.
- This is the equivalent if multiplying the vector by the orientation matrix.
-
- @type vect: 3d vector.
- @param vect: a vector to align the axis.
- @rtype: 3d vector.
- @return: The vector in relation to the objects rotation.
-
- """
- def getOrientation():
- """
- Gets the game object's orientation. (B{deprecated})
-
- @rtype: 3x3 rotation matrix
- @return: The game object's rotation matrix
- @note: When using this matrix with Blender.Mathutils.Matrix() types, it will need to be transposed.
- """
- def applyMovement(movement, local = 0):
- """
- Sets the game object's movement.
-
- @type movement: 3d vector.
- @param movement: movement vector.
- @type local: boolean
- @param local: - False: you get the "global" movement ie: relative to world orientation (default).
- - True: you get the "local" movement ie: relative to object orientation.
- """
- def applyRotation(rotation, local = 0):
- """
- Sets the game object's rotation.
-
- @type rotation: 3d vector.
- @param rotation: rotation vector.
- @type local: boolean
- @param local: - False: you get the "global" rotation ie: relative to world orientation (default).
- - True: you get the "local" rotation ie: relative to object orientation.
- """
- def applyForce(force, local = 0):
- """
- Sets the game object's force.
-
- This requires a dynamic object.
-
- @type force: 3d vector.
- @param force: force vector.
- @type local: boolean
- @param local: - False: you get the "global" force ie: relative to world orientation (default).
- - True: you get the "local" force ie: relative to object orientation.
- """
- def applyTorque(torque, local = 0):
- """
- Sets the game object's torque.
-
- This requires a dynamic object.
-
- @type torque: 3d vector.
- @param torque: torque vector.
- @type local: boolean
- @param local: - False: you get the "global" torque ie: relative to world orientation (default).
- - True: you get the "local" torque ie: relative to object orientation.
- """
- def getLinearVelocity(local = 0):
- """
- Gets the game object's linear velocity.
-
- This method returns the game object's velocity through it's centre of mass,
- ie no angular velocity component.
-
- @type local: boolean
- @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
- - True: you get the "local" velocity ie: relative to object orientation.
- @rtype: list [vx, vy, vz]
- @return: the object's linear velocity.
- """
- def setLinearVelocity(velocity, local = 0):
- """
- Sets the game object's linear velocity.
-
- This method sets game object's velocity through it's centre of mass,
- ie no angular velocity component.
-
- This requires a dynamic object.
-
- @type velocity: 3d vector.
- @param velocity: linear velocity vector.
- @type local: boolean
- @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
- - True: you get the "local" velocity ie: relative to object orientation.
- """
- def getAngularVelocity(local = 0):
- """
- Gets the game object's angular velocity.
-
- @type local: boolean
- @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
- - True: you get the "local" velocity ie: relative to object orientation.
- @rtype: list [vx, vy, vz]
- @return: the object's angular velocity.
- """
- def setAngularVelocity(velocity, local = 0):
- """
- Sets the game object's angular velocity.
-
- This requires a dynamic object.
-
- @type velocity: 3d vector.
- @param velocity: angular velocity vector.
- @type local: boolean
- @param local: - False: you get the "global" velocity ie: relative to world orientation (default).
- - True: you get the "local" velocity ie: relative to object orientation.
- """
- def getVelocity(point):
- """
- Gets the game object's velocity at the specified point.
-
- Gets the game object's velocity at the specified point, including angular
- components.
-
- @type point: list [x, y, z]
- @param point: the point to return the velocity for, in local coordinates. (optional: default = [0, 0, 0])
- @rtype: list [vx, vy, vz]
- @return: the velocity at the specified point.
- """
- def getMass():
- """
- Gets the game object's mass. (B{deprecated})
-
- @rtype: float
- @return: the object's mass.
- """
- def getReactionForce():
- """
- Gets the game object's reaction force.
-
- The reaction force is the force applied to this object over the last simulation timestep.
- This also includes impulses, eg from collisions.
-
- (B{This is not implimented for bullet physics at the moment})
-
- @rtype: list [fx, fy, fz]
- @return: the reaction force of this object.
- """
- def applyImpulse(point, impulse):
- """
- Applies an impulse to the game object.
-
- This will apply the specified impulse to the game object at the specified point.
- If point != getPosition(), applyImpulse will also change the object's angular momentum.
- Otherwise, only linear momentum will change.
-
- @type point: list [x, y, z]
- @param point: the point to apply the impulse to (in world coordinates)
- """
- def suspendDynamics():
- """
- Suspends physics for this object.
- """
- def restoreDynamics():
- """
- Resumes physics for this object.
- @Note: The objects linear velocity will be applied from when the dynamics were suspended.
- """
- def enableRigidBody():
- """
- Enables rigid body physics for this object.
-
- Rigid body physics allows the object to roll on collisions.
- @Note: This is not working with bullet physics yet.
- """
- def disableRigidBody():
- """
- Disables rigid body physics for this object.
- @Note: This is not working with bullet physics yet. The angular is removed but rigid body physics can still rotate it later.
- """
- def getParent():
- """
- Gets this object's parent. (B{deprecated})
-
- @rtype: L{KX_GameObject}
- @return: this object's parent object, or None if this object has no parent.
- """
- def setParent(parent):
- """
- Sets this object's parent.
-
- @type parent: L{KX_GameObject}
- @param parent: new parent object.
- """
- def removeParent():
- """
- Removes this objects parent.
- """
- def getChildren():
- """
- Return a list of immediate children of this object.
- @rtype: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
- @return: a list of all this objects children.
- """
- def getChildrenRecursive():
- """
- Return a list of children of this object, including all their childrens children.
- @rtype: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
- @return: a list of all this objects children recursivly.
- """
- def getMesh(mesh):
- """
- Gets the mesh object for this object.
-
- @type mesh: integer
- @param mesh: the mesh object to return (optional: default mesh = 0)
- @rtype: L{KX_MeshProxy}
- @return: the first mesh object associated with this game object, or None if this object has no meshs.
- """
- def getPhysicsId():
- """
- Returns the user data object associated with this game object's physics controller.
- """
- def getPropertyNames():
- """
- Gets a list of all property names.
- @rtype: list
- @return: All property names for this object.
- """
- def getDistanceTo(other):
- """
- Returns the distance to another object or point.
-
- @param other: a point or another L{KX_GameObject} to measure the distance to.
- @type other: L{KX_GameObject} or list [x, y, z]
- @rtype: float
- """
- def getVectTo(other):
- """
- Returns the vector and the distance to another object or point.
- The vector is normalized unless the distance is 0, in which a NULL vector is returned.
-
- @param other: a point or another L{KX_GameObject} to get the vector and distance to.
- @type other: L{KX_GameObject} or list [x, y, z]
- @rtype: 3-tuple (float, 3-tuple (x,y,z), 3-tuple (x,y,z))
- @return: (distance, globalVector(3), localVector(3))
- """
- def rayCastTo(other,dist,prop):
- """
- Look towards another point/object and find first object hit within dist that matches prop.
-
- The ray is always casted from the center of the object, ignoring the object itself.
- The ray is casted towards the center of another object or an explicit [x,y,z] point.
- Use rayCast() if you need to retrieve the hit point
-
- @param other: [x,y,z] or object towards which the ray is casted
- @type other: L{KX_GameObject} or 3-tuple
- @param dist: max distance to look (can be negative => look behind); 0 or omitted => detect up to other
- @type dist: float
- @param prop: property name that object must have; can be omitted => detect any object
- @type prop: string
- @rtype: L{KX_GameObject}
- @return: the first object hit or None if no object or object does not match prop
- """
- def rayCast(objto,objfrom,dist,prop,face,xray,poly):
- """
- Look from a point/object to another point/object and find first object hit within dist that matches prop.
- if poly is 0, returns a 3-tuple with object reference, hit point and hit normal or (None,None,None) if no hit.
- if poly is 1, returns a 4-tuple with in addition a L{KX_PolyProxy} as 4th element.
-
- Ex::
- # shoot along the axis gun-gunAim (gunAim should be collision-free)
- ob,point,normal = gun.rayCast(gunAim,None,50)
- if ob:
- # hit something
-
- Notes:
- The ray ignores the object on which the method is called.
- It is casted from/to object center or explicit [x,y,z] points.
-
- The face paremeter determines the orientation of the normal::
- 0 => hit normal is always oriented towards the ray origin (as if you casted the ray from outside)
- 1 => hit normal is the real face normal (only for mesh object, otherwise face has no effect)
-
- The ray has X-Ray capability if xray parameter is 1, otherwise the first object hit (other than self object) stops the ray.
- The prop and xray parameters interact as follow::
- prop off, xray off: return closest hit or no hit if there is no object on the full extend of the ray.
- prop off, xray on : idem.
- prop on, xray off: return closest hit if it matches prop, no hit otherwise.
- prop on, xray on : return closest hit matching prop or no hit if there is no object matching prop on the full extend of the ray.
- The L{KX_PolyProxy} 4th element of the return tuple when poly=1 allows to retrieve information on the polygon hit by the ray.
- If there is no hit or the hit object is not a static mesh, None is returned as 4th element.
-
- The ray ignores collision-free objects and faces that dont have the collision flag enabled, you can however use ghost objects.
-
- @param objto: [x,y,z] or object to which the ray is casted
- @type objto: L{KX_GameObject} or 3-tuple
- @param objfrom: [x,y,z] or object from which the ray is casted; None or omitted => use self object center
- @type objfrom: L{KX_GameObject} or 3-tuple or None
- @param dist: max distance to look (can be negative => look behind); 0 or omitted => detect up to to
- @type dist: float
- @param prop: property name that object must have; can be omitted => detect any object
- @type prop: string
- @param face: normal option: 1=>return face normal; 0 or omitted => normal is oriented towards origin
- @type face: int
- @param xray: X-ray option: 1=>skip objects that don't match prop; 0 or omitted => stop on first object
- @type xray: int
- @param poly: polygon option: 1=>return value is a 4-tuple and the 4th element is a L{KX_PolyProxy}
- @type poly: int
- @rtype: 3-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz))
- or 4-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz), L{KX_PolyProxy})
- @return: (object,hitpoint,hitnormal) or (object,hitpoint,hitnormal,polygon)
- If no hit, returns (None,None,None) or (None,None,None,None)
- If the object hit is not a static mesh, polygon is None
- """
- def setCollisionMargin(margin):
- """
- Set the objects collision margin.
-
- note: If this object has no physics controller (a physics ID of zero), this function will raise RuntimeError.
-
- @type margin: float
- @param margin: the collision margin distance in blender units.
- """
- def sendMessage(subject, body="", to=""):
- """
- Sends a message.
-
- @param subject: The subject of the message
- @type subject: string
- @param body: The body of the message (optional)
- @type body: string
- @param to: The name of the object to send the message to (optional)
- @type to: string
- """
diff --git a/source/gameengine/PyDoc/KX_IpoActuator.py b/source/gameengine/PyDoc/KX_IpoActuator.py
deleted file mode 100644
index ebc0b855f0a..00000000000
--- a/source/gameengine/PyDoc/KX_IpoActuator.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# $Id$
-# Documentation for KX_IpoActuator
-from SCA_IActuator import *
-
-class KX_IpoActuator(SCA_IActuator):
- """
- IPO actuator activates an animation.
-
- @ivar startFrame: Start frame.
- @type startFrame: float
- @ivar endFrame: End frame.
- @type endFrame: float
- @ivar propName: Use this property to define the Ipo position
- @type propName: string
- @ivar framePropName: Assign this property this action current frame number
- @type framePropName: string
- @ivar type: Play mode for the ipo. (In GameLogic.KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND, KX_IPOACT_FROM_PROP)
- @type type: int
- @ivar useIpoAsForce: Apply Ipo as a global or local force depending on the local option (dynamic objects only)
- @type useIpoAsForce: bool
- @ivar useIpoAdd: Ipo is added to the current loc/rot/scale in global or local coordinate according to Local flag
- @type useIpoAdd: bool
- @ivar useIpoLocal: Let the ipo acts in local coordinates, used in Force and Add mode.
- @type useIpoLocal: bool
- @ivar useChildren: Update IPO on all children Objects as well
- @type useChildren: bool
- """
- def set(mode, startframe, endframe, force):
- """
- Sets the properties of the actuator. (B{deprecated})
-
- @param mode: "Play", "PingPong", "Flipper", "LoopStop", "LoopEnd" or "FromProp"
- @type mode: string
- @param startframe: first frame to use
- @type startframe: integer
- @param endframe: last frame to use
- @type endframe: integer
- @param force: special mode
- @type force: integer (0=normal, 1=interpret location as force, 2=additive)
- """
- def setProperty(property):
- """
- Sets the name of the property to be used in FromProp mode. (B{deprecated})
-
- @type property: string
- """
- def setStart(startframe):
- """
- Sets the frame from which the IPO starts playing. (B{deprecated})
-
- @type startframe: integer
- """
- def getStart():
- """
- Returns the frame from which the IPO starts playing. (B{deprecated})
-
- @rtype: integer
- """
- def setEnd(endframe):
- """
- Sets the frame at which the IPO stops playing. (B{deprecated})
-
- @type endframe: integer
- """
- def getEnd():
- """
- Returns the frame at which the IPO stops playing. (B{deprecated})
-
- @rtype: integer
- """
- def setIpoAsForce(force):
- """
- Set whether to interpret the ipo as a force rather than a displacement. (B{deprecated})
-
- @type force: boolean
- @param force: KX_TRUE or KX_FALSE
- """
- def getIpoAsForce():
- """
- Returns whether to interpret the ipo as a force rather than a displacement. (B{deprecated})
-
- @rtype: boolean
- """
- def setIpoAdd(add):
- """
- Set whether to interpret the ipo as additive rather than absolute. (B{deprecated})
-
- @type add: boolean
- @param add: KX_TRUE or KX_FALSE
- """
- def getIpoAdd():
- """
- Returns whether to interpret the ipo as additive rather than absolute. (B{deprecated})
-
- @rtype: boolean
- """
- def setType(mode):
- """
- Sets the operation mode of the actuator. (B{deprecated})
-
- @param mode: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
- @type mode: string
- """
- def getType():
- """
- Returns the operation mode of the actuator. (B{deprecated})
-
- @rtype: integer
- @return: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
- """
- def setForceIpoActsLocal(local):
- """
- Set whether to apply the force in the object's local
- coordinates rather than the world global coordinates. (B{deprecated})
-
- @param local: Apply the ipo-as-force in the object's local
- coordinates? (KX_TRUE, KX_FALSE)
- @type local: boolean
- """
- def getForceIpoActsLocal():
- """
- Return whether to apply the force in the object's local
- coordinates rather than the world global coordinates. (B{deprecated})
- """
diff --git a/source/gameengine/PyDoc/KX_LightObject.py b/source/gameengine/PyDoc/KX_LightObject.py
deleted file mode 100644
index 8cc1787887b..00000000000
--- a/source/gameengine/PyDoc/KX_LightObject.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-# Documentation for Light game objects.
-from KX_GameObject import *
-
-class KX_LightObject(KX_GameObject):
- """
- A Light object.
-
- Example:
-
- # Turn on a red alert light.
- import GameLogic
-
- co = GameLogic.getCurrentController()
- light = co.getOwner()
-
- light.energy = 1.0
- light.colour = [1.0, 0.0, 0.0]
-
- @group Constants: NORMAL, SPOT, SUN
- @ivar SPOT: A spot light source. See attribute 'type'
- @ivar SUN: A point light source with no attenuation. See attribute 'type'
- @ivar NORMAL: A point light source. See attribute 'type'
-
- @ivar type: The type of light - must be SPOT, SUN or NORMAL
- @ivar layer: The layer mask that this light affects object on.
- @type layer: bitfield
- @ivar energy: The brightness of this light.
- @type energy: float
- @ivar distance: The maximum distance this light can illuminate. (SPOT and NORMAL lights only)
- @type distance: float
- @ivar colour: The colour of this light. Black = [0.0, 0.0, 0.0], White = [1.0, 1.0, 1.0]
- @type colour: list [r, g, b]
- @ivar color: Synonym for colour.
- @ivar lin_attenuation: The linear component of this light's attenuation. (SPOT and NORMAL lights only)
- @type lin_attenuation: float
- @ivar quad_attenuation: The quadratic component of this light's attenuation (SPOT and NORMAL lights only)
- @type quad_attenuation: float
- @ivar spotsize: The cone angle of the spot light, in degrees. (float) (SPOT lights only)
- 0.0 <= spotsize <= 180.0. Spotsize = 360.0 is also accepted.
- @ivar spotblend: Specifies the intensity distribution of the spot light. (float) (SPOT lights only)
- Higher values result in a more focused light source.
- 0.0 <= spotblend <= 1.0.
-
- """
diff --git a/source/gameengine/PyDoc/KX_MeshProxy.py b/source/gameengine/PyDoc/KX_MeshProxy.py
deleted file mode 100644
index e8839ac484c..00000000000
--- a/source/gameengine/PyDoc/KX_MeshProxy.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# $Id$
-# Documentation for KX_MeshProxy
-
-class KX_MeshProxy:
- """
- A mesh object.
-
- You can only change the vertex properties of a mesh object, not the mesh topology.
-
- To use mesh objects effectively, you should know a bit about how the game engine handles them.
- 1. Mesh Objects are converted from Blender at scene load.
- 2. The Converter groups polygons by Material. This means they can be sent to the
- renderer efficiently. A material holds:
- 1. The texture.
- 2. The Blender material.
- 3. The Tile properties
- 4. The face properties - (From the "Texture Face" panel)
- 5. Transparency & z sorting
- 6. Light layer
- 7. Polygon shape (triangle/quad)
- 8. Game Object
- 3. Verticies will be split by face if necessary. Verticies can only be shared between
- faces if:
- 1. They are at the same position
- 2. UV coordinates are the same
- 3. Their normals are the same (both polygons are "Set Smooth")
- 4. They are the same colour
- For example: a cube has 24 verticies: 6 faces with 4 verticies per face.
-
- The correct method of iterating over every L{KX_VertexProxy} in a game object::
- import GameLogic
-
- co = GameLogic.getcurrentController()
- obj = co.getOwner()
-
- m_i = 0
- mesh = obj.getMesh(m_i) # There can be more than one mesh...
- while mesh != None:
- for mat in range(mesh.getNumMaterials()):
- for v_index in range(mesh.getVertexArrayLength(mat)):
- vertex = mesh.getVertex(mat, v_index)
- # Do something with vertex here...
- # ... eg: colour the vertex red.
- vertex.colour = [1.0, 0.0, 0.0, 1.0]
- m_i += 1
- mesh = obj.getMesh(m_i)
-
- @ivar materials:
- @type materials: list of L{KX_BlenderMaterial} or L{KX_PolygonMaterial} types
-
- @ivar numPolygons:
- @type numPolygons: integer
-
- @ivar numMaterials:
- @type numMaterials: integer
- """
-
- def getNumMaterials():
- """
- Gets the number of materials associated with this object.
-
- @rtype: integer
- """
-
- def getMaterialName(matid):
- """
- Gets the name of the specified material.
-
- @type matid: integer
- @param matid: the specified material.
- @rtype: string
- @return: the attached material name.
- """
- def getTextureName(matid):
- """
- Gets the name of the specified material's texture.
-
- @type matid: integer
- @param matid: the specified material
- @rtype: string
- @return: the attached material's texture name.
- """
- def getVertexArrayLength(matid):
- """
- Gets the length of the vertex array associated with the specified material.
-
- There is one vertex array for each material.
-
- @type matid: integer
- @param matid: the specified material
- @rtype: integer
- @return: the number of verticies in the vertex array.
- """
- def getVertex(matid, index):
- """
- Gets the specified vertex from the mesh object.
-
- @type matid: integer
- @param matid: the specified material
- @type index: integer
- @param index: the index into the vertex array.
- @rtype: L{KX_VertexProxy}
- @return: a vertex object.
- """
- def getNumPolygons():
- """
- Returns the number of polygon in the mesh.
-
- @rtype: integer
- """
- def getPolygon(index):
- """
- Gets the specified polygon from the mesh.
-
- @type index: integer
- @param index: polygon number
- @rtype: L{KX_PolyProxy}
- @return: a polygon object.
- """
- def reinstancePhysicsMesh():
- """
- Updates the physics system with the changed mesh.
-
- A mesh must have only one material with collision flags,
- and have all collision primitives in one vertex array (ie. < 65535 verts) and
- be either a polytope or polyheder mesh. If you don't get a warning in the
- console when the collision type is polytope, the mesh is suitable for reinstance.
-
- @rtype: boolean
- @return: True if reinstance succeeded, False if it failed.
- """
-
diff --git a/source/gameengine/PyDoc/KX_MouseFocusSensor.py b/source/gameengine/PyDoc/KX_MouseFocusSensor.py
deleted file mode 100644
index 24f7716218b..00000000000
--- a/source/gameengine/PyDoc/KX_MouseFocusSensor.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-# Documentation for KX_MouseFocusSensor
-from SCA_MouseSensor import *
-
-class KX_MouseFocusSensor(SCA_MouseSensor):
- """
- The mouse focus sensor detects when the mouse is over the current game object.
-
- The mouse focus sensor works by transforming the mouse coordinates from 2d device
- space to 3d space then raycasting away from the camera.
-
- @ivar raySource: The worldspace source of the ray (the view position)
- @type raySource: list (vector of 3 floats)
- @ivar rayTarget: The worldspace target of the ray.
- @type rayTarget: list (vector of 3 floats)
- @ivar rayDirection: The L{rayTarget} - L{raySource} normalized.
- @type rayDirection: list (normalized vector of 3 floats)
- @ivar hitObject: the last object the mouse was over.
- @type hitObject: L{KX_GameObject<KX_GameObject.KX_GameObject>} or None
- @ivar hitPosition: The worldspace position of the ray intersecton.
- @type hitPosition: list (vector of 3 floats)
- @ivar hitNormal: the worldspace normal from the face at point of intersection.
- @type hitNormal: list (normalized vector of 3 floats)
- """
-
- def getHitNormal():
- """
- Returns the normal (in worldcoordinates) at the point of collision where the object was hit by this ray. (B{deprecated})
-
- @rtype: list [x, y, z]
- @return: the ray collision normal.
- """
- def getHitObject():
- """
- Returns the object that was hit by this ray or None. (B{deprecated})
-
- @rtype: L{KX_GameObject} or None
- @return: the collision object.
- """
- def getHitPosition():
- """
- Returns the position (in worldcoordinates) at the point of collision where the object was hit by this ray. (B{deprecated})
-
- @rtype: list [x, y, z]
- @return: the ray collision position.
- """
- def getRayDirection():
- """
- Returns the normalized direction (in worldcoordinates) of the ray cast by the mouse. (B{deprecated})
-
- @rtype: list [x, y, z]
- @return: the ray direction.
- """
- def getRaySource():
- """
- Returns the position (in worldcoordinates) the ray was cast from by the mouse. (B{deprecated})
-
- @rtype: list [x, y, z]
- @return: the ray source.
- """
- def getRayTarget():
- """
- Returns the target of the ray (in worldcoordinates) that seeks the focus object. (B{deprecated})
-
- @rtype: list [x, y, z]
- @return: the ray target.
- """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/KX_NearSensor.py b/source/gameengine/PyDoc/KX_NearSensor.py
deleted file mode 100644
index a8c408827fe..00000000000
--- a/source/gameengine/PyDoc/KX_NearSensor.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# $Id$
-# Documentation for KX_NearSensor
-from KX_TouchSensor import *
-
-class KX_NearSensor(KX_TouchSensor):
- """
- A near sensor is a specialised form of touch sensor.
-
- @ivar distance: The near sensor activates when an object is within this distance.
- @type distance: float
- @ivar resetDistance: The near sensor deactivates when the object exceeds this distance.
- @type resetDistance: float
- """
-
diff --git a/source/gameengine/PyDoc/KX_NetworkMessageActuator.py b/source/gameengine/PyDoc/KX_NetworkMessageActuator.py
deleted file mode 100644
index c9f48d47eb8..00000000000
--- a/source/gameengine/PyDoc/KX_NetworkMessageActuator.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Id$
-# Documentation for KX_NetworkMessageActuator
-from SCA_IActuator import *
-
-class KX_NetworkMessageActuator(SCA_IActuator):
- """
- Message Actuator
-
- @ivar propName: Messages will only be sent to objects with the given property name.
- @type propName: string
- @ivar subject: The subject field of the message.
- @type subject: string
- @ivar body: The body of the message.
- @type body: string
- @ivar usePropBody: Send a property instead of a regular body message.
- @type usePropBody: boolean
- """
- def setToPropName(name):
- """
- DEPRECATED: Use the propName property instead.
- Messages will only be sent to objects with the given property name.
-
- @type name: string
- """
- def setSubject(subject):
- """
- DEPRECATED: Use the subject property instead.
- Sets the subject field of the message.
-
- @type subject: string
- """
- def setBodyType(bodytype):
- """
- DEPRECATED: Use the usePropBody property instead.
- Sets the type of body to send.
-
- @type bodytype: boolean
- @param bodytype: True to send the value of a property, False to send the body text.
- """
- def setBody(body):
- """
- DEPRECATED: Use the body property instead.
- Sets the message body.
-
- @type body: string
- @param body: if the body type is True, this is the name of the property to send.
- if the body type is False, this is the text to send.
- """
-
diff --git a/source/gameengine/PyDoc/KX_NetworkMessageSensor.py b/source/gameengine/PyDoc/KX_NetworkMessageSensor.py
deleted file mode 100644
index 0fecad58437..00000000000
--- a/source/gameengine/PyDoc/KX_NetworkMessageSensor.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# $Id$
-# Documentation for KX_NetworkMessageSensor
-from SCA_ISensor import *
-
-class KX_NetworkMessageSensor(SCA_ISensor):
- """
- The Message Sensor logic brick.
-
- Currently only loopback (local) networks are supported.
-
- @ivar subject: The subject the sensor is looking for.
- @type subject: string
- @ivar frameMessageCount: The number of messages received since the last frame.
- (Read-only)
- @type framemessageCount: int
- @ivar subjects: The list of message subjects received. (Read-only)
- @type subjects: list of strings
- @ivar bodies: The list of message bodies received. (Read-only)
- @type bodies: list of strings
- """
-
-
- def setSubjectFilterText(subject):
- """
- DEPRECATED: Use the subject property instead.
- Change the message subject text that this sensor is listening to.
-
- @type subject: string
- @param subject: the new message subject to listen for.
- """
-
- def getFrameMessageCount():
- """
- DEPRECATED: Use the frameMessageCount property instead.
- Get the number of messages received since the last frame.
-
- @rtype: integer
- """
- def getBodies():
- """
- DEPRECATED: Use the bodies property instead.
- Gets the list of message bodies.
-
- @rtype: list
- """
- def getSubject():
- """
- DEPRECATED: Use the subject property instead.
- Gets the message subject this sensor is listening for from the Subject: field.
-
- @rtype: string
- """
- def getSubjects():
- """
- DEPRECATED: Use the subjects property instead.
- Gets the list of message subjects received.
-
- @rtype: list
- """
- \ No newline at end of file
diff --git a/source/gameengine/PyDoc/KX_ObjectActuator.py b/source/gameengine/PyDoc/KX_ObjectActuator.py
deleted file mode 100644
index b7b76473292..00000000000
--- a/source/gameengine/PyDoc/KX_ObjectActuator.py
+++ /dev/null
@@ -1,250 +0,0 @@
-# $Id$
-# Documentation for KX_ObjectActuator
-from SCA_IActuator import *
-
-class KX_ObjectActuator(SCA_IActuator):
- """
- The object actuator ("Motion Actuator") applies force, torque, displacement, angular displacement,
- velocity, or angular velocity to an object.
- Servo control allows to regulate force to achieve a certain speed target.
- """
- def getForce():
- """
- Returns the force applied by the actuator.
-
- @rtype: list [fx, fy, fz, local]
- @return: A four item list, containing the vector force, and a flag specifying whether the force is local.
- """
- def setForce(fx, fy, fz, local):
- """
- Sets the force applied by the actuator.
-
- @type fx: float
- @param fx: the x component of the force.
- @type fy: float
- @param fy: the z component of the force.
- @type fz: float
- @param fz: the z component of the force.
- @type local: boolean
- @param local: - False: the force is applied in world coordinates.
- - True: the force is applied in local coordinates.
- """
- def getTorque():
- """
- Returns the torque applied by the actuator.
-
- @rtype: list [S{Tau}x, S{Tau}y, S{Tau}z, local]
- @return: A four item list, containing the vector torque, and a flag specifying whether
- the torque is applied in local coordinates (True) or world coordinates (False)
- """
- def setTorque(tx, ty, tz, local):
- """
- Sets the torque applied by the actuator.
-
- @type tx: float
- @param tx: the x component of the torque.
- @type ty: float
- @param ty: the z component of the torque.
- @type tz: float
- @param tz: the z component of the torque.
- @type local: boolean
- @param local: - False: the torque is applied in world coordinates.
- - True: the torque is applied in local coordinates.
- """
- def getDLoc():
- """
- Returns the displacement vector applied by the actuator.
-
- @rtype: list [dx, dy, dz, local]
- @return: A four item list, containing the vector displacement, and whether
- the displacement is applied in local coordinates (True) or world
- coordinates (False)
- """
- def setDLoc(dx, dy, dz, local):
- """
- Sets the displacement vector applied by the actuator.
-
- Since the displacement is applied every frame, you must adjust the displacement
- based on the frame rate, or you game experience will depend on the player's computer
- speed.
-
- @type dx: float
- @param dx: the x component of the displacement vector.
- @type dy: float
- @param dy: the z component of the displacement vector.
- @type dz: float
- @param dz: the z component of the displacement vector.
- @type local: boolean
- @param local: - False: the displacement vector is applied in world coordinates.
- - True: the displacement vector is applied in local coordinates.
- """
- def getDRot():
- """
- Returns the angular displacement vector applied by the actuator.
-
- @rtype: list [dx, dy, dz, local]
- @return: A four item list, containing the angular displacement vector, and whether
- the displacement is applied in local coordinates (True) or world
- coordinates (False)
- """
- def setDRot(dx, dy, dz, local):
- """
- Sets the angular displacement vector applied by the actuator.
-
- Since the displacement is applied every frame, you must adjust the displacement
- based on the frame rate, or you game experience will depend on the player's computer
- speed.
-
- @type dx: float
- @param dx: the x component of the angular displacement vector.
- @type dy: float
- @param dy: the z component of the angular displacement vector.
- @type dz: float
- @param dz: the z component of the angular displacement vector.
- @type local: boolean
- @param local: - False: the angular displacement vector is applied in world coordinates.
- - True: the angular displacement vector is applied in local coordinates.
- """
- def getLinearVelocity():
- """
- Returns the linear velocity applied by the actuator.
- For the servo control actuator, this is the target speed.
-
- @rtype: list [vx, vy, vz, local]
- @return: A four item list, containing the vector velocity, and whether the velocity is applied in local coordinates (True) or world coordinates (False)
- """
- def setLinearVelocity(vx, vy, vz, local):
- """
- Sets the linear velocity applied by the actuator.
- For the servo control actuator, sets the target speed.
-
- @type vx: float
- @param vx: the x component of the velocity vector.
- @type vy: float
- @param vy: the z component of the velocity vector.
- @type vz: float
- @param vz: the z component of the velocity vector.
- @type local: boolean
- @param local: - False: the velocity vector is in world coordinates.
- - True: the velocity vector is in local coordinates.
- """
- def getAngularVelocity():
- """
- Returns the angular velocity applied by the actuator.
-
- @rtype: list [S{omega}x, S{omega}y, S{omega}z, local]
- @return: A four item list, containing the vector velocity, and whether
- the velocity is applied in local coordinates (True) or world
- coordinates (False)
- """
- def setAngularVelocity(wx, wy, wz, local):
- """
- Sets the angular velocity applied by the actuator.
-
- @type wx: float
- @param wx: the x component of the velocity vector.
- @type wy: float
- @param wy: the z component of the velocity vector.
- @type wz: float
- @param wz: the z component of the velocity vector.
- @type local: boolean
- @param local: - False: the velocity vector is applied in world coordinates.
- - True: the velocity vector is applied in local coordinates.
- """
- def getDamping():
- """
- Returns the damping parameter of the servo controller.
-
- @rtype: integer
- @return: the time constant of the servo controller in frame unit.
- """
- def setDamping(damp):
- """
- Sets the damping parameter of the servo controller.
-
- @type damp: integer
- @param damp: the damping parameter in frame unit.
- """
- def getForceLimitX():
- """
- Returns the min/max force limit along the X axis used by the servo controller.
-
- @rtype: list [min, max, enabled]
- @return: A three item list, containing the min and max limits of the force as float
- and whether the limits are active(true) or inactive(true)
- """
- def setForceLimitX(min, max, enable):
- """
- Sets the min/max force limit along the X axis and activates or deactivates the limits in the servo controller.
-
- @type min: float
- @param min: the minimum value of the force along the X axis.
- @type max: float
- @param max: the maximum value of the force along the X axis.
- @type enable: boolean
- @param enable: - True: the force will be limited to the min/max
- - False: the force will not be limited
- """
- def getForceLimitY():
- """
- Returns the min/max force limit along the Y axis used by the servo controller.
-
- @rtype: list [min, max, enabled]
- @return: A three item list, containing the min and max limits of the force as float
- and whether the limits are active(true) or inactive(true)
- """
- def setForceLimitY(min, max, enable):
- """
- Sets the min/max force limit along the Y axis and activates or deactivates the limits in the servo controller.
-
- @type min: float
- @param min: the minimum value of the force along the Y axis.
- @type max: float
- @param max: the maximum value of the force along the Y axis.
- @type enable: boolean
- @param enable: - True: the force will be limited to the min/max
- - False: the force will not be limited
- """
- def getForceLimitZ():
- """
- Returns the min/max force limit along the Z axis used by the servo controller.
-
- @rtype: list [min, max, enabled]
- @return: A three item list, containing the min and max limits of the force as float
- and whether the limits are active(true) or inactive(true)
- """
- def setForceLimitZ(min, max, enable):
- """
- Sets the min/max force limit along the Z axis and activates or deactivates the limits in the servo controller.
-
- @type min: float
- @param min: the minimum value of the force along the Z axis.
- @type max: float
- @param max: the maximum value of the force along the Z axis.
- @type enable: boolean
- @param enable: - True: the force will be limited to the min/max
- - False: the force will not be limited
- """
- def getPID():
- """
- Returns the PID coefficient of the servo controller.
-
- @rtype: list [P, I, D]
- @return: A three item list, containing the PID coefficient as floats:
- P : proportional coefficient
- I : Integral coefficient
- D : Derivate coefficient
- """
- def setPID(P, I, D):
- """
- Sets the PID coefficients of the servo controller.
-
- @type P: flat
- @param P: proportional coefficient
- @type I: float
- @param I: Integral coefficient
- @type D: float
- @param D: Derivate coefficient
- """
-
-
diff --git a/source/gameengine/PyDoc/KX_ParentActuator.py b/source/gameengine/PyDoc/KX_ParentActuator.py
deleted file mode 100644
index 2f5d9515d0b..00000000000
--- a/source/gameengine/PyDoc/KX_ParentActuator.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# $Id$
-# Documentation for KX_ParentActuator
-from SCA_IActuator import *
-
-class KX_ParentActuator(SCA_IActuator):
- """
- The parent actuator can set or remove an objects parent object.
- @ivar object: the object this actuator sets the parent too.
- @type object: KX_GameObject or None
- """
- def setObject(object):
- """
- DEPRECATED: Use the object property.
- Sets the object to set as parent.
-
- Object can be either a L{KX_GameObject} or the name of the object.
-
- @type object: L{KX_GameObject}, string or None
- """
- def getObject(name_only = 1):
- """
- DEPRECATED: Use the object property.
- Returns the name of the object to change to.
- @type name_only: bool
- @param name_only: optional argument, when 0 return a KX_GameObject
- @rtype: string, KX_GameObject or None if no object is set
- """
diff --git a/source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py b/source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py
deleted file mode 100644
index 2171cf4c7b6..00000000000
--- a/source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py
+++ /dev/null
@@ -1,47 +0,0 @@
-class KX_PhysicsObjectWrapper: # (PyObjectPlus)
- """
- KX_PhysicsObjectWrapper
-
- All placeholders have a __ prefix
- """
- def __setActive(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
-
- def __setAngularVelocity(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setLinearVelocity(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setPosition(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
diff --git a/source/gameengine/PyDoc/KX_PolyProxy.py b/source/gameengine/PyDoc/KX_PolyProxy.py
deleted file mode 100644
index bcd42c2ac2e..00000000000
--- a/source/gameengine/PyDoc/KX_PolyProxy.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# $Id$
-# Documentation for the polygon proxy class
-
-class KX_PolyProxy:
- """
- A polygon holds the index of the vertex forming the poylgon.
-
- Note:
- The polygon attributes are read-only, you need to retrieve the vertex proxy if you want
- to change the vertex settings.
-
- @ivar matname: The name of polygon material, empty if no material.
- @type matname: string
- @ivar material: The material of the polygon
- @type material: L{KX_PolygonMaterial} or KX_BlenderMaterial
- @ivar texture: The texture name of the polygon.
- @type texture: string
- @ivar matid: The material index of the polygon, use this to retrieve vertex proxy from mesh proxy
- @type matid: integer
- @ivar v1: vertex index of the first vertex of the polygon, use this to retrieve vertex proxy from mesh proxy
- @type v1: integer
- @ivar v2: vertex index of the second vertex of the polygon, use this to retrieve vertex proxy from mesh proxy
- @type v2: integer
- @ivar v3: vertex index of the third vertex of the polygon, use this to retrieve vertex proxy from mesh proxy
- @type v3: integer
- @ivar v4: vertex index of the fourth vertex of the polygon, 0 if polygon has only 3 vertex
- use this to retrieve vertex proxy from mesh proxy
- @type v4: integer
- @ivar visible: visible state of the polygon: 1=visible, 0=invisible
- @type visible: integer
- @ivar collide: collide state of the polygon: 1=receives collision, 0=collision free.
- @type collide: integer
- """
-
- def getMaterialName():
- """
- Returns the polygon material name with MA prefix
-
- @rtype: string
- @return: material name
- """
- def getMaterial():
- """
- Returns the polygon material
-
- @rtype: L{KX_PolygonMaterial} or KX_BlenderMaterial
- """
- def getTextureName():
- """
- Returns the polygon texture name
-
- @rtype: string
- @return: texture name
- """
- def getMaterialIndex():
- """
- Returns the material bucket index of the polygon.
- This index and the ones returned by getVertexIndex() are needed to retrieve the vertex proxy from L{KX_MeshProxy}.
-
- @rtype: integer
- @return: the material index in the mesh
- """
- def getNumVertex():
- """
- Returns the number of vertex of the polygon.
-
- @rtype: integer
- @return: number of vertex, 3 or 4.
- """
- def isVisible():
- """
- Returns whether the polygon is visible or not
-
- @rtype: integer
- @return: 0=invisible, 1=visible
- """
- def isCollider():
- """
- Returns whether the polygon is receives collision or not
-
- @rtype: integer
- @return: 0=collision free, 1=receives collision
- """
- def getVertexIndex(vertex):
- """
- Returns the mesh vertex index of a polygon vertex
- This index and the one returned by getMaterialIndex() are needed to retrieve the vertex proxy from L{KX_MeshProxy}.
-
- @type vertex: integer
- @param vertex: index of the vertex in the polygon: 0->3
- @rtype: integer
- @return: mesh vertex index
- """
- def getMesh():
- """
- Returns a mesh proxy
-
- @rtype: L{KX_MeshProxy}
- @return: mesh proxy
- """
diff --git a/source/gameengine/PyDoc/KX_PolygonMaterial.py b/source/gameengine/PyDoc/KX_PolygonMaterial.py
deleted file mode 100644
index cfc4257f95d..00000000000
--- a/source/gameengine/PyDoc/KX_PolygonMaterial.py
+++ /dev/null
@@ -1,281 +0,0 @@
-# $Id$
-
-class KX_PolygonMaterial:
- """
- This is the interface to materials in the game engine.
-
- Materials define the render state to be applied to mesh objects.
-
- Warning: Some of the methods/variables are CObjects. If you mix these up,
- you will crash blender.
-
- This example requires:
- - PyOpenGL http://pyopengl.sourceforge.net/
- - GLEWPy http://glewpy.sourceforge.net/
- Example::
-
- import GameLogic
- import OpenGL
- from OpenGL.GL import *
- from OpenGL.GLU import *
- import glew
- from glew import *
-
- glewInit()
-
- vertex_shader = \"\"\"
-
- void main(void)
- {
- gl_Position = ftransform();
- }
- \"\"\"
-
- fragment_shader =\"\"\"
-
- void main(void)
- {
- gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
- }
- \"\"\"
-
- class MyMaterial:
- def __init__(self):
- self.pass_no = 0
- # Create a shader
- self.m_program = glCreateProgramObjectARB()
- # Compile the vertex shader
- self.shader(GL_VERTEX_SHADER_ARB, (vertex_shader))
- # Compile the fragment shader
- self.shader(GL_FRAGMENT_SHADER_ARB, (fragment_shader))
- # Link the shaders together
- self.link()
-
- def PrintInfoLog(self, tag, object):
- \"\"\"
- PrintInfoLog prints the GLSL compiler log
- \"\"\"
- print "Tag: def PrintGLError(self, tag = ""):
-
- def PrintGLError(self, tag = ""):
- \"\"\"
- Prints the current GL error status
- \"\"\"
- if len(tag):
- print tag
- err = glGetError()
- if err != GL_NO_ERROR:
- print "GL Error: %s\\n"%(gluErrorString(err))
-
- def shader(self, type, shaders):
- \"\"\"
- shader compiles a GLSL shader and attaches it to the current
- program.
-
- type should be either GL_VERTEX_SHADER_ARB or GL_FRAGMENT_SHADER_ARB
- shaders should be a sequence of shader source to compile.
- \"\"\"
- # Create a shader object
- shader_object = glCreateShaderObjectARB(type)
-
- # Add the source code
- glShaderSourceARB(shader_object, len(shaders), shaders)
-
- # Compile the shader
- glCompileShaderARB(shader_object)
-
- # Print the compiler log
- self.PrintInfoLog("vertex shader", shader_object)
-
- # Check if compiled, and attach if it did
- compiled = glGetObjectParameterivARB(shader_object, GL_OBJECT_COMPILE_STATUS_ARB)
- if compiled:
- glAttachObjectARB(self.m_program, shader_object)
-
- # Delete the object (glAttachObjectARB makes a copy)
- glDeleteObjectARB(shader_object)
-
- # print the gl error log
- self.PrintGLError()
-
- def link(self):
- \"\"\"
- Links the shaders together.
- \"\"\"
- # clear error indicator
- glGetError()
-
- glLinkProgramARB(self.m_program)
-
- self.PrintInfoLog("link", self.m_program)
-
- linked = glGetObjectParameterivARB(self.m_program, GL_OBJECT_LINK_STATUS_ARB)
- if not linked:
- print "Shader failed to link"
- return
-
- glValidateProgramARB(self.m_program)
- valid = glGetObjectParameterivARB(self.m_program, GL_OBJECT_VALIDATE_STATUS_ARB)
- if not valid:
- print "Shader failed to validate"
- return
-
- def activate(self, rasty, cachingInfo, mat):
- self.pass_no+=1
- if (self.pass_no == 1):
- glDisable(GL_COLOR_MATERIAL)
- glUseProgramObjectARB(self.m_program)
- return True
-
- glEnable(GL_COLOR_MATERIAL)
- glUseProgramObjectARB(0)
- self.pass_no = 0
- return False
-
- obj = GameLogic.getCurrentController().getOwner()
-
- mesh = obj.getMesh(0)
-
- for mat in mesh.materials:
- mat.setCustomMaterial(MyMaterial())
- print mat.texture
-
- @ivar texture: Texture name
- @type texture: string (read only)
-
- @ivar gl_texture: OpenGL texture handle (eg for glBindTexture(GL_TEXTURE_2D, gl_texture)
- @type gl_texture: integer (read only)
-
- @ivar material: Material name
- @type material: string (read only)
-
- @ivar tface: Texture face properties
- @type tface: CObject (read only)
-
- @ivar tile: Texture is tiling
- @type tile: boolean
- @ivar tilexrep: Number of tile repetitions in x direction.
- @type tilexrep: integer
- @ivar tileyrep: Number of tile repetitions in y direction.
- @type tileyrep: integer
-
- @ivar drawingmode: Drawing mode for the material.
- - 2 (drawingmode & 4) Textured
- - 4 (drawingmode & 16) Light
- - 14 (drawingmode & 16384) 3d Polygon Text
- @type drawingmode: bitfield
-
- @ivar transparent: This material is transparent. All meshes with this
- material will be rendered after non transparent meshes from back
- to front.
- @type transparent: boolean
-
- @ivar zsort: Transparent polygons in meshes with this material will be sorted back to
- front before rendering.
- Non-Transparent polygons will be sorted front to back before rendering.
- @type zsort: boolean
-
- @ivar lightlayer: Light layers this material affects.
- @type lightlayer: bitfield.
-
- @ivar triangle: Mesh data with this material is triangles. It's probably not safe to change this.
- @type triangle: boolean
-
- @ivar diffuse: The diffuse colour of the material. black = [0.0, 0.0, 0.0] white = [1.0, 1.0, 1.0]
- @type diffuse: list [r, g, b]
- @ivar specular: The specular colour of the material. black = [0.0, 0.0, 0.0] white = [1.0, 1.0, 1.0]
- @type specular: list [r, g, b]
- @ivar shininess: The shininess (specular exponent) of the material. 0.0 <= shininess <= 128.0
- @type shininess: float
- @ivar specularity: The amount of specular of the material. 0.0 <= specularity <= 1.0
- @type specularity: float
- """
- def updateTexture(tface, rasty):
- """
- Updates a realtime animation.
-
- @param tface: Texture face (eg mat.tface)
- @type tface: CObject
- @param rasty: Rasterizer
- @type rasty: CObject
- """
- def setTexture(tface):
- """
- Sets texture render state.
-
- Example::
- mat.setTexture(mat.tface)
-
- @param tface: Texture face
- @type tface: CObject
- """
- def activate(rasty, cachingInfo):
- """
- Sets material parameters for this object for rendering.
-
- Material Parameters set:
- 1. Texture
- 2. Backface culling
- 3. Line drawing
- 4. Specular Colour
- 5. Shininess
- 6. Diffuse Colour
- 7. Polygon Offset.
-
- @param rasty: Rasterizer instance.
- @type rasty: CObject
- @param cachingInfo: Material cache instance.
- @type cachingInfo: CObject
- """
- def setCustomMaterial(material):
- """
- Sets the material state setup object.
-
- Using this method, you can extend or completely replace the gameengine material
- to do your own advanced multipass effects.
-
- Use this method to register your material class. Instead of the normal material,
- your class's activate method will be called just before rendering the mesh.
- This should setup the texture, material, and any other state you would like.
- It should return True to render the mesh, or False if you are finished. You should
- clean up any state Blender does not set before returning False.
-
- Activate Method Definition::
- def activate(self, rasty, cachingInfo, material):
-
- Example::
- class PyMaterial:
- def __init__(self):
- self.pass_no = -1
-
- def activate(self, rasty, cachingInfo, material):
- # Activate the material here.
- #
- # The activate method will be called until it returns False.
- # Every time the activate method returns True the mesh will
- # be rendered.
- #
- # rasty is a CObject for passing to material.updateTexture()
- # and material.activate()
- # cachingInfo is a CObject for passing to material.activate()
- # material is the KX_PolygonMaterial instance this material
- # was added to
-
- # default material properties:
- self.pass_no += 1
- if self.pass_no == 0:
- material.activate(rasty, cachingInfo)
- # Return True to do this pass
- return True
-
- # clean up and return False to finish.
- self.pass_no = -1
- return False
-
- # Create a new Python Material and pass it to the renderer.
- mat.setCustomMaterial(PyMaterial())
-
- @param material: The material object.
- @type material: instance
- """
-
diff --git a/source/gameengine/PyDoc/KX_RadarSensor.py b/source/gameengine/PyDoc/KX_RadarSensor.py
deleted file mode 100644
index b68bf4ea0f3..00000000000
--- a/source/gameengine/PyDoc/KX_RadarSensor.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Id$
-# Documentation for KX_RadarSensor
-from KX_NearSensor import *
-
-class KX_RadarSensor(KX_NearSensor):
- """
- Radar sensor is a near sensor with a conical sensor object.
-
- @ivar coneOrigin: The origin of the cone with which to test. The origin
- is in the middle of the cone.
- (Read only)
- @type coneOrigin: list of floats [x, y, z]
- @ivar coneTarget: The center of the bottom face of the cone with which to test.
- (Read only)
- @type coneTarget: list of floats [x, y, z]
- @ivar distance: The height of the cone with which to test.
- @type distance: float
- @ivar angle: The angle of the cone (in degrees) with which to test.
- @type angle: float from 0 to 360
- @ivar axis: The axis on which the radar cone is cast
- @type axis: int from 0 to 5
- KX_RADAR_AXIS_POS_X, KX_RADAR_AXIS_POS_Y, KX_RADAR_AXIS_POS_Z,
- KX_RADAR_AXIS_NEG_X, KX_RADAR_AXIS_NEG_Y, KX_RADAR_AXIS_NEG_Z
- """
-
-
- #--The following methods are deprecated, please use properties instead.
- def getConeOrigin():
- """
- Returns the origin of the cone with which to test. The origin
- is in the middle of the cone.
-
- @rtype: list [x, y, z]
- """
-
- def getConeTarget():
- """
- Returns the center of the bottom face of the cone with which to test.
-
- @rtype: list [x, y, z]
- """
-
- def getConeHeight():
- """
- Returns the height of the cone with which to test.
-
- @rtype: float
- """
-
diff --git a/source/gameengine/PyDoc/KX_RaySensor.py b/source/gameengine/PyDoc/KX_RaySensor.py
deleted file mode 100644
index b9de54e92a5..00000000000
--- a/source/gameengine/PyDoc/KX_RaySensor.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# $Id$
-# Documentation for KX_RaySensor
-from SCA_ISensor import *
-
-class KX_RaySensor(SCA_ISensor):
- """
- A ray sensor detects the first object in a given direction.
-
- @ivar property: The property the ray is looking for.
- @type property: string
- @ivar range: The distance of the ray.
- @type range: float
- @ivar useMaterial: Whether or not to look for a material (false = property)
- @type useMaterial: boolean
- @ivar useXRay: Whether or not to use XRay.
- @type useXRay: boolean
- @ivar hitObject: The game object that was hit by the ray. (Read-only)
- @type hitObject: KX_GameObject
- @ivar hitPosition: The position (in worldcoordinates) where the object was hit by the ray. (Read-only)
- @type hitPosition: list [x, y, z]
- @ivar hitNormal: The normal (in worldcoordinates) of the object at the location where the object was hit by the ray. (Read-only)
- @type hitNormal: list [x, y, z]
- @ivar rayDirection: The direction from the ray (in worldcoordinates). (Read-only)
- @type rayDirection: list [x, y, z]
- @ivar axis: The axis the ray is pointing on.
- @type axis: int from 0 to 5
- KX_RAY_AXIS_POS_X, KX_RAY_AXIS_POS_Y, KX_RAY_AXIS_POS_Z,
- KX_RAY_AXIS_NEG_X, KX_RAY_AXIS_NEG_Y, KX_RAY_AXIS_NEG_Z
- """
-
- def getHitObject():
- """
- DEPRECATED: Use the hitObject property instead.
- Returns the game object that was hit by this ray.
-
- @rtype: KX_GameObject
- """
- def getHitPosition():
- """
- DEPRECATED: Use the hitPosition property instead.
- Returns the position (in worldcoordinates) where the object was hit by this ray.
-
- @rtype: list [x, y, z]
- """
- def getHitNormal():
- """
- DEPRECATED: Use the hitNormal property instead.
- Returns the normal (in worldcoordinates) of the object at the location where the object was hit by this ray.
-
- @rtype: list [nx, ny, nz]
- """
- def getRayDirection():
- """
- DEPRECATED: Use the rayDirection property instead.
- Returns the direction from the ray (in worldcoordinates)
-
- @rtype: list [dx, dy, dz]
- """
diff --git a/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py b/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py
deleted file mode 100644
index 572b864ff0a..00000000000
--- a/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# $Id$
-# Documentation for KX_SCA_AddObjectActuator
-from SCA_IActuator import *
-
-class KX_SCA_AddObjectActuator(SCA_IActuator):
- """
- Edit Object Actuator (in Add Object Mode)
- @ivar object: the object this actuator adds.
- @type object: KX_GameObject or None
- @ivar objectLastCreated: the last added object from this actuator (read only).
- @type objectLastCreated: KX_GameObject or None
- @ivar time: the lifetime of added objects, in frames.
- @type time: integer
- @ivar linearVelocity: the initial linear velocity of added objects.
- @type linearVelocity: list [vx, vy, vz]
- @ivar angularVelocity: the initial angular velocity of added objects.
- @type angularVelocity: list [vx, vy, vz]
-
- @warning: An Add Object actuator will be ignored if at game start, the linked object doesn't exist
- (or is empty) or the linked object is in an active layer.
-
- This will genereate a warning in the console:
-
- C{ERROR: GameObject I{OBName} has a AddObjectActuator I{ActuatorName} without object (in 'nonactive' layer)}
- """
- def setObject(object):
- """
- DEPRECATED: use the object property
- Sets the game object to add.
-
- A copy of the object will be added to the scene when the actuator is activated.
-
- If the object does not exist, this function is ignored.
-
- object can either be a L{KX_GameObject} or the name of an object or None.
-
- @type object: L{KX_GameObject}, string or None
- """
- def getObject(name_only = 0):
- """
- DEPRECATED: use the object property
- Returns the name of the game object to be added.
-
- Returns None if no game object has been assigned to be added.
- @type name_only: bool
- @param name_only: optional argument, when 0 return a KX_GameObject
- @rtype: string, KX_GameObject or None if no object is set
- """
- def setTime(time):
- """
- DEPRECATED: use the time property
- Sets the lifetime of added objects, in frames.
-
- If time == 0, the object will last forever.
-
- @type time: integer
- @param time: The minimum value for time is 0.
- """
- def getTime():
- """
- DEPRECATED: use the time property
- Returns the lifetime of the added object, in frames.
-
- @rtype: integer
- """
- def setLinearVelocity(vx, vy, vz):
- """
- DEPRECATED: use the linearVelocity property
- Sets the initial linear velocity of added objects.
-
- @type vx: float
- @param vx: the x component of the initial linear velocity.
- @type vy: float
- @param vy: the y component of the initial linear velocity.
- @type vz: float
- @param vz: the z component of the initial linear velocity.
- """
- def getLinearVelocity():
- """
- DEPRECATED: use the linearVelocity property
- Returns the initial linear velocity of added objects.
-
- @rtype: list [vx, vy, vz]
- """
- def setAngularVelocity(vx, vy, vz):
- """
- DEPRECATED: use the angularVelocity property
- Sets the initial angular velocity of added objects.
-
- @type vx: float
- @param vx: the x component of the initial angular velocity.
- @type vy: float
- @param vy: the y component of the initial angular velocity.
- @type vz: float
- @param vz: the z component of the initial angular velocity.
- """
- def getAngularVelocity():
- """
- DEPRECATED: use the angularVelocity property
- Returns the initial angular velocity of added objects.
-
- @rtype: list [vx, vy, vz]
- """
- def getLastCreatedObject():
- """
- DEPRECATED: use the objectLastCreated property
- Returns the last object created by this actuator.
-
- @rtype: L{KX_GameObject}
- @return: A L{KX_GameObject} or None if no object has been created.
- """
- def instantAddObject():
- """
- Returns the last object created by this actuator. The object can then be accessed from L{objectLastCreated}.
-
- @rtype: None
- """
-
diff --git a/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py b/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py
deleted file mode 100644
index 22da159ce71..00000000000
--- a/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# $Id$
-# Documentation for KX_SCA_DynamicActuator
-from SCA_IActuator import *
-
-class KX_SCA_DynamicActuator(SCA_IActuator):
- """
- Dynamic Actuator.
- @ivar operation: the type of operation of the actuator, 0-4
- KX_DYN_RESTORE_DYNAMICS, KX_DYN_DISABLE_DYNAMICS,
- KX_DYN_ENABLE_RIGID_BODY, KX_DYN_DISABLE_RIGID_BODY, KX_DYN_SET_MASS
- @type operation: integer
- @ivar mass: the mass value for the KX_DYN_SET_MASS operation
- @type mass: float
- """
- def setOperation(operation):
- """
- DEPRECATED: Use the operation property instead.
- Set the type of operation when the actuator is activated:
- - 0 = restore dynamics
- - 1 = disable dynamics
- - 2 = enable rigid body
- - 3 = disable rigid body
- - 4 = set mass
- """
- def getOperation():
- """
- DEPRECATED: Use the operation property instead.
- return the type of operation
- """
-
diff --git a/source/gameengine/PyDoc/KX_SCA_EndObjectActuator.py b/source/gameengine/PyDoc/KX_SCA_EndObjectActuator.py
deleted file mode 100644
index 8a7c79bb52b..00000000000
--- a/source/gameengine/PyDoc/KX_SCA_EndObjectActuator.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for KX_SCA_EndObjectActuator
-from SCA_IActuator import *
-
-class KX_SCA_EndObjectActuator(SCA_IActuator):
- """
- Edit Object Actuator (in End Object mode)
-
- This actuator has no python methods.
- """
-
diff --git a/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py b/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py
deleted file mode 100644
index 951c118a99a..00000000000
--- a/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# $Id$
-# Documentation for KX_SCA_ReplaceMeshActuator
-from SCA_IActuator import *
-
-class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
- """
- Edit Object actuator, in Replace Mesh mode.
-
- Example::
- # Level-of-detail
- # Switch a game object's mesh based on its depth in the camera view.
- # +----------+ +-----------+ +-------------------------------------+
- # | Always +-----+ Python +-----+ Edit Object (Replace Mesh) LOD.Mesh |
- # +----------+ +-----------+ +-------------------------------------+
- import GameLogic
-
- # List detail meshes here
- # Mesh (name, near, far)
- # Meshes overlap so that they don't 'pop' when on the edge of the distance.
- meshes = ((".Hi", 0.0, -20.0),
- (".Med", -15.0, -50.0),
- (".Lo", -40.0, -100.0)
- )
-
- co = GameLogic.getCurrentController()
- obj = co.getOwner()
- act = co.getActuator("LOD." + obj.name)
- cam = GameLogic.getCurrentScene().active_camera
-
- def Depth(pos, plane):
- return pos[0]*plane[0] + pos[1]*plane[1] + pos[2]*plane[2] + plane[3]
-
- # Depth is negative and decreasing further from the camera
- depth = Depth(obj.position, cam.world_to_camera[2])
-
- newmesh = None
- curmesh = None
- # Find the lowest detail mesh for depth
- for mesh in meshes:
- if depth < mesh[1] and depth > mesh[2]:
- newmesh = mesh
- if "ME" + obj.name + mesh[0] == act.getMesh():
- curmesh = mesh
-
- if newmesh != None and "ME" + obj.name + newmesh[0] != act.getMesh():
- # The mesh is a different mesh - switch it.
- # Check the current mesh is not a better fit.
- if curmesh == None or curmesh[1] < depth or curmesh[2] > depth:
- act.setMesh(obj.getName() + newmesh[0])
- GameLogic.addActiveActuator(act, True)
-
- @warning: Replace mesh actuators will be ignored if at game start, the
- named mesh doesn't exist.
-
- This will generate a warning in the console:
-
- C{ERROR: GameObject I{OBName} ReplaceMeshActuator I{ActuatorName} without object}
-
- @ivar mesh: L{KX_MeshProxy} or the name of the mesh that will replace the current one
- Set to None to disable actuator
- @type mesh: L{KX_MeshProxy} or None if no mesh is set
- """
- def setMesh(name):
- """
- DEPRECATED: Use the mesh property instead.
- Sets the name of the mesh that will replace the current one.
- When the name is None it will unset the mesh value so no action is taken.
-
- @type name: string or None
- """
- def getMesh():
- """
- DEPRECATED: Use the mesh property instead.
- Returns the name of the mesh that will replace the current one.
-
- Returns None if no mesh has been scheduled to be added.
-
- @rtype: string or None
- """
- def instantReplaceMesh():
- """
- Immediately replace mesh without delay.
- @rtype: None
- """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/KX_Scene.py b/source/gameengine/PyDoc/KX_Scene.py
deleted file mode 100644
index 5dcd560ee96..00000000000
--- a/source/gameengine/PyDoc/KX_Scene.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# $Id$
-# Documentation for KX_Scene.py
-
-class KX_Scene:
- """
- Scene.
-
- The activity culling stuff is supposed to disable logic bricks when their owner gets too far
- from the active camera. It was taken from some code lurking at the back of KX_Scene - who knows
- what it does!
-
- Example::
- import GameLogic
-
- # get the scene
- scene = GameLogic.getCurrentScene()
-
- # print all the objects in the scene
- for obj in scene.objects:
- print obj.name
-
- # get an object named 'Cube'
- obj = scene.objects["OBCube"]
-
- # get the first object in the scene.
- obj = scene.objects[0]
-
- Example::
- # Get the depth of an object in the camera view.
- import GameLogic
-
- obj = GameLogic.getCurrentController().getOwner()
- cam = GameLogic.getCurrentScene().active_camera
-
- # Depth is negative and decreasing further from the camera
- depth = obj.position[0]*cam.world_to_camera[2][0] + obj.position[1]*cam.world_to_camera[2][1] + obj.position[2]*cam.world_to_camera[2][2] + cam.world_to_camera[2][3]
-
- @bug: All attributes are read only at the moment.
-
- @ivar name: The scene's name
- @type name: string
- @ivar objects: A list of objects in the scene.
- @type objects: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
- @ivar active_camera: The current active camera
- @type active_camera: L{KX_Camera}
- @ivar suspended: True if the scene is suspended.
- @type suspended: boolean
- @ivar activity_culling: True if the scene is activity culling
- @type activity_culling: boolean
- @ivar activity_culling_radius: The distance outside which to do activity culling. Measured in manhattan distance.
- @type activity_culling_radius: float
- """
-
- def getLightList():
- """
- Returns the list of lights in the scene.
-
- @rtype: list [L{KX_LightObject}]
- """
- def getObjectList():
- """
- Returns the list of objects in the scene.
-
- @rtype: list [L{KX_GameObject}]
- """
- def getName():
- """
- Returns the name of the scene.
-
- @rtype: string
- """
-
- def addObject(object, other, time=0):
- """
- Adds an object to the scene like the Add Object Actuator would, and returns the created object.
-
- @param object: The object to add
- @type object: L{KX_GameObject} or string
- @param other: The object's center to use when adding the object
- @type other: L{KX_GameObject} or string
- @param time: The lifetime of the added object, in frames. A time of 0 means the object will last forever.
- @type time: int
-
- @rtype: L{KX_GameObject}
- """
diff --git a/source/gameengine/PyDoc/KX_SceneActuator.py b/source/gameengine/PyDoc/KX_SceneActuator.py
deleted file mode 100644
index 6e27257533e..00000000000
--- a/source/gameengine/PyDoc/KX_SceneActuator.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-# Documentation for KX_SceneActuator
-from SCA_IActuator import *
-
-class KX_SceneActuator(SCA_IActuator):
- """
- Scene Actuator logic brick.
-
- @warning: Scene actuators that use a scene name will be ignored if at game start, the
- named scene doesn't exist or is empty
-
- This will generate a warning in the console:
-
- C{ERROR: GameObject I{OBName} has a SceneActuator I{ActuatorName} (SetScene) without scene}
-
- @ivar scene: the name of the scene to change to/overlay/underlay/remove/suspend/resume
- @type scene: string.
- @ivar camera: the camera to change to.
- When setting the attribute, you can use either a L{KX_Camera} or the name of the camera.
- @type camera: L{KX_Camera} on read, string or L{KX_Camera} on write
- """
- def setUseRestart(flag):
- """
- DEPRECATED
- Set flag to True to restart the scene.
-
- @type flag: boolean
- """
- def setScene(scene):
- """
- DEPRECATED: use the scene property instead
- Sets the name of the scene to change to/overlay/underlay/remove/suspend/resume.
-
- @type scene: string
- """
- def setCamera(camera):
- """
- DEPRECATED: use the camera property instead
- Sets the camera to change to.
-
- Camera can be either a L{KX_Camera} or the name of the camera.
-
- @type camera: L{KX_Camera} or string
- """
- def getUseRestart():
- """
- DEPRECATED
- Returns True if the scene will be restarted.
-
- @rtype: boolean
- """
- def getScene():
- """
- DEPRECATED: use the scene property instead
- Returns the name of the scene to change to/overlay/underlay/remove/suspend/resume.
-
- Returns an empty string ("") if no scene has been set.
-
- @rtype: string
- """
- def getCamera():
- """
- DEPRECATED: use the camera property instead
- Returns the name of the camera to change to.
-
- @rtype: string
- """
diff --git a/source/gameengine/PyDoc/KX_SoundActuator.py b/source/gameengine/PyDoc/KX_SoundActuator.py
deleted file mode 100644
index 37ae3c6640d..00000000000
--- a/source/gameengine/PyDoc/KX_SoundActuator.py
+++ /dev/null
@@ -1,195 +0,0 @@
-# $Id$
-# Documentation for KX_SoundActuator
-from SCA_IActuator import *
-
-class KX_SoundActuator(SCA_IActuator):
- """
- Sound Actuator.
-
- The L{startSound()}, L{pauseSound()} and L{stopSound()} do not require
- the actuator to be activated - they act instantly provided that the actuator has
- been activated once at least.
-
- @ivar filename: Sets the filename of the sound this actuator plays.
- @type filename: string
-
- @ivar volume: Sets the volume (gain) of the sound.
- @type volume: float
-
- @ivar pitch: Sets the pitch of the sound.
- @type pitch: float
-
- @ivar rollOffFactor: Sets the roll off factor. Rolloff defines the rate of attenuation as the sound gets further away.
- @type rollOffFactor: float
-
- @ivar looping: Sets the loop mode of the actuator.
- @type looping: integer
-
- @ivar position: Sets the position of the sound.
- @type position: float array
-
- @ivar velocity: Sets the speed of the sound; The speed of the sound alter the pitch.
- @type velocity: float array
-
- @ivar orientation: Sets the orientation of the sound. When setting the orientation you can
- also use quaternion [float,float,float,float] or euler angles [float,float,float]
- @type orientation: 3x3 matrix [[float]]
-
- @ivar type: Sets the operation mode of the actuator. You can use one of the following constant:
- KX_SOUNDACT_PLAYSTOP (1)
- KX_SOUNDACT_PLAYEND (2)
- KX_SOUNDACT_LOOPSTOP (3)
- KX_SOUNDACT_LOOPEND (4)
- KX_SOUNDACT_LOOPBIDIRECTIONAL (5)
- KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP (6)
- @type type: integer
-
- @group Play Methods: startSound, pauseSound, stopSound.
- """
- def setFilename(filename):
- """
- DEPRECATED: Use the filename property instead.
- Sets the filename of the sound this actuator plays.
-
- @type filename: string
- """
- def getFilename():
- """
- DEPRECATED: Use the filename property instead.
- Returns the filename of the sound this actuator plays.
-
- @rtype: string
- """
- def startSound():
- """
- Starts the sound.
- """
- def pauseSound():
- """
- Pauses the sound.
- """
- def stopSound():
- """
- Stops the sound.
- """
- def setGain(gain):
- """
- DEPRECATED: Use the volume property instead
- Sets the gain (volume) of the sound
-
- @type gain: float
- @param gain: 0.0 (quiet) <= gain <= 1.0 (loud)
- """
- def getGain():
- """
- DEPRECATED: Use the volume property instead.
- Gets the gain (volume) of the sound.
-
- @rtype: float
- """
- def setPitch(pitch):
- """
- DEPRECATED: Use the pitch property instead.
- Sets the pitch of the sound.
-
- @type pitch: float
- """
- def getPitch():
- """
- DEPRECATED: Use the pitch property instead.
- Returns the pitch of the sound.
-
- @rtype: float
- """
- def setRollOffFactor(rolloff):
- """
- DEPRECATED: Use the rollOffFactor property instead.
- Sets the rolloff factor for the sounds.
-
- Rolloff defines the rate of attenuation as the sound gets further away.
- Higher rolloff factors shorten the distance at which the sound can be heard.
-
- @type rolloff: float
- """
- def getRollOffFactor():
- """
- DEPRECATED: Use the rollOffFactor property instead.
- Returns the rolloff factor for the sound.
-
- @rtype: float
- """
- def setLooping(loop):
- """
- DEPRECATED: Use the looping property instead.
- Sets the loop mode of the actuator.
-
- @bug: There are no constants defined for this method!
- @param loop: - Play Stop 1
- - Play End 2
- - Loop Stop 3
- - Loop End 4
- - Bidirection Stop 5
- - Bidirection End 6
- @type loop: integer
- """
- def getLooping():
- """
- DEPRECATED: Use the looping property instead.
- Returns the current loop mode of the actuator.
-
- @rtype: integer
- """
- def setPosition(x, y, z):
- """
- DEPRECATED: Use the position property instead.
- Sets the position this sound will come from.
-
- @type x: float
- @param x: The x coordinate of the sound.
- @type y: float
- @param y: The y coordinate of the sound.
- @type z: float
- @param z: The z coordinate of the sound.
- """
- def setVelocity(vx, vy, vz):
- """
- DEPRECATED: Use the velocity property instead.
- Sets the velocity this sound is moving at.
-
- The sound's pitch is determined from the velocity.
-
- @type vx: float
- @param vx: The vx coordinate of the sound.
- @type vy: float
- @param vy: The vy coordinate of the sound.
- @type vz: float
- @param vz: The vz coordinate of the sound.
- """
- def setOrientation(o11, o12, o13, o21, o22, o23, o31, o32, o33):
- """
- DEPRECATED: Use the orientation property instead.
- Sets the orientation of the sound.
-
- The nine parameters specify a rotation matrix::
- | o11, o12, o13 |
- | o21, o22, o23 |
- | o31, o32, o33 |
- """
-
- def setType(mode):
- """
- DEPRECATED: Use the type property instead.
- Sets the operation mode of the actuator.
-
- @param mode: KX_SOUNDACT_PLAYSTOP, KX_SOUNDACT_PLAYEND, KX_SOUNDACT_LOOPSTOP, KX_SOUNDACT_LOOPEND, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP
- @type mode: integer
- """
-
- def getType():
- """
- DEPRECATED: Use the type property instead.
- Returns the operation mode of the actuator.
-
- @rtype: integer
- @return: KX_SOUNDACT_PLAYSTOP, KX_SOUNDACT_PLAYEND, KX_SOUNDACT_LOOPSTOP, KX_SOUNDACT_LOOPEND, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP
- """
diff --git a/source/gameengine/PyDoc/KX_StateActuator.py b/source/gameengine/PyDoc/KX_StateActuator.py
deleted file mode 100644
index fe3669d3809..00000000000
--- a/source/gameengine/PyDoc/KX_StateActuator.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# $Id$
-# Documentation for KX_StateActuator
-from SCA_IActuator import *
-
-class KX_StateActuator(SCA_IActuator):
- """
- State actuator changes the state mask of parent object.
-
- Property:
-
- @ivar operation: type of bit operation to be applied on object state mask.
- You can use one of the following constant:
- KX_STATE_OP_CPY (0) : Copy state mask
- KX_STATE_OP_SET (1) : Add bits to state mask
- KX_STATE_OP_CLR (2) : Substract bits to state mask
- KX_STATE_OP_NEG (3) : Invert bits to state mask
- @type operation: integer
-
- @ivar mask: value that defines the bits that will be modified by the operation.
- The bits that are 1 in the mask will be updated in the object state,
- the bits that are 0 are will be left unmodified expect for the Copy operation
- which copies the mask to the object state
- @type mask: integer
- """
- def setOperation(op):
- """
- DEPRECATED: Use the operation property instead.
- Set the type of bit operation to be applied on object state mask.
- Use setMask() to specify the bits that will be modified.
-
- @param op: bit operation (0=Copy, 1=Add, 2=Substract, 3=Invert)
- @type op: integer
- """
- def setMask(mask):
- """
- DEPRECATED: Use the mask property instead.
- Set the value that defines the bits that will be modified by the operation.
- The bits that are 1 in the value will be updated in the object state,
- the bits that are 0 are will be left unmodified expect for the Copy operation
- which copies the value to the object state.
-
- @param mask: bits that will be modified
- @type mask: integer
- """
diff --git a/source/gameengine/PyDoc/KX_TouchSensor.py b/source/gameengine/PyDoc/KX_TouchSensor.py
deleted file mode 100644
index f4fcbeefc62..00000000000
--- a/source/gameengine/PyDoc/KX_TouchSensor.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# $Id$
-# Documentation for KX_TouchSensor
-from SCA_ISensor import *
-from KX_GameObject import *
-
-class KX_TouchSensor(SCA_ISensor):
- """
- Touch sensor detects collisions between objects.
-
- @ivar property: The property or material to collide with.
- @type property: string
- @ivar useMaterial: Determines if the sensor is looking for a property or material.
- KX_True = Find material; KX_False = Find property
- @type useMaterial: boolean
- @ivar pulseCollisions: The last collided object.
- @type pulseCollisions: bool
- @ivar objectHit: The last collided object. (Read Only)
- @type objectHit: L{KX_GameObject} or None
- @ivar objectHitList: A list of colliding objects. (Read Only)
- @type objectHitList: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
- """
-
- #--The following methods are deprecated, please use properties instead.
- def setProperty(name):
- """
- DEPRECATED: use the property property
- Set the property or material to collide with. Use
- setTouchMaterial() to switch between properties and
- materials.
- @type name: string
- """
-
- def getProperty():
- """
- DEPRECATED: use the property property
- Returns the property or material to collide with. Use
- getTouchMaterial() to find out whether this sensor
- looks for properties or materials. (B{deprecated})
-
- @rtype: string
- """
- def getHitObject():
- """
- DEPRECATED: use the objectHit property
- Returns the last object hit by this touch sensor. (B{deprecated})
-
- @rtype: L{KX_GameObject}
- """
- def getHitObjectList():
- """
- DEPRECATED: use the objectHitList property
- Returns a list of all objects hit in the last frame. (B{deprecated})
-
- Only objects that have the requisite material/property are listed.
-
- @rtype: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
- """
- def getTouchMaterial():
- """
- DEPRECATED: use the useMaterial property
- Returns KX_TRUE if this sensor looks for a specific material,
- KX_FALSE if it looks for a specific property. (B{deprecated})
- """
diff --git a/source/gameengine/PyDoc/KX_TrackToActuator.py b/source/gameengine/PyDoc/KX_TrackToActuator.py
deleted file mode 100644
index ee2dc5d6144..00000000000
--- a/source/gameengine/PyDoc/KX_TrackToActuator.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-# Documentation for KX_TrackToActuator
-from SCA_IActuator import *
-
-class KX_TrackToActuator(SCA_IActuator):
- """
- Edit Object actuator in Track To mode.
-
- @warning: Track To Actuators will be ignored if at game start, the
- object to track to is invalid.
-
- This will generate a warning in the console:
-
- C{ERROR: GameObject I{OBName} no object in EditObjectActuator I{ActuatorName}}
-
- @ivar object: the object this actuator tracks.
- @type object: KX_GameObject or None
- @ivar time: the time in frames with which to delay the tracking motion
- @type time: integer
- @ivar use3D: the tracking motion to use 3D
- @type use3D: boolean
-
- """
- def setObject(object):
- """
- DEPRECATED: Use the object property.
- Sets the object to track.
-
- @type object: L{KX_GameObject}, string or None
- @param object: Either a reference to a game object or the name of the object to track.
- """
- def getObject(name_only):
- """
- DEPRECATED: Use the object property.
- Returns the name of the object to track.
-
- @type name_only: bool
- @param name_only: optional argument, when 0 return a KX_GameObject
- @rtype: string, KX_GameObject or None if no object is set
- """
- def setTime(time):
- """
- DEPRECATED: Use the time property.
- Sets the time in frames with which to delay the tracking motion.
-
- @type time: integer
- """
- def getTime():
- """
- DEPRECATED: Use the time property.
- Returns the time in frames with which the tracking motion is delayed.
-
- @rtype: integer
- """
- def setUse3D(use3d):
- """
- DEPRECATED: Use the use3D property.
- Sets the tracking motion to use 3D.
-
- @type use3d: boolean
- @param use3d: - True: allow the tracking motion to extend in the z-direction.
- - False: lock the tracking motion to the x-y plane.
- """
- def getUse3D():
- """
- DEPRECATED: Use the use3D property.
- Returns True if the tracking motion will track in the z direction.
-
- @rtype: boolean
- """
diff --git a/source/gameengine/PyDoc/KX_VehicleWrapper.py b/source/gameengine/PyDoc/KX_VehicleWrapper.py
deleted file mode 100644
index 087aa167475..00000000000
--- a/source/gameengine/PyDoc/KX_VehicleWrapper.py
+++ /dev/null
@@ -1,166 +0,0 @@
-class KX_VehicleWrapper: # (PyObjectPlus)
- """
- KX_VehicleWrapper
-
- All placeholders have a __ prefix
- """
-
- def addWheel(wheel, attachPos, attachDir, axleDir, suspensionRestLength, wheelRadius, hasSteering):
-
- """
- TODO - Description
-
- @param wheel: The object to use as a wheel.
- @type wheel: L{KX_GameObject<KX_GameObject.KX_GameObject>} or a KX_GameObject name
- @param attachPos: The position that this wheel will attach to.
- @type attachPos: vector of 3 floats
- @param attachDir: The direction this wheel points.
- @type attachDir: vector of 3 floats
- @param axleDir: The direction of this wheels axle.
- @type axleDir: vector of 3 floats
- @param suspensionRestLength: TODO - Description
- @type suspensionRestLength: float
- @param wheelRadius: The size of the wheel.
- @type wheelRadius: float
- """
-
- def __applyBraking(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __applyEngineForce(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getConstraintId(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getConstraintType(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getNumWheels(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getWheelOrientationQuaternion(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getWheelPosition(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __getWheelRotation(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setRollInfluence(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setSteeringValue(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setSuspensionCompression(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setSuspensionDamping(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setSuspensionStiffness(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
- def __setTyreFriction(val):
- """
- TODO - Description
-
- @param val: the starting frame of the animation
- @type val: float
-
- @rtype: integer
- @return: TODO Description
- """
diff --git a/source/gameengine/PyDoc/KX_VertexProxy.py b/source/gameengine/PyDoc/KX_VertexProxy.py
deleted file mode 100644
index 7ee5087b316..00000000000
--- a/source/gameengine/PyDoc/KX_VertexProxy.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# $Id$
-# Documentation for the vertex proxy class
-
-class KX_VertexProxy:
- """
- A vertex holds position, UV, colour and normal information.
-
- Note:
- The physics simulation is NOT currently updated - physics will not respond
- to changes in the vertex position.
-
- @ivar XYZ: The position of the vertex.
- @type XYZ: list [x, y, z]
- @ivar UV: The texture coordinates of the vertex.
- @type UV: list [u, v]
- @ivar normal: The normal of the vertex
- @type normal: list [nx, ny, nz]
- @ivar colour: The colour of the vertex.
- Black = [0.0, 0.0, 0.0, 1.0], White = [1.0, 1.0, 1.0, 1.0]
- @type colour: list [r, g, b, a]
- @ivar color: Synonym for colour.
-
- @group Position: x, y, z
- @ivar x: The x coordinate of the vertex.
- @type x: float
- @ivar y: The y coordinate of the vertex.
- @type y: float
- @ivar z: The z coordinate of the vertex.
- @type z: float
-
- @group Texture Coordinates: u, v
- @ivar u: The u texture coordinate of the vertex.
- @type u: float
- @ivar v: The v texture coordinate of the vertex.
- @type v: float
-
- @ivar u2: The second u texture coordinate of the vertex.
- @type u2: float
- @ivar v2: The second v texture coordinate of the vertex.
- @type v2: float
-
- @group Colour: r, g, b, a
- @ivar r: The red component of the vertex colour. 0.0 <= r <= 1.0
- @type r: float
- @ivar g: The green component of the vertex colour. 0.0 <= g <= 1.0
- @type g: float
- @ivar b: The blue component of the vertex colour. 0.0 <= b <= 1.0
- @type b: float
- @ivar a: The alpha component of the vertex colour. 0.0 <= a <= 1.0
- @type a: float
- """
-
- def getXYZ():
- """
- Gets the position of this vertex.
-
- @rtype: list [x, y, z]
- @return: this vertexes position in local coordinates.
- """
- def setXYZ(pos):
- """
- Sets the position of this vertex.
-
- @type pos: list [x, y, z]
- @param pos: the new position for this vertex in local coordinates.
- """
- def getUV():
- """
- Gets the UV (texture) coordinates of this vertex.
-
- @rtype: list [u, v]
- @return: this vertexes UV (texture) coordinates.
- """
- def setUV(uv):
- """
- Sets the UV (texture) coordinates of this vertex.
-
- @type uv: list [u, v]
- """
- def getUV2():
- """
- Gets the 2nd UV (texture) coordinates of this vertex.
-
- @rtype: list [u, v]
- @return: this vertexes UV (texture) coordinates.
- """
- def setUV2(uv):
- """
- Sets the 2nd UV (texture) coordinates of this vertex.
-
- @type uv: list [u, v]
- """
- def getRGBA():
- """
- Gets the colour of this vertex.
-
- The colour is represented as four bytes packed into an integer value. The colour is
- packed as RGBA.
-
- Since Python offers no way to get each byte without shifting, you must use the struct module to
- access colour in an machine independent way.
-
- Because of this, it is suggested you use the r, g, b and a attributes or the colour attribute instead.
-
- Example::
- import struct;
- col = struct.unpack('4B', struct.pack('I', v.getRGBA()))
- # col = (r, g, b, a)
- # black = ( 0, 0, 0, 255)
- # white = (255, 255, 255, 255)
-
- @rtype: integer
- @return: packed colour. 4 byte integer with one byte per colour channel in RGBA format.
- """
- def setRGBA(col):
- """
- Sets the colour of this vertex.
-
- See getRGBA() for the format of col, and its relevant problems. Use the r, g, b and a attributes
- or the colour attribute instead.
-
- setRGBA() also accepts a four component list as argument col. The list represents the colour as [r, g, b, a]
- with black = [0.0, 0.0, 0.0, 1.0] and white = [1.0, 1.0, 1.0, 1.0]
-
- Example::
- v.setRGBA(0xff0000ff) # Red
- v.setRGBA(0xff00ff00) # Green on little endian, transparent purple on big endian
- v.setRGBA([1.0, 0.0, 0.0, 1.0]) # Red
- v.setRGBA([0.0, 1.0, 0.0, 1.0]) # Green on all platforms.
-
- @type col: integer or list [r, g, b, a]
- @param col: the new colour of this vertex in packed RGBA format.
- """
- def getNormal():
- """
- Gets the normal vector of this vertex.
-
- @rtype: list [nx, ny, nz]
- @return: normalised normal vector.
- """
- def setNormal(normal):
- """
- Sets the normal vector of this vertex.
-
- @type normal: sequence of floats [r, g, b]
- @param normal: the new normal of this vertex.
- """
-
diff --git a/source/gameengine/PyDoc/KX_VisibilityActuator.py b/source/gameengine/PyDoc/KX_VisibilityActuator.py
deleted file mode 100644
index 36f25b2423c..00000000000
--- a/source/gameengine/PyDoc/KX_VisibilityActuator.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# $Id$
-# Documentation for KX_VisibilityActuator
-from SCA_IActuator import *
-
-class KX_VisibilityActuator(SCA_IActuator):
- """
- Visibility Actuator.
- @ivar visibility: whether the actuator makes its parent object visible or invisible
- @type visibility: boolean
- @ivar occlusion: whether the actuator makes its parent object an occluder or not
- @type occlusion: boolean
- @ivar recursion: whether the visibility/occlusion should be propagated to all children of the object
- @type recursion: boolean
- """
- def set(visible):
- """
- DEPRECATED: Use the visibility property instead.
- Sets whether the actuator makes its parent object visible or invisible.
-
- @param visible: - True: Makes its parent visible.
- - False: Makes its parent invisible.
- """
diff --git a/source/gameengine/PyDoc/Rasterizer.py b/source/gameengine/PyDoc/Rasterizer.py
index 6a67cdcc71b..bafcfece473 100644
--- a/source/gameengine/PyDoc/Rasterizer.py
+++ b/source/gameengine/PyDoc/Rasterizer.py
@@ -43,7 +43,6 @@ Example Uses an L{SCA_MouseSensor}, and two L{KX_ObjectActuator}s to implement M
@var KX_BLENDER_GLSL_MATERIAL: Materials approximating blender materials with GLSL.
"""
-
def getWindowWidth():
"""
Gets the width of the window (in pixels)
@@ -105,6 +104,13 @@ def setMistColor(rgb):
@type rgb: list [r, g, b]
"""
+
+def setAmbientColor(rgb):
+ """
+ Sets the color of ambient light.
+
+ @type rgb: list [r, g, b]
+ """
def setMistStart(start):
"""
@@ -121,6 +127,13 @@ def setMistEnd(end):
@type end: float
"""
+def disableMist():
+ """
+ Disables mist.
+
+ @note: Set any of the mist properties to enable mist.
+ """
+
def setEyeSeparation(eyesep):
"""
Sets the eye separation for stereo mode.
@@ -194,3 +207,15 @@ def drawLine(fromVec,toVec,color):
@type color: list [r, g, b]
"""
+def enableMotionBlur(factor):
+ """
+ Enable the motion blue effect.
+
+ @param factor: the ammount of motion blur to display.
+ @type factor: float [0.0 - 1.0]
+ """
+
+def disableMotionBlur():
+ """
+ Disable the motion blue effect.
+ """
diff --git a/source/gameengine/PyDoc/SCA_2DFilterActuator.py b/source/gameengine/PyDoc/SCA_2DFilterActuator.py
deleted file mode 100644
index 9a010e8f221..00000000000
--- a/source/gameengine/PyDoc/SCA_2DFilterActuator.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# $Id$
-# Documentation for SCA_2DFilterActuator
-from SCA_IActuator import *
-from SCA_ILogicBrick import *
-
-class SCA_2DFilterActuator(SCA_IActuator):
- """
- Create, enable and disable 2D filters
-
- Properties:
-
- The following properties don't have an immediate effect.
- You must active the actuator to get the result.
- The actuator is not persistent: it automatically stops itself after setting up the filter
- but the filter remains active. To stop a filter you must activate the actuator with 'type'
- set to RAS_2DFILTER_DISABLED or RAS_2DFILTER_NOFILTER.
-
- @ivar shaderText: shader source code for custom shader
- @type shaderText: string
- @ivar disableMotionBlur: action on motion blur: 0=enable, 1=disable
- @type disableMotionBlur: integer
- @ivar type: type of 2D filter, use one of the following constants:
- RAS_2DFILTER_ENABLED (-2) : enable the filter that was previously disabled
- RAS_2DFILTER_DISABLED (-1) : disable the filter that is currently active
- RAS_2DFILTER_NOFILTER (0) : disable and destroy the filter that is currently active
- RAS_2DFILTER_MOTIONBLUR (1) : create and enable preset filters
- RAS_2DFILTER_BLUR (2)
- RAS_2DFILTER_SHARPEN (3)
- RAS_2DFILTER_DILATION (4)
- RAS_2DFILTER_EROSION (5)
- RAS_2DFILTER_LAPLACIAN (6)
- RAS_2DFILTER_SOBEL (7)
- RAS_2DFILTER_PREWITT (8)
- RAS_2DFILTER_GRAYSCALE (9)
- RAS_2DFILTER_SEPIA (10)
- RAS_2DFILTER_INVERT (11)
- RAS_2DFILTER_CUSTOMFILTER (12) : customer filter, the code code is set via shaderText property
- @type type: integer
- @ivar passNb: order number of filter in the stack of 2D filters. Filters are executed in increasing order of passNb.
- Only be one filter can be defined per passNb.
- @type passNb: integer (0-100)
- @ivar value: argument for motion blur filter
- @type value: float (0.0-100.0)
- """
diff --git a/source/gameengine/PyDoc/SCA_ANDController.py b/source/gameengine/PyDoc/SCA_ANDController.py
deleted file mode 100644
index 1717e613595..00000000000
--- a/source/gameengine/PyDoc/SCA_ANDController.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for SCA_ANDController
-from SCA_IController import *
-
-class SCA_ANDController(SCA_IController):
- """
- An AND controller activates only when all linked sensors are activated.
-
- There are no special python methods for this controller.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_ActuatorSensor.py b/source/gameengine/PyDoc/SCA_ActuatorSensor.py
deleted file mode 100644
index 515354e8716..00000000000
--- a/source/gameengine/PyDoc/SCA_ActuatorSensor.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id$
-# Documentation for SCA_ActuatorSensor
-from SCA_IActuator import *
-from SCA_ISensor import *
-from SCA_ILogicBrick import *
-
-class SCA_ActuatorSensor(SCA_ISensor):
- """
- Actuator sensor detect change in actuator state of the parent object.
- It generates a positive pulse if the corresponding actuator is activated
- and a negative pulse if the actuator is deactivated.
-
- Properties:
-
- @ivar actuator: the name of the actuator that the sensor is monitoring.
- @type actuator: string
- """
- def getActuator():
- """
- DEPRECATED: use the actuator property
- Return the Actuator with which the sensor operates.
-
- @rtype: string
- """
- def setActuator(name):
- """
- DEPRECATED: use the actuator property
- Sets the Actuator with which to operate. If there is no Actuator
- of this name, the function has no effect.
-
- @param name: actuator name
- @type name: string
- """
diff --git a/source/gameengine/PyDoc/SCA_AlwaysSensor.py b/source/gameengine/PyDoc/SCA_AlwaysSensor.py
deleted file mode 100644
index 54ab07a8a99..00000000000
--- a/source/gameengine/PyDoc/SCA_AlwaysSensor.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# $Id$
-# Documentation for SCA_AlwaysSensor
-from SCA_ISensor import *
-
-class SCA_AlwaysSensor(SCA_ISensor):
- """
- This sensor is always activated.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_DelaySensor.py b/source/gameengine/PyDoc/SCA_DelaySensor.py
deleted file mode 100644
index 6560df6573e..00000000000
--- a/source/gameengine/PyDoc/SCA_DelaySensor.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# $Id$
-# Documentation for SCA_DelaySensor
-from SCA_ISensor import *
-
-class SCA_DelaySensor(SCA_ISensor):
- """
- The Delay sensor generates positive and negative triggers at precise time,
- expressed in number of frames. The delay parameter defines the length
- of the initial OFF period. A positive trigger is generated at the end of this period.
- The duration parameter defines the length of the ON period following the OFF period.
- There is a negative trigger at the end of the ON period. If duration is 0, the sensor
- stays ON and there is no negative trigger.
- The sensor runs the OFF-ON cycle once unless the repeat option is set: the
- OFF-ON cycle repeats indefinately (or the OFF cycle if duration is 0).
- Use SCA_ISensor::reset() at any time to restart sensor.
-
- Properties:
-
- @ivar delay: length of the initial OFF period as number of frame, 0 for immediate trigger.
- @type delay: integer.
- @ivar duration: length of the ON period in number of frame after the initial OFF period.
- If duration is greater than 0, a negative trigger is sent at the end of the ON pulse.
- @type duration: integer
- @ivar repeat: 1 if the OFF-ON cycle should be repeated indefinately, 0 if it should run once.
- @type repeat: integer
- """
- def setDelay(delay):
- """
- DEPRECATED: use the delay property
- Set the initial delay before the positive trigger.
-
- @param delay: length of the initial OFF period as number of frame, 0 for immediate trigger
- @type delay: integer
- """
- def setDuration(duration):
- """
- DEPRECATED: use the duration property
- Set the duration of the ON pulse after initial delay and the generation of the positive trigger.
- If duration is greater than 0, a negative trigger is sent at the end of the ON pulse.
-
- @param duration: length of the ON period in number of frame after the initial OFF period
- @type duration: integer
- """
- def setRepeat(repeat):
- """
- DEPRECATED: use the repeat property
- Set if the sensor repeat mode.
-
- @param repeat: 1 if the OFF-ON cycle should be repeated indefinately, 0 if it should run once.
- @type repeat: integer
- """
- def getDelay():
- """
- DEPRECATED: use the delay property
- Return the delay parameter value.
-
- @rtype: integer
- """
- def getDuration():
- """
- DEPRECATED: use the duration property
- Return the duration parameter value
-
- @rtype: integer
- """
- def getRepeat():
- """
- DEPRECATED: use the repeat property
- Return the repeat parameter value
-
- @rtype: KX_TRUE or KX_FALSE
- """
diff --git a/source/gameengine/PyDoc/SCA_IActuator.py b/source/gameengine/PyDoc/SCA_IActuator.py
deleted file mode 100644
index ac47c15dc78..00000000000
--- a/source/gameengine/PyDoc/SCA_IActuator.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# $Id$
-# Documentation for SCA_IActuator
-from SCA_ILogicBrick import *
-
-class SCA_IActuator(SCA_ILogicBrick):
- """
- Base class for all actuator logic bricks.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_IController.py b/source/gameengine/PyDoc/SCA_IController.py
deleted file mode 100644
index f83e7c97dce..00000000000
--- a/source/gameengine/PyDoc/SCA_IController.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# $Id$
-# Documentation for KX_CameraActuator
-from SCA_ILogicBrick import *
-
-class SCA_IController(SCA_ILogicBrick):
- """
- Base class for all controller logic bricks.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_ILogicBrick.py b/source/gameengine/PyDoc/SCA_ILogicBrick.py
deleted file mode 100644
index 4688ba12bb6..00000000000
--- a/source/gameengine/PyDoc/SCA_ILogicBrick.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-# Documentation for the logic brick base class SCA_ILogicBrick
-from KX_GameObject import *
-
-class SCA_ILogicBrick:
- """
- Base class for all logic bricks.
-
- @ivar executePriority: This determines the order controllers are evaluated, and actuators are activated (lower priority is executed first).
- @type executePriority: int
- @ivar owner: The game object this logic brick is attached to (read only).
- @type owner: L{KX_GameObject<KX_GameObject.KX_GameObject>} or None in exceptional cases.
- """
-
- def getOwner():
- """
- Gets the game object associated with this logic brick.
-
- Deprecated: Use the "owner" property instead.
-
- @rtype: L{KX_GameObject<KX_GameObject.KX_GameObject>}
- """
-
- #--The following methods are deprecated--
- def setExecutePriority(priority):
- """
- Sets the priority of this logic brick.
-
- This determines the order controllers are evaluated, and actuators are activated.
- Bricks with lower priority will be executed first.
-
- Deprecated: Use the "executePriority" property instead.
-
- @type priority: integer
- @param priority: the priority of this logic brick.
- """
- def getExecutePriority():
- """
- Gets the execution priority of this logic brick.
-
- Deprecated: Use the "executePriority" property instead.
-
- @rtype: integer
- @return: this logic bricks current priority.
- """
diff --git a/source/gameengine/PyDoc/SCA_ISensor.py b/source/gameengine/PyDoc/SCA_ISensor.py
deleted file mode 100644
index ab35996aa50..00000000000
--- a/source/gameengine/PyDoc/SCA_ISensor.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# $Id$
-# Documentation for SCA_ISensor
-from SCA_ILogicBrick import *
-
-class SCA_ISensor(SCA_ILogicBrick):
- """
- Base class for all sensor logic bricks.
-
- @ivar usePosPulseMode: Flag to turn positive pulse mode on and off.
- @type usePosPulseMode: boolean
- @ivar useNegPulseMode: Flag to turn negative pulse mode on and off.
- @type useNegPulseMode: boolean
- @ivar frequency: The frequency for pulse mode sensors.
- @type frequency: int
- @ivar level: Flag to set whether to detect level or edge transition when entering a state.
- It makes a difference only in case of logic state transition (state actuator).
- A level detector will immediately generate a pulse, negative or positive
- depending on the sensor condition, as soon as the state is activated.
- A edge detector will wait for a state change before generating a pulse.
- @type level: boolean
- @ivar invert: Flag to set if this sensor activates on positive or negative events.
- @type invert: boolean
- @ivar triggered: True if this sensor brick is in a positive state. (Read only)
- @type triggered: boolean
- @ivar positive: True if this sensor brick is in a positive state. (Read only)
- @type positive: boolean
- """
-
- def reset():
- """
- Reset sensor internal state, effect depends on the type of sensor and settings.
-
- The sensor is put in its initial state as if it was just activated.
- """
-
- #--The following methods are deprecated--
- def isPositive():
- """
- True if this sensor brick is in a positive state.
- """
-
- def isTriggered():
- """
- True if this sensor brick has triggered the current controller.
- """
-
- def getUsePosPulseMode():
- """
- True if the sensor is in positive pulse mode.
- """
- def setUsePosPulseMode(pulse):
- """
- Sets positive pulse mode.
-
- @type pulse: boolean
- @param pulse: If True, will activate positive pulse mode for this sensor.
- """
- def getFrequency():
- """
- The frequency for pulse mode sensors.
-
- @rtype: integer
- @return: the pulse frequency in 1/50 sec.
- """
- def setFrequency(freq):
- """
- Sets the frequency for pulse mode sensors.
-
- @type freq: integer
- @return: the pulse frequency in 1/50 sec.
- """
- def getUseNegPulseMode():
- """
- True if the sensor is in negative pulse mode.
- """
- def setUseNegPulseMode(pulse):
- """
- Sets negative pulse mode.
-
- @type pulse: boolean
- @param pulse: If True, will activate negative pulse mode for this sensor.
- """
- def getInvert():
- """
- True if this sensor activates on negative events.
- """
- def setInvert(invert):
- """
- Sets if this sensor activates on positive or negative events.
-
- @type invert: boolean
- @param invert: true if activates on negative events; false if activates on positive events.
- """
- def getLevel():
- """
- Returns whether this sensor is a level detector or a edge detector.
- It makes a difference only in case of logic state transition (state actuator).
- A level detector will immediately generate a pulse, negative or positive
- depending on the sensor condition, as soon as the state is activated.
- A edge detector will wait for a state change before generating a pulse.
-
- @rtype: boolean
- @return: true if sensor is level sensitive, false if it is edge sensitive
- """
- def setLevel(level):
- """
- Set whether to detect level or edge transition when entering a state.
-
- @param level: Detect level instead of edge? (KX_TRUE, KX_FALSE)
- @type level: boolean
- """
diff --git a/source/gameengine/PyDoc/SCA_JoystickSensor.py b/source/gameengine/PyDoc/SCA_JoystickSensor.py
deleted file mode 100644
index 13b006e8dd6..00000000000
--- a/source/gameengine/PyDoc/SCA_JoystickSensor.py
+++ /dev/null
@@ -1,169 +0,0 @@
-# $Id$
-# Documentation for SCA_RandomSensor
-from SCA_ISensor import *
-
-class SCA_JoystickSensor(SCA_ISensor):
- """
- This sensor detects player joystick events.
-
- Properties:
-
- @ivar axisValues: (read-only) The state of the joysticks axis as a list of values L{numAxis} long.
- each spesifying the value of an axis between -32767 and 32767 depending on how far the axis is pushed, 0 for nothing.
- The first 2 values are used by most joysticks and gamepads for directional control. 3rd and 4th values are only on some joysticks and can be used for arbitary controls.
- left:[-32767, 0, ...], right:[32767, 0, ...], up:[0, -32767, ...], down:[0, 32767, ...]
- @type axisValues: list of ints
-
- @ivar axisSingle: (read-only) like L{axisValues} but returns a single axis value that is set by the sensor.
- Only use this for "Single Axis" type sensors otherwise it will raise an error.
- @type axisSingle: int
-
- @ivar numAxis: (read-only) The number of axes for the joystick at this index.
- @type numAxis: integer
- @ivar numButtons: (read-only) The number of buttons for the joystick at this index.
- @type numButtons: integer
- @ivar numHats: (read-only) The number of hats for the joystick at this index.
- @type numHats: integer
- @ivar connected: (read-only) True if a joystick is connected at this joysticks index.
- @type connected: boolean
- @ivar index: The joystick index to use (from 0 to 7). The first joystick is always 0.
- @type index: integer
- @ivar threshold: Axis threshold. Joystick axis motion below this threshold wont trigger an event. Use values between (0 and 32767), lower values are more sensitive.
- @type threshold: integer
- @ivar button: The button index the sensor reacts to (first button = 0). When the "All Events" toggle is set, this option has no effect.
- @type button: integer
- @ivar axis: The axis this sensor reacts to, as a list of two values [axisIndex, axisDirection]
- axisIndex: the axis index to use when detecting axis movement, 1=primary directional control, 2=secondary directional control.
- axisDirection: 0=right, 1=up, 2=left, 3=down
- @type axis: [integer, integer]
- @ivar hat: The hat the sensor reacts to, as a list of two values: [hatIndex, hatDirection]
- hatIndex: the hat index to use when detecting hat movement, 1=primary hat, 2=secondary hat.
- hatDirection: 0-11
- @type hat: [integer, integer]
- """
-
- def getButtonActiveList():
- """
- Returns a list containing the indicies of the currently pressed buttons.
- @rtype: list
- """
- def getButtonStatus(buttonIndex):
- """
- Returns a bool of the current pressed state of the specified button.
- @param buttonIndex: the button index, 0=first button
- @type buttonIndex: integer
- @rtype: bool
- """
- def getIndex():
- """
- DEPRECATED: use the 'index' property.
- Returns the joystick index to use (from 1 to 8).
- @rtype: integer
- """
- def setIndex(index):
- """
- DEPRECATED: use the 'index' property.
- Sets the joystick index to use.
- @param index: The index of this joystick sensor, Clamped between 1 and 8.
- @type index: integer
- @note: This is only useful when you have more then 1 joystick connected to your computer - multiplayer games.
- """
- def getAxis():
- """
- DEPRECATED: use the 'axis' property.
- Returns the current axis this sensor reacts to. See L{getAxisValue()<SCA_JoystickSensor.getAxisValue>} for the current axis state.
- @rtype: list
- @return: 2 values returned are [axisIndex, axisDirection] - see L{setAxis()<SCA_JoystickSensor.setAxis>} for their purpose.
- @note: When the "All Events" toggle is set, this option has no effect.
- """
- def setAxis(axisIndex, axisDirection):
- """
- DEPRECATED: use the 'axis' property.
- @param axisIndex: Set the axis index to use when detecting axis movement.
- @type axisIndex: integer from 1 to 2
- @param axisDirection: Set the axis direction used for detecting motion. 0:right, 1:up, 2:left, 3:down.
- @type axisDirection: integer from 0 to 3
- @note: When the "All Events" toggle is set, this option has no effect.
- """
- def getAxisValue():
- """
- DEPRECATED: use the 'axisPosition' property.
- Returns the state of the joysticks axis. See differs to L{getAxis()<SCA_JoystickSensor.getAxis>} returning the current state of the joystick.
- @rtype: list
- @return: 4 values, each spesifying the value of an axis between -32767 and 32767 depending on how far the axis is pushed, 0 for nothing.
-
- The first 2 values are used by most joysticks and gamepads for directional control. 3rd and 4th values are only on some joysticks and can be used for arbitary controls.
-
- left:[-32767, 0, ...], right:[32767, 0, ...], up:[0, -32767, ...], down:[0, 32767, ...]
- @note: Some gamepads only set the axis on and off like a button.
- """
- def getThreshold():
- """
- DEPRECATED: use the 'threshold' property.
- Get the axis threshold. See L{setThreshold()<SCA_JoystickSensor.setThreshold>} for details.
- @rtype: integer
- """
- def setThreshold(threshold):
- """
- DEPRECATED: use the 'threshold' property.
- Set the axis threshold.
- @param threshold: Joystick axis motion below this threshold wont trigger an event. Use values between (0 and 32767), lower values are more sensitive.
- @type threshold: integer
- """
- def getButton():
- """
- DEPRECATED: use the 'button' property.
- Returns the button index the sensor reacts to. See L{getButtonValue()<SCA_JoystickSensor.getButtonValue>} for a list of pressed buttons.
- @rtype: integer
- @note: When the "All Events" toggle is set, this option has no effect.
- """
- def setButton(index):
- """
- DEPRECATED: use the 'button' property.
- Sets the button index the sensor reacts to when the "All Events" option is not set.
- @note: When the "All Events" toggle is set, this option has no effect.
- """
- def getButtonValue():
- """
- DEPRECATED: use the 'getButtonActiveList' method.
- Returns a list containing the indicies of the currently pressed buttons.
- @rtype: list
- """
- def getHat():
- """
- DEPRECATED: use the 'hat' property.
- Returns the current hat direction this sensor is set to.
- [hatNumber, hatDirection].
- @rtype: list
- @note: When the "All Events" toggle is set, this option has no effect.
- """
- def setHat(index,direction):
- """
- DEPRECATED: use the 'hat' property.
- Sets the hat index the sensor reacts to when the "All Events" option is not set.
- @type index: integer
- """
- def getNumAxes():
- """
- DEPRECATED: use the 'numAxis' property.
- Returns the number of axes for the joystick at this index.
- @rtype: integer
- """
- def getNumButtons():
- """
- DEPRECATED: use the 'numButtons' property.
- Returns the number of buttons for the joystick at this index.
- @rtype: integer
- """
- def getNumHats():
- """
- DEPRECATED: use the 'numHats' property.
- Returns the number of hats for the joystick at this index.
- @rtype: integer
- """
- def isConnected():
- """
- DEPRECATED: use the 'connected' property.
- Returns True if a joystick is detected at this joysticks index.
- @rtype: bool
- """
diff --git a/source/gameengine/PyDoc/SCA_KeyboardSensor.py b/source/gameengine/PyDoc/SCA_KeyboardSensor.py
deleted file mode 100644
index 8abb1fda762..00000000000
--- a/source/gameengine/PyDoc/SCA_KeyboardSensor.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# $Id$
-# Documentation for SCA_KeyboardSensor
-from SCA_ISensor import *
-
-class SCA_KeyboardSensor(SCA_ISensor):
- """
- A keyboard sensor detects player key presses.
-
- See module L{GameKeys} for keycode values.
-
- @ivar key: The key code this sensor is looking for.
- @type key: keycode from L{GameKeys} module
- @ivar hold1: The key code for the first modifier this sensor is looking for.
- @type hold1: keycode from L{GameKeys} module
- @ivar hold2: The key code for the second modifier this sensor is looking for.
- @type hold2: keycode from L{GameKeys} module
- @ivar toggleProperty: The name of the property that indicates whether or not to log keystrokes as a string.
- @type toggleProperty: string
- @ivar targetProperty: The name of the property that receives keystrokes in case in case a string is logged.
- @type targetProperty: string
- @ivar useAllKeys: Flag to determine whether or not to accept all keys.
- @type useAllKeys: boolean
- @ivar events: a list of pressed keys that have either been pressed, or just released, or are active this frame. (read only).
-
- - 'keycode' matches the values in L{GameKeys}.
- - 'status' uses...
- - L{GameLogic.KX_INPUT_NONE}
- - L{GameLogic.KX_INPUT_JUST_ACTIVATED}
- - L{GameLogic.KX_INPUT_ACTIVE}
- - L{GameLogic.KX_INPUT_JUST_RELEASED}
-
- @type events: list [[keycode, status], ...]
- """
-
- def getKeyStatus(keycode):
- """
- Get the status of a key.
-
- @rtype: key state L{GameLogic} members (KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED)
- @return: The state of the given key
- @type keycode: integer
- @param keycode: The code that represents the key you want to get the state of
- """
-
- #--The following methods are DEPRECATED--
- def getKey():
- """
- Returns the key code this sensor is looking for.
-
- B{DEPRECATED: Use the "key" property instead}.
-
- @rtype: keycode from L{GameKeys} module
- """
-
- def setKey(keycode):
- """
- Set the key this sensor should listen for.
-
- B{DEPRECATED: Use the "key" property instead}.
-
- @type keycode: keycode from L{GameKeys} module
- """
-
- def getHold1():
- """
- Returns the key code for the first modifier this sensor is looking for.
-
- B{DEPRECATED: Use the "hold1" property instead}.
-
- @rtype: keycode from L{GameKeys} module
- """
-
- def setHold1(keycode):
- """
- Sets the key code for the first modifier this sensor should look for.
-
- B{DEPRECATED: Use the "hold1" property instead}.
-
- @type keycode: keycode from L{GameKeys} module
- """
-
- def getHold2():
- """
- Returns the key code for the second modifier this sensor is looking for.
-
- B{DEPRECATED: Use the "hold2" property instead}.
-
- @rtype: keycode from L{GameKeys} module
- """
-
- def setHold2(keycode):
- """
- Sets the key code for the second modifier this sensor should look for.
-
- B{DEPRECATED: Use the "hold2" property instead.}
-
- @type keycode: keycode from L{GameKeys} module
- """
-
- def getPressedKeys():
- """
- Get a list of keys that have either been pressed, or just released this frame.
-
- B{DEPRECATED: Use "events" instead.}
-
- @rtype: list of key status. [[keycode, status]]
- """
-
- def getCurrentlyPressedKeys():
- """
- Get a list of currently pressed keys that have either been pressed, or just released
-
- B{DEPRECATED: Use "events" instead.}
-
- @rtype: list of key status. [[keycode, status]]
- """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/SCA_MouseSensor.py b/source/gameengine/PyDoc/SCA_MouseSensor.py
deleted file mode 100644
index 278ebe63b8a..00000000000
--- a/source/gameengine/PyDoc/SCA_MouseSensor.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# $Id$
-# Documentation for SCA_MouseSensor
-from SCA_ISensor import *
-
-class SCA_MouseSensor(SCA_ISensor):
- """
- Mouse Sensor logic brick.
-
- Properties:
-
- @ivar position: current [x,y] coordinates of the mouse, in frame coordinates (pixels)
- @type position: [integer,interger]
- @ivar mode: sensor mode: 1=KX_MOUSESENSORMODE_LEFTBUTTON 2=KX_MOUSESENSORMODE_MIDDLEBUTTON
- 3=KX_MOUSESENSORMODE_RIGHTBUTTON 4=KX_MOUSESENSORMODE_WHEELUP
- 5=KX_MOUSESENSORMODE_WHEELDOWN 9=KX_MOUSESENSORMODE_MOVEMENT
- @type mode: integer
- """
-
- def getXPosition():
- """
- DEPRECATED: use the position property
- Gets the x coordinate of the mouse.
-
- @rtype: integer
- @return: the current x coordinate of the mouse, in frame coordinates (pixels)
- """
- def getYPosition():
- """
- DEPRECATED: use the position property
- Gets the y coordinate of the mouse.
-
- @rtype: integer
- @return: the current y coordinate of the mouse, in frame coordinates (pixels).
- """
- def getButtonStatus(button):
- """
- Get the mouse button status.
-
- @type button: int
- @param button: value in GameLogic members KX_MOUSE_BUT_LEFT, KX_MOUSE_BUT_MIDDLE, KX_MOUSE_BUT_RIGHT
-
- @rtype: integer
- @return: value in GameLogic members KX_INPUT_NONE, KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED
- """
diff --git a/source/gameengine/PyDoc/SCA_NANDController.py b/source/gameengine/PyDoc/SCA_NANDController.py
deleted file mode 100644
index a864ff2981c..00000000000
--- a/source/gameengine/PyDoc/SCA_NANDController.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for SCA_NANDController
-from SCA_IController import *
-
-class SCA_NANDController(SCA_IController):
- """
- An NAND controller activates when all linked sensors are not active.
-
- There are no special python methods for this controller.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_NORController.py b/source/gameengine/PyDoc/SCA_NORController.py
deleted file mode 100644
index 0bc0a71d7b1..00000000000
--- a/source/gameengine/PyDoc/SCA_NORController.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for SCA_NORController
-from SCA_IController import *
-
-class SCA_NORController(SCA_IController):
- """
- An NOR controller activates only when all linked sensors are de-activated.
-
- There are no special python methods for this controller.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_ORController.py b/source/gameengine/PyDoc/SCA_ORController.py
deleted file mode 100644
index eeeb9de3afe..00000000000
--- a/source/gameengine/PyDoc/SCA_ORController.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for SCA_ORController
-from SCA_IController import *
-
-class SCA_ORController(SCA_IController):
- """
- An OR controller activates when any connected sensor activates.
-
- There are no special python methods for this controller.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_PropertyActuator.py b/source/gameengine/PyDoc/SCA_PropertyActuator.py
deleted file mode 100644
index 52aefcae651..00000000000
--- a/source/gameengine/PyDoc/SCA_PropertyActuator.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Id$
-# Documentation for SCA_PropertyActuator
-from SCA_IActuator import *
-
-class SCA_PropertyActuator(SCA_IActuator):
- """
- Property Actuator
-
- Properties:
-
- @ivar property: the property on which to operate.
- @type property: string
- @ivar value: the value with which the actuator operates.
- @type value: string
- """
- def setProperty(prop):
- """
- DEPRECATED: use the 'property' property
- Set the property on which to operate.
-
- If there is no property of this name, the call is ignored.
-
- @type prop: string
- @param prop: The name of the property to set.
- """
- def getProperty():
- """
- DEPRECATED: use the 'property' property
- Returns the name of the property on which to operate.
-
- @rtype: string
- """
- def setValue(value):
- """
- DEPRECATED: use the 'value' property
- Set the value with which the actuator operates.
-
- If the value is not compatible with the type of the
- property, the subsequent action is ignored.
-
- @type value: string
- """
- def getValue():
- """
- DEPRECATED: use the 'value' property
- Gets the value with which this actuator operates.
-
- @rtype: string
- """
diff --git a/source/gameengine/PyDoc/SCA_PropertySensor.py b/source/gameengine/PyDoc/SCA_PropertySensor.py
deleted file mode 100644
index 949ffd3b703..00000000000
--- a/source/gameengine/PyDoc/SCA_PropertySensor.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# $Id$
-# Documentation for SCA_PropertySensor
-from SCA_ISensor import *
-
-class SCA_PropertySensor(SCA_ISensor):
- """
- Activates when the game object property matches.
-
- Properties:
-
- @ivar type: type of check on the property:
- KX_PROPSENSOR_EQUAL(1), KX_PROPSENSOR_NOTEQUAL(2), KX_PROPSENSOR_INTERVAL(3),
- KX_PROPSENSOR_CHANGED(4), KX_PROPSENSOR_EXPRESSION(5)
- @type type: integer
- @ivar property: the property with which the sensor operates.
- @type property: string
- @ivar value: the value with which the sensor compares to the value of the property.
- @type value: string
- """
-
- def getType():
- """
- DEPRECATED: use the type property
- Gets when to activate this sensor.
-
- @return: KX_PROPSENSOR_EQUAL, KX_PROPSENSOR_NOTEQUAL,
- KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED,
- or KX_PROPSENSOR_EXPRESSION.
- """
-
- def setType(checktype):
- """
- DEPRECATED: use the type property
- Set the type of check to perform.
-
- @type checktype: KX_PROPSENSOR_EQUAL, KX_PROPSENSOR_NOTEQUAL,
- KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED,
- or KX_PROPSENSOR_EXPRESSION.
- """
-
- def getProperty():
- """
- DEPRECATED: use the property property
- Return the property with which the sensor operates.
-
- @rtype: string
- @return: the name of the property this sensor is watching.
- """
- def setProperty(name):
- """
- DEPRECATED: use the property property
- Sets the property with which to operate. If there is no property
- of that name, this call is ignored.
-
- @type name: string.
- """
- def getValue():
- """
- DEPRECATED: use the value property
- Return the value with which the sensor compares to the value of the property.
-
- @rtype: string
- @return: the value of the property this sensor is watching.
- """
- def setValue(value):
- """
- DEPRECATED: use the value property
- Set the value with which the sensor operates. If the value
- is not compatible with the type of the property, the subsequent
- action is ignored.
-
- @type value: string
- """
-
diff --git a/source/gameengine/PyDoc/SCA_PythonController.py b/source/gameengine/PyDoc/SCA_PythonController.py
deleted file mode 100644
index 9684b41d481..00000000000
--- a/source/gameengine/PyDoc/SCA_PythonController.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id$
-# Documentation for SCA_PythonController
-from SCA_IController import *
-
-class SCA_PythonController(SCA_IController):
- """
- A Python controller uses a Python script to activate it's actuators,
- based on it's sensors.
-
- Properties:
-
- @ivar script: the Python script this controller executes
- @type script: string, read-only
- @ivar state: the controllers state bitmask.
- This can be used with the GameObject's state to test if the controller is active.
- @type state: integer
- """
- def activate(actuator):
- """
- Activates an actuator attached to this controller.
- @type actuator: actuator or the actuator name as a string
- """
- def deactivate(actuator):
- """
- Deactivates an actuator attached to this controller.
- @type actuator: actuator or the actuator name as a string
- """
-
- def getSensors():
- """
- Gets a list of all sensors attached to this controller.
-
- @rtype: list [L{SCA_ISensor}]
- """
- def getSensor(name):
- """
- Gets the named linked sensor.
-
- @type name: string
- @rtype: L{SCA_ISensor}
- """
- def getActuators():
- """
- Gets a list of all actuators linked to this controller.
-
- @rtype: list [L{SCA_IActuator}]
- """
- def getActuator(name):
- """
- Gets the named linked actuator.
-
- @type name: string
- @rtype: L{SCA_IActuator}
- """
- def getScript():
- """
- DEPRECATED: use the script property
- Gets the Python script this controller executes.
-
- @rtype: string
- """
- def setScript(script):
- """
- Sets the Python script this controller executes.
-
- @type script: string.
- """
- def getState():
- """
- DEPRECATED: use the state property
- Get the controllers state bitmask, this can be used with the GameObject's state to test if the the controller is active.
- This for instance will always be true however you could compare with a previous state to see when the state was activated.
- GameLogic.getCurrentController().getState() & GameLogic.getCurrentController().getOwner().getState()
-
- @rtype: int
- """
-
diff --git a/source/gameengine/PyDoc/SCA_RandomActuator.py b/source/gameengine/PyDoc/SCA_RandomActuator.py
deleted file mode 100644
index 000a1af7846..00000000000
--- a/source/gameengine/PyDoc/SCA_RandomActuator.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# $Id$
-# Documentation for SCA_RandomActuator
-from SCA_IActuator import *
-
-class SCA_RandomActuator(SCA_IActuator):
- """
- Random Actuator
-
- Properties:
-
- @ivar seed: Seed of the random number generator.
- Equal seeds produce equal series. If the seed is 0,
- the generator will produce the same value on every call.
- @type seed: integer
- @ivar para1: the first parameter of the active distribution.
- Refer to the documentation of the generator types for the meaning
- of this value.
- @type para1: float, read-only
- @ivar para2: the second parameter of the active distribution.
- Refer to the documentation of the generator types for the meaning
- of this value.
- @type para2: float, read-only
- @ivar distribution: distribution type:
- KX_RANDOMACT_BOOL_CONST, KX_RANDOMACT_BOOL_UNIFORM, KX_RANDOMACT_BOOL_BERNOUILLI,
- KX_RANDOMACT_INT_CONST, KX_RANDOMACT_INT_UNIFORM, KX_RANDOMACT_INT_POISSON,
- KX_RANDOMACT_FLOAT_CONST, KX_RANDOMACT_FLOAT_UNIFORM, KX_RANDOMACT_FLOAT_NORMAL,
- KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
- @type distribution: integer, read-only
- @ivar property: the name of the property to set with the random value.
- If the generator and property types do not match, the assignment is ignored.
- @type property: string
-
- """
- def setSeed(seed):
- """
- DEPRECATED: use the seed property
- Sets the seed of the random number generator.
-
- Equal seeds produce equal series. If the seed is 0,
- the generator will produce the same value on every call.
-
- @type seed: integer
- """
- def getSeed():
- """
- DEPRECATED: use the seed property
- Returns the initial seed of the generator.
-
- @rtype: integer
- """
- def getPara1():
- """
- DEPRECATED: use the para1 property
- Returns the first parameter of the active distribution.
-
- Refer to the documentation of the generator types for the meaning
- of this value.
-
- @rtype: float
- """
- def getPara2():
- """
- DEPRECATED: use the para2 property
- Returns the second parameter of the active distribution.
-
- Refer to the documentation of the generator types for the meaning
- of this value.
-
- @rtype: float
- """
- def getDistribution():
- """
- DEPRECATED: use the distribution property
- Returns the type of random distribution.
-
- @rtype: distribution type
- @return: KX_RANDOMACT_BOOL_CONST, KX_RANDOMACT_BOOL_UNIFORM, KX_RANDOMACT_BOOL_BERNOUILLI,
- KX_RANDOMACT_INT_CONST, KX_RANDOMACT_INT_UNIFORM, KX_RANDOMACT_INT_POISSON,
- KX_RANDOMACT_FLOAT_CONST, KX_RANDOMACT_FLOAT_UNIFORM, KX_RANDOMACT_FLOAT_NORMAL,
- KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
- """
- def setProperty(property):
- """
- DEPRECATED: use the property property
- Set the property to which the random value is assigned.
-
- If the generator and property types do not match, the assignment is ignored.
-
- @type property: string
- @param property: The name of the property to set.
- """
- def getProperty():
- """
- DEPRECATED: use the property property
- Returns the name of the property to set.
-
- @rtype: string
- """
- def setBoolConst(value):
- """
- Sets this generator to produce a constant boolean value.
-
- @param value: The value to return.
- @type value: boolean
- """
- def setBoolUniform():
- """
- Sets this generator to produce a uniform boolean distribution.
-
- The generator will generate True or False with 50% chance.
- """
- def setBoolBernouilli(value):
- """
- Sets this generator to produce a Bernouilli distribution.
-
- @param value: Specifies the proportion of False values to produce.
- - 0.0: Always generate True
- - 1.0: Always generate False
- @type value: float
- """
- def setIntConst(value):
- """
- Sets this generator to always produce the given value.
-
- @param value: the value this generator produces.
- @type value: integer
- """
- def setIntUniform(lower_bound, upper_bound):
- """
- Sets this generator to produce a random value between the given lower and
- upper bounds (inclusive).
-
- @type lower_bound: integer
- @type upper_bound: integer
- """
- def setIntPoisson(value):
- """
- Generate a Poisson-distributed number.
-
- This performs a series of Bernouilli tests with parameter value.
- It returns the number of tries needed to achieve succes.
-
- @type value: float
- """
- def setFloatConst(value):
- """
- Always generate the given value.
-
- @type value: float
- """
- def setFloatUniform(lower_bound, upper_bound):
- """
- Generates a random float between lower_bound and upper_bound with a
- uniform distribution.
-
- @type lower_bound: float
- @type upper_bound: float
- """
- def setFloatNormal(mean, standard_deviation):
- """
- Generates a random float from the given normal distribution.
-
- @type mean: float
- @param mean: The mean (average) value of the generated numbers
- @type standard_deviation: float
- @param standard_deviation: The standard deviation of the generated numbers.
- """
- def setFloatNegativeExponential(half_life):
- """
- Generate negative-exponentially distributed numbers.
-
- The half-life 'time' is characterized by half_life.
-
- @type half_life: float
- """
diff --git a/source/gameengine/PyDoc/SCA_RandomSensor.py b/source/gameengine/PyDoc/SCA_RandomSensor.py
deleted file mode 100644
index 6dc0a3c23c0..00000000000
--- a/source/gameengine/PyDoc/SCA_RandomSensor.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-# Documentation for SCA_RandomSensor
-from SCA_ISensor import *
-
-class SCA_RandomSensor(SCA_ISensor):
- """
- This sensor activates randomly.
-
- @ivar lastDraw: The seed of the random number generator.
- @type lastDraw: int
- @ivar seed: The seed of the random number generator.
- @type seed: int
- """
-
- def setSeed(seed):
- """
- Sets the seed of the random number generator.
-
- If the seed is 0, the generator will produce the same value on every call.
-
- @type seed: integer.
- """
- def getSeed():
- """
- Returns the initial seed of the generator. Equal seeds produce equal random
- series.
-
- @rtype: integer
- """
- def getLastDraw():
- """
- Returns the last random number generated.
-
- @rtype: integer
- """
diff --git a/source/gameengine/PyDoc/SCA_XNORController.py b/source/gameengine/PyDoc/SCA_XNORController.py
deleted file mode 100644
index 5fb2561f35a..00000000000
--- a/source/gameengine/PyDoc/SCA_XNORController.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for SCA_XNORController
-from SCA_IController import *
-
-class SCA_XNORController(SCA_IController):
- """
- An XNOR controller activates when all linked sensors are the same (activated or inative).
-
- There are no special python methods for this controller.
- """
-
diff --git a/source/gameengine/PyDoc/SCA_XORController.py b/source/gameengine/PyDoc/SCA_XORController.py
deleted file mode 100644
index 10e20fb0945..00000000000
--- a/source/gameengine/PyDoc/SCA_XORController.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-# Documentation for SCA_XORController
-from SCA_IController import *
-
-class SCA_XORController(SCA_IController):
- """
- An XOR controller activates when there is the input is mixed, but not when all are on or off.
-
- There are no special python methods for this controller.
- """
-
diff --git a/source/gameengine/PyDoc/WhatsNew.py b/source/gameengine/PyDoc/WhatsNew.py
deleted file mode 100644
index 4d86e6ef3c4..00000000000
--- a/source/gameengine/PyDoc/WhatsNew.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# $Id$
-"""
-New Python Functionality in this Version of Blender
-===================================================
-
-This document lists what has been changed in the Game Engine Python API.
-
-Blender CVS
- - Added L{KX_GameObject}.getDistanceTo() method. (thanks Charlie C)
- - Added L{KX_PolygonMaterial} module
-
-Blender 2.36
-------------
- - Added L{KX_CameraActuator} methods (thanks snail)
-
-Blender 2.35
-------------
- - Added tic rate methods to L{GameLogic}
- - Added stereo eye separation and focal length methods to L{Rasterizer}.
- - Fixed L{Rasterizer}.makeScreenshot() method.
- - Added setLogicTicRate() and setPhysicsTicRate() to L{GameLogic}
-
-Blender 2.34
-------------
-
- - Added getType() and setType() to L{BL_ActionActuator} and L{KX_SoundActuator} (sgefant)
- - New Scene module: L{KX_Scene}
- - New Camera module: L{KX_Camera}
- - New Light module: L{KX_LightObject}
- - Added attributes to L{KX_GameObject}, L{KX_VertexProxy}
- - L{KX_SCA_AddObjectActuator}.setObject(), L{KX_TrackToActuator}.setObject() and
- L{KX_SceneActuator}.setCamera() now accept L{KX_GameObject}s as parameters
-
-"""
diff --git a/source/gameengine/PyDoc/bge_api_validate_py.txt b/source/gameengine/PyDoc/bge_api_validate_py.txt
index 0920e5d3c7d..ebd74c06bb3 100644
--- a/source/gameengine/PyDoc/bge_api_validate_py.txt
+++ b/source/gameengine/PyDoc/bge_api_validate_py.txt
@@ -12,9 +12,17 @@
#
# Currently it only prints missing modules and methods (not attributes)
+import sys, os
BGE_API_DOC_PATH = 'source/gameengine/PyDoc'
+
+mods = ['GameLogic', 'Rasterizer', 'GameKeys']
+mods_dict = {}
+for m in mods:
+ mods_dict[m] = sys.modules[m]
+
+
import GameTypes
type_members = {}
@@ -34,7 +42,7 @@ for type_name in dir(GameTypes):
# print type_object.__name__ + '.' + k
members.append(member)
-import sys, os
+
doc_dir= os.path.join(os.getcwd(), BGE_API_DOC_PATH)
@@ -42,13 +50,12 @@ if doc_dir not in sys.path:
sys.path.append(doc_dir)
-def check_attribute(type_mame, member):
- filename = os.path.join(doc_dir, type_mame + '.py')
- # print filename
+def check_attribute(class_ob, member):
+ doc = class_ob.__doc__
+ if not doc:
+ return False
- file = open(filename, 'rU')
-
- for l in file:
+ for l in doc.split('\n'):
l = l.strip()
'''
@@ -58,14 +65,12 @@ def check_attribute(type_mame, member):
'''
- if l.startswith('@ivar'):
+ if l.startswith('@ivar') or l.startswith('@var'):
var = l.split()[1].split(':')[0]
if var == member:
- file.close()
return True
- file.close()
return False
@@ -77,20 +82,16 @@ print '\n\n\nChecking Docs'
PRINT_OK = False
+pymod = sys.modules['GameTypes']
+del sys.modules['GameTypes'] # temp remove
+mod = __import__('GameTypes') # get the python module
+reload(mod) # incase were editing it
+sys.modules['GameTypes'] = pymod
+
for type_name in sorted(type_members.keys()):
members = type_members[type_name]
try:
- mod = __import__(type_name)
- if PRINT_OK:
- print "type: %s" % type_name
- except:
- print "missing: %s - %s" % (type_name, str(sorted(members)))
- continue
-
- reload(mod) # incase were editing it
-
- try:
type_class = getattr(mod, type_name)
except:
print "missing class: %s.%s - %s" % (type_name, type_name, str(sorted(members)))
@@ -102,9 +103,34 @@ for type_name in sorted(type_members.keys()):
if PRINT_OK:
print "\tfound: %s.%s" % (type_name, member)
except:
- if check_attribute(type_name, member):
+ if check_attribute(type_class, member):
if PRINT_OK:
print "\tfound attr: %s.%s" % (type_name, member)
else:
print "\tmissing: %s.%s" % (type_name, member)
+
+# Now check the modules
+for mod_name, pymod in mods_dict.iteritems():
+ print pymod
+ del sys.modules[mod_name]
+
+ # Now well get the python version
+ pydoc = __import__(mod_name)
+ pydoc = reload(pydoc) # avoid using the out dated pyc file only
+ print pydoc.__file__
+
+ for member in sorted(dir(pymod)):
+ if hasattr(pydoc, member) or check_attribute(pydoc, member):
+ if PRINT_OK:
+ print "\tfound module attr: %s.%s" % (mod_name, member)
+ else:
+ print "\tmissing module attr: %s.%s" % (mod_name, member)
+
+ # Restore real module
+ sys.modules[mod_name] = pymod
+
+
+sys.path.pop() # remove the pydoc dir from our import paths
+
+
diff --git a/source/gameengine/PyDoc/epy_docgen.sh b/source/gameengine/PyDoc/epy_docgen.sh
index ddf39dcc081..dd30256f42f 100755
--- a/source/gameengine/PyDoc/epy_docgen.sh
+++ b/source/gameengine/PyDoc/epy_docgen.sh
@@ -7,5 +7,10 @@
# set posix locale so regex works properly for [A-Z]*.py
LC_ALL=POSIX
-epydoc --debug -v -o BPY_GE --url "http://www.blender.org" --top GameLogic \
- --name "Blender GameEngine" --no-private --no-frames --no-sourcecode --inheritance=included *.py
+epydoc --debug -v -o BPY_GE --url "http://www.blender.org" --top API_intro \
+ --name "Blender GameEngine" --no-private --no-sourcecode --inheritance=included \
+ *.py \
+ ../../../source/blender/python/api2_2x/doc/BGL.py \
+ ../../../source/blender/python/api2_2x/doc/Mathutils.py \
+ ../../../source/blender/python/api2_2x/doc/Geometry.py
+
diff --git a/source/gameengine/Rasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/CMakeLists.txt
index 6d53ee53471..143209f5a54 100644
--- a/source/gameengine/Rasterizer/CMakeLists.txt
+++ b/source/gameengine/Rasterizer/CMakeLists.txt
@@ -29,6 +29,8 @@ FILE(GLOB SRC *.cpp)
SET(INC
.
../../../source/kernel/gen_system
+ ../../../source/blender/makesdna
+ ../../../source/gameengine/SceneGraph
../../../intern/string
../../../intern/moto/include
../../../extern/glew/include
diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile
index 917f70c7108..eafa2ded2f2 100644
--- a/source/gameengine/Rasterizer/Makefile
+++ b/source/gameengine/Rasterizer/Makefile
@@ -40,6 +40,8 @@ CPPFLAGS += -I$(OPENGL_HEADERS)
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../kernel/gen_system
+CPPFLAGS += -I../../blender/makesdna
+CPPFLAGS += -I../SceneGraph
CPPFLAGS += -I../BlenderRoutines
CPPFLAGS += -I../Expressions
diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
index 176da51b183..239031866ca 100644
--- a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
@@ -63,11 +63,9 @@ numberoffilters(0), need_tex_update(true)
isshadersupported = GLEW_ARB_shader_objects &&
GLEW_ARB_fragment_shader && GLEW_ARB_multitexture;
+ /* used to return before 2.49 but need to initialize values so dont */
if(!isshadersupported)
- {
std::cout<<"shaders not supported!" << std::endl;
- return;
- }
int passindex;
for(passindex =0; passindex<MAX_RENDER_PASS; passindex++)
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
index ec290f89d9e..200b1c6c89f 100644
--- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
@@ -113,16 +113,26 @@ void RAS_BucketManager::OrderBuckets(const MT_Transform& cameratrans, BucketList
const MT_Vector3 pnorm(cameratrans.getBasis()[2]);
for (bit = buckets.begin(); bit != buckets.end(); ++bit)
- for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit)
- if (!mit->IsCulled())
- size++;
+ {
+ SG_DList::iterator<RAS_MeshSlot> mit((*bit)->GetActiveMeshSlots());
+ for(mit.begin(); !mit.end(); ++mit)
+ size++;
+ }
slots.resize(size);
for (bit = buckets.begin(); bit != buckets.end(); ++bit)
- for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit)
- if (!mit->IsCulled())
- slots[i++].set(&*mit, *bit, pnorm);
+ {
+ RAS_MaterialBucket* bucket = *bit;
+ RAS_MeshSlot* ms;
+ // remove the mesh slot form the list, it culls them automatically for next frame
+ for(ms = bucket->GetNextActiveMeshSlot();
+ ms!= NULL;
+ ms = bucket->GetNextActiveMeshSlot())
+ {
+ slots[i++].set(ms, bucket, pnorm);
+ }
+ }
if(alpha)
sort(slots.begin(), slots.end(), backtofront());
@@ -161,11 +171,28 @@ void RAS_BucketManager::RenderSolidBuckets(
const MT_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
{
BucketList::iterator bit;
- list<RAS_MeshSlot>::iterator mit;
rasty->SetDepthMask(RAS_IRasterizer::KX_DEPTHMASK_ENABLED);
for (bit = m_SolidBuckets.begin(); bit != m_SolidBuckets.end(); ++bit) {
+#if 1
+ RAS_MaterialBucket* bucket = *bit;
+ RAS_MeshSlot* ms;
+ // remove the mesh slot form the list, it culls them automatically for next frame
+ for(ms = bucket->GetNextActiveMeshSlot();
+ ms!= NULL;
+ ms = bucket->GetNextActiveMeshSlot())
+ {
+ rendertools->SetClientObject(rasty, ms->m_clientObj);
+ while (bucket->ActivateMaterial(cameratrans, rasty, rendertools))
+ bucket->RenderMeshSlot(cameratrans, rasty, rendertools, *ms);
+
+ // make this mesh slot culled automatically for next frame
+ // it will be culled out by frustrum culling
+ ms->SetCulled(true);
+ }
+#else
+ list<RAS_MeshSlot>::iterator mit;
for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit) {
if (mit->IsCulled())
continue;
@@ -179,6 +206,7 @@ void RAS_BucketManager::RenderSolidBuckets(
// it will be culled out by frustrum culling
mit->SetCulled(true);
}
+#endif
}
/* this code draws meshes order front-to-back instead to reduce overdraw.
@@ -276,3 +304,21 @@ void RAS_BucketManager::ReleaseDisplayLists(RAS_IPolyMaterial *mat)
}
}
+void RAS_BucketManager::ReleaseMaterials(RAS_IPolyMaterial * mat)
+{
+ BucketList::iterator bit;
+ list<RAS_MeshSlot>::iterator mit;
+
+ for (bit = m_SolidBuckets.begin(); bit != m_SolidBuckets.end(); ++bit) {
+ if (mat == NULL || (mat == (*bit)->GetPolyMaterial())) {
+ (*bit)->GetPolyMaterial()->ReleaseMaterial();
+ }
+ }
+
+ for (bit = m_AlphaBuckets.begin(); bit != m_AlphaBuckets.end(); ++bit) {
+ if (mat == NULL || (mat == (*bit)->GetPolyMaterial())) {
+ (*bit)->GetPolyMaterial()->ReleaseMaterial();
+ }
+ }
+}
+
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.h b/source/gameengine/Rasterizer/RAS_BucketManager.h
index 74526f365a0..2b81ddd3c82 100644
--- a/source/gameengine/Rasterizer/RAS_BucketManager.h
+++ b/source/gameengine/Rasterizer/RAS_BucketManager.h
@@ -58,6 +58,7 @@ public:
void OptimizeBuckets(MT_Scalar distance);
void ReleaseDisplayLists(RAS_IPolyMaterial * material = NULL);
+ void ReleaseMaterials(RAS_IPolyMaterial * material = NULL);
private:
void OrderBuckets(const MT_Transform& cameratrans, BucketList& buckets, vector<sortedmeshslot>& slots, bool alpha);
diff --git a/source/gameengine/Rasterizer/RAS_CameraData.h b/source/gameengine/Rasterizer/RAS_CameraData.h
index e3af43fb839..c8f4d9a0a17 100644
--- a/source/gameengine/Rasterizer/RAS_CameraData.h
+++ b/source/gameengine/Rasterizer/RAS_CameraData.h
@@ -32,6 +32,7 @@
struct RAS_CameraData
{
float m_lens;
+ float m_scale;
float m_clipstart;
float m_clipend;
bool m_perspective;
@@ -42,10 +43,11 @@ struct RAS_CameraData
int m_viewporttop;
float m_focallength;
- RAS_CameraData(float lens = 35.0, float clipstart = 0.1, float clipend = 5000.0, bool perspective = true,
+ RAS_CameraData(float lens = 35.0, float scale = 6.0, float clipstart = 0.1, float clipend = 5000.0, bool perspective = true,
float focallength = 0.0f, bool viewport = false, int viewportleft = 0, int viewportbottom = 0,
int viewportright = 0, int viewporttop = 0) :
m_lens(lens),
+ m_scale(scale),
m_clipstart(clipstart),
m_clipend(clipend),
m_perspective(perspective),
diff --git a/source/gameengine/Rasterizer/RAS_Deformer.h b/source/gameengine/Rasterizer/RAS_Deformer.h
index 3332ac4c0a7..fe9b1540af8 100644
--- a/source/gameengine/Rasterizer/RAS_Deformer.h
+++ b/source/gameengine/Rasterizer/RAS_Deformer.h
@@ -34,23 +34,47 @@
#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
#endif //WIN32
+#include <stdlib.h>
#include "GEN_Map.h"
+struct DerivedMesh;
+
class RAS_Deformer
{
public:
- RAS_Deformer(){};
+ RAS_Deformer() : m_pMesh(NULL), m_bDynamic(false) {};
virtual ~RAS_Deformer(){};
virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)=0;
virtual bool Apply(class RAS_IPolyMaterial *polymat)=0;
virtual bool Update(void)=0;
- virtual RAS_Deformer *GetReplica(class KX_GameObject* replica)=0;
+ virtual bool UpdateBuckets(void)=0;
+ virtual RAS_Deformer *GetReplica()=0;
+ virtual void ProcessReplica()=0;
virtual bool SkipVertexTransform()
{
return false;
}
+ virtual bool ShareVertexArray()
+ {
+ return true;
+ }
+ virtual bool UseVertexArray()
+ {
+ return true;
+ }
+ // true when deformer produces varying vertex (shape or armature)
+ bool IsDynamic()
+ {
+ return m_bDynamic;
+ }
+ virtual struct DerivedMesh* GetFinalMesh()
+ {
+ return NULL;
+ }
+
protected:
class RAS_MeshObject *m_pMesh;
+ bool m_bDynamic;
};
#endif
diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.cpp b/source/gameengine/Rasterizer/RAS_FramingManager.cpp
index e2bbca48bb5..ea18ffb2298 100644
--- a/source/gameengine/Rasterizer/RAS_FramingManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_FramingManager.cpp
@@ -72,6 +72,39 @@ ComputeDefaultFrustum(
void
RAS_FramingManager::
+ComputeDefaultOrtho(
+ const float camnear,
+ const float camfar,
+ const float scale,
+ const float design_aspect_ratio,
+ RAS_FrameFrustum & frustum
+)
+{
+ float halfSize = scale*0.5f;
+ float sizeX;
+ float sizeY;
+
+ if (design_aspect_ratio > 1.f) {
+ // halfsize defines the width
+ sizeX = halfSize;
+ sizeY = halfSize/design_aspect_ratio;
+ } else {
+ // halfsize defines the height
+ sizeX = halfSize * design_aspect_ratio;
+ sizeY = halfSize;
+ }
+
+ frustum.x2 = sizeX;
+ frustum.x1 = -frustum.x2;
+ frustum.y2 = sizeY;
+ frustum.y1 = -frustum.y2;
+ frustum.camnear = -camfar;
+ frustum.camfar = camfar;
+}
+
+
+ void
+RAS_FramingManager::
ComputeBestFitViewRect(
const RAS_Rect &availableViewport,
const float design_aspect_ratio,
@@ -227,5 +260,73 @@ ComputeFrustum(
}
}
+ void
+RAS_FramingManager::
+ ComputeOrtho(
+ const RAS_FrameSettings &settings,
+ const RAS_Rect &availableViewport,
+ const RAS_Rect &viewport,
+ const float scale,
+ const float camnear,
+ const float camfar,
+ RAS_FrameFrustum &frustum
+ )
+{
+ RAS_FrameSettings::RAS_FrameType type = settings.FrameType();
+
+ const float design_width = float(settings.DesignAspectWidth());
+ const float design_height = float(settings.DesignAspectHeight());
+
+ float design_aspect_ratio = float(1);
+
+ if (design_height == float(0)) {
+ // well this is ill defined
+ // lets just scale the thing
+ type = RAS_FrameSettings::e_frame_scale;
+ } else {
+ design_aspect_ratio = design_width/design_height;
+ }
+
+
+ ComputeDefaultOrtho(
+ camnear,
+ camfar,
+ scale,
+ design_aspect_ratio,
+ frustum
+ );
+
+ switch (type) {
+
+ case RAS_FrameSettings::e_frame_extend:
+ {
+ RAS_Rect vt;
+ ComputeBestFitViewRect(
+ availableViewport,
+ design_aspect_ratio,
+ vt
+ );
+
+ // now scale the calculated frustum by the difference
+ // between vt and the viewport in each axis.
+ // These are always > 1
+
+ float x_scale = float(viewport.GetWidth())/float(vt.GetWidth());
+ float y_scale = float(viewport.GetHeight())/float(vt.GetHeight());
+
+ frustum.x1 *= x_scale;
+ frustum.x2 *= x_scale;
+ frustum.y1 *= y_scale;
+ frustum.y2 *= y_scale;
+
+ break;
+ }
+ case RAS_FrameSettings::e_frame_scale :
+ case RAS_FrameSettings::e_frame_bars:
+ default :
+ break;
+ }
+
+}
diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.h b/source/gameengine/Rasterizer/RAS_FramingManager.h
index 0a226ac30f9..4398e2d00c3 100644
--- a/source/gameengine/Rasterizer/RAS_FramingManager.h
+++ b/source/gameengine/Rasterizer/RAS_FramingManager.h
@@ -209,6 +209,18 @@ public :
static
void
+ ComputeOrtho(
+ const RAS_FrameSettings &settings,
+ const RAS_Rect &availableViewport,
+ const RAS_Rect &viewport,
+ const float scale,
+ const float camnear,
+ const float camfar,
+ RAS_FrameFrustum &frustum
+ );
+
+ static
+ void
ComputeFrustum(
const RAS_FrameSettings &settings,
const RAS_Rect &availableViewport,
@@ -229,6 +241,16 @@ public :
RAS_FrameFrustum & frustum
);
+ static
+ void
+ ComputeDefaultOrtho(
+ const float camnear,
+ const float camfar,
+ const float scale,
+ const float design_aspect_ratio,
+ RAS_FrameFrustum & frustum
+ );
+
private :
static
diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
index cd88112007b..6af00d63c2d 100644
--- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
+++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
@@ -29,12 +29,71 @@
#include "RAS_IPolygonMaterial.h"
#include "RAS_IRasterizer.h"
+#include "DNA_image_types.h"
+#include "DNA_meshdata_types.h"
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+void RAS_IPolyMaterial::Initialize(
+ const STR_String& texname,
+ const STR_String& matname,
+ int materialindex,
+ int tile,
+ int tilexrep,
+ int tileyrep,
+ int mode,
+ int transp,
+ bool alpha,
+ bool zsort,
+ int lightlayer)
+{
+ m_texturename = texname;
+ m_materialname = matname;
+ m_materialindex = materialindex;
+ m_tile = tile;
+ m_tilexrep = tilexrep;
+ m_tileyrep = tileyrep;
+ m_drawingmode = mode;
+ m_transp = transp;
+ m_alpha = alpha;
+ m_zsort = zsort;
+ //m_lightlayer = lightlayer;
+ m_polymatid = m_newpolymatid++;
+ m_flag = 0;
+ m_multimode = 0;
+ m_shininess = 35.0;
+ m_specular.setValue(0.5,0.5,0.5);
+ m_specularity = 1.0;
+ m_diffuse.setValue(0.5,0.5,0.5);
+}
+
+RAS_IPolyMaterial::RAS_IPolyMaterial()
+ : m_texturename("__Dummy_Texture_Name__"),
+ m_materialname("__Dummy_Material_Name__"),
+ m_materialindex(0),
+ m_tile(0),
+ m_tilexrep(0),
+ m_tileyrep(0),
+ m_drawingmode (0),
+ m_transp(0),
+ m_alpha(false),
+ m_zsort(false),
+ //m_lightlayer(0),
+ m_polymatid(0),
+ m_flag(0),
+ m_multimode(0)
+{
+ m_shininess = 35.0;
+ m_specular = MT_Vector3(0.5,0.5,0.5);
+ m_specularity = 1.0;
+ m_diffuse = MT_Vector3(0.5,0.5,0.5);
+}
+
RAS_IPolyMaterial::RAS_IPolyMaterial(const STR_String& texname,
const STR_String& matname,
+ int materialindex,
int tile,
int tilexrep,
int tileyrep,
@@ -45,6 +104,7 @@ RAS_IPolyMaterial::RAS_IPolyMaterial(const STR_String& texname,
int lightlayer)
: m_texturename(texname),
m_materialname(matname),
+ m_materialindex(materialindex),
m_tile(tile),
m_tilexrep(tilexrep),
m_tileyrep(tileyrep),
@@ -52,7 +112,7 @@ RAS_IPolyMaterial::RAS_IPolyMaterial(const STR_String& texname,
m_transp(transp),
m_alpha(alpha),
m_zsort(zsort),
- m_lightlayer(lightlayer),
+ //m_lightlayer(lightlayer),
m_polymatid(m_newpolymatid++),
m_flag(0),
m_multimode(0)
@@ -95,6 +155,15 @@ bool RAS_IPolyMaterial::Equals(const RAS_IPolyMaterial& lhs) const
}
}
+
+void RAS_IPolyMaterial::GetMaterialRGBAColor(unsigned char *rgba) const
+{
+ *rgba++ = 0xFF;
+ *rgba++ = 0xFF;
+ *rgba++ = 0xFF;
+ *rgba++ = 0xFF;
+}
+
bool RAS_IPolyMaterial::Less(const RAS_IPolyMaterial& rhs) const
{
if (Equals(rhs))
@@ -103,10 +172,10 @@ bool RAS_IPolyMaterial::Less(const RAS_IPolyMaterial& rhs) const
return m_polymatid < rhs.m_polymatid;
}
-int RAS_IPolyMaterial::GetLightLayer() const
-{
- return m_lightlayer;
-}
+//int RAS_IPolyMaterial::GetLightLayer() const
+//{
+// return m_lightlayer;
+//}
bool RAS_IPolyMaterial::IsAlpha() const
{
@@ -143,6 +212,25 @@ const STR_String& RAS_IPolyMaterial::GetTextureName() const
return m_texturename;
}
+int RAS_IPolyMaterial::GetMaterialIndex() const
+{
+ return m_materialindex;
+}
+
+Material *RAS_IPolyMaterial::GetBlenderMaterial() const
+{
+ return NULL;
+}
+
+Scene* RAS_IPolyMaterial::GetBlenderScene() const
+{
+ return NULL;
+}
+
+void RAS_IPolyMaterial::ReleaseMaterial()
+{
+}
+
unsigned int RAS_IPolyMaterial::GetFlag() const
{
return m_flag;
diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
index e5b24070c4b..e19db35ccb5 100644
--- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
+++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
@@ -39,6 +39,9 @@
#include "STR_HashedString.h"
class RAS_IRasterizer;
+struct MTFace;
+struct Material;
+struct Scene;
enum MaterialProps
{
@@ -70,7 +73,8 @@ protected:
int m_transp;
bool m_alpha;
bool m_zsort;
- int m_lightlayer;
+ //int m_lightlayer;
+ int m_materialindex;
unsigned int m_polymatid;
static unsigned int m_newpolymatid;
@@ -96,8 +100,10 @@ public:
SHADOW =8192
};
+ RAS_IPolyMaterial();
RAS_IPolyMaterial(const STR_String& texname,
const STR_String& matname,
+ int materialindex,
int tile,
int tilexrep,
int tileyrep,
@@ -106,6 +112,17 @@ public:
bool alpha,
bool zsort,
int lightlayer);
+ void Initialize(const STR_String& texname,
+ const STR_String& matname,
+ int materialindex,
+ int tile,
+ int tilexrep,
+ int tileyrep,
+ int mode,
+ int transp,
+ bool alpha,
+ bool zsort,
+ int lightlayer);
virtual ~RAS_IPolyMaterial() {};
/**
@@ -130,7 +147,7 @@ public:
virtual bool Equals(const RAS_IPolyMaterial& lhs) const;
bool Less(const RAS_IPolyMaterial& rhs) const;
- int GetLightLayer() const;
+ //int GetLightLayer() const;
bool IsAlpha() const;
bool IsZSort() const;
unsigned int hash() const;
@@ -139,14 +156,18 @@ public:
dword GetMaterialNameHash() const;
const STR_String& GetTextureName() const;
unsigned int GetFlag() const;
+ int GetMaterialIndex() const;
+ virtual Material* GetBlenderMaterial() const;
+ virtual Scene* GetBlenderScene() const;
+ virtual void ReleaseMaterial();
+ virtual void GetMaterialRGBAColor(unsigned char *rgba) const;
virtual bool UsesLighting(RAS_IRasterizer *rasty) const;
virtual bool UsesObjectColor() const;
-
/*
* PreCalculate texture gen
*/
- virtual void OnConstruction(){}
+ virtual void OnConstruction(int layer){}
};
inline bool operator ==( const RAS_IPolyMaterial & rhs,const RAS_IPolyMaterial & lhs)
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h
index cfeda06e670..dc8c3c1ebf8 100644
--- a/source/gameengine/Rasterizer/RAS_IRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h
@@ -250,9 +250,9 @@ public:
* Sets the modelview matrix.
*/
virtual void SetViewMatrix(const MT_Matrix4x4 & mat,
- const MT_Vector3& campos,
- const MT_Point3 &camLoc,
- const MT_Quaternion &camOrientQuat)=0;
+ const MT_Matrix3x3 & ori,
+ const MT_Point3 & pos,
+ bool perspective)=0;
/**
*/
virtual const MT_Point3& GetCameraPosition()=0;
@@ -280,6 +280,7 @@ public:
/**
*/
virtual void DisableFog()=0;
+ virtual bool IsFogEnabled()=0;
virtual void SetBackColor(float red,
float green,
@@ -325,6 +326,26 @@ public:
float focallength = 0.0f,
bool perspective = true
)=0;
+
+ /**
+ * Generates a orthographic projection matrix from the specified frustum.
+ * @param left the left clipping plane
+ * @param right the right clipping plane
+ * @param bottom the bottom clipping plane
+ * @param top the top clipping plane
+ * @param frustnear the near clipping plane
+ * @param frustfar the far clipping plane
+ * @return a 4x4 matrix representing the projection transform.
+ */
+ virtual MT_Matrix4x4 GetOrthoMatrix(
+ float left,
+ float right,
+ float bottom,
+ float top,
+ float frustnear,
+ float frustfar
+ )=0;
+
/**
* Sets the specular color component of the lighting equation.
*/
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
index 6beab28d61f..8e90c9a1c08 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
@@ -42,7 +42,7 @@
/* mesh slot */
-RAS_MeshSlot::RAS_MeshSlot()
+RAS_MeshSlot::RAS_MeshSlot() : SG_QList()
{
m_clientObj = NULL;
m_pDeformer = NULL;
@@ -56,6 +56,7 @@ RAS_MeshSlot::RAS_MeshSlot()
m_DisplayList = NULL;
m_bDisplayList = true;
m_joinSlot = NULL;
+ m_pDerivedMesh = NULL;
}
RAS_MeshSlot::~RAS_MeshSlot()
@@ -81,12 +82,13 @@ RAS_MeshSlot::~RAS_MeshSlot()
}
}
-RAS_MeshSlot::RAS_MeshSlot(const RAS_MeshSlot& slot)
+RAS_MeshSlot::RAS_MeshSlot(const RAS_MeshSlot& slot) : SG_QList()
{
RAS_DisplayArrayList::iterator it;
m_clientObj = NULL;
m_pDeformer = NULL;
+ m_pDerivedMesh = NULL;
m_OpenGLMatrix = NULL;
m_mesh = slot.m_mesh;
m_bucket = slot.m_bucket;
@@ -279,6 +281,63 @@ void RAS_MeshSlot::AddPolygonVertex(int offset)
m_endindex++;
}
+void RAS_MeshSlot::SetDeformer(RAS_Deformer* deformer)
+{
+ if (deformer && m_pDeformer != deformer) {
+ RAS_DisplayArrayList::iterator it;
+ if (deformer->ShareVertexArray()) {
+ // this deformer uses the base vertex array, first release the current ones
+ for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
+ (*it)->m_users--;
+ if((*it)->m_users == 0)
+ delete *it;
+ }
+ m_displayArrays.clear();
+ // then hook to the base ones
+ RAS_MeshMaterial *mmat = m_mesh->GetMeshMaterial(m_bucket->GetPolyMaterial());
+ if (mmat && mmat->m_baseslot) {
+ m_displayArrays = mmat->m_baseslot->m_displayArrays;
+ for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
+ (*it)->m_users++;
+ }
+ }
+ }
+ else {
+ // no sharing
+ // we create local copy of RAS_DisplayArray when we have a deformer:
+ // this way we can avoid conflict between the vertex cache of duplicates
+ for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
+ if (deformer->UseVertexArray()) {
+ // the deformer makes use of vertex array, make sure we have our local copy
+ if ((*it)->m_users > 1) {
+ // only need to copy if there are other users
+ // note that this is the usual case as vertex arrays are held by the material base slot
+ RAS_DisplayArray *newarray = new RAS_DisplayArray(*(*it));
+ newarray->m_users = 1;
+ (*it)->m_users--;
+ *it = newarray;
+ }
+ } else {
+ // the deformer is not using vertex array (Modifier), release them
+ (*it)->m_users--;
+ if((*it)->m_users == 0)
+ delete *it;
+ }
+ }
+ if (!deformer->UseVertexArray()) {
+ m_displayArrays.clear();
+ m_startarray = 0;
+ m_startvertex = 0;
+ m_startindex = 0;
+ m_endarray = 0;
+ m_endvertex = 0;
+ m_endindex = 0;
+ }
+ }
+ }
+ m_pDeformer = deformer;
+}
+
bool RAS_MeshSlot::Equals(RAS_MeshSlot *target)
{
if(!m_OpenGLMatrix || !target->m_OpenGLMatrix)
@@ -422,21 +481,21 @@ bool RAS_MeshSlot::Split(bool force)
return false;
}
+
+#ifdef USE_SPLIT
bool RAS_MeshSlot::IsCulled()
{
- list<RAS_MeshSlot*>::iterator it;
-
if(m_joinSlot)
return true;
if(!m_bCulled)
return false;
-#ifdef USE_SPLIT
+ list<RAS_MeshSlot*>::iterator it;
for(it=m_joinedSlots.begin(); it!=m_joinedSlots.end(); it++)
if(!(*it)->m_bCulled)
return false;
-#endif
return true;
}
+#endif
/* material bucket sorting */
@@ -558,7 +617,7 @@ void RAS_MaterialBucket::RenderMeshSlot(const MT_Transform& cameratrans, RAS_IRa
// then it won't have texture coordinates for actual drawing. also
// for zsort we can't make a display list, since the polygon order
// changes all the time.
- if(ms.m_pDeformer)
+ if(ms.m_pDeformer && ms.m_pDeformer->IsDynamic())
ms.m_bDisplayList = false;
else if(!ms.m_DisplayList && rasty->GetDrawingMode() == RAS_IRasterizer::KX_SHADOW)
ms.m_bDisplayList = false;
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.h b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
index f5c8cd3e107..8db75b8b735 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.h
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
@@ -32,6 +32,7 @@
#include "RAS_TexVert.h"
#include "GEN_Map.h"
#include "STR_HashedString.h"
+#include "SG_QList.h"
#include "MT_Transform.h"
#include "RAS_IPolygonMaterial.h"
@@ -69,6 +70,7 @@ class RAS_DisplayArray;
class RAS_MeshSlot;
class RAS_MeshMaterial;
class RAS_MaterialBucket;
+struct DerivedMesh;
/* An array with data used for OpenGL drawing */
@@ -88,7 +90,9 @@ public:
/* Entry of a RAS_MeshObject into RAS_MaterialBucket */
typedef std::vector<RAS_DisplayArray*> RAS_DisplayArrayList;
-class RAS_MeshSlot
+// The QList is used to link the mesh slots to the object
+// The DList is used to link the visible mesh slots to the material bucket
+class RAS_MeshSlot : public SG_QList
{
friend class RAS_ListRasterizer;
private:
@@ -110,6 +114,7 @@ public:
RAS_MeshObject* m_mesh;
void* m_clientObj;
RAS_Deformer* m_pDeformer;
+ DerivedMesh* m_pDerivedMesh;
double* m_OpenGLMatrix;
// visibility
bool m_bVisible;
@@ -148,6 +153,7 @@ public:
/* used during construction */
void SetDisplayArray(int numverts);
RAS_DisplayArray *CurrentDisplayArray();
+ void SetDeformer(RAS_Deformer* deformer);
void AddPolygon(int numverts);
int AddVertex(const RAS_TexVert& tv);
@@ -157,7 +163,11 @@ public:
bool Split(bool force=false);
bool Join(RAS_MeshSlot *target, MT_Scalar distance);
bool Equals(RAS_MeshSlot *target);
+#ifdef USE_SPLIT
bool IsCulled();
+#else
+ bool IsCulled() { return m_bCulled; }
+#endif
void SetCulled(bool culled) { m_bCulled = culled; }
};
@@ -168,7 +178,6 @@ class RAS_MeshMaterial
public:
RAS_MeshSlot *m_baseslot;
class RAS_MaterialBucket *m_bucket;
-
GEN_Map<GEN_HashedPtr,RAS_MeshSlot*> m_slots;
};
@@ -205,10 +214,23 @@ public:
class RAS_MeshSlot* CopyMesh(class RAS_MeshSlot *ms);
void RemoveMesh(class RAS_MeshSlot* ms);
void Optimize(MT_Scalar distance);
+ void ActivateMesh(RAS_MeshSlot* slot)
+ {
+ m_activeMeshSlotsHead.AddBack(slot);
+ }
+ SG_DList& GetActiveMeshSlots()
+ {
+ return m_activeMeshSlotsHead;
+ }
+ RAS_MeshSlot* GetNextActiveMeshSlot()
+ {
+ return (RAS_MeshSlot*)m_activeMeshSlotsHead.Remove();
+ }
private:
- list<RAS_MeshSlot> m_meshSlots;
+ list<RAS_MeshSlot> m_meshSlots; // all the mesh slots
RAS_IPolyMaterial* m_material;
+ SG_DList m_activeMeshSlotsHead; // only those which must be rendered
};
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
index 162f9a81335..1dfcb0c512d 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
@@ -91,7 +91,7 @@ struct RAS_MeshObject::fronttoback
STR_String RAS_MeshObject::s_emptyname = "";
RAS_MeshObject::RAS_MeshObject(Mesh* mesh, int lightlayer)
- : m_lightlayer(lightlayer),
+ : //m_lightlayer(lightlayer),
m_bModified(true),
m_bMeshModified(true),
m_mesh(mesh),
@@ -112,10 +112,10 @@ bool RAS_MeshObject::MeshModified()
return m_bMeshModified;
}
-unsigned int RAS_MeshObject::GetLightLayer()
-{
- return m_lightlayer;
-}
+//unsigned int RAS_MeshObject::GetLightLayer()
+//{
+// return m_lightlayer;
+//}
@@ -179,14 +179,14 @@ list<RAS_MeshMaterial>::iterator RAS_MeshObject::GetLastMaterial()
-void RAS_MeshObject::SetName(STR_String name)
+void RAS_MeshObject::SetName(const char *name)
{
m_name = name;
}
-const STR_String& RAS_MeshObject::GetName()
+STR_String& RAS_MeshObject::GetName()
{
return m_name;
}
@@ -215,6 +215,19 @@ RAS_MeshMaterial *RAS_MeshObject::GetMeshMaterial(RAS_IPolyMaterial *mat)
return NULL;
}
+int RAS_MeshObject::GetMaterialId(RAS_IPolyMaterial *mat)
+{
+ list<RAS_MeshMaterial>::iterator mit;
+ int imat;
+
+ /* find a mesh material */
+ for(imat=0, mit = m_materials.begin(); mit != m_materials.end(); mit++, imat++)
+ if(mit->m_bucket->GetPolyMaterial() == mat)
+ return imat;
+
+ return -1;
+}
+
RAS_Polygon* RAS_MeshObject::AddPolygon(RAS_MaterialBucket *bucket, int numverts)
{
RAS_MeshMaterial *mmat;
@@ -229,6 +242,7 @@ RAS_Polygon* RAS_MeshObject::AddPolygon(RAS_MaterialBucket *bucket, int numverts
RAS_MeshMaterial meshmat;
meshmat.m_bucket = bucket;
meshmat.m_baseslot = meshmat.m_bucket->AddMesh(numverts);
+ meshmat.m_baseslot->m_mesh = this;
m_materials.push_back(meshmat);
mmat = &m_materials.back();
}
@@ -291,7 +305,7 @@ void RAS_MeshObject::AddVertex(RAS_Polygon *poly, int i,
slot = mmat->m_baseslot;
darray = slot->CurrentDisplayArray();
- if(!flat) {
+ { /* Shared Vertex! */
/* find vertices shared between faces, with the restriction
* that they exist in the same display array, and have the
* same uv coordinate etc */
@@ -319,7 +333,7 @@ void RAS_MeshObject::AddVertex(RAS_Polygon *poly, int i,
slot->AddPolygonVertex(offset);
poly->SetVertexOffset(i, offset);
- if(!flat) {
+ { /* Shared Vertex! */
SharedVertex shared;
shared.m_darray = darray;
shared.m_offset = offset;
@@ -368,16 +382,41 @@ RAS_TexVert* RAS_MeshObject::GetVertex(unsigned int matid,
return NULL;
}
-void RAS_MeshObject::AddMeshUser(void *clientobj)
+void RAS_MeshObject::AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* deformer)
{
list<RAS_MeshMaterial>::iterator it;
+ list<RAS_MeshMaterial>::iterator mit;
for(it = m_materials.begin();it!=m_materials.end();++it) {
/* always copy from the base slot, which is never removed
* since new objects can be created with the same mesh data */
+ if (deformer && !deformer->UseVertexArray())
+ {
+ // HACK!
+ // this deformer doesn't use vertex array => derive mesh
+ // we must keep only the mesh slots that have unique material id
+ // this is to match the derived mesh drawing function
+ // Need a better solution in the future: scan the derive mesh and create vertex array
+ RAS_IPolyMaterial* curmat = it->m_bucket->GetPolyMaterial();
+ if (curmat->GetFlag() & RAS_BLENDERGLSL)
+ {
+ for(mit = m_materials.begin(); mit != it; ++mit)
+ {
+ RAS_IPolyMaterial* mat = mit->m_bucket->GetPolyMaterial();
+ if ((mat->GetFlag() & RAS_BLENDERGLSL) &&
+ mat->GetMaterialIndex() == curmat->GetMaterialIndex())
+ // no need to convert current mesh slot
+ break;
+ }
+ if (mit != it)
+ continue;
+ }
+ }
RAS_MeshSlot *ms = it->m_bucket->CopyMesh(it->m_baseslot);
ms->m_clientObj = clientobj;
+ ms->SetDeformer(deformer);
it->m_slots.insert(clientobj, ms);
+ head->QAddBack(ms);
}
}
@@ -389,7 +428,7 @@ void RAS_MeshObject::UpdateBuckets(void* clientobj,
bool culled)
{
list<RAS_MeshMaterial>::iterator it;
-
+
for(it = m_materials.begin();it!=m_materials.end();++it) {
RAS_MeshSlot **msp = it->m_slots[clientobj];
@@ -404,6 +443,8 @@ void RAS_MeshObject::UpdateBuckets(void* clientobj,
ms->m_RGBAcolor = rgbavec;
ms->m_bVisible = visible;
ms->m_bCulled = culled || !visible;
+ if (!ms->m_bCulled)
+ ms->m_bucket->ActivateMesh(ms);
/* split if necessary */
#ifdef USE_SPLIT
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.h b/source/gameengine/Rasterizer/RAS_MeshObject.h
index 404b7f16a59..e763d6e7c7f 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.h
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.h
@@ -45,6 +45,7 @@
#include "GEN_HashedPtr.h"
struct Mesh;
+class RAS_Deformer;
/* RAS_MeshObject is a mesh used for rendering. It stores polygons,
* but the actual vertices and index arrays are stored in material
@@ -54,7 +55,7 @@ class RAS_MeshObject
{
private:
unsigned int m_debugcolor;
- int m_lightlayer;
+ //int m_lightlayer;
bool m_bModified;
bool m_bMeshModified;
@@ -89,15 +90,16 @@ public:
RAS_MeshMaterial* GetMeshMaterial(unsigned int matid);
RAS_MeshMaterial* GetMeshMaterial(RAS_IPolyMaterial *mat);
+ int GetMaterialId(RAS_IPolyMaterial *mat);
list<RAS_MeshMaterial>::iterator GetFirstMaterial();
list<RAS_MeshMaterial>::iterator GetLastMaterial();
- unsigned int GetLightLayer();
+ //unsigned int GetLightLayer();
/* name */
- void SetName(STR_String name);
- const STR_String& GetName();
+ void SetName(const char *name);
+ STR_String& GetName();
/* modification state */
bool MeshModified();
@@ -129,7 +131,7 @@ public:
RAS_Polygon* GetPolygon(int num) const;
/* buckets */
- virtual void AddMeshUser(void *clientobj);
+ virtual void AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* deformer);
virtual void UpdateBuckets(
void* clientobj,
double* oglmatrix,
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
index e4403ace69f..fe3d0f6aeea 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
@@ -31,8 +31,14 @@ SET(INC
../../../../intern/string
../../../../intern/moto/include
../../../../source/gameengine/Rasterizer
+ ../../../../source/gameengine/Ketsji
+ ../../../../source/gameengine/SceneGraph
../../../../extern/glew/include
../../../../source/blender/gpu
+ ../../../../source/blender/makesdna
+ ../../../../source/blender/blenkernel
+ ../../../../source/blender/blenlib
+ ../../../../source/blender/blenloader
)
BLENDERLIB(bf_oglrasterizer "${SRC}" "${INC}")
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile
index aee485a22be..0327714dc5f 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile
@@ -42,8 +42,14 @@ CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../../kernel/gen_system
CPPFLAGS += -I../../../blender/gpu
+CPPFLAGS += -I../../../blender/makesdna
+CPPFLAGS += -I../../../blender/blenlib
+CPPFLAGS += -I../../../blender/blenkernel
CPPFLAGS += -I../../BlenderRoutines
+CPPFLAGS += -I../../Ketsji
+CPPFLAGS += -I../../SceneGraph
CPPFLAGS += -I..
+CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
ifeq ($(OS),darwin)
CPPFLAGS += -fpascal-strings
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
index 65aadd63a40..014169f8838 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
@@ -104,9 +104,11 @@ bool RAS_ListSlot::End()
RAS_ListRasterizer::RAS_ListRasterizer(RAS_ICanvas* canvas, bool useVertexArrays, bool lock)
: RAS_VAOpenGLRasterizer(canvas, lock),
- mUseVertexArrays(useVertexArrays)
+ mUseVertexArrays(useVertexArrays),
+ mATI(false)
{
- // --
+ if (!strcmp((const char*)glGetString(GL_VENDOR), "ATI Technologies Inc."))
+ mATI = true;
}
RAS_ListRasterizer::~RAS_ListRasterizer()
@@ -116,13 +118,24 @@ RAS_ListRasterizer::~RAS_ListRasterizer()
void RAS_ListRasterizer::RemoveListSlot(RAS_ListSlot* list)
{
- RAS_Lists::iterator it = mLists.begin();
- while(it != mLists.end()) {
- if (it->second == list) {
- mLists.erase(it);
- break;
+ if (list->m_flag & LIST_DERIVEDMESH) {
+ RAS_DerivedMeshLists::iterator it = mDerivedMeshLists.begin();
+ while(it != mDerivedMeshLists.end()) {
+ if (it->second == list) {
+ mDerivedMeshLists.erase(it);
+ break;
+ }
+ it++;
+ }
+ } else {
+ RAS_ArrayLists::iterator it = mArrayLists.begin();
+ while(it != mArrayLists.end()) {
+ if (it->second == list) {
+ mArrayLists.erase(it);
+ break;
+ }
+ it++;
}
- it++;
}
}
@@ -136,12 +149,25 @@ RAS_ListSlot* RAS_ListRasterizer::FindOrAdd(RAS_MeshSlot& ms)
*/
RAS_ListSlot* localSlot = (RAS_ListSlot*)ms.m_DisplayList;
if(!localSlot) {
- RAS_Lists::iterator it = mLists.find(ms.m_displayArrays);
- if(it == mLists.end()) {
- localSlot = new RAS_ListSlot(this);
- mLists.insert(std::pair<RAS_DisplayArrayList, RAS_ListSlot*>(ms.m_displayArrays, localSlot));
+ if (ms.m_pDerivedMesh) {
+ // that means that we draw based on derived mesh, a display list is possible
+ // Note that we come here only for static derived mesh
+ RAS_DerivedMeshLists::iterator it = mDerivedMeshLists.find(ms.m_pDerivedMesh);
+ if(it == mDerivedMeshLists.end()) {
+ localSlot = new RAS_ListSlot(this);
+ localSlot->m_flag |= LIST_DERIVEDMESH;
+ mDerivedMeshLists.insert(std::pair<DerivedMesh*, RAS_ListSlot*>(ms.m_pDerivedMesh, localSlot));
+ } else {
+ localSlot = static_cast<RAS_ListSlot*>(it->second->AddRef());
+ }
} else {
- localSlot = static_cast<RAS_ListSlot*>(it->second->AddRef());
+ RAS_ArrayLists::iterator it = mArrayLists.find(ms.m_displayArrays);
+ if(it == mArrayLists.end()) {
+ localSlot = new RAS_ListSlot(this);
+ mArrayLists.insert(std::pair<RAS_DisplayArrayList, RAS_ListSlot*>(ms.m_displayArrays, localSlot));
+ } else {
+ localSlot = static_cast<RAS_ListSlot*>(it->second->AddRef());
+ }
}
}
MT_assert(localSlot);
@@ -150,12 +176,12 @@ RAS_ListSlot* RAS_ListRasterizer::FindOrAdd(RAS_MeshSlot& ms)
void RAS_ListRasterizer::ReleaseAlloc()
{
- RAS_Lists::iterator it = mLists.begin();
- while(it != mLists.end()) {
+ for(RAS_ArrayLists::iterator it = mArrayLists.begin();it != mArrayLists.end();++it)
delete it->second;
- it++;
- }
- mLists.clear();
+ mArrayLists.clear();
+ for (RAS_DerivedMeshLists::iterator it = mDerivedMeshLists.begin();it != mDerivedMeshLists.end();++it)
+ delete it->second;
+ mDerivedMeshLists.clear();
}
void RAS_ListRasterizer::IndexPrimitives(RAS_MeshSlot& ms)
@@ -172,8 +198,8 @@ void RAS_ListRasterizer::IndexPrimitives(RAS_MeshSlot& ms)
return;
}
}
-
- if (mUseVertexArrays)
+ // derived mesh cannot use vertex array
+ if (mUseVertexArrays && !ms.m_pDerivedMesh)
RAS_VAOpenGLRasterizer::IndexPrimitives(ms);
else
RAS_OpenGLRasterizer::IndexPrimitives(ms);
@@ -204,7 +230,7 @@ void RAS_ListRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms)
// workaround: note how we do not use vertex arrays for making display
// lists, since glVertexAttribPointerARB doesn't seem to work correct
// in display lists on ATI? either a bug in the driver or in Blender ..
- if (mUseVertexArrays && !localSlot)
+ if (mUseVertexArrays && !mATI && !ms.m_pDerivedMesh)
RAS_VAOpenGLRasterizer::IndexPrimitivesMulti(ms);
else
RAS_OpenGLRasterizer::IndexPrimitivesMulti(ms);
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
index 653bb43e534..fe358808e4a 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
@@ -9,6 +9,7 @@
class RAS_ListRasterizer;
class RAS_ListSlot : public KX_ListSlot
{
+ friend class RAS_ListRasterizer;
unsigned int m_list;
unsigned int m_flag;
RAS_ListRasterizer* m_rasty;
@@ -32,15 +33,21 @@ enum RAS_ListSlotFlags {
LIST_NOCREATE =8,
LIST_BEGIN =16,
LIST_END =32,
- LIST_REGEN =64
+ LIST_REGEN =64,
+ LIST_DERIVEDMESH=128,
};
-typedef std::map<RAS_DisplayArrayList, RAS_ListSlot*> RAS_Lists;
+struct DerivedMesh;
+
+typedef std::map<RAS_DisplayArrayList, RAS_ListSlot*> RAS_ArrayLists;
+typedef std::map<DerivedMesh*, RAS_ListSlot*> RAS_DerivedMeshLists;
class RAS_ListRasterizer : public RAS_VAOpenGLRasterizer
{
bool mUseVertexArrays;
- RAS_Lists mLists;
+ bool mATI;
+ RAS_ArrayLists mArrayLists;
+ RAS_DerivedMeshLists mDerivedMeshLists;
RAS_ListSlot* FindOrAdd(class RAS_MeshSlot& ms);
void ReleaseAlloc();
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index 1a9a28916de..83ba2778ad6 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -35,11 +35,20 @@
#include "RAS_Rect.h"
#include "RAS_TexVert.h"
+#include "RAS_MeshObject.h"
#include "MT_CmMatrix4x4.h"
#include "RAS_IRenderTools.h" // rendering text
#include "GPU_draw.h"
#include "GPU_material.h"
+#include "GPU_extensions.h"
+
+#include "DNA_image_types.h"
+#include "DNA_meshdata_types.h"
+#include "DNA_material_types.h"
+#include "DNA_scene_types.h"
+
+#include "BKE_DerivedMesh.h"
/**
* 32x32 bit masks for vinterlace stereo mode
@@ -72,7 +81,7 @@ RAS_OpenGLRasterizer::RAS_OpenGLRasterizer(RAS_ICanvas* canvas)
m_motionblurvalue(-1.0),
m_texco_num(0),
m_attrib_num(0),
- m_last_blendmode(GPU_BLEND_SOLID),
+ //m_last_blendmode(GPU_BLEND_SOLID),
m_last_frontface(true),
m_materialCachingInfo(0)
{
@@ -109,7 +118,8 @@ bool RAS_OpenGLRasterizer::Init()
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
- m_last_blendmode = GPU_BLEND_SOLID;
+ //m_last_blendmode = GPU_BLEND_SOLID;
+ GPU_set_material_blend_mode(GPU_BLEND_SOLID);
glFrontFace(GL_CCW);
m_last_frontface = true;
@@ -201,6 +211,10 @@ void RAS_OpenGLRasterizer::DisableFog()
m_fogenabled = false;
}
+bool RAS_OpenGLRasterizer::IsFogEnabled()
+{
+ return m_fogenabled;
+}
void RAS_OpenGLRasterizer::DisplayFog()
@@ -275,7 +289,8 @@ bool RAS_OpenGLRasterizer::BeginFrame(int drawingmode, double time)
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
- m_last_blendmode = GPU_BLEND_SOLID;
+ //m_last_blendmode = GPU_BLEND_SOLID;
+ GPU_set_material_blend_mode(GPU_BLEND_SOLID);
glFrontFace(GL_CCW);
m_last_frontface = true;
@@ -703,6 +718,51 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms)
IndexPrimitivesInternal(ms, true);
}
+static bool current_wireframe;
+static RAS_MaterialBucket *current_bucket;
+static RAS_IPolyMaterial *current_polymat;
+static RAS_MeshSlot *current_ms;
+static RAS_MeshObject *current_mesh;
+static int current_blmat_nr;
+static GPUVertexAttribs current_gpu_attribs;
+static int CheckMaterialDM(int matnr, void *attribs)
+{
+ // only draw the current material
+ if (matnr != current_blmat_nr)
+ return 0;
+ GPUVertexAttribs *gattribs = (GPUVertexAttribs *)attribs;
+ if (gattribs)
+ memcpy(gattribs, &current_gpu_attribs, sizeof(GPUVertexAttribs));
+ return 1;
+}
+static int CheckTexfaceDM(void *mcol, int index)
+{
+
+ // index is the original face index, retrieve the polygon
+ RAS_Polygon* polygon = (index >= 0 && index < current_mesh->NumPolygons()) ?
+ current_mesh->GetPolygon(index) : NULL;
+ if (polygon && polygon->GetMaterial() == current_bucket) {
+ // must handle color.
+ if (current_wireframe)
+ return 2;
+ if (current_ms->m_bObjectColor) {
+ MT_Vector4& rgba = current_ms->m_RGBAcolor;
+ glColor4d(rgba[0], rgba[1], rgba[2], rgba[3]);
+ // don't use mcol
+ return 2;
+ }
+ if (!mcol) {
+ // we have to set the color from the material
+ unsigned char rgba[4];
+ current_polymat->GetMaterialRGBAColor(rgba);
+ glColor4ubv((const GLubyte *)rgba);
+ return 2;
+ }
+ return 1;
+ }
+ return 0;
+}
+
void RAS_OpenGLRasterizer::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi)
{
bool obcolor = ms.m_bObjectColor;
@@ -710,6 +770,34 @@ void RAS_OpenGLRasterizer::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi)
MT_Vector4& rgba = ms.m_RGBAcolor;
RAS_MeshSlot::iterator it;
+ if (ms.m_pDerivedMesh) {
+ // mesh data is in derived mesh,
+ current_bucket = ms.m_bucket;
+ current_polymat = current_bucket->GetPolyMaterial();
+ current_ms = &ms;
+ current_mesh = ms.m_mesh;
+ current_wireframe = wireframe;
+ MCol *mcol = (MCol*)ms.m_pDerivedMesh->getFaceDataArray(ms.m_pDerivedMesh, CD_MCOL);
+ if (current_polymat->GetFlag() & RAS_BLENDERGLSL) {
+ // GetMaterialIndex return the original mface material index,
+ // increment by 1 to match what derived mesh is doing
+ current_blmat_nr = current_polymat->GetMaterialIndex()+1;
+ // For GLSL we need to retrieve the GPU material attribute
+ Material* blmat = current_polymat->GetBlenderMaterial();
+ Scene* blscene = current_polymat->GetBlenderScene();
+ if (!wireframe && blscene && blmat)
+ GPU_material_vertex_attributes(GPU_material_from_blender(blscene, blmat), &current_gpu_attribs);
+ else
+ memset(&current_gpu_attribs, 0, sizeof(current_gpu_attribs));
+ // DM draw can mess up blending mode, restore at the end
+ int current_blend_mode = GPU_get_material_blend_mode();
+ ms.m_pDerivedMesh->drawFacesGLSL(ms.m_pDerivedMesh, CheckMaterialDM);
+ GPU_set_material_blend_mode(current_blend_mode);
+ } else {
+ ms.m_pDerivedMesh->drawMappedFacesTex(ms.m_pDerivedMesh, CheckTexfaceDM, mcol);
+ }
+ return;
+ }
// iterate over display arrays, each containing an index + vertex array
for(ms.begin(it); !ms.end(it); ms.next(it)) {
RAS_TexVert *vertex;
@@ -838,17 +926,40 @@ MT_Matrix4x4 RAS_OpenGLRasterizer::GetFrustumMatrix(
return result;
}
+MT_Matrix4x4 RAS_OpenGLRasterizer::GetOrthoMatrix(
+ float left,
+ float right,
+ float bottom,
+ float top,
+ float frustnear,
+ float frustfar
+){
+ MT_Matrix4x4 result;
+ double mat[16];
+
+ // stereo is meaning less for orthographic, disable it
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(left, right, bottom, top, frustnear, frustfar);
+
+ glGetDoublev(GL_PROJECTION_MATRIX, mat);
+ result.setValue(mat);
+
+ return result;
+}
+
// next arguments probably contain redundant info, for later...
-void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat, const MT_Vector3& campos,
- const MT_Point3 &, const MT_Quaternion &camOrientQuat)
+void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat,
+ const MT_Matrix3x3 & camOrientMat3x3,
+ const MT_Point3 & pos,
+ bool perspective)
{
m_viewmatrix = mat;
// correction for stereo
- if(Stereo())
+ if(Stereo() && perspective)
{
- MT_Matrix3x3 camOrientMat3x3(camOrientQuat);
MT_Vector3 unitViewDir(0.0, -1.0, 0.0); // minus y direction, Blender convention
MT_Vector3 unitViewupVec(0.0, 0.0, 1.0);
MT_Vector3 viewDir, viewupVec;
@@ -894,7 +1005,7 @@ void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat, const MT_Vecto
glMatrixMode(GL_MODELVIEW);
glLoadMatrixd(glviewmat);
- m_campos = campos;
+ m_campos = pos;
}
@@ -990,6 +1101,8 @@ void RAS_OpenGLRasterizer::DisableMotionBlur()
void RAS_OpenGLRasterizer::SetBlendingMode(int blendmode)
{
+ GPU_set_material_blend_mode(blendmode);
+/*
if(blendmode == m_last_blendmode)
return;
@@ -1016,6 +1129,7 @@ void RAS_OpenGLRasterizer::SetBlendingMode(int blendmode)
}
m_last_blendmode = blendmode;
+*/
}
void RAS_OpenGLRasterizer::SetFrontFace(bool ccw)
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
index 83a9f759a8b..e3422394e9e 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
@@ -100,7 +100,7 @@ protected:
TexCoGen m_attrib[RAS_MAX_ATTRIB];
int m_texco_num;
int m_attrib_num;
- int m_last_blendmode;
+ //int m_last_blendmode;
bool m_last_frontface;
/** Stores the caching information for the last material activated. */
@@ -163,9 +163,9 @@ public:
virtual void SetProjectionMatrix(const MT_Matrix4x4 & mat);
virtual void SetViewMatrix(
const MT_Matrix4x4 & mat,
- const MT_Vector3& campos,
- const MT_Point3 &camLoc,
- const MT_Quaternion &camOrientQuat
+ const MT_Matrix3x3 & ori,
+ const MT_Point3 & pos,
+ bool perspective
);
virtual const MT_Point3& GetCameraPosition();
@@ -190,6 +190,7 @@ public:
void DisableFog();
virtual void DisplayFog();
+ virtual bool IsFogEnabled();
virtual void SetBackColor(
float red,
@@ -215,6 +216,15 @@ public:
bool perspective
);
+ virtual MT_Matrix4x4 GetOrthoMatrix(
+ float left,
+ float right,
+ float bottom,
+ float top,
+ float frustnear,
+ float frustfar
+ );
+
virtual void SetSpecularity(
float specX,
float specY,
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
index 2cb3b52adfb..00f0f27b6c1 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
@@ -110,6 +110,12 @@ void RAS_VAOpenGLRasterizer::IndexPrimitives(RAS_MeshSlot& ms)
RAS_MeshSlot::iterator it;
GLenum drawmode;
+ if (ms.m_pDerivedMesh) {
+ // cannot be handled here, pass to RAS_OpenGLRasterizer
+ RAS_OpenGLRasterizer::IndexPrimitivesInternal(ms, false);
+ return;
+ }
+
if(!wireframe)
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -167,6 +173,12 @@ void RAS_VAOpenGLRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms)
RAS_MeshSlot::iterator it;
GLenum drawmode;
+ if (ms.m_pDerivedMesh) {
+ // cannot be handled here, pass to RAS_OpenGLRasterizer
+ RAS_OpenGLRasterizer::IndexPrimitivesInternal(ms, true);
+ return;
+ }
+
if(!wireframe)
EnableTextures(true);
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
index c0b73e7644f..3d605ce12b8 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/SConscript
@@ -5,6 +5,8 @@ sources = env.Glob('*.cpp')
incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/Rasterizer #source/gameengine/BlenderRoutines '
incs += ' #source/blender/gpu #extern/glew/include ' + env['BF_OPENGL_INC']
+incs += ' #source/blender/gameengine/Ketsji #source/gameengine/SceneGraph #source/blender/makesdna #source/blender/blenkernel'
+incs += ' #intern/guardedalloc #source/blender/blenlib'
cxxflags = []
if env['OURPLATFORM']=='win32-vc':
diff --git a/source/gameengine/Rasterizer/RAS_TexVert.cpp b/source/gameengine/Rasterizer/RAS_TexVert.cpp
index 210addfb927..8eee24ac7f0 100644
--- a/source/gameengine/Rasterizer/RAS_TexVert.cpp
+++ b/source/gameengine/Rasterizer/RAS_TexVert.cpp
@@ -113,19 +113,20 @@ void RAS_TexVert::SetTangent(const MT_Vector3& tangent)
tangent.getValue(m_tangent);
}
+
// compare two vertices, and return TRUE if both are almost identical (they can be shared)
-#define _VEC_EQUAL3(_v1, _v2) (_v1[0]==_v2[0] && _v1[1]==_v2[1] && _v1[2]==_v2[2])
-#define _VEC_EQUAL2(_v1, _v2) (_v1[0]==_v2[0] && _v1[1]==_v2[1])
bool RAS_TexVert::closeTo(const RAS_TexVert* other)
{
- return (m_flag == other->m_flag &&
+ return (
+ /* m_flag == other->m_flag && */
+ /* at the moment the face only stores the smooth/flat setting so dont bother comparing it */
m_rgba == other->m_rgba &&
- _VEC_EQUAL3(m_normal, other->m_normal) &&
- _VEC_EQUAL3(m_tangent, other->m_tangent) &&
- _VEC_EQUAL2(m_uv1, other->m_uv1) &&
- _VEC_EQUAL2(m_uv2, other->m_uv2) // p --
- /* we know the verts must be shared so dont need to check this */
- /*&& FAST_MT_fuzzyEqual3(m_localxyz, other->m_localxyz)*/) ;
+ MT_fuzzyEqual(MT_Vector3(m_normal), MT_Vector3(other->m_normal)) &&
+ MT_fuzzyEqual(MT_Vector3(m_tangent), MT_Vector3(other->m_tangent)) &&
+ MT_fuzzyEqual(MT_Vector2(m_uv1), MT_Vector2(other->m_uv1)) &&
+ MT_fuzzyEqual(MT_Vector2(m_uv2), MT_Vector2(other->m_uv2)) /* &&
+ MT_fuzzyEqual(MT_Vector3(m_localxyz), MT_Vector3(other->m_localxyz))*/) ;
+ /* dont bother comparing m_localxyz since we know there from the same vert */
}
short RAS_TexVert::getFlag() const
diff --git a/source/gameengine/Rasterizer/SConscript b/source/gameengine/Rasterizer/SConscript
index 9f4cd61e7bb..018f2ab4d20 100644
--- a/source/gameengine/Rasterizer/SConscript
+++ b/source/gameengine/Rasterizer/SConscript
@@ -4,7 +4,7 @@ Import ('env')
sources = env.Glob('*.cpp')
-incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/blender/blenkernel #source/blender/makesdna'
+incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna'
incs += ' ' + env['BF_PYTHON_INC']
cxxflags = []
diff --git a/source/gameengine/SceneGraph/SG_DList.h b/source/gameengine/SceneGraph/SG_DList.h
new file mode 100644
index 00000000000..7bef13cc9e3
--- /dev/null
+++ b/source/gameengine/SceneGraph/SG_DList.h
@@ -0,0 +1,161 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifndef __SG_DLIST
+#define __SG_DLIST
+
+#include <stdlib.h>
+
+/**
+ * Double circular linked list
+ */
+class SG_DList
+{
+protected :
+ SG_DList* m_flink;
+ SG_DList* m_blink;
+
+public:
+ template<typename T> class iterator
+ {
+ private:
+ SG_DList& m_head;
+ T* m_current;
+ public:
+ typedef iterator<T> _myT;
+ iterator(SG_DList& head) : m_head(head), m_current(NULL) {}
+ ~iterator() {}
+
+ void begin()
+ {
+ m_current = (T*)m_head.Peek();
+ }
+ void back()
+ {
+ m_current = (T*)m_head.Back();
+ }
+ bool end()
+ {
+ return (m_current == (T*)m_head.Self());
+ }
+ bool add_back(T* item)
+ {
+ return m_current->AddBack(item);
+ }
+ T* operator*()
+ {
+ return m_current;
+ }
+ _myT& operator++()
+ {
+ // no check of NULL! make sure you don't try to increment beyond end
+ m_current = (T*)m_current->Peek();
+ return *this;
+ }
+ _myT& operator--()
+ {
+ // no check of NULL! make sure you don't try to increment beyond end
+ m_current = (T*)m_current->Back();
+ return *this;
+ }
+ };
+
+ SG_DList()
+ {
+ m_flink = m_blink = this;
+ }
+ SG_DList(const SG_DList& other)
+ {
+ m_flink = m_blink = this;
+ }
+ virtual ~SG_DList()
+ {
+ Delink();
+ }
+
+ inline bool Empty() // Check for empty queue
+ {
+ return ( m_flink == this );
+ }
+ bool AddBack( SG_DList *item ) // Add to the back
+ {
+ if (!item->Empty())
+ return false;
+ item->m_blink = m_blink;
+ item->m_flink = this;
+ m_blink->m_flink = item;
+ m_blink = item;
+ return true;
+ }
+ bool AddFront( SG_DList *item ) // Add to the back
+ {
+ if (!item->Empty())
+ return false;
+ item->m_flink = m_flink;
+ item->m_blink = this;
+ m_flink->m_blink = item;
+ m_flink = item;
+ return true;
+ }
+ SG_DList *Remove() // Remove from the front
+ {
+ if (Empty())
+ {
+ return NULL;
+ }
+ SG_DList* item = m_flink;
+ m_flink = item->m_flink;
+ m_flink->m_blink = this;
+ item->m_flink = item->m_blink = item;
+ return item;
+ }
+ bool Delink() // Remove from the middle
+ {
+ if (Empty())
+ return false;
+ m_blink->m_flink = m_flink;
+ m_flink->m_blink = m_blink;
+ m_flink = m_blink = this;
+ return true;
+ }
+ inline SG_DList *Peek() // Look at front without removing
+ {
+ return m_flink;
+ }
+ inline SG_DList *Back() // Look at front without removing
+ {
+ return m_blink;
+ }
+ inline SG_DList *Self()
+ {
+ return this;
+ }
+};
+
+#endif //__SG_DLIST
+
diff --git a/source/gameengine/SceneGraph/SG_IObject.cpp b/source/gameengine/SceneGraph/SG_IObject.cpp
index fbab4032a10..5795ca57113 100644
--- a/source/gameengine/SceneGraph/SG_IObject.cpp
+++ b/source/gameengine/SceneGraph/SG_IObject.cpp
@@ -39,19 +39,20 @@ SG_IObject::
SG_IObject(
void* clientobj,
void* clientinfo,
- SG_Callbacks callbacks
+ SG_Callbacks& callbacks
):
+ SG_QList(),
m_SGclientObject(clientobj),
- m_SGclientInfo(clientinfo),
- m_callbacks(callbacks)
+ m_SGclientInfo(clientinfo)
{
- //nothing to do
+ m_callbacks = callbacks;
}
SG_IObject::
SG_IObject(
const SG_IObject &other
) :
+ SG_QList(),
m_SGclientObject(other.m_SGclientObject),
m_SGclientInfo(other.m_SGclientInfo),
m_callbacks(other.m_callbacks)
@@ -74,92 +75,17 @@ RemoveAllControllers(
m_SGcontrollers.clear();
}
-/// Needed for replication
- SGControllerList&
-SG_IObject::
-GetSGControllerList(
-){
- return m_SGcontrollers;
-}
-
- void*
-SG_IObject::
-GetSGClientObject(
-){
- return m_SGclientObject;
-}
-
-const
- void*
-SG_IObject::
-GetSGClientObject(
-) const {
- return m_SGclientObject;
-}
-
- void
-SG_IObject::
-SetSGClientObject(
- void* clientObject
-){
- m_SGclientObject = clientObject;
-}
-
-
- bool
-SG_IObject::
-ActivateReplicationCallback(
- SG_IObject *replica
-){
- if (m_callbacks.m_replicafunc)
- {
- // Call client provided replication func
- if (m_callbacks.m_replicafunc(replica,m_SGclientObject,m_SGclientInfo) == NULL)
- return false;
- }
- return true;
-};
-
- void
-SG_IObject::
-ActivateDestructionCallback(
-){
- if (m_callbacks.m_destructionfunc)
- {
- // Call client provided destruction function on this!
- m_callbacks.m_destructionfunc(this,m_SGclientObject,m_SGclientInfo);
- }
- else
- {
- // no callback but must still destroy the node to avoid memory leak
- delete this;
- }
-}
-
- void
-SG_IObject::
-ActivateUpdateTransformCallback(
-){
- if (m_callbacks.m_updatefunc)
- {
- // Call client provided update func.
- m_callbacks.m_updatefunc(this, m_SGclientObject, m_SGclientInfo);
- }
-}
-
- void
-SG_IObject::
-SetControllerTime(
- double time
-){
+void SG_IObject::SetControllerTime(double time)
+{
SGControllerList::iterator contit;
-
for (contit = m_SGcontrollers.begin();contit!=m_SGcontrollers.end();++contit)
{
(*contit)->SetSimulatedTime(time);
}
}
+/// Needed for replication
+
SG_IObject::
~SG_IObject()
diff --git a/source/gameengine/SceneGraph/SG_IObject.h b/source/gameengine/SceneGraph/SG_IObject.h
index 9012b532059..8f448a0e890 100644
--- a/source/gameengine/SceneGraph/SG_IObject.h
+++ b/source/gameengine/SceneGraph/SG_IObject.h
@@ -29,6 +29,7 @@
#ifndef __SG_IOBJECT
#define __SG_IOBJECT
+#include "SG_QList.h"
#include <vector>
// used for debugging: stage of the game engine main loop at which a Scenegraph modification is done
@@ -84,6 +85,18 @@ typedef void (*SG_UpdateTransformCallback)(
void* clientinfo
);
+typedef bool (*SG_ScheduleUpdateCallback)(
+ SG_IObject* sgobject,
+ void* clientobj,
+ void* clientinfo
+);
+
+typedef bool (*SG_RescheduleUpdateCallback)(
+ SG_IObject* sgobject,
+ void* clientobj,
+ void* clientinfo
+);
+
/**
* SG_Callbacks hold 2 call backs to the outside world.
@@ -106,30 +119,38 @@ struct SG_Callbacks
):
m_replicafunc(NULL),
m_destructionfunc(NULL),
- m_updatefunc(NULL)
+ m_updatefunc(NULL),
+ m_schedulefunc(NULL),
+ m_reschedulefunc(NULL)
{
};
SG_Callbacks(
SG_ReplicationNewCallback repfunc,
SG_DestructionNewCallback destructfunc,
- SG_UpdateTransformCallback updatefunc
+ SG_UpdateTransformCallback updatefunc,
+ SG_ScheduleUpdateCallback schedulefunc,
+ SG_RescheduleUpdateCallback reschedulefunc
):
m_replicafunc(repfunc),
m_destructionfunc(destructfunc),
- m_updatefunc(updatefunc)
+ m_updatefunc(updatefunc),
+ m_schedulefunc(schedulefunc),
+ m_reschedulefunc(reschedulefunc)
{
};
SG_ReplicationNewCallback m_replicafunc;
SG_DestructionNewCallback m_destructionfunc;
SG_UpdateTransformCallback m_updatefunc;
+ SG_ScheduleUpdateCallback m_schedulefunc;
+ SG_RescheduleUpdateCallback m_reschedulefunc;
};
/**
base object that can be part of the scenegraph.
*/
-class SG_IObject
+class SG_IObject : public SG_QList
{
private :
@@ -177,10 +198,18 @@ public:
* using STL?
*/
- SGControllerList&
- GetSGControllerList(
- );
+ SGControllerList& GetSGControllerList()
+ {
+ return m_SGcontrollers;
+ }
+ /**
+ *
+ */
+ SG_Callbacks& GetCallBackFunctions()
+ {
+ return m_callbacks;
+ }
/**
* Get the client object associated with this
@@ -192,16 +221,16 @@ public:
* This may be NULL.
*/
- void*
- GetSGClientObject(
- );
+ inline const void* GetSGClientObject() const
+ {
+ return m_SGclientObject;
+ }
- const
- void*
- GetSGClientObject(
- ) const ;
+ inline void* GetSGClientObject()
+ {
+ return m_SGclientObject;
+ }
-
/**
* Set the client object for this node. This is just a
* pointer to an object allocated that should exist for
@@ -209,10 +238,10 @@ public:
* this function is called again.
*/
- void
- SetSGClientObject(
- void* clientObject
- );
+ void SetSGClientObject(void* clientObject)
+ {
+ m_SGclientObject = clientObject;
+ }
/**
* Set the current simulation time for this node.
@@ -220,10 +249,7 @@ public:
* the nodes list of controllers and calls their SetSimulatedTime methods
*/
- void
- SetControllerTime(
- double time
- );
+ void SetControllerTime(double time);
virtual
void
@@ -235,20 +261,76 @@ protected :
bool
ActivateReplicationCallback(
SG_IObject *replica
- );
+ )
+ {
+ if (m_callbacks.m_replicafunc)
+ {
+ // Call client provided replication func
+ if (m_callbacks.m_replicafunc(replica,m_SGclientObject,m_SGclientInfo) == NULL)
+ return false;
+ }
+ return true;
+ }
+
void
ActivateDestructionCallback(
- );
+ )
+ {
+ if (m_callbacks.m_destructionfunc)
+ {
+ // Call client provided destruction function on this!
+ m_callbacks.m_destructionfunc(this,m_SGclientObject,m_SGclientInfo);
+ }
+ else
+ {
+ // no callback but must still destroy the node to avoid memory leak
+ delete this;
+ }
+ }
void
ActivateUpdateTransformCallback(
- );
+ )
+ {
+ if (m_callbacks.m_updatefunc)
+ {
+ // Call client provided update func.
+ m_callbacks.m_updatefunc(this, m_SGclientObject, m_SGclientInfo);
+ }
+ }
+
+ bool
+ ActivateScheduleUpdateCallback(
+ )
+ {
+ // HACK, this check assumes that the scheduled nodes are put on a DList (see SG_Node.h)
+ // The early check on Empty() allows up to avoid calling the callback function
+ // when the node is already scheduled for update.
+ if (Empty() && m_callbacks.m_schedulefunc)
+ {
+ // Call client provided update func.
+ return m_callbacks.m_schedulefunc(this, m_SGclientObject, m_SGclientInfo);
+ }
+ return false;
+ }
+
+ void
+ ActivateRecheduleUpdateCallback(
+ )
+ {
+ if (m_callbacks.m_reschedulefunc)
+ {
+ // Call client provided update func.
+ m_callbacks.m_reschedulefunc(this, m_SGclientObject, m_SGclientInfo);
+ }
+ }
+
SG_IObject(
void* clientobj,
void* clientinfo,
- SG_Callbacks callbacks
+ SG_Callbacks& callbacks
);
SG_IObject(
diff --git a/source/gameengine/SceneGraph/SG_Node.cpp b/source/gameengine/SceneGraph/SG_Node.cpp
index 64d9019c86a..4cd43e852b8 100644
--- a/source/gameengine/SceneGraph/SG_Node.cpp
+++ b/source/gameengine/SceneGraph/SG_Node.cpp
@@ -40,12 +40,13 @@ using namespace std;
SG_Node::SG_Node(
void* clientobj,
void* clientinfo,
- SG_Callbacks callbacks
+ SG_Callbacks& callbacks
)
: SG_Spatial(clientobj,clientinfo,callbacks),
m_SGparent(NULL)
{
+ m_modified = true;
}
SG_Node::SG_Node(
@@ -55,7 +56,7 @@ SG_Node::SG_Node(
m_children(other.m_children),
m_SGparent(other.m_SGparent)
{
- // nothing to do
+ m_modified = true;
}
SG_Node::~SG_Node()
@@ -141,22 +142,6 @@ Destruct()
ActivateDestructionCallback();
}
-
- SG_Node*
-SG_Node::
-GetSGParent(
-) const {
- return m_SGparent;
-}
-
- void
-SG_Node::
-SetSGParent(
- SG_Node* parent
-){
- m_SGparent = parent;
-}
-
const
SG_Node*
SG_Node::
@@ -165,28 +150,6 @@ GetRootSGParent(
return (m_SGparent ? (const SG_Node*) m_SGparent->GetRootSGParent() : (const SG_Node*) this);
}
- bool
-SG_Node::
-IsVertexParent()
-{
- if (m_parent_relation)
- {
- return m_parent_relation->IsVertexRelation();
- }
- return false;
-}
-
- bool
-SG_Node::
-IsSlowParent()
-{
- if (m_parent_relation)
- {
- return m_parent_relation->IsSlowRelation();
- }
- return false;
-}
-
void
SG_Node::
DisconnectFromParent(
@@ -199,8 +162,6 @@ DisconnectFromParent(
}
-
-
void SG_Node::AddChild(SG_Node* child)
{
m_children.push_back(child);
@@ -228,6 +189,9 @@ void SG_Node::UpdateWorldData(double time, bool parentUpdated)
// to update the
ActivateUpdateTransformCallback();
+ // The node is updated, remove it from the update list
+ Delink();
+
// update children's worlddata
for (NodeList::iterator it = m_children.begin();it!=m_children.end();++it)
{
@@ -236,24 +200,6 @@ void SG_Node::UpdateWorldData(double time, bool parentUpdated)
}
-NodeList& SG_Node::GetSGChildren()
-{
- return this->m_children;
-}
-
-
-const NodeList& SG_Node::GetSGChildren() const
-{
- return this->m_children;
-}
-
-
-void SG_Node::ClearSGChildren()
-{
- m_children.clear();
-}
-
-
void SG_Node::SetSimulatedTime(double time,bool recurse)
{
diff --git a/source/gameengine/SceneGraph/SG_Node.h b/source/gameengine/SceneGraph/SG_Node.h
index 29943653a81..7c6ef92f670 100644
--- a/source/gameengine/SceneGraph/SG_Node.h
+++ b/source/gameengine/SceneGraph/SG_Node.h
@@ -44,7 +44,7 @@ public:
SG_Node(
void* clientobj,
void* clientinfo,
- SG_Callbacks callbacks
+ SG_Callbacks& callbacks
);
SG_Node(
@@ -85,45 +85,47 @@ public:
* @return a reference to the list of children of this node.
*/
- NodeList&
- GetSGChildren(
- );
+ NodeList& GetSGChildren()
+ {
+ return this->m_children;
+ }
/**
* Get the current list of children.
* @return a const reference to the current list of children of this node.
*/
- const
- NodeList&
- GetSGChildren(
- ) const;
+ const NodeList& GetSGChildren() const
+ {
+ return this->m_children;
+ }
/**
* Clear the list of children associated with this node
*/
- void
- ClearSGChildren(
- );
+ void ClearSGChildren()
+ {
+ m_children.clear();
+ }
/**
* return the parent of this node if it exists.
*/
- SG_Node*
- GetSGParent(
- ) const ;
-
+ SG_Node* GetSGParent() const
+ {
+ return m_SGparent;
+ }
/**
* Set the parent of this node.
*/
- void
- SetSGParent(
- SG_Node* parent
- );
+ void SetSGParent(SG_Node* parent)
+ {
+ m_SGparent = parent;
+ }
/**
* Return the top node in this node's Scene graph hierarchy
@@ -143,30 +145,33 @@ public:
);
/**
- * Tell this node to treat it's parent as a vertex parent.
- */
-
- void
- SetVertexParent(
- bool isvertexparent
- ) ;
-
-
- /**
* Return vertex parent status.
*/
+ bool IsVertexParent()
+ {
+ if (m_parent_relation)
+ {
+ return m_parent_relation->IsVertexRelation();
+ }
+ return false;
+ }
+
- bool
- IsVertexParent(
- ) ;
-
/**
* Return slow parent status.
*/
- bool
- IsSlowParent(
- ) ;
+ bool IsSlowParent()
+ {
+ if (m_parent_relation)
+ {
+ return m_parent_relation->IsSlowRelation();
+ }
+ return false;
+ }
+
+
+
/**
* Update the spatial data of this node. Iterate through
@@ -191,6 +196,42 @@ public:
);
/**
+ * Schedule this node for update by placing it in head queue
+ */
+ bool Schedule(SG_QList& head)
+ {
+ // Put top parent in front of list to make sure they are updated before their
+ // children => the children will be udpated and removed from the list before
+ // we get to them, should they be in the list too.
+ return (m_SGparent)?head.AddBack(this):head.AddFront(this);
+ }
+
+ /**
+ * Used during Scenegraph update
+ */
+ static SG_Node* GetNextScheduled(SG_QList& head)
+ {
+ return static_cast<SG_Node*>(head.Remove());
+ }
+
+ /**
+ * Make this node ready for schedule on next update. This is needed for nodes
+ * that must always be updated (slow parent, bone parent)
+ */
+ bool Reschedule(SG_QList& head)
+ {
+ return head.QAddBack(this);
+ }
+
+ /**
+ * Used during Scenegraph update
+ */
+ static SG_Node* GetNextRescheduled(SG_QList& head)
+ {
+ return static_cast<SG_Node*>(head.QRemove());
+ }
+
+ /**
* Node replication functions.
*/
diff --git a/source/gameengine/SceneGraph/SG_QList.h b/source/gameengine/SceneGraph/SG_QList.h
new file mode 100644
index 00000000000..d8afc33ea4f
--- /dev/null
+++ b/source/gameengine/SceneGraph/SG_QList.h
@@ -0,0 +1,157 @@
+/**
+ * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifndef __SG_QLIST
+#define __SG_QLIST
+
+#include "SG_DList.h"
+
+/**
+ * Double-Double circular linked list
+ * For storing an object is two lists simultaneously
+ */
+class SG_QList : public SG_DList
+{
+protected :
+ SG_QList* m_fqlink;
+ SG_QList* m_bqlink;
+
+public:
+ template<typename T> class iterator
+ {
+ private:
+ SG_QList& m_head;
+ T* m_current;
+ public:
+ typedef iterator<T> _myT;
+ iterator(SG_QList& head, SG_QList* current=NULL) : m_head(head) { m_current = (T*)current; }
+ ~iterator() {}
+
+ void begin()
+ {
+ m_current = (T*)m_head.QPeek();
+ }
+ void back()
+ {
+ m_current = (T*)m_head.QBack();
+ }
+ bool end()
+ {
+ return (m_current == (T*)m_head.Self());
+ }
+ bool add_back(T* item)
+ {
+ return m_current->QAddBack(item);
+ }
+ T* operator*()
+ {
+ return m_current;
+ }
+ _myT& operator++()
+ {
+ m_current = (T*)m_current->QPeek();
+ return *this;
+ }
+ _myT& operator--()
+ {
+ // no check on NULL! make sure you don't try to increment beyond end
+ m_current = (T*)m_current->QBack();
+ return *this;
+ }
+ };
+
+ SG_QList() : SG_DList()
+ {
+ m_fqlink = m_bqlink = this;
+ }
+ SG_QList(const SG_QList& other) : SG_DList()
+ {
+ m_fqlink = m_bqlink = this;
+ }
+ virtual ~SG_QList()
+ {
+ QDelink();
+ }
+
+ inline bool QEmpty() // Check for empty queue
+ {
+ return ( m_fqlink == this );
+ }
+ bool QAddBack( SG_QList *item ) // Add to the back
+ {
+ if (!item->QEmpty())
+ return false;
+ item->m_bqlink = m_bqlink;
+ item->m_fqlink = this;
+ m_bqlink->m_fqlink = item;
+ m_bqlink = item;
+ return true;
+ }
+ bool QAddFront( SG_QList *item ) // Add to the back
+ {
+ if (!item->Empty())
+ return false;
+ item->m_fqlink = m_fqlink;
+ item->m_bqlink = this;
+ m_fqlink->m_bqlink = item;
+ m_fqlink = item;
+ return true;
+ }
+ SG_QList *QRemove() // Remove from the front
+ {
+ if (QEmpty())
+ {
+ return NULL;
+ }
+ SG_QList* item = m_fqlink;
+ m_fqlink = item->m_fqlink;
+ m_fqlink->m_bqlink = this;
+ item->m_fqlink = item->m_bqlink = item;
+ return item;
+ }
+ bool QDelink() // Remove from the middle
+ {
+ if (QEmpty())
+ return false;
+ m_bqlink->m_fqlink = m_fqlink;
+ m_fqlink->m_bqlink = m_bqlink;
+ m_fqlink = m_bqlink = this;
+ return true;
+ }
+ inline SG_QList *QPeek() // Look at front without removing
+ {
+ return m_fqlink;
+ }
+ inline SG_QList *QBack() // Look at front without removing
+ {
+ return m_bqlink;
+ }
+};
+
+#endif //__SG_QLIST
+
diff --git a/source/gameengine/SceneGraph/SG_Spatial.cpp b/source/gameengine/SceneGraph/SG_Spatial.cpp
index 2f3176816c6..5a47f07f573 100644
--- a/source/gameengine/SceneGraph/SG_Spatial.cpp
+++ b/source/gameengine/SceneGraph/SG_Spatial.cpp
@@ -40,7 +40,7 @@ SG_Spatial::
SG_Spatial(
void* clientobj,
void* clientinfo,
- SG_Callbacks callbacks
+ SG_Callbacks& callbacks
):
SG_IObject(clientobj,clientinfo,callbacks),
@@ -56,7 +56,8 @@ SG_Spatial(
m_bbox(MT_Point3(-1.0, -1.0, -1.0), MT_Point3(1.0, 1.0, 1.0)),
m_radius(1.0),
- m_modified(true)
+ m_modified(false),
+ m_ogldirty(false)
{
}
@@ -76,7 +77,9 @@ SG_Spatial(
m_parent_relation(NULL),
m_bbox(other.m_bbox),
- m_radius(other.m_radius)
+ m_radius(other.m_radius),
+ m_modified(false),
+ m_ogldirty(false)
{
// duplicate the parent relation for this object
m_parent_relation = other.m_parent_relation->NewCopy();
@@ -88,13 +91,6 @@ SG_Spatial::
delete (m_parent_relation);
}
- SG_ParentRelation *
-SG_Spatial::
-GetParentRelation(
-){
- return m_parent_relation;
-}
-
void
SG_Spatial::
SetParentRelation(
@@ -102,7 +98,7 @@ SetParentRelation(
){
delete (m_parent_relation);
m_parent_relation = relation;
- m_modified = true;
+ SetModified();
}
@@ -143,11 +139,6 @@ UpdateSpatialData(
return bComputesWorldTransform;
}
-bool SG_Spatial::ComputeWorldTransforms(const SG_Spatial *parent, bool& parentUpdated)
-{
- return m_parent_relation->UpdateChildCoordinates(this,parent,parentUpdated);
-}
-
/**
* Position and translation methods
*/
@@ -169,56 +160,14 @@ RelativeTranslate(
m_localPosition += trans;
}
}
- m_modified = true;
+ SetModified();
}
- void
-SG_Spatial::
-SetLocalPosition(
- const MT_Point3& trans
-){
- m_localPosition = trans;
- m_modified = true;
-}
-
- void
-SG_Spatial::
-SetWorldPosition(
- const MT_Point3& trans
-) {
- m_worldPosition = trans;
-}
/**
* Scaling methods.
*/
- void
-SG_Spatial::
-RelativeScale(
- const MT_Vector3& scale
-){
- m_localScaling = m_localScaling * scale;
- m_modified = true;
-}
-
- void
-SG_Spatial::
-SetLocalScale(
- const MT_Vector3& scale
-){
- m_localScaling = scale;
- m_modified = true;
-}
-
-
- void
-SG_Spatial::
-SetWorldScale(
- const MT_Vector3& scale
-){
- m_worldScaling = scale;
-}
/**
* Orientation and rotation methods.
@@ -236,93 +185,11 @@ RelativeRotate(
rot
:
(GetWorldOrientation().inverse() * rot * GetWorldOrientation()));
- m_modified = true;
-}
-
- void
-SG_Spatial::
-SetLocalOrientation(const MT_Matrix3x3& rot)
-{
- m_localRotation = rot;
- m_modified = true;
+ SetModified();
}
- void
-SG_Spatial::
-SetWorldOrientation(
- const MT_Matrix3x3& rot
-) {
- m_worldRotation = rot;
-}
-
-const
- MT_Point3&
-SG_Spatial::
-GetLocalPosition(
-) const {
- return m_localPosition;
-}
-
-const
- MT_Matrix3x3&
-SG_Spatial::
-GetLocalOrientation(
-) const {
- return m_localRotation;
-}
-
-const
- MT_Vector3&
-SG_Spatial::
-GetLocalScale(
-) const{
- return m_localScaling;
-}
-
-
-const
- MT_Point3&
-SG_Spatial::
-GetWorldPosition(
-) const {
- return m_worldPosition;
-}
-
-const
- MT_Matrix3x3&
-SG_Spatial::
-GetWorldOrientation(
-) const {
- return m_worldRotation;
-}
-
-const
- MT_Vector3&
-SG_Spatial::
-GetWorldScaling(
-) const {
- return m_worldScaling;
-}
-
-void SG_Spatial::SetWorldFromLocalTransform()
-{
- m_worldPosition= m_localPosition;
- m_worldScaling= m_localScaling;
- m_worldRotation= m_localRotation;
-}
-
-SG_BBox& SG_Spatial::BBox()
-{
- return m_bbox;
-}
-
-void SG_Spatial::SetBBox(SG_BBox& bbox)
-{
- m_bbox = bbox;
-}
-
MT_Transform SG_Spatial::GetWorldTransform() const
{
return MT_Transform(m_worldPosition,
diff --git a/source/gameengine/SceneGraph/SG_Spatial.h b/source/gameengine/SceneGraph/SG_Spatial.h
index c2ed80d21b2..6e274487c9d 100644
--- a/source/gameengine/SceneGraph/SG_Spatial.h
+++ b/source/gameengine/SceneGraph/SG_Spatial.h
@@ -35,6 +35,7 @@
#include <MT_Matrix3x3.h> // or Quaternion later ?
#include "SG_IObject.h"
#include "SG_BBox.h"
+#include "SG_ParentRelation.h"
class SG_Node;
@@ -62,9 +63,24 @@ protected:
SG_BBox m_bbox;
MT_Scalar m_radius;
bool m_modified;
+ bool m_ogldirty; // true if the openGL matrix for this object must be recomputed
public:
+ inline void ClearModified()
+ {
+ m_modified = false;
+ m_ogldirty = true;
+ }
+ inline void SetModified()
+ {
+ m_modified = true;
+ ActivateScheduleUpdateCallback();
+ }
+ inline void ClearDirty()
+ {
+ m_ogldirty = false;
+ }
/**
* Define the realtionship this node has with it's parent
* node. You should pass an unshared instance of an SG_ParentRelation
@@ -84,9 +100,12 @@ public:
SG_ParentRelation *relation
);
- SG_ParentRelation *
- GetParentRelation(
- );
+ SG_ParentRelation * GetParentRelation()
+ {
+ return m_parent_relation;
+ }
+
+
/**
@@ -105,15 +124,17 @@ public:
bool local
);
- void
- SetLocalPosition(
- const MT_Point3& trans
- );
+ void SetLocalPosition(const MT_Point3& trans)
+ {
+ m_localPosition = trans;
+ SetModified();
+ }
+
+ void SetWorldPosition(const MT_Point3& trans)
+ {
+ m_worldPosition = trans;
+ }
- void
- SetWorldPosition(
- const MT_Point3& trans
- );
void
RelativeRotate(
@@ -121,72 +142,102 @@ public:
bool local
);
- void
- SetLocalOrientation(
- const MT_Matrix3x3& rot
- );
+ void SetLocalOrientation(const MT_Matrix3x3& rot)
+ {
+ m_localRotation = rot;
+ SetModified();
+ }
+
+ // rot is arrange like openGL matrix
+ void SetLocalOrientation(const float* rot)
+ {
+ m_localRotation.setValue(rot);
+ SetModified();
+ }
+
+ void SetWorldOrientation(const MT_Matrix3x3& rot)
+ {
+ m_worldRotation = rot;
+ }
+
+ void RelativeScale(const MT_Vector3& scale)
+ {
+ m_localScaling = m_localScaling * scale;
+ SetModified();
+ }
+
+ void SetLocalScale(const MT_Vector3& scale)
+ {
+ m_localScaling = scale;
+ SetModified();
+ }
+
+ void SetWorldScale(const MT_Vector3& scale)
+ {
+ m_worldScaling = scale;
+ }
+
+ const MT_Point3& GetLocalPosition() const
+ {
+ return m_localPosition;
+ }
+
+ const MT_Matrix3x3& GetLocalOrientation() const
+ {
+ return m_localRotation;
+ }
+
+ const MT_Vector3& GetLocalScale() const
+ {
+ return m_localScaling;
+ }
+
+ const MT_Point3& GetWorldPosition() const
+ {
+ return m_worldPosition;
+ }
+
+ const MT_Matrix3x3& GetWorldOrientation() const
+ {
+ return m_worldRotation;
+ }
+
+ const MT_Vector3& GetWorldScaling() const
+ {
+ return m_worldScaling;
+ }
+
+ void SetWorldFromLocalTransform()
+ {
+ m_worldPosition= m_localPosition;
+ m_worldScaling= m_localScaling;
+ m_worldRotation= m_localRotation;
+ }
- void
- SetWorldOrientation(
- const MT_Matrix3x3& rot
- );
- void
- RelativeScale(
- const MT_Vector3& scale
- );
-
- void
- SetLocalScale(
- const MT_Vector3& scale
- );
-
- void
- SetWorldScale(
- const MT_Vector3& scale
- );
-
- const
- MT_Point3&
- GetLocalPosition(
- ) const ;
-
- const
- MT_Matrix3x3&
- GetLocalOrientation(
- ) const ;
-
- const
- MT_Vector3&
- GetLocalScale(
- ) const;
-
- const
- MT_Point3&
- GetWorldPosition(
- ) const ;
-
- const
- MT_Matrix3x3&
- GetWorldOrientation(
- ) const ;
-
- const
- MT_Vector3&
- GetWorldScaling(
- ) const ;
-
- void SetWorldFromLocalTransform();
MT_Transform GetWorldTransform() const;
- bool ComputeWorldTransforms(const SG_Spatial *parent, bool& parentUpdated);
+ bool ComputeWorldTransforms(const SG_Spatial *parent, bool& parentUpdated)
+ {
+ return m_parent_relation->UpdateChildCoordinates(this,parent,parentUpdated);
+ }
+
/**
* Bounding box functions.
*/
- SG_BBox& BBox();
- void SetBBox(SG_BBox & bbox);
+ SG_BBox& BBox()
+ {
+ return m_bbox;
+ }
+
+ void SetBBox(SG_BBox& bbox)
+ {
+ m_bbox = bbox;
+ }
+
+
bool inside(const MT_Point3 &point) const;
void getBBox(MT_Point3 *box) const;
void getAABBox(MT_Point3 *box) const;
@@ -194,6 +245,7 @@ public:
MT_Scalar Radius() const { return m_radius; }
void SetRadius(MT_Scalar radius) { m_radius = radius; }
bool IsModified() { return m_modified; }
+ bool IsDirty() { return m_ogldirty; }
protected:
friend class SG_Controller;
@@ -210,7 +262,7 @@ protected:
SG_Spatial(
void* clientobj,
void* clientinfo,
- SG_Callbacks callbacks
+ SG_Callbacks& callbacks
);
SG_Spatial(
@@ -231,7 +283,6 @@ protected:
double time,
bool& parentUpdated
);
- void SetModified(bool modified) { m_modified = modified; }
};
diff --git a/source/gameengine/VideoTexture/BlendType.h b/source/gameengine/VideoTexture/BlendType.h
index ac3ed8812a6..8b243c43912 100644
--- a/source/gameengine/VideoTexture/BlendType.h
+++ b/source/gameengine/VideoTexture/BlendType.h
@@ -25,6 +25,7 @@ http://www.gnu.org/copyleft/lesser.txt.
/// class allows check type of blender python object and access its contained object
+/// MUST ONLY BE USED FOR KX classes that are descendent of PyObjectPlus
template <class PyObj> class BlendType
{
public:
@@ -48,8 +49,9 @@ public:
// if pointer to type is set and don't match to type of provided object, return NULL
else if (obj->ob_type != m_objType)
return NULL;
- // return pointer to object
- return (PyObj*)obj;
+ // return pointer to object, this class can only be used for KX object =>
+ // the Py object is actually a proxy
+ return (PyObj*)BGE_PROXY_REF(obj);
}
/// parse arguments to get object
diff --git a/source/gameengine/VideoTexture/FilterBlueScreen.cpp b/source/gameengine/VideoTexture/FilterBlueScreen.cpp
index 43d7566102a..6b23105a278 100644
--- a/source/gameengine/VideoTexture/FilterBlueScreen.cpp
+++ b/source/gameengine/VideoTexture/FilterBlueScreen.cpp
@@ -135,8 +135,13 @@ static PyGetSetDef filterBSGetSets[] =
// define python type
PyTypeObject FilterBlueScreenType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterBlueScreen", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/FilterColor.cpp b/source/gameengine/VideoTexture/FilterColor.cpp
index 22ee729b200..5ff1f7f11ce 100644
--- a/source/gameengine/VideoTexture/FilterColor.cpp
+++ b/source/gameengine/VideoTexture/FilterColor.cpp
@@ -41,8 +41,13 @@ static PyGetSetDef filterGrayGetSets[] =
// define python type
PyTypeObject FilterGrayType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterGray", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -173,8 +178,13 @@ static PyGetSetDef filterColorGetSets[] =
// define python type
PyTypeObject FilterColorType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterColor", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -307,8 +317,13 @@ static PyGetSetDef filterLevelGetSets[] =
// define python type
PyTypeObject FilterLevelType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterLevel", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/FilterNormal.cpp b/source/gameengine/VideoTexture/FilterNormal.cpp
index a7266967efb..9a2b1e90d5a 100644
--- a/source/gameengine/VideoTexture/FilterNormal.cpp
+++ b/source/gameengine/VideoTexture/FilterNormal.cpp
@@ -124,8 +124,13 @@ static PyGetSetDef filterNormalGetSets[] =
// define python type
PyTypeObject FilterNormalType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterNormal", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/FilterSource.cpp b/source/gameengine/VideoTexture/FilterSource.cpp
index f3676e93a6d..4c75e14bbac 100644
--- a/source/gameengine/VideoTexture/FilterSource.cpp
+++ b/source/gameengine/VideoTexture/FilterSource.cpp
@@ -36,8 +36,13 @@ http://www.gnu.org/copyleft/lesser.txt.
// define python type
PyTypeObject FilterRGB24Type =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterRGB24", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -82,8 +87,13 @@ PyTypeObject FilterRGB24Type =
// define python type
PyTypeObject FilterRGBA32Type =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterRGBA32", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -128,8 +138,13 @@ PyTypeObject FilterRGBA32Type =
// define python type
PyTypeObject FilterBGR24Type =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.FilterBGR24", /*tp_name*/
sizeof(PyFilter), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/ImageBase.cpp b/source/gameengine/VideoTexture/ImageBase.cpp
index dcca20de24a..5e2841271a6 100644
--- a/source/gameengine/VideoTexture/ImageBase.cpp
+++ b/source/gameengine/VideoTexture/ImageBase.cpp
@@ -437,7 +437,9 @@ PyObject * Image_getSource (PyImage * self, PyObject * args)
{
// get arguments
char * id;
- if (self->m_image != NULL && PyArg_ParseTuple(args, "s", &id))
+ if (!PyArg_ParseTuple(args, "s:getSource", &id))
+ return NULL;
+ if (self->m_image != NULL)
{
// get source object
PyObject * src = reinterpret_cast<PyObject*>(self->m_image->getSource(id));
@@ -460,7 +462,9 @@ PyObject * Image_setSource (PyImage * self, PyObject * args)
// get arguments
char * id;
PyObject * obj;
- if (self->m_image != NULL && PyArg_ParseTuple(args, "sO", &id, &obj))
+ if (!PyArg_ParseTuple(args, "sO:setSource", &id, &obj))
+ return NULL;
+ if (self->m_image != NULL)
{
// check type of object
if (pyImageTypes.in(obj->ob_type))
diff --git a/source/gameengine/VideoTexture/ImageBuff.cpp b/source/gameengine/VideoTexture/ImageBuff.cpp
index 19ad17ac643..c7185660e83 100644
--- a/source/gameengine/VideoTexture/ImageBuff.cpp
+++ b/source/gameengine/VideoTexture/ImageBuff.cpp
@@ -71,10 +71,9 @@ static PyObject * load (PyImage * self, PyObject * args)
short width;
short height;
// parse parameters
- if (!PyArg_ParseTuple(args, "s#hh", &buff, &buffSize, &width, &height))
+ if (!PyArg_ParseTuple(args, "s#hh:load", &buff, &buffSize, &width, &height))
{
// report error
- PyErr_SetString(PyExc_TypeError, "Parameters are not correct");
return NULL;
}
// else check buffer size
@@ -123,8 +122,13 @@ static PyGetSetDef imageBuffGetSets[] =
// define python type
PyTypeObject ImageBuffType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.ImageBuff", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/ImageMix.cpp b/source/gameengine/VideoTexture/ImageMix.cpp
index b07b362818c..067143e57bb 100644
--- a/source/gameengine/VideoTexture/ImageMix.cpp
+++ b/source/gameengine/VideoTexture/ImageMix.cpp
@@ -109,7 +109,9 @@ PyObject * getWeight (PyImage * self, PyObject * args)
short weight = 0;
// get arguments
char * id;
- if (self->m_image != NULL && PyArg_ParseTuple(args, "s", &id))
+ if (!PyArg_ParseTuple(args, "s:getWeight", &id))
+ return NULL;
+ if (self->m_image != NULL)
// get weight
weight = getImageMix(self)->getWeight(id);
// return weight
@@ -123,7 +125,9 @@ PyObject * setWeight (PyImage * self, PyObject * args)
// get arguments
char * id;
short weight = 0;
- if (self->m_image != NULL && PyArg_ParseTuple(args, "sh", &id, &weight))
+ if (!PyArg_ParseTuple(args, "sh:setWeight", &id, &weight))
+ return NULL;
+ if (self->m_image != NULL)
// set weight
if (!getImageMix(self)->setWeight(id, weight))
{
@@ -162,8 +166,13 @@ static PyGetSetDef imageMixGetSets[] =
// define python type
PyTypeObject ImageMixType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.ImageMix", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/ImageRender.cpp b/source/gameengine/VideoTexture/ImageRender.cpp
index 09c3c22f258..c4fb1fefd9c 100644
--- a/source/gameengine/VideoTexture/ImageRender.cpp
+++ b/source/gameengine/VideoTexture/ImageRender.cpp
@@ -181,7 +181,6 @@ void ImageRender::Render()
frustrum.camnear = -mirrorOffset[2];
frustrum.camfar = -mirrorOffset[2]+m_clip;
}
- const float ortho = 100.0;
const RAS_IRasterizer::StereoMode stereomode = m_rasterizer->GetStereoMode();
// The screen area that ImageViewport will copy is also the rendering zone
@@ -214,44 +213,48 @@ void ImageRender::Render()
float farfrust = m_camera->GetCameraFar();
float aspect_ratio = 1.0f;
Scene *blenderScene = m_scene->GetBlenderScene();
+ MT_Matrix4x4 projmat;
- if (orthographic) {
- lens *= ortho;
- nearfrust = (nearfrust + 1.0)*ortho;
- farfrust *= ortho;
- }
// compute the aspect ratio from frame blender scene settings so that render to texture
// works the same in Blender and in Blender player
if (blenderScene->r.ysch != 0)
- aspect_ratio = float(blenderScene->r.xsch) / float(blenderScene->r.ysch);
-
- RAS_FramingManager::ComputeDefaultFrustum(
- nearfrust,
- farfrust,
- lens,
- aspect_ratio,
- frustrum);
-
- MT_Matrix4x4 projmat = m_rasterizer->GetFrustumMatrix(
- frustrum.x1, frustrum.x2, frustrum.y1, frustrum.y2, frustrum.camnear, frustrum.camfar);
-
+ aspect_ratio = float(blenderScene->r.xsch*blenderScene->r.xasp) / float(blenderScene->r.ysch*blenderScene->r.yasp);
+
+ if (orthographic) {
+
+ RAS_FramingManager::ComputeDefaultOrtho(
+ nearfrust,
+ farfrust,
+ m_camera->GetScale(),
+ aspect_ratio,
+ frustrum
+ );
+
+ projmat = m_rasterizer->GetOrthoMatrix(
+ frustrum.x1, frustrum.x2, frustrum.y1, frustrum.y2, frustrum.camnear, frustrum.camfar);
+ } else
+ {
+ RAS_FramingManager::ComputeDefaultFrustum(
+ nearfrust,
+ farfrust,
+ lens,
+ aspect_ratio,
+ frustrum);
+
+ projmat = m_rasterizer->GetFrustumMatrix(
+ frustrum.x1, frustrum.x2, frustrum.y1, frustrum.y2, frustrum.camnear, frustrum.camfar);
+ }
m_camera->SetProjectionMatrix(projmat);
}
MT_Transform camtrans(m_camera->GetWorldToCamera());
- if (!m_camera->GetCameraData()->m_perspective)
- camtrans.getOrigin()[2] *= ortho;
MT_Matrix4x4 viewmat(camtrans);
- m_rasterizer->SetViewMatrix(viewmat, m_camera->NodeGetWorldPosition(),
- m_camera->GetCameraLocation(), m_camera->GetCameraOrientation());
+ m_rasterizer->SetViewMatrix(viewmat, m_camera->NodeGetWorldOrientation(), m_camera->NodeGetWorldPosition(), m_camera->GetCameraData()->m_perspective);
m_camera->SetModelviewMatrix(viewmat);
// restore the stereo mode now that the matrix is computed
m_rasterizer->SetStereoMode(stereomode);
- // do not update the mesh transform, we don't want to do it more than once per frame
- //m_scene->UpdateMeshTransformations();
-
m_scene->CalculateVisibleMeshes(m_rasterizer,m_camera);
m_scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
@@ -373,8 +376,13 @@ static PyGetSetDef imageRenderGetSets[] =
// define python type
PyTypeObject ImageRenderType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.ImageRender", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -553,8 +561,8 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
float yaxis[3] = {0.f, 1.f, 0.f};
float mirrorMat[3][3];
float left, right, top, bottom, back;
-
- m_camera= new KX_Camera(scene, KX_Scene::m_callbacks, camdata);
+ // make sure this camera will delete its node
+ m_camera= new KX_Camera(scene, KX_Scene::m_callbacks, camdata, true, true);
m_camera->SetName("__mirror__cam__");
// don't add the camera to the scene object list, it doesn't need to be accessible
m_owncamera = true;
@@ -707,8 +715,13 @@ ImageRender::ImageRender (KX_Scene * scene, KX_GameObject * observer, KX_GameObj
// define python type
PyTypeObject ImageMirrorType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.ImageMirror", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/ImageViewport.cpp b/source/gameengine/VideoTexture/ImageViewport.cpp
index a4e36b5948c..d2c23e758f6 100644
--- a/source/gameengine/VideoTexture/ImageViewport.cpp
+++ b/source/gameengine/VideoTexture/ImageViewport.cpp
@@ -289,8 +289,13 @@ static PyGetSetDef imageViewportGetSets[] =
// define python type
PyTypeObject ImageViewportType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.ImageViewport", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/PyTypeList.cpp b/source/gameengine/VideoTexture/PyTypeList.cpp
index 6d2676dce09..2d571675dbd 100644
--- a/source/gameengine/VideoTexture/PyTypeList.cpp
+++ b/source/gameengine/VideoTexture/PyTypeList.cpp
@@ -45,7 +45,6 @@ bool PyTypeList::in (PyTypeObject * type)
/// add type to list
void PyTypeList::add (PyTypeObject * type, const char * name)
{
- PyTypeListItem * typeItem;
// if list doesn't exist, create it
if (m_list.get() == NULL)
m_list.reset(new PyTypeListType());
diff --git a/source/gameengine/VideoTexture/Texture.cpp b/source/gameengine/VideoTexture/Texture.cpp
index 3533cee0f7f..f4105652f80 100644
--- a/source/gameengine/VideoTexture/Texture.cpp
+++ b/source/gameengine/VideoTexture/Texture.cpp
@@ -50,7 +50,7 @@ http://www.gnu.org/copyleft/lesser.txt.
// macro for exception handling and logging
#define CATCH_EXCP catch (Exception & exp) \
-{ exp.report(); }
+{ exp.report(); return NULL; }
// Blender GameObject type
@@ -162,11 +162,12 @@ void Texture_dealloc (Texture * self)
// release renderer
Py_XDECREF(self->m_source);
// close texture
- Texture_close(self);
+ PyObject* ret = Texture_close(self);
+ Py_DECREF(ret);
// release scaled image buffer
delete [] self->m_scaledImg;
// release object
- self->ob_type->tp_free((PyObject*)self);
+ ((PyObject *)self)->ob_type->tp_free((PyObject*)self);
}
@@ -278,7 +279,7 @@ PyObject * Texture_refresh (Texture * self, PyObject * args)
{
// get parameter - refresh source
PyObject * param;
- if (!PyArg_ParseTuple(args, "O", &param) || !PyBool_Check(param))
+ if (!PyArg_ParseTuple(args, "O:refresh", &param) || !PyBool_Check(param))
{
// report error
PyErr_SetString(PyExc_TypeError, "The value must be a bool");
@@ -433,8 +434,13 @@ static PyGetSetDef textureGetSets[] =
// class Texture declaration
PyTypeObject TextureType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.Texture", /*tp_name*/
sizeof(Texture), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/VideoBase.cpp b/source/gameengine/VideoTexture/VideoBase.cpp
index 3c703d75cda..5d449a158d8 100644
--- a/source/gameengine/VideoTexture/VideoBase.cpp
+++ b/source/gameengine/VideoTexture/VideoBase.cpp
@@ -113,7 +113,10 @@ void Video_open (VideoBase * self, char * file, short captureID)
PyObject * Video_play (PyImage * self)
{ if (getVideo(self)->play()) Py_RETURN_TRUE; else Py_RETURN_FALSE; }
-// stop video
+// pause video
+PyObject * Video_pause (PyImage * self)
+{ if (getVideo(self)->pause()) Py_RETURN_TRUE; else Py_RETURN_FALSE; }
+
PyObject * Video_stop (PyImage * self)
{ if (getVideo(self)->stop()) Py_RETURN_TRUE; else Py_RETURN_FALSE; }
@@ -146,7 +149,7 @@ int Video_setRange (PyImage * self, PyObject * value, void * closure)
|| !PyFloat_Check(PySequence_Fast_GET_ITEM(value, 0))
|| !PyFloat_Check(PySequence_Fast_GET_ITEM(value, 1)))
{
- PyErr_SetString(PyExc_TypeError, "The value must be a sequence of 2 longs");
+ PyErr_SetString(PyExc_TypeError, "The value must be a sequence of 2 float");
return -1;
}
// set range
diff --git a/source/gameengine/VideoTexture/VideoBase.h b/source/gameengine/VideoTexture/VideoBase.h
index 15ecb7a78f4..0c8668ee0bc 100644
--- a/source/gameengine/VideoTexture/VideoBase.h
+++ b/source/gameengine/VideoTexture/VideoBase.h
@@ -80,7 +80,17 @@ public:
}
return false;
}
- /// stop/pause video
+ /// pause video
+ virtual bool pause (void)
+ {
+ if (m_status == SourcePlaying)
+ {
+ m_status = SourceStopped;
+ return true;
+ }
+ return false;
+ }
+ /// stop video
virtual bool stop (void)
{
if (m_status == SourcePlaying)
@@ -170,6 +180,7 @@ template <class T> void Video_init (PyImage * self)
// video functions
void Video_open (VideoBase * self, char * file, short captureID);
PyObject * Video_play (PyImage * self);
+PyObject * Video_pause (PyImage * self);
PyObject * Video_stop (PyImage * self);
PyObject * Video_refresh (PyImage * self);
PyObject * Video_getStatus (PyImage * self, void * closure);
diff --git a/source/gameengine/VideoTexture/VideoFFmpeg.cpp b/source/gameengine/VideoTexture/VideoFFmpeg.cpp
index 5265b0ecb93..1a5481488c0 100644
--- a/source/gameengine/VideoTexture/VideoFFmpeg.cpp
+++ b/source/gameengine/VideoTexture/VideoFFmpeg.cpp
@@ -117,6 +117,7 @@ bool VideoFFmpeg::release()
}
m_codec = NULL;
m_status = SourceStopped;
+ m_lastFrame = -1;
return true;
}
@@ -669,12 +670,12 @@ bool VideoFFmpeg::play (void)
}
-// stop video
-bool VideoFFmpeg::stop (void)
+// pause video
+bool VideoFFmpeg::pause (void)
{
try
{
- if (VideoBase::stop())
+ if (VideoBase::pause())
{
return true;
}
@@ -683,6 +684,20 @@ bool VideoFFmpeg::stop (void)
return false;
}
+// stop video
+bool VideoFFmpeg::stop (void)
+{
+ try
+ {
+ VideoBase::stop();
+ // force restart when play
+ m_lastFrame = -1;
+ return true;
+ }
+ CATCH_EXCP;
+ return false;
+}
+
// set video range
void VideoFFmpeg::setRange (double start, double stop)
@@ -721,6 +736,8 @@ void VideoFFmpeg::loadFrame (void)
{
// get actual time
double startTime = PIL_check_seconds_timer();
+ if (m_lastFrame == -1 && !m_isFile)
+ m_startTime = startTime;
double actTime = startTime - m_startTime;
// if video has ended
if (m_isFile && actTime * m_frameRate >= m_range[1])
@@ -886,28 +903,47 @@ AVFrame *VideoFFmpeg::grabFrame(long position)
if (position != m_curPosition + 1)
{
double timeBase = av_q2d(m_formatCtx->streams[m_videoStream]->time_base);
- long long pos = (long long)
- ((long long) (position - m_preseek) * AV_TIME_BASE / m_baseFrameRate);
- long long startTs = m_formatCtx->streams[m_videoStream]->start_time;
+ int64_t pos = (int64_t)((position - m_preseek) / (m_baseFrameRate*timeBase));
+ int64_t startTs = m_formatCtx->streams[m_videoStream]->start_time;
+ int seekres;
if (pos < 0)
pos = 0;
if (startTs != AV_NOPTS_VALUE)
- pos += (long long)(startTs * AV_TIME_BASE * timeBase);
+ pos += startTs;
if (position <= m_curPosition || !m_eof)
{
- // no need to seek past the end of the file
- if (av_seek_frame(m_formatCtx, -1, pos, AVSEEK_FLAG_BACKWARD) >= 0)
+#if 0
+ // Tried to make this work but couldn't: seeking on byte is ignored by the
+ // format plugin and it will generally continue to read from last timestamp.
+ // Too bad because frame seek is not always able to get the first frame
+ // of the file.
+ if (position <= m_preseek)
+ {
+ // we can safely go the begining of the file
+ if (av_seek_frame(m_formatCtx, m_videoStream, 0, AVSEEK_FLAG_BYTE) >= 0)
+ {
+ // binary seek does not reset the timestamp, must do it now
+ av_update_cur_dts(m_formatCtx, m_formatCtx->streams[m_videoStream], startTs);
+ m_curPosition = 0;
+ }
+ }
+ else
+#endif
{
// current position is now lost, guess a value.
- // It's not important because it will be set at this end of this function
- m_curPosition = position - m_preseek - 1;
+ if (av_seek_frame(m_formatCtx, m_videoStream, pos, AVSEEK_FLAG_BACKWARD) >= 0)
+ {
+ // current position is now lost, guess a value.
+ // It's not important because it will be set at this end of this function
+ m_curPosition = position - m_preseek - 1;
+ }
}
}
// this is the timestamp of the frame we're looking for
- targetTs = (long long)(((double) position) / m_baseFrameRate / timeBase);
+ targetTs = (int64_t)(position / (m_baseFrameRate * timeBase));
if (startTs != AV_NOPTS_VALUE)
targetTs += startTs;
@@ -1097,8 +1133,9 @@ int VideoFFmpeg_setDeinterlace (PyImage * self, PyObject * value, void * closure
// methods structure
static PyMethodDef videoMethods[] =
{ // methods from VideoBase class
- {"play", (PyCFunction)Video_play, METH_NOARGS, "Play video"},
- {"stop", (PyCFunction)Video_stop, METH_NOARGS, "Stop (pause) video"},
+ {"play", (PyCFunction)Video_play, METH_NOARGS, "Play (restart) video"},
+ {"pause", (PyCFunction)Video_pause, METH_NOARGS, "pause video"},
+ {"stop", (PyCFunction)Video_stop, METH_NOARGS, "stop video (play will replay it from start)"},
{"refresh", (PyCFunction)Video_refresh, METH_NOARGS, "Refresh video - get its status"},
{NULL}
};
@@ -1123,8 +1160,13 @@ static PyGetSetDef videoGetSets[] =
// python type declaration
PyTypeObject VideoFFmpegType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.VideoFFmpeg", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
@@ -1173,7 +1215,7 @@ static int ImageFFmpeg_init (PyObject * pySelf, PyObject * args, PyObject * kwds
char * file = NULL;
// get parameters
- if (!PyArg_ParseTuple(args, "s", &file))
+ if (!PyArg_ParseTuple(args, "s:ImageFFmpeg", &file))
return -1;
try
@@ -1198,8 +1240,9 @@ static int ImageFFmpeg_init (PyObject * pySelf, PyObject * args, PyObject * kwds
PyObject * Image_reload (PyImage * self, PyObject *args)
{
char * newname = NULL;
-
- if (self->m_image != NULL && PyArg_ParseTuple(args, "|s", &newname))
+ if (!PyArg_ParseTuple(args, "|s:reload", &newname))
+ return NULL;
+ if (self->m_image != NULL)
{
VideoFFmpeg* video = getFFmpeg(self);
// check type of object
@@ -1241,8 +1284,13 @@ static PyGetSetDef imageGetSets[] =
// python type declaration
PyTypeObject ImageFFmpegType =
{
- PyObject_HEAD_INIT(NULL)
+#if (PY_VERSION_HEX >= 0x02060000)
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ /* python 2.5 and below */
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
0, /*ob_size*/
+#endif
"VideoTexture.ImageFFmpeg", /*tp_name*/
sizeof(PyImage), /*tp_basicsize*/
0, /*tp_itemsize*/
diff --git a/source/gameengine/VideoTexture/VideoFFmpeg.h b/source/gameengine/VideoTexture/VideoFFmpeg.h
index 51f1067c466..fbd04e7e1fc 100644
--- a/source/gameengine/VideoTexture/VideoFFmpeg.h
+++ b/source/gameengine/VideoTexture/VideoFFmpeg.h
@@ -83,9 +83,10 @@ public:
/// play video
virtual bool play (void);
- /// stop/pause video
+ /// pause video
+ virtual bool pause (void);
+ /// stop video
virtual bool stop (void);
-
/// set play range
virtual void setRange (double start, double stop);
/// set frame rate
diff --git a/source/gameengine/VideoTexture/blendVideoTex.cpp b/source/gameengine/VideoTexture/blendVideoTex.cpp
index c11e7fffecd..1dcc72c8f7d 100644
--- a/source/gameengine/VideoTexture/blendVideoTex.cpp
+++ b/source/gameengine/VideoTexture/blendVideoTex.cpp
@@ -74,7 +74,7 @@ static PyObject * getLastError (PyObject *self, PyObject *args)
static PyObject * setLogFile (PyObject *self, PyObject *args)
{
// get parameters
- if (!PyArg_ParseTuple(args, "s", &Exception::m_logFile))
+ if (!PyArg_ParseTuple(args, "s:setLogFile", &Exception::m_logFile))
return Py_BuildValue("i", -1);
// log file was loaded
return Py_BuildValue("i", 0);
@@ -86,7 +86,7 @@ static PyObject * imageToArray (PyObject * self, PyObject *args)
{
// parameter is Image object
PyObject * pyImg;
- if (!PyArg_ParseTuple(args, "O", &pyImg) || !pyImageTypes.in(pyImg->ob_type))
+ if (!PyArg_ParseTuple(args, "O:imageToArray", &pyImg) || !pyImageTypes.in(pyImg->ob_type))
{
// if object is incorect, report error
PyErr_SetString(PyExc_TypeError, "VideoTexture.imageToArray(image): The value must be a image source object");
@@ -159,8 +159,25 @@ static void registerAllTypes(void)
pyFilterTypes.add(&FilterBGR24Type, "FilterBGR24");
}
+
+#if (PY_VERSION_HEX >= 0x03000000)
+static struct PyModuleDef VideoTexture_module_def = {
+ {}, /* m_base */
+ "VideoTexture", /* m_name */
+ "Module that allows to play video files on textures in GameBlender.", /* m_doc */
+ 0, /* m_size */
+ moduleMethods, /* m_methods */
+ 0, /* m_reload */
+ 0, /* m_traverse */
+ 0, /* m_clear */
+ 0, /* m_free */
+};
+#endif
+
PyObject* initVideoTexture(void)
{
+ PyObject * m;
+
// initialize GL extensions
//bgl::InitExtensions(0);
@@ -175,9 +192,25 @@ PyObject* initVideoTexture(void)
if (PyType_Ready(&TextureType) < 0)
return NULL;
- PyObject * m = Py_InitModule4("VideoTexture", moduleMethods,
- "Module that allows to play video files on textures in GameBlender.",
- (PyObject*)NULL,PYTHON_API_VERSION);
+ /* Use existing module where possible
+ * be careful not to init any runtime vars after this */
+ m = PyImport_ImportModule( "VideoTexture" );
+ if(m) {
+ Py_DECREF(m);
+ return m;
+ }
+ else {
+ PyErr_Clear();
+
+#if (PY_VERSION_HEX >= 0x03000000)
+ m = PyModule_Create(&VideoTexture_module_def);
+#else
+ m = Py_InitModule4("VideoTexture", moduleMethods,
+ "Module that allows to play video files on textures in GameBlender.",
+ (PyObject*)NULL,PYTHON_API_VERSION);
+#endif
+ }
+
if (m == NULL)
return NULL;
@@ -187,9 +220,10 @@ PyObject* initVideoTexture(void)
Py_INCREF(&TextureType);
PyModule_AddObject(m, (char*)"Texture", (PyObject*)&TextureType);
-
+
// init last error description
Exception::m_lastError[0] = '\0';
+
return m;
}
diff --git a/source/kernel/gen_system/GEN_HashedPtr.cpp b/source/kernel/gen_system/GEN_HashedPtr.cpp
index 6dbed1fb7a8..ff9de465a34 100644
--- a/source/kernel/gen_system/GEN_HashedPtr.cpp
+++ b/source/kernel/gen_system/GEN_HashedPtr.cpp
@@ -40,11 +40,12 @@
// is a 32-bit integer, use all the bits of the pointer as long
// as possible.
//
-
+#if 1
unsigned int GEN_Hash(void * inDWord)
{
uintptr_t key = (uintptr_t)inDWord;
-
+#if 0
+ // this is way too complicated
key += ~(key << 16);
key ^= (key >> 5);
key += (key << 3);
@@ -53,4 +54,8 @@ unsigned int GEN_Hash(void * inDWord)
key ^= (key >> 17);
return (unsigned int)(key & 0xffffffff);
+#else
+ return (unsigned int)(key ^ (key>>4));
+#endif
}
+#endif \ No newline at end of file
diff --git a/source/nan_compile.mk b/source/nan_compile.mk
index 70aee0bd416..bd6dd6e1baa 100644
--- a/source/nan_compile.mk
+++ b/source/nan_compile.mk
@@ -96,7 +96,7 @@ ifeq ($(OS),darwin)
CFLAGS += -pipe -fPIC -ffast-math -march=pentium-m -funsigned-char -fno-strict-aliasing
CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
endif
- REL_CFLAGS += -O
+# REL_CFLAGS += -O
# REL_CCFLAGS += -O2
CPPFLAGS += -D_THREAD_SAFE
NAN_DEPEND = true
diff --git a/source/nan_definitions.mk b/source/nan_definitions.mk
index ba2f8f04233..b9e623ed4e4 100644
--- a/source/nan_definitions.mk
+++ b/source/nan_definitions.mk
@@ -288,8 +288,12 @@ endif
export HOST = $(shell /usr/bsd/hostname -s)
#export NAN_NO_KETSJI=true
export NAN_JUST_BLENDERDYNAMIC=true
- export NAN_PYTHON ?= $(LCGDIR)/python
- export NAN_PYTHON_VERSION ?= 2.3
+ export NAN_PYTHON_VERSION ?= 2.5
+ ifeq ($(IRIX_USE_GCC), true)
+ export NAN_PYTHON ?= $(LCGDIR)/python_gcc
+ else
+ export NAN_PYTHON ?= $(LCGDIR)/python
+ endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a -lpthread
export NAN_OPENAL ?= $(LCGDIR)/openal
diff --git a/tools/Blender.py b/tools/Blender.py
index ea6e4be7d30..b7b70caf17f 100644
--- a/tools/Blender.py
+++ b/tools/Blender.py
@@ -127,8 +127,6 @@ def setup_staticlibs(lenv):
libincs += Split(lenv['BF_SDL_LIBPATH'])
if lenv['WITH_BF_FFMPEG']:
libincs += Split(lenv['BF_FFMPEG_LIBPATH'])
- if lenv['WITH_BF_STATICCXX']:
- statlibs += Split(lenv['BF_CXX_LIB_STATIC'])
if lenv['WITH_BF_OPENEXR']:
libincs += Split(lenv['BF_OPENEXR_LIBPATH'])
if lenv['WITH_BF_STATICOPENEXR']:
@@ -141,6 +139,8 @@ def setup_staticlibs(lenv):
statlibs += Split(lenv['BF_OPENAL_LIB_STATIC'])
if lenv['WITH_BF_STATICOPENGL']:
statlibs += Split(lenv['BF_OPENGL_LIB_STATIC'])
+ if lenv['WITH_BF_STATICCXX']:
+ statlibs += Split(lenv['BF_CXX_LIB_STATIC'])
if lenv['WITH_BF_PYTHON'] and lenv['WITH_BF_STATICPYTHON']:
statlibs += Split(lenv['BF_PYTHON_LIB_STATIC'])
diff --git a/tools/btools.py b/tools/btools.py
index 3fa23f9d49d..1a27d9e0547 100755
--- a/tools/btools.py
+++ b/tools/btools.py
@@ -36,6 +36,8 @@ def validate_arguments(args, bc):
'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG', 'BF_FFMPEG_INC',
'WITH_BF_OGG', 'BF_OGG', 'BF_OGG_LIB',
'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH',
+ 'WITH_BF_OPENJPEG', 'BF_OPENJPEG', 'BF_OPENJPEG_INC', 'BF_OPENJPEG_LIB', 'BF_OPENJPEG_LIBPATH',
+ 'WITH_BF_REDCODE', 'BF_REDCODE', 'BF_REDCODE_INC', 'BF_REDCODE_LIB', 'BF_REDCODE_LIBPATH',
'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH',
'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH',
'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH',
@@ -45,7 +47,6 @@ def validate_arguments(args, bc):
'WITH_BF_ODE', 'BF_ODE', 'BF_ODE_INC', 'BF_ODE_LIB',
'WITH_BF_GAMEENGINE', 'WITH_BF_SOLID', 'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB',
'BF_SOLID', 'BF_SOLID_INC', 'BF_WINTAB', 'BF_WINTAB_INC',
- 'WITH_BF_YAFRAY',
'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH',
'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH',
'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC',
@@ -93,7 +94,7 @@ def validate_arguments(args, bc):
if (k in opts_list) or (k in arg_list):
okdict[k] = v
elif k in opts_list_split:
- okdict[k] = v.split() # "" have alredy been stripped
+ okdict[k] = v.split() # "" have already been stripped
else:
print '\t'+bc.WARNING+'Invalid argument: '+bc.ENDC+k+'='+v
@@ -157,7 +158,6 @@ def read_opts(cfg, args):
(BoolVariable('WITH_BF_STATICPYTHON', 'Staticly link to python', False)),
(BoolVariable('BF_NO_ELBEEM', 'Disable Fluid Sim', False)),
- (BoolVariable('WITH_BF_YAFRAY', 'Enable Yafray', True)),
(BoolVariable('WITH_BF_OPENAL', 'Use OpenAL if true', False)),
('BF_OPENAL', 'base path for OpenAL', ''),